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