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