XEmacs 21.2.20 "Yoko".
[chise/xemacs-chise.git.1] / configure.in
1 dnl Define our own header notice with own copyright
2 define([AC_INIT_NOTICE],
3 [#### Configuration script for XEmacs.  Largely divergent from FSF.
4 #### Guess values for system-dependent variables and create Makefiles.
5 #### Generated automatically using autoconf version] AC_ACVERSION [
6 #### Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
7 #### Copyright (C) 1993-1995 Board of Trustees, University of Illinois.
8 #### Copyright (C) 1996, 1997 Sun Microsystems, Inc.
9 #### Copyright (C) 1995, 1996 Ben Wing.
10 #### Copyright (C) 1998, 1999 J. Kean Johnston.
11
12 ### Don't edit this script!
13 ### This script was automatically generated by the `autoconf' program
14 ### from the file `./configure.in'.
15 ### To rebuild it, execute the command
16 ###     autoconf
17 ### in the this directory.  You must have autoconf version 2.12 or later.
18
19 ### This file is part of XEmacs.
20
21 ### XEmacs is free software; you can redistribute it and/or modify it
22 ### under the terms of the GNU General Public License as published by
23 ### the Free Software Foundation; either version 2, or (at your
24 ### option) any later version.
25
26 ### XEmacs is distributed in the hope that it will be useful, but
27 ### WITHOUT ANY WARRANTY; without even the implied warranty of
28 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
29 ### General Public License for more details.
30
31 ### You should have received a copy of the GNU General Public License
32 ### along with XEmacs; see the file COPYING.  If not, write to the Free
33 ### Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
34 ### 02111-1307, USA.
35
36 ### For usage, run `./configure --help'
37 ### For more detailed information on building and installing XEmacs,
38 ### read the file `INSTALL'.
39 ###
40 ### If configure succeeds, it leaves its status in config.status.
41 ### A log of configuration tests can be found in config.log.
42 ### If configure fails after disturbing the status quo,
43 ###     config.status is removed.
44 ])
45
46 dnl Since XEmacs has configuration requirements that autoconf cannot
47 dnl meet, this file is an unholy marriage of custom-baked
48 dnl configuration code and autoconf macros.
49
50 dnl We use the m4 quoting characters [ ] (as established by the
51 dnl autoconf system), so quote them like this: [[foo]]
52
53 AC_PREREQ(2.12)dnl
54 dnl Redefine some standard autoconf macros
55 dnl here is how XEmacs is different:
56 dnl - no cache file
57 dnl - non-standard options
58 dnl - suport for extra-verbosity
59 dnl - ordinary libs are handled separately from X libs (might be a mistake)
60 dnl - various random kludges (e.g. -with-dnet=no
61
62 dnl PRINT_VAR(var var ...)  prints values of shell variables
63 define([PRINT_VAR],[for var in patsubst([$1],[[
64 ]+],[ ]); do eval "echo \"$var = '\$$var'\""; done])
65
66 dnl Disable cache files:
67 dnl This is controversial, but I am convinced this is the right way to go,
68 dnl at least by default.  Otherwise there are too many surprises.
69 define([AC_CACHE_LOAD], )dnl
70 define([AC_CACHE_SAVE], )dnl
71 define([AC_CACHE_VAL], [
72 $2
73 ])dnl
74
75 dnl Redefine AC_TRY_RUN_NATIVE to not throw away stderr while running
76 dnl AC_TRY_RUN_NATIVE(PROGRAM, [ACTION-IF-TRUE [, ACTION-IF-FALSE]])
77 define([AC_TRY_RUN_NATIVE],
78 [cat > conftest.$ac_ext <<EOF
79 [#]line __oline__ "configure"
80 #include "confdefs.h"
81 [$1]
82 EOF
83 if AC_TRY_EVAL(ac_link) && test -s conftest && (./conftest; exit $?) 2>&AC_FD_CC
84 then
85 dnl Do not remove the temporary files here, so they can be examined.
86   ifelse([$2], , :, [$2])
87 else
88   conftest_rc="$?"
89   echo "configure: failed program was:" >&AC_FD_CC
90   cat conftest.$ac_ext >&AC_FD_CC
91 ifelse([$3], , , [  rm -fr conftest*
92   $3
93 ])dnl
94 fi
95 rm -fr conftest*])dnl AC_TRY_RUN_NATIVE
96
97
98 dnl Avoid spurious cross-compiling warnings from AC_TRY_RUN
99 dnl XEmacs is unlikely to ever cross-compile
100 define([AC_TRY_RUN],[AC_TRY_RUN_NATIVE([$1], [$2], [$3])])dnl
101
102 dnl Redefine AC_DEFINE* to provide more output if extra_verbose
103 dnl Set VARIABLE to VALUE, verbatim, or 1.
104 dnl AC_DEFINE(VARIABLE [, VALUE])
105 define([AC_DEFINE],
106 [{ test "$extra_verbose" = "yes" && cat << \EOF
107     Defining $1[]ifelse($#, 2, [ = $2],)
108 EOF
109 cat >> confdefs.h <<\EOF
110 [#define] $1 ifelse($#, 2, [$2], 1)
111 EOF
112 }
113 ])dnl AC_DEFINE
114
115 define([AC_DEFINE_UNQUOTED],
116 [{ test "$extra_verbose" = "yes" && cat << EOF
117     Defining $1[]ifelse($#, 2, [ = $2],)
118 EOF
119 cat >> confdefs.h <<EOF
120 [#define] $1 ifelse($#, 2, [$2], 1)
121 EOF
122 }
123 ])dnl AC_DEFINE_UNQUOTED
124
125 dnl redefine AC_CHECK_LIB in accordance with our own value of ac_link
126 dnl Add in extra kludgy check to support with_dnet=no
127 dnl Add in extra LDFLAGS arg, which PRECEDE libs
128 dnl Support --with-dnet=no
129
130 dnl AC_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
131 dnl             [, OTHER-LIBRARIES] [, LDFLAGS]]]])
132 define([AC_CHECK_LIB],
133 [ifelse([$1],dnet, [if test "$with_dnet" = "no" ; then
134 ac_cv_lib_dnet_dnet_ntoa=no
135 ifelse([$4], , , [$4]
136 )dnl
137 else
138 ])]
139 AC_CHECK_LIB_ORIG_HACKED([$1],[$2],[$3],[$4],[$5], [$6])
140 [ifelse([$1],dnet,[fi
141 ])]dnl
142 )dnl AC_CHECK_LIB
143
144 define([AC_CHECK_LIB_ORIG_HACKED],
145 [ifelse([$5],,AC_MSG_CHECKING([for $2 in -l$1]),
146 xe_msg_checking="for [$2] in -l[$1]"
147 test -n "[$5]" && xe_msg_checking="$xe_msg_checking using extra libs [$5]"
148 AC_MSG_CHECKING("$xe_msg_checking"))
149 dnl Use a cache variable name containing both the library and function name,
150 dnl because the test really is for library $1 defining function $2, not
151 dnl just for library $1.  Separate tests with the same $1 and different $2s
152 dnl may have different results.
153 ac_lib_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
154 AC_CACHE_VAL(ac_cv_lib_$ac_lib_var,
155 [xe_check_libs="$6 -l$1 $5"
156 AC_TRY_LINK(dnl
157 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
158 [/* Override any gcc2 internal prototype to avoid an error.  */
159 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
160 extern "C"
161 #endif
162 ])dnl
163 [/* We use char because int might match the return type of a gcc2
164     builtin and then its argument prototype would still apply.  */
165 char $2();
166 ]),
167             [$2()],
168             eval "ac_cv_lib_$ac_lib_var=yes",
169             eval "ac_cv_lib_$ac_lib_var=no")
170 xe_check_libs=""
171 ])dnl
172 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
173   AC_MSG_RESULT(yes)
174   ifelse([$3], ,
175 [changequote(, )dnl
176   ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
177     -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
178 changequote([, ])dnl
179   AC_DEFINE_UNQUOTED($ac_tr_lib)
180   XE_PREPEND([-l$1], LIBS)
181 ], [$3])
182 else
183   AC_MSG_RESULT(no)
184 ifelse([$4], , , [$4
185 ])dnl
186 fi
187 ])dnl AC_CHECK_LIB_ORIG_HACKED
188
189
190 dnl AC_LANG_C()
191 define([AC_LANG_C],
192 [define([AC_LANG], [C])dnl
193 ac_ext=c
194 dnl CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
195 dnl ac_cpp='$CPP $CPPFLAGS'
196 dnl ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&AC_FD_CC'
197 dnl ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC'
198 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
199 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
200 xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
201 ac_cpp='$CPP '"$xe_cppflags"
202 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&AC_FD_CC'
203 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&AC_FD_CC'
204 cross_compiling=no
205 ]) dnl AC_LANG_C
206
207 dnl The construct foo=`echo $w1 $w2 $w3` fails on some systems if $w1 = -e or -n
208 dnl So we use the following instead.
209 dnl XE_SPACE(var, words)
210 define([XE_SPACE],[
211 T=""
212 for W in $2; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
213 $1="$T"
214 ])dnl XE_SPACE
215
216 dnl XE_ADD_OBJS(foo.o ...)
217 define([XE_ADD_OBJS],
218 [extra_objs="$extra_objs [$1]" && dnl
219  if test "$extra_verbose" = "yes"; then
220    echo "    xemacs will be linked with \"[$1]\""
221  fi])dnl XE_ADD_OBJS
222
223 dnl XE_APPEND(value, varname)
224 define([XE_APPEND],
225 [[$2]="$[$2] [$1]" && dnl
226  if test "$extra_verbose" = "yes"; then echo "    Appending \"[$1]\" to \$[$2]"; fi])
227
228 dnl XE_PREPEND(value, varname)
229 define([XE_PREPEND],
230 [[$2]="[$1] $[$2]" && dnl
231  if test "$extra_verbose" = "yes"; then echo "    Prepending \"[$1]\" to \$[$2]"; fi])
232
233 dnl XE_DIE(message)
234 define([XE_DIE], [{ echo "Error:" $1 >&2; exit 1; }])
235
236 dnl XE_STRIP_4TH_COMPONENT(var)
237 dnl Changes i986-pc-linux-gnu to i986-pc-linux, as God (not RMS) intended.
238 define([XE_STRIP_4TH_COMPONENT],
239 [$1=`echo "$$1" | sed '[s/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/]'`])
240
241 dnl Initialize some variables set by options.
242 dnl The variables have the same names as the options, with
243 dnl dashes changed to underlines.
244
245 define([AC_INIT_PARSE_ARGS],[
246
247 dnl Get sane consistent behavior from various shells
248 dnl Avoid losing with weird user CDPATHs
249
250 if test -n "$ZSH_VERSION"; then
251   dnl zsh's Bourne shell emulation options
252   setopt NO_BAD_PATTERN NO_BANG_HIST NO_BG_NICE NO_EQUALS NO_FUNCTION_ARGZERO
253   setopt GLOB_SUBST NO_HUP INTERACTIVE_COMMENTS KSH_ARRAYS NO_MULTIOS NO_NOMATCH
254   setopt RM_STAR_SILENT POSIX_BUILTINS SH_FILE_EXPANSION SH_GLOB SH_OPTION_LETTERS
255   setopt SH_WORD_SPLIT BSD_ECHO IGNORE_BRACES
256   dnl zsh-3.1-beta drops core on the following
257   dnl unset CDPATH
258   if test -n "$CDPATH"; then CDPATH="."; export CDPATH; fi
259 elif test -n "$BASH_VERSION"; then
260   dnl Use Posix mode with bash
261   set -o posix
262   unset CDPATH
263 else
264   if test -n "$CDPATH"; then CDPATH="."; export CDPATH; fi
265 fi
266
267 dnl Initialize some variables set by options.
268 dnl The variables have the same names as the options, with
269 dnl dashes changed to underlines.
270 exec_prefix=NONE
271 host=NONE
272 no_create=
273 nonopt=NONE
274 no_recursion=
275 prefix=NONE
276 program_prefix=NONE
277 program_suffix=NONE
278 program_transform_name=s,x,x,
279 silent=
280 site=
281 srcdir=
282 target=NONE
283 verbose=
284 x_includes=NONE
285 x_libraries=NONE
286
287 dnl Installation directory options.
288 dnl These are left unexpanded so users can "make install exec_prefix=/foo"
289 dnl and all the variables that are supposed to be based on exec_prefix
290 dnl by default will actually change.
291 dnl Use braces instead of parens because sh, perl, etc. also accept them.
292 dnl If you change these, you need to synchronize with the settings of the
293 dnl various ..._USER_DEFINED variables further down.
294 bindir='${exec_prefix}/bin'
295 sbindir='${exec_prefix}/sbin'
296 libexecdir='${exec_prefix}/libexec'
297 datadir='${prefix}/share'
298 sysconfdir='${prefix}/etc'
299 sharedstatedir='${prefix}/com'
300 localstatedir='${prefix}/var'
301 libdir='${{exec_prefix}}/lib'
302 includedir='${prefix}/include'
303 oldincludedir='/usr/include'
304 infodir='${prefix}/info'
305 mandir='${prefix}/man'
306
307 dnl Initialize some other variables.
308 subdirs=
309 MFLAGS= MAKEFLAGS=
310 dnl Maximum number of lines to put in a shell here document.
311 ac_max_here_lines=12
312 ])dnl AC_INIT_PARSE_ARGS
313
314 AC_INIT(src/lisp.h)dnl
315 AC_CONFIG_HEADER(src/config.h lwlib/config.h)
316 dnl Remove any more than one leading "." element from the path name.
317 dnl If we do not remove them, then another "./" will be prepended to
318 dnl the file name each time we use config.status, and the program name
319 dnl will get larger and larger.  This would not be a problem, except
320 dnl that since progname gets recorded in all the Makefiles this script
321 dnl produces, move-if-change thinks they're different when they're
322 dnl not.
323 dnl
324 dnl It would be nice if we could put the ./ in a \( \) group and then
325 dnl apply the * operator to that, so we remove as many leading './././'s
326 dnl as are present, but some seds (like Ultrix's sed) don't allow you to
327 dnl apply * to a \( \) group.  Bleah.
328 progname="`echo $0 | sed 's:^\./\./:\./:'`"
329
330 dnl -----------------------------
331 dnl Establish some default values
332 dnl -----------------------------
333
334 XE_APPEND(lib-src, MAKE_SUBDIR)
335 XE_APPEND(lib-src, INSTALL_ARCH_DEP_SUBDIR)
336
337 prefix='/usr/local'
338 exec_prefix='${prefix}'
339 bindir='${exec_prefix}/bin'
340 dnl FSF 19.29 changes to:
341 dnl datadir='${prefix}/share'
342 dnl sharedstatedir='${prefix}/com'
343 dnl libexecdir='${exec_prefix}/libexec'
344 datadir='${prefix}/lib'
345 statedir='${prefix}/lib'
346 libdir='${exec_prefix}/lib'
347 mandir='${prefix}/man/man1'
348 inststaticdir='${PROGNAME}'
349 instvardir='${PROGNAME}-${version}'
350 infodir='${datadir}/${instvardir}/info'
351 infopath=''
352 install_pp=''
353 lispdir='${datadir}/${instvardir}/lisp'
354 moduledir='${datadir}/${instvardir}/${configuration}/modules'
355 sitelispdir='${datadir}/${inststaticdir}/site-lisp'
356 sitemoduledir='${datadir}/${inststaticdir}/site-modules'
357 pkgdir='${datadir}/${instvardir}/lisp'
358 package_path=''
359 etcdir='${datadir}/${instvardir}/etc'
360 lockdir='${statedir}/${inststaticdir}/lock'
361 archlibdir='${datadir}/${instvardir}/${configuration}'
362 docdir='${archlibdir}'
363 with_prefix='yes'
364 with_site_lisp='no'
365 with_site_modules='yes'
366 with_menubars=''
367 with_scrollbars=''
368 with_widgets=''
369 with_dialogs=''
370 with_file_coding=''
371 dnl const_is_losing is removed - we rely on AC_C_CONST instead.
372 dnl We accept (and ignore) the --const-is-losing option for compatibility.
373 dnl const_is_losing='yes'
374 cpp='' cppflags='' libs='' ldflags=''
375 dynamic=''
376 with_x11=''
377 with_msw=''
378 rel_alloc='default'
379 with_system_malloc='default'
380 with_dlmalloc='default'
381 native_sound_lib=''
382 dnl use_assertions should be 'yes' by default.  Too many people in this
383 dnl world have core dumps turned off by default or \"cannot find where the
384 dnl core file went\".  At least we should get some useful output ...
385 use_assertions="yes"
386 dnl the following is set to yes or no later.
387 with_toolbars=""
388 with_tty=""
389 use_union_type="no"
390 with_dnet=""
391 pdump="no"
392
393 dnl ------------------
394 dnl Options Processing
395 dnl ------------------
396
397 define([USAGE_ERROR],
398 [(echo "$progname: Usage error:"
399 echo " " $1
400 echo "  Use \`$progname --help' to show usage.") >&2 && exit 1])
401
402 dnl Record all the arguments, so we can save them in config.status.
403 arguments="$@"
404
405 dnl Shell Magic: Quote the quoted arguments in ARGUMENTS.  At a later date,
406 dnl in order to get the arguments back in $@, we have to do an
407 dnl 'eval set x "$quoted_arguments"; shift'
408 dnl # We use sed to turn embedded ' into '"'"'.  I truly hate sh quoting.
409 quoted_sed_magic=s/"'"/"'"'"'"'"'"'"'"/g
410 quoted_arguments=
411 for i in "$@"; do
412    case "$i" in
413    -no-create | --no-create | --no-creat | --no-crea | --no-cre \
414    | --no-cr | --no-c) ;;
415    -no-recursion | --no-recursion | --no-recursio | --no-recursi \
416    | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
417    *)
418    quoted_i="`echo '' $i | sed -e 's:^ ::' -e $quoted_sed_magic`"
419    quoted_arguments="$quoted_arguments '$quoted_i'" ;;
420    esac
421 done
422
423 dnl Do not use shift -- that destroys the argument list, which autoconf needs
424 dnl to produce config.status.  It turns out that "set - $arguments" does not
425 dnl work portably.
426 dnl However, it also turns out that many shells cannot expand ${10} at all.
427 dnl So using an index variable does not work either.  It is possible to use
428 dnl some shell magic to make 'set x "$arguments"; shift' work portably.
429 while test $# != 0; do
430   arg="$1"; shift
431   case "$arg" in
432     --no-create|--no-recursion) ;;
433     dnl Anything starting with a hyphen we assume is an option.
434     -* )
435       dnl Separate the switch name from the value it is being given.
436       case "$arg" in
437         -*=*)
438           opt=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*\([[^=]]*\)=.*$:\1:'`
439           val=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*[[^=]]*=\(.*\)$:\1:'`
440           valomitted=no
441         ;;
442            dnl special case these strings since echo may silently eat them:
443            dnl --help ) opt=help val=yes valomitted=yes ;;
444            dnl --version ) opt=version val=yes valomitted=yes ;;
445            dnl -e ) opt=e val=yes valomitted=yes ;;
446            dnl -E ) opt=E val=yes valomitted=yes ;;
447            dnl -n ) opt=n val=yes valomitted=yes ;;
448         -*)
449            dnl If FOO is a boolean argument, --FOO is equivalent to
450            dnl --FOO=yes.  Otherwise, the value comes from the next
451            dnl argument - see below.
452           opt=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*\(.*\)$:\1:'`
453           val="yes" valomitted=yes
454         ;;
455       esac
456
457       dnl translate "-" in option string to "_"
458       optname="$opt"
459       opt="`echo '' $opt | sed -e 's:^ ::' | tr - _`"
460
461       dnl Support --without-FOO as a synonym for --with-FOO=no
462       case "${valomitted}-${opt}" in yes-without_* )
463         opt=`echo $opt | sed 's/without/with/'`
464         valomitted="no" val="no" ;;
465       esac
466
467       dnl Process the option.
468       case "$opt" in
469
470       dnl Process (many) boolean options
471         with_site_lisp  | \
472         with_prefix     | \
473         with_site_modules | \
474         with_x          | \
475         with_x11        | \
476         with_msw        | \
477         with_gcc        | \
478         dynamic         | \
479         with_ncurses    | \
480         with_dnet       | \
481         with_socks      | \
482         with_dragndrop  | \
483         with_cde        | \
484         with_offix      | \
485         with_gpm        | \
486         with_xpm        | \
487         with_xface      | \
488         with_gif        | \
489         with_jpeg       | \
490         with_png        | \
491         with_tiff       | \
492         with_wmcommand  | \
493         with_xmu        | \
494         with_purify     | \
495         with_quantify   | \
496         with_toolbars   | \
497         with_tty        | \
498         with_xfs        | \
499         with_i18n3      | \
500         with_mule       | \
501         with_file_coding| \
502         with_canna      | \
503         with_wnn        | \
504         with_wnn6       | \
505         with_workshop   | \
506         with_sparcworks | \
507         with_tooltalk   | \
508         with_ldap       | \
509         with_pop        | \
510         with_kerberos   | \
511         with_hesiod     | \
512         with_dnet       | \
513         with_infodock   | \
514         external_widget | \
515         verbose         | \
516         extra_verbose   | \
517         const_is_losing | \
518         usage_tracking  | \
519         use_union_type  | \
520         pdump           | \
521         debug           | \
522         use_assertions  | \
523         memory_usage_stats | \
524         with_clash_detection | \
525         with_modules | \
526         no_doc_file )
527           dnl Make sure the value given was either "yes" or "no".
528           case "$val" in
529             y | ye | yes )      val=yes ;;
530             n | no )            val=no  ;;
531             * ) USAGE_ERROR("The \`--$optname' option requires a boolean value: \`yes' or \`no'.") ;;
532           esac
533           eval "$opt=\"$val\"" ;;
534
535
536         dnl Options that take a user-supplied value, as in --x-includes=/usr/X11R6/include
537         dnl The cache-file option is ignored (for compatibility with other configures)
538         srcdir          | \
539         compiler        | \
540         cflags          | \
541         cpp             | \
542         cppflags        | \
543         libs            | \
544         ldflags         | \
545         cache_file      | \
546         native_sound_lib| \
547         site_lisp       | \
548         x_includes      | \
549         x_libraries     | \
550         site_includes   | \
551         site_libraries  | \
552         site_prefixes   | \
553         site_runtime_libraries )
554           dnl If the value was omitted, get it from the next argument.
555           if test "$valomitted" = "yes" ; then
556             dnl Get the next argument from the argument list, if there is one.
557             if test "$#" = 0 ; then
558               USAGE_ERROR("The \`--$optname' option requires a value.");
559             fi
560             val="$1"; shift
561           fi
562           eval "$opt=\"$val\""
563         ;;
564
565         dnl Options that take "yes", "no", or "default" values
566         rel_alloc | \
567         with_dlmalloc | \
568         with_debug_malloc  | use_debug_malloc | \
569         with_system_malloc | use_system_malloc )
570           case "$val" in
571             y | ye | yes )      val=yes ;;
572             n | no )            val=no  ;;
573             d | de | def | defa | defau | defaul | default ) val=default ;;
574             * ) USAGE_ERROR(["The \`--$optname' option requires one of these values:
575   \`yes', \`no', or \`default'."]) ;;
576           esac
577           case "$opt" in use_* ) opt="`echo $opt | sed s/use/with/`" ;; esac
578           eval "$opt=\"$val\""
579         ;;
580
581         dnl Has the user requested database support?
582         "with_database" )
583           with_database_berkdb=no
584           with_database_dbm=no
585           with_database_gnudbm=no
586           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
587             case "$x" in
588                 no ) ;;
589                 b | be | ber | berk | berkd | berkdb )  with_database_berkdb=yes ;;
590                 d | db | dbm )                          with_database_dbm=yes    ;;
591                 g | gn | gnu | gnud | gnudb | gnudbm )  with_database_gnudbm=yes ;;
592                 * ) USAGE_ERROR(["The \`--$optname' option value
593   must be either \`no' or a comma-separated list
594   of one or more of \`berkdb' and either \`dbm' or \`gnudbm'."]) ;;
595             esac
596           done
597           if test "$with_database_dbm"    = "yes" -a \
598                   "$with_database_gnudbm" = "yes"; then
599           USAGE_ERROR("Only one of \`dbm' and \`gnudbm' may be specified
600   with the \`--$optname' option.")
601           fi
602         ;;
603
604         dnl Has the user requested sound support?
605         "with_sound" )
606           dnl value can be native, nas or both. yes is allowed
607           dnl as a backwards compatible synonym for native
608           case "$val" in
609             y | ye | yes )                      val=native ;;
610             n | no | non | none )               val=no;;
611             na | nat | nati | nativ | native )  val=native  ;;
612             ne | net | neta | netau | netaud | netaudi | netaudio | nas ) val=nas  ;;
613             b | bo | bot | both )               val=both;;
614             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
615   \`native', \`nas', \`both', or \`none'."]) ;;
616           esac
617           eval "$opt=\"$val\""
618         ;;
619
620         dnl Has the user requested XIM support?
621         "with_xim" )
622           case "$val" in
623             y | ye | yes )                val=yes   ;;
624             n | no | non | none )         val=no    ;;
625             x | xl | xli | xlib )         val=xlib  ;;
626             m | mo | mot | moti | motif ) val=motif ;;
627             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
628   \`motif', \`xlib', \`yes', or \`no'."]) ;;
629           esac
630           eval "$opt=\"$val\""
631         ;;
632
633         dnl Mail locking specification
634         "mail_locking" )
635           case "$val" in
636             lockf )     val=lockf ;;
637             flock )     val=flock ;;
638             file )      val=file  ;;
639             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
640   \`lockf', \`flock', or \`file'."]) ;;
641           esac
642           eval "$opt=\"$val\""
643         ;;
644
645         dnl Has the user requested error-checking?
646         "error_checking" )
647           dnl value can be all, none, and/or a list of categories to check.
648           dnl Example: --error-checking=all,noextents,nobufpos
649           dnl Example: --error-checking=none,malloc,gc
650
651           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
652             case "$x" in
653               dnl all and none are only permitted as the first in the list.
654               n | no | non | none ) new_default=no ;;
655               a | al | all )        new_default=yes ;;
656
657               extents )       error_check_extents=yes ;;
658               noextents )     error_check_extents=no ;;
659
660               typecheck )     error_check_typecheck=yes ;;
661               notypecheck )   error_check_typecheck=no ;;
662
663               bufpos )        error_check_bufpos=yes ;;
664               nobufpos )      error_check_bufpos=no ;;
665
666               gc )            error_check_gc=yes ;;
667               nogc )          error_check_gc=no ;;
668
669               malloc )        error_check_malloc=yes ;;
670               nomalloc )      error_check_malloc=no ;;
671
672               byte_code )     error_check_byte_code=yes ;;
673               nobyte_code )   error_check_byte_code=no ;;
674
675               * ) bogus_error_check=yes ;;
676             esac
677             if test "$bogus_error_check" -o \
678                  \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then
679                 if test "$error_check_default" = yes ; then
680                   types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', \`nomalloc', and \`nobyte-code'."
681                 else
682                   types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', \`malloc', and \`byte-code'."
683                 fi
684                 USAGE_ERROR(["Valid types for the \`--$optname' option are:
685   $types."])
686             elif test -n "$new_default" ; then
687                 error_check_extents=$new_default
688                 error_check_typecheck=$new_default
689                 error_check_bufpos=$new_default
690                 error_check_gc=$new_default
691                 error_check_malloc=$new_default
692                 error_check_byte_code=$new_default
693                 new_default=    # reset this
694             fi
695             echeck_notfirst=true
696           done
697         ;;
698
699         dnl Has the user tried to tell us where the X files are?
700         dnl I think these are dopey, but no less than three alpha
701         dnl testers, at large sites, have said they have their X files
702         dnl installed in odd places.
703
704         dnl Has the user specified one of the path options?
705         prefix | exec_prefix | bindir | datadir | statedir | libdir | \
706         mandir | infodir | infopath | lispdir | etcdir | lockdir | pkgdir | \
707         archlibdir | docdir | package_path )
708            dnl If the value was omitted, get it from the next argument.
709            if test "$valomitted" = "yes"; then
710              if test "$#" = 0; then
711                  USAGE_ERROR("The \`--$optname' option requires a value.");
712              fi
713              val="$1"; shift
714            fi
715            eval "$opt=\"$val\""
716
717            dnl You need to synchronize this with the way the
718            dnl default values are built.
719            case "$opt" in
720              dnl prefix is taken care of by --with-prefix
721              exec_prefix ) AC_DEFINE(EXEC_PREFIX_USER_DEFINED) ;;
722              lispdir ) AC_DEFINE(LISPDIR_USER_DEFINED) ;;
723              sitelispdir ) AC_DEFINE(SITELISPDIR_USER_DEFINED) ;;
724              moduledir ) AC_DEFINE(MODULEDIR_USER_DEFINED) ;;
725              etcdir  )  AC_DEFINE(ETCDIR_USER_DEFINED) ;;
726              infodir ) AC_DEFINE(INFODIR_USER_DEFINED) ;;
727              infopath ) AC_DEFINE(INFOPATH_USER_DEFINED) ;;
728              package_path ) AC_DEFINE(PACKAGE_PATH_USER_DEFINED) ;;
729              datadir )
730                 AC_DEFINE(INFODIR_USER_DEFINED)
731                 AC_DEFINE(LISPDIR_USER_DEFINED)
732             AC_DEFINE(MODULEDIR_USER_DEFINED)
733                 AC_DEFINE(ETCDIR_USER_DEFINED) ;;
734              statedir | lockdir ) AC_DEFINE(LOCKDIR_USER_DEFINED) ;;
735              docdir ) AC_DEFINE(DOCDIR_USER_DEFINED) ;;
736              exec_prefix | libdir | archlibdir ) AC_DEFINE(ARCHLIBDIR_USER_DEFINED) ;;
737            esac
738         ;;
739
740         dnl --no-create added by autoconf for use by config.status
741         "no_create" ) ;;
742
743         dnl Has the user asked for some help?
744         "usage" | "help" ) ${PAGER-more} ${srcdir}/configure.usage; exit 0 ;;
745
746         dnl Has the user specified the toolkit(s) to use for GUI elements?
747         "with_menubars"   | \
748         "with_scrollbars" | \
749         "with_dialogs" | \
750         "with_widgets" )
751           case "$val" in
752             l | lu | luc | luci | lucid )               val=lucid  ;;
753             m | mo | mot | moti | motif )               val=motif  ;;
754             athena3d | athena-3d )                      val=athena3d ;;
755             a | at | ath | athe | athen | athena )      val=athena ;;
756             n | no | non | none )                       val=no ;;
757             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
758   \`lucid', \`motif', \`athena', \`athena3d', or \`no'."]) ;;
759           esac
760           eval "$opt=\"$val\""
761         ;;
762
763         dnl Obsolete legacy argument?  Warn, but otherwise ignore.
764         "use_minimal_tagbits" | \
765         "use_indexed_lrecord_implementation" | \
766         "run_in_place"  | \
767         "with_gnu_make" )
768           AC_MSG_WARN([Obsolete option \`--$optname' ignored.])
769         ;;
770
771         dnl Unrecognized option?  No mercy for user errors.
772         * ) USAGE_ERROR("Unrecognized option: $arg") ;;
773
774       esac
775     ;;
776
777     dnl Assume anything with multiple hyphens is a configuration name.
778     *-*-*) configuration="$arg" ;;
779
780     dnl Unrecognized argument?  No mercy for user errors.
781     *) USAGE_ERROR("Unrecognized argument: $arg") ;;
782
783   esac
784 done
785
786 dnl -------------------------
787 dnl Finish options processing
788 dnl -------------------------
789
790 dnl Several options are equivalent to, and override, environment variables.
791 test -n "$cpp"      && CPP="$cpp"
792 test -n "$cppflags" && CPPFLAGS="$cppflags"
793 test -n "$libs"     && LIBS="$libs"
794 test -n "$ldflags"  && LDFLAGS="$ldflags"
795
796 dnl Get the arguments back.  See the diatribe on Shell Magic above.
797 eval set x "$quoted_arguments"; shift
798
799 dnl --extra-verbose implies --verbose
800 test "$extra_verbose" = "yes" && verbose=yes
801
802 dnl with_x is an obsolete synonym for with_x11
803 test -n "$with_x" && with_x11="$with_x"
804
805 dnl --with-quantify or --with-purify imply --use-system-malloc
806 if test "$with_purify" = "yes" -o "$with_quantify" = "yes"; then
807   test "$with_system_malloc" = "default" && with_system_malloc=yes
808 fi
809
810 dnl XE_CHECK_FEATURE_DEPENDENCY(feature1, feature2)
811 define([XE_CHECK_FEATURE_DEPENDENCY],
812 [if test "$with_$1 $with_$2" = "yes no"; then
813   USAGE_ERROR("--with-$1 requires --with-$2")
814 elif test "$with_$2" = "no" ; then with_$1=no
815 elif test "$with_$1" = "yes"; then with_$2=yes
816 fi
817 ])
818
819 dnl CDE requires tooltalk
820 XE_CHECK_FEATURE_DEPENDENCY(cde, tooltalk)
821
822 dnl Find the source directory.
823 case "$srcdir" in
824
825   dnl If srcdir is not specified, see if  "." or ".." might work.
826   "" )
827     for dir in "`echo $0 | sed 's|//|/|' | sed 's|/[[^/]]*$||'`" "." ".." ; do
828       if test -f "$dir/src/lisp.h" -a \
829               -f "$dir/lisp/version.el" ; then
830         srcdir="$dir"
831         break
832       fi
833     done
834     if test -z "$srcdir" ; then
835       USAGE_ERROR(["Neither the current directory nor its parent seem to
836   contain the XEmacs sources.  If you do not want to build XEmacs in its
837   source tree, you should run \`$progname' in the directory in which
838   you wish to build XEmacs, using the \`--srcdir' option to say where the
839   sources may be found."])
840     fi
841   ;;
842
843   dnl Otherwise, check if the directory they specified is okay.
844   * )
845     if test ! -f "$srcdir/src/lisp.h" -o \
846             ! -f "$srcdir/lisp/version.el" ; then
847       USAGE_ERROR(["The directory specified with the \`--srcdir' option,
848   \`$srcdir', doesn't seem to contain the XEmacs sources.  You should
849   either run the \`$progname' script at the top of the XEmacs source
850   tree, or use the \`--srcdir' option to specify the XEmacs source directory."])
851     fi
852   ;;
853 esac
854
855 dnl ###########################################################################
856 if test -z "$configuration"; then
857   dnl Guess the configuration
858   configuration=`${CONFIG_SHELL-/bin/sh} $srcdir/config.guess`
859   if test -z "$configuration"; then
860     USAGE_ERROR(["XEmacs has not been ported to this host type.
861 Try explicitly specifying the CONFIGURATION when rerunning configure."])
862   fi
863 fi
864
865 AC_PROG_LN_S
866
867 dnl Make symlinks for etc, lisp, and info directories while the path
868 dnl is still relative.  We do not symlink lock because someone may
869 dnl have stuck the source on a read-only partition.  Instead we
870 dnl create it as an actual directory later on if it does not already
871 dnl exist.
872 for dir in lisp etc man info; do
873   if test ! -d "$dir" ; then
874     echo Making symbolic link to "$srcdir/$dir"
875     ${LN_S} "$srcdir/$dir" "$dir"
876   fi
877 done
878
879 dnl Do our best to deal with automounter brokenness
880 dnl CANONICALIZE_PATH(varname)
881 define([CANONICALIZE_PATH],
882 [if test -d "/net"; then
883   if test -d "/tmp_mnt/net"; then tdir="tmp_mnt/net"; else tdir="tmp_mnt"; fi
884   $1=`echo "[$]$1" | \
885    sed -e "s|^${tdir}/|/net/|" -e "s|^/a/|/net/|" -e "s|^/amd/|/net/|"`
886 fi])dnl
887
888 dnl Calculate canonical name for blddir (i.e. current directory).
889 dnl PWD may already be the preferable absolute name for ".",
890 dnl but we can't trust it - it is sometimes inaccurate.
891 absolute_pwd="`pwd`";
892 if test -n "$PWD" -a "`cd $PWD && pwd`" = "$absolute_pwd"
893 then blddir="$PWD"
894 else blddir="$absolute_pwd"; CANONICALIZE_PATH(blddir)
895 fi
896 AC_SUBST(blddir)
897
898 dnl Make srcdir absolute, if not already.  It is important to
899 dnl avoid running the path through pwd unnecessary, since pwd can
900 dnl give you automounter prefixes, which can go away.
901 case "$srcdir" in
902   /* ) ;;
903   .  ) srcdir="$blddir" ;;
904   *  ) srcdir="`cd $srcdir && pwd`"; CANONICALIZE_PATH(srcdir) ;;
905 esac
906
907 dnl Check if the source directory already has a configured system in it.
908 if test `pwd` != `sh -c cd $srcdir && pwd`  \
909    && test -f "$srcdir/src/config.h"; then
910   (echo "$progname: WARNING: The directory tree \`$srcdir' is being used"
911    echo "   as a build directory right now; it has been configured in its own"
912    echo "   right.  To configure in another directory as well, you MUST"
913    echo "   use GNU make.  If you do not have GNU make, then you must"
914    echo "   now do \`make distclean' in $srcdir,"
915    echo "   and then run $progname again.") >&2
916   extrasub='/^VPATH[[    ]]*=/c\
917 vpath %.c $(srcdir)\
918 vpath %.h $(srcdir)\
919 vpath %.y $(srcdir)\
920 vpath %.l $(srcdir)\
921 vpath %.s $(srcdir)\
922 vpath %.in $(srcdir)'
923 fi
924
925 dnl ----------------------------------------
926 dnl Find out which version of XEmacs this is
927 dnl ----------------------------------------
928 . "$srcdir/version.sh" || exit 1;
929 dnl Must do the following first to determine verbosity for AC_DEFINE
930 if test -n "$emacs_is_beta"; then beta=yes; else beta=no; fi
931 : "${extra_verbose=$beta}"
932 version="${emacs_major_version}.${emacs_minor_version}"
933 AC_DEFINE_UNQUOTED(EMACS_MAJOR_VERSION, $emacs_major_version)
934 AC_DEFINE_UNQUOTED(EMACS_MINOR_VERSION, $emacs_minor_version)
935 if test -n "$emacs_beta_version" ; then
936   if test "$beta" = "yes"; then
937         version="${version}-b${emacs_beta_version}"
938         AC_DEFINE_UNQUOTED(EMACS_BETA_VERSION, $emacs_beta_version)
939   else
940         version="${version}.${emacs_beta_version}"
941         AC_DEFINE_UNQUOTED(EMACS_PATCH_LEVEL, $emacs_beta_version)
942   fi
943 fi
944 AC_DEFINE_UNQUOTED(XEMACS_CODENAME, "$xemacs_codename")
945 AC_DEFINE_UNQUOTED(EMACS_VERSION, "$version")
946
947 if test "$with_infodock" = "yes"; then
948   if test ! -f ../../ID-INSTALL; then
949     echo "Cannot build InfoDock without InfoDock sources"
950     with_infodock=no
951   fi
952 fi
953
954 if test "$with_infodock" = "yes"; then
955   dnl InfoDock version numbers.  XEmacs will use the same style of numbering
956   dnl after the release of XEmacs 21.0.
957   AC_DEFINE_UNQUOTED(INFODOCK_MAJOR_VERSION, $infodock_major_version)
958   AC_DEFINE_UNQUOTED(INFODOCK_MINOR_VERSION, $infodock_minor_version)
959   AC_DEFINE_UNQUOTED(INFODOCK_BUILD_VERSION, $infodock_build_version)
960   version=${infodock_major_version}.${infodock_minor_version}.${infodock_build_version}
961   PROGNAME=infodock
962   CPPFLAGS="$CPPFLAGS -DINFODOCK"
963 else
964   PROGNAME=xemacs
965 fi
966
967 dnl ----------------------------------
968 dnl Error checking and debugging flags
969 dnl ----------------------------------
970 dnl Error checking default to "yes" in beta versions, to "no" in releases.
971 dnl Same goes for --debug and --extra-verbosity.
972 if test -n "$emacs_is_beta"; then beta=yes; else beta=no; fi
973 test "${error_check_extents=$beta}"   = yes && AC_DEFINE(ERROR_CHECK_EXTENTS)
974 test "${error_check_typecheck=$beta}" = yes && AC_DEFINE(ERROR_CHECK_TYPECHECK)
975 test "${error_check_bufpos=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_BUFPOS)
976 test "${error_check_gc=$beta}"        = yes && AC_DEFINE(ERROR_CHECK_GC)
977 test "${error_check_malloc=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_MALLOC)
978 test "${error_check_byte_code=$beta}" = yes && AC_DEFINE(ERROR_CHECK_BYTE_CODE)
979 dnl debug=yes must be set when error checking is present.  This should be
980 dnl fixed up.
981 dnl debug implies other options
982 if test "${debug:=$beta}" = "yes"; then
983   use_assertions=yes memory_usage_stats=yes
984   XE_ADD_OBJS(debug.o)
985   AC_DEFINE(DEBUG_XEMACS)
986 fi
987 test "$use_assertions"     = "yes" && AC_DEFINE(USE_ASSERTIONS)
988 test "$memory_usage_stats" = "yes" && AC_DEFINE(MEMORY_USAGE_STATS)
989
990 dnl ------------------------------
991 dnl Determine the s&m files to use
992 dnl ------------------------------
993 dnl Given the configuration name, set machfile and opsysfile to the
994 dnl names of the m/*.h and s/*.h files we should use.
995
996 dnl Canonicalize the configuration name.
997 AC_MSG_CHECKING("host system type")
998 dnl allow -workshop suffix on configuration name
999 internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'`
1000 canonical=`${CONFIG_SHELL-/bin/sh} $srcdir/config.sub "$internal_configuration"`
1001 XE_STRIP_4TH_COMPONENT(configuration)
1002 XE_STRIP_4TH_COMPONENT(canonical)
1003 AC_MSG_RESULT($configuration)
1004
1005 dnl If you add support for a new configuration, add code to this
1006 dnl switch statement to recognize your configuration name and select
1007 dnl the appropriate operating system and machine description files.
1008
1009 dnl You would hope that you could choose an m/*.h file pretty much
1010 dnl based on the machine portion of the configuration name, and an s-
1011 dnl file based on the operating system portion.  However, it turns out
1012 dnl that each m/*.h file is pretty manufacturer-specific - for
1013 dnl example, apollo.h, hp9000s300.h, mega68k, news.h, and tad68k are
1014 dnl all 68000 machines; mips.h, pmax.h, and news-risc are all MIPS
1015 dnl machines.  So we basically have to have a special case for each
1016 dnl configuration name.
1017
1018 dnl As far as handling version numbers on operating systems is
1019 dnl concerned, make sure things will fail in a fixable way.  If
1020 dnl /etc/MACHINES says nothing about version numbers, be
1021 dnl prepared to handle anything reasonably.  If version numbers
1022 dnl matter, be sure /etc/MACHINES says something about it.
1023
1024 dnl Eric Raymond says we should accept strings like "sysvr4" to mean
1025 dnl "System V Release 4"; he writes, "The old convention encouraged"
1026 dnl "confusion between `system' and `release' levels'."
1027
1028 machine='' opsys=''
1029
1030 dnl Straightforward machine determination
1031 case "$canonical" in
1032   sparc-*-*        ) machine=sparc ;;
1033   alpha*-*-*       ) machine=alpha ;;
1034   vax-*-*          ) machine=vax ;;
1035   mips-dec-*       ) machine=pmax ;;
1036   mips-sgi-*       ) machine=iris4d ;;
1037   mips*-linux      ) machine=mips ;;
1038   romp-ibm-*       ) machine=ibmrt ;;
1039   rs6000-ibm-aix*  ) machine=ibmrs6000 ;;
1040   powerpc-ibm-aix* ) machine=ibmrs6000 ;;
1041   powerpc*-*       ) machine=powerpc ;;
1042   hppa-*-*         ) machine=hp800 ;;
1043   m88k-dg-*        ) machine=aviion ;;
1044   m68*-sony-*      ) machine=news ;;
1045   mips-sony-*      ) machine=news-risc ;;
1046   clipper-*        ) machine=clipper ;;
1047   arm-*            ) machine=arm ;;
1048   ns32k-*          ) machine=ns32000 ;;
1049 esac
1050
1051 dnl Straightforward OS determination
1052 case "$canonical" in
1053   *-*-linux*    ) opsys=linux ;;
1054   *-*-netbsd*   ) opsys=netbsd ;;
1055   *-*-openbsd*  ) opsys=openbsd ;;
1056   *-*-nextstep* ) opsys=nextstep ;;
1057   *-*-vms       ) opsys=vms ;;
1058
1059   dnl DEC OSF
1060   *-dec-osf1.3 | *-dec-osf2* ) opsys=decosf1-3 ;;
1061   *-dec-osf1.2 | *-dec-osf1* ) opsys=decosf1-2 ;;
1062   *-dec-osf3.[[2-9]]         ) opsys=decosf3-2 ;;
1063   *-dec-osf3*                ) opsys=decosf3-1 ;;
1064   *-dec-osf4*                ) opsys=decosf4-0 ;;
1065
1066   dnl DEC Ultrix
1067   *-*-ultrix[[0-3]].* | *-*-ultrix4.0* ) opsys=bsd4-2 ;;
1068   *-*-ultrix4.[[12]]* ) opsys=bsd4-3 ;;
1069   *-*-ultrix* )         opsys=ultrix4-3 ;;
1070
1071   dnl AIX
1072   *-*-aix3.1*  ) opsys=aix3-1   ;;
1073   *-*-aix3.2.5 ) opsys=aix3-2-5 ;;
1074   *-*-aix3*    ) opsys=aix3-2   ;;
1075   *-*-aix4.0*  ) opsys=aix4     ;;
1076   *-*-aix4.1*  ) opsys=aix4-1   ;;
1077   *-*-aix4*    ) opsys=aix4-2   ;;
1078
1079   dnl Other generic OSes
1080   *-gnu* )                      opsys=gnu    ;;
1081   *-*-bsd4.[[01]] )             opsys=bsd4-1 ;;
1082   *-*-bsd4.2 )                  opsys=bsd4-2 ;;
1083   *-*-bsd4.3 )                  opsys=bsd4-3 ;;
1084   *-*-aos4.2 )                  opsys=bsd4-2 ;;
1085   *-*-aos*   )                  opsys=bsd4-3 ;;
1086   *-*-sysv0    | *-*-sysvr0 )   opsys=usg5-0 ;;
1087   *-*-sysv2    | *-*-sysvr2 )   opsys=usg5-2 ;;
1088   *-*-sysv2.2  | *-*-sysvr2.2 ) opsys=usg5-2-2 ;;
1089   *-*-sysv3*   | *-*-sysvr3* )  opsys=usg5-3 ;;
1090   *-*-sysv4.1* | *-*-sysvr4.1* )opsys=usg5-4 NON_GNU_CPP=/usr/lib/cpp ;;
1091   *-*-sysv4.[[2-9]]* | *-sysvr4.[[2-9]]* )
1092         if test -z "$NON_GNU_CPP" ; then
1093           for prog in "/usr/ccs/lib/cpp" "/lib/cpp"; do
1094             if test -f "$prog"; then NON_GNU_CPP="$prog"; break; fi
1095           done
1096         fi
1097         opsys=usg5-4-2 ;;
1098     *-sysv4* | *-sysvr4* )      opsys=usg5-4 ;;
1099     *-*-mach_bsd4.3* )          opsys=mach-bsd4-3 ;;
1100 esac
1101
1102 case "$canonical" in
1103
1104   dnl NetBSD ports
1105   *-*-netbsd* )
1106     case "$canonical" in
1107       i[[3-9]]86-*-netbsd*) machine=intel386 ;;
1108       hp300-*-netbsd* | amiga-*-netbsd* | sun3-*-netbsd* | mac68k-*-netbsd* | da30-*-netbsd* | m68k-*-netbsd* )
1109                       dnl Yes, this is somewhat bogus.
1110                       machine=hp9000s300 ;;
1111       pc532-*-netbsd* | ns32k-*-netbsd* )  machine=ns32000 ;;
1112       pmax-*-netbsd*  | mips-*-netbsd*  )  machine=pmax ;;
1113     esac
1114   ;;
1115
1116   dnl OpenBSD ports
1117   *-*-openbsd* )
1118     case "${canonical}" in
1119       i386-*-openbsd*)          machine=intel386 ;;
1120       m68k-*-openbsd*)          machine=hp9000s300 ;;
1121       mipsel-*-openbsd*)        machine=pmax ;;
1122      esac
1123    ;;
1124
1125   dnl Acorn RISCiX:
1126   arm-acorn-riscix1.1* ) machine=acorn opsys=riscix1-1 ;;
1127   arm-acorn-riscix1.2* | arm-acorn-riscix ) machine=acorn opsys=riscix1-2 ;;
1128
1129   dnl Alliant machines
1130   fx80-alliant-* ) machine=alliant4     opsys=bsd4-2 ;;
1131   i860-alliant-* ) machine=alliant-2800 opsys=bsd4-3 ;;
1132
1133   dnl Altos 3068
1134   m68*-altos-sysv* ) machine=altos opsys=usg5-2 ;;
1135
1136   dnl Amdahl UTS
1137   580-amdahl-sysv* ) machine=amdahl opsys=usg5-2-2 ;;
1138
1139   dnl Apollo, Domain/OS
1140   m68*-apollo-* ) machine=apollo opsys=bsd4-3 ;;
1141
1142   dnl AT&T 3b2, 3b5, 3b15, 3b20
1143   we32k-att-sysv* ) machine=att3b opsys=usg5-2-2 ;;
1144
1145   dnl AT&T 3b1 - The Mighty Unix PC!
1146   m68*-att-sysv* ) machine=7300 opsys=usg5-2-2 ;;
1147
1148   dnl Bull machines
1149   rs6000-bull-bosx* ) machine=ibmrs6000 opsys=aix3-2 ;; # dpx20
1150   m68*-bull-sysv3*  ) machine=dpx2      opsys=usg5-3 ;; # dpx2
1151   m68*-bull-sysv2*  ) machine=sps7      opsys=usg5-2 ;; # sps7
1152
1153   dnl CCI 5/32, 6/32 -- see "Tahoe".
1154
1155   dnl Celerity
1156   celerity-celerity-bsd* ) machine=celerity opsys=bsd4-2 ;;
1157
1158   dnl Convex
1159   *-convex-bsd* | *-convex-convexos* )
1160     machine=convex opsys=bsd4-3
1161     NON_GNU_CPP="cc -E -P"
1162   ;;
1163
1164   dnl Cubix QBx/386
1165   i[[3-9]]86-cubix-sysv* ) machine=intel386 opsys=usg5-3 ;;
1166
1167   dnl Data General AViiON Machines
1168   i586-dg-dgux*R4*   | i586-dg-dgux5.4.4* ) machine=aviion opsys=dgux5-4r4 ;;
1169   m88k-dg-dgux5.4R3* | m88k-dg-dgux5.4.3* ) opsys=dgux5-4r3 ;;
1170   m88k-dg-dgux5.4R2* | m88k-dg-dgux5.4.2* ) opsys=dgux5-4r2 ;;
1171   m88k-dg-dgux*                           ) opsys=dgux     ;;
1172
1173   dnl Motorola Delta machines
1174   m68k-motorola-sysv* | m68000-motorola-sysv* ) machine=delta opsys=usg5-3 ;;
1175   m88k-motorola-sysv4* )
1176     dnl jbotte@bnr.ca says that UNIX_System_V <hostName> 4.0 R40V4.3 m88k mc88110
1177     dnl needs POSIX_SIGNALS and therefore needs usg5-4-2.
1178     dnl I hope there are not other 4.0 versions for this machine
1179     dnl which really need usg5-4 instead.
1180     machine=delta88k opsys=usg5-4-2
1181   ;;
1182   m88k-motorola-sysv* | m88k-motorola-m88kbcs* ) machine=delta88k opsys=usg5-3 ;;
1183
1184   dnl Dual machines
1185   m68*-dual-sysv*    ) machine=dual opsys=usg5-2   ;;
1186   m68*-dual-uniplus* ) machine=dual opsys=unipl5-2 ;;
1187
1188   dnl Encore machines
1189   ns16k-encore-bsd* ) machine=ns16000 opsys=umax ;;
1190
1191   dnl Gould Power Node and NP1
1192   pn-gould-bsd4.2* ) machine=gould     opsys=bsd4-2 ;;
1193   pn-gould-bsd4.3* ) machine=gould     opsys=bsd4-3 ;;
1194   np1-gould-bsd* )   machine=gould-np1 opsys=bsd4-3 ;;
1195
1196   dnl Harris Night Hawk machines running CX/UX (a 5000 looks just like a 4000
1197   dnl as far as XEmacs is concerned).
1198   m88k-harris-cxux* )
1199     dnl Build needs to be different on 7.0 and later releases
1200     case "`uname -r`" in
1201        [[56]].[[0-9]] ) machine=nh4000 opsys=cxux  ;;
1202        [[7]].[[0-9]]  ) machine=nh4000 opsys=cxux7 ;;
1203     esac
1204     NON_GNU_CPP="/lib/cpp"
1205   ;;
1206   dnl Harris ecx or gcx running CX/UX (Series 1200, Series 3000)
1207   m68k-harris-cxux* ) machine=nh3000 opsys=cxux ;;
1208   dnl Harris power pc NightHawk running Power UNIX (Series 6000)
1209   powerpc-harris-powerunix ) machine=nh6000 opsys=powerunix NON_GNU_CPP="cc -Xo -E -P" ;;
1210
1211   dnl Honeywell XPS100
1212   xps*-honeywell-sysv* ) machine=xps100 opsys=usg5-2 ;;
1213
1214   dnl HP 9000 series 200 or 300
1215   m68*-hp-bsd* ) machine=hp9000s300 opsys=bsd4-3 ;;
1216
1217   dnl HP-UX
1218   *-hp-hpux* )
1219     dnl Figure out machine and opsys orthogonally
1220     case "$canonical" in
1221       m68*  ) machine=hp9000s300 ;;
1222       hppa* ) machine=hp800      ;;
1223     esac
1224
1225     case "$canonical" in
1226       *-hp-hpux7*  )  opsys=hpux   ;;
1227       *-hp-hpux8*  )  opsys=hpux8  ;;
1228       *-hp-hpux9*  )  opsys=hpux9  ;;
1229       *-hp-hpux10* )  opsys=hpux10 ;;
1230       *-hp-hpux11* )  opsys=hpux11 ;;
1231       *            )  opsys=hpux   ;;
1232     esac
1233
1234     dnl HP has a broken "strcat"
1235     case "$opsys" in hpux9 | hpux10 ) XE_ADD_OBJS(strcat.o) ;; esac
1236
1237     if test "$opsys" = "hpux10" -o "$opsys" = "hpux11"; then \
1238         ansi_flag="-Ae"; else ansi_flag="-Aa"; fi
1239     NON_GNU_CC="cc $ansi_flag" NON_GNU_CPP="cc $ansi_flag -E"
1240
1241     case "$canonical" in *-hp-hpux*shr* ) opsys="${opsys}-shr" ;; esac
1242   ;;
1243
1244   dnl Orion machines
1245   orion-orion-bsd*   ) machine=orion    opsys=bsd4-2 ;;
1246   clipper-orion-bsd* ) machine=orion105 opsys=bsd4-2 ;;
1247
1248   dnl IBM machines
1249   i[[3-9]]86-ibm-aix1.1* ) machine=ibmps2-aix opsys=usg5-2-2 ;;
1250   i[[3-9]]86-ibm-aix1.[[23]]* | i[[3-9]]86-ibm-aix* ) machine=ibmps2-aix opsys=usg5-3 ;;
1251   i370-ibm-aix*) machine=ibm370aix opsys=usg5-3 ;;
1252   romp-ibm-aos*    ) opsys=bsd4-3 ;;
1253   romp-ibm-bsd*    ) opsys=bsd4-3 ;;
1254   romp-ibm-mach*   ) opsys=mach-bsd4-3 ;;
1255
1256   dnl Integrated Solutions "Optimum V"
1257   m68*-isi-bsd4.2* ) machine=isi-ov opsys=bsd4-2 ;;
1258   m68*-isi-bsd4.3* ) machine=isi-ov opsys=bsd4-3 ;;
1259
1260   dnl Intel 386 machines where we do care about the manufacturer
1261   i[[3-9]]86-intsys-sysv* ) machine=is386 opsys=usg5-2-2 ;;
1262
1263   dnl Prime EXL
1264   i[[3-9]]86-prime-sysv* ) machine=i386 opsys=usg5-3 ;;
1265
1266   dnl Sequent Symmetry running Dynix
1267   i[[3-9]]86-sequent-bsd* ) machine=symmetry opsys=bsd4-3 ;;
1268
1269   dnl Sequent Symmetry running DYNIX/ptx
1270   i[[3-9]]86-sequent-ptx* ) machine=sequent-ptx opsys=ptx NON_GNU_CPP="/lib/cpp" ;;
1271
1272   dnl Unspecified sysv on an ncr machine defaults to svr4.2.
1273   dnl (Plain usg5-4 does not turn on POSIX signals, which we need.)
1274   i[[3-9]]86-ncr-sysv* ) machine=ncr386 opsys=usg5-4-2 ;;
1275
1276   dnl Intel Paragon OSF/1
1277   i860-intel-osf1* ) machine=paragon opsys=osf1 NON_GNU_CPP=/usr/mach/lib/cpp ;;
1278
1279   dnl Intel 860
1280   i860-*-sysv4* ) machine=i860 opsys=usg5-4 NON_GNU_CC="/bin/cc" NON_GNU_CPP="/usr/ccs/lib/cpp" ;;
1281
1282   dnl Masscomp machines
1283   m68*-masscomp-rtu* ) machine=masscomp opsys=rtu ;;
1284
1285   dnl Megatest machines
1286   m68*-megatest-bsd* ) machine=mega68 opsys=bsd4-2 ;;
1287
1288   dnl Workstations sold by MIPS
1289   dnl This is not necessarily all workstations using the MIPS processor -
1290   dnl Irises are produced by SGI, and DECstations by DEC.
1291   mips-mips-usg* ) machine=mips4 ;;
1292   mips-mips-riscos4 )
1293     machine=mips4
1294     NON_GNU_CC="cc -systype bsd43"
1295     NON_GNU_CPP="cc -systype bsd43 -E"
1296     case "$canonical" in
1297       mips-mips-riscos4* ) opsys=bsd4-3  ;;
1298       mips-mips-riscos5* ) opsys=riscos5 ;;
1299     esac
1300   ;;
1301   mips-mips-bsd* ) machine=mips opsys=bsd4-3 ;;
1302   mips-mips-*    ) machine=mips opsys=usg5-2-2 ;;
1303
1304   dnl NeXT
1305   m68*-next-* | m68k-*-nextstep* ) machine=m68k opsys=nextstep ;;
1306
1307   dnl The complete machine from National Semiconductor
1308   ns32k-ns-genix* ) machine=ns32000 opsys=usg5-2 ;;
1309
1310   dnl NCR machines
1311   m68*-ncr-sysv2* | m68*-ncr-sysvr2* ) machine=tower32   opsys=usg5-2-2 ;;
1312   m68*-ncr-sysv3* | m68*-ncr-sysvr3* ) machine=tower32v3 opsys=usg5-3 ;;
1313
1314   dnl Nixdorf Targon 31
1315   m68*-nixdorf-sysv* ) machine=targon31 opsys=usg5-2-2 ;;
1316
1317   dnl Nu (TI or LMI)
1318   m68*-nu-sysv* ) machine=nu opsys=usg5-2 ;;
1319
1320   dnl Plexus
1321   m68*-plexus-sysv* ) machine=plexus opsys=usg5-2 ;;
1322
1323   dnl Pyramid machines
1324   pyramid-pyramid-bsd* ) machine=pyramid opsys=bsd4-2 ;;
1325
1326   dnl Sequent Balance
1327   ns32k-sequent-bsd4.2* ) machine=sequent opsys=bsd4-2 ;;
1328   ns32k-sequent-bsd4.3* ) machine=sequent opsys=bsd4-3 ;;
1329
1330   dnl Siemens Nixdorf
1331   mips-siemens-sysv* | mips-sni-sysv*)
1332     machine=mips-siemens opsys=usg5-4
1333     NON_GNU_CC=/usr/ccs/bin/cc
1334     NON_GNU_CPP=/usr/ccs/lib/cpp
1335   ;;
1336
1337   dnl NEC
1338   mips-nec-sysv*)
1339     machine=mips-nec
1340     NON_GNU_CC=/usr/ccs/bin/cc
1341     NON_GNU_CPP=/usr/ccs/lib/cpp
1342   ;;
1343
1344   dnl Silicon Graphics machines
1345   dnl Iris 2500 and Iris 2500 Turbo (aka the Iris 3030)
1346   m68*-sgi-iris3.5* ) machine=irist opsys=iris3-5 ;;
1347   m68*-sgi-iris3.6* | m68*-sgi-iris*) machine=irist opsys=iris3-6 ;;
1348   dnl Iris 4D
1349   mips-sgi-irix3.*    ) opsys=irix3-3 ;;
1350   mips-sgi-irix4.*    ) opsys=irix4-0 ;;
1351   mips-sgi-irix6*     ) opsys=irix6-0 ;;
1352   mips-sgi-irix5.1*   ) opsys=irix5-1 ;;
1353   mips-sgi-irix5.2*   ) opsys=irix5-2 ;;
1354   mips-sgi-irix5.*    ) opsys=irix5-3 ;;
1355   mips-sgi-irix*      ) opsys=irix5-0 ;;
1356
1357   dnl SONY machines
1358   *-sony-newsos[[34]]* | *-sony-news[[34]]* ) opsys=bsd4-3 ;;
1359   *-sony-news* ) opsys=newsos5 ;;
1360
1361   dnl Stride
1362   m68*-stride-sysv* ) machine=stride opsys=usg5-2 ;;
1363
1364   dnl Suns
1365   *-*-solaris* | *-*-sunos* | *-sun-mach* | *-sun-bsd* )
1366     dnl Hardware type
1367     case "$canonical" in
1368       m68*-sunos1* )             machine=sun1     ;;
1369       m68*-sunos2* )             machine=sun2     ;;
1370       m68* )                     machine=sun3     ;;
1371       i*86*-sun-sunos[[34]]* )   machine=sun386   ;;
1372       i*86-*-* )                 machine=intel386 ;;
1373       rs6000* )                  machine=rs6000   ;;
1374     esac
1375
1376     dnl Make $canonical even more so.
1377     case "$canonical" in *-sunos5*)
1378       canonical=`echo $canonical | sed -e s/sunos5/solaris2/`;;
1379     esac
1380
1381     dnl On SunOS 4, use /usr/lib/cpp, sans dynodump, /bin/ranlib
1382     dnl On SunOS 5, use cc -E,        need dynodump, RANLIB not needed
1383     dnl But, SunOS 5.6 no longer needs dynodump because it has a similar
1384     dnl function integrated.
1385     case "$canonical" in
1386       *-sunos4* )
1387         #test -f /usr/lib/cpp     && NON_GNU_CPP=/usr/lib/cpp ;;
1388         : ;;
1389       *-solaris2* )
1390         #test -f /usr/ccs/lib/cpp && NON_GNU_CPP=/usr/ccs/lib/cpp
1391         RANLIB=':' ;;
1392     esac
1393
1394     case "$canonical" in
1395       *-solaris*          )
1396         opsys=sol2
1397         os_release=`uname -r | sed -e 's/^\([[0-9]]\)\.\([[0-9]]\).*/\1\2/'`
1398         AC_DEFINE_UNQUOTED(OS_RELEASE, $os_release) ;;
1399
1400       dnl The last Sun386 ran 4.0.
1401       i*86-*-sunos4*      ) opsys=sunos4-0      ;;
1402       *-sunos4.0*         ) opsys=sunos4-0      ;;
1403       *-sunos4.1.2*       ) opsys=sunos4-1-2    ;;
1404       *-sunos4.1.3*       ) opsys=sunos4-1-3    ;;
1405       *-sunos4.1.[[4-9]]* ) opsys=sunos4-1-4    ;;
1406       *-sunos4* | *-sunos ) opsys=sunos4-1      ;;
1407       *-mach*             ) opsys=mach-bsd4-3   ;;
1408       *                   ) opsys=bsd4-2        ;;
1409     esac
1410
1411     case "$canonical" in *-sunos4*shr* ) opsys="${opsys}-shr" ;; esac
1412
1413     dnl Watch out for a compiler guaranteed not to work.
1414     test "$opsys $CC" = "sol2 /usr/ucb/cc" && CC=""
1415   ;;
1416
1417   dnl Tadpole 68k
1418   m68*-tadpole-sysv* ) machine=tad68k opsys=usg5-3 ;;
1419
1420   dnl Tahoe machines
1421   tahoe-tahoe-bsd4.2* ) machine=tahoe opsys=bsd4-2 ;;
1422   tahoe-tahoe-bsd4.3* ) machine=tahoe opsys=bsd4-3 ;;
1423
1424   dnl Tandem Integrity S2
1425   mips-tandem-sysv* ) machine=tandem-s2 opsys=usg5-3 ;;
1426
1427   dnl Tektronix XD88
1428   m88k-tektronix-sysv3* ) machine=tekxd88 opsys=usg5-3 ;;
1429
1430   dnl Tektronix 16000 box (6130?)
1431   ns16k-tektronix-bsd* ) machine=ns16000 opsys=bsd4-2 ;;
1432   dnl Tektronix 4300
1433   dnl src/m/tek4300.h hints that this is a m68k machine.
1434   m68*-tektronix-bsd* ) machine=tek4300 opsys=bsd4-3 ;;
1435
1436   dnl Titan P2 or P3
1437   titan-titan-sysv* ) machine=titan opsys=usg5-3 ;;
1438
1439   dnl Ustation E30 (SS5E)
1440   m68*-unisys-uniplus* ) machine=ustation opsystem=unipl5-2 ;;
1441
1442   dnl Vaxen.
1443   vax-dec-* )
1444     case "$canonical" in
1445       *-sysv[[01]]* | *-sysvr[[01]]* )  opsys=usg5-0 ;;
1446       *-sysv2* | *-sysvr2* )            opsys=usg5-2 ;;
1447       *-mach* )                         opsys=mach-bsd4-3 ;;
1448     esac
1449   ;;
1450
1451   dnl Whitechapel MG1
1452   ns16k-whitechapel-* ) machine=mg1 ;;
1453
1454   dnl Wicat
1455   m68*-wicat-sysv* ) machine=wicat opsys=usg5-2 ;;
1456
1457   dnl Intel 386 machines where we do not care about the manufacturer
1458   i[[3-9]]86-*-* )
1459     machine=intel386
1460     case "$canonical" in
1461       *-isc1.* | *-isc2.[[01]]* ) opsys=386-ix ;;
1462       *-isc2.2* )               opsys=isc2-2 ;;
1463       *-isc4.0* )               opsys=isc4-0 ;;
1464       *-isc4.* )                opsys=isc4-1
1465                                 GCC_TEST_OPTIONS=-posix
1466                                 NON_GCC_TEST_OPTIONS=-Xp
1467                                 ;;
1468       *-isc* )                  opsys=isc3-0 ;;
1469       *-esix5* )                opsys=esix5r4 NON_GNU_CPP=/usr/lib/cpp ;;
1470       *-esix* )                 opsys=esix ;;
1471       *-mach* )                 opsys=mach-bsd4-3 ;;
1472       *-xenix* )                opsys=xenix ;;
1473       *-sco3.2v4* )             opsys=sco4 NON_GNU_CPP=/lib/cpp  ;;
1474       *-bsd386* | *-bsdi1* )    opsys=bsd386 ;;
1475       *-bsdi4* )                opsys=bsdos4 ;;
1476       *-bsdi3* )                opsys=bsdos3 ;;
1477       *-bsdi2.1* )              opsys=bsdos2-1 ;;
1478       *-bsdi2* )                opsys=bsdos2 ;;
1479       *-sco3.2v5* )             opsys=sco5 ;
1480         dnl This is a pain.  Like the current USL cc, SCO cc -E
1481         dnl tokenizes as it preprocesses, making configure very
1482         dnl unhappy.  Unfortunately, /lib/cpp does not understand
1483         dnl flags like "-b elf", so we have to cheat in order to
1484         dnl pick up the right defines for UNEXEC from the s-file.
1485         dnl 01/05/95 robertl@dgii.com
1486         if test "$dynamic" = "yes" ; then
1487                 NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE -D_SCO_ELF"  ;
1488         else
1489                 NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE"  ;
1490         fi ;;
1491       *-sysv5* )                opsys=sco7 ;;
1492       *-386bsd* )               opsys=386bsd ;;
1493       *-freebsd* )              opsys=freebsd ;;
1494       *-nextstep* )             opsys=nextstep ;;
1495       *-pc-cygwin* )            opsys=cygwin32 ;;
1496       *-pc-mingw* )             opsys=mingw32 ;
1497                                 test -z "$with_tty" && with_tty="no";;
1498       dnl Otherwise, we fall through to the generic opsys code at the bottom.
1499     esac
1500   ;;
1501
1502   dnl Linux/68k
1503   m68k-*-linux* ) machine=m68k opsys=linux ;;
1504
1505 esac
1506
1507 if test -z "$machine" -o -z "$opsys"; then
1508   (echo "$progname: XEmacs hasn't been ported to \`$canonical' systems."
1509    echo "$progname: Check \`etc/MACHINES' for recognized configuration names."
1510   ) >&2
1511   exit 1
1512 fi
1513
1514 if test -z "$dynamic"; then
1515   case "$opsys" in
1516     hpux* | sunos4* ) dynamic=no ;;
1517     *) dynamic=yes ;;
1518   esac
1519 fi
1520 if test "$dynamic" = "yes"; then
1521   case "$opsys" in
1522     hpux* | sunos4* | sco5 ) opsys="${opsys}-shr" ;;
1523     decosf* ) ld_call_shared="-call_shared" ;;
1524   esac
1525 else dnl "$dynamic" = "no"
1526   case "$opsys" in
1527     sol2 )
1528       echo "Static linking is not supported on Solaris 2."
1529       echo "Rerun configure without specifying --dynamic=no."
1530       exit 1 ;;
1531     linux   ) ld_call_shared="-Bstatic" ;;
1532     decosf* ) ld_call_shared="-non_shared" ;;
1533   esac
1534 fi
1535
1536 dnl Use xlc by default on AIX
1537 case "$opsys" in aix*) NON_GNU_CC=xlc ;; esac
1538
1539 stack_trace_eye_catcher=`echo ${PROGNAME}_${version}_${canonical} | sed 'y/.-/__/'`
1540 AC_DEFINE_UNQUOTED(STACK_TRACE_EYE_CATCHER, $stack_trace_eye_catcher)
1541
1542 machfile="m/${machine}.h"
1543 opsysfile="s/${opsys}.h"
1544
1545 dnl --------------------------------------------------
1546 dnl Determine the compiler, set up for feature testing
1547 dnl --------------------------------------------------
1548
1549 dnl Sun Development environment support
1550 test "$with_sparcworks" = "yes" && with_workshop=yes # compatibility alias
1551 XE_CHECK_FEATURE_DEPENDENCY(workshop, tooltalk)
1552 if test "$with_workshop" = "yes"; then
1553   AC_DEFINE(SUNPRO)
1554   XE_ADD_OBJS(sunpro.o)
1555 fi
1556
1557 if test "$with_clash_detection" = "yes"; then
1558   AC_DEFINE(CLASH_DETECTION)
1559   XE_ADD_OBJS(filelock.o)
1560 fi
1561
1562 dnl Choose a compiler from (in order)
1563 dnl --compiler, env var CC, with_gcc=no && ${NON_GNU_CC:-cc}, AC_PROG_CC
1564 test -n "$compiler" && CC="$compiler"
1565 if test "$with_gcc" = "no"; then dnl Try to find a non-gcc compiler
1566   case "$CC" in "" | *gcc* ) CC="${NON_GNU_CC-cc}" ;; esac
1567 fi
1568
1569 dnl If we don't set CFLAGS here, AC_PROG_CC will set it.
1570 dnl But we know better what's good for us, so we do our own
1571 dnl computation of real CFLAGS later.
1572 dnl --cflags overrides environment variable CFLAGS
1573 test "${cflags-unset}" != unset && CFLAGS="$cflags"
1574 if test "${CFLAGS-unset}" != unset
1575   then cflags_specified=yes;
1576   else cflags_specified=no;
1577 fi
1578
1579 xe_save_CFLAGS="$CFLAGS"
1580
1581 AC_PROG_CC dnl Autoconf has its own magic for compiler autodetection
1582
1583 dnl Retry using random guesswork if AC_PROG_CC got it wrong...
1584 if   test "$with_gcc" = "no"  -a "$GCC" = "yes"; then
1585   CC=${NON_GNU_CC-cc}
1586   AC_PROG_CC
1587 elif test "$with_gcc" = "yes" -a "$GCC" != "yes" ; then
1588   CC=gcc
1589   AC_PROG_CC
1590 fi
1591 CFLAGS="$xe_save_CFLAGS"
1592
1593 dnl Figure out what C preprocessor to use.
1594
1595 dnl On Sun systems, people sometimes set up the variable CPP
1596 dnl with a value that is a directory, not an executable at all.
1597 dnl Detect that case, and ignore that value.
1598 test -n "$CPP" -a -d "$CPP" && CPP=
1599
1600 test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
1601
1602 AC_PROG_CPP
1603
1604 AC_AIX
1605
1606 AC_MSG_CHECKING(for GNU libc)
1607 AC_TRY_COMPILE([#include <features.h>],[
1608 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
1609 #error Not a GNU libc system :-(
1610 ******* ======= ******** &&&&&&&&
1611 #endif
1612 ], have_glibc=yes, have_glibc=no)
1613 AC_MSG_RESULT($have_glibc)
1614 dnl I'm tired of pop being broken with GLIBC -slb
1615 dnl Well. then why not fix fucking pop?
1616 test "$have_glibc" = "yes" && AC_DEFINE(_GNU_SOURCE)
1617
1618
1619 dnl Identify compilers to enable compiler-specific hacks.
1620 dnl Add support for other compilers HERE!
1621 dnl GCC is already identified elsewhere.
1622 AC_TRY_RUN([int main () {
1623 #if defined __SUNPRO_C
1624 return 11;
1625 #elif defined __DECC
1626 return 12;
1627 #else
1628 return 0;
1629 #endif
1630 }], [],
1631 [case "$conftest_rc" in
1632   11) echo "You appear to be using the SunPro C compiler."; __SUNPRO_C=yes ;;
1633   12) echo "You appear to be using the DEC C compiler."   ; __DECC=yes ;;
1634 esac])
1635
1636
1637 dnl case "$canonical" in
1638 dnl   *-sun-sunos* ) test "$CPP" = "acc -E" && CPP="acc -E -Xs" ;;
1639 dnl esac
1640
1641 dnl --------------------------------------------------------------------
1642 dnl Extract some information from the operating system and machine files
1643 dnl --------------------------------------------------------------------
1644
1645 echo "Extracting information from the machine- and system-dependent headers..."
1646
1647 dnl It is not important that this name contain the PID; you cannot run
1648 dnl two configures in the same directory and have anything work
1649 dnl anyway.
1650 tempcname="conftest.c"
1651
1652 dnl CPP_to_sh(CPP_SYMBOL, SH_VAR, DEFAULT_VALUE)
1653 define([CPP_to_sh],
1654 [[#]ifndef [$1]
1655 [#]define [$1]ifelse([$3],,, [ "$3"])
1656 [#]endif
1657 configure___ [$2]=[$1]
1658 ])dnl CPP_to_sh
1659
1660 dnl CPP_boolean_to_sh(CPP_SYMBOL, SH_VAR)
1661 define([CPP_boolean_to_sh],
1662 [[#]ifdef [$1]
1663 configure___ [$2]=yes
1664 [#]else
1665 configure___ [$2]=no
1666 [#]endif
1667 ])dnl CPP_boolean_to_sh
1668
1669 cat > $tempcname <<EOF
1670 #define NOT_C_CODE
1671 #define C_SWITCH_SITE
1672 #define C_SWITCH_X_SITE
1673 #define LD_SWITCH_SITE
1674 #define LD_SWITCH_X_SITE
1675 #define LD_SWITCH_X_SITE_AUX
1676 #define OS_RELEASE $os_release
1677 #include "$srcdir/src/$opsysfile"
1678 #include "$srcdir/src/$machfile"
1679
1680 CPP_to_sh(LIBS_MACHINE, libs_machine)
1681 CPP_to_sh(LIBS_SYSTEM,  libs_system)
1682 CPP_to_sh(LIBS_TERMCAP, libs_termcap)
1683 CPP_to_sh(LIB_STANDARD, libs_standard)
1684
1685 CPP_to_sh(OBJECTS_MACHINE, objects_machine)
1686 CPP_to_sh(OBJECTS_SYSTEM,  objects_system)
1687
1688 CPP_to_sh(C_SWITCH_MACHINE,   c_switch_machine)
1689 CPP_to_sh(C_SWITCH_SYSTEM,    c_switch_system)
1690
1691 CPP_to_sh(LD_SWITCH_MACHINE,  ld_switch_machine)
1692 CPP_to_sh(LD_SWITCH_SYSTEM,   ld_switch_system)
1693
1694 CPP_to_sh(UNEXEC, unexec, unexec.o)
1695
1696 CPP_to_sh(LD_SWITCH_SHARED, ld_switch_shared, -c)
1697
1698 #ifdef ORDINARY_LINK
1699 #define LD "\$(CC) \$(CFLAGS)"
1700 #else /* no ORDINARY LINK */
1701 #ifdef COFF_ENCAPSULATE
1702 #define LD "\$(CC) -nostdlib"
1703 #else /* not COFF_ENCAPSULATE */
1704 #ifdef LINKER
1705 #define LD LINKER
1706 #else /* ! defined (LINKER) */
1707 #define LD "ld"
1708 #endif /* ! defined (LINKER) */
1709 #endif /* ! defined (COFF_ENCAPSULATE) */
1710 #endif /* not ORDINARY_LINK */
1711 configure___ ld=LD
1712
1713 CPP_to_sh(LIB_GCC, lib_gcc)
1714 CPP_to_sh(LD_TEXT_START_ADDR, ld_text_start_addr)
1715
1716 #if ! defined (ORDINARY_LINK) && !defined (START_FILES)
1717 #ifdef NO_REMAP
1718 #ifdef COFF_ENCAPSULATE
1719 #define START_FILES "pre-crt0.o /usr/local/lib/gcc-crt0.o"
1720 #else /* ! defined (COFF_ENCAPSULATE) */
1721 #define START_FILES "pre-crt0.o /lib/crt0.o"
1722 #endif /* ! defined (COFF_ENCAPSULATE) */
1723 #else /* ! defined (NO_REMAP) */
1724 #define START_FILES "ecrt0.o"
1725 #endif /* ! defined (NO_REMAP) */
1726 #endif /* no ORDINARY_LINK */
1727 #ifndef START_FILES
1728 #define START_FILES
1729 #endif
1730 configure___ start_files=START_FILES
1731
1732 CPP_boolean_to_sh(ORDINARY_LINK, ordinary_link)
1733 CPP_boolean_to_sh(SYSTEM_MALLOC, system_malloc)
1734 CPP_boolean_to_sh(TERMINFO, have_terminfo)
1735 CPP_boolean_to_sh(MAIL_USE_FLOCK, mail_use_flock)
1736 CPP_boolean_to_sh(MAIL_USE_LOCKF, mail_use_lockf)
1737 CPP_boolean_to_sh(HAVE_WIN32_PROCESSES, win32_processes)
1738 EOF
1739
1740 dnl The value of CPP is a quoted variable reference, so we need to do this
1741 dnl to get its actual value...
1742 CPP=`eval "echo $CPP $CPPFLAGS"`
1743 define(TAB, [   ])dnl
1744 changequote(, )dnl
1745 eval `$CPP -Isrc $tempcname \
1746         | sed -n -e "s/[ TAB]*=[ TAB\"]*/='/" -e "s/[ TAB\"]*\$/'/" -e "s/^configure___//p"`
1747 changequote([, ])dnl
1748
1749 rm $tempcname
1750
1751 dnl For debugging...
1752 test "$extra_verbose" = "yes" && \
1753   PRINT_VAR(libs_machine libs_system libs_termcap libs_standard
1754   objects_machine objects_system c_switch_machine c_switch_system
1755   ld_switch_machine ld_switch_system unexec ld_switch_shared
1756   ld lib_gcc ld_text_start_addr start_files ordinary_link
1757   have_terminfo mail_use_flock mail_use_lockf) && echo ""
1758
1759 dnl Non-ordinary link usually requires -lc
1760 test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc"
1761
1762 dnl Compiler-specific hacks
1763 dnl DEC C requires -std
1764 test "$__DECC" = "yes" && XE_APPEND(-std, c_switch_site)
1765
1766 dnl Calculalate value of CFLAGS:
1767 dnl Use either command line flag, environment var, or autodetection
1768 if test "$cflags_specified" = "no"; then
1769   dnl Following values of CFLAGS are known to work well.
1770   dnl Should we take debugging options into consideration?
1771   if   test "$GCC" = "yes"; then
1772     CFLAGS="-g -O3 -Wall -Wno-switch"
1773     dnl I'm not convinced this is a good idea any more. -sb
1774     dnl test "$opsys $machine" = "linux intel386" && \
1775     dnl CFLAGS="$CFLAGS -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2"
1776   elif test "$__SUNPRO_C" = "yes"; then
1777     case "$opsys" in
1778       sol2    ) CFLAGS="-v -xO4" ;;
1779       sunos4* ) CFLAGS="-xO2";;
1780     esac
1781   elif test "$__DECC" = "yes"; then
1782     CFLAGS="-O3"
1783   elif test "$CC" = "xlc"; then
1784     CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000"
1785   dnl ### Add optimal CFLAGS support for other compilers HERE!
1786   else
1787     CFLAGS="-O" ;dnl The only POSIX-approved flag
1788   fi
1789 fi
1790
1791 dnl Inform compiler that certain flags are meant for the linker
1792 dnl XE_PROTECT_LINKER_FLAGS(shell_var)
1793 define([XE_PROTECT_LINKER_FLAGS], [
1794 if test "$GCC" = "yes"; then
1795   set x $[$1]; shift; [$1]=""
1796   while test -n "[$]1"; do
1797     case [$]1 in
1798       -L  | -l  | -u               ) [$1]="$[$1] [$]1 [$]2"; shift ;;
1799       -L* | -l* | -u* | -Wl* | -pg ) [$1]="$[$1] [$]1" ;;
1800       -Xlinker* ) ;;
1801       * ) [$1]="$[$1] -Xlinker [$]1" ;;
1802     esac
1803     shift
1804   done
1805 fi])dnl
1806 XE_PROTECT_LINKER_FLAGS(ld_switch_system)
1807 XE_PROTECT_LINKER_FLAGS(ld_switch_machine)
1808 XE_PROTECT_LINKER_FLAGS(LDFLAGS)
1809 XE_PROTECT_LINKER_FLAGS(ld_call_shared)
1810
1811 dnl Add s&m-determined objects (including unexec) to link line
1812 test -n "$objects_machine" && XE_ADD_OBJS($objects_machine)
1813 test -n "$objects_system"  && XE_ADD_OBJS($objects_system)
1814 test -n "$unexec"          && XE_ADD_OBJS($unexec)
1815
1816 dnl Dynodump (Solaris 2.x, x<6)
1817 AC_MSG_CHECKING(for dynodump)
1818 if test "$unexec" != "unexsol2.o"; then
1819   AC_MSG_RESULT(no)
1820 else
1821   AC_MSG_RESULT(yes)
1822   AC_DEFINE(DYNODUMP)
1823   XE_APPEND(dynodump, MAKE_SUBDIR)
1824   XE_APPEND(dynodump, SRC_SUBDIR_DEPS)
1825   case "$machine" in
1826     sparc   ) dynodump_arch=sparc ;;
1827     *86*    ) dynodump_arch=i386  ;;
1828     powerpc ) dynodump_arch=ppc   ;;
1829   esac
1830   dnl Dynodump requires the system linker
1831   test "$GCC" = "yes" && XE_APPEND(-fno-gnu-linker, ld_switch_site)
1832 fi
1833
1834 dnl Feed s&m crud to src/Makefile
1835
1836 dnl Linux/powerpc needs the following magic for some reason
1837 test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript"
1838
1839 if test "$unexec" = "unexaix.o"; then
1840 dnl AIX needs various hacks to make static linking work.
1841   if   test "$dynamic" = "no"; then
1842   start_flags="-Wl,-bnso,-bnodelcsect"
1843   test "$GCC" = "yes" && start_flags="-B/bin/ ${start_flags}"
1844   for f in "/lib/syscalls.exp" "/lib/threads.exp"; do
1845     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; fi
1846   done
1847   for f in "/usr/lpp/X11/bin/smt.exp" "/usr/bin/X11/smt.exp"; do
1848     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; break; fi
1849   done
1850   AC_CHECK_LIB(C, terminateAndUnload, XE_APPEND(-lC, libs_system))
1851   fi
1852 elif test -n "$ld_text_start_addr"; then
1853   start_flags="-T $ld_text_start_addr -e __start"
1854 fi
1855 AC_SUBST(start_flags)
1856
1857 AC_SUBST(ld_switch_shared)
1858 AC_SUBST(start_files)
1859 if test "$ordinary_link" = "no" -a "$GCC" = "yes"; then
1860  test -z "$linker" &&  linker='$(CC) -nostdlib'
1861  test -z "$lib_gcc" && lib_gcc='`$(CC) -print-libgcc-file-name`'
1862 fi
1863 test "$GCC" != "yes" && lib_gcc=
1864 AC_SUBST(ld)
1865 AC_SUBST(lib_gcc)
1866
1867 dnl ---------------------------------------------------------------
1868 dnl Add site and system specific flags to compile and link commands
1869 dnl ---------------------------------------------------------------
1870
1871 dnl Allow use of either ":" or spaces for lists of directories
1872 define(COLON_TO_SPACE,
1873   [case "$[$1]" in *:* [)] [$1]="`echo '' $[$1] | sed -e 's/^ //' -e 's/:/ /g'`";; esac])dnl
1874
1875 dnl --site-libraries (multiple dirs)
1876 COLON_TO_SPACE(site_libraries)
1877 if test -n "$site_libraries"; then
1878   for arg in $site_libraries; do
1879     case "$arg" in
1880      -* ) ;;
1881      * ) test -d "$arg" || \
1882            XE_DIE("Invalid site library \`$arg': no such directory")
1883        arg="-L${arg}" ;;
1884     esac
1885     XE_APPEND($arg, ld_switch_site)
1886   done
1887 fi
1888
1889 dnl --site-includes (multiple dirs)
1890 COLON_TO_SPACE(site_includes)
1891 if test -n "$site_includes"; then
1892   for arg in $site_includes; do
1893     case "$arg" in
1894       -* ) ;;
1895       * ) test -d "$arg" || \
1896            XE_DIE("Invalid site include \`$arg': no such directory")
1897       arg="-I${arg}" ;;
1898     esac
1899     XE_APPEND($arg, c_switch_site)
1900   done
1901 fi
1902
1903 dnl --site-prefixes (multiple dirs)
1904 dnl --site-prefixes=dir1:dir2 is a convenient shorthand for
1905 dnl --site-libraries=dir1/lib:dir2/lib --site-includes=dir1/include:dir2/include
1906 dnl Site prefixes take precedence over the standard places, but not over
1907 dnl site-includes and site-libraries.
1908 COLON_TO_SPACE(site_prefixes)
1909 if test -n "$site_prefixes"; then
1910   for dir in $site_prefixes; do
1911     lib_dir="${dir}/lib"
1912     inc_dir="${dir}/include"
1913     if test ! -d "$dir"; then
1914       XE_DIE("Invalid site prefix \`$dir': no such directory")
1915     elif test ! -d "$lib_dir"; then
1916       XE_DIE("Invalid site prefix \`$dir': no such directory \`$lib_dir'")
1917     else
1918       if test -d "$inc_dir"; then
1919         XE_APPEND("-I$inc_dir", c_switch_site)
1920       fi
1921       XE_APPEND("-L$lib_dir", ld_switch_site)
1922     fi
1923   done
1924 fi
1925
1926 dnl GNU software installs by default into /usr/local/{include,lib}
1927 dnl if test -d "/usr/local/include" -a -d "/usr/local/lib"; then
1928 dnl   XE_APPEND("-L/usr/local/lib",    ld_switch_site)
1929 dnl   XE_APPEND("-I/usr/local/include", c_switch_site)
1930 dnl fi
1931
1932 dnl Extra system-specific library directories - please add to list
1933 for dir in "/usr/ccs/lib"; do
1934   test -d "$dir" && XE_APPEND(-L${dir}, ld_switch_site)
1935 done
1936
1937 dnl --site-runtime-libraries (multiple dirs)
1938 COLON_TO_SPACE(site_runtime_libraries)
1939 if test -n "$site_runtime_libraries"; then
1940   LD_RUN_PATH="`echo $site_runtime_libraries | sed -e 's/  */:/g'`"
1941   export LD_RUN_PATH
1942 fi
1943
1944 dnl -------------------------------------
1945 dnl Compute runtime library path
1946 dnl -------------------------------------
1947
1948 if   test "$dynamic" = "no"; then add_runtime_path=no
1949 elif test -n "$LD_RUN_PATH"; then add_runtime_path=yes
1950 else case "$opsys" in
1951        sol2 | irix* | *bsd* | decosf* ) add_runtime_path=yes ;;
1952        * ) add_runtime_path=no ;;
1953      esac
1954 fi
1955
1956 if test "$add_runtime_path" = "yes"; then
1957   dnl Try to autodetect runtime library flag (usually -R),
1958   dnl and whether it works (or at least does no harm)
1959   AC_MSG_CHECKING("for runtime libraries flag")
1960   case "$opsys" in
1961     sol2 ) dash_r="-R" ;;
1962     decosf* | linux* | irix*) dash_r="-rpath " ;;
1963     *)
1964       dash_r=""
1965       for try_dash_r in "-R" "-R " "-rpath "; do
1966         xe_check_libs="${try_dash_r}/no/such/file-or-directory"
1967         XE_PROTECT_LINKER_FLAGS(xe_check_libs)
1968         AC_TRY_LINK(, , dash_r="$try_dash_r")
1969         xe_check_libs=""
1970         test -n "$dash_r" && break
1971       done ;;
1972   esac
1973   if test -n "$dash_r";
1974     then AC_MSG_RESULT("\"${dash_r}\"")
1975     else AC_MSG_RESULT(NONE)
1976   fi
1977 fi
1978
1979 xe_add_unique_runpath_dir='
1980   xe_add_p=yes
1981   for xe_dir in $runpath_dirs; do   dnl Uniquify
1982     test "$xe_dir" = "$xe_runpath_dir" && xe_add_p=no
1983   done
1984   if test "$xe_add_p" = "yes"; then
1985     test -n "$runpath" && runpath="${runpath}:"
1986     runpath="${runpath}${xe_runpath_dir}"
1987     runpath_dirs="$runpath_dirs $xe_runpath_dir"
1988   fi'
1989
1990
1991 dnl XE_ADD_RUNPATH_DIR(directory)
1992 define([XE_ADD_RUNPATH_DIR],[{
1993 xe_runpath_dir=$1
1994 dnl PRINT_VAR(ld_switch_site ld_switch_x_site runpath xe_runpath_dir LD_RUN_PATH xe_ldflags)
1995   test "$xe_runpath_dir" != "/lib"     -a \
1996         "$xe_runpath_dir" != "/usr/lib" -a \
1997         -n "`ls ${xe_runpath_dir}/*.s[[ol]] 2>/dev/null`" && \
1998   eval "$xe_add_unique_runpath_dir"
1999 }])dnl
2000
2001 dnl XE_COMPUTE_RUNPATH()
2002 define([XE_COMPUTE_RUNPATH],[
2003 if test "$add_runtime_path" = "yes" -a -n "$dash_r"; then
2004   dnl Remove runtime paths from current ld switches
2005   ld_switch_site=`echo   '' $ld_switch_site   | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
2006   ld_switch_x_site=`echo '' $ld_switch_x_site | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
2007   dnl PRINT_VAR(ld_switch_site ld_switch_x_site)
2008
2009   dnl Fix up Runtime path
2010   dnl If LD_RUN_PATH is set in environment, use that.
2011   dnl In this case, assume user has set the right value.
2012   runpath="" runpath_dirs=""
2013   if test -n "$LD_RUN_PATH"; then
2014     runpath="$LD_RUN_PATH"
2015   elif test "$GCC" = "yes"; then
2016     dnl Compute runpath from gcc's -v output
2017     ld_switch_run_save="$ld_switch_run"; ld_switch_run=""
2018     echo "int main(int argc, char *argv[[]]) {return 0;}" > conftest.c
2019     xe_runpath_link='${CC-cc} -o conftest -v $CFLAGS '"$xe_ldflags"' conftest.$ac_ext 2>&1 1>/dev/null'
2020     for arg in `eval "$xe_runpath_link" | grep ' -L'`; do
2021       case "$arg" in P,* | -L* | -R* )
2022         for dir in `echo '' "$arg" | sed -e 's:^ ::' -e 's/^..//' -e 'y/:/ /'`; do
2023           XE_ADD_RUNPATH_DIR("$dir")
2024         done ;;
2025       esac
2026     done
2027     ld_switch_run="$ld_switch_run_save"
2028     rm -f conftest*
2029   else
2030     dnl Add all directories with .so files to runpath
2031     for arg in $ld_switch_site $ld_switch_x_site; do
2032       case "$arg" in -L*) XE_ADD_RUNPATH_DIR(`echo '' "$arg" | sed -e 's:^ ::' -e 's/^-L//'`);; esac
2033     done
2034     dnl Sometimes /opt/SUNWdt/lib is the only installed Motif available
2035     if test "$opsys $need_motif" = "sol2 yes"; then
2036       xe_runpath_dir="/opt/SUNWdt/lib";
2037       eval "$xe_add_unique_runpath_dir";
2038     fi
2039   fi dnl Compute $runpath
2040
2041   if test -n "$runpath"; then
2042     ld_switch_run="${dash_r}${runpath}"
2043     XE_PROTECT_LINKER_FLAGS(ld_switch_run)
2044     test "$extra_verbose" = "yes" && echo "Setting runpath to $runpath"
2045   fi
2046 fi
2047 ])dnl
2048 XE_COMPUTE_RUNPATH()
2049
2050 dnl JKJ REMOVEME
2051 dnl XE_SHLIB_STUFF
2052
2053 dnl -----------------------------------
2054 dnl Do some misc autoconf-special tests
2055 dnl -----------------------------------
2056
2057 dnl Do the opsystem or machine files prohibit the use of the GNU malloc?
2058 dnl Assume not, until told otherwise.
2059 GNU_MALLOC=yes
2060 if test "$with_dlmalloc" != "no"; then
2061         doug_lea_malloc=yes
2062 else
2063         doug_lea_malloc=no
2064 fi
2065 after_morecore_hook_exists=yes
2066 AC_CHECK_FUNC(malloc_get_state, ,doug_lea_malloc=no)
2067 AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
2068 AC_MSG_CHECKING(whether __after_morecore_hook exists)
2069 AC_TRY_LINK([extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0],
2070   [AC_MSG_RESULT(yes)],
2071   [AC_MSG_RESULT(no)
2072    after_morecore_hook_exists=no])
2073 if test "$system_malloc" = "yes" ; then
2074   GNU_MALLOC=no
2075   GNU_MALLOC_reason="
2076   (The GNU allocators don't work with this system configuration)."
2077 elif test "$with_system_malloc" = "yes" ; then
2078   GNU_MALLOC=no
2079   GNU_MALLOC_reason="
2080   (User chose not to use GNU allocators)."
2081 elif test "$with_debug_malloc" = "yes" ; then
2082   GNU_MALLOC=no
2083   GNU_MALLOC_reason="
2084   (User chose to use Debugging Malloc)."
2085 fi
2086
2087 if test "$doug_lea_malloc" = "yes" ; then
2088   if test "$GNU_MALLOC" = yes ; then
2089     GNU_MALLOC_reason="
2090   (Using Doug Lea's new malloc from the GNU C Library.)"
2091   fi
2092   AC_DEFINE(DOUG_LEA_MALLOC)
2093   if test "$after_morecore_hook_exists" = "no" ; then
2094     GNU_MALLOC_reason="
2095   (Using Doug Lea's new malloc from the Linux C Library.)"
2096     AC_DEFINE(_NO_MALLOC_WARNING_)
2097   fi
2098   use_minimal_tagbits=yes
2099 fi
2100
2101 dnl #### mcheck is broken in all versions of Linux libc and glibc.
2102 dnl Try this again when 2.1 hits the streets.
2103 dnl Avoid using free-hook.c if support exists for malloc debugging in libc
2104 dnl have_libmcheck=no
2105 dnl if test "$error_check_malloc" = "yes" -a \
2106 dnl    "$have_glibc" = "yes" -a \
2107 dnl    "$doug_lea_malloc" = "yes"; then
2108 dnl   AC_CHECK_HEADERS(mcheck.h)
2109 dnl   AC_CHECK_LIB(mcheck, mcheck, have_libmcheck=yes, have_libmcheck=no)
2110 dnl fi
2111
2112 dnl if test "$have_libmcheck" = "yes"; then
2113 dnl   AC_DEFINE(HAVE_LIBMCHECK)
2114 dnl   libmcheck=-lmcheck
2115 dnl   AC_SUBST(libmcheck)
2116 dnl fi
2117
2118 dnl Some other nice autoconf tests.  If you add a test here which
2119 dnl should make an entry in src/config.h, do not forget to add an
2120 dnl #undef clause to src/config.h.in for autoconf to modify.
2121
2122 AC_PROG_RANLIB
2123 AC_PROG_INSTALL
2124 AC_PROG_YACC
2125
2126 dnl checks for header files
2127 AC_CHECK_HEADERS(mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h)
2128 AC_CHECK_HEADERS(utime.h locale.h libgen.h fcntl.h ulimit.h cygwin/version.h)
2129 AC_CHECK_HEADERS(kstat.h sys/pstat.h inttypes.h sys/un.h a.out.h)
2130 AC_HEADER_SYS_WAIT
2131 AC_HEADER_STDC
2132 AC_HEADER_TIME
2133 AC_DECL_SYS_SIGLIST
2134
2135 dnl Some systems have utime.h but do not declare the struct anyplace.
2136 AC_MSG_CHECKING(for struct utimbuf)
2137 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2138 #include <sys/time.h>
2139 #include <time.h>
2140 #else
2141 #ifdef HAVE_SYS_TIME_H
2142 #include <sys/time.h>
2143 #else
2144 #include <time.h>
2145 #endif
2146 #endif
2147 #ifdef HAVE_UTIME_H
2148 #include <utime.h>
2149 #endif], [static struct utimbuf x; x.actime = x.modtime;],
2150   [AC_MSG_RESULT(yes)
2151    AC_DEFINE(HAVE_STRUCT_UTIMBUF)],
2152   AC_MSG_RESULT(no))
2153
2154 dnl checks for typedefs
2155 AC_TYPE_SIGNAL
2156 AC_TYPE_SIZE_T
2157 AC_TYPE_PID_T
2158 AC_TYPE_UID_T
2159 AC_TYPE_MODE_T
2160 AC_TYPE_OFF_T
2161
2162 AC_MSG_CHECKING(for struct timeval)
2163 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2164 #include <sys/time.h>
2165 #include <time.h>
2166 #else
2167 #ifdef HAVE_SYS_TIME_H
2168 #include <sys/time.h>
2169 #else
2170 #include <time.h>
2171 #endif
2172 #endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
2173   [AC_MSG_RESULT(yes)
2174   HAVE_TIMEVAL=yes
2175   AC_DEFINE(HAVE_TIMEVAL)],
2176   [AC_MSG_RESULT(no)
2177    HAVE_TIMEVAL=no])
2178
2179 dnl checks for structure members
2180 AC_STRUCT_TM
2181 AC_STRUCT_TIMEZONE
2182
2183 dnl checks for compiler characteristics
2184 AC_C_CONST
2185
2186 dnl check for Make feature
2187 AC_PROG_MAKE_SET
2188
2189 dnl check byte order
2190 AC_C_BIGENDIAN
2191
2192 dnl define SIZEOF_TYPE
2193 AC_CHECK_SIZEOF(short)
2194 if test "$ac_cv_sizeof_short" = 0; then
2195   echo ""
2196   echo "*** PANIC *** Configure tests are not working - compiler is broken."
2197   echo "*** PANIC *** Please examine config.log for compilation errors."
2198   exit 1
2199 fi
2200 AC_CHECK_SIZEOF(int)
2201 AC_CHECK_SIZEOF(long)
2202 AC_CHECK_SIZEOF(long long)
2203 AC_CHECK_SIZEOF(void *)
2204
2205 dnl check for long file names
2206 AC_SYS_LONG_FILE_NAMES
2207
2208 dnl -lm is required by LISP_FLOAT_TYPE, among other things
2209 AC_CHECK_FUNC(sin, ,AC_CHECK_LIB(m, sin))
2210
2211 dnl Floating operation support is now unconditional
2212 AC_DEFINE(LISP_FLOAT_TYPE)
2213
2214 AC_TRY_LINK([#include <math.h>],
2215   [return atanh(1.0) + asinh(1.0) + acosh(1.0); ],
2216   AC_DEFINE(HAVE_INVERSE_HYPERBOLIC))
2217
2218 dnl Determine type of mail locking from configure args and s&m headers
2219 AC_CHECKING(type of mail spool file locking)
2220 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
2221 test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
2222 if   test "$mail_locking" = "lockf"; then AC_DEFINE(REAL_MAIL_USE_LOCKF)
2223 elif test "$mail_locking" = "flock"; then AC_DEFINE(REAL_MAIL_USE_FLOCK)
2224 else mail_locking="dot-locking"
2225 fi
2226
2227 case "$opsys" in decosf*)
2228   AC_CHECK_LIB(pthreads, cma_open)
2229   test "$ac_cv_lib_pthreads_cma_open" = "yes" && \
2230     c_switch_site="$c_switch_site -threads" ;;
2231 esac
2232
2233 AC_MSG_CHECKING(whether the -xildoff compiler flag is required)
2234 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
2235   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
2236     then AC_MSG_RESULT(no);
2237     else AC_MSG_RESULT(yes); XE_APPEND(-xildoff, ld_switch_site)
2238   fi
2239   else AC_MSG_RESULT(no)
2240 fi
2241
2242 dnl Link with "-z ignore" on Solaris if supported
2243 if test "$opsys" = "sol2" && test "$OS_RELEASE" -ge 56; then
2244   AC_MSG_CHECKING(for \"-z ignore\" linker flag)
2245   case "`ld -h 2>&1`" in
2246     *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
2247       XE_PREPEND(-z ignore, ld_switch_site) ;;
2248     *) AC_MSG_RESULT(no) ;;
2249   esac
2250 fi
2251
2252 dnl ----------------------
2253 dnl Choose a window system
2254 dnl ----------------------
2255
2256 AC_CHECKING("for specified window system")
2257
2258 if test "$with_x11" != "no"; then
2259   dnl User-specified --x-includes or --x-libraries implies --with-x11.
2260   test "$x_includes $x_libraries" != "NONE NONE" && \
2261    window_system=x11 with_x11=yes
2262
2263   dnl Autodetection of X11 libraries and includes
2264   dnl -------------------------------------------
2265   dnl AC_PATH_XTRA thinks it can find our X headers and includes, but
2266   dnl it often gets it wrong, so we only use it as a last resort.
2267
2268   dnl $OPENWINHOME implies --x-includes and --x-libraries
2269   dnl Not (yet) handled by autoconf2
2270   if test "$x_includes $x_libraries" = "NONE NONE" \
2271     -a -n "$OPENWINHOME" \
2272     -a "$OPENWINHOME" != "/usr/openwin" \
2273     -a -d "$OPENWINHOME"; then
2274       test -d "$OPENWINHOME/lib"           && x_libraries="$OPENWINHOME/lib"
2275       test -d "$OPENWINHOME/include"       && x_includes="$OPENWINHOME/include"
2276       test -d "$OPENWINHOME/share/include" && x_includes="$OPENWINHOME/share/include"
2277   fi
2278
2279   if test "$x_includes" = "NONE"; then
2280     dnl AC_PATH_XTRA often guesses /usr/include, when some other
2281     dnl include directory is a MUCH better guess (Linux, HP-UX 10.20).
2282     dnl This is a workaround for idiot (esp. HP) system vendors, who
2283     dnl provide a /usr/include/X11, but DON'T FULLY POPULATE IT.
2284     for dir in "/usr/X11" "/usr/X11R6"; do
2285       if test -d "$dir/include/X11"; then x_includes="$dir/include"; break; fi
2286     done
2287   fi
2288
2289   if test "$x_libraries" = "NONE"; then
2290     for dir in "/usr/X11/lib" "/usr/X11R6/lib" "/usr/lib/X11R6"; do
2291       if test -r "$dir/libX11.a"; then x_libraries="$dir"; break; fi
2292     done
2293   fi
2294
2295   AC_PATH_XTRA # Autoconf claims to find X library and include dirs for us.
2296   if test "$no_x" = "yes"
2297   then with_x11=no  window_system=none HAVE_X_WINDOWS=no
2298   else with_x11=yes window_system=x11  HAVE_X_WINDOWS=yes
2299   fi
2300 fi
2301
2302 case "$with_x11" in
2303   yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
2304   no  ) window_system=none HAVE_X_WINDOWS=no  ;;
2305 esac
2306
2307 if test "$with_x11" = "yes"; then
2308   AC_DEFINE(HAVE_X_WINDOWS)
2309   XE_APPEND(lwlib, MAKE_SUBDIR)
2310   XE_APPEND(lwlib, SRC_SUBDIR_DEPS)
2311
2312   dnl Try to find Motif/CDE/Tooltalk dirs
2313   dnl These take precedence over other X libs/includes, so PRE-pend
2314   for lib_dir in "/usr/dt/lib" "/usr/lib/Motif2.1" "/usr/lib/Motif1.2" "/usr/lib/Motif1.1"; do
2315     inc_dir=`echo $lib_dir | sed -e 's/lib/include/'`
2316     if test -d "$lib_dir" -a -d "$inc_dir"; then
2317       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2318         x_libraries="$lib_dir $x_libraries"
2319         XE_PREPEND(-L${lib_dir}, X_LIBS) ;;
2320       esac
2321       case "$x_includes" in "$inc_dir"* ) ;; *)
2322         x_includes="$inc_dir $x_includes"
2323         XE_PREPEND(-I${inc_dir}, X_CFLAGS) ;;
2324       esac
2325       break; dnl only need ONE Motif implementation!
2326       fi
2327   done
2328
2329   dnl Contrib X libs/includes do NOT take precedence, so AP-pend
2330   for rel in "X11R6" "X11R5" "X11R4"; do
2331     lib_dir="/usr/contrib/$rel/lib" inc_dir="/usr/contrib/$rel/include"
2332     if test -d "$lib_dir" -a -d "$inc_dir"; then
2333       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2334         x_libraries="$x_libraries $lib_dir"
2335         XE_APPEND(-L${lib_dir}, X_LIBS)
2336       esac
2337       case "$x_includes" in "$inc_dir"* ) ;; *)
2338         x_includes="$x_includes $inc_dir"
2339         XE_APPEND(-I${inc_dir}, X_CFLAGS)
2340       esac
2341       break; dnl Only need ONE X11 implementation !
2342     fi
2343   done
2344
2345   dnl Avoid version mismatch for shared library libXm.so on osf4
2346   if test "$GCC" = yes -a -d /usr/shlib; then XE_APPEND(-L/usr/shlib, X_LIBS); fi
2347
2348   ld_switch_x_site="$X_LIBS"
2349
2350   XE_COMPUTE_RUNPATH()
2351
2352   if test "$extra_verbose" = "yes"; then
2353     echo; echo "X11 compilation variables:"
2354     PRINT_VAR(x_libraries x_includes X_CFLAGS X_LIBS X_PRE_LIBS X_EXTRA_LIBS)
2355     echo
2356   fi
2357
2358   dnl Set up bitmaps search path.
2359   dnl The original suggestion was to unconditionally to append X11/bitmaps
2360   dnl to each element of $x_includes, I'm pretty sure this is the wrong
2361   dnl thing to do.  We test for bitmaps and X11/bitmaps directories on each
2362   dnl element and add them to BITMAPDIR if they exist.
2363   bitmapdirs=
2364   if test "$x_includes" != NONE; then
2365     for i in $x_includes; do
2366       if test -d "$i/bitmaps"; then
2367         bitmapdirs="$i/bitmaps:$bitmapdirs"
2368       fi
2369       if test -d "$i/X11/bitmaps"; then
2370         bitmapdirs="$i/X11/bitmaps:$bitmapdirs"
2371       fi
2372     done
2373     bitmapdirs=`echo "$bitmapdirs" | sed s/.$//`
2374   fi
2375   test ! -z "$bitmapdirs" && AC_DEFINE_UNQUOTED(BITMAPDIR, "$bitmapdirs")
2376
2377   dnl Autodetect defines extracted from X config by xmkmf, e.g. NARROWPROTO
2378   AC_CHECKING(for X defines extracted by xmkmf)
2379   rm -fr conftestdir
2380   if mkdir conftestdir; then
2381     cd conftestdir
2382     cat > Imakefile <<'EOF'
2383 xetest:
2384         @echo ${PROTO_DEFINES} ${STD_DEFINES}
2385 EOF
2386     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2387       # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2388       xmkmf_defines=`${MAKE-make} xetest 2>/dev/null | grep -v make`
2389     fi
2390     cd ..
2391     rm -fr conftestdir
2392     for word in $xmkmf_defines; do
2393       case "$word" in
2394         -D*=* ) ;;
2395         -D* ) word=`echo '' $word | sed -e 's:^ *-D::'`
2396               AC_DEFINE_UNQUOTED($word) ;;
2397       esac
2398     done
2399   fi
2400
2401   dnl make sure we can find Intrinsic.h
2402   AC_CHECK_HEADER(X11/Intrinsic.h, ,
2403    [AC_MSG_ERROR("Unable to find X11 header files.")])
2404
2405   dnl -lXt and -lX11 are required
2406   dnl Some broken systems require the magic "-b i486-linuxaout" flag
2407   AC_CHECK_LIB(X11, XOpenDisplay, have_lib_x11=yes)
2408   if test "$have_lib_x11" != "yes"; then
2409     AC_CHECK_LIB(X11, XGetFontProperty,
2410       ld_switch_x_site="-b i486-linuxaout $ld_switch_x_site",
2411       [AC_MSG_ERROR("Unable to find X11 libraries.")],
2412       -b i486-linuxaout)
2413   fi
2414   libs_x="-lX11"
2415   test "$extra_verbose" = "yes" && echo "    Setting libs_x to \"-lX11\""
2416
2417   dnl Autodetect -lXext
2418   AC_CHECK_LIB(Xext, XShapeSelectInput, XE_PREPEND(-lXext, libs_x))
2419
2420   dnl Require -lXt
2421   AC_CHECK_LIB(Xt, XtOpenDisplay, XE_PREPEND(-lXt, libs_x),
2422     AC_MSG_ERROR("Unable to find X11 libraries."))
2423
2424   AC_MSG_CHECKING(the version of X11 being used)
2425   AC_TRY_RUN([#include <X11/Intrinsic.h>
2426     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }],
2427     [./conftest foobar; x11_release=$?],[x11_release=4],[x11_release=4])
2428   AC_MSG_RESULT(R${x11_release})
2429   AC_DEFINE_UNQUOTED(THIS_IS_X11R${x11_release})
2430
2431   AC_CHECK_HEADERS(X11/Xlocale.h)
2432
2433   dnl remove this - we should avoid checking for specific OS
2434   AC_MSG_CHECKING(for XFree86)
2435   if test -d "/usr/X386/include" -o \
2436           -f "/etc/XF86Config"    -o \
2437           -f "/etc/X11/XF86Config" -o \
2438           -f "/usr/X11R6/lib/X11/XF86Config"; then
2439     AC_MSG_RESULT(yes)
2440     AC_DEFINE(HAVE_XFREE386)
2441   else
2442     AC_MSG_RESULT(no)
2443   fi
2444
2445   dnl autodetect -lXmu
2446   test -z "$with_xmu" && { AC_CHECK_LIB(Xmu, XmuReadBitmapDataFromFile,
2447                            with_xmu=yes, with_xmu=no) }
2448   if test "$with_xmu" = "no"; then
2449     XE_ADD_OBJS(xmu.o)
2450   else
2451     XE_PREPEND(-lXmu, libs_x)
2452     AC_DEFINE(HAVE_XMU)
2453   fi
2454
2455   dnl Autodetect -lXbsd
2456   dnl #### Someone, please add a better function than main
2457   AC_CHECK_LIB(Xbsd, main, XE_PREPEND(-lXbsd, libs_x))
2458
2459   dnl Problem with the MIT distribution of X on AIX
2460   if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then
2461     dnl X11R6 requires thread-safe code on AIX for some reason
2462     if test "$GCC" = "yes"; then
2463       XE_PREPEND(-mthreads, X_CFLAGS)
2464       XE_PREPEND(-mthreads, libs_x)
2465     else
2466       case "$CC" in
2467         "xlc" ) CC="xlc_r" ;;
2468         "xlC" ) CC="xlC_r" ;;
2469         "cc"  ) CC="cc_r" ;;
2470       esac
2471     fi
2472   fi
2473
2474 fi dnl $with_x11 = yes
2475
2476 if test "$with_msw" != "no"; then
2477   AC_CHECKING(for MS-Windows)
2478   AC_CHECK_LIB(gdi32,main,with_msw=yes)
2479   if test "$with_msw" = "yes"; then
2480     AC_DEFINE(HAVE_MS_WINDOWS)
2481     install_pp="$blddir/lib-src/installexe.sh"
2482     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomctl32, libs_system)
2483     test "$with_dragndrop" != no && XE_APPEND(msw, dragndrop_proto)
2484     if test "$window_system" != x11; then
2485         window_system=msw
2486         test "$with_scrollbars" != "no" && with_scrollbars=msw \
2487             && XE_ADD_OBJS(scrollbar-msw.o)
2488         test "$with_menubars"   != "no" && with_menubars=msw \
2489             && XE_ADD_OBJS(menubar-msw.o)
2490         test "$with_toolbars"   != "no" && with_toolbars=msw \
2491             && XE_ADD_OBJS(toolbar-msw.o)
2492         test "$with_dialogs"   != "no" && with_dialogs=msw \
2493             && XE_ADD_OBJS(dialog-msw.o)
2494         test "$with_widgets"   != "no" && with_widgets=msw
2495     else
2496         test "$with_scrollbars" != "no" && XE_ADD_OBJS(scrollbar-msw.o)
2497         test "$with_menubars"   != "no" && XE_ADD_OBJS(menubar-msw.o)
2498         test "$with_toolbars"   != "no" && XE_ADD_OBJS(toolbar-msw.o)
2499         test "$with_dialogs"    != "no" && XE_ADD_OBJS(dialog-msw.o)
2500     fi
2501     dnl check for our special version of select
2502     AC_TRY_RUN([#include <fcntl.h>
2503     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }],
2504     [AC_DEFINE(HAVE_MSG_SELECT)])
2505     const_is_losing=no
2506     with_file_coding=yes
2507     XE_ADD_OBJS(console-msw.o device-msw.o event-msw.o frame-msw.o objects-msw.o select-msw.o redisplay-msw.o glyphs-msw.o gui-msw.o)
2508   fi
2509 fi
2510
2511 AC_SUBST(install_pp)
2512
2513 test -z "$window_system" && window_system="none"
2514
2515 dnl Test for features that require a window system - ANY window system
2516 if test "$window_system" = "none"; then
2517   for feature in menubars scrollbars toolbars dialogs dragndrop xface
2518   do
2519     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2520        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
2521     fi
2522     eval "with_${feature}=no"
2523   done
2524 else
2525   test -z "$with_toolbars" && with_toolbars=yes
2526 fi
2527
2528 dnl ### Test for features that require mswindows support - currently none
2529 dnl ### MS-Windows folks: add code here..... (martin)
2530 if test "$with_msw" != "yes"; then
2531   for feature in   MARTIN_IS_CLUELESS_ABOUT_MSW_FEATURES
2532   do
2533     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2534        AC_MSG_WARN([--with-$feature ignored:  Not valid without MS-Windows support])
2535     fi
2536     eval "with_${feature}=no"
2537   done
2538 else
2539   :
2540 fi
2541
2542 dnl Test for features that require X11 support
2543 if test "$with_x11" != "yes"; then
2544   dnl It ought to be reasonable to have no output device at all, and only use
2545   dnl XEmacs in --batch mode.
2546   dnl if test "$with_tty" = "no" ; then
2547   dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
2548   dnl fi
2549   for feature in tooltalk cde offix wmcommand xim xmu
2550   do
2551     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2552        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
2553     fi
2554     eval "with_${feature}=no"
2555   done
2556 fi
2557
2558 dnl FSF 19.29 has some bitmapdir stuff here.
2559 bitmapdir=
2560
2561 case "$window_system" in
2562   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
2563   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
2564   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
2565 esac
2566
2567 case "$x_libraries" in *X11R4* )
2568   test "$opsys" = "hpux9"     && opsysfile="s/hpux9-x11r4.h"
2569   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
2570 esac
2571
2572 dnl Enable or disable proper handling of WM_COMMAND
2573 AC_CHECKING(for WM_COMMAND option);
2574 dnl if test "$with_wmcommand" = "yes"; then
2575 if test "$with_wmcommand" != "no"; then
2576   AC_DEFINE(HAVE_WMCOMMAND)
2577 fi
2578
2579 dnl Autodetect Xauth
2580 dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
2581 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
2582 test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h,          ,with_xauth=no) }
2583 test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no) }
2584 test -z "$with_xauth" && with_xauth=yes
2585 if test "$with_xauth" = "yes"; then
2586   AC_DEFINE(HAVE_XAUTH)
2587   XE_SPACE(libs_xauth, $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
2588 fi
2589 AC_SUBST(libs_xauth)
2590
2591 dnl This one is for the static initializeds variables in
2592 dnl offix.c, so that the thing is dumped after lastfile.o
2593 AC_SUBST(dnd_objs)
2594
2595 dnl Autodetect tooltalk
2596 if test "$with_tooltalk" != "no" ; then
2597   dnl autodetect the location of tt_c.h
2598   dnl tt_c.h might be in Tt or desktop include directories
2599   for dir in "" "Tt/" "desktop/" ; do
2600     AC_CHECK_HEADER(${dir}tt_c.h, tt_c_h_path="${dir}tt_c.h"; break)
2601   done
2602   if test -z "$tt_c_h_path"; then
2603     if test "$with_tooltalk" = "yes"; then
2604       USAGE_ERROR("Unable to find required tooltalk header files.")
2605     fi
2606     with_tooltalk=no
2607   fi
2608 fi
2609 if test "$with_tooltalk" != "no" ; then
2610   for extra_libs in "" "-lI18N -lce" "-lcxx"; do
2611     AC_CHECK_LIB(tt, tt_message_create,
2612       tt_libs="-ltt $extra_libs"; break, [:],$extra_libs)
2613   done
2614   if test -z "$tt_libs"; then
2615     if test "$with_tooltalk" = "yes"; then
2616       USAGE_ERROR("Unable to find required tooltalk libraries.")
2617     fi
2618     with_tooltalk=no
2619   fi
2620 fi
2621 test -z "$with_tooltalk" && with_tooltalk=yes
2622 if test "$with_tooltalk" = "yes"; then
2623   AC_DEFINE(TOOLTALK)
2624   AC_DEFINE_UNQUOTED(TT_C_H_PATH, "$tt_c_h_path")
2625   XE_PREPEND($tt_libs, libs_x)
2626   XE_ADD_OBJS(tooltalk.o)
2627 fi
2628
2629 dnl Autodetect CDE
2630 test -z "$with_cde" && { AC_CHECK_HEADER(Dt/Dt.h,               , with_cde=no) }
2631 test -z "$with_cde" && { AC_CHECK_LIB(DtSvc, DtDndDragStart, [:], with_cde=no) }
2632 test -z "$with_cde" && with_cde=yes
2633 if test "$with_dragndrop" = no; then
2634   AC_MSG_WARN([No CDE without generic Drag'n'Drop support])
2635   with_cde=no
2636 fi
2637 if test "$with_cde" = "yes" ; then
2638   AC_DEFINE(HAVE_CDE)
2639   XE_PREPEND(-lDtSvc, libs_x)
2640   XE_APPEND(CDE, dragndrop_proto)
2641   with_tooltalk=yes # CDE requires Tooltalk
2642   need_motif=yes    # CDE requires Motif
2643 fi
2644
2645 dnl Always compile OffiX unless --without-offix is given, no
2646 dnl X11 support is compiled in, no standard Xmu is available,
2647 dnl or dragndrop support is disabled
2648 dnl Because OffiX support currently loses when more than one display
2649 dnl is in use, we now disable it by default -slb 07/10/1998.
2650 test "$window_system" != "x11" && with_offix=no
2651 if test "$with_xmu" != yes -a "$with_x11" = yes; then
2652   AC_MSG_WARN([No OffiX without real Xmu support])
2653   with_offix=no
2654 fi
2655 if test "$with_dragndrop" = no; then
2656   AC_MSG_WARN([No OffiX without generic Drag'n'Drop support])
2657   with_offix=no
2658 fi
2659 if test "$with_cde" = yes; then
2660   AC_MSG_WARN([CDE already found, disabling OffiX support])
2661   with_offix=no
2662 fi
2663 test -z "$with_offix" && with_offix=no
2664 if test "$with_offix" = "yes"; then
2665   AC_DEFINE(HAVE_OFFIX_DND)
2666   XE_APPEND(offix.o, dnd_objs)
2667   XE_APPEND(OffiX, dragndrop_proto)
2668 fi
2669
2670 dnl Autodetect Drag'n'Drop support
2671 dnl always included if CDE, Offix, or MSWindows are defined
2672 AC_MSG_CHECKING(if drag and drop API is needed)
2673 if test "$with_dragndrop" != "no" ; then
2674   if test -n "$dragndrop_proto" ; then
2675     with_dragndrop=yes
2676     AC_MSG_RESULT([yes (${dragndrop_proto} )])
2677     AC_DEFINE(HAVE_DRAGNDROP)
2678     XE_APPEND(dragdrop.o, extra_objs)
2679   else
2680     with_dragndrop=no
2681     AC_MSG_RESULT(no)
2682   fi
2683 fi
2684
2685 dnl Autodetect LDAP
2686 AC_CHECKING(for LDAP)
2687 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
2688 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
2689 if test "$with_ldap" != "no"; then
2690   AC_CHECK_LIB(ldap, ldap_search, with_ldap_nolber=yes, with_ldap_nolber=no)
2691   test "$with_ldap_nolber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_lber=yes, with_ldap_lber=no, -llber) }
2692   test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_krb=yes, with_ldap_krb=no, -llber -lkrb) }
2693   test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" -a "$with_ldap_krb" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_krbdes=yes, with_ldap_krbdes=no, -llber -lkrb -ldes) }
2694   test -z "$with_ldap" -a \( "$with_ldap_lber" = "yes" -o "$with_ldap_nolber" = "yes" -o "$with_ldap_krb" = "yes" -o "$with_ldap_krbdes" = "yes" \) && with_ldap=yes
2695 fi
2696 if test "$with_ldap" = "yes"; then
2697   AC_DEFINE(HAVE_LDAP)
2698   XE_ADD_OBJS(eldap.o)
2699   if test "$with_ldap_nolber" = "yes" ; then
2700     XE_PREPEND(-lldap, LIBS)
2701   else
2702     if test "$with_ldap_krb" = "yes" ; then
2703       XE_PREPEND(-lkrb, LIBS)
2704     fi
2705     if test "$with_ldap_krbdes" = "yes" ; then
2706       XE_PREPEND(-ldes, LIBS)
2707       XE_PREPEND(-lkrb, LIBS)
2708     fi
2709     XE_PREPEND(-llber, LIBS)
2710     XE_PREPEND(-lldap, LIBS)
2711   fi
2712   AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result)
2713 fi
2714
2715 dnl ----------------------
2716 dnl Graphics libraries
2717 dnl ----------------------
2718
2719 if test "$window_system" != "none"; then
2720   AC_CHECKING(for graphics libraries)
2721
2722   dnl Autodetect Xpm
2723   xpm_problem=""
2724   if test -z "$with_xpm"; then
2725     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
2726     xe_check_libs=-lXpm
2727     AC_TRY_RUN([#include <X11/xpm.h>
2728     int main(int c, char **v) {
2729     return c == 1 ? 0 :
2730       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
2731       XpmIncludeVersion < 30406 ? 2 : 0 ;}],
2732     [./conftest dummy_arg; xpm_status=$?;
2733       if test "$xpm_status" = "0"; then
2734         with_xpm=yes;
2735       else
2736         with_xpm=no;
2737         if test "$xpm_status" = "1"; then
2738           xpm_problem="Xpm library version and header file version don't match!"
2739         elif test "$xpm_status" = "2"; then
2740           xpm_problem="Xpm library version is too old!"
2741         else
2742           xpm_problem="Internal xpm detection logic error!"
2743         fi
2744         echo "
2745 *** WARNING *** $xpm_problem
2746   I'm not touching that with a 10-foot pole!
2747   If you really want to use the installed version of Xpm, rerun
2748   configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!"
2749     fi],
2750     [with_xpm=no])
2751     xe_check_libs=
2752     AC_MSG_RESULT($with_xpm)
2753   fi
2754   if test "$with_xpm" = "yes"; then
2755     AC_DEFINE(HAVE_XPM)
2756     XE_PREPEND(-lXpm, libs_x)
2757     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
2758     xe_check_libs=-lXpm
2759     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
2760     [xpm_for_msw=no],
2761     [xpm_for_msw=yes])
2762     xe_check_libs=
2763     AC_MSG_RESULT($xpm_for_msw)
2764     if test "$xpm_for_msw" = "yes"; then
2765       AC_DEFINE(FOR_MSW)
2766     fi
2767   fi
2768
2769   dnl Autodetect XFACE
2770   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
2771   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
2772   test -z "$with_xface" && with_xface=yes
2773   if test "$with_xface" = "yes"; then
2774     AC_DEFINE(HAVE_XFACE)
2775     XE_PREPEND(-lcompface, libs_x)
2776   fi
2777
2778   dnl For a brief period we had the GIF code split out into a separate library,
2779   dnl but patent problems, etc. sort of squashed that idea.
2780   dnl We default to building with builtin GIF decoding
2781   if test "$with_gif" != "no"; then
2782     with_gif="yes"
2783     AC_DEFINE(HAVE_GIF)
2784     XE_ADD_OBJS(dgif_lib.o gif_io.o)
2785   fi
2786
2787   dnl Too many stupid linkers can't detect cascaded lib dependencies until runtime
2788   dnl So we always search for libz compression support.
2789   if test "$with_png $with_tiff" != "no no"; then
2790     AC_CHECK_LIB(c,  inflate, [:], [
2791     AC_CHECK_LIB(z,  inflate, [XE_PREPEND(-lz,  libs_x)],[
2792     AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])])
2793   fi
2794
2795   dnl autodetect JPEG
2796   test -z "$with_jpeg" && { AC_CHECK_HEADER(jpeglib.h,                    ,with_jpeg=no) }
2797   test -z "$with_jpeg" && { AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,[:],with_jpeg=no) }
2798   test -z "$with_jpeg" && with_jpeg=yes
2799   if test "$with_jpeg" = "yes"; then
2800     AC_DEFINE(HAVE_JPEG)
2801     XE_PREPEND(-ljpeg, libs_x)
2802   fi
2803
2804   dnl autodetect PNG
2805   png_problem=""
2806   test -z "$with_png" && { AC_CHECK_FUNC(pow,                  ,with_png=no) }
2807   test -z "$with_png" && { AC_CHECK_HEADER(png.h,              ,with_png=no) }
2808   test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) }
2809   if test -z "$with_png"; then
2810     AC_MSG_CHECKING(for workable png version information)
2811     xe_check_libs="-lpng -lz"
2812     AC_TRY_RUN([#include <png.h>
2813     int main(int c, char **v) {
2814     if (c == 1) return 0;
2815     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
2816     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}],
2817     [./conftest dummy_arg; png_status=$?;
2818       if test "$png_status" = "0"; then
2819         with_png=yes;
2820       else
2821         with_png=no;
2822         if test "$png_status" = "1"; then
2823           png_problem="PNG library version and header file don't match!"
2824         elif test "$png_status" = "2"; then
2825           png_problem="PNG library version too old (pre 1.0.2)!"
2826         fi
2827         echo "
2828 *** WARNING *** $png_problem
2829   I'm not touching that with a 10-foot pole!
2830   If you really want to use the installed version of libPNG, rerun
2831   configure and add '--with-png=yes', but don't blame me if XEmacs crashes!"
2832     fi],
2833     [with_png=no])
2834     xe_check_libs=
2835     AC_MSG_RESULT($with_png)
2836   fi
2837   if test "$with_png" = "yes"; then
2838     AC_DEFINE(HAVE_PNG)
2839     XE_PREPEND(-lpng, libs_x)
2840   fi
2841
2842   dnl autodetect TIFF
2843   test -z "$with_tiff" && { AC_CHECK_HEADER(tiffio.h,            ,with_tiff=no) }
2844   test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no) }
2845   test -z "$with_tiff" && with_tiff=yes
2846   if test "$with_tiff" = "yes"; then
2847     AC_DEFINE(HAVE_TIFF)
2848     XE_PREPEND(-ltiff, libs_x)
2849   fi
2850 fi
2851
2852 dnl ----------------------
2853 dnl X-Specific Graphics libraries
2854 dnl ----------------------
2855
2856 if test "$with_x11" = "yes"; then
2857
2858   AC_CHECKING(for X11 graphics libraries)
2859
2860   dnl Autodetect -lXaw
2861   AC_CHECK_LIB(Xaw, XawScrollbarSetThumb, have_xaw=yes, have_xaw=no)
2862   dnl if test "$have_xaw" = "yes"; then
2863     dnl AC_CHECK_HEADER(X11/Xaw/Reports.h, [
2864       dnl XE_APPEND(pkg-src/tree-x, MAKE_SUBDIR)
2865       dnl XE_APPEND(pkg-src/tree-x, INSTALL_ARCH_DEP_SUBDIR)])
2866   dnl fi
2867
2868   dnl Autodetect -lXaw3d
2869   AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb, have_xaw3d=yes, have_xaw3d=no)
2870
2871   dnl autodetect Motif - but only add to libs_x later (if necessary)
2872   AC_CHECK_HEADER(Xm/Xm.h,
2873    [AC_CHECK_LIB(Xm, XmStringFree, have_motif=yes, have_motif=no)],
2874    have_motif=no)
2875
2876   if test "$have_motif" = "yes"; then
2877     dnl autodetect lesstif
2878     AC_MSG_CHECKING(for Lesstif)
2879     AC_EGREP_CPP(yes,
2880 [#include <Xm/Xm.h>
2881 #ifdef LESSTIF_VERSION
2882 yes
2883 #endif
2884 ], have_lesstif=yes, have_lesstif=no)
2885   AC_MSG_RESULT($have_lesstif)
2886   fi
2887
2888 fi dnl "$with_x11" = "yes"
2889
2890 dnl Finish ensuring that we have values for the various toolkit items.
2891 dnl Not all toolkits support all widgets
2892 dnl if Motif is available we use it for the dialog boxes.
2893
2894 case "$with_menubars" in "" | "yes" | "athena" | "athena3d" )
2895   with_menubars="lucid" ;;
2896 esac
2897 case "$with_dialogs" in "" | "yes" | "lucid" )
2898   if   test "$have_motif" = "yes"; then with_dialogs="motif"
2899   elif test "$have_xaw3d" = "yes"; then with_dialogs="athena3d"
2900   elif test "$have_xaw"   = "yes"; then with_dialogs="athena"
2901   else with_dialogs=no
2902   fi ;;
2903 esac
2904 case "$with_scrollbars" in "" | "yes" )
2905   with_scrollbars="lucid" ;;
2906 esac
2907 case "$with_widgets" in "" | "yes" | "lucid")
2908   if   test "$have_motif" = "yes"; then with_widgets="motif"
2909   elif test "$have_xaw3d" = "yes"; then with_widgets="athena3d"
2910   elif test "$have_xaw"   = "yes"; then with_widgets="athena"
2911   else with_widgets=no
2912   fi ;;
2913 esac
2914
2915 all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars $with_widgets"
2916
2917 case "$all_widgets" in
2918  *athena*3d )
2919   AC_DEFINE(LWLIB_USES_ATHENA)
2920   AC_DEFINE(NEED_ATHENA)
2921   XE_APPEND(lwlib-Xaw.o, lwlib_objs)
2922   if test "$have_xaw3d"; then
2923     XE_PREPEND(-lXaw3d, libs_x) 
2924   else
2925     XE_PREPEND(-lXaw, libs_x)
2926   fi ;;
2927  *athena* )
2928   AC_DEFINE(LWLIB_USES_ATHENA)
2929   AC_DEFINE(NEED_ATHENA)
2930   XE_APPEND(lwlib-Xaw.o, lwlib_objs)
2931   XE_PREPEND(-lXaw, libs_x) ;;
2932 esac
2933
2934 case "$all_widgets" in *motif* )
2935   AC_DEFINE(LWLIB_USES_MOTIF)
2936   AC_DEFINE(NEED_MOTIF)
2937   XE_APPEND(lwlib-Xm.o, lwlib_objs)
2938   need_motif=yes ;;
2939 esac
2940
2941 test "$with_menubars"   = "lucid" && XE_APPEND(xlwmenu.o, lwlib_objs)
2942 test "$with_menubars"   = "motif" && XE_APPEND(xlwmenu.o, lwlib_objs)
2943 test "$with_scrollbars" = "lucid" && XE_APPEND(xlwscrollbar.o, lwlib_objs)
2944 test "$with_widgets"   != "no" && test "$with_widgets" != "msw" && \
2945         XE_APPEND(xlwtabs.o xlwgcs.o, lwlib_objs)
2946 case "$with_widgets" in athena* )
2947         XE_APPEND(xlwradio.o xlwcheckbox.o xlwgauge.o, lwlib_objs);;
2948 esac
2949 case "$all_widgets" in *lucid* )
2950   AC_DEFINE(NEED_LUCID)
2951   XE_APPEND(lwlib-Xlw.o, lwlib_objs) ;;
2952 esac
2953
2954 AC_SUBST(lwlib_objs)
2955
2956 case "$with_scrollbars" in athena* ) AC_DEFINE(LWLIB_SCROLLBARS_ATHENA);; esac
2957 case "$with_dialogs"    in athena* ) AC_DEFINE(LWLIB_DIALOGS_ATHENA)   ;; esac
2958 test "$with_scrollbars" = "athena3d" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
2959 test "$with_dialogs"    = "athena3d" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
2960 case "$with_widgets" in athena* ) AC_DEFINE(LWLIB_WIDGETS_ATHENA);; esac
2961 test "$with_widgets" != "no" && test "$with_widgets" != "msw" && \
2962         AC_DEFINE(LWLIB_TABS_LUCID)
2963
2964 test "$with_menubars"   != "no"    && AC_DEFINE(HAVE_MENUBARS)
2965 test "$with_scrollbars" != "no"    && AC_DEFINE(HAVE_SCROLLBARS)
2966 test "$with_dialogs"    != "no"    && AC_DEFINE(HAVE_DIALOGS)
2967 test "$with_toolbars"   != "no"    && AC_DEFINE(HAVE_TOOLBARS)
2968 test "$with_widgets"   != "no"    && AC_DEFINE(HAVE_WIDGETS)
2969
2970 test "$with_menubars"   = "lucid"  && AC_DEFINE(LWLIB_MENUBARS_LUCID)
2971 test "$with_scrollbars" = "lucid"  && AC_DEFINE(LWLIB_SCROLLBARS_LUCID)
2972
2973 test "$with_menubars"   = "motif"  && AC_DEFINE(LWLIB_MENUBARS_MOTIF)
2974 test "$with_scrollbars" = "motif"  && AC_DEFINE(LWLIB_SCROLLBARS_MOTIF)
2975 test "$with_dialogs"    = "motif"  && AC_DEFINE(LWLIB_DIALOGS_MOTIF)
2976 test "$with_widgets"    = "motif"  && AC_DEFINE(LWLIB_WIDGETS_MOTIF)
2977
2978 test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar.o)
2979 test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar.o)
2980 test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog.o)
2981 test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar.o)
2982
2983 if test "$with_x11" = "yes"; then
2984   test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar-x.o)
2985   test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar-x.o)
2986   test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog-x.o)
2987   test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar-x.o)
2988   test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-x.o)
2989 else
2990   if test \( "$with_sound" = "nas" \) -o \( "$with_sound" = "both" \); then
2991     echo "Attempt to Build NAS sound without X"
2992     echo "Please remove NAS configuration or build with X"
2993     exit 1
2994   fi
2995 fi
2996
2997 dnl ----------------------
2998 dnl Mule-dependent options
2999 dnl ----------------------
3000
3001 test -z "$with_mule" && with_mule=no
3002 test -z "$with_file_coding" && with_file_coding=no
3003
3004 dnl if test "$with_mule" = "yes" && test ! -d "$srcdir/lisp/mule"; then
3005 dnl     echo "Attempt to Build with Mule without Mule/Lisp"
3006 dnl     echo "Please install the XEmacs/Mule tarball or"
3007 dnl     echo "rerun configure with --with-mule=no"
3008 dnl     exit 1
3009 dnl fi
3010
3011 if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then
3012   AC_DEFINE(FILE_CODING)
3013   XE_ADD_OBJS(file-coding.o)
3014 fi
3015
3016 if test "$with_mule" = "yes" ; then
3017   AC_CHECKING(for Mule-related features)
3018   AC_DEFINE(MULE)
3019   AC_DEFINE(FILE_CODING)
3020   XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o file-coding.o)
3021
3022   dnl Use -lintl to get internationalized strerror for Mule
3023   AC_CHECK_HEADERS(libintl.h)
3024   AC_CHECK_LIB(intl, strerror)
3025
3026   AC_CHECKING(for Mule input methods)
3027   dnl Do we have the XmIm* routines?  And if so, do we want to use them?
3028   dnl XIM seems to be flaky except on Solaris...
3029   dnl test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no
3030   case "$with_xim" in "" | "yes" )
3031     AC_CHECKING(for XIM)
3032     AC_CHECK_LIB(X11, XOpenIM, with_xim=xlib, with_xim=no)
3033     dnl XIM + Lesstif is not (yet?) usable
3034     if test "$have_motif $have_lesstif" = "yes no"; then
3035       AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
3036     fi ;;
3037   esac
3038   if test "$with_xim" != "no"; then
3039     AC_DEFINE(HAVE_XIM)
3040     if test "$with_xim" = "xlib"; then
3041       AC_DEFINE(XIM_XLIB)
3042       XE_ADD_OBJS(input-method-xlib.o)
3043     fi
3044     if test "$with_xim" = "motif"; then
3045       AC_DEFINE(XIM_MOTIF)
3046       need_motif=yes
3047       XE_ADD_OBJS(input-method-motif.o)
3048     fi
3049     if test "$with_xim" = "motif"; then
3050       with_xfs=no
3051     fi
3052   fi
3053
3054   dnl "with_xfs" = "yes"
3055   if test "$with_xfs" = "yes" ; then
3056     AC_CHECKING(for XFontSet)
3057     AC_CHECK_LIB(X11, XmbDrawString, [:], with_xfs=no)
3058     if test "$with_xfs" = "yes" && test "$with_menubars" = "lucid"; then
3059       AC_DEFINE(USE_XFONTSET)
3060       if test "$with_xim" = "no" ; then
3061         XE_ADD_OBJS(input-method-xfs.o)
3062       fi
3063     fi
3064   fi dnl with_xfs
3065
3066   dnl Autodetect WNN
3067   test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
3068   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/jllib.h, ,with_wnn=no) }
3069   dnl Detour to find crypt
3070   if test "$with_wnn" != "no"; then
3071     AC_CHECK_FUNCS(crypt)
3072     test "$ac_cv_func_crypt" != "yes" && { AC_CHECK_LIB(crypt, crypt) }
3073   fi
3074   dnl Back to our regularly scheduled wnn hunting
3075   if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
3076     AC_CHECK_LIB(wnn,jl_dic_list_e,libwnn=wnn,
3077       AC_CHECK_LIB(wnn4,jl_dic_list_e,libwnn=wnn4,
3078         AC_CHECK_LIB(wnn6,jl_dic_list_e,libwnn=wnn6,
3079           AC_CHECK_LIB(wnn6_fromsrc,dic_list_e,libwnn=wnn6_fromsrc,with_wnn=no))))
3080   fi
3081   test -z "$with_wnn" && with_wnn=yes
3082   if test "$with_wnn" = "yes"; then
3083     AC_DEFINE(HAVE_WNN)
3084     XE_PREPEND(-l$libwnn, libs_x)
3085     XE_ADD_OBJS(mule-wnnfns.o)
3086     if test "$with_wnn6" != "no"; then
3087       AC_CHECK_LIB($libwnn, jl_fi_dic_list, with_wnn6=yes)
3088       test "$with_wnn6" = "yes" && AC_DEFINE(WNN6)
3089     fi
3090   fi
3091
3092   dnl Autodetect canna
3093   canna_includes_found=no
3094   if test "$with_canna" != "no"; then
3095     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3096   fi
3097   if test "$canna_includes_found" = "no" -a "$with_canna" != "no" -a \
3098       -d "/usr/local/canna/include"; then
3099     save_c_switch_site="$c_switch_site"
3100     c_switch_site="$c_switch_site -I/usr/local/canna/include"
3101     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3102     if test "$canna_includes_found" != "yes"; then
3103       c_switch_site="$save_c_switch_site"
3104       with_canna="no"
3105     fi
3106   fi
3107
3108   test -z "$with_canna" && { AC_CHECK_HEADER(canna/RK.h,         , with_canna=no) }
3109   test -z "$with_canna" && { AC_CHECK_LIB(RKC, RkBgnBun,       [:],with_canna=no) }
3110   test -z "$with_canna" && { AC_CHECK_LIB(canna,jrKanjiControl,[:],with_canna=no) }
3111   test -z "$with_canna" && with_canna=yes
3112   if test "$with_canna" = "yes"; then
3113     AC_DEFINE(HAVE_CANNA)
3114     XE_PREPEND(-lcanna -lRKC, libs_x)
3115     XE_ADD_OBJS(mule-canna.o)
3116   fi
3117
3118 else dnl "$with_mule" = "no"
3119   for feature in xim canna wnn; do
3120     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3121       AC_MSG_WARN("--with-${feature} ignored:  Not valid without Mule support")
3122     fi
3123     eval "with_${feature}=no"
3124   done
3125 fi dnl with_mule
3126
3127
3128 dnl At this point, we know whether we need the motif lib or not.
3129 if test "$need_motif" = "yes" ; then
3130   XE_PREPEND(-lXm, libs_x)
3131   dnl AIX needs the following library for use with Motif
3132   AC_CHECK_LIB(i18n, layout_object_getvalue, [XE_PREPEND(-li18n, libs_x)])
3133   XE_COMPUTE_RUNPATH()
3134 fi
3135
3136 AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf)
3137
3138 dnl realpath is buggy on linux, decosf and aix4
3139
3140 dnl The realpath() in linux libc (4.6.27) sometimes fails with ELOOP.
3141 dnl The realpath in ELF linux libc's is O.K.
3142 dnl For example, call realpath on a file thirty-five or so directories deep
3143 dnl and you get ELOOP even if no symlinks at all are involved.
3144 dnl Reports as of 11/1997 indicate BSDi has problems too.
3145 dnl The realpath() in UnixWare2.1.3 could not get any pathname fragment in error condition.
3146 case "$opsys" in
3147   linuxaout* | bsdos3* | freebsd* | decosf4-0* | aix4* ) XE_ADD_OBJS(realpath.o) ;;
3148   * )
3149     case "$canonical" in
3150       *-*-sysv4.2uw2* ) XE_ADD_OBJS(realpath.o) ;;
3151       * ) AC_CHECK_FUNCS(realpath)
3152           test "$ac_cv_func_realpath" != "yes" && XE_ADD_OBJS(realpath.o) ;;
3153     esac ;;
3154 esac
3155
3156 dnl Check whether the system provides getloadavg (Solaris 7 has it)
3157 AC_CHECK_FUNCS(getloadavg)
3158
3159 if test "$ac_cv_func_getloadavg" != "yes"
3160 then
3161   XE_ADD_OBJS(getloadavg.o)
3162
3163   dnl Used by getloadavg() - does not require root priveleges
3164   AC_CHECK_LIB(kstat, kstat_open)
3165
3166   dnl Another way to get the load average
3167   AC_CHECK_LIB(kvm, kvm_read)
3168 fi
3169
3170 dnl If netdb.h does not declare h_errno, we must declare it by hand.
3171 AC_MSG_CHECKING(whether netdb declares h_errno)
3172 AC_TRY_LINK([#include <netdb.h>],
3173   [return h_errno;],
3174   [AC_MSG_RESULT(yes)
3175    AC_DEFINE(HAVE_H_ERRNO)],
3176   [AC_MSG_RESULT(no)])
3177
3178 AC_MSG_CHECKING(for sigsetjmp)
3179 AC_TRY_COMPILE([#include <setjmp.h>],
3180         [sigjmp_buf bar; sigsetjmp (bar, 0);],
3181   [AC_MSG_RESULT(yes)
3182    AC_DEFINE(HAVE_SIGSETJMP)],
3183   [AC_MSG_RESULT(no)])
3184
3185 AC_MSG_CHECKING(whether localtime caches TZ)
3186 AC_CACHE_VAL(emacs_cv_localtime_cache,
3187 [if test "$ac_cv_func_tzset" = "yes"; then
3188 AC_TRY_RUN([#include <time.h>
3189 #if STDC_HEADERS
3190 # include <stdlib.h>
3191 #endif
3192 extern char **environ;
3193 unset_TZ ()
3194 {
3195   char **from, **to;
3196   for (to = from = environ; (*to = *from); from++)
3197     if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
3198       to++;
3199 }
3200 char TZ_GMT0[] = "TZ=GMT0";
3201 char TZ_PST8[] = "TZ=PST8";
3202 main()
3203 {
3204   time_t now = time ((time_t *) 0);
3205   int hour_GMT0, hour_unset;
3206   if (putenv (TZ_GMT0) != 0)
3207     exit (1);
3208   hour_GMT0 = localtime (&now)->tm_hour;
3209   unset_TZ ();
3210   hour_unset = localtime (&now)->tm_hour;
3211   if (putenv (TZ_PST8) != 0)
3212     exit (1);
3213   if (localtime (&now)->tm_hour == hour_GMT0)
3214     exit (1);
3215   unset_TZ ();
3216   if (localtime (&now)->tm_hour != hour_unset)
3217     exit (1);
3218   exit (0);
3219 }], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
3220 [# If we have tzset, assume the worst when cross-compiling.
3221 emacs_cv_localtime_cache=yes])
3222 else
3223         # If we lack tzset, report that localtime does not cache TZ,
3224         # since we can't invalidate the cache if we don't have tzset.
3225         emacs_cv_localtime_cache=no
3226 fi],[:])dnl
3227 AC_MSG_RESULT($emacs_cv_localtime_cache)
3228 if test $emacs_cv_localtime_cache = yes; then
3229   AC_DEFINE(LOCALTIME_CACHE)
3230 fi
3231
3232 if test "$HAVE_TIMEVAL" = "yes"; then
3233 AC_MSG_CHECKING(whether gettimeofday accepts one or two arguments)
3234 AC_TRY_LINK([
3235 #ifdef TIME_WITH_SYS_TIME
3236 #include <sys/time.h>
3237 #include <time.h>
3238 #else
3239 #ifdef HAVE_SYS_TIME_H
3240 #include <sys/time.h>
3241 #else
3242 #include <time.h>
3243 #endif
3244 #endif
3245   ],
3246   [
3247   struct timeval time;
3248   struct timezone dummy;
3249   gettimeofday (&time, &dummy);
3250 ],
3251   [AC_MSG_RESULT(two)],
3252   [AC_MSG_RESULT(one)
3253    AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)])
3254 fi
3255
3256
3257 AC_C_INLINE
3258 if test "$ac_cv_c_inline" != "no"; then
3259   AC_DEFINE(HAVE_INLINE)
3260   test "$GCC" = "yes" && XE_ADD_OBJS(inline.o)
3261 fi
3262
3263 dnl HP-UX has a working alloca in libPW.
3264 dnl case "${GCC}${opsys}" in hpux* )
3265 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
3266 dnl esac
3267
3268 AC_FUNC_ALLOCA
3269 test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
3270
3271 dnl Check whether vfork exists and works correctly. (This does more
3272 dnl than just check for its existence.) If so, it defines HAVE_VFORK_H.
3273 dnl If not, it defines vfork to be fork.
3274 AC_FUNC_VFORK
3275
3276 dnl Check whether strcoll exists and works correctly. (This does more
3277 dnl than just check for its existence.) If so, it defines HAVE_STRCOLL.
3278 AC_FUNC_STRCOLL
3279
3280 dnl If `getpgrp' takes no argument (the POSIX.1 version), define
3281 dnl `GETPGRP_VOID'.  Otherwise, it is the BSD version, which takes a
3282 dnl process ID as an argument.
3283 AC_CHECK_FUNCS(getpgrp)
3284 AC_FUNC_GETPGRP
3285
3286 dnl We used to call AC_FUNC_MMAP here
3287 dnl Instead we now use following, suggested by Neal Becker
3288 AC_MSG_CHECKING(for working mmap)
3289 case "$opsys" in ultrix* ) have_mmap=no ;; *)
3290 AC_TRY_RUN([#include <stdio.h>
3291 #include <unistd.h>
3292 #include <fcntl.h>
3293 #include <sys/mman.h>
3294
3295 #ifndef MAP_VARIABLE
3296 #define MAP_VARIABLE 0
3297 #endif
3298
3299 #ifndef MAP_FAILED
3300 #define MAP_FAILED -1
3301 #endif
3302
3303 int main (int argc, char *argv[])
3304 {
3305   int fd = -1;
3306   caddr_t p;
3307 #ifndef MAP_ANONYMOUS
3308   fd = open ("/dev/zero", O_RDWR);
3309   if (fd < 0)
3310     return 1;
3311 #define MAP_ANONYMOUS 0
3312 #endif
3313   if (mmap(0, 1024, PROT_READ | PROT_WRITE,
3314            MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS,
3315            fd, 0) != (void *) MAP_FAILED)
3316     return 0;
3317   perror ("conftest: mmap failed");
3318   return 1;
3319 }], have_mmap=yes, have_mmap=no) ;;
3320 esac
3321 AC_MSG_RESULT($have_mmap)
3322 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
3323
3324 dnl rel_alloc requires either GNU malloc or system malloc with mmap
3325 dnl We only turn rel_alloc on by default if mmap is available.
3326 test "$GNU_MALLOC" != "yes"   -a "$have_mmap" != "yes" && rel_alloc=no
3327 test "$rel_alloc" = "default" -a "$have_mmap"  = "yes" && rel_alloc=yes
3328 test "$rel_alloc" = "yes" && AC_DEFINE(REL_ALLOC)
3329
3330 dnl Check for terminal I/O variants
3331 dnl TERMIOS systems may have termio.h, but not vice-versa, I think.
3332 AC_CHECK_HEADER(termios.h,
3333   AC_DEFINE(HAVE_TERMIOS)
3334   AC_DEFINE(SIGNALS_VIA_CHARACTERS)
3335   AC_DEFINE(NO_TERMIO),
3336   [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])])
3337
3338
3339 dnl Check for Internet sockets.
3340 AC_CHECK_FUNC(socket,
3341  [AC_CHECK_HEADER(netinet/in.h,
3342    [AC_CHECK_HEADER(arpa/inet.h, [
3343   AC_DEFINE(HAVE_SOCKETS)
3344       AC_MSG_CHECKING("for sun_len member in struct sockaddr_un")
3345       AC_TRY_LINK([
3346 #include <sys/types.h>
3347 #include <sys/socket.h>
3348 #include <sys/un.h>
3349       ],
3350       [static struct sockaddr_un x; x.sun_len = 1;],
3351       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)],
3352       [AC_MSG_RESULT(no)])
3353       AC_MSG_CHECKING("for ip_mreq struct in netinet/in.h")
3354       AC_TRY_LINK([
3355 #include <sys/types.h>
3356 #include <netinet/in.h>
3357       ],
3358       [static struct ip_mreq x;],
3359       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MULTICAST)],
3360       [AC_MSG_RESULT(no)])])])])
3361
3362 dnl Check for SYS V IPC. (Inferior to sockets.)
3363 AC_CHECK_FUNC(msgget,
3364   [AC_CHECK_HEADER(sys/ipc.h,
3365     [AC_CHECK_HEADER(sys/msg.h,
3366       [AC_DEFINE(HAVE_SYSVIPC)])])])
3367
3368 dnl Check for directory variants
3369 AC_CHECK_HEADER(dirent.h, [AC_DEFINE(SYSV_SYSTEM_DIR)],
3370   [AC_CHECK_HEADER(sys/dir.h, , [AC_DEFINE(NONSYSTEM_DIR_LIBRARY)])])
3371
3372 dnl Check for nlist.h
3373 AC_CHECK_HEADER(nlist.h, AC_DEFINE(NLIST_STRUCT), )
3374
3375 dnl Check for sound of various sorts.
3376
3377 dnl Autodetect native sound
3378 AC_CHECKING("for sound support")
3379 case "$with_sound" in
3380   native | both ) with_native_sound=yes;;
3381   nas    | no   ) with_native_sound=no;;
3382 esac
3383 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
3384
3385 if test "$with_native_sound" != "no"; then
3386   dnl Maybe sound is already on include path...
3387   if test -n "$native_sound_lib"; then
3388     AC_CHECK_HEADER(multimedia/audio_device.h,
3389       [sound_found=yes sound_cflags=""
3390       XE_ADD_OBJS(sunplay.o)])
3391   fi
3392
3393   dnl Autodetect Sun native sound from SUNWaudmo package
3394   if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
3395     sound_found=yes
3396     XE_ADD_OBJS(sunplay.o)
3397     if test -d "/usr/demo/SOUND/include"
3398       then sound_cflags="-I/usr/demo/SOUND/include"
3399       else sound_cflags="-I/usr/demo/SOUND"
3400     fi
3401     if test -z "$native_sound_lib" ; then
3402       if test -r "/usr/demo/SOUND/lib/libaudio.a"
3403         then native_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
3404         else native_sound_lib="/usr/demo/SOUND/libaudio.a"
3405       fi
3406     fi
3407   fi
3408
3409   dnl Check for SGI and HP native sound libs
3410   if test -z "$sound_found"; then
3411     case "$canonical" in
3412     *-sgi-* )
3413       if test -z "$native_sound_lib"; then
3414         AC_CHECK_LIB(audio, ALopenport, native_sound_lib="-laudio")
3415       fi
3416       if test -n "$native_sound_lib"; then
3417         sound_found=yes sound_cflags=""
3418         XE_ADD_OBJS(sgiplay.o)
3419       fi ;;
3420     hppa*-hp-hpux* )
3421       if test -z "$native_sound_lib"; then
3422         AC_CHECK_LIB(Alib, AOpenAudio, native_sound_lib="-lAlib")
3423       fi
3424       if test -n "$native_sound_lib"; then
3425         sound_found=yes
3426         XE_ADD_OBJS(hpplay.o)
3427         if test "$GCC" = "yes" # Kludge city
3428           then sound_cflags="-Dconst= -Dvolatile= -I/usr/audio/examples"
3429           else sound_cflags="+e -I/usr/audio/examples"
3430         fi
3431       fi ;;
3432     esac
3433   fi
3434
3435   dnl Check for Linux/BSD native sound
3436   if test -z "$sound_found"; then
3437     for dir in "machine" "sys" "linux"; do
3438       AC_CHECK_HEADER(${dir}/soundcard.h,
3439         sound_found=yes
3440         XE_ADD_OBJS(linuxplay.o)
3441         [AC_DEFINE_UNQUOTED(SOUNDCARD_H_PATH, "${dir}/soundcard.h")]
3442         break)
3443     done
3444   fi
3445
3446   test "$sound_found" = "yes" && with_native_sound=yes
3447 fi
3448
3449 if test -z "$with_sound"; then
3450   if test "$with_native_sound" = "yes" -o -n "$native_sound_lib"; then
3451     with_sound=native
3452   fi
3453 fi
3454
3455 if test "$with_native_sound" = "yes"; then
3456   AC_DEFINE(HAVE_NATIVE_SOUND)
3457   test -n "$native_sound_lib" && XE_PREPEND($native_sound_lib, LIBS)
3458 fi
3459
3460 case "$with_sound" in both | nas )
3461   AC_DEFINE(HAVE_NAS_SOUND)
3462   XE_ADD_OBJS(nas.o)
3463   XE_PREPEND(-laudio, libs_x)
3464   dnl If the nas library does not contain the error jump point,
3465   dnl then we force safer behavior.
3466   AC_EGREP_HEADER(AuXtErrorJump,audio/Xtutil.h,,[AC_DEFINE(NAS_NO_ERROR_JUMP)])
3467 esac
3468
3469 dnl ---------------------
3470 dnl TTY-dependent options
3471 dnl ---------------------
3472
3473 test -z "$with_tty" && with_tty=yes
3474
3475 if test "$with_tty" = "yes"  ; then
3476   AC_CHECKING(for TTY-related features)
3477   AC_DEFINE(HAVE_TTY)
3478   XE_ADD_OBJS(console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o)
3479
3480   dnl Autodetect ncurses.
3481   if test -z "$with_ncurses"; then
3482     AC_CHECK_LIB(ncurses, tgetent, with_ncurses=yes, with_ncurses=no)
3483   fi
3484   if test "$with_ncurses" = "yes"; then
3485     AC_DEFINE(HAVE_NCURSES)
3486     AC_CHECK_HEADER(ncurses/curses.h, curses_h_path=ncurses/curses.h)
3487     AC_CHECK_HEADER(ncurses/term.h, term_h_path=ncurses/term.h)
3488     XE_ADD_OBJS(terminfo.o)
3489     XE_PREPEND(-lncurses, LIBS)
3490
3491     if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then
3492       dnl Try again, and check for the bogus ncurses/ include bug.
3493       dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
3494       dnl <ncurses/unctrl.h>)
3495       save_c_switch_site="$c_switch_site"
3496       c_switch_site="$c_switch_site -I/usr/include/ncurses"
3497       AC_CHECK_HEADER(ncurses/curses.h, curses_h_path=ncurses/curses.h)
3498       if test "$ac_cv_header_ncurses_curses_h" = "yes"
3499         then AC_MSG_WARN("Your system has the bogus ncurses include bug.")
3500         else c_switch_site="$save_c_switch_site"
3501       fi
3502     fi
3503   else dnl "$with_ncurses" = "no"
3504     dnl Autodetect terminfo/-lcurses/-ltermlib/-ltermcap
3505     if test "$have_terminfo" = "yes"; then
3506       XE_ADD_OBJS(terminfo.o)
3507       if test -n "$libs_termcap"; then
3508         XE_PREPEND($libs_termcap, LIBS)
3509       else
3510         for lib in curses termlib termcap; do
3511           AC_CHECK_LIB($lib, tgetent, XE_PREPEND(-l${lib}, LIBS); break)
3512         done
3513       fi
3514     else dnl "$have_terminfo" = "no" && "with_ncurses" = "no"
3515       XE_ADD_OBJS(tparam.o)
3516       dnl The HP-UX curses library seems to have a badly broken version of select(2)
3517       dnl that makes "poll: interrupted system call" messages to appear and
3518       dnl Emacs suprocesses to hang (e.g. TeX compilation w/ AUCTeX) */
3519       case "$opsys" in *-hp-hpux* ) libs_termcap="-ltermcap" ;; esac
3520       if test -n "$libs_termcap"; then
3521         XE_PREPEND($libs_termcap, LIBS)
3522       else
3523         AC_CHECK_LIB(curses, tgetent, XE_PREPEND(-lcurses, LIBS),
3524           AC_CHECK_LIB(termcap, tgetent, XE_PREPEND(-ltermcap, LIBS),
3525             XE_ADD_OBJS(termcap.o)))
3526       fi
3527     fi
3528   fi
3529   AC_DEFINE_UNQUOTED(CURSES_H_PATH, "${curses_h_path-curses.h}")
3530   AC_DEFINE_UNQUOTED(TERM_H_PATH, "${term_h_path-term.h}")
3531
3532   dnl Autodetect gpm
3533   test -z "$with_gpm" && { AC_CHECK_HEADER(gpm.h, , with_gpm=no) }
3534   test -z "$with_gpm" && { AC_CHECK_LIB(gpm, Gpm_Open, with_gpm=yes, with_gpm=no) }
3535   if test "$with_gpm" = "yes"; then
3536     AC_DEFINE(HAVE_GPM)
3537     XE_ADD_OBJS(gpmevent.o)
3538     XE_PREPEND(-lgpm, LIBS)
3539   fi
3540
3541 else dnl "$with_tty" = "no"
3542   for feature in ncurses gpm; do
3543     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3544       AC_MSG_WARN("--with-${feature} ignored:  Not valid without TTY support")
3545     fi
3546     eval "with_${feature}=no"
3547   done
3548 fi dnl with_tty
3549
3550 dnl Do we need event-unixoid.o ?
3551 test "$with_x11" = "yes" -o "$with_tty" = "yes" && XE_ADD_OBJS(event-unixoid.o)
3552
3553 dnl Database support
3554 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
3555 dnl On FreeBSD, both DB and DBM are part of libc.
3556 dnl By default, we check for DBM support in libgdbm, then libc, then libdbm.
3557
3558 test "$with_database_gnudbm $with_database_dbm $with_database_berkdb" \
3559   != "no no no" && AC_CHECKING(for database support)
3560
3561 dnl Check for ndbm.h, required for either kind of DBM support.
3562 if test "$with_database_gnudbm $with_database_dbm" != "no no"; then
3563   AC_CHECK_HEADER(ndbm.h, [:], [
3564     test "$with_database_gnudbm" = "yes" -o \
3565          "$with_database_dbm"    = "yes" && \
3566       XE_DIE("Required DBM support cannot be provided.")
3567     with_database_gnudbm=no with_database_dbm=no])
3568 fi
3569
3570 dnl Check for DBM support in libgdbm.
3571 if test "$with_database_gnudbm" != "no"; then
3572   AC_CHECK_LIB(gdbm, dbm_open, [
3573    with_database_gnudbm=yes with_database_dbm=no libdbm=-lgdbm], [
3574    if test "$with_database_gnudbm" = "yes"; then
3575      XE_DIE("Required GNU DBM support cannot be provided.")
3576    fi
3577    with_database_gnudbm=no])
3578 fi
3579
3580 dnl Check for DBM support in libc and libdbm.
3581 if test "$with_database_dbm" != "no"; then
3582   AC_CHECK_FUNC(dbm_open, [with_database_dbm=yes libdbm=], [
3583     AC_CHECK_LIB(dbm, dbm_open, [with_database_dbm=yes libdbm=-ldbm], [
3584       test "$with_database_dbm" = "yes" && \
3585         XE_DIE("Required DBM support cannot be provided.")
3586       with_database_dbm=no])])
3587 fi
3588
3589 dnl Tell make about the DBM support we detected.
3590 test -n "$libdbm" && XE_PREPEND("$libdbm", LIBS)
3591 test "$with_database_gnudbm" = "yes" -o \
3592      "$with_database_dbm"    = "yes" && \
3593   AC_DEFINE(HAVE_DBM)
3594
3595 dnl Check for Berkeley DB.
3596 if test "$with_database_berkdb" != "no"; then
3597   AC_MSG_CHECKING(for Berkeley db.h)
3598   for path in "db/db.h" "db.h"; do
3599     AC_TRY_COMPILE([#ifdef HAVE_INTTYPES_H
3600 #define __BIT_TYPES_DEFINED__
3601 #include <inttypes.h>
3602 typedef uint8_t  u_int8_t;
3603 typedef uint16_t u_int16_t;
3604 typedef uint32_t u_int32_t;
3605 #ifdef WE_DONT_NEED_QUADS
3606 typedef uint64_t u_int64_t;
3607 #endif
3608 #endif
3609 #include <$path>
3610 ],[], db_h_path="$path"; break)
3611   done
3612   if test -z "$db_h_path"
3613   then AC_MSG_RESULT(no); with_database_berkdb=no
3614   else AC_MSG_RESULT($db_h_path)
3615   fi
3616
3617   if test "$with_database_berkdb" != "no"; then
3618     AC_MSG_CHECKING(for Berkeley DB version)
3619     AC_EGREP_CPP(yes,
3620 [#include <$db_h_path>
3621 #if DB_VERSION_MAJOR > 1
3622 yes
3623 #endif
3624 ], [AC_MSG_RESULT(2); dbfunc=db_open], [AC_MSG_RESULT(1); dbfunc=dbopen])
3625     AC_CHECK_FUNC($dbfunc,     with_database_berkdb=yes need_libdb=no, [
3626     AC_CHECK_LIB(db, $dbfunc,  with_database_berkdb=yes need_libdb=yes)])
3627   fi
3628
3629   if test "$with_database_berkdb" = "yes"; then
3630     AC_DEFINE_UNQUOTED(DB_H_PATH, "$db_h_path")
3631     AC_DEFINE(HAVE_BERKELEY_DB)
3632     test "$need_libdb" = "yes" && XE_PREPEND(-ldb, LIBS)
3633   else with_database_berkdb=no
3634   fi
3635 fi
3636
3637 if test "$with_database_gnudbm $with_database_dbm $with_database_berkdb" \
3638      != "no no no"; then
3639   AC_DEFINE(HAVE_DATABASE)
3640   XE_ADD_OBJS(database.o)
3641 fi
3642
3643 dnl Socks support
3644 if test "$with_socks" = "yes"; then
3645   AC_CHECK_LIB(socks, SOCKSinit)
3646   test -n "$ac_cv_lib_socks_SOCKSinit" && AC_DEFINE(HAVE_SOCKS)
3647 fi
3648
3649 dnl Usage tracking (undocumented and likely unused option)
3650 if test "$usage_tracking" = "yes"; then
3651   AC_DEFINE(USAGE_TRACKING)
3652   XE_PREPEND(-Bstatic -lut -Bdynamic, LIBS)
3653 fi
3654
3655 dnl autodetect dll support
3656 AC_CHECK_HEADERS(dlfcn.h, [have_dlfcn=yes
3657   AC_DEFINE(HAVE_DLFCN_H)])
3658 test -z "$with_modules" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(dl,  dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=dl;  with_modules=yes]) }
3659 test -z "$with_modules" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   _dlopen,  [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_modules=yes]) }
3660 test -z "$with_modules" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_modules=yes]) }
3661 test -z "$with_modules" && { AC_CHECK_LIB(dld, shl_load, [ AC_DEFINE(HAVE_SHL_LOAD) DLL_LIB=dld; with_modules=yes]) }
3662 test -z "$with_modules" && { AC_CHECK_LIB(dld, dld_init, [ AC_DEFINE(HAVE_DLD_INIT) DLL_LIB=dld; with_modules=yes]) }
3663 if test "$with_modules" = "yes"; then
3664   XE_SHLIB_STUFF
3665   if test "$can_build_shared" = "yes"; then
3666     AC_DEFINE(HAVE_SHLIB)
3667     XE_ADD_OBJS(sysdll.o)
3668     XE_ADD_OBJS(emodules.o)
3669     XE_APPEND(src, INSTALL_ARCH_DEP_SUBDIR)
3670     test ! -z "$DLL_LIB" && XE_PREPEND(-l${DLL_LIB}, LIBS)
3671     AC_CHECK_FUNCS(dlerror _dlerror)
3672   else
3673     AC_MSG_WARN(disabling shared library support)
3674     with_modules=no
3675   fi
3676 fi
3677
3678 dnl Unfortunately, just because we can link doesn't mean we can run.
3679 dnl One of the above link tests may have succeeded but caused resulting
3680 dnl executables to fail to run.  Also any tests using AC_TRY_RUN will
3681 dnl have reported incorrect results.
3682 AC_TRY_RUN([int main(int c,char *v[]){return 0;}],[:],[
3683   echo ""
3684   echo "*** PANIC *** The C compiler can no longer build working executables."
3685   echo "*** PANIC *** Please examine the tail of config.log for runtime errors."
3686   echo "*** PANIC *** The most likely reason for this problem is that configure"
3687   echo "*** PANIC *** links with shared libraries, but those libraries cannot be"
3688   echo "*** PANIC *** found at run time."
3689   echo "*** PANIC ***"
3690   echo "*** PANIC *** On a Linux system, edit /etc/ld.so.conf and re-run ldconfig."
3691   echo "*** PANIC *** On other systems, try telling configure where to find the"
3692   echo "*** PANIC *** shared libraries using the --site-runtime-libraries option"
3693   echo "*** PANIC ***"
3694   echo "*** PANIC *** Another way to shoot yourself in the foot is to specify"
3695   echo "*** PANIC *** --with-FEATURE when FEATURE is not actually installed"
3696   echo "*** PANIC *** on your system.  Don't do that."
3697   exit 1])
3698
3699 dnl Process support
3700 if test "$win32_processes" = "yes"; then
3701   XE_ADD_OBJS(process-nt.o)
3702 else
3703   AC_DEFINE(HAVE_UNIX_PROCESSES)
3704   XE_ADD_OBJS(process-unix.o)
3705 fi
3706
3707 dnl --------------------------------
3708 dnl Compute SUBST-itutable variables
3709 dnl --------------------------------
3710
3711 dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM)
3712 dnl Use XE_SPACE instead of plain assignment statements to remove extraneous blanks
3713 XE_SPACE(CFLAGS, $CFLAGS)
3714 XE_SPACE(extra_objs, $extra_objs)
3715 XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system)
3716 XE_SPACE(c_switch_window_system, $c_switch_x_site $X_CFLAGS)
3717 XE_SPACE(c_switch_all, $c_switch_general $c_switch_window_system)
3718 XE_SPACE(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
3719 XE_SPACE(ld_switch_window_system, $ld_switch_x_site)
3720 XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system)
3721 XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
3722 XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $X_PRE_LIBS)
3723 XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general)
3724
3725 dnl Compute lists of Makefiles and subdirs
3726 AC_SUBST(SRC_SUBDIR_DEPS)
3727 XE_APPEND(src, MAKE_SUBDIR)
3728 internal_makefile_list="Makefile.in"
3729 SUBDIR_MAKEFILES=''
3730 test -d lock || mkdir lock
3731 for dir in $MAKE_SUBDIR; do
3732   case "$dir" in */* ) dnl Implement mkdir -p
3733     ( for d in `echo $dir | sed 's:/: :g'` ; do
3734         test -d "$d" || mkdir "$d"; cd "$d"
3735       done ) ;;
3736    * ) test -d "$dir" || mkdir "$dir" ;;
3737   esac
3738   XE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile $dir/GNUmakefile)
3739   XE_SPACE(internal_makefile_list, $internal_makefile_list $dir/Makefile.in)
3740 done
3741 AC_SUBST(INSTALL_ARCH_DEP_SUBDIR)
3742 AC_SUBST(MAKE_SUBDIR)
3743 AC_SUBST(SUBDIR_MAKEFILES)
3744
3745 dnl Make s&m symlinks in the src directory, for config.h
3746 for dir in src/s src/m; do
3747   if test ! -d "$dir" ; then
3748     echo Making symbolic link to "$srcdir/$dir"
3749     ${LN_S} "$srcdir/$dir" "$dir"
3750   fi
3751 done
3752
3753 if test "$extra_verbose" = "yes"; then
3754   echo ""
3755   PRINT_VAR(extra_objs
3756    c_switch_general  c_switch_window_system  c_switch_all
3757   ld_switch_general ld_switch_window_system ld_switch_all
3758     ld_libs_general   ld_libs_window_system   ld_libs_all)
3759   echo ""
3760 fi
3761
3762 dnl Create some auxiliary files
3763 if test -f $srcdir/src/gdbinit -a ! -f src/gdbinit ; then
3764   echo "creating src/gdbinit"; echo ""
3765   echo "source $srcdir/src/gdbinit" > src/gdbinit
3766 fi
3767
3768 dnl Create top level .sbinit for Sun compilers
3769 if test "$__SUNPRO_C" = "yes"; then
3770   echo "creating .sbinit"; echo ""
3771   ( echo "# For use with Sun WorkShop's Source browser."
3772     echo "# See sbquery(1) and sbinit(4) for more information"
3773     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
3774   ) > .sbinit
3775 fi
3776
3777 dnl There are no more compile tests; remove the core they created.
3778 rm -f core
3779
3780 dnl ----------------------------------------------
3781 dnl Substitute into Makefile, config.h and paths.h
3782 dnl ----------------------------------------------
3783
3784 dnl what sort of things to edit into Makefile, config.h and paths.h
3785 dnl configuration here uncanonicalized to avoid exceeding size limits.
3786
3787 AC_SUBST(PROGNAME)
3788 AC_SUBST(version)
3789 AC_SUBST(configuration)
3790 AC_SUBST(canonical)
3791 AC_SUBST(inststaticdir)
3792 AC_SUBST(instvardir)
3793 AC_SUBST(srcdir)
3794 AC_SUBST(bindir)
3795 AC_SUBST(datadir)
3796 AC_SUBST(pkgdir)
3797 AC_SUBST(statedir)
3798 AC_SUBST(libdir)
3799 AC_SUBST(mandir)
3800
3801 AC_SUBST(prefix)
3802 AC_SUBST(PREFIX_USER_DEFINED)
3803 dnl Yo, Stephen Bourne!  I want to marry you!
3804 PREFIX=$prefix
3805 while true; do
3806   case "$PREFIX" in
3807     *\$* ) eval "PREFIX=$PREFIX" ;;
3808     *) break ;;
3809   esac
3810 done
3811 AC_SUBST(PREFIX)
3812
3813 AC_SUBST(exec_prefix)
3814 AC_SUBST(EXEC_PREFIX_USER_DEFINED)
3815 EXEC_PREFIX=$exec_prefix
3816 while true; do
3817   case "$EXEC_PREFIX" in
3818     *\$* ) eval "EXEC_PREFIX=$EXEC_PREFIX" ;;
3819     *) break ;;
3820   esac
3821 done
3822 AC_SUBST(EXEC_PREFIX)
3823
3824 AC_SUBST(infodir)
3825 AC_SUBST(INFODIR_USER_DEFINED)
3826 INFODIR=$infodir
3827 while true; do
3828   case "$INFODIR" in
3829     *\$* ) eval "INFODIR=$INFODIR" ;;
3830     *) break ;;
3831   esac
3832 done
3833 AC_SUBST(INFODIR)
3834
3835 AC_SUBST(infopath)
3836 AC_SUBST(INFOPATH_USER_DEFINED)
3837 INFOPATH=$infopath
3838 while true; do
3839   case "$INFOPATH" in
3840     *\$* ) eval "INFOPATH=$INFOPATH" ;;
3841     *) break ;;
3842   esac
3843 done
3844 AC_SUBST(INFOPATH)
3845
3846 AC_SUBST(package_path)
3847 AC_SUBST(PACKAGE_PATH_USER_DEFINED)
3848 PACKAGE_PATH=$package_path
3849 while true; do
3850   case "$PACKAGE_PATH" in
3851     *\$* ) eval "PACKAGE_PATH=$PACKAGE_PATH" ;;
3852     *) break ;;
3853   esac
3854 done
3855 AC_SUBST(PACKAGE_PATH)
3856
3857 AC_SUBST(lispdir)
3858 AC_SUBST(LISPDIR_USER_DEFINED)
3859 LISPDIR=$lispdir
3860 while true; do
3861   case "$LISPDIR" in
3862     *\$* ) eval "LISPDIR=$LISPDIR" ;;
3863     *) break ;;
3864   esac
3865 done
3866 AC_SUBST(LISPDIR)
3867
3868 AC_SUBST(moduledir)
3869 AC_SUBST(MODULEDIR_USER_DEFINED)
3870 MODULEDIR=$moduledir
3871 while true; do
3872   case "$MODULEDIR" in
3873     *\$* ) eval "MODULEDIR=$MODULEDIR" ;;
3874     *) break ;;
3875   esac
3876 done
3877 AC_SUBST(MODULEDIR)
3878
3879 AC_SUBST(sitelispdir)
3880 AC_SUBST(SITELISPDIR_USER_DEFINED)
3881 SITELISPDIR=$sitelispdir
3882 while true; do
3883   case "$SITELISPDIR" in
3884     *\$* ) eval "SITELISPDIR=$SITELISPDIR" ;;
3885     *) break ;;
3886   esac
3887 done
3888 AC_SUBST(SITELISPDIR)
3889
3890 AC_SUBST(sitemoduledir)
3891 AC_SUBST(SITEMODULEDIR_USER_DEFINED)
3892 SITEMODULEDIR=$sitemoduledir
3893 while true; do
3894   case "$SITEMODULEDIR" in
3895     *\$* ) eval "SITEMODULEDIR=$SITEMODULEDIR" ;;
3896     *) break ;;
3897   esac
3898 done
3899 AC_SUBST(SITEMODULEDIR)
3900
3901 AC_SUBST(etcdir)
3902 AC_SUBST(ETCDIR_USER_DEFINED)
3903 ETCDIR=$etcdir
3904 while true; do
3905   case "$ETCDIR" in
3906     *\$* ) eval "ETCDIR=$ETCDIR" ;;
3907     *) break ;;
3908   esac
3909 done
3910 AC_SUBST(ETCDIR)
3911
3912 AC_SUBST(lockdir)
3913 AC_SUBST(LOCKDIR_USER_DEFINED)
3914 LOCKDIR=$lockdir
3915 while true; do
3916   case "$LOCKDIR" in
3917     *\$* ) eval "LOCKDIR=$LOCKDIR" ;;
3918     *) break ;;
3919   esac
3920 done
3921 AC_SUBST(LOCKDIR)
3922
3923 AC_SUBST(docdir)
3924 AC_SUBST(DOCDIR_USER_DEFINED)
3925 DOCDIR=$docdir
3926 while true; do
3927   case "$DOCDIR" in
3928     *\$* ) eval "DOCDIR=$DOCDIR" ;;
3929     *) break ;;
3930   esac
3931 done
3932 AC_SUBST(DOCDIR)
3933
3934 AC_SUBST(archlibdir)
3935 AC_SUBST(ARCHLIBDIR_USER_DEFINED)
3936 ARCHLIBDIR=$archlibdir
3937 while true; do
3938   case "$ARCHLIBDIR" in
3939     *\$* ) eval "ARCHLIBDIR=$ARCHLIBDIR" ;;
3940     *) break ;;
3941   esac
3942 done
3943 AC_SUBST(ARCHLIBDIR)
3944
3945 AC_SUBST(docdir)
3946 AC_SUBST(bitmapdir)
3947 AC_SUBST(extra_objs)
3948
3949 dnl The following flags combine all the information from:
3950 dnl - command line options (user always gets priority)
3951 dnl - user environment variables
3952 dnl - determined by configure
3953 dnl - the s&m header files (required for ellcc)
3954 AC_SUBST(machfile)
3955 AC_SUBST(opsysfile)
3956 AC_SUBST(c_switch_general)
3957 AC_SUBST(c_switch_window_system)
3958 AC_SUBST(c_switch_all)
3959 AC_SUBST(ld_switch_general)
3960 AC_SUBST(ld_switch_window_system)
3961 AC_SUBST(ld_switch_all)
3962 AC_SUBST(ld_libs_general)
3963 AC_SUBST(ld_libs_window_system)
3964 AC_SUBST(ld_libs_all)
3965 AC_SUBST(CFLAGS)
3966 AC_SUBST(CPPFLAGS)
3967 AC_SUBST(LDFLAGS)
3968 RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
3969 AC_SUBST(RECURSIVE_MAKE)
3970
3971 AC_SUBST(native_sound_lib)
3972 AC_SUBST(sound_cflags)
3973 AC_SUBST(RANLIB)
3974 AC_SUBST(dynodump_arch)
3975
3976 dnl Preliminary support for using a different compiler for xemacs itself.
3977 dnl Useful for building XEmacs with a C++ or 64-bit compiler.
3978 : ${XEMACS_CC:=$CC}
3979 AC_SUBST(XEMACS_CC)
3980
3981 dnl The default is yes
3982 if test "$with_prefix" = "yes"; then
3983   AC_DEFINE(PREFIX_USER_DEFINED)
3984 fi
3985
3986 dnl The default is no
3987 if test "$with_site_lisp" = "no"; then
3988   AC_DEFINE(INHIBIT_SITE_LISP)
3989 fi
3990 dnl The default is yes
3991 if test "$with_site_modules" = "no"; then
3992   AC_DEFINE(INHIBIT_SITE_MODULES)
3993 fi
3994
3995 XE_SPACE(ac_configure_args, $ac_configure_args)
3996 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$configuration")
3997 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "$ac_configure_args")
3998 AC_DEFINE_UNQUOTED(config_machfile,  "$machfile")
3999 AC_DEFINE_UNQUOTED(config_opsysfile, "$opsysfile")
4000
4001 dnl Following are deprecated
4002
4003 null_string=""
4004 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE,     $null_string)
4005 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, $null_string)
4006 AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,      $null_string)
4007 AC_DEFINE_UNQUOTED(LD_SWITCH_SITE,       $null_string)
4008 AC_DEFINE_UNQUOTED(C_SWITCH_SITE,        $null_string)
4009
4010 dnl Note: as a general rule, *only* define things here that are not
4011 dnl autodetected.  For things that are autodetected, define them
4012 dnl at the point where the autodetection occurs or would occur,
4013 dnl so that the user gets immediate feedback on the results of the
4014 dnl autodetection.
4015
4016 if   test "$GNU_MALLOC"         = "yes"; then AC_DEFINE(GNU_MALLOC)
4017 elif test "$with_system_malloc" = "yes"; then AC_DEFINE(USE_SYSTEM_MALLOC)
4018 elif test "$with_debug_malloc"  = "yes"; then AC_DEFINE(USE_DEBUG_MALLOC)
4019                                               AC_DEFINE(USE_SYSTEM_MALLOC)
4020 fi
4021 test "$with_i18n3"         = "yes" && AC_DEFINE(I18N3)
4022 test "$GCC"                = "yes" && AC_DEFINE(USE_GCC)
4023 test "$external_widget"    = "yes" && AC_DEFINE(EXTERNAL_WIDGET)
4024 test "$no_doc_file"        = "yes" && AC_DEFINE(NO_DOC_FILE)
4025 dnl test "$const_is_losing"    = "yes" && AC_DEFINE(CONST_IS_LOSING)
4026 test "$with_purify"        = "yes" && AC_DEFINE(PURIFY)
4027 test "$with_quantify"      = "yes" && AC_DEFINE(QUANTIFY)
4028 test "$with_pop"           = "yes" && AC_DEFINE(MAIL_USE_POP)
4029 test "$with_kerberos"      = "yes" && AC_DEFINE(KERBEROS)
4030 test "$with_hesiod"        = "yes" && AC_DEFINE(HESIOD)
4031 test "$use_union_type"     = "yes" && AC_DEFINE(USE_UNION_TYPE)
4032 test "$pdump"              = "yes" && AC_DEFINE(PDUMP)
4033
4034 dnl -------------------------------
4035 dnl Report on what we decided to do
4036 dnl -------------------------------
4037
4038 (
4039 dnl /etc/osversion is on SONY NEWS-OS
4040 if test -f /etc/osversion; then dnl SONY NEWS-OS
4041   echo "osversion: `cat /etc/osversion`"
4042 else
4043   echo "uname -a: `uname -a`"
4044 fi
4045 echo ""
4046 echo "$0 $quoted_arguments"
4047 ) > Installation
4048
4049 if test ! -z ${emacs_beta_version} ; then
4050   if test -z "${emacs_is_beta}" ; then
4051         xemacs_betaname=".${emacs_beta_version}"
4052   else
4053         xemacs_betaname="-b${emacs_beta_version}"
4054   fi
4055 else
4056   xemacs_betaname=""    
4057 fi
4058
4059 dnl Start stdout redirection to '| tee -a Installation'
4060 (
4061 echo "
4062
4063 XEmacs ${emacs_major_version}.${emacs_minor_version}${xemacs_betaname} \"$xemacs_codename\" configured for \`$canonical'.
4064
4065   Where should the build process find the source code?    $srcdir
4066   What installation prefix should install use?            $prefix
4067   What operating system and machine description files should XEmacs use?
4068         \`$opsysfile' and \`$machfile'
4069   What compiler should XEmacs be built with?              $CC $CFLAGS
4070   Should XEmacs use the GNU version of malloc?            ${GNU_MALLOC}${GNU_MALLOC_reason}
4071   Should XEmacs use the relocating allocator for buffers? $rel_alloc
4072   What window system should XEmacs use?                   ${window_system}"
4073 if test "$with_x11" = "yes"; then
4074   echo "  Where do we find X Windows header files?                $x_includes"
4075   echo "  Where do we find X Windows libraries?                   $x_libraries"
4076 fi
4077 if test -n "$site_includes"; then
4078   echo "  Additional header files:                                $site_includes"
4079 fi
4080 if test -n "$site_libraries"; then
4081   echo "  Additional libraries:                                   $site_libraries"
4082 fi
4083 if test -n "$site_prefixes"; then
4084   echo "  Additional prefixes:                                    $site_prefixes"
4085 fi
4086 if test -n "$runpath"; then
4087   echo "  Runtime library search path:                            $runpath"
4088 fi
4089 test "$with_dnet"  = yes && echo "  Compiling in support for DNET."
4090 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
4091 test "$with_xauth" = yes && echo "  Compiling in support for XAUTH."
4092 if test "$with_xmu" != yes -a "$with_x11" = yes; then
4093   echo "  No Xmu; substituting equivalent routines."
4094 fi
4095
4096 if test "$with_xpm" = yes; then
4097   echo "  Compiling in support for XPM images."
4098 elif test "$with_x11" = yes; then
4099   echo "  --------------------------------------------------------------------"
4100   echo "  WARNING: Compiling without XPM support."
4101   if test "$xpm_problem" != ""; then
4102     echo "  Reason: $xpm_problem"
4103   fi
4104   echo "  WARNING: You should strongly consider installing XPM."
4105   echo "  WARNING: Otherwise toolbars and other graphics will look suboptimal."
4106   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
4107   echo "  --------------------------------------------------------------------"
4108 fi
4109 if test "$with_png" = yes; then
4110   echo "  Compiling in support for PNG image handling."
4111 elif test "$window_system" != "none"; then
4112   echo "  --------------------------------------------------------------------"
4113   echo "  WARNING: Compiling without PNG image support."
4114   if test "$png_problem" != ""; then
4115     echo "  Reason: $png_problem"
4116   fi
4117   echo "  WARNING: You should strongly consider installing the PNG libraries."
4118   echo "  WARNING: Otherwise certain images and glyphs may not display."
4119   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
4120   echo "  --------------------------------------------------------------------"
4121 fi
4122 test "$with_gif"   = yes && echo "  Compiling in support for (builtin) GIF image handling."
4123 test "$with_jpeg"  = yes && echo "  Compiling in support for JPEG image handling."
4124 test "$with_tiff"  = yes && echo "  Compiling in support for TIFF image handling."
4125 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
4126 case "$with_sound" in
4127   nas    ) echo "  Compiling in network sound (NAS) support." ;;
4128   native ) echo "  Compiling in native sound support." ;;
4129   both   ) echo "  Compiling in both network and native sound support." ;;
4130 esac
4131 test "$old_nas" = yes && echo "        nas library lacks error trapping, will play synchronously."
4132
4133 test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley DB."
4134 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
4135 test "$with_database_gnudbm" = yes && echo "  Compiling in support for GNU DBM."
4136
4137 test "$with_ldap"            = yes && echo "  Compiling in support for LDAP."
4138
4139 test "$with_ncurses"  = yes && echo "  Compiling in support for ncurses."
4140 test "$with_gpm"      = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
4141
4142 test "$with_mule"     = yes && echo "  Compiling in Mule (multi-lingual) support."
4143 test "$with_file_coding"     = yes && echo "  Compiling in File coding support."
4144 test "$with_xim"      != no && echo "  Compiling in XIM (X11R5+ I18N input method) support."
4145 test "$with_xim" = motif    && echo "    Using Motif to provide XIM support."
4146 test "$with_xim" = xlib     && echo "    Using raw Xlib to provide XIM support."
4147 test "$with_xfs" = yes      && echo "    Using XFontSet to provide bilingual menubar."
4148 test "$with_canna"    = yes && echo "  Compiling in support for Canna on Mule."
4149 if test "$with_wnn" = yes; then
4150   echo "  Compiling in support for the WNN input method on Mule."
4151   test "$with_wnn6" = yes && echo "    Using WNN version 6."
4152 fi
4153 test "$with_i18n3"    = yes && echo "  Compiling in I18N support, level 3 (doesn't currently work)."
4154
4155 test "$with_cde"      = yes && echo "  Compiling in support for CDE."
4156 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
4157 test "$with_offix"    = yes && echo "  Compiling in support for OffiX."
4158 test "$with_dragndrop" = yes && echo "  Compiling in EXPERIMENTAL support for Drag'n'Drop ($dragndrop_proto )."
4159 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
4160 test "$with_wmcommand"  != no && echo "  Compiling in support for proper WM_COMMAND handling."
4161 case "$with_menubars" in
4162   lucid ) echo "  Using Lucid menubars." ;;
4163   motif ) echo "  Using Motif menubars."
4164           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
4165           echo "             We recommend using the Lucid menubar instead."
4166           echo "             Re-run configure with --with-menubars='lucid'." ;;
4167   msw ) echo "  Using MS-Windows menubars." ;;
4168 esac
4169 case "$with_scrollbars" in
4170   lucid    ) echo "  Using Lucid scrollbars."     ;;
4171   motif    ) echo "  Using Motif scrollbars."     ;;
4172   athena   ) echo "  Using Athena scrollbars."    ;;
4173   athena3d ) echo "  Using Athena-3d scrollbars." ;;
4174   msw ) echo "  Using MS-Windows scrollbars." ;;
4175 esac
4176 case "$with_widgets" in
4177   motif    ) echo "  Using Motif native widgets."     ;;
4178   athena   ) echo "  Using Athena native widgets."    ;;
4179   athena3d ) echo "  Using Athena-3d native widgets." ;;
4180   msw ) echo "  Using MS-Windows native widgets." ;;
4181 esac
4182 case "$with_dialogs" in
4183   motif    )
4184     echo "  Using Motif dialog boxes."
4185     if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
4186       echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
4187       echo "             We recommend using the Athena dialog boxes instead."
4188       echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
4189       echo "             Read the PROBLEMS file for more information."
4190     fi; fi
4191     ;;
4192   athena   ) echo "  Using Athena dialog boxes."    ;;
4193   athena3d ) echo "  Using Athena-3d dialog boxes." ;;
4194   msw ) echo "  Using MS-Windows dialog boxes." ;;
4195 esac
4196 test "$with_modules" = "yes" && echo "  Compiling in DSO module support."
4197 test "$with_clash_detection" = yes && \
4198   echo "  Clash detection will use \"$lockdir\" for locking files."
4199 echo "  movemail will use \"$mail_locking\" for locking mail spool files."
4200 test "$with_pop"        = yes && echo "  Using POP for mail access."
4201 test "$with_kerberos"   = yes && echo "  Using Kerberos for POP authentication."
4202 test "$with_hesiod"     = yes && echo "  Using Hesiod to get POP server host."
4203 test "$use_union_type"  = yes && echo "  Using the union type for Lisp_Objects."
4204 test "$pdump"           = yes && echo "  Using the new portable dumper (wishful thinking)."
4205 test "$debug"           = yes && echo "  Compiling in extra code for debugging."
4206 test "$usage_tracking"  = yes && echo "  Compiling with usage tracking active (Sun internal)."
4207 if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc" \
4208   != "no no no no no"; then
4209   echo "  WARNING: ---------------------------------------------------------"
4210   echo "  WARNING: Compiling in support for runtime error checking."
4211   echo "  WARNING: XEmacs will run noticeably more slowly as a result."
4212   echo "  WARNING: Error checking is on by default for XEmacs beta releases."
4213   echo "  WARNING: ---------------------------------------------------------"
4214 fi
4215 echo ""
4216 ) | tee -a Installation
4217 dnl echo "The above configure report is appended to \"Installation\" file."
4218 echo ""
4219
4220 dnl -----------------------------------
4221 dnl Now generate config.h and Makefiles
4222 dnl -----------------------------------
4223 dnl This has to be called in order for this variable to get into config.status
4224 AC_SUBST(internal_makefile_list)
4225 # Remove any trailing slashes in these variables.
4226 test -n "$prefix" &&
4227   prefix=`echo '' "$prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4228 test -n "$exec_prefix" &&
4229   exec_prefix=`echo '' "$exec_prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4230
4231 dnl Build Makefile.in's from Makefile.in.in's
4232 dnl except ./Makefile from $srcdir/Makefile.in
4233
4234 for file in $internal_makefile_list; do
4235   test "$file" = src/Makefile.in && \
4236     file="src/Makefile.in:src/Makefile.in.in:src/depend"
4237   ac_output_files="${ac_output_files+$ac_output_files }$file"
4238 done
4239 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
4240 if test "$with_modules" = "yes"; then
4241   ac_output_files="$ac_output_files lib-src/ellcc.h"
4242 fi
4243
4244 AC_OUTPUT($ac_output_files,
4245 [for dir in . $MAKE_SUBDIR; do
4246   (
4247     cd $dir
4248     rm -f junk.c
4249     < Makefile.in \
4250       sed -e '/^# Generated/d' \
4251           -e 's%/\*\*/#.*%%' \
4252           -e 's/^ *# */#/' \
4253 dnl Delete Makefile.in.in comment lines
4254           -e '/^##/d' \
4255 dnl Pass through CPP directives unchanged
4256           -e '/^#/ {
4257 p
4258 d
4259 }'        \
4260 dnl Quote other lines to protect from CPP substitution
4261           -e '/./ {
4262 s/\([[\"]]\)/\\\1/g
4263 s/^/"/
4264 s/$/"/
4265 }'  > junk.c;
4266
4267 dnl Create a GNUmakefile and Makefile from Makefile.in.
4268
4269 changequote(<<,>>)dnl
4270 dnl CPP_MAKEFILE(CPPFLAGS,filename)
4271 define(<<CPP_MAKEFILE>>,
4272 echo creating $dir/<<$2>>
4273 $CPP -I. -I${top_srcdir}/src <<$1>> junk.c \
4274 dnl Delete line directives inserted by $CPP
4275   | sed -e 's/^\#.*//'          \
4276 dnl Delete spurious blanks inserted by $CPP
4277         -e 's/^[ TAB][ TAB]*$//'\
4278         -e 's/^ /TAB/'          \
4279 dnl Delete blank lines
4280   | sed -n -e '/^..*$/p'        \
4281 dnl Restore lines quoted above to original contents.
4282   | sed '/^\"/ {
4283         s/\\\([\"]\)/\1/g
4284         s/^[ TAB]*\"//
4285         s/\"[ TAB]*$//
4286 }' > Makefile.new
4287     chmod 444 Makefile.new
4288     mv -f Makefile.new <<$2>>
4289 )dnl CPP_MAKEFILE
4290
4291     CPP_MAKEFILE(,Makefile)
4292     CPP_MAKEFILE(-DUSE_GNU_MAKE,GNUmakefile)
4293 changequote([,])dnl
4294     rm -f junk.c
4295   )
4296 done
4297
4298 dnl Append AC_DEFINE information to lib-src/config.values
4299 dnl (AC_SUBST information is already there (see config.values.sh).
4300 sed < config.status >> lib-src/config.values \
4301   -e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \
4302   -e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \
4303   -e 's/^\([[^ ]]*\) $/\1 ""/' \
4304   -e 's/ 1$/ t/'
4305
4306 ],
4307 [CPP="$CPP"
4308  top_srcdir="$srcdir"
4309  MAKE_SUBDIR="$MAKE_SUBDIR"
4310 ])dnl