Merge chise-0_23-1-r21-4-18.
[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, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 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, 2005 Ben Wing.
10 #### Copyright (C) 2000, 2001 Martin Buchholz.
11 #### Copyright (C) 1998, 1999 J. Kean Johnston.
12
13 ### Don't edit this script!
14 ### This script was automatically generated by the `autoconf' program
15 ### from the file `./configure.in'.
16 ### To rebuild it, execute the command
17 ###     autoconf
18 ### in the this directory.  You must have autoconf version 2.13 or later.
19 ### Note: this script has not yet been ported to autoconf version 2.5x.
20
21 ### This file is part of XEmacs.
22
23 ### XEmacs is free software; you can redistribute it and/or modify it
24 ### under the terms of the GNU General Public License as published by
25 ### the Free Software Foundation; either version 2, or (at your
26 ### option) any later version.
27
28 ### XEmacs is distributed in the hope that it will be useful, but
29 ### WITHOUT ANY WARRANTY; without even the implied warranty of
30 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
31 ### General Public License for more details.
32
33 ### You should have received a copy of the GNU General Public License
34 ### along with XEmacs; see the file COPYING.  If not, write to the Free
35 ### Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
36 ### 02111-1307, USA.
37
38 ### For usage, run `./configure --help'
39 ### For more detailed information on building and installing XEmacs,
40 ### read the file `INSTALL'.
41 ###
42 ### If configure succeeds, it leaves its status in config.status.
43 ### A log of configuration tests can be found in config.log.
44 ### If configure fails after disturbing the status quo,
45 ###     config.status is removed.
46 ])
47
48 dnl Since XEmacs has configuration requirements that autoconf cannot
49 dnl meet, this file is an unholy marriage of custom-baked
50 dnl configuration code and autoconf macros.
51
52 dnl We use the m4 quoting characters [ ] (as established by the
53 dnl autoconf system), so quote them like this: [[foo]]
54
55 AC_PREREQ(2.13)dnl
56 dnl Redefine some standard autoconf macros
57 dnl here is how XEmacs is different:
58 dnl - no cache file
59 dnl - non-standard options
60 dnl - support for extra-verbosity
61 dnl - ordinary libs are handled separately from X libs (might be a mistake)
62 dnl - various random kludges (e.g. -with-dnet=no)
63
64 dnl PRINT_VAR(var var ...)  prints values of shell variables
65 define([PRINT_VAR],[for var in patsubst([$1],[[
66 ]+],[ ]); do eval "echo \"$var = '\$$var'\""; done])
67
68 dnl Disable cache files:
69 dnl This is controversial, but I am convinced this is the right way to go,
70 dnl at least by default.  Otherwise there are too many surprises.
71 define([AC_CACHE_LOAD], )dnl
72 define([AC_CACHE_SAVE], )dnl
73 define([AC_CACHE_VAL], [
74 $2
75 ])dnl
76
77 dnl Redefine AC_TRY_RUN_NATIVE to not throw away stderr while running
78 dnl AC_TRY_RUN_NATIVE(PROGRAM, [ACTION-IF-TRUE [, ACTION-IF-FALSE]])
79 define([AC_TRY_RUN_NATIVE],
80 [cat > conftest.$ac_ext <<EOF
81 [#]line __oline__ "configure"
82 #include "confdefs.h"
83 [$1]
84 EOF
85 if AC_TRY_EVAL(ac_link) && test -s conftest && (./conftest; exit $?) 2>&AC_FD_CC
86 then
87 dnl Do not remove the temporary files here, so they can be examined.
88   ifelse([$2], , :, [$2])
89 else
90   conftest_rc="$?"
91   echo "configure: failed program was:" >&AC_FD_CC
92   cat conftest.$ac_ext >&AC_FD_CC
93 ifelse([$3], , , [  rm -fr conftest*
94   $3
95 ])dnl
96 fi
97 rm -fr conftest*])dnl AC_TRY_RUN_NATIVE
98
99
100 dnl Avoid spurious cross-compiling warnings from AC_TRY_RUN
101 dnl XEmacs is unlikely to ever cross-compile
102 define([AC_TRY_RUN],[AC_TRY_RUN_NATIVE([$1], [$2], [$3])])dnl
103
104 dnl Redefine AC_DEFINE* to provide more output if extra_verbose
105 dnl Set VARIABLE to VALUE, verbatim, or 1.
106 dnl AC_DEFINE(VARIABLE [, VALUE])
107 define([AC_DEFINE],
108 [{ test "$extra_verbose" = "yes" && cat << \EOF
109     Defining $1[]ifelse($#, 2, [ = $2],)
110 EOF
111 cat >> confdefs.h <<\EOF
112 [#define] $1 ifelse($#, 2, [$2], 1)
113 EOF
114 }
115 ])dnl AC_DEFINE
116
117 define([AC_DEFINE_UNQUOTED],
118 [{ test "$extra_verbose" = "yes" && cat << EOF
119     Defining $1[]ifelse($#, 2, [ = $2],)
120 EOF
121 cat >> confdefs.h <<EOF
122 [#define] $1 ifelse($#, 2, [$2], 1)
123 EOF
124 }
125 ])dnl AC_DEFINE_UNQUOTED
126
127 dnl redefine AC_CHECK_LIB in accordance with our own value of ac_link
128 dnl Add in extra kludgy check to support with_dnet=no
129 dnl Add in extra LDFLAGS arg, which PRECEDES libs
130 dnl Support --with-dnet=no
131
132 dnl AC_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
133 dnl             [, OTHER-LIBRARIES] [, LDFLAGS]]]])
134 define([AC_CHECK_LIB],
135 [ifelse([$1],dnet, [if test "$with_dnet" = "no" ; then
136 ac_cv_lib_dnet_dnet_ntoa=no
137 ifelse([$4], , , [$4]
138 )dnl
139 else
140 ])]
141 AC_CHECK_LIB_ORIG_HACKED([$1],[$2],[$3],[$4],[$5], [$6])
142 [ifelse([$1],dnet,[fi
143 ])]dnl
144 )dnl AC_CHECK_LIB
145
146 define([AC_CHECK_LIB_ORIG_HACKED],
147 [ifelse([$5],,AC_MSG_CHECKING([for $2 in -l$1]),
148 xe_msg_checking="for [$2] in -l[$1]"
149 test -n "[$5]" && xe_msg_checking="$xe_msg_checking using extra libs [$5]"
150 AC_MSG_CHECKING("$xe_msg_checking"))
151 dnl Use a cache variable name containing both the library and function name,
152 dnl because the test really is for library $1 defining function $2, not
153 dnl just for library $1.  Separate tests with the same $1 and different $2s
154 dnl may have different results.
155 ac_lib_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
156 AC_CACHE_VAL(ac_cv_lib_$ac_lib_var,
157 [xe_check_libs="$6 -l$1 $5"
158 AC_TRY_LINK(dnl
159 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
160 [/* Override any gcc2 internal prototype to avoid an error.  */
161 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
162 extern "C"
163 #endif
164 ])dnl
165 [/* We use char because int might match the return type of a gcc2
166     builtin and then its argument prototype would still apply.  */
167 char $2();
168 ]),
169             [$2()],
170             eval "ac_cv_lib_$ac_lib_var=yes",
171             eval "ac_cv_lib_$ac_lib_var=no")
172 xe_check_libs=""
173 ])dnl
174 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
175   AC_MSG_RESULT(yes)
176   ifelse([$3], ,
177 [changequote(, )dnl
178   ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
179     -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
180 changequote([, ])dnl
181   AC_DEFINE_UNQUOTED($ac_tr_lib)
182   XE_PREPEND([-l$1], LIBS)
183 ], [$3])
184 else
185   AC_MSG_RESULT(no)
186 ifelse([$4], , , [$4
187 ])dnl
188 fi
189 ])dnl AC_CHECK_LIB_ORIG_HACKED
190
191
192 dnl AC_LANG_C()
193 define([AC_LANG_C],
194 [define([AC_LANG], [C])dnl
195 ac_ext=c
196 dnl CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
197 dnl ac_cpp='$CPP $CPPFLAGS'
198 dnl ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&AC_FD_CC'
199 dnl ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC'
200 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
201 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
202 xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
203 ac_cpp='$CPP '"$xe_cppflags"
204 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&AC_FD_CC'
205 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&AC_FD_CC'
206 cross_compiling=no
207 ]) dnl AC_LANG_C
208
209 dnl The construct foo=`echo $w1 $w2 $w3` fails on some systems if $w1 = -e or -n
210 dnl So we use the following instead.
211 dnl XE_SPACE(var, words)
212 define([XE_SPACE],[
213 T=""
214 for W in $2; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
215 $1="$T"
216 ])dnl XE_SPACE
217
218 dnl XE_ADD_OBJS(foo.o ...)
219 define([XE_ADD_OBJS],
220 [extra_objs="$extra_objs [$1]" && dnl
221  if test "$extra_verbose" = "yes"; then
222    echo "    xemacs will be linked with \"[$1]\""
223  fi])dnl XE_ADD_OBJS
224
225 dnl XE_APPEND(value, varname)
226 define([XE_APPEND],
227 [[$2]="$[$2] [$1]" && dnl
228  if test "$extra_verbose" = "yes"; then echo "    Appending \"[$1]\" to \$[$2]"; fi])
229
230 dnl XE_PREPEND(value, varname)
231 define([XE_PREPEND],
232 [[$2]="[$1] $[$2]" && dnl
233  if test "$extra_verbose" = "yes"; then echo "    Prepending \"[$1]\" to \$[$2]"; fi])
234
235 dnl XE_DIE(message)
236 define([XE_DIE], [{ echo "Error:" $1 >&2; exit 1; }])
237
238 dnl XE_STRIP_4TH_COMPONENT(var)
239 dnl Changes i986-pc-linux-gnu to i986-pc-linux, as God (not RMS) intended.
240 define([XE_STRIP_4TH_COMPONENT],
241 [$1=`echo "$$1" | sed '[s/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/]'`])
242
243 dnl Initialize some variables set by options.
244 dnl The variables have the same names as the options, with
245 dnl dashes changed to underlines.
246
247 define([AC_INIT_PARSE_ARGS],[
248
249 dnl Get sane consistent behavior from various shells
250 dnl Avoid losing with weird user CDPATHs
251
252 if test -n "$ZSH_VERSION"; then
253   dnl zsh's Bourne shell emulation options
254   setopt NO_BAD_PATTERN NO_BANG_HIST NO_BG_NICE NO_EQUALS NO_FUNCTION_ARGZERO
255   setopt GLOB_SUBST NO_HUP INTERACTIVE_COMMENTS KSH_ARRAYS NO_MULTIOS NO_NOMATCH
256   setopt RM_STAR_SILENT POSIX_BUILTINS SH_FILE_EXPANSION SH_GLOB SH_OPTION_LETTERS
257   setopt SH_WORD_SPLIT BSD_ECHO IGNORE_BRACES
258   dnl zsh-3.1-beta drops core on the following
259   dnl unset CDPATH
260   if test -n "$CDPATH"; then CDPATH="."; export CDPATH; fi
261 elif test -n "$BASH_VERSION"; then
262   dnl Use Posix mode with bash
263   set -o posix
264   unset CDPATH
265 else
266   if test -n "$CDPATH"; then CDPATH="."; export CDPATH; fi
267 fi
268
269 dnl Initialize some variables set by options.
270 dnl The variables have the same names as the options, with
271 dnl dashes changed to underlines.
272 exec_prefix=NONE
273 host=NONE
274 no_create=
275 nonopt=NONE
276 no_recursion=
277 prefix=NONE
278 program_prefix=NONE
279 program_suffix=NONE
280 program_transform_name=s,x,x,
281 silent=
282 site=
283 srcdir=
284 target=NONE
285 verbose=
286 x_includes=NONE
287 x_libraries=NONE
288
289 dnl Initialize some other variables.
290 subdirs=
291 MFLAGS= MAKEFLAGS=
292 SHELL=${CONFIG_SHELL-/bin/sh}
293 dnl Maximum number of lines to put in a shell here document.
294 ac_max_here_lines=12
295 ])dnl AC_INIT_PARSE_ARGS
296
297 AC_INIT(src/lisp.h)dnl
298 AC_CONFIG_HEADER(src/config.h lwlib/config.h)
299 dnl Remove any more than one leading "." element from the path name.
300 dnl If we do not remove them, then another "./" will be prepended to
301 dnl the file name each time we use config.status, and the program name
302 dnl will get larger and larger.  This would not be a problem, except
303 dnl that since progname gets recorded in all the Makefiles this script
304 dnl produces, move-if-change thinks they're different when they're
305 dnl not.
306 dnl
307 dnl It would be nice if we could put the ./ in a \( \) group and then
308 dnl apply the * operator to that, so we remove as many leading './././'s
309 dnl as are present, but some seds (like Ultrix's sed) don't allow you to
310 dnl apply * to a \( \) group.  Bleah.
311 progname="`echo $0 | sed 's:^\./\./:\./:'`"
312
313 dnl -----------------------------
314 dnl Establish some default values
315 dnl -----------------------------
316
317 XE_APPEND(lib-src, MAKE_SUBDIR)
318 XE_APPEND(lib-src, INSTALL_ARCH_DEP_SUBDIR)
319
320 prefix='/usr/local'
321 exec_prefix='${prefix}'
322 bindir='${exec_prefix}/bin'
323 dnl FSF 19.29 changes to:
324 dnl datadir='${prefix}/share'
325 dnl sharedstatedir='${prefix}/com'
326 dnl libexecdir='${exec_prefix}/libexec'
327 datadir='${prefix}/lib'
328 statedir='${prefix}/lib'
329 libdir='${exec_prefix}/lib'
330 mandir='${prefix}/man/man1'
331 inststaticdir='${PROGNAME}'
332 instvardir='${PROGNAME}-${version}'
333 infodir='${datadir}/${instvardir}/info'
334 infopath=''
335 install_pp=''
336 lispdir='${datadir}/${instvardir}/lisp'
337 moduledir='${libdir}/${instvardir}/${configuration}/modules'
338 sitelispdir='${datadir}/${inststaticdir}/site-lisp'
339 sitemoduledir='${libdir}/${inststaticdir}/site-modules'
340 pkgdir='${datadir}/${instvardir}/lisp'
341 package_path=''
342 etcdir='${datadir}/${instvardir}/etc'
343 archlibdir='${libdir}/${instvardir}/${configuration}'
344 docdir='${archlibdir}'
345 with_netinstall="no"
346 with_prefix='yes'
347 with_site_lisp='no'
348 with_site_modules='yes'
349 with_menubars=''
350 with_scrollbars=''
351 dnl can't turn off widgets here because of systems where they are demanded
352 with_widgets=''
353 with_dialogs=''
354 with_file_coding=''
355 cpp='' cppflags='' libs='' ldflags=''
356 extra_includes=''
357 dynamic=''
358 with_x11=''
359 with_msw=''
360 rel_alloc='default'
361 with_system_malloc='default'
362 with_dlmalloc='default'
363 use_regex_malloc='yes'
364 dnl ESD is associated with crashes and lockups due to incorrect signal use.
365 with_esd_sound='no'
366 native_sound_lib=''
367 dnl These should be set to the empty string when we want gtk / gnome to
368 dnl be auto-detected instead of manually specified.
369 with_gtk='no'
370 with_gnome='no'
371 dnl use_assertions should be 'yes' by default.  Too many people in this
372 dnl world have core dumps turned off by default or \"cannot find where the
373 dnl core file went\".  At least we should get some useful output ...
374 use_assertions="yes"
375 dnl the following is set to yes or no later.
376 with_toolbars=""
377 with_tty=""
378 use_union_type="no"
379 with_dnet=""
380 dnl pdump now defaults by opsys
381 pdump=''
382 dnl dragndrop is still experimental.  When it is stable, comment out the following line:
383 with_dragndrop="no"
384 dnl Too annoying, even if mandated by IPv6 (and I'm not even sure of that)
385 with_ipv6_cname="no"
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_prefix     | \
467         with_site_modules | \
468         with_x          | \
469         with_x11        | \
470         with_gtk        | \
471         with_gnome      | \
472         with_msw        | \
473         with_gcc        | \
474         dynamic         | \
475         with_ncurses    | \
476         with_dnet       | \
477         with_socks      | \
478         with_dragndrop  | \
479         with_cde        | \
480         with_offix      | \
481         with_gpm        | \
482         with_xpm        | \
483         with_xface      | \
484         with_gif        | \
485         with_jpeg       | \
486         with_png        | \
487         with_tiff       | \
488         with_wmcommand  | \
489         with_xmu        | \
490         with_purify     | \
491         with_quantify   | \
492         with_toolbars   | \
493         with_tty        | \
494         with_xfs        | \
495         with_i18n3      | \
496         with_mule       | \
497         with_utf_2000   | \
498         with_chise      | \
499         with_text_coding| \
500         with_file_coding| \
501         with_canna      | \
502         with_wnn        | \
503         with_wnn6       | \
504         with_workshop   | \
505         with_sparcworks | \
506         with_tooltalk   | \
507         with_concord    | \
508         with_ldap       | \
509         with_postgresql | \
510         with_pop        | \
511         with_kerberos   | \
512         with_hesiod     | \
513         with_dnet       | \
514         with_infodock   | \
515         with_netinstall | \
516         with_ipv6_cname | \
517         external_widget | \
518         verbose         | \
519         extra_verbose   | \
520         usage_tracking  | \
521         use_union_type  | \
522         pdump           | \
523         debug           | \
524         use_assertions  | \
525         use_regex_malloc | \
526         memory_usage_stats | \
527         with_clash_detection | \
528         with_modules    | \
529         quick_build )
530           dnl Make sure the value given was either "yes" or "no".
531           case "$val" in
532             y | ye | yes )      val=yes ;;
533             n | no )            val=no  ;;
534             * ) USAGE_ERROR("The \`--$optname' option requires a boolean value: \`yes' or \`no'.") ;;
535           esac
536           eval "$opt=\"$val\"" ;;
537
538
539         dnl Options that take a user-supplied value, as in --x-includes=/usr/X11R6/include
540         dnl The cache-file option is ignored (for compatibility with other configures)
541         srcdir          | \
542         compiler        | \
543         cflags          | \
544         cpp             | \
545         cppflags        | \
546         libs            | \
547         ldflags         | \
548         cache_file      | \
549         native_sound_lib| \
550         site_lisp       | \
551         x_includes      | \
552         x_libraries     | \
553         site_includes   | \
554         site_libraries  | \
555         site_prefixes   | \
556         site_runtime_libraries )
557           dnl If the value was omitted, get it from the next argument.
558           if test "$valomitted" = "yes" ; then
559             dnl Get the next argument from the argument list, if there is one.
560             if test "$#" = 0 ; then
561               USAGE_ERROR("The \`--$optname' option requires a value.");
562             fi
563             val="$1"; shift
564           fi
565           eval "$opt=\"$val\""
566         ;;
567
568         dnl Options that take "yes", "no", or "default" values
569         rel_alloc | \
570         with_dlmalloc | \
571         with_debug_malloc  | use_debug_malloc | \
572         with_system_malloc | use_system_malloc )
573           case "$val" in
574             y | ye | yes )      val=yes ;;
575             n | no )            val=no  ;;
576             d | de | def | defa | defau | defaul | default ) val=default ;;
577             * ) USAGE_ERROR(["The \`--$optname' option requires one of these values:
578   \`yes', \`no', or \`default'."]) ;;
579           esac
580           case "$opt" in use_* ) opt="`echo $opt | sed s/use/with/`" ;; esac
581           eval "$opt=\"$val\""
582         ;;
583
584         dnl Has the user requested database support?
585         "with_database" )
586           with_database_berkdb=no
587           with_database_dbm=no
588           with_database_gdbm=no
589           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
590             case "$x" in
591               no ) ;;
592               b | be | ber | berk | berkd | berkdb )       with_database_berkdb=yes ;;
593               d | db | dbm )                               with_database_dbm=yes    ;;
594               g | gn | gnu | gnud | gnudb | gnudbm | gdbm) with_database_gdbm=yes   ;;
595               * ) USAGE_ERROR(["The \`--$optname' option value
596   must be either \`no' or a comma-separated list
597   of one or more of \`berkdb' and either \`dbm' or \`gnudbm'."]) ;;
598             esac
599           done
600           if test "$with_database_dbm"  = "yes" -a \
601                   "$with_database_gdbm" = "yes"; then
602           USAGE_ERROR("Only one of \`dbm' and \`gnudbm' may be specified
603   with the \`--$optname' option.")
604           fi
605         ;;
606
607         dnl Has the user requested sound support?
608         "with_sound" )
609         dnl values is a subset of all,native,nas,esd
610         dnl or their negatives: none,nonative,nonas,noesd
611           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
612             case "$x" in
613               dnl all and none are only permitted as the first in the list.
614               n | no | non | none ) new_sdefault=no ;;
615               a | al | all | both ) new_sdefault=yes ;;
616
617               native )       with_native_sound=yes ;;
618               nonative )     with_native_sound=no ;;
619
620               nas )          with_nas_sound=yes ;;
621               nonas )        with_nas_sound=no ;;
622
623               esd )          with_esd_sound=yes ;;
624               noesd )        with_esd_sound=no ;;
625
626               * ) bogus_sound=yes ;;
627             esac
628             if test "$bogus_sound" -o \
629                  \( -n "$new_sdefault" -a -n "$sound_notfirst" \) ; then
630                 types="\`all', \`none', \`(no)native', \`no(nas)', \`(no)esd'."
631                 USAGE_ERROR(["Valid types for the \`--$optname' option are:
632   $types.
633 Option \`all' or \`none' must be first in the list.
634 The default is to autodetect native and NAS sound support."])
635             elif test -n "$new_sdefault" ; then
636                 with_native_sound=$new_sdefault
637                 with_nas_sound=$new_sdefault
638                 with_esd_sound=$new_sdefault
639                 new_sdefault=   # reset this
640             fi
641             sound_notfirst=true
642           done
643         ;;
644
645         dnl Has the user specified a preferred Athena widget set?
646         dnl This bit expands any alias names out for us...
647         "with_athena" )
648           case "$val" in
649             xa | xaw )                    val=xaw    ;;
650             3 | 3d | xaw3d )              val=3d     ;;
651             dnl No `n' for next, someone may try `no'
652             ne | nex | next | naxtaw)     val=next   ;;
653             dnl Have not tested the next two...
654             9 | 95 | xaw95 )              val=95     ;;
655             xp | xpm | xawxpm )           val=xpm    ;;
656             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
657   \`xaw', \`3d', \`next', \`95', or \`xpm'."]) ;;
658           esac
659           eval "$opt=\"$val\""
660         ;;
661
662         dnl Has the user requested XIM support?
663         "with_xim" )
664           case "$val" in
665             y | ye | yes )                val=yes   ;;
666             n | no | non | none )         val=no    ;;
667             x | xl | xli | xlib )         val=xlib  ;;
668             m | mo | mot | moti | motif ) val=motif ;;
669             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
670   \`motif', \`xlib', \`yes', or \`no'."]) ;;
671           esac
672           eval "$opt=\"$val\""
673         ;;
674
675         dnl Mail locking specification
676         "mail_locking" )
677           case "$val" in
678             lockf )     val=lockf ;;
679             flock )     val=flock ;;
680             file | dot ) val=file  ;;
681             locking )   val=locking  ;;
682             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
683   \`lockf', \`flock', \`file', \`locking', or \`mmdf'."]) ;;
684           esac
685           eval "$opt=\"$val\""
686         ;;
687
688         dnl Has the user requested error-checking?
689         "error_checking" )
690           dnl value can be all, none, and/or a list of categories to check.
691           dnl Example: --error-checking=all,noextents,nobufpos
692           dnl Example: --error-checking=none,malloc,gc
693
694           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
695             case "$x" in
696               dnl all and none are only permitted as the first in the list.
697               n | no | non | none ) new_default=no ;;
698               a | al | all )        new_default=yes ;;
699
700               extents )       error_check_extents=yes ;;
701               noextents )     error_check_extents=no ;;
702
703               typecheck )     error_check_typecheck=yes ;;
704               notypecheck )   error_check_typecheck=no ;;
705
706               bufpos )        error_check_bufpos=yes ;;
707               nobufpos )      error_check_bufpos=no ;;
708
709               gc )            error_check_gc=yes ;;
710               nogc )          error_check_gc=no ;;
711
712               malloc )        error_check_malloc=yes ;;
713               nomalloc )      error_check_malloc=no ;;
714
715               byte_code )     error_check_byte_code=yes ;;
716               nobyte_code )   error_check_byte_code=no ;;
717
718               glyphs )     error_check_glyphs=yes ;;
719               noglyphs )   error_check_glyphs=no ;;
720
721               * ) bogus_error_check=yes ;;
722             esac
723             if test "$bogus_error_check" -o \
724                  \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then
725                 if test "$error_check_default" = yes ; then
726                   types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', \`nomalloc', \`noglyphs' and \`nobyte-code'."
727                 else
728                   types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', \`malloc', \`glyphs' and \`byte-code'."
729                 fi
730                 USAGE_ERROR(["Valid types for the \`--$optname' option are:
731   $types."])
732             elif test -n "$new_default" ; then
733                 error_check_extents=$new_default
734                 error_check_typecheck=$new_default
735                 error_check_bufpos=$new_default
736                 error_check_gc=$new_default
737                 error_check_malloc=$new_default
738                 error_check_byte_code=$new_default
739                 error_check_glyphs=$new_default
740                 new_default=    # reset this
741             fi
742             echeck_notfirst=true
743           done
744         ;;
745
746         dnl Has the user tried to tell us where the X files are?
747         dnl I think these are dopey, but no less than three alpha
748         dnl testers, at large sites, have said they have their X files
749         dnl installed in odd places.
750
751         dnl Has the user specified one of the path options?
752         prefix | exec_prefix | bindir | datadir | statedir | libdir | \
753         mandir | infodir | infopath | lispdir | etcdir | pkgdir | \
754         archlibdir | docdir | package_path | moduledir )
755            dnl If the value was omitted, get it from the next argument.
756            if test "$valomitted" = "yes"; then
757              if test "$#" = 0; then
758                  USAGE_ERROR("The \`--$optname' option requires a value.");
759              fi
760              val="$1"; shift
761            fi
762            eval "$opt=\"$val\""
763
764            dnl You need to synchronize this with the way the
765            dnl default values are built.
766            case "$opt" in
767              dnl prefix is taken care of by --with-prefix
768              exec_prefix ) AC_DEFINE(EXEC_PREFIX_USER_DEFINED) ;;
769              lispdir ) AC_DEFINE(LISPDIR_USER_DEFINED) ;;
770              sitelispdir ) AC_DEFINE(SITELISPDIR_USER_DEFINED) ;;
771              moduledir ) AC_DEFINE(MODULEDIR_USER_DEFINED) ;;
772              etcdir  )  AC_DEFINE(ETCDIR_USER_DEFINED) ;;
773              infodir ) AC_DEFINE(INFODIR_USER_DEFINED) ;;
774              infopath ) AC_DEFINE(INFOPATH_USER_DEFINED) ;;
775              package_path ) AC_DEFINE(PACKAGE_PATH_USER_DEFINED) ;;
776              datadir )
777                 AC_DEFINE(INFODIR_USER_DEFINED)
778                 AC_DEFINE(LISPDIR_USER_DEFINED)
779                 AC_DEFINE(MODULEDIR_USER_DEFINED)
780                 AC_DEFINE(ETCDIR_USER_DEFINED)
781                 AC_DEFINE(DOCDIR_USER_DEFINED)
782                 AC_DEFINE(ARCHLIBDIR_USER_DEFINED) ;;
783              docdir ) AC_DEFINE(DOCDIR_USER_DEFINED) ;;
784              exec_prefix | libdir | archlibdir ) AC_DEFINE(ARCHLIBDIR_USER_DEFINED) ;;
785            esac
786         ;;
787
788         dnl --no-create added by autoconf for use by config.status
789         "no_create" ) ;;
790
791         dnl Has the user asked for some help?
792         "usage" | "help" ) ${PAGER-more} ${srcdir}/configure.usage; exit 0 ;;
793
794         dnl Has the user specified the toolkit(s) to use for GUI elements?
795         "with_menubars"   | \
796         "with_scrollbars" | \
797         "with_dialogs"    | \
798         "with_widgets" )
799           case "$val" in
800             l | lu | luc | luci | lucid )               val=lucid  ;;
801             mo | mot | moti | motif )                   val=motif  ;;
802             a | at | ath | athe | athen | athena )      val=athena ;;
803             n | no | non | none )                       val=no     ;;
804             y | ye | yes )                              val=yes    ;;
805             dnl Explicit --with-widgets on command line means yes.
806             "")                                         val=yes    ;;
807             g | gt | gtk )                              val=gtk    ;;
808             ms | msw )                                  val=msw    ;;
809             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
810   \`gtk', \`lucid', \`motif', \`athena', \`yes', or \`no'."]) ;;
811           esac
812           eval "$opt=\"$val\""
813         ;;
814
815         dnl Obsolete legacy argument?  Warn, but otherwise ignore.
816         "use_minimal_tagbits" | \
817         "use_indexed_lrecord_implementation" | \
818         "run_in_place"  | \
819         "const_is_losing" | \
820         "with_gnu_make" )
821           AC_MSG_WARN([Obsolete option \`--$optname' ignored.])
822         ;;
823
824         dnl Unrecognized option?  No mercy for user errors.
825         * ) USAGE_ERROR("Unrecognized option: $arg") ;;
826
827       esac
828     ;;
829
830     dnl Assume anything with multiple hyphens is a configuration name.
831     *-*-*) configuration="$arg" ;;
832
833     dnl Unrecognized argument?  No mercy for user errors.
834     *) USAGE_ERROR("Unrecognized argument: $arg") ;;
835
836   esac
837 done
838
839 dnl -------------------------
840 dnl Finish options processing
841 dnl -------------------------
842
843 dnl Several options are equivalent to, and override, environment variables.
844 test -n "$cpp"      && CPP="$cpp"
845 test -n "$cppflags" && CPPFLAGS="$cppflags"
846 test -n "$libs"     && LIBS="$libs"
847 test -n "$ldflags"  && LDFLAGS="$ldflags"
848
849 dnl Get the arguments back.  See the diatribe on Shell Magic above.
850 eval set x "$quoted_arguments"; shift
851
852 dnl --extra-verbose implies --verbose
853 test "$extra_verbose" = "yes" && verbose=yes
854
855 dnl with_x is an obsolete synonym for with_x11
856 test -n "$with_x" && with_x11="$with_x"
857
858 dnl --with-quantify or --with-purify imply --use-system-malloc
859 if test "$with_purify" = "yes" -o "$with_quantify" = "yes"; then
860   test "$with_system_malloc" = "default" && with_system_malloc=yes
861 fi
862
863 dnl XE_CHECK_FEATURE_DEPENDENCY(feature1, feature2)
864 define([XE_CHECK_FEATURE_DEPENDENCY],
865 [if test "$with_$1 $with_$2" = "yes no"; then
866   USAGE_ERROR("--with-$1 requires --with-$2")
867 elif test "$with_$2" = "no" ; then with_$1=no
868 elif test "$with_$1" = "yes"; then with_$2=yes
869 fi
870 ])
871
872 dnl CDE requires tooltalk
873 XE_CHECK_FEATURE_DEPENDENCY(cde, tooltalk)
874
875 dnl Find the source directory.
876 case "$srcdir" in
877
878   dnl If srcdir is not specified, see if  "." or ".." might work.
879   "" )
880     for dir in "`echo $0 | sed 's|//|/|' | sed 's|/[[^/]]*$||'`" "." ".." ; do
881       if test -f "$dir/src/lisp.h" -a \
882               -f "$dir/lisp/version.el" ; then
883         srcdir="$dir"
884         break
885       fi
886     done
887     if test -z "$srcdir" ; then
888       USAGE_ERROR(["Neither the current directory nor its parent seem to
889   contain the XEmacs sources.  If you do not want to build XEmacs in its
890   source tree, you should run \`$progname' in the directory in which
891   you wish to build XEmacs, using the \`--srcdir' option to say where the
892   sources may be found."])
893     fi
894   ;;
895
896   dnl Otherwise, check if the directory they specified is okay.
897   * )
898     if test ! -f "$srcdir/src/lisp.h" -o \
899             ! -f "$srcdir/lisp/version.el" ; then
900       USAGE_ERROR(["The directory specified with the \`--srcdir' option,
901   \`$srcdir', doesn't seem to contain the XEmacs sources.  You should
902   either run the \`$progname' script at the top of the XEmacs source
903   tree, or use the \`--srcdir' option to specify the XEmacs source directory."])
904     fi
905   ;;
906 esac
907
908 dnl ###########################################################################
909 if test -z "$configuration"; then
910   dnl Guess the configuration
911   configuration=`${CONFIG_SHELL-/bin/sh} $srcdir/config.guess`
912   if test -z "$configuration"; then
913     USAGE_ERROR(["XEmacs has not been ported to this host type.
914 Try explicitly specifying the CONFIGURATION when rerunning configure."])
915   fi
916 fi
917
918 AC_PROG_LN_S
919
920 dnl Make symlinks for etc, lisp, and info directories while the path
921 dnl is still relative.  We do not symlink lock because someone may
922 dnl have stuck the source on a read-only partition.  Instead we
923 dnl create it as an actual directory later on if it does not already
924 dnl exist.
925 for dir in lisp etc man info tests; do
926   if test ! -d "$dir" ; then
927     echo Making symbolic link to "$srcdir/$dir"
928     ${LN_S} "$srcdir/$dir" "$dir"
929   fi
930 done
931
932 dnl Do our best to deal with automounter brokenness
933 dnl CANONICALIZE_PATH(varname)
934 define([CANONICALIZE_PATH],
935 [if test -d "/net"; then
936   if test -d "/tmp_mnt/net"; then tdir="tmp_mnt/net"; else tdir="tmp_mnt"; fi
937   $1=`echo "[$]$1" | \
938    sed -e "s|^${tdir}/|/net/|" -e "s|^/a/|/net/|" -e "s|^/amd/|/net/|"`
939 fi])dnl
940
941 dnl Calculate canonical name for blddir (i.e. current directory).
942 dnl PWD may already be the preferable absolute name for ".",
943 dnl but we can't trust it - it is sometimes inaccurate.
944 absolute_pwd="`pwd`";
945 if test -n "$PWD" -a "`cd $PWD && pwd`" = "$absolute_pwd"
946 then blddir="$PWD"
947 else blddir="$absolute_pwd"; CANONICALIZE_PATH(blddir)
948 fi
949 AC_SUBST(blddir)
950
951 dnl Make srcdir absolute, if not already.  It is important to
952 dnl avoid running the path through pwd unnecessary, since pwd can
953 dnl give you automounter prefixes, which can go away.
954 case "$srcdir" in
955   /* ) ;;
956   .  ) srcdir="$blddir" ;;
957   *  ) srcdir="`cd $srcdir && pwd`"; CANONICALIZE_PATH(srcdir) ;;
958 esac
959
960 dnl Check if the source directory already has a configured system in it.
961 if test `pwd` != `sh -c cd $srcdir && pwd`  \
962    && test -f "$srcdir/src/config.h"; then
963   (echo "$progname: WARNING: The directory tree \`$srcdir' is being used"
964    echo "   as a build directory right now; it has been configured in its own"
965    echo "   right.  To configure in another directory as well, you MUST"
966    echo "   use GNU make.  If you do not have GNU make, then you must"
967    echo "   now do \`make distclean' in $srcdir,"
968    echo "   and then run $progname again.") >&2
969   extrasub='/^VPATH[[    ]]*=/c\
970 vpath %.c $(srcdir)\
971 vpath %.h $(srcdir)\
972 vpath %.y $(srcdir)\
973 vpath %.l $(srcdir)\
974 vpath %.s $(srcdir)\
975 vpath %.in $(srcdir)'
976 fi
977
978 dnl ----------------------------------------
979 dnl Find out which version of XEmacs this is
980 dnl ----------------------------------------
981 . "$srcdir/version.sh" || exit 1;
982 dnl Must do the following first to determine verbosity for AC_DEFINE
983 if test -n "$emacs_is_beta"; then beta=yes; else beta=no; fi
984 : "${extra_verbose=$beta}"
985 version="${emacs_major_version}.${emacs_minor_version}"
986 AC_DEFINE_UNQUOTED(EMACS_MAJOR_VERSION, $emacs_major_version)
987 AC_DEFINE_UNQUOTED(EMACS_MINOR_VERSION, $emacs_minor_version)
988 if test -n "$emacs_beta_version" ; then
989   if test "$beta" = "yes"; then
990         version="${version}-b${emacs_beta_version}"
991         AC_DEFINE_UNQUOTED(EMACS_BETA_VERSION, $emacs_beta_version)
992   else
993         version="${version}.${emacs_beta_version}"
994         AC_DEFINE_UNQUOTED(EMACS_PATCH_LEVEL, $emacs_beta_version)
995   fi
996 fi
997 AC_DEFINE_UNQUOTED(XEMACS_CODENAME, "$xemacs_codename")
998 AC_DEFINE_UNQUOTED(EMACS_VERSION, "$version")
999
1000 if test "$with_infodock" = "yes"; then
1001   if test ! -f ../../ID-INSTALL; then
1002     echo "Cannot build InfoDock without InfoDock sources"
1003     with_infodock=no
1004   fi
1005 fi
1006
1007 if test "$with_infodock" = "yes"; then
1008   dnl InfoDock version numbers.  XEmacs will use the same style of numbering
1009   dnl after the release of XEmacs 21.0.
1010   AC_DEFINE_UNQUOTED(INFODOCK_MAJOR_VERSION, $infodock_major_version)
1011   AC_DEFINE_UNQUOTED(INFODOCK_MINOR_VERSION, $infodock_minor_version)
1012   AC_DEFINE_UNQUOTED(INFODOCK_BUILD_VERSION, $infodock_build_version)
1013   version=${infodock_major_version}.${infodock_minor_version}.${infodock_build_version}
1014   PROGNAME=infodock
1015   CPPFLAGS="$CPPFLAGS -DINFODOCK"
1016 else
1017   PROGNAME=xemacs
1018 fi
1019
1020 AC_DEFINE_UNQUOTED(EMACS_PROGNAME, "$PROGNAME")
1021
1022 dnl ----------------------------------
1023 dnl Error checking and debugging flags
1024 dnl ----------------------------------
1025 dnl Error checking default to "yes" in beta versions, to "no" in releases.
1026 dnl Same goes for --debug and --extra-verbosity.
1027 if test -n "$emacs_is_beta"; then beta=yes; else beta=no; fi
1028 test "${error_check_extents=$beta}"   = yes && AC_DEFINE(ERROR_CHECK_EXTENTS)
1029 test "${error_check_typecheck=$beta}" = yes && AC_DEFINE(ERROR_CHECK_TYPECHECK)
1030 test "${error_check_bufpos=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_BUFPOS)
1031 test "${error_check_gc=$beta}"        = yes && AC_DEFINE(ERROR_CHECK_GC)
1032 test "${error_check_malloc=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_MALLOC)
1033 test "${error_check_byte_code=$beta}" = yes && AC_DEFINE(ERROR_CHECK_BYTE_CODE)
1034 test "${error_check_glyphs=$beta}" = yes && AC_DEFINE(ERROR_CHECK_GLYPHS)
1035 dnl debug=yes must be set when error checking is present.  This should be
1036 dnl fixed up.
1037 dnl debug implies other options
1038 if test "${debug:=$beta}" = "yes"; then
1039   use_assertions=yes memory_usage_stats=yes
1040   XE_ADD_OBJS(debug.o)
1041   XE_ADD_OBJS(tests.o)
1042   AC_DEFINE(DEBUG_XEMACS)
1043 fi
1044 test "$use_assertions"     = "yes" && AC_DEFINE(USE_ASSERTIONS)
1045 test "$memory_usage_stats" = "yes" && AC_DEFINE(MEMORY_USAGE_STATS)
1046
1047 dnl ------------------------------
1048 dnl Determine the s&m files to use
1049 dnl ------------------------------
1050 dnl Given the configuration name, set machfile and opsysfile to the
1051 dnl names of the m/*.h and s/*.h files we should use.
1052
1053 dnl Canonicalize the configuration name.
1054 AC_MSG_CHECKING("host system type")
1055 dnl allow -workshop suffix on configuration name
1056 internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'`
1057 canonical=`${CONFIG_SHELL-/bin/sh} $srcdir/config.sub "$internal_configuration"`
1058 XE_STRIP_4TH_COMPONENT(configuration)
1059 XE_STRIP_4TH_COMPONENT(canonical)
1060 AC_MSG_RESULT($configuration)
1061
1062 dnl If you add support for a new configuration, add code to this
1063 dnl switch statement to recognize your configuration name and select
1064 dnl the appropriate operating system and machine description files.
1065
1066 dnl You would hope that you could choose an m/*.h file pretty much
1067 dnl based on the machine portion of the configuration name, and an s-
1068 dnl file based on the operating system portion.  However, it turns out
1069 dnl that each m/*.h file is pretty manufacturer-specific - for
1070 dnl example, apollo.h, hp9000s300.h, mega68k, news.h, and tad68k are
1071 dnl all 68000 machines; mips.h, pmax.h, and news-risc are all MIPS
1072 dnl machines.  So we basically have to have a special case for each
1073 dnl configuration name.
1074
1075 dnl As far as handling version numbers on operating systems is
1076 dnl concerned, make sure things will fail in a fixable way.  If
1077 dnl /etc/MACHINES says nothing about version numbers, be
1078 dnl prepared to handle anything reasonably.  If version numbers
1079 dnl matter, be sure /etc/MACHINES says something about it.
1080
1081 dnl Eric Raymond says we should accept strings like "sysvr4" to mean
1082 dnl "System V Release 4"; he writes, "The old convention encouraged"
1083 dnl "confusion between `system' and `release' levels'."
1084
1085 machine='' opsys=''
1086
1087 dnl Straightforward machine determination
1088 case "$canonical" in
1089   sparc-*-*        ) machine=sparc ;;
1090   alpha*-*-*       ) machine=alpha ;;
1091   vax-*-*          ) machine=vax ;;
1092   mips-dec-*       ) machine=pmax ;;
1093   mips-sgi-irix6*  ) machine=iris6d ;;
1094   mips-sgi-*       ) machine=iris4d ;;
1095   mips*-linux      ) machine=mips ;;
1096   romp-ibm-*       ) machine=ibmrt ;;
1097   rs6000-ibm-aix*  ) machine=ibmrs6000 ;;
1098   powerpc-ibm-aix* ) machine=ibmrs6000 ;;
1099   powerpc*-*       ) machine=powerpc ;;
1100   hppa-*-*         ) machine=hp800 ;;
1101   m88k-dg-*        ) machine=aviion ;;
1102   m68*-sony-*      ) machine=news ;;
1103   mips-sony-*      ) machine=news-risc ;;
1104   clipper-*        ) machine=clipper ;;
1105   arm*             ) machine=arm ;;
1106   ns32k-*          ) machine=ns32000 ;;
1107 esac
1108
1109 dnl Straightforward OS determination
1110 case "$canonical" in
1111   *-*-linux*    ) opsys=linux ;;
1112   *-*-netbsd*   ) opsys=netbsd ;;
1113   *-*-openbsd*  ) opsys=openbsd ;;
1114   *-*-nextstep* ) opsys=nextstep ;;
1115   *-*-vms       ) opsys=vms ;;
1116
1117   dnl DEC OSF
1118   *-dec-osf1.3 | *-dec-osf2* ) opsys=decosf1-3 ;;
1119   *-dec-osf1.2 | *-dec-osf1* ) opsys=decosf1-2 ;;
1120   *-dec-osf3.[[2-9]]         ) opsys=decosf3-2 ;;
1121   *-dec-osf3*                ) opsys=decosf3-1 ;;
1122   *-dec-osf[[4-9]]*          ) opsys=decosf4-0 ;;
1123
1124   dnl DEC Ultrix
1125   *-*-ultrix[[0-3]].* | *-*-ultrix4.0* ) opsys=bsd4-2 ;;
1126   *-*-ultrix4.[[12]]* ) opsys=bsd4-3 ;;
1127   *-*-ultrix* )         opsys=ultrix4-3 ;;
1128
1129   dnl AIX
1130   *-*-aix3.1*     ) opsys=aix3-1   ;;
1131   *-*-aix3.2.5    ) opsys=aix3-2-5 ;;
1132   *-*-aix3*       ) opsys=aix3-2   ;;
1133   *-*-aix4.0*     ) opsys=aix4     ;;
1134   *-*-aix4.1*     ) opsys=aix4-1   ;;
1135   *-*-aix[[4-9]]* ) opsys=aix4-2   ;;
1136
1137   dnl Other generic OSes
1138   *-gnu* )                      opsys=gnu    ;;
1139   *-*-bsd4.[[01]] )             opsys=bsd4-1 ;;
1140   *-*-bsd4.2 )                  opsys=bsd4-2 ;;
1141   *-*-bsd4.3 )                  opsys=bsd4-3 ;;
1142   *-*-aos4.2 )                  opsys=bsd4-2 ;;
1143   *-*-aos*   )                  opsys=bsd4-3 ;;
1144   *-*-sysv0    | *-*-sysvr0 )   opsys=usg5-0 ;;
1145   *-*-sysv2    | *-*-sysvr2 )   opsys=usg5-2 ;;
1146   *-*-sysv2.2  | *-*-sysvr2.2 ) opsys=usg5-2-2 ;;
1147   *-*-sysv3*   | *-*-sysvr3* )  opsys=usg5-3 ;;
1148   *-*-sysv4.1* | *-*-sysvr4.1* )opsys=usg5-4 NON_GNU_CPP=/usr/lib/cpp ;;
1149   *-*-sysv4.[[2-9]]* | *-sysvr4.[[2-9]]* )
1150         if test -z "$NON_GNU_CPP" ; then
1151           for prog in "/usr/ccs/lib/cpp" "/lib/cpp"; do
1152             if test -f "$prog"; then NON_GNU_CPP="$prog"; break; fi
1153           done
1154         fi
1155         opsys=usg5-4-2 ;;
1156     *-sysv4* | *-sysvr4* )      opsys=usg5-4 ;;
1157     *-*-mach_bsd4.3* )          opsys=mach-bsd4-3 ;;
1158 esac
1159
1160 case "$canonical" in
1161
1162   dnl NetBSD ports
1163   *-*-netbsd* )
1164     case "$canonical" in
1165       i[[3-9]]86-*-netbsd*) machine=intel386 ;;
1166       hp300-*-netbsd* | amiga-*-netbsd* | sun3-*-netbsd* | mac68k-*-netbsd* | da30-*-netbsd* | m68k-*-netbsd* )
1167                       dnl Yes, this is somewhat bogus.
1168                       machine=hp9000s300 ;;
1169       pc532-*-netbsd* | ns32k-*-netbsd* )  machine=ns32000 ;;
1170       pmax-*-netbsd*  | mips-*-netbsd*  )  machine=pmax ;;
1171     esac
1172   ;;
1173
1174   dnl OpenBSD ports
1175   *-*-openbsd* )
1176     case "${canonical}" in
1177       i386-*-openbsd*)          machine=intel386 ;;
1178       m68k-*-openbsd*)          machine=hp9000s300 ;;
1179       mipsel-*-openbsd*)        machine=pmax ;;
1180      esac
1181    ;;
1182
1183   dnl Acorn RISCiX:
1184   arm-acorn-riscix1.1* ) machine=acorn opsys=riscix1-1 ;;
1185   arm-acorn-riscix1.2* | arm-acorn-riscix ) machine=acorn opsys=riscix1-2 ;;
1186
1187   dnl Alliant machines
1188   fx80-alliant-* ) machine=alliant4     opsys=bsd4-2 ;;
1189   i860-alliant-* ) machine=alliant-2800 opsys=bsd4-3 ;;
1190
1191   dnl Altos 3068
1192   m68*-altos-sysv* ) machine=altos opsys=usg5-2 ;;
1193
1194   dnl Amdahl UTS
1195   580-amdahl-sysv* ) machine=amdahl opsys=usg5-2-2 ;;
1196
1197   dnl Apollo, Domain/OS
1198   m68*-apollo-* ) machine=apollo opsys=bsd4-3 ;;
1199
1200   dnl AT&T 3b2, 3b5, 3b15, 3b20
1201   we32k-att-sysv* ) machine=att3b opsys=usg5-2-2 ;;
1202
1203   dnl AT&T 3b1 - The Mighty Unix PC!
1204   m68*-att-sysv* ) machine=7300 opsys=usg5-2-2 ;;
1205
1206   dnl Bull machines
1207   rs6000-bull-bosx* ) machine=ibmrs6000 opsys=aix3-2 ;; # dpx20
1208   m68*-bull-sysv3*  ) machine=dpx2      opsys=usg5-3 ;; # dpx2
1209   m68*-bull-sysv2*  ) machine=sps7      opsys=usg5-2 ;; # sps7
1210
1211   dnl CCI 5/32, 6/32 -- see "Tahoe".
1212
1213   dnl Celerity
1214   celerity-celerity-bsd* ) machine=celerity opsys=bsd4-2 ;;
1215
1216   dnl Convex
1217   *-convex-bsd* | *-convex-convexos* )
1218     machine=convex opsys=bsd4-3
1219     NON_GNU_CPP="cc -E -P"
1220   ;;
1221
1222   dnl Cubix QBx/386
1223   i[[3-9]]86-cubix-sysv* ) machine=intel386 opsys=usg5-3 ;;
1224
1225   dnl Darwin, a.k.a. MacOS X (based on Mach and Freebsd)
1226   *-*-darwin*)
1227     opsys=darwin
1228     RANLIB="ranlib -c" dnl Avoids a link error with lwlib-config.c
1229     ;;
1230
1231   dnl Data General AViiON Machines
1232   i586-dg-dgux*R4*   | i586-dg-dgux5.4.4* ) machine=aviion opsys=dgux5-4r4 ;;
1233   m88k-dg-dgux5.4R3* | m88k-dg-dgux5.4.3* ) opsys=dgux5-4r3 ;;
1234   m88k-dg-dgux5.4R2* | m88k-dg-dgux5.4.2* ) opsys=dgux5-4r2 ;;
1235   m88k-dg-dgux*                           ) opsys=dgux     ;;
1236
1237   dnl Motorola Delta machines
1238   m68k-motorola-sysv* | m68000-motorola-sysv* ) machine=delta opsys=usg5-3 ;;
1239   m88k-motorola-sysv4* )
1240     dnl jbotte@bnr.ca says that UNIX_System_V <hostName> 4.0 R40V4.3 m88k mc88110
1241     dnl needs POSIX_SIGNALS and therefore needs usg5-4-2.
1242     dnl I hope there are not other 4.0 versions for this machine
1243     dnl which really need usg5-4 instead.
1244     machine=delta88k opsys=usg5-4-2
1245   ;;
1246   m88k-motorola-sysv* | m88k-motorola-m88kbcs* ) machine=delta88k opsys=usg5-3 ;;
1247
1248   dnl Dual machines
1249   m68*-dual-sysv*    ) machine=dual opsys=usg5-2   ;;
1250   m68*-dual-uniplus* ) machine=dual opsys=unipl5-2 ;;
1251
1252   dnl Encore machines
1253   ns16k-encore-bsd* ) machine=ns16000 opsys=umax ;;
1254
1255   dnl Gould Power Node and NP1
1256   pn-gould-bsd4.2* ) machine=gould     opsys=bsd4-2 ;;
1257   pn-gould-bsd4.3* ) machine=gould     opsys=bsd4-3 ;;
1258   np1-gould-bsd* )   machine=gould-np1 opsys=bsd4-3 ;;
1259
1260   dnl Harris Night Hawk machines running CX/UX (a 5000 looks just like a 4000
1261   dnl as far as XEmacs is concerned).
1262   m88k-harris-cxux* )
1263     dnl Build needs to be different on 7.0 and later releases
1264     case "`uname -r`" in
1265        [[56]].[[0-9]] ) machine=nh4000 opsys=cxux  ;;
1266        [[7]].[[0-9]]  ) machine=nh4000 opsys=cxux7 ;;
1267     esac
1268     NON_GNU_CPP="/lib/cpp"
1269   ;;
1270   dnl Harris ecx or gcx running CX/UX (Series 1200, Series 3000)
1271   m68k-harris-cxux* ) machine=nh3000 opsys=cxux ;;
1272   dnl Harris power pc NightHawk running Power UNIX (Series 6000)
1273   powerpc-harris-powerunix ) machine=nh6000 opsys=powerunix NON_GNU_CPP="cc -Xo -E -P" ;;
1274
1275   dnl Honeywell XPS100
1276   xps*-honeywell-sysv* ) machine=xps100 opsys=usg5-2 ;;
1277
1278   dnl HP 9000 series 200 or 300
1279   m68*-hp-bsd* ) machine=hp9000s300 opsys=bsd4-3 ;;
1280
1281   dnl HP-UX
1282   *-hp-hpux* )
1283     dnl Figure out machine and opsys orthogonally
1284     case "$canonical" in
1285       m68*  ) machine=hp9000s300 ;;
1286       hppa* ) machine=hp800      ;;
1287     esac
1288
1289     case "$canonical" in
1290       *-hp-hpux7*  )  opsys=hpux   ;;
1291       *-hp-hpux8*  )  opsys=hpux8  ;;
1292       *-hp-hpux9*  )  opsys=hpux9  ;;
1293       *-hp-hpux10* )  opsys=hpux10 ;;
1294       *-hp-hpux11* )  opsys=hpux11 ;;
1295       *            )  opsys=hpux   ;;
1296     esac
1297
1298     dnl HP has a broken "strcat"
1299     case "$opsys" in hpux9 | hpux10 ) XE_ADD_OBJS(strcat.o) ;; esac
1300
1301     if test "$opsys" = "hpux10" -o "$opsys" = "hpux11"; then \
1302         ansi_flag="-Ae"; else ansi_flag="-Aa"; fi
1303     NON_GNU_CC="cc $ansi_flag" NON_GNU_CPP="cc $ansi_flag -E"
1304
1305     case "$canonical" in *-hp-hpux*shr* ) opsys="${opsys}-shr" ;; esac
1306   ;;
1307
1308   dnl Orion machines
1309   orion-orion-bsd*   ) machine=orion    opsys=bsd4-2 ;;
1310   clipper-orion-bsd* ) machine=orion105 opsys=bsd4-2 ;;
1311
1312   dnl IBM machines
1313   i[[3-9]]86-ibm-aix1.1* ) machine=ibmps2-aix opsys=usg5-2-2 ;;
1314   i[[3-9]]86-ibm-aix1.[[23]]* | i[[3-9]]86-ibm-aix* ) machine=ibmps2-aix opsys=usg5-3 ;;
1315   i370-ibm-aix*) machine=ibm370aix opsys=usg5-3 ;;
1316   romp-ibm-aos*    ) opsys=bsd4-3 ;;
1317   romp-ibm-bsd*    ) opsys=bsd4-3 ;;
1318   romp-ibm-mach*   ) opsys=mach-bsd4-3 ;;
1319
1320   dnl Integrated Solutions "Optimum V"
1321   m68*-isi-bsd4.2* ) machine=isi-ov opsys=bsd4-2 ;;
1322   m68*-isi-bsd4.3* ) machine=isi-ov opsys=bsd4-3 ;;
1323
1324   dnl Intel 386 machines where we do care about the manufacturer
1325   i[[3-9]]86-intsys-sysv* ) machine=is386 opsys=usg5-2-2 ;;
1326
1327   dnl Prime EXL
1328   i[[3-9]]86-prime-sysv* ) machine=i386 opsys=usg5-3 ;;
1329
1330   dnl Sequent Symmetry running Dynix
1331   i[[3-9]]86-sequent-bsd* ) machine=symmetry opsys=bsd4-3 ;;
1332
1333   dnl Sequent Symmetry running DYNIX/ptx
1334   i[[3-9]]86-sequent-ptx* ) machine=sequent-ptx opsys=ptx NON_GNU_CPP="/lib/cpp" ;;
1335
1336   dnl Unspecified sysv on an ncr machine defaults to svr4.2.
1337   dnl (Plain usg5-4 does not turn on POSIX signals, which we need.)
1338   i[[3-9]]86-ncr-sysv* ) machine=ncr386 opsys=usg5-4-2 ;;
1339
1340   dnl Intel Paragon OSF/1
1341   i860-intel-osf1* ) machine=paragon opsys=osf1 NON_GNU_CPP=/usr/mach/lib/cpp ;;
1342
1343   dnl Intel 860
1344   i860-*-sysv4* ) machine=i860 opsys=usg5-4 NON_GNU_CC="/bin/cc" NON_GNU_CPP="/usr/ccs/lib/cpp" ;;
1345
1346   dnl Masscomp machines
1347   m68*-masscomp-rtu* ) machine=masscomp opsys=rtu ;;
1348
1349   dnl Megatest machines
1350   m68*-megatest-bsd* ) machine=mega68 opsys=bsd4-2 ;;
1351
1352   dnl Workstations sold by MIPS
1353   dnl This is not necessarily all workstations using the MIPS processor -
1354   dnl Irises are produced by SGI, and DECstations by DEC.
1355   mips-mips-usg* ) machine=mips4 ;;
1356   mips-mips-riscos4 )
1357     machine=mips4
1358     NON_GNU_CC="cc -systype bsd43"
1359     NON_GNU_CPP="cc -systype bsd43 -E"
1360     case "$canonical" in
1361       mips-mips-riscos4* ) opsys=bsd4-3  ;;
1362       mips-mips-riscos5* ) opsys=riscos5 ;;
1363     esac
1364   ;;
1365   mips-mips-bsd* ) machine=mips opsys=bsd4-3 ;;
1366   mips-mips-*    ) machine=mips opsys=usg5-2-2 ;;
1367
1368   dnl NeXT
1369   m68*-next-* | m68k-*-nextstep* ) machine=m68k opsys=nextstep ;;
1370
1371   dnl The complete machine from National Semiconductor
1372   ns32k-ns-genix* ) machine=ns32000 opsys=usg5-2 ;;
1373
1374   dnl NCR machines
1375   m68*-ncr-sysv2* | m68*-ncr-sysvr2* ) machine=tower32   opsys=usg5-2-2 ;;
1376   m68*-ncr-sysv3* | m68*-ncr-sysvr3* ) machine=tower32v3 opsys=usg5-3 ;;
1377
1378   dnl Nixdorf Targon 31
1379   m68*-nixdorf-sysv* ) machine=targon31 opsys=usg5-2-2 ;;
1380
1381   dnl Nu (TI or LMI)
1382   m68*-nu-sysv* ) machine=nu opsys=usg5-2 ;;
1383
1384   dnl Plexus
1385   m68*-plexus-sysv* ) machine=plexus opsys=usg5-2 ;;
1386
1387   dnl Pyramid machines
1388   pyramid-pyramid-bsd* ) machine=pyramid opsys=bsd4-2 ;;
1389
1390   dnl Sequent Balance
1391   ns32k-sequent-bsd4.2* ) machine=sequent opsys=bsd4-2 ;;
1392   ns32k-sequent-bsd4.3* ) machine=sequent opsys=bsd4-3 ;;
1393
1394   dnl Siemens Nixdorf
1395   mips-siemens-sysv* | mips-sni-sysv*)
1396     machine=mips-siemens opsys=usg5-4
1397     NON_GNU_CC=/usr/ccs/bin/cc
1398     NON_GNU_CPP=/usr/ccs/lib/cpp
1399   ;;
1400
1401   dnl NEC
1402   mips-nec-sysv*)
1403     machine=mips-nec
1404     NON_GNU_CC=/usr/ccs/bin/cc
1405     NON_GNU_CPP=/usr/ccs/lib/cpp
1406   ;;
1407
1408   dnl Silicon Graphics machines
1409   dnl Iris 2500 and Iris 2500 Turbo (aka the Iris 3030)
1410   m68*-sgi-iris3.5* ) machine=irist opsys=iris3-5 ;;
1411   m68*-sgi-iris3.6* | m68*-sgi-iris*) machine=irist opsys=iris3-6 ;;
1412   dnl Iris 4D
1413   mips-sgi-irix3.*    ) opsys=irix3-3 ;;
1414   mips-sgi-irix4.*    ) opsys=irix4-0 ;;
1415   mips-sgi-irix6*     ) opsys=irix6-0 ;;
1416   mips-sgi-irix5.1*   ) opsys=irix5-1 ;;
1417   mips-sgi-irix5.2*   ) opsys=irix5-2 ;;
1418   mips-sgi-irix5.*    ) opsys=irix5-3 ;;
1419   mips-sgi-irix*      ) opsys=irix5-0 ;;
1420
1421   dnl SONY machines
1422   *-sony-newsos[[34]]* | *-sony-news[[34]]* ) opsys=bsd4-3 ;;
1423   *-sony-news* ) opsys=newsos5 ;;
1424
1425   dnl Stride
1426   m68*-stride-sysv* ) machine=stride opsys=usg5-2 ;;
1427
1428   dnl Suns
1429   *-*-solaris* | *-*-sunos* | *-sun-mach* | *-sun-bsd* )
1430     dnl Hardware type
1431     case "$canonical" in
1432       m68*-sunos1* )             machine=sun1     ;;
1433       m68*-sunos2* )             machine=sun2     ;;
1434       m68* )                     machine=sun3     ;;
1435       i*86*-sun-sunos[[34]]* )   machine=sun386   ;;
1436       i*86-*-* )                 machine=intel386 ;;
1437       rs6000* )                  machine=rs6000   ;;
1438     esac
1439
1440     dnl Make $canonical even more so.
1441     case "$canonical" in *-sunos5*)
1442       canonical=`echo $canonical | sed -e s/sunos5/solaris2/`;;
1443     esac
1444
1445     dnl On SunOS 4, use /usr/lib/cpp, sans dynodump, /bin/ranlib
1446     dnl On SunOS 5, use cc -E,        need dynodump, RANLIB not needed
1447     dnl But, SunOS 5.6 no longer needs dynodump because it has a similar
1448     dnl function integrated.
1449     case "$canonical" in
1450       *-sunos4* )
1451         #test -f /usr/lib/cpp     && NON_GNU_CPP=/usr/lib/cpp ;;
1452         : ;;
1453       *-solaris2* )
1454         #test -f /usr/ccs/lib/cpp && NON_GNU_CPP=/usr/ccs/lib/cpp
1455         RANLIB=':' ;;
1456     esac
1457
1458     case "$canonical" in
1459       *-solaris* )
1460         opsys=sol2
1461         os_release_major=`uname -r | sed -e 's/^\([[0-9]]\{1,\}\)\.\([[0-9]]\{1,\}\).*/\1/'`
1462         os_release_minor=`uname -r | sed -e 's/^\([[0-9]]\{1,\}\)\.\([[0-9]]\{1,\}\).*/\2/'`
1463         case "$os_release_minor" in [[0-9]])
1464           os_release_minor="0${os_release_minor}";;
1465         esac
1466         os_release="${os_release_major}${os_release_minor}"
1467         AC_DEFINE_UNQUOTED(OS_RELEASE, $os_release) ;;
1468
1469       dnl The last Sun386 ran 4.0.
1470       i*86-*-sunos4*      ) opsys=sunos4-0      ;;
1471       *-sunos4.0*         ) opsys=sunos4-0      ;;
1472       *-sunos4.1.2*       ) opsys=sunos4-1-2    ;;
1473       *-sunos4.1.3*       ) opsys=sunos4-1-3    ;;
1474       *-sunos4.1.[[4-9]]* ) opsys=sunos4-1-4    ;;
1475       *-sunos4* | *-sunos ) opsys=sunos4-1      ;;
1476       *-mach*             ) opsys=mach-bsd4-3   ;;
1477       *                   ) opsys=bsd4-2        ;;
1478     esac
1479
1480     case "$canonical" in *-sunos4*shr* ) opsys="${opsys}-shr" ;; esac
1481
1482     dnl Watch out for a compiler guaranteed not to work.
1483     test "$opsys $CC" = "sol2 /usr/ucb/cc" && CC=""
1484   ;;
1485
1486   dnl Tadpole 68k
1487   m68*-tadpole-sysv* ) machine=tad68k opsys=usg5-3 ;;
1488
1489   dnl Tahoe machines
1490   tahoe-tahoe-bsd4.2* ) machine=tahoe opsys=bsd4-2 ;;
1491   tahoe-tahoe-bsd4.3* ) machine=tahoe opsys=bsd4-3 ;;
1492
1493   dnl Tandem Integrity S2
1494   mips-tandem-sysv* ) machine=tandem-s2 opsys=usg5-3 ;;
1495
1496   dnl Tektronix XD88
1497   m88k-tektronix-sysv3* ) machine=tekxd88 opsys=usg5-3 ;;
1498
1499   dnl Tektronix 16000 box (6130?)
1500   ns16k-tektronix-bsd* ) machine=ns16000 opsys=bsd4-2 ;;
1501   dnl Tektronix 4300
1502   dnl src/m/tek4300.h hints that this is a m68k machine.
1503   m68*-tektronix-bsd* ) machine=tek4300 opsys=bsd4-3 ;;
1504
1505   dnl Titan P2 or P3
1506   titan-titan-sysv* ) machine=titan opsys=usg5-3 ;;
1507
1508   dnl Ustation E30 (SS5E)
1509   m68*-unisys-uniplus* ) machine=ustation opsystem=unipl5-2 ;;
1510
1511   dnl Vaxen.
1512   vax-dec-* )
1513     case "$canonical" in
1514       *-sysv[[01]]* | *-sysvr[[01]]* )  opsys=usg5-0 ;;
1515       *-sysv2* | *-sysvr2* )            opsys=usg5-2 ;;
1516       *-mach* )                         opsys=mach-bsd4-3 ;;
1517     esac
1518   ;;
1519
1520   dnl Whitechapel MG1
1521   ns16k-whitechapel-* ) machine=mg1 ;;
1522
1523   dnl Wicat
1524   m68*-wicat-sysv* ) machine=wicat opsys=usg5-2 ;;
1525
1526   dnl Intel 386 machines where we do not care about the manufacturer
1527   i[[3-9]]86-*-* )
1528     machine=intel386
1529     case "$canonical" in
1530       *-isc1.* | *-isc2.[[01]]* ) opsys=386-ix ;;
1531       *-isc2.2* )               opsys=isc2-2 ;;
1532       *-isc4.0* )               opsys=isc4-0 ;;
1533       *-isc4.* )                opsys=isc4-1
1534                                 GCC_TEST_OPTIONS=-posix
1535                                 NON_GCC_TEST_OPTIONS=-Xp
1536                                 ;;
1537       *-isc* )                  opsys=isc3-0 ;;
1538       *-esix5* )                opsys=esix5r4 NON_GNU_CPP=/usr/lib/cpp ;;
1539       *-esix* )                 opsys=esix ;;
1540       *-mach* )                 opsys=mach-bsd4-3 ;;
1541       *-xenix* )                opsys=xenix ;;
1542       *-sco3.2v4* )             opsys=sco4 NON_GNU_CPP=/lib/cpp  ;;
1543       *-bsd386* | *-bsdi1* )    opsys=bsd386 ;;
1544       *-bsdi4* )                opsys=bsdos4 ;;
1545       *-bsdi3* )                opsys=bsdos3 ;;
1546       *-bsdi2.1* )              opsys=bsdos2-1 ;;
1547       *-bsdi2* )                opsys=bsdos2 ;;
1548       *-sco3.2v5* )             opsys=sco5 ;;
1549       *-sysv5* )                opsys=sco7 ;;
1550       *-386bsd* )               opsys=386bsd ;;
1551       *-freebsd* )              opsys=freebsd ;;
1552       *-nextstep* )             opsys=nextstep ;;
1553       *-pc-cygwin* )            opsys=cygwin32 ;;
1554       *-pc-mingw* )             opsys=mingw32 ;
1555                                 test -z "$with_tty" && with_tty="no";;
1556       dnl Otherwise, we fall through to the generic opsys code at the bottom.
1557     esac
1558   ;;
1559
1560   dnl Linux/68k
1561   m68k-*-linux* ) machine=m68k opsys=linux ;;
1562
1563 esac
1564
1565 dnl Initialize machine from $canonical if not in our database above.
1566 test -z "$machine" && machine=`echo $canonical | sed 's/-.*$//'`
1567
1568 dnl Initialize opsys from `uname -s` if not in our database above.
1569 test -z "$opsys"   && opsys=`uname -s | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
1570
1571 dnl Use configure-time autodetection if s&m not available
1572 if test -r "${srcdir}/src/m/${machine}.h"; then
1573   machfile="m/${machine}.h"
1574   AC_DEFINE_UNQUOTED(config_machfile, "$machfile")
1575 else
1576   echo "XEmacs has no builtin knowledge of \`$machine' machines."
1577   echo "Using configure-time autodetection only."
1578 fi
1579
1580 if test -r "${srcdir}/src/s/${opsys}.h"; then
1581   opsysfile="s/${opsys}.h"
1582   AC_DEFINE_UNQUOTED(config_opsysfile, "$opsysfile")
1583 else
1584   echo "XEmacs has no builtin knowledge of \`$opsys' operating systems."
1585   echo "Using configure-time autodetection only."
1586 fi
1587
1588 dnl --------------------------------------------------------------
1589 dnl $opsys detection complete; defaults depending on $opsys follow
1590 dnl --------------------------------------------------------------
1591
1592 if test -z "$pdump"; then
1593   case "$opsys" in
1594     linux* )  pdump=yes ;;    dnl glibc 2.3.1 seems to hose unexec
1595     darwin )  pdump=yes ;;    dnl No "native" working dumper available
1596     cygwin* ) pdump=yes ;;    dnl unexec is broken
1597     *)        pdump=no ;;
1598   esac
1599 fi
1600
1601 if test -z "$dynamic"; then
1602   case "$opsys" in
1603     hpux* | sunos4* ) dynamic=no ;;
1604     *) dynamic=yes ;;
1605   esac
1606 fi
1607 if test "$dynamic" = "yes"; then
1608   case "$opsys" in
1609     hpux* | sunos4* | sco5 ) opsys="${opsys}-shr" ;;
1610     decosf* ) ld_call_shared="-call_shared" ;;
1611     darwin ) AC_DEFINE(DLSYM_NEEDS_UNDERSCORE) ;;
1612   esac
1613 else dnl "$dynamic" = "no"
1614   case "$opsys" in
1615     sol2 )
1616       echo "Static linking is not supported on Solaris 2."
1617       echo "Rerun configure without specifying --dynamic=no."
1618       exit 1 ;;
1619     linux   ) ld_call_shared="-Bstatic" ;;
1620     decosf* ) ld_call_shared="-non_shared" ;;
1621   esac
1622 fi
1623
1624 dnl Use xlc by default on AIX
1625 case "$opsys" in aix*) NON_GNU_CC=xlc ;; esac
1626
1627 stack_trace_eye_catcher=`echo ${PROGNAME}_${version}_${canonical} | sed 'y/.-/__/'`
1628 AC_DEFINE_UNQUOTED(STACK_TRACE_EYE_CATCHER, $stack_trace_eye_catcher)
1629
1630 dnl --------------------------------------------------
1631 dnl Determine the compiler, set up for feature testing
1632 dnl --------------------------------------------------
1633
1634 dnl Sun Development environment support
1635 test "$with_sparcworks" = "yes" && with_workshop=yes # compatibility alias
1636 XE_CHECK_FEATURE_DEPENDENCY(workshop, tooltalk)
1637 if test "$with_workshop" = "yes"; then
1638   AC_DEFINE(SUNPRO)
1639   XE_ADD_OBJS(sunpro.o)
1640 fi
1641
1642 if test "$with_clash_detection" != "no"; then
1643   AC_DEFINE(CLASH_DETECTION)
1644   XE_ADD_OBJS(filelock.o)
1645 fi
1646
1647 dnl Choose a compiler from (in order)
1648 dnl --compiler, env var CC, with_gcc=no && ${NON_GNU_CC:-cc}, AC_PROG_CC
1649 test -n "$compiler" && CC="$compiler"
1650 if test "$with_gcc" = "no"; then dnl Try to find a non-gcc compiler
1651   case "$CC" in "" | *gcc* ) CC="${NON_GNU_CC-cc}" ;; esac
1652 fi
1653
1654 dnl If we don't set CFLAGS here, AC_PROG_CC will set it.
1655 dnl But we know better what's good for us, so we do our own
1656 dnl computation of real CFLAGS later.
1657 dnl --cflags overrides environment variable CFLAGS
1658 test "${cflags-unset}" != unset && CFLAGS="$cflags"
1659 if test "${CFLAGS-unset}" != unset
1660   then cflags_specified=yes;
1661   else cflags_specified=no;
1662 fi
1663
1664 xe_save_CFLAGS="$CFLAGS"
1665
1666 AC_PROG_CC dnl Autoconf has its own magic for compiler autodetection
1667
1668 dnl Retry using random guesswork if AC_PROG_CC got it wrong...
1669 if   test "$with_gcc" = "no"  -a "$GCC" = "yes"; then
1670   CC=${NON_GNU_CC-cc}
1671   AC_PROG_CC
1672 elif test "$with_gcc" = "yes" -a "$GCC" != "yes" ; then
1673   CC=gcc
1674   AC_PROG_CC
1675 fi
1676 CFLAGS="$xe_save_CFLAGS"
1677
1678 dnl Figure out what C preprocessor to use.
1679
1680 dnl On Sun systems, people sometimes set up the variable CPP
1681 dnl with a value that is a directory, not an executable at all.
1682 dnl Detect that case, and ignore that value.
1683 test -n "$CPP" -a -d "$CPP" && CPP=
1684
1685 test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
1686
1687 AC_PROG_CPP
1688
1689 dnl --------------------------------------------------------------------
1690 dnl Compiler feature macros
1691 dnl --------------------------------------------------------------------
1692
1693 AC_AIX dnl Defines _ALL_SOURCE on AIX.
1694
1695 dnl We want feature macros defined here *and* in config.h.in, so that
1696 dnl the compilation environment at configure time and compile time agree.
1697
1698 AC_MSG_CHECKING(for GNU libc)
1699 AC_TRY_COMPILE([#include <features.h>],[
1700 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
1701 #error Not a GNU libc system :-(
1702 ******* ======= ******** &&&&&&&&
1703 #endif
1704 ], have_glibc=yes, have_glibc=no)
1705 AC_MSG_RESULT($have_glibc)
1706 dnl I'm tired of pop being broken with GLIBC -slb
1707 dnl Well. then why not fix fucking pop?
1708 test "$have_glibc" = "yes" && AC_DEFINE(_GNU_SOURCE)
1709
1710 dnl We'd like to use vendor extensions, where available.
1711 dnl We'd like to use functions from the latest Unix98 standards.
1712 dnl See http://www.opengroup.org/onlinepubs/007908799/xsh/compilation.html
1713 case "$opsys" in
1714   sol2)
1715    AC_DEFINE(__EXTENSIONS__)
1716    dnl Solaris 2 before 2.5 had some bugs with feature test macro interaction.
1717    if test "$os_release" -ge 505; then
1718      AC_DEFINE(_XOPEN_SOURCE,500)
1719      AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
1720    fi ;;
1721   linux)
1722     AC_DEFINE(_POSIX_C_SOURCE,199506L)
1723     AC_DEFINE(_XOPEN_SOURCE,500)
1724     AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
1725     ;;
1726 esac
1727
1728 dnl Identify compilers to enable compiler-specific hacks.
1729 dnl Add support for other compilers HERE!
1730 dnl GCC is already identified elsewhere.
1731 AC_TRY_RUN([int main () {
1732 #if defined __SUNPRO_C
1733 return 11;
1734 #elif defined __DECC
1735 return 12;
1736 #elif defined __USLC__ && defined __SCO_VERSION__
1737 return 13;
1738 #elif defined __INTEL_COMPILER
1739 return 14;
1740 #else
1741 return 0;
1742 #endif
1743 }], [],
1744 [case "$conftest_rc" in
1745   11) echo "You appear to be using the SunPro C compiler." ; __SUNPRO_C=yes ;;
1746   12) echo "You appear to be using the DEC C compiler."    ; __DECC=yes ;;
1747   13) echo "You appear to be using the SCO C compiler."    ; __USLC__=yes ;;
1748   14) echo "You appear to be using the Intel C++ compiler."; __ICC=yes
1749       dnl Newer versions of icc claim to be GCC
1750       GCC=no ;;
1751 esac])
1752
1753
1754 dnl case "$canonical" in
1755 dnl   *-sun-sunos* ) test "$CPP" = "acc -E" && CPP="acc -E -Xs" ;;
1756 dnl esac
1757
1758 dnl --------------------------------------------------------------------
1759 dnl Extract some information from the operating system and machine files
1760 dnl --------------------------------------------------------------------
1761
1762 echo "Extracting information from the machine- and system-dependent headers..."
1763
1764 dnl It is not important that this name contain the PID; you cannot run
1765 dnl two configures in the same directory and have anything work
1766 dnl anyway.
1767 tempcname="conftest.c"
1768
1769 dnl CPP_to_sh(CPP_SYMBOL, SH_VAR, DEFAULT_VALUE)
1770 define([CPP_to_sh],
1771 [[#]ifndef [$1]
1772 [#]define [$1]ifelse([$3],,, [ "$3"])
1773 [#]endif
1774 configure___ [$2]=[$1]
1775 ])dnl CPP_to_sh
1776
1777 dnl CPP_boolean_to_sh(CPP_SYMBOL, SH_VAR)
1778 define([CPP_boolean_to_sh],
1779 [[#]ifdef [$1]
1780 configure___ [$2]=yes
1781 [#]else
1782 configure___ [$2]=no
1783 [#]endif
1784 ])dnl CPP_boolean_to_sh
1785
1786 cat > $tempcname < confdefs.h
1787 cat >> $tempcname <<EOF
1788 #define NOT_C_CODE
1789 #define C_SWITCH_SITE
1790 #define C_SWITCH_X_SITE
1791 #define LD_SWITCH_SITE
1792 #define LD_SWITCH_X_SITE
1793 #define LD_SWITCH_X_SITE_AUX
1794 #define OS_RELEASE $os_release
1795
1796 #ifdef config_opsysfile
1797 #include "$srcdir/src/$opsysfile"
1798 #endif
1799
1800 #ifdef config_machfile
1801 #include "$srcdir/src/$machfile"
1802 #endif
1803
1804 CPP_to_sh(LIBS_MACHINE, libs_machine)
1805 CPP_to_sh(LIBS_SYSTEM,  libs_system)
1806 CPP_to_sh(LIBS_TERMCAP, libs_termcap)
1807 CPP_to_sh(LIB_STANDARD, libs_standard)
1808
1809 CPP_to_sh(OBJECTS_MACHINE, objects_machine)
1810 CPP_to_sh(OBJECTS_SYSTEM,  objects_system)
1811
1812 CPP_to_sh(C_SWITCH_MACHINE,   c_switch_machine)
1813 CPP_to_sh(C_SWITCH_SYSTEM,    c_switch_system)
1814
1815 CPP_to_sh(LD_SWITCH_MACHINE,  ld_switch_machine)
1816 CPP_to_sh(LD_SWITCH_SYSTEM,   ld_switch_system)
1817
1818 CPP_to_sh(UNEXEC, unexec, unexec.o)
1819
1820 CPP_to_sh(LD_SWITCH_SHARED, ld_switch_shared, -c)
1821
1822 #define ORDINARY_LD "\$(CC) \$(CFLAGS)"
1823 configure___ ordinary_ld=ORDINARY_LD
1824
1825 #ifdef ORDINARY_LINK
1826 #define LD ORDINARY_LD
1827 #else /* no ORDINARY LINK */
1828 #ifdef COFF_ENCAPSULATE
1829 #define LD "\$(CC) -nostdlib"
1830 #else /* not COFF_ENCAPSULATE */
1831 #ifdef LINKER
1832 #define LD LINKER
1833 #else /* ! defined (LINKER) */
1834 #define LD "ld"
1835 #endif /* ! defined (LINKER) */
1836 #endif /* ! defined (COFF_ENCAPSULATE) */
1837 #endif /* not ORDINARY_LINK */
1838 configure___ ld=LD
1839
1840 CPP_to_sh(LIB_GCC, lib_gcc)
1841 CPP_to_sh(LD_TEXT_START_ADDR, ld_text_start_addr)
1842
1843 #if ! defined (ORDINARY_LINK) && !defined (START_FILES)
1844 #ifdef NO_REMAP
1845 #ifdef COFF_ENCAPSULATE
1846 #define START_FILES "pre-crt0.o /usr/local/lib/gcc-crt0.o"
1847 #else /* ! defined (COFF_ENCAPSULATE) */
1848 #define START_FILES "pre-crt0.o /lib/crt0.o"
1849 #endif /* ! defined (COFF_ENCAPSULATE) */
1850 #else /* ! defined (NO_REMAP) */
1851 #define START_FILES "ecrt0.o"
1852 #endif /* ! defined (NO_REMAP) */
1853 #endif /* no ORDINARY_LINK */
1854 #ifndef START_FILES
1855 #define START_FILES
1856 #endif
1857 configure___ start_files=START_FILES
1858
1859 CPP_boolean_to_sh(ORDINARY_LINK, ordinary_link)
1860 CPP_boolean_to_sh(SYSTEM_MALLOC, system_malloc)
1861 CPP_boolean_to_sh(TERMINFO, have_terminfo)
1862 dnl The MAIL_USE_xxx variables come from the s&m headers
1863 CPP_boolean_to_sh(MAIL_USE_FLOCK, mail_use_flock)
1864 CPP_boolean_to_sh(MAIL_USE_LOCKF, mail_use_lockf)
1865 CPP_boolean_to_sh(MAIL_USE_LOCKING, mail_use_locking)
1866 CPP_boolean_to_sh(HAVE_WIN32_PROCESSES, win32_processes)
1867 EOF
1868
1869 dnl The value of CPP is a quoted variable reference, so we need to do this
1870 dnl to get its actual value...
1871 CPP=`eval "echo $CPP $CPPFLAGS"`
1872 define(TAB, [   ])dnl
1873 changequote(, )dnl
1874 eval `$CPP -Isrc $tempcname \
1875         | sed -n -e "s/[ TAB]*=[ TAB\"]*/='/" -e "s/[ TAB\"]*\$/'/" -e "s/^configure___//p"`
1876 changequote([, ])dnl
1877
1878 rm $tempcname
1879
1880 if test "$pdump" = "yes"; then
1881   ordinary_link="yes"
1882   ld="${ordinary_ld}"
1883   start_files=
1884   libs_standard=
1885   unexec=
1886   lib_gcc=
1887 fi
1888
1889 dnl For debugging...
1890 test "$extra_verbose" = "yes" && \
1891   PRINT_VAR(libs_machine libs_system libs_termcap libs_standard
1892   objects_machine objects_system c_switch_machine c_switch_system
1893   ld_switch_machine ld_switch_system unexec ld_switch_shared
1894   ld lib_gcc ld_text_start_addr start_files ordinary_link
1895   have_terminfo mail_use_flock mail_use_lockf) && echo ""
1896
1897 dnl Pick up mingw include path
1898 dnl We only cope with headers in mingw, not mingw32: no previous version of
1899 dnl XEmacs supported mingw and cygnus have made this incompatible change
1900 dnl so we just go with the flow.
1901 case "$opsys" in mingw* | cygwin*)
1902   cygwin_include=`eval "gcc -print-file-name=libc.a"` ;
1903   cygwin_include=`eval "dirname $cygwin_include"` ;
1904   cygwin_include="-I$cygwin_include/../include" ;
1905   extra_includes="$cygwin_include/mingw $cygwin_include" ;
1906   case "$opsys" in mingw*)
1907     XE_APPEND($extra_includes, c_switch_system) ;;
1908   esac
1909   ;;
1910 esac
1911
1912 dnl Non-ordinary link usually requires -lc
1913 test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc"
1914
1915 dnl -----------------------
1916 dnl Compiler-specific hacks
1917 dnl -----------------------
1918
1919 dnl DEC C `-std1' means ANSI C mode
1920 test "$__DECC" = "yes" && XE_APPEND(-std1, c_switch_site)
1921
1922 dnl Some versions of SCO native compiler need -Kalloca
1923 if test "$__USLC__" = yes; then
1924   AC_MSG_CHECKING(for whether the -Kalloca compiler flag is needed)
1925   need_kalloca=no
1926   AC_TRY_LINK([], [void *x = alloca(4);], [:], [
1927     xe_save_c_switch_system="$c_switch_system"
1928     c_switch_system="$c_switch_system -Kalloca"
1929     AC_TRY_LINK([], [void *x = alloca(4);], [ need_kalloca=yes ])
1930     c_switch_system="$xe_save_c_switch_system"])
1931   AC_MSG_RESULT($need_kalloca)
1932   test "$need_kalloca" = "yes" && XE_APPEND(-Kalloca,c_switch_system)
1933 fi
1934
1935 dnl Calculate value of CFLAGS:
1936 dnl Use either command line flag, environment var, or autodetection
1937 if test "$cflags_specified" = "no"; then
1938   dnl Following values of CFLAGS are known to work well.
1939   dnl Should we take debugging options into consideration?
1940   if   test "$GCC" = "yes"; then
1941     CFLAGS="-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes"
1942     dnl Yuck, bad compares have been worth at least 3 crashes!
1943     CFLAGS="$CFLAGS -Wsign-compare"
1944     dnl XEmacs is known not to be strict-aliasing-safe.
1945     case "`gcc -v --help 2>&1`" in
1946       *-fstrict-aliasing* ) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
1947     esac
1948     dnl You get five zillion shadowing warnings with g++.
1949     dnl Even with gcc, -Wshadow is questionable because of its complaints
1950     dnl about parameters with the same names as global functions.
1951     if test "$xemacs_compiler" != "g++"; then
1952       CFLAGS="$CFLAGS -Wshadow"
1953     fi
1954     dnl glibc is intentionally not `-Wpointer-arith'-clean.
1955     dnl Ulrich Drepper has rejected patches to fix the glibc header files.
1956     test "$have_glibc" != "yes" && CFLAGS="$CFLAGS -Wpointer-arith"
1957     dnl I'm not convinced this is a good idea any more. -sb
1958     dnl test "$opsys $machine" = "linux intel386" && \
1959     dnl CFLAGS="$CFLAGS -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2"
1960   elif test "$__SUNPRO_C" = "yes"; then
1961     case "$opsys" in
1962       sol2    ) CFLAGS="-v -xO4" ;;
1963       sunos4* ) CFLAGS="-xO2";;
1964     esac
1965   elif test "$__DECC" = "yes"; then
1966     CFLAGS="-O3"
1967   elif test "$CC" = "xlc"; then
1968     CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000"
1969   elif test "$__ICC" = "yes"; then
1970     CFLAGS="-g -O3 -Ob2 -Wall -W1"
1971   dnl ### Add optimal CFLAGS support for other compilers HERE!
1972   else
1973     CFLAGS="-O" ;dnl The only POSIX-approved flag
1974   fi
1975 fi
1976
1977 dnl Search for GCC specific build problems we know about
1978 if test "$GCC" = "yes"; then
1979 AC_MSG_CHECKING(for buggy gcc versions)
1980 GCC_VERSION=`$CC --version`
1981 case `uname -s`:`uname -m`:$GCC_VERSION in
1982         dnl egcs 2.90.21 (egcs-1.00 release)
1983         dnl egcs 2.90.29 (egcs-1.0.3 release)
1984     *:sun4*:2.8.1|*:sun4*:egcs-2.90.*)
1985         dnl Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures
1986         dnl without also using `-fno-schedule-insns'.
1987         case "$CFLAGS" in
1988             *-O2*|*-O3*)
1989                 case "$CFLAGS" in
1990                     *-fno-schedule-insns*) ;;
1991                     *)
1992                         AC_MSG_RESULT(yes)
1993                         AC_MSG_WARN(Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures)
1994                         AC_MSG_WARN(without also using -fno-schedule-insns.)
1995                         AC_MSG_ERROR(Aborting due to known problem)
1996                         ;;
1997                 esac
1998                 ;;
1999         esac
2000         ;;
2001         dnl egcs-2.91.57 (egcs-1.1 release)
2002         dnl egcs-2.91.66 (egcs-1.1.2 release)
2003     Linux:alpha:egcs-2.91.*)
2004         AC_MSG_RESULT(yes)
2005         AC_MSG_WARN(There have been reports of egcs-1.1 not compiling XEmacs correctly on)
2006         AC_MSG_WARN(Alpha Linux.  There have also been reports that egcs-1.0.3a is O.K.)
2007         AC_MSG_ERROR(Aborting due to known problem)
2008         ;;
2009     *:i*86*:2.7.2*)
2010         case "$CFLAGS" in
2011             *-O2*|*-O3*)
2012                 case "$GCC_VERSION" in
2013                     2.7.2)
2014                         case "$CFLAGS" in
2015                             *-fno-strength-reduce*) ;;
2016                             *)
2017                                 AC_MSG_RESULT(yes)
2018                                 AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using)
2019                                 AC_MSG_WARN(-fno-strength-reduce.)
2020                                 AC_MSG_ERROR(Aborting due to known problem)
2021                                 ;;
2022                         esac
2023                         ;;
2024                 esac
2025                 case "$CFLAGS" in
2026                  *-fno-caller-saves*) ;;
2027                  *)
2028                     AC_MSG_RESULT(yes)
2029                     AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using)
2030                     AC_MSG_WARN(-fno-caller-saves.)
2031                     AC_MSG_ERROR(Aborting due to known problem)
2032                     ;;
2033                 esac
2034                 ;;
2035         esac
2036         ;;
2037 esac
2038 AC_MSG_RESULT(no)
2039 fi
2040
2041 dnl GNU ld now defaults to combreloc, which screws up unexec, but not pdump.
2042 dnl Note that it's OK if the GNU style long option causes non-GNU ld to barf
2043 dnl a usage message, that's often good enough.  Please report it, though.
2044 dnl #### Should make this Solaris-friendly.
2045 dnl Link with -z nocombreloc for now.
2046 if test "$pdump" != "yes"; then
2047   AC_MSG_CHECKING(for \"-z nocombreloc\" linker flag)
2048   case "`ld --help 2>&1`" in
2049     *-z\ nocombreloc* ) AC_MSG_RESULT(yes)
2050       XE_PREPEND(-z nocombreloc, ld_switch_site) ;;
2051     *) AC_MSG_RESULT(no) ;;
2052   esac
2053 fi
2054
2055
2056 dnl Inform compiler that certain flags are meant for the linker
2057 dnl XE_PROTECT_LINKER_FLAGS(shell_var)
2058 define([XE_PROTECT_LINKER_FLAGS], [
2059 if test "$GCC" = "yes"; then
2060   set x $[$1]; shift; [$1]=""
2061   while test -n "[$]1"; do
2062     case [$]1 in
2063       -L  | -l  | -u               ) [$1]="$[$1] [$]1 [$]2"; shift ;;
2064       -L* | -l* | -u* | -Wl* | -pg ) [$1]="$[$1] [$]1" ;;
2065       -Xlinker* ) ;;
2066       * ) [$1]="$[$1] -Xlinker [$]1" ;;
2067     esac
2068     shift
2069   done
2070 fi])dnl
2071 XE_PROTECT_LINKER_FLAGS(ld_switch_system)
2072 XE_PROTECT_LINKER_FLAGS(ld_switch_machine)
2073 XE_PROTECT_LINKER_FLAGS(ld_switch_site)
2074 XE_PROTECT_LINKER_FLAGS(LDFLAGS)
2075 XE_PROTECT_LINKER_FLAGS(ld_call_shared)
2076
2077 dnl Add s&m-determined objects (including unexec) to link line
2078 test -n "$objects_machine" && XE_ADD_OBJS($objects_machine)
2079 test -n "$objects_system"  && XE_ADD_OBJS($objects_system)
2080 test -n "$unexec"          && test ! "$pdump" = "yes" && XE_ADD_OBJS($unexec)
2081 test "$pdump" = "yes" && XE_ADD_OBJS(dumper.o)
2082
2083 dnl Dynodump (Solaris 2.x, x<6)
2084 AC_MSG_CHECKING(for dynodump)
2085 if test "$unexec" != "unexsol2.o"; then
2086   AC_MSG_RESULT(no)
2087 else
2088   AC_MSG_RESULT(yes)
2089   AC_DEFINE(DYNODUMP)
2090   XE_APPEND(dynodump, MAKE_SUBDIR)
2091   XE_APPEND(dynodump, SRC_SUBDIR_DEPS)
2092   case "$machine" in
2093     sparc   ) dynodump_arch=sparc ;;
2094     *86*    ) dynodump_arch=i386  ;;
2095     powerpc ) dynodump_arch=ppc   ;;
2096   esac
2097 fi
2098
2099 dnl Feed s&m crud to src/Makefile
2100
2101 dnl Linux/powerpc needs the following magic for some reason
2102 dnl [Not needed with YellowDog 2.3 and causes link problems with YellowDog 3.0,
2103 dnl the two most popular PowerPC distributions.]
2104 dnl test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript"
2105
2106 if test "$unexec" = "unexaix.o"; then
2107 dnl AIX needs various hacks to make static linking work.
2108   if   test "$dynamic" = "no"; then
2109   start_flags="-Wl,-bnso,-bnodelcsect"
2110   test "$GCC" = "yes" && start_flags="-B/bin/ ${start_flags}"
2111   for f in "/lib/syscalls.exp" "/lib/threads.exp"; do
2112     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; fi
2113   done
2114   for f in "/usr/lpp/X11/bin/smt.exp" "/usr/bin/X11/smt.exp"; do
2115     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; break; fi
2116   done
2117   AC_CHECK_LIB(C, terminateAndUnload, XE_APPEND(-lC, libs_system))
2118   fi
2119 elif test -n "$ld_text_start_addr"; then
2120   start_flags="-T $ld_text_start_addr -e __start"
2121 fi
2122 AC_SUBST(start_flags)
2123
2124 AC_SUBST(ld_switch_shared)
2125 AC_SUBST(start_files)
2126 if test "$ordinary_link" = "no" -a "$GCC" = "yes"; then
2127  test -z "$linker" &&  linker='$(CC) -nostdlib'
2128  test -z "$lib_gcc" && lib_gcc='`$(CC) -print-libgcc-file-name`'
2129 fi
2130 test "$GCC" != "yes" && lib_gcc=
2131 AC_SUBST(ld)
2132 AC_SUBST(lib_gcc)
2133
2134 dnl ---------------------------------------------------------------
2135 dnl Add site and system specific flags to compile and link commands
2136 dnl ---------------------------------------------------------------
2137
2138 dnl Allow use of either ":" or spaces for lists of directories
2139 define(COLON_TO_SPACE,
2140   [case "$[$1]" in *:* [)] [$1]="`echo '' $[$1] | sed -e 's/^ //' -e 's/:/ /g'`";; esac])dnl
2141
2142 dnl --site-libraries (multiple dirs)
2143 COLON_TO_SPACE(site_libraries)
2144 if test -n "$site_libraries"; then
2145   for arg in $site_libraries; do
2146     case "$arg" in
2147      -* ) ;;
2148      * ) test -d "$arg" || \
2149            XE_DIE("Invalid site library \`$arg': no such directory")
2150        arg="-L${arg}" ;;
2151     esac
2152     XE_APPEND($arg, ld_switch_site)
2153   done
2154 fi
2155
2156 dnl --site-includes (multiple dirs)
2157 COLON_TO_SPACE(site_includes)
2158 if test -n "$site_includes"; then
2159   for arg in $site_includes; do
2160     case "$arg" in
2161       -* ) ;;
2162       * ) test -d "$arg" || \
2163            XE_DIE("Invalid site include \`$arg': no such directory")
2164       arg="-I${arg}" ;;
2165     esac
2166     XE_APPEND($arg, c_switch_site)
2167   done
2168 fi
2169
2170 dnl --site-prefixes (multiple dirs)
2171 dnl --site-prefixes=dir1:dir2 is a convenient shorthand for
2172 dnl --site-libraries=dir1/lib:dir2/lib --site-includes=dir1/include:dir2/include
2173 dnl Site prefixes take precedence over the standard places, but not over
2174 dnl site-includes and site-libraries.
2175 COLON_TO_SPACE(site_prefixes)
2176 if test -n "$site_prefixes"; then
2177   for dir in $site_prefixes; do
2178     lib_dir="${dir}/lib"
2179     inc_dir="${dir}/include"
2180     if test ! -d "$dir"; then
2181       XE_DIE("Invalid site prefix \`$dir': no such directory")
2182     elif test ! -d "$lib_dir"; then
2183       XE_DIE("Invalid site prefix \`$dir': no such directory \`$lib_dir'")
2184     else
2185       if test -d "$inc_dir"; then
2186         XE_APPEND("-I$inc_dir", c_switch_site)
2187       fi
2188       XE_APPEND("-L$lib_dir", ld_switch_site)
2189     fi
2190   done
2191 fi
2192
2193 dnl GNU software installs by default into /usr/local/{include,lib}
2194 dnl if test -d "/usr/local/include" -a -d "/usr/local/lib"; then
2195 dnl   XE_APPEND("-L/usr/local/lib",    ld_switch_site)
2196 dnl   XE_APPEND("-I/usr/local/include", c_switch_site)
2197 dnl fi
2198
2199 dnl Extra system-specific library directories - please add to list
2200 for dir in "/usr/ccs/lib"; do
2201   test -d "$dir" && XE_APPEND(-L${dir}, ld_switch_system)
2202 done
2203
2204 dnl --site-runtime-libraries (multiple dirs)
2205 COLON_TO_SPACE(site_runtime_libraries)
2206 if test -n "$site_runtime_libraries"; then
2207   LD_RUN_PATH="`echo $site_runtime_libraries | sed -e 's/  */:/g'`"
2208   export LD_RUN_PATH
2209 fi
2210
2211 dnl Linux systems have dynamic runtime library directories listed in
2212 dnl /etc/ld.so.conf.  Since those are used at run time, it seems pretty
2213 dnl safe to use them at link time, and less controversial than forcing
2214 dnl the run-time to use the link-time libraries.  This also helps avoid
2215 dnl mismatches between the link-time and run-time libraries.
2216
2217 dnl #### Unfortunately, there are horrible libc4 and libc5 libraries
2218 dnl listed in /etc/ld.so.conf on some systems, and including them on
2219 dnl the link path leads to linking in utterly broken libc's.
2220 dnl There are many clever ways of approaching this problem,
2221 dnl but finding one that actually works...
2222
2223 dnl if test -z "$LD_RUN_PATH" -a -r "/etc/ld.so.conf"; then
2224 dnl   for dir in `cat /etc/ld.so.conf`; do
2225 dnl     test -d "$dir" && XE_APPEND(-L${dir}, ld_switch_system)
2226 dnl   done
2227 dnl   add_runtime_path=no
2228 dnl fi
2229
2230 dnl -------------------------------------
2231 dnl Compute runtime library path
2232 dnl -------------------------------------
2233
2234 if test -n "$add_runtime_path"; then :;
2235 elif test "$dynamic" = "no"; then add_runtime_path=no
2236 elif test -n "$LD_RUN_PATH"; then add_runtime_path=yes
2237 else case "$opsys" in
2238        sol2 | irix* | *bsd* | decosf* ) add_runtime_path=yes ;;
2239        * ) add_runtime_path=no ;;
2240      esac
2241 fi
2242
2243 if test "$add_runtime_path" = "yes"; then
2244   dnl Try to autodetect runtime library flag (usually -R),
2245   dnl and whether it works (or at least does no harm)
2246   AC_MSG_CHECKING("for runtime libraries flag")
2247   case "$opsys" in
2248     sol2 ) dash_r="-R" ;;
2249     decosf* | linux* | irix*) dash_r="-rpath " ;;
2250     *)
2251       dash_r=""
2252       for try_dash_r in "-R" "-R " "-rpath "; do
2253         xe_check_libs="${try_dash_r}/no/such/file-or-directory"
2254         XE_PROTECT_LINKER_FLAGS(xe_check_libs)
2255         AC_TRY_LINK(, , dash_r="$try_dash_r")
2256         xe_check_libs=""
2257         test -n "$dash_r" && break
2258       done ;;
2259   esac
2260   if test -n "$dash_r";
2261     then AC_MSG_RESULT("\"${dash_r}\"")
2262     else AC_MSG_RESULT(NONE)
2263   fi
2264 fi
2265
2266 xe_add_unique_runpath_dir='
2267   xe_add_p=yes
2268   for xe_dir in $runpath_dirs; do   dnl Uniquify
2269     test "$xe_dir" = "$xe_runpath_dir" && xe_add_p=no
2270   done
2271   if test "$xe_add_p" = "yes"; then
2272     test -n "$runpath" && runpath="${runpath}:"
2273     runpath="${runpath}${xe_runpath_dir}"
2274     runpath_dirs="$runpath_dirs $xe_runpath_dir"
2275   fi'
2276
2277
2278 dnl XE_ADD_RUNPATH_DIR(directory)
2279 define([XE_ADD_RUNPATH_DIR],[{
2280 xe_runpath_dir=$1
2281 dnl PRINT_VAR(ld_switch_site ld_switch_x_site runpath xe_runpath_dir LD_RUN_PATH xe_ldflags)
2282   test "$xe_runpath_dir" != "/lib"     -a \
2283         "$xe_runpath_dir" != "/usr/lib" -a \
2284         -n "`ls ${xe_runpath_dir}/*.s[[ol]] 2>/dev/null`" && \
2285   eval "$xe_add_unique_runpath_dir"
2286 }])dnl
2287
2288 dnl XE_COMPUTE_RUNPATH()
2289 define([XE_COMPUTE_RUNPATH],[
2290 if test "$add_runtime_path" = "yes" -a -n "$dash_r"; then
2291   dnl Remove runtime paths from current ld switches
2292   ld_switch_site=`echo   '' $ld_switch_site   | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
2293   ld_switch_x_site=`echo '' $ld_switch_x_site | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
2294   dnl PRINT_VAR(ld_switch_site ld_switch_x_site)
2295
2296   dnl Fix up Runtime path
2297   dnl If LD_RUN_PATH is set in environment, use that.
2298   dnl In this case, assume user has set the right value.
2299   runpath="" runpath_dirs=""
2300   if test -n "$LD_RUN_PATH"; then
2301     runpath="$LD_RUN_PATH"
2302   elif test "$GCC" = "yes"; then
2303     dnl Compute runpath from gcc's -v output
2304     ld_switch_run_save="$ld_switch_run"; ld_switch_run=""
2305     echo "int main(int argc, char *argv[[]]) {return 0;}" > conftest.c
2306     xe_runpath_link='${CC-cc} -o conftest -v $CFLAGS '"$xe_ldflags"' conftest.$ac_ext 2>&1 1>/dev/null'
2307     for arg in `eval "$xe_runpath_link" | grep ' -L'`; do
2308       case "$arg" in P,* | -L* | -R* )
2309         for dir in `echo '' "$arg" | sed -e 's:^ ::' -e 's/^..//' -e 'y/:/ /'`; do
2310           XE_ADD_RUNPATH_DIR("$dir")
2311         done ;;
2312       esac
2313     done
2314     ld_switch_run="$ld_switch_run_save"
2315     rm -f conftest*
2316   else
2317     dnl Add all directories with .so files to runpath
2318     for arg in $ld_switch_site $ld_switch_x_site; do
2319       case "$arg" in -L*) XE_ADD_RUNPATH_DIR(`echo '' "$arg" | sed -e 's:^ ::' -e 's/^-L//'`);; esac
2320     done
2321     dnl Sometimes /opt/SUNWdt/lib is the only installed Motif available
2322     dnl #### this test always fails here as need_motif is null
2323     if test "$opsys $need_motif" = "sol2 yes"; then
2324       xe_runpath_dir="/opt/SUNWdt/lib";
2325       eval "$xe_add_unique_runpath_dir";
2326     fi
2327   fi dnl Compute $runpath
2328
2329   if test -n "$runpath"; then
2330     ld_switch_run="${dash_r}${runpath}"
2331     XE_PROTECT_LINKER_FLAGS(ld_switch_run)
2332     test "$extra_verbose" = "yes" && echo "Setting runpath to $runpath"
2333   fi
2334 fi
2335 ])dnl
2336 XE_COMPUTE_RUNPATH()
2337
2338 dnl -----------------------------------
2339 dnl Do some misc autoconf-special tests
2340 dnl -----------------------------------
2341
2342 dnl Do the opsystem or machine files prohibit the use of the GNU malloc?
2343 dnl Assume not, until told otherwise.
2344 GNU_MALLOC=yes
2345 if test "$with_dlmalloc" != "no"; then
2346         doug_lea_malloc=yes
2347 else
2348         doug_lea_malloc=no
2349 fi
2350 after_morecore_hook_exists=yes
2351 AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
2352 AC_MSG_CHECKING(whether __after_morecore_hook exists)
2353 AC_TRY_LINK([extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0],
2354   [AC_MSG_RESULT(yes)],
2355   [AC_MSG_RESULT(no)
2356    after_morecore_hook_exists=no])
2357 if test "$system_malloc" = "yes" ; then
2358   GNU_MALLOC=no
2359   GNU_MALLOC_reason="
2360     - The GNU allocators don't work with this system configuration."
2361 elif test "$with_system_malloc" = "yes" ; then
2362   GNU_MALLOC=no
2363   GNU_MALLOC_reason="
2364     - User chose not to use GNU allocators."
2365 elif test "$with_debug_malloc" = "yes" ; then
2366   GNU_MALLOC=no
2367   GNU_MALLOC_reason="
2368     - User chose to use Debugging Malloc."
2369 fi
2370
2371 if test "$doug_lea_malloc" = "yes" -a "$GNU_MALLOC" = "yes" ; then
2372   GNU_MALLOC_reason="
2373     - Using Doug Lea's new malloc from the GNU C Library."
2374   AC_DEFINE(DOUG_LEA_MALLOC)
2375   if test "$after_morecore_hook_exists" = "no" ; then
2376     GNU_MALLOC_reason="
2377     - Using Doug Lea's new malloc from the Linux C Library."
2378     AC_DEFINE(_NO_MALLOC_WARNING_)
2379   fi
2380 fi
2381
2382 dnl #### mcheck is broken in all versions of Linux libc and glibc.
2383 dnl Try this again when 2.1 hits the streets.
2384 dnl Avoid using free-hook.c if support exists for malloc debugging in libc
2385 dnl have_libmcheck=no
2386 dnl if test "$error_check_malloc" = "yes" -a \
2387 dnl    "$have_glibc" = "yes" -a \
2388 dnl    "$doug_lea_malloc" = "yes"; then
2389 dnl   AC_CHECK_HEADERS(mcheck.h)
2390 dnl   AC_CHECK_LIB(mcheck, mcheck, have_libmcheck=yes, have_libmcheck=no)
2391 dnl fi
2392
2393 dnl if test "$have_libmcheck" = "yes"; then
2394 dnl   AC_DEFINE(HAVE_LIBMCHECK)
2395 dnl   libmcheck=-lmcheck
2396 dnl   AC_SUBST(libmcheck)
2397 dnl fi
2398
2399 dnl Some other nice autoconf tests.  If you add a test here which
2400 dnl should make an entry in src/config.h, do not forget to add an
2401 dnl #undef clause to src/config.h.in for autoconf to modify.
2402
2403 AC_PROG_RANLIB
2404 AC_PROG_INSTALL
2405 AC_PROG_YACC
2406
2407 dnl checks for header files
2408 AC_CHECK_HEADERS(dnl
2409   a.out.h dnl
2410   elf.h dnl
2411   cygwin/version.h dnl
2412   fcntl.h dnl
2413   inttypes.h dnl
2414   libgen.h dnl
2415   locale.h dnl
2416   mach/mach.h dnl
2417   sys/param.h dnl
2418   sys/pstat.h dnl
2419   sys/time.h dnl
2420   sys/timeb.h dnl
2421   sys/un.h dnl
2422   ulimit.h dnl
2423   unistd.h dnl
2424 )
2425 AC_HEADER_SYS_WAIT
2426 AC_HEADER_STDC
2427 AC_HEADER_TIME
2428 AC_DECL_SYS_SIGLIST
2429
2430
2431 dnl ----------------------------------------------------------------
2432 dnl Checking for utime() or utimes().
2433 dnl We prefer utime, since it is more standard.
2434 dnl Some systems have utime.h but do not declare the struct anyplace,
2435 dnl so we use a more sophisticated test for utime than AC_CHECK_FUNCS.
2436 dnl ----------------------------------------------------------------
2437 AC_MSG_CHECKING(for utime)
2438 AC_TRY_COMPILE([#include <sys/types.h>
2439 #include <utime.h>],
2440 [struct utimbuf x; x.actime = x.modtime = 0; utime ("/", &x);],
2441   [AC_MSG_RESULT(yes)
2442    AC_DEFINE(HAVE_UTIME)],
2443   [AC_MSG_RESULT(no)
2444    dnl We don't have utime(); how about utimes()?
2445    AC_CHECK_FUNCS(utimes)])
2446
2447
2448 dnl checks for typedefs
2449 AC_TYPE_SIGNAL
2450 AC_TYPE_SIZE_T
2451 AC_TYPE_PID_T
2452 AC_TYPE_UID_T
2453 AC_TYPE_MODE_T
2454 AC_TYPE_OFF_T
2455 AC_CHECK_TYPE(ssize_t, int)
2456
2457 dnl check for Unix98 socklen_t
2458 AC_MSG_CHECKING(for socklen_t)
2459 AC_TRY_COMPILE([#include <sys/types.h>
2460 #include <sys/socket.h>
2461 socklen_t x;
2462 ],[],[AC_MSG_RESULT(yes)],[
2463 AC_TRY_COMPILE([#include <sys/types.h>
2464 #include <sys/socket.h>
2465 int accept (int, struct sockaddr *, size_t *);
2466 ],[],[
2467 AC_MSG_RESULT(size_t)
2468 AC_DEFINE(socklen_t,size_t)], [
2469 AC_MSG_RESULT(int)
2470 AC_DEFINE(socklen_t,int)])])
2471
2472 AC_MSG_CHECKING(for struct timeval)
2473 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2474 #include <sys/time.h>
2475 #include <time.h>
2476 #else
2477 #ifdef HAVE_SYS_TIME_H
2478 #include <sys/time.h>
2479 #else
2480 #include <time.h>
2481 #endif
2482 #endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
2483   [AC_MSG_RESULT(yes)
2484   HAVE_TIMEVAL=yes
2485   AC_DEFINE(HAVE_TIMEVAL)],
2486   [AC_MSG_RESULT(no)
2487    HAVE_TIMEVAL=no])
2488
2489 dnl checks for structure members
2490 AC_STRUCT_TM
2491 AC_STRUCT_TIMEZONE
2492
2493 dnl checks for compiler characteristics
2494 AC_C_CONST
2495
2496 dnl check for Make feature
2497 AC_PROG_MAKE_SET
2498
2499 dnl check byte order
2500 AC_C_BIGENDIAN
2501
2502 dnl define SIZEOF_TYPE
2503 AC_CHECK_SIZEOF(short)
2504 if test "$ac_cv_sizeof_short" = 0; then
2505   echo ""
2506   echo "*** PANIC *** Configure tests are not working - compiler is broken."
2507   echo "*** PANIC *** Please examine config.log for compilation errors."
2508   exit 1
2509 fi
2510 AC_CHECK_SIZEOF(int)
2511 AC_CHECK_SIZEOF(long)
2512 AC_CHECK_SIZEOF(long long)
2513 AC_CHECK_SIZEOF(void *)
2514
2515 dnl Cygwin from 1003022 has intptr_t, uintptr_t in <cygwin/types.h>
2516 case $opsys in
2517   cygwin* ) AC_EGREP_HEADER([typedef.*intptr_t;], [cygwin/types.h],
2518                             [AC_MSG_RESULT(yes)
2519                              AC_DEFINE(INTPTR_T_IN_CYGWIN_TYPES_H,1)],
2520                             [AC_MSG_RESULT(no)]) ;;
2521 esac
2522
2523 dnl check for long file names
2524 AC_SYS_LONG_FILE_NAMES
2525
2526 dnl -lm is required by LISP_FLOAT_TYPE, among other things
2527 AC_CHECK_FUNC(sin, ,AC_CHECK_LIB(m, sin))
2528
2529 dnl Floating operation support is now unconditional
2530 AC_DEFINE(LISP_FLOAT_TYPE)
2531
2532 AC_TRY_LINK([#include <math.h>],
2533   [return atanh(1.0) + asinh(1.0) + acosh(1.0); ],
2534   AC_DEFINE(HAVE_INVERSE_HYPERBOLIC))
2535
2536 dnl Determine type of mail locking from configure args and s&m headers
2537 AC_CHECKING(type of mail spool file locking)
2538 AC_CHECK_FUNCS(lockf flock)
2539 dnl The mail_use_xxx variables are set according to the s&m headers.
2540 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
2541 test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
2542 test -z "$mail_locking" -a "$mail_use_locking" = "yes" && mail_locking=locking
2543 if   test -z "$mail_locking"; then
2544   case "$opsys" in cygwin* | mingw*)
2545     mail_locking=pop ;;
2546   esac
2547 fi
2548
2549 if   test "$mail_locking" = "lockf"; then AC_DEFINE(MAIL_LOCK_LOCKF)
2550 elif test "$mail_locking" = "flock"; then AC_DEFINE(MAIL_LOCK_FLOCK)
2551 elif test "$mail_locking" = "locking"; then AC_DEFINE(MAIL_LOCK_LOCKING)
2552 elif test "$mail_locking" = "pop"; then
2553   with_pop=yes
2554   mail_locking=
2555 else mail_locking="dot-locking"; AC_DEFINE(MAIL_LOCK_DOT)
2556 fi
2557 test "$mail_locking" = "lockf" -a "$ac_cv_func_lockf" != "yes" && \
2558   XE_DIE("lockf mail locking requested but not available.")
2559 test "$mail_locking" = "flock" -a "$ac_cv_func_flock" != "yes" && \
2560   XE_DIE("flock mail locking requested but not available.")
2561 test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \
2562   XE_DIE("locking mail locking requested but not available.")
2563
2564 case "$opsys" in decosf*)
2565   AC_CHECK_LIB(pthreads, cma_open)
2566   test "$ac_cv_lib_pthreads_cma_open" = "yes" && \
2567     c_switch_site="$c_switch_site -threads" ;;
2568 esac
2569
2570 dnl ----------------------------------------------------------------
2571 dnl Miscellaneous flags
2572 dnl ----------------------------------------------------------------
2573
2574 AC_MSG_CHECKING(whether the -xildoff compiler flag is required)
2575 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
2576   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
2577     then AC_MSG_RESULT(no);
2578     else AC_MSG_RESULT(yes); XE_APPEND(-xildoff, ld_switch_site)
2579   fi
2580   else AC_MSG_RESULT(no)
2581 fi
2582
2583 dnl Link with "-z ignore" on Solaris if supported
2584 if test "$opsys" = "sol2"; then
2585   if test "$os_release" -ge 506; then
2586     AC_MSG_CHECKING(for \"-z ignore\" linker flag)
2587     case "`ld -h 2>&1`" in
2588       *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
2589         XE_PREPEND(-z ignore, ld_switch_site) ;;
2590       *) AC_MSG_RESULT(no) ;;
2591     esac
2592   fi
2593 fi
2594
2595 dnl ----------------------
2596 dnl Choose a window system
2597 dnl ----------------------
2598
2599 AC_CHECKING("for specified window system")
2600
2601 dnl Autodetection of Gdk libraries and includes
2602 dnl -------------------------------------------
2603 dnl On some systems (FreeBSD springs to mind), they use
2604 dnl versions on the utility routines, so instead of gtk-config
2605 dnl you must use gtk12-config, etc, etc.
2606
2607 GNOME_CONFIG=no
2608 GTK_CONFIG=no
2609
2610 if test "$with_gnome" != "no"; then
2611    AC_MSG_CHECKING(for GNOME configuration script)
2612    for possible in gnome-config
2613    do
2614       possible_version=`${possible} --version 2> /dev/null`
2615       if test "x${possible_version}" != "x"; then
2616               GNOME_CONFIG="${possible}"
2617               with_gnome=yes
2618               with_gtk=yes
2619               break
2620       fi
2621    done
2622    AC_MSG_RESULT([${GNOME_CONFIG}])
2623 fi
2624
2625 if test "${GNOME_CONFIG}" != "no"; then
2626       GNOME_LIBS=`${GNOME_CONFIG} --libs gnomeui`
2627       GNOME_CFLAGS=`${GNOME_CONFIG} --cflags gnomeui`
2628       AC_DEFINE(HAVE_GNOME)
2629       XE_APPEND(${GNOME_LIBS}, libs_gtk)
2630       XE_APPEND(${GNOME_CFLAGS}, c_switch_gtk)
2631 fi
2632
2633 if test "$with_gtk" != "no";then
2634    AC_MSG_CHECKING(for GTK configuration script)
2635    for possible in gtk12-config gtk14-config gtk-config
2636    do
2637       possible_version=`${possible} --version 2> /dev/null`
2638       if test "x${possible_version}" != "x"; then
2639               GTK_CONFIG="${possible}"
2640               case "${possible_version}" in
2641                 1.0.*) AC_MSG_WARN([GTK 1.2 is required, please upgrade your version of GTK.]); with_gtk=no;;
2642                 1.3.*) AC_MSG_WARN([GTK 1.3 is not supported right now]); with_gtk=no;;
2643                 1.2.*)
2644                         with_gtk=yes
2645                         break
2646                         ;;
2647                 *)     AC_MSG_WARN([Found unsupported version of GTK: $possible_version]);;
2648               esac
2649       fi
2650    done
2651    AC_MSG_RESULT([${GTK_CONFIG}])
2652 fi
2653
2654 if test "${GTK_CONFIG}" != "no"; then
2655       AC_MSG_CHECKING(gtk version)
2656       GTK_VERSION=`${GTK_CONFIG} --version`
2657       AC_MSG_RESULT(${GTK_VERSION})
2658
2659       AC_MSG_CHECKING(gtk libs)
2660       GTK_LIBS=`${GTK_CONFIG} --libs`
2661       XE_APPEND(${GTK_LIBS}, libs_gtk)
2662       AC_MSG_RESULT(${GTK_LIBS})
2663
2664       AC_MSG_CHECKING(gtk cflags)
2665       GTK_CFLAGS=`${GTK_CONFIG} --cflags`
2666       if test "$GCC" = "yes"; then
2667         GTK_CFLAGS="${GTK_CFLAGS} -Wno-shadow"
2668       fi
2669       XE_APPEND(${GTK_CFLAGS}, c_switch_gtk)
2670       AC_MSG_RESULT(${GTK_CFLAGS})
2671
2672       AC_CHECK_LIB(gdk_imlib, main, XE_PREPEND(-lgdk_imlib, libs_gtk))
2673       AC_CHECK_LIB(Imlib, Imlib_init, XE_APPEND(-lImlib, libs_gtk))
2674       AC_CHECK_FUNCS(gdk_imlib_init)
2675
2676       AC_DEFINE(HAVE_XPM)
2677       AC_DEFINE(HAVE_GTK)
2678       AC_SUBST(GTK_CONFIG)
2679
2680       window_system=gtk
2681       with_gtk=yes
2682       with_x11=no
2683
2684       test "${with_scrollbars}" != "no" && with_scrollbars=gtk
2685       test "${with_toolbars}" != no && with_toolbars=gtk
2686       test "${with_menubars}" != "no" && with_menubars=gtk
2687       test "${with_dialogs}" != "no" && with_dialogs=gtk
2688       test "${with_widgets}" != "no" && with_widgets=gtk
2689
2690       XE_ADD_OBJS(console-gtk.o device-gtk.o event-gtk.o frame-gtk.o)
2691       XE_ADD_OBJS(objects-gtk.o redisplay-gtk.o glyphs-gtk.o)
2692       XE_ADD_OBJS(select-gtk.o gccache-gtk.o)
2693       XE_ADD_OBJS(gtk-xemacs.o ui-gtk.o)
2694
2695       dnl Check for libglade support (it rocks)
2696       OLD_CFLAGS="${CFLAGS}"
2697       OLD_CPPFLAGS="${CPPFLAGS}"
2698       OLD_LDFLAGS="${LDFLAGS}"
2699       CFLAGS="${GTK_CFLAGS} ${CFLAGS}"
2700       CPPFLAGS="${GTK_CFLAGS} ${CFLAGS}"
2701       LDFLAGS="${LDFLAGS} ${GTK_LIBS}"
2702       AC_CHECK_HEADERS(glade/glade.h glade.h)
2703       AC_CHECK_LIB(xml, main, XE_PREPEND(-lxml, libs_gtk))
2704       AC_CHECK_LIB(glade, main, XE_PREPEND(-lglade, libs_gtk))
2705       AC_CHECK_LIB(glade-gnome, main, XE_PREPEND(-lglade-gnome, libs_gtk))
2706       AC_EGREP_HEADER([char \*txtdomain;], [glade/glade-xml.h],
2707                       [AC_MSG_RESULT(yes)
2708                        AC_DEFINE(LIBGLADE_XML_TXTDOMAIN,1)],
2709                       [AC_MSG_RESULT(no)])
2710       CFLAGS="${OLD_CFLAGS}"
2711       CPPFLAGS="${OLD_CPPFLAGS}"
2712       LDFLAGS="${OLD_LDFLAGS}"
2713 fi
2714
2715 dnl We may eventually prefer gtk/gdk over vanilla X11...
2716
2717 if test "$with_x11" != "no"; then
2718   dnl User-specified --x-includes or --x-libraries implies --with-x11.
2719   test "$x_includes $x_libraries" != "NONE NONE" && \
2720    window_system=x11 with_x11=yes
2721
2722   dnl Autodetection of X11 libraries and includes
2723   dnl -------------------------------------------
2724   dnl AC_PATH_XTRA thinks it can find our X headers and includes, but
2725   dnl it often gets it wrong, so we only use it as a last resort.
2726
2727   dnl $OPENWINHOME implies --x-includes and --x-libraries
2728   dnl Not (yet) handled by autoconf2
2729   if test "$x_includes $x_libraries" = "NONE NONE" \
2730     -a -n "$OPENWINHOME" \
2731     -a "$OPENWINHOME" != "/usr/openwin" \
2732     -a -d "$OPENWINHOME"; then
2733       test -d "$OPENWINHOME/lib"           && x_libraries="$OPENWINHOME/lib"
2734       test -d "$OPENWINHOME/include"       && x_includes="$OPENWINHOME/include"
2735       test -d "$OPENWINHOME/share/include" && x_includes="$OPENWINHOME/share/include"
2736   fi
2737
2738   if test "$x_includes" = "NONE"; then
2739     dnl AC_PATH_XTRA often guesses /usr/include, when some other
2740     dnl include directory is a MUCH better guess (Linux, HP-UX 10.20).
2741     dnl This is a workaround for idiot (esp. HP) system vendors, who
2742     dnl provide a /usr/include/X11, but DON'T FULLY POPULATE IT.
2743     for dir in "/usr/X11" "/usr/X11R6"; do
2744       if test -d "$dir/include/X11"; then x_includes="$dir/include"; break; fi
2745     done
2746   fi
2747
2748   if test "$x_libraries" = "NONE"; then
2749     for dir in "/usr/X11/lib" "/usr/X11R6/lib" "/usr/lib/X11R6"; do
2750       if test -r "$dir/libX11.a"; then x_libraries="$dir"; break; fi
2751     done
2752   fi
2753
2754   AC_PATH_XTRA # Autoconf claims to find X library and include dirs for us.
2755   if test "$no_x" = "yes"
2756   then with_x11=no  window_system=none HAVE_X_WINDOWS=no
2757   else with_x11=yes window_system=x11  HAVE_X_WINDOWS=yes
2758   fi
2759 fi
2760
2761 dnl #### wmperry:: !x11 != NONE
2762 dnl case "$with_x11" in
2763 dnl  yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
2764 dnl  no  ) window_system=none HAVE_X_WINDOWS=no  ;;
2765 dnl esac
2766
2767 if test "$with_x11" = "yes"; then
2768   AC_DEFINE(HAVE_X_WINDOWS)
2769   XE_APPEND(lwlib, MAKE_SUBDIR)
2770   XE_APPEND(lwlib, SRC_SUBDIR_DEPS)
2771
2772
2773   dnl Look for Motif, but only if not found in $x_includes and $x_libraries
2774   AC_CHECK_HEADER(Xm/Xm.h, [AC_CHECK_LIB(Xm, XmStringFree, got_motif=yes)])
2775
2776   if test "$got_motif" != "yes"; then
2777     dnl Try to find Motif/CDE/Tooltalk dirs
2778     dnl These take precedence over other X libs/includes, so PRE-pend
2779     for lib_dir in "/usr/dt/lib" "/usr/lib/Motif2.1" \
2780                    "/usr/lib/Motif1.2" "/usr/lib/Motif1.1"; do
2781       inc_dir=`echo $lib_dir | sed -e 's/lib/include/'`
2782       if test -d "$lib_dir" -a -d "$inc_dir"; then
2783         case "$x_libraries" in *"$lib_dir"* ) ;; *)
2784           x_libraries="$lib_dir $x_libraries"
2785           XE_PREPEND(-L${lib_dir}, X_LIBS) ;;
2786         esac
2787         case "$x_includes" in "$inc_dir"* ) ;; *)
2788           x_includes="$inc_dir $x_includes"
2789           XE_PREPEND(-I${inc_dir}, X_CFLAGS) ;;
2790         esac
2791         break; dnl only need ONE Motif implementation!
2792         fi
2793     done
2794   fi
2795
2796   dnl Contrib X libs/includes do NOT take precedence, so AP-pend
2797   for rel in "X11R6" "X11R5" "X11R4"; do
2798     lib_dir="/usr/contrib/$rel/lib" inc_dir="/usr/contrib/$rel/include"
2799     if test -d "$lib_dir" -a -d "$inc_dir"; then
2800       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2801         x_libraries="$x_libraries $lib_dir"
2802         XE_APPEND(-L${lib_dir}, X_LIBS)
2803       esac
2804       case "$x_includes" in "$inc_dir"* ) ;; *)
2805         x_includes="$x_includes $inc_dir"
2806         XE_APPEND(-I${inc_dir}, X_CFLAGS)
2807       esac
2808       break; dnl Only need ONE X11 implementation !
2809     fi
2810   done
2811
2812   dnl Avoid version mismatch for shared library libXm.so on osf4
2813   case "$opsys" in
2814   decosf*) if test "$GCC" = yes -a -d /usr/shlib; then XE_APPEND(-L/usr/shlib, X_LIBS); fi ;;
2815   esac
2816
2817   ld_switch_x_site="$X_LIBS"
2818
2819   XE_COMPUTE_RUNPATH()
2820
2821   if test "$extra_verbose" = "yes"; then
2822     echo; echo "X11 compilation variables:"
2823     PRINT_VAR(x_libraries x_includes X_CFLAGS X_LIBS X_PRE_LIBS X_EXTRA_LIBS)
2824     echo
2825   fi
2826
2827   dnl Set up bitmaps search path.
2828   dnl The original suggestion was to unconditionally to append X11/bitmaps
2829   dnl to each element of $x_includes, I'm pretty sure this is the wrong
2830   dnl thing to do.  We test for bitmaps and X11/bitmaps directories on each
2831   dnl element and add them to BITMAPDIR if they exist.
2832   bitmapdirs=
2833   if test "$x_includes" != NONE; then
2834     for i in $x_includes; do
2835       if test -d "$i/bitmaps"; then
2836         bitmapdirs="$i/bitmaps:$bitmapdirs"
2837       fi
2838       if test -d "$i/X11/bitmaps"; then
2839         bitmapdirs="$i/X11/bitmaps:$bitmapdirs"
2840       fi
2841     done
2842     bitmapdirs=`echo "$bitmapdirs" | sed s/.$//`
2843   fi
2844   test ! -z "$bitmapdirs" && AC_DEFINE_UNQUOTED(BITMAPDIR, "$bitmapdirs")
2845
2846   dnl Autodetect defines extracted from X config by xmkmf, e.g. NARROWPROTO
2847   AC_CHECKING(for X defines extracted by xmkmf)
2848   rm -fr conftestdir
2849   if mkdir conftestdir; then
2850     cd conftestdir
2851     cat > Imakefile <<'EOF'
2852 xetest:
2853         @echo ${PROTO_DEFINES} ${STD_DEFINES}
2854 EOF
2855     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2856       # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2857       xmkmf_defines=`${MAKE-make} xetest 2>/dev/null | grep -v make`
2858     fi
2859     cd ..
2860     rm -fr conftestdir
2861     for word in $xmkmf_defines; do
2862       case "$word" in 
2863       -D__STDC__*) ;;
2864       -D* )
2865         sym=`echo '' $word | sed -e 's:^ *-D::' -e 's:=.*::'`
2866         case "$word" in
2867           -D*=* ) val=`echo '' $word | sed -e 's:^.*=::'` ;;
2868           *     ) val=1 ;;
2869         esac
2870 dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above.
2871         if grep "^#define $sym " confdefs.h >/dev/null; then :; else
2872           if test "$val" = "1"
2873             then AC_DEFINE_UNQUOTED($sym)
2874             else AC_DEFINE_UNQUOTED($sym,$val)
2875           fi
2876         fi  ;;
2877       esac
2878     done
2879   fi
2880
2881   dnl make sure we can find Intrinsic.h
2882   AC_CHECK_HEADER(X11/Intrinsic.h, ,
2883    [AC_MSG_ERROR("Unable to find X11 header files.")])
2884
2885   dnl -lXt and -lX11 are required
2886   dnl Some broken systems require the magic "-b i486-linuxaout" flag
2887   AC_CHECK_LIB(X11, XOpenDisplay, have_lib_x11=yes)
2888   if test "$have_lib_x11" != "yes"; then
2889     AC_CHECK_LIB(X11, XGetFontProperty,
2890       ld_switch_x_site="-b i486-linuxaout $ld_switch_x_site",
2891       [AC_MSG_ERROR("Unable to find X11 libraries.")],
2892       -b i486-linuxaout)
2893   fi
2894   libs_x="-lX11"
2895   test "$extra_verbose" = "yes" && echo "    Setting libs_x to \"-lX11\""
2896
2897   dnl Autodetect -lXext
2898   AC_CHECK_LIB(Xext, XShapeSelectInput, XE_PREPEND(-lXext, libs_x))
2899
2900   dnl Require -lXt
2901   AC_CHECK_LIB(Xt, XtOpenDisplay, XE_PREPEND(-lXt, libs_x),
2902     AC_MSG_ERROR("Unable to find X11 libraries."))
2903
2904   AC_MSG_CHECKING(the version of X11 being used)
2905   AC_TRY_RUN([#include <X11/Intrinsic.h>
2906     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }],
2907     [./conftest foobar; x11_release=$?],[x11_release=4],[x11_release=4])
2908   AC_MSG_RESULT(R${x11_release})
2909   AC_DEFINE_UNQUOTED(THIS_IS_X11R${x11_release})
2910
2911   if test "${x11_release}" = "4"; then
2912     case "$with_widgets" in
2913       "" | "no") with_widgets=no ;;
2914       *) XE_DIE("Widget support requires X11R5 or greater") ;;
2915     esac
2916   fi
2917
2918   AC_CHECK_FUNCS(XConvertCase XtRegisterDrawable)
2919
2920   AC_CHECK_HEADERS(X11/Xlocale.h)
2921
2922   dnl XFree86 has a non-standard prototype for this X11R6 function
2923   AC_CHECK_FUNCS(XRegisterIMInstantiateCallback)
2924   AC_MSG_CHECKING(for standard XRegisterIMInstantiateCallback prototype)
2925   AC_TRY_COMPILE([
2926 #define NeedFunctionPrototypes 1
2927 #include <X11/Xlib.h>
2928 extern Bool XRegisterIMInstantiateCallback(
2929    Display*, struct _XrmHashBucketRec*, char*, char*, XIMProc, XPointer*);
2930 ], [], 
2931   [AC_MSG_RESULT(yes)],
2932   [AC_MSG_RESULT(no)
2933    AC_DEFINE(XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE)])
2934
2935   dnl autodetect -lXmu
2936   test -z "$with_xmu" && { AC_CHECK_LIB(Xmu, XmuReadBitmapDataFromFile,
2937                            with_xmu=yes, with_xmu=no) }
2938   if test "$with_xmu" = "no"; then
2939     XE_ADD_OBJS(xmu.o)
2940   else
2941     XE_PREPEND(-lXmu, libs_x)
2942     AC_DEFINE(HAVE_XMU)
2943   fi
2944
2945   dnl Autodetect -lXbsd
2946   dnl #### Someone, please add a better function than main
2947   AC_CHECK_LIB(Xbsd, main, XE_PREPEND(-lXbsd, libs_x))
2948
2949   dnl Problem with the MIT distribution of X on AIX
2950   if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then
2951     dnl X11R6 requires thread-safe code on AIX for some reason
2952     if test "$GCC" = "yes"; then
2953       dnl gcc changed the name of the `-mthreads' option to `-pthread'
2954       dnl on 2000-06-12
2955       AC_MSG_CHECKING(for name of AIX gcc threads option)
2956       case `$CC -v --help 2>&1` in
2957         *-mthreads*) aix_threads=-mthreads ;;
2958                   *) aix_threads=-pthread  ;;
2959       esac
2960       AC_MSG_RESULT($aix_threads)
2961       XE_PREPEND($aix_threads, X_CFLAGS)
2962       XE_PREPEND($aix_threads, libs_x)
2963     else
2964       dnl Try to use the thread-safe "_r" versions of xlc
2965       case "$CC" in *_r) : ;;
2966         *)
2967          xe_save_CC="$CC"
2968          CC="${CC}_r"
2969          AC_CHECK_SIZEOF(short)
2970          test "$ac_cv_sizeof_short" = 0 && CC="$xe_save_CC" ;;
2971       esac
2972     fi
2973   fi
2974
2975 fi dnl $with_x11 = yes
2976
2977 if test "$with_msw" != "no"; then
2978   AC_CHECKING(for MS-Windows)
2979   AC_CHECK_LIB(gdi32,main,with_msw=yes)
2980   if test "$with_msw" = "yes"; then
2981     AC_DEFINE(HAVE_MS_WINDOWS)
2982
2983     dnl The net installer only works with MS-Windows currently
2984     if test "$with_netinstall" = "yes"; then
2985       XE_APPEND(netinstall, MAKE_SUBDIR)
2986       XE_APPEND(netinstall, SRC_SUBDIR_DEPS)
2987       XE_APPEND(netinstall, INSTALL_ARCH_DEP_SUBDIR)
2988     fi
2989
2990     install_pp="$srcdir/lib-src/installexe.sh"
2991     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lkernel32 -lwinspool, libs_system)
2992     test "$with_dragndrop" != no && XE_APPEND(msw, dragndrop_proto)
2993     if test "$window_system" != x11; then
2994         window_system=msw
2995         test "$with_scrollbars" != "no" && with_scrollbars=msw \
2996             && XE_ADD_OBJS(scrollbar-msw.o)
2997         test "$with_menubars"   != "no" && with_menubars=msw \
2998             && XE_ADD_OBJS(menubar-msw.o)
2999         test "$with_toolbars"   != "no" && with_toolbars=msw \
3000             && XE_ADD_OBJS(toolbar-msw.o)
3001         test "$with_dialogs"   != "no" && with_dialogs=msw \
3002             && XE_ADD_OBJS(dialog-msw.o)
3003         test "$with_widgets"   != "no" && with_widgets=msw
3004     else
3005         test "$with_scrollbars" != "no" && XE_ADD_OBJS(scrollbar-msw.o)
3006         test "$with_menubars"   != "no" && XE_ADD_OBJS(menubar-msw.o)
3007         test "$with_toolbars"   != "no" && XE_ADD_OBJS(toolbar-msw.o)
3008         test "$with_dialogs"    != "no" && XE_ADD_OBJS(dialog-msw.o)
3009     fi
3010     dnl check for our special version of select
3011     AC_TRY_RUN([#include <fcntl.h>
3012     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }],
3013     [need_event_unixoid=yes; AC_DEFINE(HAVE_MSG_SELECT)])
3014     with_file_coding=yes
3015     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)
3016   fi
3017 fi
3018
3019 AC_SUBST(install_pp)
3020
3021 test -z "$window_system" && window_system="none"
3022
3023 dnl Test for features that require a window system - ANY window system
3024 if test "$window_system" = "none"; then
3025   for feature in menubars scrollbars toolbars dialogs dragndrop xface
3026   do
3027     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3028        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
3029     fi
3030     eval "with_${feature}=no"
3031   done
3032 else
3033   test -z "$with_toolbars" && with_toolbars=yes
3034 fi
3035
3036 dnl ### Test for features that require mswindows support - currently none
3037 dnl ### MS-Windows folks: add code here..... (martin)
3038 if test "$with_msw" != "yes"; then
3039   for feature in   MARTIN_IS_CLUELESS_ABOUT_MSW_FEATURES
3040   do
3041     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3042        AC_MSG_WARN([--with-$feature ignored:  Not valid without MS-Windows support])
3043     fi
3044     eval "with_${feature}=no"
3045   done
3046 else
3047   :
3048 fi
3049
3050 dnl Test for features that require X11 support
3051 if test "$with_x11" != "yes"; then
3052   dnl It ought to be reasonable to have no output device at all, and only use
3053   dnl XEmacs in --batch mode.
3054   dnl if test "$with_tty" = "no" ; then
3055   dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
3056   dnl fi
3057   for feature in tooltalk cde offix wmcommand xim xmu nas_sound
3058   do
3059     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3060        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
3061     fi
3062     eval "with_${feature}=no"
3063   done
3064 fi
3065
3066 dnl Balloon Help requires the Shape extension, not available everywhere,
3067 dnl for example not on AIX 4.3.
3068 if test "$with_x11" = "yes"; then
3069   AC_CHECK_HEADER(X11/extensions/shape.h, [
3070    AC_DEFINE(HAVE_BALLOON_HELP)
3071    XE_ADD_OBJS(balloon_help.o balloon-x.o)])
3072 fi
3073
3074 dnl FSF 19.29 has some bitmapdir stuff here.
3075 bitmapdir=
3076
3077 case "$window_system" in
3078   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
3079   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
3080   gtk  )
3081        HAVE_X_WINDOWS=no
3082        test "$with_gnome" = "yes" && echo "  Using GNOME."
3083        test "$with_gnome" = "no" && echo "  Using GTK."
3084        ;;
3085   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
3086 esac
3087
3088 case "$x_libraries" in *X11R4* )
3089   test "$opsys" = "hpux9"     && opsysfile="s/hpux9-x11r4.h"
3090   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
3091 esac
3092
3093 dnl Enable or disable proper handling of WM_COMMAND
3094 AC_CHECKING(for WM_COMMAND option);
3095 dnl if test "$with_wmcommand" = "yes"; then
3096 if test "$with_wmcommand" != "no"; then
3097   AC_DEFINE(HAVE_WMCOMMAND)
3098 fi
3099
3100 dnl Autodetect Xauth
3101 dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
3102 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
3103 test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h,          ,with_xauth=no) }
3104 test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no) }
3105 test -z "$with_xauth" && with_xauth=yes
3106 if test "$with_xauth" = "yes"; then
3107   AC_DEFINE(HAVE_XAUTH)
3108   XE_SPACE(libs_xauth, $GTK_LIBS $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
3109 fi
3110 AC_SUBST(libs_xauth)
3111
3112 dnl This one is for the static initializeds variables in
3113 dnl offix.c, so that the thing is dumped after lastfile.o
3114 AC_SUBST(dnd_objs)
3115
3116 dnl Autodetect tooltalk
3117 if test "$with_tooltalk" != "no" ; then
3118   dnl autodetect the location of tt_c.h
3119   dnl tt_c.h might be in Tt or desktop include directories
3120   for dir in "" "Tt/" "desktop/" ; do
3121     AC_CHECK_HEADER(${dir}tt_c.h, tt_c_h_file="${dir}tt_c.h"; break)
3122   done
3123   if test -z "$tt_c_h_file"; then
3124     if test "$with_tooltalk" = "yes"; then
3125       USAGE_ERROR("Unable to find required tooltalk header files.")
3126     fi
3127     with_tooltalk=no
3128   fi
3129 fi
3130 if test "$with_tooltalk" != "no" ; then
3131   for extra_libs in "" "-lI18N -lce" "-lcxx"; do
3132     AC_CHECK_LIB(tt, tt_message_create,
3133       tt_libs="-ltt $extra_libs"; break, [:],$extra_libs)
3134   done
3135   if test -z "$tt_libs"; then
3136     if test "$with_tooltalk" = "yes"; then
3137       USAGE_ERROR("Unable to find required tooltalk libraries.")
3138     fi
3139     with_tooltalk=no
3140   fi
3141 fi
3142 test -z "$with_tooltalk" && with_tooltalk=yes
3143 if test "$with_tooltalk" = "yes"; then
3144   AC_DEFINE(TOOLTALK)
3145   AC_DEFINE_UNQUOTED(TT_C_H_FILE, "$tt_c_h_file")
3146   XE_PREPEND($tt_libs, libs_x)
3147   XE_ADD_OBJS(tooltalk.o)
3148 fi
3149
3150 dnl Autodetect CDE
3151 test -z "$with_cde" && { AC_CHECK_HEADER(Dt/Dt.h,               , with_cde=no) }
3152 test -z "$with_cde" && { AC_CHECK_LIB(DtSvc, DtDndDragStart, [:], with_cde=no) }
3153 test -z "$with_cde" && with_cde=yes
3154 if test "$with_dragndrop" = no; then
3155   AC_MSG_WARN([No CDE without generic Drag'n'Drop support])
3156   with_cde=no
3157 fi
3158 if test "$with_cde" = "yes" ; then
3159   AC_DEFINE(HAVE_CDE)
3160   XE_PREPEND(-lDtSvc, libs_x)
3161   XE_APPEND(CDE, dragndrop_proto)
3162   with_tooltalk=yes # CDE requires Tooltalk
3163   need_motif=yes    # CDE requires Motif
3164 fi
3165
3166 dnl Always compile OffiX unless --without-offix is given, no
3167 dnl X11 support is compiled in, no standard Xmu is available,
3168 dnl or dragndrop support is disabled
3169 dnl Because OffiX support currently loses when more than one display
3170 dnl is in use, we now disable it by default -slb 07/10/1998.
3171 test "$window_system" != "x11" && with_offix=no
3172 if test "$with_xmu" != yes -a "$with_x11" = yes; then
3173   AC_MSG_WARN([No OffiX without real Xmu support])
3174   with_offix=no
3175 fi
3176 if test "$with_dragndrop" = no; then
3177   AC_MSG_WARN([No OffiX without generic Drag'n'Drop support])
3178   with_offix=no
3179 fi
3180 if test "$with_cde" = yes; then
3181   AC_MSG_WARN([CDE already found, disabling OffiX support])
3182   with_offix=no
3183 fi
3184 test -z "$with_offix" && with_offix=no
3185 if test "$with_offix" = "yes"; then
3186   AC_DEFINE(HAVE_OFFIX_DND)
3187   XE_APPEND(offix.o, dnd_objs)
3188   XE_APPEND(OffiX, dragndrop_proto)
3189 fi
3190 if test "$with_gtk" = "yes"; then
3191    XE_APPEND(GTK, dragndrop_proto)
3192 fi
3193
3194 dnl Autodetect Drag'n'Drop support
3195 dnl always included if CDE, Offix, or MSWindows are defined
3196 if test "$with_dragndrop" != "no" ; then
3197   AC_MSG_CHECKING(if drag and drop API is needed)
3198   if test -n "$dragndrop_proto" ; then
3199     with_dragndrop=yes
3200     AC_MSG_RESULT([yes (${dragndrop_proto} )])
3201     AC_DEFINE(HAVE_DRAGNDROP)
3202     XE_APPEND(dragdrop.o, extra_objs)
3203   else
3204     with_dragndrop=no
3205     AC_MSG_RESULT(no)
3206   fi
3207 fi
3208
3209 dnl Autodetect LDAP
3210 AC_CHECKING(for LDAP)
3211 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
3212 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
3213 if test no != "$with_ldap";then
3214   if test . != "${ldap_libs+.}";then
3215     ldap_libs=
3216     AC_CHECK_FUNC(ldap_open,dnl Allow it to be in generic "$LIBS"
3217       [with_ldap=yes
3218       test yes = "$extra_verbose" &&
3219         echo "Setting ldap_libs to $ldap_libs"],dnl
3220       [AC_CHECK_LIB(ldap, ldap_open,dnl
3221         [with_ldap=yes],dnl
3222         [ldap_needs_lber=yes ldap_other_libs=-llber
3223 dnl This requires `AC_CACHE_VAL' (which is called by `AC_CHECK_LIB')
3224 dnl to be redefined to ignore cached (shell variable) value, as it is
3225 dnl done above, because the same variable is used in all
3226 dnl `AC_CHECK_LIB' expansions in macro invocation below.  Worse, if it
3227 dnl is not done, there is no portable way to compensate for this
3228 dnl locally since `unset' command is not supported by all shells.  The
3229 dnl other solution would be changing `AC_CHECK_LIB' so that cache
3230 dnl variable name depends on the macro OTHER-LIBRARIES argument.
3231         AC_CHECK_LIB(ldap, ldap_open,dnl
3232           [with_ldap=yes],dnl
3233           [ldap_needs_krb=yes ldap_other_libs="$ldap_other_libs -lkrb"
3234           AC_CHECK_LIB(ldap, ldap_open,dnl
3235             [with_ldap=yes],dnl
3236             [ldap_needs_des=yes ldap_other_libs="$ldap_other_libs -ldes"
3237             AC_CHECK_LIB(ldap, ldap_open,dnl
3238               [with_ldap=yes],dnl
3239               [with_ldap=no],dnl
3240               $ldap_other_libs)],dnl
3241             $ldap_other_libs)],dnl
3242           $ldap_other_libs)])
3243       if test yes = "$with_ldap";then
3244         if test yes = "$ldap_needs_des";then
3245           XE_PREPEND(-ldes, ldap_libs)
3246         fi
3247         if test yes = "$ldap_needs_krb";then
3248           XE_PREPEND(-lkrb, ldap_libs)
3249         fi
3250         if test yes = "$ldap_needs_lber";then
3251           XE_PREPEND(-llber, ldap_libs)
3252         fi
3253         XE_PREPEND(-lldap, ldap_libs)
3254       fi])
3255   else
3256 dnl Allow builder to override "$ldap_libs".
3257     save_LIBS="$LIBS" LIBS="$ldap_libs $LIBS"
3258     AC_CHECK_FUNC(ldap_open,dnl
3259       [with_ldap=yes
3260       test yes = "$extra_verbose" &&
3261         echo "Setting ldap_libs to $ldap_libs"],dnl
3262       [with_ldap=no])
3263     LIBS="$save_LIBS"
3264   fi
3265 fi
3266 if test "$with_ldap" = "yes"; then
3267   AC_DEFINE(HAVE_LDAP)
3268   XE_ADD_OBJS(eldap.o)
3269   LIBS="$ldap_libs $LIBS"
3270   AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result)
3271 fi
3272
3273 dnl Autodetect PostgreSQL
3274 dnl On many Linux systems, PostgreSQL is packaged to be installed in /usr;
3275 dnl in this case, configure will easily detect it there.
3276 dnl
3277 dnl If PostgreSQL is installed into a different prefix,
3278 dnl (such as the default /usr/local/pgsql when building from source),
3279 dnl that prefix must be specified using the --site-prefixes flag.
3280 if test "$with_postgresql" != "no"; then
3281   AC_CHECKING(for PostgreSQL)
3282
3283 dnl Look for these standard header file locations, known to be used on Linux
3284   for header_dir in "" "pgsql/" "postgresql/"; do
3285     AC_CHECK_HEADER(${header_dir}libpq-fe.h,
3286                     libpq_fe_h_file=${header_dir}libpq-fe.h; break)
3287   done
3288
3289   test -n "$libpq_fe_h_file" && { AC_CHECK_LIB(pq,PQconnectdb,have_libpq=yes) }
3290
3291   if test -n "$libpq_fe_h_file" -a "$have_libpq" = "yes"; then
3292     with_postgresql=yes
3293     AC_DEFINE(HAVE_POSTGRESQL)
3294     AC_CHECK_LIB(pq,PQconnectStart, [
3295                  with_postgresqlv7=yes;
3296                  AC_DEFINE(HAVE_POSTGRESQLV7)])
3297     AC_DEFINE_UNQUOTED(LIBPQ_FE_H_FILE, "$libpq_fe_h_file")
3298     XE_PREPEND(-lpq, LIBS)
3299     XE_ADD_OBJS(postgresql.o)
3300   elif test "$with_postgresql" = "yes"; then
3301     XE_DIE("Required PostgreSQL support cannot be provided.  Check --site-prefixes.")
3302   fi
3303 fi
3304
3305 dnl ----------------------
3306 dnl Graphics libraries
3307 dnl ----------------------
3308
3309 if test "$window_system" != "none"; then
3310   AC_CHECKING(for graphics libraries)
3311
3312   dnl add special code to handle xpm-nox on Cygwin (csw)
3313   dnl   -- should only happen if CYGWIN && WITH_XPM && WITH_MSW && !WITH_X
3314   libpath_xpm=
3315   incpath_xpm=
3316   case "$opsys" in 
3317     cygwin*)
3318       cygwin_top=`eval "gcc -print-file-name=libc.a"` ;
3319       cygwin_top=`eval "dirname ${cygwin_top}"`;
3320       cygwin_top="${cygwin_top}/..";
3321       case "$window_system" in
3322         dnl use "standard" search pattern
3323         x11)  ;;
3324         dnl hardcode "standard" non-X11 xpm lib/inc dirs
3325         msw) libpath_xpm="-L${cygwin_top}/lib/noX"
3326              incpath_xpm="-I${cygwin_top}/include/noX"
3327               ;;
3328         dnl not supported on cygwin (yet?)
3329         gtk)  ;;
3330         dnl probably not reached...
3331         none) ;;
3332         dnl ditto
3333         *)    ;;
3334       esac
3335       ;;
3336     dnl use "standard" search pattern for all other OS's
3337     *) ;;
3338   esac
3339   dnl Autodetect Xpm
3340   xpm_problem=""
3341   if test -z "$with_xpm"; then
3342     XE_PREPEND("$incpath_xpm", CFLAGS)
3343     XE_PREPEND("$libpath_xpm", LDFLAGS)
3344     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
3345     xe_check_libs=-lXpm
3346     AC_TRY_RUN([#define XPM_NUMBERS
3347 #include <X11/xpm.h>
3348     int main(int c, char **v) {
3349     return c == 1 ? 0 :
3350       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
3351       XpmIncludeVersion < 30406 ? 2 : 0 ;}],
3352     [./conftest dummy_arg; xpm_status=$?;
3353       if test "$xpm_status" = "0"; then
3354         with_xpm=yes;
3355       else
3356         with_xpm=no;
3357         if test "$xpm_status" = "1"; then
3358           xpm_problem="Xpm library version and header file version don't match!"
3359         elif test "$xpm_status" = "2"; then
3360           xpm_problem="Xpm library version is too old!"
3361         else
3362           xpm_problem="Internal xpm detection logic error!"
3363         fi
3364         echo "
3365 *** WARNING *** $xpm_problem
3366   I'm not touching that with a 10-foot pole!
3367   If you really want to use the installed version of Xpm, rerun
3368   configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!"
3369     fi],
3370     [with_xpm=no])
3371     xe_check_libs=
3372     AC_MSG_RESULT($with_xpm)
3373   fi
3374   if test "$with_xpm" = "yes"; then
3375     dnl #### This code assumes that if AC_CHECK_LIB fails,
3376     dnl #### then it will succeed if FOR_MSW is defined,
3377     dnl #### but doesn't actually verify this assumption.
3378     AC_DEFINE(HAVE_XPM)
3379     XE_PREPEND("$libpath_xpm", LDFLAGS)
3380     XE_PREPEND(-lXpm, libs_x)
3381     XE_PREPEND("$incpath_xpm", CFLAGS)
3382     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
3383     xe_check_libs=-lXpm
3384     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
3385     [xpm_for_msw=no],
3386     [xpm_for_msw=yes])
3387     xe_check_libs=
3388     AC_MSG_RESULT($xpm_for_msw)
3389     if test "$xpm_for_msw" = "yes"; then
3390       AC_DEFINE(FOR_MSW)
3391     fi
3392   fi
3393
3394   dnl Autodetect XFACE
3395   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
3396   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
3397   test -z "$with_xface" && with_xface=yes
3398   if test "$with_xface" = "yes"; then
3399     AC_DEFINE(HAVE_XFACE)
3400     XE_PREPEND(-lcompface, libs_x)
3401   fi
3402
3403   dnl For a brief period we had the GIF code split out into a separate library,
3404   dnl but patent problems, etc. sort of squashed that idea.
3405   dnl We default to building with builtin GIF decoding
3406   if test "$with_gif" != "no"; then
3407     with_gif="yes"
3408     AC_DEFINE(HAVE_GIF)
3409     XE_ADD_OBJS(dgif_lib.o gif_io.o)
3410   fi
3411
3412   dnl Too many stupid linkers can't detect cascaded lib dependencies until runtime
3413   dnl So we always search for libz compression support.
3414   if test "$with_png $with_tiff" != "no no"; then
3415     AC_CHECK_LIB(c,  inflate, [:], [
3416     AC_CHECK_LIB(z,  inflate, [XE_PREPEND(-lz,  libs_x)],[
3417     AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])])
3418   fi
3419
3420   dnl autodetect JPEG
3421   test -z "$with_jpeg" && { AC_CHECK_HEADER(jpeglib.h,                    ,with_jpeg=no) }
3422   test -z "$with_jpeg" && { AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,[:],with_jpeg=no) }
3423   test -z "$with_jpeg" && with_jpeg=yes
3424   if test "$with_jpeg" = "yes"; then
3425     AC_DEFINE(HAVE_JPEG)
3426     XE_PREPEND(-ljpeg, libs_x)
3427   fi
3428
3429   dnl autodetect PNG
3430   png_problem=""
3431   test -z "$with_png" && { AC_CHECK_FUNC(pow,                  ,with_png=no) }
3432   test -z "$with_png" && { AC_CHECK_HEADER(png.h,              ,with_png=no) }
3433   test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) }
3434   if test -z "$with_png"; then
3435     AC_MSG_CHECKING(for workable png version information)
3436     xe_check_libs="-lpng -lz"
3437     AC_TRY_RUN([#include <png.h>
3438     int main(int c, char **v) {
3439     if (c == 1) return 0;
3440     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
3441     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}],
3442     [./conftest dummy_arg; png_status=$?;
3443       if test "$png_status" = "0"; then
3444         with_png=yes;
3445       else
3446         with_png=no;
3447         if test "$png_status" = "1"; then
3448           png_problem="PNG library version and header file don't match!"
3449         elif test "$png_status" = "2"; then
3450           png_problem="PNG library version too old (pre 1.0.2)!"
3451         fi
3452         echo "
3453 *** WARNING *** $png_problem
3454   I'm not touching that with a 10-foot pole!
3455   If you really want to use the installed version of libPNG, rerun
3456   configure and add '--with-png=yes', but don't blame me if XEmacs crashes!"
3457     fi],
3458     [with_png=no])
3459     xe_check_libs=
3460     AC_MSG_RESULT($with_png)
3461   fi
3462   if test "$with_png" = "yes"; then
3463     AC_DEFINE(HAVE_PNG)
3464     XE_PREPEND(-lpng, libs_x)
3465   fi
3466
3467   dnl autodetect TIFF
3468   test -z "$with_tiff" && { AC_CHECK_HEADER(tiffio.h,            ,with_tiff=no) }
3469   test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no) }
3470   test -z "$with_tiff" && with_tiff=yes
3471   if test "$with_tiff" = "yes"; then
3472     AC_DEFINE(HAVE_TIFF)
3473     XE_PREPEND(-ltiff, libs_x)
3474   fi
3475 fi
3476
3477 dnl ----------------------
3478 dnl GTK-Specific Graphics libraries
3479 dnl ----------------------
3480
3481 if test "$with_gtk" = "yes"; then
3482   dnl Autodetect XFACE
3483   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
3484   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
3485   test -z "$with_xface" && with_xface=yes
3486   if test "$with_xface" = "yes"; then
3487     AC_DEFINE(HAVE_XFACE)
3488     XE_PREPEND(-lcompface, libs_gtk)
3489   fi
3490 fi
3491
3492
3493 dnl ----------------------
3494 dnl X-Specific Graphics libraries
3495 dnl ----------------------
3496
3497 if test "$with_x11" = "yes"; then
3498   AC_CHECKING(for X11 graphics libraries)
3499 fi
3500
3501 if test "$with_x11" = "yes"; then
3502   AC_CHECKING(for the Athena widgets)
3503
3504   dnl What in heck did the user actually want?
3505   case "$with_athena" in
3506     dnl This is the default, old fashioned flat Athena.
3507     "xaw" | "") athena_variant=Xaw      athena_3d=no  ;;
3508     "3d")       athena_variant=Xaw3d    athena_3d=yes ;;
3509     "next")     athena_variant=neXtaw   athena_3d=yes ;;
3510     "95")       athena_variant=Xaw95    athena_3d=yes ;;
3511     "xpm")      athena_variant=XawXpm   athena_3d=yes ;;
3512     *)          XE_DIE("Unknown Athena widget set \`$with_athena'. This should not happen.") ;;
3513   esac
3514
3515   athena_3d_function=Xaw3dComputeBottomShadowRGB
3516
3517   dnl Search for the Athena library...
3518   if test "$athena_3d" = "no"; then
3519     AC_CHECK_LIB($athena_variant, XawScrollbarSetThumb,
3520       [
3521         dnl Must not be a 3d library...
3522         AC_CHECK_LIB($athena_variant, $athena_3d_function,
3523           AC_MSG_WARN("Could not find a non-3d Athena widget library."),
3524           athena_lib=$athena_variant)
3525       ],
3526       AC_MSG_WARN("Could not find an Athena widget library."))
3527   else
3528     dnl The real configuration, need 3d library
3529     AC_CHECK_LIB($athena_variant, $athena_3d_function, athena_lib=$athena_variant,
3530       dnl OK, couldn't find it with a proper name, try the standard Athena lib
3531       dnl If that is 3d, presume the user asked for what they have installed.
3532       AC_CHECK_LIB(Xaw, $athena_3d_function,
3533         [
3534           athena_lib=Xaw;
3535           AC_MSG_WARN("Assuming that libXaw is actually $athena_variant.");
3536         ],
3537         AC_MSG_WARN("Could not find a 3d Athena widget library that looked like $athena_variant.")))
3538   fi
3539
3540   dnl Now we locate the Athena headers that we need.
3541   if test "$athena_3d" = "no"; then
3542     AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
3543       AC_MSG_WARN("Could not find a non-3d Athena header set."),
3544       AC_CHECK_HEADER(X11/Xaw/XawInit.h,
3545         athena_h_path=X11/Xaw,
3546         AC_MSG_WARN("Could not find a non-3d Athena header set.")))
3547   else
3548     dnl The three-d Athena headers are so much more slippery.
3549     dnl Curse this `Lets replace standard libraries' thing that they did. :/
3550     AC_CHECK_HEADER(X11/$athena_variant/XawInit.h,
3551       AC_CHECK_HEADER(X11/$athena_variant/ThreeD.h,
3552         athena_h_path=X11/$athena_variant,))
3553
3554     dnl Is the variant specific header directory directly under include?
3555     if test -z "$athena_h_path"; then
3556       AC_CHECK_HEADER($athena_variant/XawInit.h,
3557         AC_CHECK_HEADER($athena_variant/ThreeD.h,
3558           athena_h_path=$athena_variant,))
3559     fi
3560
3561     dnl If we couldn't find the specific variant, try the generic Athena 3d headers
3562     if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
3563       AC_CHECK_HEADER(X11/Xaw3d/XawInit.h,
3564         AC_CHECK_HEADER(X11/Xaw3d/ThreeD.h,
3565           [
3566             AC_MSG_WARN("Assuming that X11/Xaw3d headers are suitable for $athena_variant.")
3567             athena_h_path=X11/Xaw3d
3568           ],))
3569     fi
3570
3571     dnl Also generic 3d headers directly under include dir
3572     if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
3573       AC_CHECK_HEADER(Xaw3d/XawInit.h,
3574         AC_CHECK_HEADER(Xaw3d/ThreeD.h,
3575           [
3576             AC_MSG_WARN("Assuming that Xaw3d headers are suitable for $athena_variant.")
3577             athena_h_path=Xaw3d
3578           ],))
3579     fi
3580
3581     dnl If nothing yet found, see if Xaw is a 3d header set...
3582     dnl We AC_MSG_WARN if we fail because I am all out of ideas...
3583     if test -z "$athena_h_path"; then
3584       AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
3585         [
3586           AC_MSG_WARN("Assuming that X11/Xaw headers are suitable for $athena_variant.")
3587           athena_h_path=X11/Xaw
3588         ],
3589         AC_MSG_WARN("Could not find a suitable 3d Athena header set."))
3590     fi
3591   fi
3592
3593   dnl Do we actually have a usable Athena widget set? Please?
3594   if test -n "$athena_lib" -a -n "$athena_h_path"; then
3595     have_xaw=yes
3596   else
3597     have_xaw=no
3598   fi
3599
3600 else
3601   have_xaw=no
3602 fi dnl "$with_x11" = "yes"
3603
3604 if test "$with_x11" = "yes"; then
3605   dnl autodetect Motif - but only add to libs_x later (if necessary)
3606   AC_CHECK_HEADER(Xm/Xm.h,
3607    [AC_CHECK_LIB(Xm, XmStringFree, have_motif=yes, have_motif=no)],
3608    have_motif=no)
3609
3610   if test "$have_motif" = "yes"; then
3611     dnl autodetect lesstif
3612     AC_MSG_CHECKING(for Lesstif)
3613     AC_EGREP_CPP(yes,
3614 [#include <Xm/Xm.h>
3615 #ifdef LESSTIF_VERSION
3616 yes
3617 #endif
3618 ], have_lesstif=yes, have_lesstif=no)
3619   AC_MSG_RESULT($have_lesstif)
3620   fi
3621
3622 fi dnl "$with_x11" = "yes"
3623
3624 dnl Finish ensuring that we have values for the various toolkit items.
3625 dnl Not all toolkits support all widgets
3626
3627 dnl Avoid using Motif :-(
3628 case "$opsys" in
3629   *linux* | cygwin* )  lucid_prefers_motif="no"  ;;
3630   * )        lucid_prefers_motif="yes" ;;
3631 esac
3632
3633 case "$with_menubars" in "" | "yes" | "athena" )
3634   with_menubars="lucid" ;;
3635 esac
3636 case "$with_dialogs" in "" | "yes" | "lucid" )
3637   if test "$lucid_prefers_motif" = "yes"; then
3638     if   test "$have_motif"     = "yes"; then with_dialogs="motif"
3639     elif test "$have_xaw"       = "yes"; then with_dialogs="athena"
3640     else with_dialogs=no
3641     fi
3642   else
3643     if   test "$have_xaw"       = "yes"; then with_dialogs="athena"
3644     elif test "$have_motif"     = "yes"; then with_dialogs="motif"
3645     else with_dialogs=no
3646     fi
3647   fi ;;
3648 esac
3649 case "$with_scrollbars" in "" | "yes" )
3650   with_scrollbars="lucid" ;;
3651 esac
3652 case "$with_widgets" in
3653   "yes" | "lucid")
3654     if test "$lucid_prefers_motif" = "yes"; then
3655       if   test "$have_motif" = "yes"; then with_widgets="motif"
3656       elif test "$have_xaw"   = "yes"; then with_widgets="athena"
3657       else with_widgets=no
3658       fi
3659     else
3660       if   test "$have_xaw"   = "yes"; then with_widgets="athena"
3661       elif test "$have_motif" = "yes"; then with_widgets="motif"
3662       else with_widgets=no
3663       fi
3664     fi ;;
3665   "" )
3666     with_widgets=no ;;
3667 esac
3668
3669 all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars $with_widgets"
3670
3671 case "$all_widgets" in
3672   *athena* )
3673     if test "$have_xaw" != "yes"; then
3674       XE_DIE("Could not find a suitable Athena library to build with.")
3675     fi
3676
3677     dnl Add the Lucid widget Athena code
3678     XE_APPEND(lwlib-Xaw.o, lwlib_objs)
3679
3680     dnl Add the Athena widget library we located earlier
3681     XE_PREPEND(-l$athena_lib, libs_x)
3682
3683     dnl Tell lwlib where to find the Athena header files.
3684     dnl Many people have tried to create a `smart' way of doing this,
3685     dnl but all have failed.  Before changing the following ugly definitions,
3686     dnl consult the veterans of many a battle.
3687     AC_DEFINE_UNQUOTED(ATHENA_Scrollbar_h_,"$athena_h_path/Scrollbar.h")
3688     AC_DEFINE_UNQUOTED(ATHENA_Dialog_h_,"$athena_h_path/Dialog.h")
3689     AC_DEFINE_UNQUOTED(ATHENA_Form_h_,"$athena_h_path/Form.h")
3690     AC_DEFINE_UNQUOTED(ATHENA_Command_h_,"$athena_h_path/Command.h")
3691     AC_DEFINE_UNQUOTED(ATHENA_Label_h_,"$athena_h_path/Label.h")
3692     AC_DEFINE_UNQUOTED(ATHENA_LabelP_h_,"$athena_h_path/LabelP.h")
3693     AC_DEFINE_UNQUOTED(ATHENA_Toggle_h_,"$athena_h_path/Toggle.h")
3694     AC_DEFINE_UNQUOTED(ATHENA_ToggleP_h_,"$athena_h_path/ToggleP.h")
3695     AC_DEFINE_UNQUOTED(ATHENA_AsciiText_h_,"$athena_h_path/AsciiText.h")
3696     AC_DEFINE_UNQUOTED(ATHENA_XawInit_h_,"$athena_h_path/XawInit.h")
3697
3698     AC_DEFINE(LWLIB_USES_ATHENA)
3699     AC_DEFINE(NEED_ATHENA)
3700     need_athena="yes"
3701
3702     if test "$athena_3d" = "yes"; then
3703       AC_DEFINE(HAVE_ATHENA_3D)
3704     fi
3705   ;;
3706 esac
3707
3708 case "$all_widgets" in *motif* )
3709   AC_DEFINE(LWLIB_USES_MOTIF)
3710   AC_DEFINE(NEED_MOTIF)
3711   XE_APPEND(lwlib-Xm.o, lwlib_objs)
3712   need_motif=yes ;;
3713 esac
3714
3715 test "$with_menubars"   = "lucid" && XE_APPEND(xlwmenu.o, lwlib_objs)
3716 test "$with_menubars"   = "motif" && XE_APPEND(xlwmenu.o, lwlib_objs)
3717 test "$with_scrollbars" = "lucid" && XE_APPEND(xlwscrollbar.o, lwlib_objs)
3718 test "$with_widgets"   != "no" && test "$with_widgets" != "msw" && \
3719         XE_APPEND(xlwtabs.o xlwgcs.o, lwlib_objs)
3720 case "$with_widgets" in athena* )
3721         XE_APPEND(xlwradio.o xlwcheckbox.o xlwgauge.o, lwlib_objs);;
3722 esac
3723 case "$all_widgets" in *lucid* )
3724   AC_DEFINE(NEED_LUCID)
3725   XE_APPEND(lwlib-Xlw.o, lwlib_objs) ;;
3726 esac
3727
3728 AC_SUBST(lwlib_objs)
3729
3730 test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA)
3731 test "$with_dialogs"    = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA)
3732
3733 if test "$athena_3d" = "yes"; then
3734   test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
3735   test "$with_dialogs"    = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
3736 fi
3737
3738 case "$with_widgets" in athena* ) AC_DEFINE(LWLIB_WIDGETS_ATHENA);; esac
3739 test "$with_widgets" != "no" && test "$with_widgets" != "msw" && \
3740         AC_DEFINE(LWLIB_TABS_LUCID)
3741
3742 test "$with_menubars"   != "no"    && AC_DEFINE(HAVE_MENUBARS)
3743 test "$with_scrollbars" != "no"    && AC_DEFINE(HAVE_SCROLLBARS)
3744 test "$with_dialogs"    != "no"    && AC_DEFINE(HAVE_DIALOGS)
3745 test "$with_toolbars"   != "no"    && AC_DEFINE(HAVE_TOOLBARS)
3746 test "$with_widgets"    != "no"    && AC_DEFINE(HAVE_WIDGETS)
3747
3748 test "$with_menubars"   = "lucid"  && AC_DEFINE(LWLIB_MENUBARS_LUCID)
3749 test "$with_scrollbars" = "lucid"  && AC_DEFINE(LWLIB_SCROLLBARS_LUCID)
3750
3751 test "$with_menubars"   = "motif"  && AC_DEFINE(LWLIB_MENUBARS_MOTIF)
3752 test "$with_scrollbars" = "motif"  && AC_DEFINE(LWLIB_SCROLLBARS_MOTIF)
3753 test "$with_dialogs"    = "motif"  && AC_DEFINE(LWLIB_DIALOGS_MOTIF)
3754 test "$with_widgets"    = "motif"  && AC_DEFINE(LWLIB_WIDGETS_MOTIF)
3755
3756 test "$with_menubars"   != "no"    && XE_ADD_OBJS(menubar.o)
3757 test "$with_scrollbars" != "no"    && XE_ADD_OBJS(scrollbar.o)
3758 test "$with_dialogs"    != "no"    && XE_ADD_OBJS(dialog.o)
3759 test "$with_toolbars"   != "no"    && XE_ADD_OBJS(toolbar.o)
3760
3761 if test "$with_gtk" = "yes"; then
3762   test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar-gtk.o)
3763   test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar-gtk.o)
3764   test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog-gtk.o)
3765   test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar-gtk.o)
3766   test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-gtk.o)
3767 fi
3768
3769 if test "$with_x11" = "yes"; then
3770   test "$with_menubars"   != "no"  && XE_ADD_OBJS(menubar-x.o)
3771   test "$with_scrollbars" != "no"  && XE_ADD_OBJS(scrollbar-x.o)
3772   test "$with_dialogs"    != "no"  && XE_ADD_OBJS(dialog-x.o)
3773   test "$with_toolbars"   != "no"  && XE_ADD_OBJS(toolbar-x.o)
3774   test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-x.o)
3775 fi
3776
3777 dnl ----------------------
3778 dnl Mule-dependent options
3779 dnl ----------------------
3780
3781 test -z "$with_mule" && with_mule=no
3782 test -z "$with_file_coding" && with_file_coding=no
3783
3784 dnl if test "$with_mule" = "yes" && test ! -d "$srcdir/lisp/mule"; then
3785 dnl     echo "Attempt to Build with Mule without Mule/Lisp"
3786 dnl     echo "Please install the XEmacs/Mule tarball or"
3787 dnl     echo "rerun configure with --with-mule=no"
3788 dnl     exit 1
3789 dnl fi
3790
3791 if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then
3792   AC_DEFINE(FILE_CODING)
3793   XE_ADD_OBJS(file-coding.o)
3794 fi
3795
3796 dnl Autodetect concord
3797 concord_includes_found=no
3798 if test "$with_concord" != "no"; then
3799    AC_CHECK_HEADER(concord.h, ,with_concord=no)
3800 fi
3801 if test "$concord_includes_found" = "no" -a "$with_concord" != "no" -a \
3802    -d "/usr/local/concord/include"; then
3803   save_c_switch_site="$c_switch_site"
3804   c_switch_site="$c_switch_site -I/usr/local/concord/include"
3805   AC_CHECK_HEADER(concord.h,concord_includes_found=yes)
3806   if test "$concord_includes_found" != "yes"; then
3807     c_switch_site="$save_c_switch_site"
3808     with_concord="no"
3809   fi
3810 fi
3811
3812 test -z "$with_concord" && with_concord=yes
3813 if test "$with_concord" = "yes"; then
3814   AC_DEFINE(HAVE_CONCORD)
3815   XE_PREPEND(-lconcord, libs_x)
3816   XE_ADD_OBJS(concord.o)
3817 fi
3818
3819 test -z "$with_chise" && with_chise=yes
3820 if test "$with_chise" = "yes"; then
3821     with_mule=yes
3822     with_utf_2000=yes
3823     with_text_coding=yes
3824 fi
3825
3826 if test "$with_mule" = "yes" ; then
3827   AC_CHECKING(for Mule-related features)
3828   AC_DEFINE(MULE)
3829
3830   dnl Autodetect chise
3831   chise_includes_found=no
3832   if test "$with_chise" != "no"; then
3833     AC_CHECK_HEADER(chise.h, ,with_chise=no)
3834   fi
3835   if test "$chise_includes_found" = "no" -a "$with_chise" != "no" -a \
3836       -d "/usr/local/chise/include"; then
3837     save_c_switch_site="$c_switch_site"
3838     c_switch_site="$c_switch_site -I/usr/local/chise/include"
3839     AC_CHECK_HEADER(chise.h,chise_includes_found=yes)
3840     if test "$chise_includes_found" != "yes"; then
3841       c_switch_site="$save_c_switch_site"
3842       with_chise="no"
3843     fi
3844   fi
3845
3846   test -z "$with_chise" && with_chise=yes
3847   if test "$with_chise" = "yes"; then
3848     AC_DEFINE(HAVE_CHISE)
3849     AC_DEFINE(HAVE_LIBCHISE)
3850     XE_PREPEND(-lchise, libs_x)
3851   fi
3852
3853   AC_DEFINE(FILE_CODING)
3854   XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o)
3855   if test "$with_utf_2000" = "yes" && test "$with_text_coding" = "yes"; then
3856     AC_DEFINE(TEXT_CODING)
3857     XE_ADD_OBJS(text-coding.o)
3858   else
3859     XE_ADD_OBJS(file-coding.o)
3860   fi
3861   dnl Use -lintl to get internationalized strerror for Mule
3862   AC_CHECK_HEADERS(libintl.h)
3863   AC_CHECK_LIB(intl, strerror)
3864
3865   if test "$with_utf_2000" = "yes" ; then
3866     AC_DEFINE(CHAR_IS_UCS4)
3867     AC_DEFINE(UTF2000)
3868     with_wnn=no
3869     with_wnn6=no
3870   fi
3871
3872   AC_CHECKING(for Mule input methods)
3873   dnl Do we have the XmIm* routines?  And if so, do we want to use them?
3874   dnl XIM seems to be flaky except on Solaris...
3875   dnl test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no
3876   case "$with_xim" in "" | "yes" )
3877     AC_CHECKING(for XIM)
3878     AC_CHECK_LIB(X11, XOpenIM, with_xim=xlib, with_xim=no)
3879     dnl XIM + Lesstif is not (yet?) usable
3880     dnl Only use Motif if linking Motif anyway, or don't have xlib XIM
3881     if test "$need_motif $have_lesstif" = "yes no"; then
3882       AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
3883     elif test "$have_motif $have_lesstif $with_xim" = "yes no no"; then
3884       AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
3885     fi ;;
3886   esac
3887   if test "$with_xim" != "no"; then
3888     AC_DEFINE(HAVE_XIM)
3889     if test "$with_xim" = "xlib"; then
3890       AC_DEFINE(XIM_XLIB)
3891       XE_ADD_OBJS(input-method-xlib.o)
3892     fi
3893     if test "$with_xim" = "motif"; then
3894       AC_DEFINE(XIM_MOTIF)
3895       need_motif=yes
3896       XE_ADD_OBJS(input-method-motif.o)
3897     fi
3898     if test "$with_xim" = "motif"; then
3899       with_xfs=no
3900     fi
3901   fi
3902
3903   dnl "with_xfs" = "yes"
3904   if test "$with_xfs" = "yes" ; then
3905     AC_CHECKING(for XFontSet)
3906     AC_CHECK_LIB(X11, XmbDrawString, [:], with_xfs=no)
3907     if test "$with_xfs" = "yes" && test "$with_menubars" = "lucid"; then
3908       AC_DEFINE(USE_XFONTSET)
3909       if test "$with_xim" = "no" ; then
3910         XE_ADD_OBJS(input-method-xlib.o)
3911       fi
3912     fi
3913   fi dnl with_xfs
3914
3915   dnl Autodetect WNN
3916   test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
3917   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/jllib.h, ,with_wnn=no) }
3918   dnl gcc 2.97 fixincludes breaks inclusion of wnn/commonhd.h
3919   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/commonhd.h, ,with_wnn=no) }
3920   dnl Detour to find crypt
3921   if test "$with_wnn" != "no"; then
3922     AC_CHECK_FUNCS(crypt)
3923     test "$ac_cv_func_crypt" != "yes" && { AC_CHECK_LIB(crypt, crypt) }
3924   fi
3925   dnl Back to our regularly scheduled wnn hunting
3926   if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
3927     AC_CHECK_LIB(wnn,jl_dic_list_e,libwnn=wnn,
3928       AC_CHECK_LIB(wnn4,jl_dic_list_e,libwnn=wnn4,
3929         AC_CHECK_LIB(wnn6,jl_dic_list_e,libwnn=wnn6,
3930           AC_CHECK_LIB(wnn6_fromsrc,dic_list_e,libwnn=wnn6_fromsrc,with_wnn=no))))
3931   fi
3932   test -z "$with_wnn" && with_wnn=yes
3933   if test "$with_wnn" = "yes"; then
3934     AC_DEFINE(HAVE_WNN)
3935     XE_PREPEND(-l$libwnn, libs_x)
3936     XE_ADD_OBJS(mule-wnnfns.o)
3937     if test "$with_wnn6" != "no"; then
3938       AC_CHECK_LIB($libwnn, jl_fi_dic_list, with_wnn6=yes)
3939       test "$with_wnn6" = "yes" && AC_DEFINE(WNN6)
3940     fi
3941   fi
3942
3943   dnl Autodetect canna
3944   canna_includes_found=no
3945   if test "$with_canna" != "no"; then
3946     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3947   fi
3948   if test "$canna_includes_found" = "no" -a "$with_canna" != "no" -a \
3949       -d "/usr/local/canna/include"; then
3950     save_c_switch_site="$c_switch_site"
3951     c_switch_site="$c_switch_site -I/usr/local/canna/include"
3952     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3953     if test "$canna_includes_found" != "yes"; then
3954       c_switch_site="$save_c_switch_site"
3955       with_canna="no"
3956     fi
3957   fi
3958
3959   test -z "$with_canna" && { AC_CHECK_HEADER(canna/RK.h,         , with_canna=no) }
3960   test -z "$with_canna" && { AC_CHECK_LIB(RKC, RkBgnBun,       [:],with_canna=no) }
3961   test -z "$with_canna" && { AC_CHECK_LIB(canna,jrKanjiControl,[:],with_canna=no) }
3962   test -z "$with_canna" && with_canna=yes
3963   if test "$with_canna" = "yes"; then
3964     AC_DEFINE(HAVE_CANNA)
3965     XE_PREPEND(-lcanna -lRKC, libs_x)
3966     XE_ADD_OBJS(mule-canna.o)
3967   fi
3968
3969 else dnl "$with_mule" = "no"
3970   for feature in xim canna wnn; do
3971     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3972       AC_MSG_WARN("--with-${feature} ignored:  Not valid without Mule support")
3973     fi
3974     eval "with_${feature}=no"
3975   done
3976 fi dnl with_mule
3977
3978
3979 dnl At this point, we know whether we need the motif lib or not.
3980 if test "$need_motif" = "yes" ; then
3981   XE_PREPEND(-lXm, libs_x)
3982   dnl AIX needs the following library for use with Motif
3983   AC_CHECK_LIB(i18n, layout_object_getvalue, [XE_PREPEND(-li18n, libs_x)])
3984   XE_COMPUTE_RUNPATH()
3985 fi
3986
3987 dnl ----------------------------------------------------------------
3988 dnl Check for POSIX functions.
3989 dnl ----------------------------------------------------------------
3990
3991 AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo 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 stpcpy strerror tzset ulimit usleep waitpid vsnprintf fsync ftruncate umask)
3992
3993 dnl getaddrinfo() is borked under hpux11
3994 if test "$ac_cv_func_getaddrinfo" != "no" ; then
3995   case "$opsys" in
3996     hpux11* )
3997       AC_MSG_WARN([Use of getaddrinfo is disabled for HP-UX 11.XX.])
3998       ac_cv_func_getaddrinfo=no
3999       ;;
4000   esac
4001 fi
4002
4003 dnl ----------------------------------------------------------------
4004 dnl Check for PTY support functions.
4005 dnl ----------------------------------------------------------------
4006
4007 dnl There is no "standard" pty allocation method.  Every system is different.
4008 dnl  getpt()  is the preferred pty allocation method on glibc systems.
4009 dnl _getpty() is the preferred pty allocation method on SGI systems.
4010 dnl grantpt(), unlockpt(), ptsname() are defined by Unix98.
4011 AC_CHECK_FUNCS(getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp)
4012
4013 dnl openpty() is the preferred pty allocation method on BSD and Tru64 systems.
4014 dnl openpty() might be declared in:
4015 dnl - pty.h (Tru64 or Linux)
4016 dnl - libutil.h (FreeBSD)
4017 dnl - util.h (NetBSD)
4018 AC_CHECK_FUNC(openpty, have_openpty=yes, [
4019   AC_CHECK_LIB(util, openpty, have_openpty=yes need_libutil=yes)])
4020 if test "$have_openpty" = "yes"; then
4021   AC_DEFINE(HAVE_OPENPTY)
4022   AC_CHECK_HEADERS(pty.h libutil.h util.h, break)
4023   test "$need_libutil" = "yes" && XE_APPEND(-lutil, libs_system)
4024 fi
4025
4026 dnl Check for STREAM support functions.
4027 dnl Confusingly, "str" means both "string" and "SysV Streams".
4028 AC_CHECK_HEADERS(stropts.h)
4029 if test "$ac_cv_header_stropts_h" = "yes"; then
4030   AC_CHECK_FUNCS(isastream)
4031   AC_CHECK_HEADERS(strtio.h) dnl TIOCSIGNAL
4032 fi
4033
4034 dnl Use our own realpath always.
4035 XE_ADD_OBJS(realpath.o)
4036
4037 dnl Check whether the system provides getloadavg().
4038 AC_CHECK_FUNCS(getloadavg)
4039
4040 if test "$ac_cv_func_getloadavg" = "yes"; then
4041   dnl Solaris 8 declares getloadavg() in <sys/loadavg.h>.
4042   dnl glibc 2.2 declares getloadavg() in <stdlib.h>...
4043   dnl   ...if we #define _GNU_SOURCE, which we do.
4044   AC_CHECK_HEADERS(sys/loadavg.h)
4045 else
4046   dnl We define our own getloadavg() using lower level functions.
4047   XE_ADD_OBJS(getloadavg.o)
4048
4049   dnl Used by getloadavg() - does not require root priveleges
4050   AC_CHECK_LIB(kstat, kstat_open)
4051   AC_CHECK_HEADERS(kstat.h)
4052
4053   dnl Another way to get the load average
4054   AC_CHECK_LIB(kvm, kvm_read)
4055 fi
4056
4057 dnl If netdb.h does not declare h_errno, we must declare it by hand.
4058 AC_MSG_CHECKING(whether netdb declares h_errno)
4059 AC_TRY_LINK([#include <netdb.h>],
4060   [return h_errno;],
4061   [AC_MSG_RESULT(yes)
4062    AC_DEFINE(HAVE_H_ERRNO)],
4063   [AC_MSG_RESULT(no)])
4064
4065 AC_MSG_CHECKING(for sigsetjmp)
4066 AC_TRY_COMPILE([#include <setjmp.h>],
4067         [sigjmp_buf bar; sigsetjmp (bar, 0);],
4068   [AC_MSG_RESULT(yes)
4069    AC_DEFINE(HAVE_SIGSETJMP)],
4070   [AC_MSG_RESULT(no)])
4071
4072 AC_MSG_CHECKING(whether localtime caches TZ)
4073 AC_CACHE_VAL(emacs_cv_localtime_cache,
4074 [if test "$ac_cv_func_tzset" = "yes"; then
4075 AC_TRY_RUN([#include <time.h>
4076 #if STDC_HEADERS
4077 # include <stdlib.h>
4078 #endif
4079 extern char **environ;
4080 unset_TZ ()
4081 {
4082   char **from, **to;
4083   for (to = from = environ; (*to = *from); from++)
4084     if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
4085       to++;
4086 }
4087 char TZ_GMT0[] = "TZ=GMT0";
4088 char TZ_PST8[] = "TZ=PST8";
4089 main()
4090 {
4091   time_t now = time ((time_t *) 0);
4092   int hour_GMT0, hour_unset;
4093   if (putenv (TZ_GMT0) != 0)
4094     exit (1);
4095   hour_GMT0 = localtime (&now)->tm_hour;
4096   unset_TZ ();
4097   hour_unset = localtime (&now)->tm_hour;
4098   if (putenv (TZ_PST8) != 0)
4099     exit (1);
4100   if (localtime (&now)->tm_hour == hour_GMT0)
4101     exit (1);
4102   unset_TZ ();
4103   if (localtime (&now)->tm_hour != hour_unset)
4104     exit (1);
4105   exit (0);
4106 }], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
4107 [# If we have tzset, assume the worst when cross-compiling.
4108 emacs_cv_localtime_cache=yes])
4109 else
4110         # If we lack tzset, report that localtime does not cache TZ,
4111         # since we can't invalidate the cache if we don't have tzset.
4112         emacs_cv_localtime_cache=no
4113 fi],[:])dnl
4114 AC_MSG_RESULT($emacs_cv_localtime_cache)
4115 if test $emacs_cv_localtime_cache = yes; then
4116   AC_DEFINE(LOCALTIME_CACHE)
4117 fi
4118
4119 if test "$HAVE_TIMEVAL" = "yes"; then
4120 AC_MSG_CHECKING(whether gettimeofday accepts one or two arguments)
4121 AC_TRY_LINK([
4122 #ifdef TIME_WITH_SYS_TIME
4123 #include <sys/time.h>
4124 #include <time.h>
4125 #else
4126 #ifdef HAVE_SYS_TIME_H
4127 #include <sys/time.h>
4128 #else
4129 #include <time.h>
4130 #endif
4131 #endif
4132   ],
4133   [
4134   struct timeval time;
4135   gettimeofday (&time, 0);
4136 ],
4137   [AC_MSG_RESULT(two)],
4138   [AC_MSG_RESULT(one)
4139    AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)])
4140 fi
4141
4142
4143 AC_C_INLINE
4144 test "$ac_cv_c_inline" != "no" -a "$GCC" = "yes" && XE_ADD_OBJS(inline.o)
4145
4146 dnl HP-UX has a working alloca in libPW.
4147 dnl case "${GCC}${opsys}" in hpux* )
4148 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
4149 dnl esac
4150
4151 dnl AC_FUNC_ALLOCA doesn't know about DEC C's #pragma intrinsic(alloca)
4152 if test "$__DECC" != "yes"; then
4153   AC_FUNC_ALLOCA
4154   test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
4155 fi
4156
4157 dnl Check whether vfork exists and works correctly. (This does more
4158 dnl than just check for its existence.) If so, it defines HAVE_VFORK_H.
4159 dnl If not, it defines vfork to be fork.
4160 AC_FUNC_VFORK
4161
4162 dnl Check whether strcoll exists and works correctly. (This does more
4163 dnl than just check for its existence.) If so, it defines HAVE_STRCOLL.
4164 AC_FUNC_STRCOLL
4165
4166 dnl If `getpgrp' takes no argument (the POSIX.1 version), define
4167 dnl `GETPGRP_VOID'.  Otherwise, it is the BSD version, which takes a
4168 dnl process ID as an argument.
4169 AC_CHECK_FUNCS(getpgrp)
4170 AC_FUNC_GETPGRP
4171
4172 dnl We used to call AC_FUNC_MMAP here
4173 dnl Instead we now use following, suggested by Neal Becker
4174 AC_MSG_CHECKING(for working mmap)
4175 case "$opsys" in ultrix* ) have_mmap=no ;; *)
4176 AC_TRY_RUN([#include <stdio.h>
4177 #include <unistd.h>
4178 #include <fcntl.h>
4179 #include <sys/mman.h>
4180
4181 #ifndef MAP_VARIABLE
4182 #define MAP_VARIABLE 0
4183 #endif
4184
4185 #ifndef MAP_FAILED
4186 #define MAP_FAILED -1
4187 #endif
4188
4189 int main (int argc, char *argv[])
4190 {
4191   int fd = -1;
4192   caddr_t p;
4193 #ifndef MAP_ANONYMOUS
4194   fd = open ("/dev/zero", O_RDWR);
4195   if (fd < 0)
4196     return 1;
4197 #define MAP_ANONYMOUS 0
4198 #endif
4199   if (mmap(0, 1024, PROT_READ | PROT_WRITE,
4200            MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS,
4201            fd, 0) != (void *) MAP_FAILED)
4202     return 0;
4203   perror ("conftest: mmap failed");
4204   return 1;
4205 }], have_mmap=yes, have_mmap=no) ;;
4206 esac
4207 AC_MSG_RESULT($have_mmap)
4208 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
4209
4210 dnl By default we switch off rel-alloc on cygwin as it generally causes us grief
4211 case "$opsys" in cygwin*) 
4212         test "$rel_alloc" = "default" && rel_alloc=no ;;
4213 esac
4214 dnl rel_alloc requires either GNU malloc or system malloc with mmap
4215 dnl We only turn rel_alloc on by default if mmap is available.
4216 test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
4217 if test "$rel_alloc $have_mmap" = "default yes"; then
4218   if test "$doug_lea_malloc" = "yes"; then
4219     dnl Check if malloc() calls mmap(), making rel_alloc pointless.
4220     AC_MSG_CHECKING(for M_MMAP_THRESHOLD)
4221     AC_TRY_COMPILE([#include <malloc.h>],[
4222 #ifndef M_MMAP_THRESHOLD
4223 #error No M_MMAP_THRESHOLD :-(
4224 !@+$%^&*_)(_ - unlikely to compile...
4225 #endif
4226 ], [rel_alloc=no; AC_MSG_RESULT(yes);], [rel_alloc=yes; AC_MSG_RESULT(no);])
4227   else
4228     rel_alloc=yes
4229   fi
4230 fi
4231 test "$rel_alloc" = "yes" && AC_DEFINE(REL_ALLOC)
4232
4233 dnl Check for terminal I/O variants
4234 dnl TERMIOS systems may have termio.h, but not vice-versa, I think.
4235 AC_CHECK_HEADER(termios.h,
4236   AC_DEFINE(HAVE_TERMIOS)
4237   AC_DEFINE(SIGNALS_VIA_CHARACTERS)
4238   AC_DEFINE(NO_TERMIO),
4239   [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])])
4240
4241
4242 dnl Check for Internet sockets.
4243 AC_CHECK_FUNC(socket,
4244  [AC_CHECK_HEADER(netinet/in.h,
4245    [AC_CHECK_HEADER(arpa/inet.h, [
4246   AC_DEFINE(HAVE_SOCKETS)
4247       AC_MSG_CHECKING("for sun_len member in struct sockaddr_un")
4248       AC_TRY_LINK([
4249 #include <sys/types.h>
4250 #include <sys/socket.h>
4251 #include <sys/un.h>
4252       ],
4253       [static struct sockaddr_un x; x.sun_len = 1;],
4254       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)],
4255       [AC_MSG_RESULT(no)])
4256       AC_MSG_CHECKING("for ip_mreq struct in netinet/in.h")
4257       AC_TRY_LINK([
4258 #include <sys/types.h>
4259 #include <netinet/in.h>
4260       ],
4261       [static struct ip_mreq x;],
4262       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MULTICAST)],
4263       [AC_MSG_RESULT(no)])])])])
4264
4265 dnl Check for SYS V IPC. (Inferior to sockets.)
4266 AC_CHECK_FUNC(msgget,
4267   [AC_CHECK_HEADER(sys/ipc.h,
4268     [AC_CHECK_HEADER(sys/msg.h,
4269       [AC_DEFINE(HAVE_SYSVIPC)])])])
4270
4271 dnl Check for directory variants
4272 AC_CHECK_HEADER(dirent.h, [AC_DEFINE(SYSV_SYSTEM_DIR)],
4273   [AC_CHECK_HEADER(sys/dir.h, , [AC_DEFINE(NONSYSTEM_DIR_LIBRARY)])])
4274
4275 dnl Check for nlist.h
4276 AC_CHECK_HEADER(nlist.h, AC_DEFINE(NLIST_STRUCT), )
4277
4278 dnl Check for sound of various sorts.
4279
4280 dnl Autodetect native sound
4281 AC_CHECKING("for sound support")
4282 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
4283
4284 if test "$with_native_sound" != "no"; then
4285   dnl Maybe sound is already on include path...
4286   if test -n "$native_sound_lib"; then
4287     AC_CHECK_HEADER(multimedia/audio_device.h,
4288       [sound_found=yes sound_cflags=""
4289       XE_ADD_OBJS(sunplay.o)])
4290   fi
4291
4292   dnl Autodetect Sun native sound from SUNWaudmo package
4293   if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
4294     if test -d "/usr/demo/SOUND/include/multimedia"; then
4295       sun_sound_cflags="-I/usr/demo/SOUND/include"
4296     elif test -d "/usr/demo/SOUND/multimedia"; then
4297       sun_sound_cflags="-I/usr/demo/SOUND"
4298     fi
4299
4300     if test -n "$native_sound_lib"; then
4301       sun_sound_lib="$native_sound_lib"
4302     elif test -r "/usr/demo/SOUND/lib/libaudio.a"; then
4303       sun_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
4304     elif test -r "/usr/demo/SOUND/libaudio.a"; then
4305       sun_sound_lib="/usr/demo/SOUND/libaudio.a"
4306     fi
4307
4308     if test -n "$sun_sound_cflags" -a -n "$sun_sound_lib"; then
4309       native_sound_lib="$sun_sound_lib"
4310       sound_cflags="$sun_sound_cflags"
4311       sound_found=yes
4312       XE_ADD_OBJS(sunplay.o)
4313     fi
4314   fi
4315
4316   dnl Check for SGI and HP native sound libs
4317   if test -z "$sound_found"; then
4318     case "$canonical" in
4319     *-sgi-* )
4320       if test -z "$native_sound_lib"; then
4321         AC_CHECK_LIB(audio, ALopenport, native_sound_lib="-laudio")
4322       fi
4323       if test -n "$native_sound_lib"; then
4324         sound_found=yes sound_cflags=""
4325         XE_ADD_OBJS(sgiplay.o)
4326       fi ;;
4327     hppa*-hp-hpux* )
4328       if test -z "$native_sound_lib"; then
4329         AC_CHECK_LIB(Alib, AOpenAudio, native_sound_lib="-lAlib")
4330       fi
4331       if test -n "$native_sound_lib"; then
4332         sound_found=yes
4333         XE_ADD_OBJS(hpplay.o)
4334         if test "$GCC" = "yes" # Kludge city
4335           then sound_cflags="-Dconst= -Dvolatile= -I/usr/audio/examples"
4336           else sound_cflags="+e -I/usr/audio/examples"
4337         fi
4338       fi ;;
4339     esac
4340   fi
4341
4342   dnl Win32 Native uses native sound
4343   if test -z "$sound_found"; then
4344     if test "$with_msw" = "yes"; then
4345     sound_found=yes
4346     native_sound_lib=
4347     fi
4348   fi
4349
4350   dnl Check for Linux/BSD native sound
4351   if test -z "$sound_found"; then
4352     for dir in "machine" "sys" "linux"; do
4353       AC_CHECK_HEADER(${dir}/soundcard.h,
4354         sound_found=yes
4355        need_miscplay=yes
4356         XE_ADD_OBJS(linuxplay.o)
4357         [AC_DEFINE_UNQUOTED(SOUNDCARD_H_FILE, "${dir}/soundcard.h")]
4358         break)
4359     done
4360   fi
4361
4362   test "$sound_found" = "yes" && with_native_sound=yes
4363 fi
4364
4365 if test "$with_native_sound" = "yes"; then
4366   AC_DEFINE(HAVE_NATIVE_SOUND)
4367   test -n "$native_sound_lib" && XE_PREPEND($native_sound_lib, LIBS)
4368 fi
4369
4370 dnl NAS Sound support
4371 if test "$with_nas_sound" != "no"; then
4372   AC_CHECK_HEADER(audio/audiolib.h, [
4373     AC_CHECK_LIB(audio, AuOpenServer, have_nas_sound=yes)])
4374   if test "$have_nas_sound" = "yes"; then
4375     with_nas_sound=yes
4376     AC_DEFINE(HAVE_NAS_SOUND)
4377     XE_ADD_OBJS(nas.o)
4378     XE_PREPEND(-laudio, libs_x)
4379     dnl If the nas library does not contain the error jump point,
4380     dnl then we force safer behavior.
4381     AC_EGREP_HEADER(AuXtErrorJump,audio/Xtutil.h,,[old_nas=yes; AC_DEFINE(NAS_NO_ERROR_JUMP)])
4382   else
4383     test "$with_nas_sound" = "yes" && \
4384       XE_DIE("Required NAS sound support cannot be provided.")
4385     with_nas_sound=no
4386   fi
4387 fi
4388
4389 dnl ESD Sound support
4390 if test "$with_esd_sound" != "no"; then
4391   AC_CHECK_PROG(have_esd_config, esd-config, yes, no)
4392   if test "$have_esd_config" = "yes"; then
4393     save_c_switch_site="$c_switch_site" save_LIBS="$LIBS"
4394     XE_APPEND(`esd-config --cflags`, c_switch_site)
4395     XE_PREPEND(`esd-config --libs`, LIBS)
4396     AC_CHECK_FUNC(esd_play_stream,
4397       have_esd_sound=yes,
4398       c_switch_site="$save_c_switch_site" LIBS="$save_LIBS")
4399   fi
4400
4401   if test "$have_esd_sound" = "yes"; then
4402     with_esd_sound=yes
4403     need_miscplay=yes
4404     XE_ADD_OBJS(esd.o)
4405     AC_DEFINE(HAVE_ESD_SOUND)
4406   else
4407     test "$with_esd_sound" = "yes" && \
4408       XE_DIE("Required ESD sound support cannot be provided.")
4409     with_esd_sound=no
4410   fi
4411 fi
4412
4413 test "$need_miscplay" = "yes" && XE_ADD_OBJS(miscplay.o)
4414
4415 dnl ---------------------
4416 dnl TTY-dependent options
4417 dnl ---------------------
4418
4419 test -z "$with_tty" && with_tty=yes
4420
4421 if test "$with_tty" = "yes"  ; then
4422   AC_CHECKING(for TTY-related features)
4423   AC_DEFINE(HAVE_TTY)
4424   XE_ADD_OBJS(console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o)
4425
4426   dnl Autodetect ncurses.
4427   if test -z "$with_ncurses"; then
4428     AC_CHECK_LIB(ncurses, tgetent, with_ncurses=yes, with_ncurses=no)
4429   fi
4430   if test "$with_ncurses" = "yes"; then
4431     AC_DEFINE(HAVE_NCURSES)
4432     AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
4433     AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
4434     XE_ADD_OBJS(terminfo.o)
4435     XE_PREPEND(-lncurses, LIBS)
4436
4437     if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then
4438       dnl Try again, and check for the bogus ncurses/ include bug.
4439       dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
4440       dnl <ncurses/unctrl.h>)
4441       save_c_switch_site="$c_switch_site"
4442       c_switch_site="$c_switch_site -I/usr/include/ncurses"
4443       AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
4444       if test "$ac_cv_header_ncurses_curses_h" = "yes"
4445         then AC_MSG_WARN("Your system has the bogus ncurses include bug.")
4446         else c_switch_site="$save_c_switch_site"
4447       fi
4448     fi
4449   else dnl "$with_ncurses" = "no"
4450     dnl Autodetect terminfo/-lcurses/-ltermlib/-ltermcap
4451     if test "$have_terminfo" = "yes"; then
4452       XE_ADD_OBJS(terminfo.o)
4453       if test -n "$libs_termcap"; then
4454         XE_PREPEND($libs_termcap, LIBS)
4455       else
4456         for lib in curses termlib termcap; do
4457           AC_CHECK_LIB($lib, tgetent, XE_PREPEND(-l${lib}, LIBS); break)
4458         done
4459       fi
4460     else dnl "$have_terminfo" = "no" && "with_ncurses" = "no"
4461       if test -n "$libs_termcap" -a "$opsys" = "openbsd"; then
4462         dnl We need to check if tgoto does not exist in termcap yet
4463         dnl because on OpenBSD libtermcap is another name for libcurses
4464         dnl which provides the same tgoto as ncurses
4465         AC_CHECK_LIB(termcap, tgoto, , XE_ADD_OBJS(tparam.o))
4466       else
4467         XE_ADD_OBJS(tparam.o)
4468       fi
4469       dnl The HP-UX curses library seems to have a badly broken version of select(2)
4470       dnl that makes "poll: interrupted system call" messages to appear and
4471       dnl Emacs subprocesses to hang (e.g. TeX compilation w/ AUCTeX) */
4472       case "$opsys" in *-hp-hpux* ) libs_termcap="-ltermcap" ;; esac
4473       if test -n "$libs_termcap"; then
4474         XE_PREPEND($libs_termcap, LIBS)
4475       else
4476         AC_CHECK_LIB(curses, tgetent, XE_PREPEND(-lcurses, LIBS),
4477           AC_CHECK_LIB(termcap, tgetent, XE_PREPEND(-ltermcap, LIBS),
4478             XE_ADD_OBJS(termcap.o)))
4479       fi
4480     fi
4481   fi
4482   AC_DEFINE_UNQUOTED(CURSES_H_FILE, "${curses_h_file-curses.h}")
4483   AC_DEFINE_UNQUOTED(TERM_H_FILE, "${term_h_file-term.h}")
4484
4485   dnl General Purpose Mouse (libgpm) support
4486   if test "$with_gpm" != "no"; then
4487     AC_CHECK_HEADER(gpm.h, [
4488       AC_CHECK_LIB(gpm, Gpm_Open, have_gpm=yes)])
4489     if test "$have_gpm" = "yes"; then
4490       with_gpm=yes
4491       AC_DEFINE(HAVE_GPM)
4492       XE_ADD_OBJS(gpmevent.o)
4493       XE_PREPEND(-lgpm, LIBS)
4494     elif test "$with_gpm" = "yes"; then
4495       XE_DIE(["GPM requested, but gpm.h or libgpm seems to be missing."])
4496     else
4497       with_gpm=no
4498     fi
4499   fi
4500
4501 else dnl "$with_tty" = "no"
4502   for feature in ncurses gpm; do
4503     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
4504       AC_MSG_WARN("--with-${feature} ignored:  Not valid without TTY support")
4505     fi
4506     eval "with_${feature}=no"
4507   done
4508 fi dnl with_tty
4509
4510 dnl Do we need event-unixoid.o ?
4511 dnl This is needed for X, or for TTY, or for MSWIN w/Cygwin select()
4512 dnl [but not Mingw MSWIN]
4513 test "$with_x11" = "yes" -o "$with_tty" = "yes" -o "$need_event_unixoid" = "yes" && XE_ADD_OBJS(event-unixoid.o)
4514
4515 dnl Database support
4516 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
4517 dnl On FreeBSD, both DB and DBM are part of libc.
4518 dnl By default, we check for DBM support in libgdbm, then libc, then libdbm.
4519
4520 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
4521   != "no no no" && AC_CHECKING(for database support)
4522
4523 dnl Check for ndbm.h, required for either kind of DBM support.
4524 if test "$with_database_gdbm $with_database_dbm" != "no no"; then
4525   AC_CHECK_HEADER(ndbm.h, [:], [
4526     test "$with_database_gdbm" = "yes" -o \
4527          "$with_database_dbm"  = "yes" && \
4528       XE_DIE("Required DBM support cannot be provided.")
4529     with_database_gdbm=no with_database_dbm=no])
4530 fi
4531
4532 dnl Check for DBM support in libgdbm.
4533 if test "$with_database_gdbm" != "no"; then
4534   AC_CHECK_LIB(gdbm, dbm_open, [
4535    with_database_gdbm=yes with_database_dbm=no libdbm=-lgdbm], [
4536    if test "$with_database_gdbm" = "yes"; then
4537      XE_DIE("Required GNU DBM support cannot be provided.")
4538    fi
4539    with_database_gdbm=no])
4540 fi
4541
4542 dnl Check for DBM support in libc and libdbm.
4543 if test "$with_database_dbm" != "no"; then
4544   AC_CHECK_FUNC(dbm_open, [with_database_dbm=yes libdbm=], [
4545     AC_CHECK_LIB(dbm, dbm_open, [with_database_dbm=yes libdbm=-ldbm], [
4546       test "$with_database_dbm" = "yes" && \
4547         XE_DIE("Required DBM support cannot be provided.")
4548       with_database_dbm=no])])
4549 fi
4550
4551 dnl Tell make about the DBM support we detected.
4552 test -n "$libdbm" && XE_PREPEND("$libdbm", LIBS)
4553 test "$with_database_gdbm" = "yes" -o \
4554      "$with_database_dbm"  = "yes" && \
4555   AC_DEFINE(HAVE_DBM)
4556
4557 dnl Check for u_int*_t typedefs.
4558 AC_CHECK_TYPE(u_int8_t, uint8_t)
4559 if test $ac_cv_type_u_int8_t = yes; then
4560 AC_DEFINE(HAVE_U_INT8_T,1)
4561 fi
4562 AC_CHECK_TYPE(u_int16_t, uint16_t)
4563 if test $ac_cv_type_u_int16_t = yes; then
4564 AC_DEFINE(HAVE_U_INT16_T,1)
4565 fi
4566 AC_CHECK_TYPE(u_int32_t, uint32_t)
4567 if test $ac_cv_type_u_int32_t = yes; then
4568 AC_DEFINE(HAVE_U_INT32_T,1)
4569 fi
4570 AC_CHECK_TYPE(u_int64_t, uint64_t)
4571 if test $ac_cv_type_u_int64_t = yes; then
4572 AC_DEFINE(HAVE_U_INT64_T,1)
4573 fi
4574
4575 dnl Check for Berkeley DB.
4576 if test "$with_database_berkdb" != "no"; then
4577   AC_MSG_CHECKING(for Berkeley db.h)
4578   for header in "db/db.h" "db.h"; do
4579     case "$opsys" in
4580         *freebsd*)
4581     AC_TRY_COMPILE([
4582 #include <stdlib.h>
4583 #if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1)
4584 #ifdef HAVE_INTTYPES_H
4585 #define __BIT_TYPES_DEFINED__
4586 #include <inttypes.h>
4587 #endif
4588 #endif
4589 #include <$header>
4590 ],[], db_h_file="$header"; break)
4591         ;;
4592         *)
4593     AC_TRY_COMPILE([
4594 #include <stdlib.h>
4595 #if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1)
4596 #ifdef HAVE_INTTYPES_H
4597 #define __BIT_TYPES_DEFINED__
4598 #include <inttypes.h>
4599 #if !HAVE_U_INT8_T
4600 typedef uint8_t  u_int8_t;
4601 #endif
4602 #if !HAVE_U_INT16_T
4603 typedef uint16_t u_int16_t;
4604 #endif
4605 #if !HAVE_U_INT32_T
4606 typedef uint32_t u_int32_t;
4607 #endif
4608 #ifdef WE_DONT_NEED_QUADS
4609 #if !HAVE_U_INT64_T
4610 typedef uint64_t u_int64_t;
4611 #endif
4612 #endif
4613 #endif
4614 #endif
4615 #include <$header>
4616 ],[], db_h_file="$header"; break)
4617         ;;
4618         esac
4619   done
4620   if test -z "$db_h_file"
4621   then AC_MSG_RESULT(no); with_database_berkdb=no
4622   else AC_MSG_RESULT($db_h_file)
4623   fi
4624
4625   if test "$with_database_berkdb" != "no"; then
4626     AC_MSG_CHECKING(for Berkeley DB version)
4627     AC_EGREP_CPP(yes,
4628 [#include <$db_h_file>
4629 #if DB_VERSION_MAJOR > 1
4630 yes
4631 #endif
4632 ], [AC_EGREP_CPP(yes,
4633 [#include <$db_h_file>
4634 #if DB_VERSION_MAJOR > 2
4635 yes
4636 #endif
4637 ], [AC_MSG_RESULT(3); dbfunc=db_create],[
4638     AC_MSG_RESULT(2); dbfunc=db_open])],[
4639     AC_MSG_RESULT(1); dbfunc=dbopen])
4640     AC_CHECK_FUNC($dbfunc,     with_database_berkdb=yes need_libdb=no, [
4641     AC_CHECK_LIB(db, $dbfunc,  with_database_berkdb=yes need_libdb=yes)])
4642   fi
4643
4644   if test "$with_database_berkdb" = "yes"; then
4645     AC_DEFINE_UNQUOTED(DB_H_FILE, "$db_h_file")
4646     AC_DEFINE(HAVE_BERKELEY_DB)
4647     test "$need_libdb" = "yes" && XE_PREPEND(-ldb, LIBS)
4648   else with_database_berkdb=no
4649   fi
4650 fi
4651
4652 if test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
4653      != "no no no"; then
4654   AC_DEFINE(HAVE_DATABASE)
4655   XE_ADD_OBJS(database.o)
4656   if test "$with_utf_2000" = "yes" -a "$with_chise" != "yes" ; then
4657     AC_DEFINE(HAVE_CHISE)
4658   fi
4659 fi
4660
4661 dnl Socks support
4662 if test "$with_socks" = "yes"; then
4663   AC_CHECK_LIB(socks, SOCKSinit)
4664   test -n "$ac_cv_lib_socks_SOCKSinit" && AC_DEFINE(HAVE_SOCKS)
4665 fi
4666
4667 dnl Usage tracking (undocumented and likely unused option)
4668 if test "$usage_tracking" = "yes"; then
4669   AC_DEFINE(USAGE_TRACKING)
4670   XE_PREPEND(-Bstatic -lut -Bdynamic, LIBS)
4671 fi
4672
4673 dnl autodetect dll support
4674 if test "$with_modules" != "no"; then
4675   AC_CHECKING(for module support)
4676
4677   dnl Check for MS-Windows
4678   if test "$with_msw" = "yes"; then
4679     have_dl=yes;
4680   else
4681     dnl Check for Darwin
4682     case "$opsys" in
4683       darwin) have_dl=yes; AC_DEFINE(HAVE_DYLD) ;;
4684       *) dnl Find headers and libraries
4685          AC_CHECK_HEADER(dlfcn.h, [
4686            AC_MSG_CHECKING([for dlopen in -lc])
4687            AC_TRY_LINK([#include <dlfcn.h>],dnl
4688               [dlopen ("", 0);], [ have_dl=yes ], [
4689                AC_MSG_CHECKING([for dlopen in -ldl])
4690                ac_save_LIBS="$LIBS"
4691                LIBS="-ldl $LIBS"
4692                AC_TRY_LINK([#include <dlfcn.h>],dnl
4693                  [dlopen ("", 0);], [ have_dl=yes ],
4694                  [LIBS="$ac_save_LIBS"])
4695                ac_save_LIBS=])])
4696         if test -n "$have_dl"; then
4697            AC_DEFINE(HAVE_DLOPEN)
4698         else
4699            AC_CHECK_LIB(dld, shl_load, [
4700            libdl=dld have_dl=yes;
4701            AC_DEFINE(HAVE_SHL_LOAD)], [
4702            AC_CHECK_LIB(dld, dld_init, [
4703            libdl=dld have_dl=yes;
4704            AC_DEFINE(HAVE_DLD_INIT)])])
4705         fi
4706     ;;
4707     esac
4708   fi dnl end !MS-Windows
4709
4710   if test -n "$have_dl"; then
4711     dnl XE_SHLIB_STUFF (in aclocal.m4) defines $can_build_shared
4712     XE_SHLIB_STUFF
4713   fi
4714
4715   if test "$can_build_shared" = "yes"; then
4716     AC_DEFINE(HAVE_SHLIB)
4717     XE_ADD_OBJS(sysdll.o emodules.o)
4718     XE_APPEND(src, INSTALL_ARCH_DEP_SUBDIR)
4719     test -n "$libdl" && XE_PREPEND(-l${libdl}, LIBS)
4720     AC_CHECK_FUNCS(dlerror _dlerror)
4721     with_modules=yes
4722   else
4723     if test "$with_modules" = "yes"; then
4724       XE_DIE("Required module support cannot be provided.")
4725     else
4726       AC_MSG_WARN("Module support cannot be provided.")
4727     fi
4728     with_modules=no
4729   fi
4730 fi
4731
4732 dnl Unfortunately, just because we can link doesn't mean we can run.
4733 dnl One of the above link tests may have succeeded but caused resulting
4734 dnl executables to fail to run.  Also any tests using AC_TRY_RUN will
4735 dnl have reported incorrect results.
4736 AC_TRY_RUN([int main(int c,char *v[]){return 0;}],[:],[
4737   echo ""
4738   echo "*** PANIC *** configure forgot how to build working executables!"
4739   echo ""
4740   echo "*** This is most commonly due to an unforeseen environment, causing"
4741   echo "*** configure to incorrectly compute the sequence of libraries to link."
4742   echo "*** Please examine the tail of config.log for runtime errors."
4743   echo "*** Pay special attention to the -l flags, and perhaps -I and -L."
4744   echo "*** Often adding or removing explicit options in the configure"
4745   echo "*** invocation can work around this kind of problem.  If so, please"
4746   echo "*** report it as a bug to xemacs-beta@xemacs.org."
4747   echo "***"
4748   echo "*** Other possible causes are inability to write to the file system"
4749   echo "*** (bogus permissions or disk full) or a misconfiguration of the dynamic"
4750   echo "*** linker.  On Linux, check /etc/ld.conf and rerun ldconfig if"
4751   echo "*** necessary.  On other systems, try telling configure where to find"
4752   echo "*** the shared libraries using the --site-runtime-libraries option."
4753   echo "***"
4754   echo "*** Another way to shoot yourself in the foot is to specify"
4755   echo "*** --with-FEATURE when FEATURE is not actually installed on your"
4756   echo "*** system.  Don't do that."
4757   exit 1])
4758
4759 dnl Process support
4760 if test "$win32_processes" = "yes"; then
4761   XE_ADD_OBJS(process-nt.o)
4762 else
4763   AC_DEFINE(HAVE_UNIX_PROCESSES)
4764   XE_ADD_OBJS(process-unix.o)
4765 fi
4766
4767 dnl --------------------------------
4768 dnl Compute SUBST-itutable variables
4769 dnl --------------------------------
4770
4771 dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM)
4772 dnl Use XE_SPACE instead of plain assignment statements to remove extraneous blanks
4773 XE_SPACE(CFLAGS, $CFLAGS)
4774 XE_SPACE(extra_objs, $extra_objs)
4775 XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system)
4776 XE_SPACE(c_switch_window_system, $c_switch_x_site $c_switch_gtk $X_CFLAGS)
4777 XE_SPACE(c_switch_all, $c_switch_general $c_switch_window_system)
4778 XE_SPACE(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
4779 XE_SPACE(ld_switch_window_system, $ld_switch_x_site)
4780 XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system)
4781 XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
4782 XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS)
4783 XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general)
4784
4785 dnl Compute lists of Makefiles and subdirs
4786 AC_SUBST(SRC_SUBDIR_DEPS)
4787 XE_APPEND(src, MAKE_SUBDIR)
4788 internal_makefile_list="Makefile.in"
4789 SUBDIR_MAKEFILES=''
4790 test -d lock || mkdir lock
4791 for dir in $MAKE_SUBDIR; do
4792   case "$dir" in */* ) dnl Implement mkdir -p
4793     ( for d in `echo $dir | sed 's:/: :g'` ; do
4794         test -d "$d" || mkdir "$d"; cd "$d"
4795       done ) ;;
4796    * ) test -d "$dir" || mkdir "$dir" ;;
4797   esac
4798   XE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile $dir/GNUmakefile)
4799   XE_SPACE(internal_makefile_list, $internal_makefile_list $dir/Makefile.in)
4800 done
4801 AC_SUBST(INSTALL_ARCH_DEP_SUBDIR)
4802 AC_SUBST(MAKE_SUBDIR)
4803 AC_SUBST(SUBDIR_MAKEFILES)
4804
4805 dnl Make s&m symlinks in the src directory, for config.h
4806 for dir in src/s src/m; do
4807   if test ! -d "$dir" ; then
4808     echo Making symbolic link to "$srcdir/$dir"
4809     ${LN_S} "$srcdir/$dir" "$dir"
4810   fi
4811 done
4812
4813 if test "$extra_verbose" = "yes"; then
4814   echo ""
4815   PRINT_VAR(extra_objs
4816    c_switch_general  c_switch_window_system  c_switch_all
4817   ld_switch_general ld_switch_window_system ld_switch_all
4818     ld_libs_general   ld_libs_window_system   ld_libs_all)
4819   echo ""
4820 fi
4821
4822 dnl ----------------------------------------------
4823 dnl Create some auxiliary files for developers.
4824 dnl ----------------------------------------------
4825
4826 dnl Create a .gdbinit useful for debugging XEmacs
4827 if test -f "$srcdir/src/.gdbinit" -a ! -f "src/.gdbinit"; then
4828   test "$extra_verbose" = "yes" && echo "creating src/.gdbinit"
4829   echo "source $srcdir/src/.gdbinit" > "src/.gdbinit"
4830 fi
4831
4832 dnl Create a .dbxrc useful for debugging XEmacs
4833 if test -f "$srcdir/src/.dbxrc" -a ! -f "src/.dbxrc"; then
4834   test "$extra_verbose" = "yes" && echo "creating src/.dbxrc"
4835   echo ". $srcdir/src/.dbxrc" > "src/.dbxrc"
4836 fi
4837
4838 dnl Create a useful TAGS file
4839 if test -f "$srcdir/TAGS" -a ! -f "TAGS"; then
4840   test "$extra_verbose" = "yes" && echo "creating TAGS"
4841   echo "\f
4842 $srcdir/TAGS,include" > "TAGS"
4843 fi
4844
4845 dnl Create top level .sbinit for Sun compilers
4846 if test "$__SUNPRO_C" = "yes"; then
4847   test "$extra_verbose" = "yes" && echo "creating .sbinit"
4848   ( echo "# For use with Sun WorkShop's Source browser."
4849     echo "# See sbquery(1) and sbinit(4) for more information"
4850     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
4851   ) > .sbinit
4852 fi
4853
4854 dnl There are no more compile tests; remove the core they created.
4855 rm -f core
4856
4857 dnl ----------------------------------------------
4858 dnl Substitute into Makefile, config.h and paths.h
4859 dnl ----------------------------------------------
4860
4861 dnl what sort of things to edit into Makefile, config.h and paths.h
4862 dnl configuration here uncanonicalized to avoid exceeding size limits.
4863
4864 AC_SUBST(PROGNAME)
4865 AC_SUBST(version)
4866 AC_SUBST(configuration)
4867 AC_SUBST(canonical)
4868 AC_SUBST(inststaticdir)
4869 AC_SUBST(instvardir)
4870 AC_SUBST(srcdir)
4871 AC_SUBST(bindir)
4872 AC_SUBST(datadir)
4873 AC_SUBST(pkgdir)
4874 AC_SUBST(statedir)
4875 AC_SUBST(libdir)
4876 AC_SUBST(mandir)
4877 AC_SUBST(extra_includes)
4878
4879 AC_SUBST(prefix)
4880 AC_SUBST(PREFIX_USER_DEFINED)
4881 dnl Yo, Stephen Bourne!  I want to marry you!
4882 PREFIX=$prefix
4883 while true; do
4884   case "$PREFIX" in
4885     *\$* ) eval "PREFIX=$PREFIX" ;;
4886     *) break ;;
4887   esac
4888 done
4889 AC_SUBST(PREFIX)
4890
4891 AC_SUBST(exec_prefix)
4892 AC_SUBST(EXEC_PREFIX_USER_DEFINED)
4893 EXEC_PREFIX=$exec_prefix
4894 while true; do
4895   case "$EXEC_PREFIX" in
4896     *\$* ) eval "EXEC_PREFIX=$EXEC_PREFIX" ;;
4897     *) break ;;
4898   esac
4899 done
4900 AC_SUBST(EXEC_PREFIX)
4901
4902 AC_SUBST(infodir)
4903 AC_SUBST(INFODIR_USER_DEFINED)
4904 INFODIR=$infodir
4905 while true; do
4906   case "$INFODIR" in
4907     *\$* ) eval "INFODIR=$INFODIR" ;;
4908     *) break ;;
4909   esac
4910 done
4911 AC_SUBST(INFODIR)
4912
4913 AC_SUBST(infopath)
4914 AC_SUBST(INFOPATH_USER_DEFINED)
4915 INFOPATH=$infopath
4916 while true; do
4917   case "$INFOPATH" in
4918     *\$* ) eval "INFOPATH=$INFOPATH" ;;
4919     *) break ;;
4920   esac
4921 done
4922 AC_SUBST(INFOPATH)
4923
4924 AC_SUBST(package_path)
4925 AC_SUBST(PACKAGE_PATH_USER_DEFINED)
4926 PACKAGE_PATH=$package_path
4927 while true; do
4928   case "$PACKAGE_PATH" in
4929     *\$* ) eval "PACKAGE_PATH=$PACKAGE_PATH" ;;
4930     *) break ;;
4931   esac
4932 done
4933 AC_SUBST(PACKAGE_PATH)
4934
4935 AC_SUBST(lispdir)
4936 AC_SUBST(LISPDIR_USER_DEFINED)
4937 LISPDIR=$lispdir
4938 while true; do
4939   case "$LISPDIR" in
4940     *\$* ) eval "LISPDIR=$LISPDIR" ;;
4941     *) break ;;
4942   esac
4943 done
4944 AC_SUBST(LISPDIR)
4945
4946 AC_SUBST(moduledir)
4947 AC_SUBST(MODULEDIR_USER_DEFINED)
4948 MODULEDIR=$moduledir
4949 while true; do
4950   case "$MODULEDIR" in
4951     *\$* ) eval "MODULEDIR=$MODULEDIR" ;;
4952     *) break ;;
4953   esac
4954 done
4955 AC_SUBST(MODULEDIR)
4956
4957 AC_SUBST(sitelispdir)
4958 AC_SUBST(SITELISPDIR_USER_DEFINED)
4959 SITELISPDIR=$sitelispdir
4960 while true; do
4961   case "$SITELISPDIR" in
4962     *\$* ) eval "SITELISPDIR=$SITELISPDIR" ;;
4963     *) break ;;
4964   esac
4965 done
4966 AC_SUBST(SITELISPDIR)
4967
4968 AC_SUBST(sitemoduledir)
4969 AC_SUBST(SITEMODULEDIR_USER_DEFINED)
4970 SITEMODULEDIR=$sitemoduledir
4971 while true; do
4972   case "$SITEMODULEDIR" in
4973     *\$* ) eval "SITEMODULEDIR=$SITEMODULEDIR" ;;
4974     *) break ;;
4975   esac
4976 done
4977 AC_SUBST(SITEMODULEDIR)
4978
4979 AC_SUBST(etcdir)
4980 AC_SUBST(ETCDIR_USER_DEFINED)
4981 ETCDIR=$etcdir
4982 while true; do
4983   case "$ETCDIR" in
4984     *\$* ) eval "ETCDIR=$ETCDIR" ;;
4985     *) break ;;
4986   esac
4987 done
4988 AC_SUBST(ETCDIR)
4989
4990 AC_SUBST(docdir)
4991 AC_SUBST(DOCDIR_USER_DEFINED)
4992 DOCDIR=$docdir
4993 while true; do
4994   case "$DOCDIR" in
4995     *\$* ) eval "DOCDIR=$DOCDIR" ;;
4996     *) break ;;
4997   esac
4998 done
4999 AC_SUBST(DOCDIR)
5000
5001 AC_SUBST(archlibdir)
5002 AC_SUBST(ARCHLIBDIR_USER_DEFINED)
5003 ARCHLIBDIR=$archlibdir
5004 while true; do
5005   case "$ARCHLIBDIR" in
5006     *\$* ) eval "ARCHLIBDIR=$ARCHLIBDIR" ;;
5007     *) break ;;
5008   esac
5009 done
5010 AC_SUBST(ARCHLIBDIR)
5011
5012 AC_SUBST(docdir)
5013 AC_SUBST(bitmapdir)
5014 AC_SUBST(extra_objs)
5015
5016 dnl The following flags combine all the information from:
5017 dnl - command line options (user always gets priority)
5018 dnl - user environment variables
5019 dnl - determined by configure
5020 dnl - the s&m header files (required for ellcc)
5021 AC_SUBST(machfile)
5022 AC_SUBST(opsysfile)
5023 AC_SUBST(c_switch_general)
5024 AC_SUBST(c_switch_window_system)
5025 AC_SUBST(c_switch_all)
5026 AC_SUBST(ld_switch_general)
5027 AC_SUBST(ld_switch_window_system)
5028 AC_SUBST(ld_switch_all)
5029 AC_SUBST(ld_libs_general)
5030 AC_SUBST(ld_libs_window_system)
5031 AC_SUBST(ld_libs_all)
5032 AC_SUBST(CFLAGS)
5033 AC_SUBST(CPPFLAGS)
5034 AC_SUBST(LDFLAGS)
5035 RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
5036 AC_SUBST(RECURSIVE_MAKE_ARGS)
5037
5038 AC_SUBST(native_sound_lib)
5039 AC_SUBST(sound_cflags)
5040 AC_SUBST(RANLIB)
5041 AC_SUBST(dynodump_arch)
5042
5043 dnl Preliminary support for using a different compiler for xemacs itself.
5044 dnl Useful for building XEmacs with a C++ or 64-bit compiler.
5045 : ${XEMACS_CC:=$CC}
5046 AC_SUBST(XEMACS_CC)
5047
5048 dnl The default is yes
5049 if test "$with_prefix" = "yes"; then
5050   AC_DEFINE(PREFIX_USER_DEFINED)
5051 fi
5052
5053 dnl The default is no
5054 if test "$with_site_lisp" = "no"; then
5055   AC_DEFINE(INHIBIT_SITE_LISP)
5056 fi
5057 dnl The default is yes
5058 if test "$with_site_modules" = "no"; then
5059   AC_DEFINE(INHIBIT_SITE_MODULES)
5060 fi
5061
5062 XE_SPACE(ac_configure_args, $ac_configure_args)
5063 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$configuration")
5064 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "$ac_configure_args")
5065
5066 dnl Following are deprecated
5067
5068 null_string=""
5069 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE,     $null_string)
5070 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, $null_string)
5071 AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,      $null_string)
5072 AC_DEFINE_UNQUOTED(LD_SWITCH_SITE,       $null_string)
5073 AC_DEFINE_UNQUOTED(C_SWITCH_SITE,        $null_string)
5074
5075 dnl Note: as a general rule, *only* define things here that are not
5076 dnl autodetected.  For things that are autodetected, define them
5077 dnl at the point where the autodetection occurs or would occur,
5078 dnl so that the user gets immediate feedback on the results of the
5079 dnl autodetection.
5080
5081 if   test "$GNU_MALLOC"         = "yes"; then AC_DEFINE(GNU_MALLOC)
5082 elif test "$with_system_malloc" = "yes"; then AC_DEFINE(USE_SYSTEM_MALLOC)
5083 elif test "$with_debug_malloc"  = "yes"; then AC_DEFINE(USE_DEBUG_MALLOC)
5084                                               AC_DEFINE(USE_SYSTEM_MALLOC)
5085 fi
5086 test "$with_i18n3"         = "yes" && AC_DEFINE(I18N3)
5087 test "$GCC"                = "yes" && AC_DEFINE(USE_GCC)
5088 test "$external_widget"    = "yes" && AC_DEFINE(EXTERNAL_WIDGET)
5089 test "$quick_build"        = "yes" && AC_DEFINE(QUICK_BUILD)
5090 test "$with_purify"        = "yes" && AC_DEFINE(PURIFY)
5091 test "$with_quantify"      = "yes" && AC_DEFINE(QUANTIFY)
5092 test "$with_pop"           = "yes" && AC_DEFINE(MAIL_USE_POP)
5093 test "$with_kerberos"      = "yes" && AC_DEFINE(KERBEROS)
5094 test "$with_hesiod"        = "yes" && AC_DEFINE(HESIOD)
5095 test "$use_union_type"     = "yes" && AC_DEFINE(USE_UNION_TYPE)
5096 test "$use_regex_malloc"   = "yes" && AC_DEFINE(REGEX_MALLOC)
5097 test "$pdump"              = "yes" && AC_DEFINE(PDUMP)
5098 test "$with_ipv6_cname"    = "yes" && AC_DEFINE(IPV6_CANONICALIZE)
5099
5100 dnl -------------------------------
5101 dnl Report on what we decided to do
5102 dnl -------------------------------
5103
5104 (
5105 dnl /etc/osversion is on SONY NEWS-OS
5106 if test -f /etc/osversion; then dnl SONY NEWS-OS
5107   echo "osversion: `cat /etc/osversion`"
5108 else
5109   echo "uname -a: `uname -a`"
5110 fi
5111 echo ""
5112 echo "$0 $quoted_arguments"
5113 ) > Installation
5114
5115 if test ! -z ${emacs_beta_version} ; then
5116   if test -z "${emacs_is_beta}" ; then
5117         xemacs_betaname=".${emacs_beta_version}"
5118   else
5119         xemacs_betaname="-b${emacs_beta_version}"
5120   fi
5121 else
5122   xemacs_betaname=""
5123 fi
5124
5125 dnl Start stdout redirection to '| tee -a Installation'
5126 (
5127 echo "
5128
5129 XEmacs ${emacs_major_version}.${emacs_minor_version}${xemacs_betaname} \"$xemacs_codename\" configured for \`$canonical'.
5130 "
5131 echo "
5132 Compilation / Installation:"
5133 echo "  Source code location:              $srcdir"
5134 echo "  Installation prefix:               $prefix"
5135 if test -n "$site_includes"; then
5136   echo "  Additional header files:           $site_includes"
5137 fi
5138 if test -n "$site_libraries"; then
5139   echo "  Additional libraries:              $site_libraries"
5140 fi
5141 if test -n "$site_prefixes"; then
5142   echo "  Additional prefixes:               $site_prefixes"
5143 fi
5144 if test -n "$runpath"; then
5145   echo "  Runtime library search path:       $runpath"
5146 fi
5147
5148 if test -n "$opsysfile"
5149 then echo "  Operating system description file: \`$opsysfile'"
5150 else echo "  Not using any operating system description file"
5151 fi
5152 if test -n "$machfile"
5153 then echo "  Machine description file:          \`$machfile'"
5154 else echo "  Not using any machine description file"
5155 fi
5156
5157 echo "  Compiler:                          $CC $CFLAGS"
5158 dnl Let's save some helpful-for-debugging info like compiler and libc versions..
5159 dnl First, see if it's gcc - the same check works everyplace...
5160 case "$CC" in
5161   gcc*) echo "  Compiler version:                  `$CC --version | sed 1q`"
5162         echo "  Compiler specs file:               `$CC -v 2>&1 | sed 's/.* \([[^ ]]\)/\1/' | sed 1q`"
5163         ;;
5164 dnl non-gcc machine-specific magic - contributions welcome
5165   *) case "$canonical" in
5166         *-*-aix*   ) 
5167           dnl Yes, it's this ugly for AIX...
5168           realcc=`which $CC`
5169           dnl Might be a symlink created by replaceCset command
5170           if test -L $realcc ; then
5171             ccdir=`dirname $realcc`
5172             ccprog=`/bin/ls -l $realcc | sed 's/.* \([[^ ]]\)/\1/'`
5173             dnl This doesn't handle ../../xlc type stuff, but I've not seen one...
5174             case $ccprog in
5175                 */*) realcc=$ccprog;;
5176                 *) realcc=$ccdir/$ccprog;;
5177             esac
5178           fi
5179           lpp=`lslpp -wqc $realcc | cut -f2 -d:`
5180           if test ! -z "$lpp" ; then
5181             lppstr=`lslpp -Lqc $lpp`
5182             lpplev=`echo "$lppstr" | cut -f3 -d:`
5183             lppdesc=`echo "$lppstr" | cut -f8 -d:`
5184           fi
5185           if test ! -z "$lpplev" ; then
5186             echo "  Compiler version:                  $lpp $lpplev - $lppdesc"
5187           else
5188             echo "  Compiler version:                  (unknown version)"
5189           fi
5190         ;;
5191         
5192         *-*-solaris*)
5193           ccvers=`$CC -V 2>&1 | sed 1q`
5194           if test ! -z "$ccvers" ; then
5195             echo "  Compiler version:                  $ccvers"
5196           fi
5197         ;;
5198
5199         alpha*-dec-osf*)
5200           ccvers=`$CC -V | tr '\n' ' '`
5201           if test ! -z "$ccvers" ; then
5202             echo "  Compiler version:                  $ccvers"
5203           fi
5204         ;;
5205
5206         mips-sgi-irix*)
5207           ccvers=`$CC -version`
5208           if test ! -z "$ccvers" ; then
5209             echo "  Compiler version:                  $ccvers"
5210           fi
5211         ;;
5212
5213         dnl Intel C++ Compiler on Linux
5214         i[[3-9]]86-pc-linux)
5215           ccvers=`$CC -V 2>&1 | sed -n 's@^Intel.*Version @@'p`
5216           if test ! -z "$ccvers" ; then
5217             echo "  Compiler version:                  $ccvers"
5218           fi
5219         ;;
5220           
5221         *) echo "  Compiler version:                  $CC on $canonical";;
5222   esac
5223 esac
5224
5225 echo "  Relocating allocator for buffers:  $rel_alloc"
5226 echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
5227 case "$ld_switch_site" in
5228   *nocombreloc*) echo "  Linking with \`-z nocombreloc'.
5229     - Consider configuring with --pdump." ;;
5230 esac
5231
5232 dnl Now get the libc version - contributions welcome
5233 case "$canonical" in
5234         *-*-linux*) 
5235           if test -f /etc/redhat-release ; then
5236             echo "  libc:                              `rpm -q glibc`";
5237 dnl need a Debian and Suse check here...
5238           else
5239             echo "Need to guess glibc1/2/etc here";
5240           fi
5241         ;;
5242
5243         *-*-aix*) 
5244           echo "  libc:                              bos.rte.libc `lslpp -Lqc bos.rte.libc | cut -f3 -d:`" 
5245         ;;
5246
5247         *-*-solaris*)
5248           libc=`pkginfo -l SUNWcsl | grep VERSION: | awk '{print $2}'`
5249           echo "  libc:                              SUNWcsl $libc"
5250
5251         ;;
5252
5253         mips-sgi-irix*)
5254           echo "  IRIX version:                      `uname -sRm`'"
5255         ;;
5256           
5257
5258         alpha*-dec-osf*)
5259         dnl Another ugly case
5260           (cd /usr/.smdb.;
5261                 libc=` grep -h libc.so *.inv | awk '$9 == "f" {print $12}' | tr '\n' ','`
5262                 echo "  libc:                              $libc"
5263                 
5264           )
5265         ;;
5266
5267         *) echo "  libc:                              system-provided libc on $canonical" ;;
5268 esac
5269
5270
5271 echo "
5272 Window System:"
5273 if test "$with_msw" = "yes"; then
5274   echo "  Compiling in support for the Microsoft window system."
5275 fi
5276 if test "$with_x11" = "yes"; then
5277   echo "  Compiling in support for the X window system:"
5278   echo "    - X Windows headers location:                 $x_includes"
5279   echo "    - X Windows libraries location:               $x_libraries"
5280   if test "$with_xauth" != yes; then
5281     echo "    - Xau (X authority) not available."
5282   fi
5283   if test "$with_xmu" != yes; then
5284     echo "    - Xmu library not available; substituting equivalent routines."
5285   fi
5286   if test "$with_wmcommand" != no; then
5287     echo "    - Handling WM_COMMAND properly."
5288   fi
5289 fi
5290 if test "$need_motif" = "yes" ; then
5291   echo "  Compiling in support for Motif."
5292   if test "$have_lesstif" = "yes"; then
5293     echo "    - Using LessTif implementation."
5294   fi
5295   echo "  *WARNING*  Many versions of Motif are buggy, requiring workarounds."
5296   echo "             You are likely to experience slow redisplay."
5297   echo "             You may need to install vendor patches to Motif."
5298   echo "             See PROBLEMS for more information."
5299 fi
5300 if test "$need_athena" = "yes"; then
5301   echo "  Compiling in support for the Athena widget set:"
5302   echo "    - Athena headers location:                    $athena_h_path"
5303   echo "    - Athena library to link:                     $athena_lib"
5304 fi
5305 case "$with_menubars" in
5306   gtk   ) echo "  Using GTK menubars."   ;;
5307   lucid ) echo "  Using Lucid menubars." ;;
5308   motif ) echo "  Using Motif menubars."
5309           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
5310           echo "             We recommend using the Lucid menubar instead."
5311           echo "             Re-run configure with --with-menubars='lucid'." ;;
5312     msw ) echo "  Using MS-Windows menubars." ;;
5313 esac
5314 case "$with_scrollbars" in
5315   gtk    ) echo "  Using GTK scrollbars."        ;;
5316   lucid  ) echo "  Using Lucid scrollbars."      ;;
5317   motif  ) echo "  Using Motif scrollbars."      ;;
5318   athena ) echo "  Using Athena scrollbars."     ;;
5319      msw ) echo "  Using MS-Windows scrollbars." ;;
5320 esac
5321 case "$with_dialogs" in
5322   gtk    ) echo "  Using GTK dialog boxes." ;;
5323   motif  ) echo "  Using Motif dialog boxes."
5324            if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
5325              echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
5326              echo "             We recommend using the Athena dialog boxes instead."
5327              echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
5328              echo "             Read the PROBLEMS file for more information."
5329            fi; fi ;;
5330   athena ) echo "  Using Athena dialog boxes."     ;;
5331      msw ) echo "  Using MS-Windows dialog boxes." ;;
5332 esac
5333 case "$with_widgets" in
5334   gtk    ) echo "  Using GTK native widgets."        ;;
5335   motif  ) echo "  Using Motif native widgets."      ;;
5336   athena ) echo "  Using Athena native widgets."     ;;
5337      msw ) echo "  Using MS-Windows native widgets." ;;
5338 esac
5339 if test "$with_dragndrop" = yes; then
5340   echo "  Compiling in support for Drag'n'Drop (EXPERIMENTAL)."
5341   echo "    -  Drag'n'Drop prototype:                             $dragndrop_proto."
5342 fi
5343
5344 echo "
5345 TTY:"
5346 test "$with_ncurses" = yes && echo "  Compiling in support for ncurses."
5347 test "$with_gpm" = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
5348
5349 echo "
5350 Images:"
5351 test "$with_gif" = yes && echo "  Compiling in support for GIF  images (builtin)."
5352 if test "$with_xpm" = yes; then
5353   echo "  Compiling in support for XPM  images."
5354 elif test "$with_x11" = yes; then
5355   echo "  WARNING: -----------------------------------------------------------"
5356   echo "  WARNING: Compiling without XPM image support."
5357   if test "$xpm_problem" != ""; then
5358     echo "  Reason: $xpm_problem"
5359   fi
5360   echo "  WARNING: You should strongly consider installing XPM."
5361   echo "  WARNING: Otherwise toolbars and other graphics will look suboptimal."
5362   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
5363   echo "  WARNING: -----------------------------------------------------------"
5364 fi
5365 if test "$with_png" = yes; then
5366   echo "  Compiling in support for PNG  images."
5367 elif test "$window_system" != "none"; then
5368   echo "  WARNING: -----------------------------------------------------------"
5369   echo "  WARNING: Compiling without PNG image support."
5370   if test "$png_problem" != ""; then
5371     echo "  Reason: $png_problem"
5372   fi
5373   echo "  WARNING: You should strongly consider installing the PNG libraries."
5374   echo "  WARNING: Otherwise certain images and glyphs may not display."
5375   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
5376   echo "  WARNING: -----------------------------------------------------------"
5377 fi
5378 test "$with_jpeg" = yes && echo "  Compiling in support for JPEG images."
5379 test "$with_tiff" = yes && echo "  Compiling in support for TIFF images."
5380 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
5381
5382 echo "
5383 Sound:"
5384 test "$with_native_sound" = yes && echo "  Compiling in support for sound (native)."
5385 test "$with_nas_sound" = yes && echo "  Compiling in support for NAS (network audio system)."
5386 test "$old_nas" = yes && echo "    - NAS library lacks error trapping; will play synchronously."
5387 test "$with_esd_sound" = yes && echo "  Compiling in support for ESD (Enlightened Sound Daemon)."
5388
5389 echo "
5390 Databases:"
5391 test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley database."
5392 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
5393 test "$with_database_gdbm"   = yes && echo "  Compiling in support for GNU DBM."
5394 test "$with_ldap" = yes && echo "  Compiling in support for LDAP."
5395 if test "$with_postgresql" = yes; then
5396   echo "  Compiling in support for PostgreSQL."
5397   echo "    - Using PostgreSQL header file:  $libpq_fe_h_file"
5398   test "$with_postgresqlv7" = yes && echo "    - Using PostgreSQL V7 bindings."
5399 fi
5400 if test "$with_concord" = yes; then
5401   echo "  Compiling in support for CONCORD."
5402 fi
5403
5404 echo "
5405 Multiscriptization / Multilingualization / Internationalization:"
5406 test "$with_mule" = yes && echo "  Compiling in support for Mule (multi-lingual Emacs)."
5407 test "$with_chise" = yes && echo "  Using CHISE (CHaracter Information Service Environment) support."
5408 test "$with_utf_2000" = yes && echo "  Using UTF-2000 (UTF-8) buffer/string representation."
5409 test "$with_text_coding" = yes && echo "  Compiling in support for text coding."
5410 test "$with_file_coding" = yes && echo "  Compiling in support for file coding."
5411 test "$with_xim" != no && echo "  Compiling in support for XIM (X11R5+ I18N input method)."
5412 test "$with_xim" = motif && echo "    - Using Motif to provide XIM support."
5413 test "$with_xim" = xlib && echo "    - Using raw Xlib to provide XIM support."
5414 test "$with_xfs" = yes && echo "    - Using XFontSet to provide bilingual menubar."
5415 test "$with_canna" = yes && echo "  Compiling in support for Canna on Mule."
5416 if test "$with_wnn" = yes; then
5417   echo "  Compiling in support for the WNN input method on Mule."
5418   test "$with_wnn6" = yes && echo "    - Using WNN version 6."
5419 fi
5420 test "$with_i18n3" = yes && echo "  Compiling in support for I18N level 3 (doesn't currently work)."
5421
5422 echo "
5423 Mail:"
5424 test "$with_pop" = yes && echo "  Compiling in support for POP mail retrieval."
5425 test "$with_kerberos" = yes && echo "  Compiling in support for Kerberos POP authentication."
5426 test "$with_hesiod" = yes && echo "  Compiling in support for Hesiod POP server access."
5427 test -n "$mail_locking" && echo "  Compiling in support for \"$mail_locking\" mail spool file locking method."
5428
5429 echo "
5430 Other Features:"
5431 test "$with_ipv6_cname" = no && echo "  Inhibiting IPv6 canonicalization at startup."
5432 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
5433 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
5434 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
5435 test "$with_dnet" = yes && echo "  Compiling in support for DNET."
5436 test "$with_modules" = "yes" && echo "  Compiling in support for dynamic shared object modules."
5437 if test "$use_union_type" = yes; then
5438   echo "  WARNING: ---------------------------------------------------------"
5439   echo "  Using the union type for Lisp_Objects."
5440   echo "  Union type has been implicated in hard-to-debug runtime crashes."
5441   echo "  Do NOT use this build of XEmacs for ordinary work.  See PROBLEMS."
5442   echo "  WARNING: ---------------------------------------------------------"
5443 fi
5444 if test "$use_regex_malloc" = no; then
5445   echo "  WARNING: -----------------------------------------------------------"
5446   echo "  Using alloca to allocate the failure stack."
5447   echo "  It may be impossible to detect stack exhaustion, and you will crash."
5448   echo "  Do NOT use this build of XEmacs for ordinary work."
5449   echo "  WARNING: -----------------------------------------------------------"
5450 fi
5451 test "$pdump" = yes && echo "  Using the new portable dumper."
5452 test "$debug" = yes && echo "  Compiling in support for extra debugging code."
5453 test "$usage_tracking" = yes && echo "  Compiling in support for active usage tracking (Sun internal)."
5454 if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc $error_check_glyphs" \
5455   != "no no no no no no"; then
5456   echo "  WARNING: ---------------------------------------------------------"
5457   echo "  WARNING: Compiling in support for runtime error checking."
5458   echo "  WARNING: XEmacs will run noticeably more slowly as a result."
5459   echo "  WARNING: Error checking is on by default for XEmacs beta releases."
5460   echo "  WARNING: ---------------------------------------------------------"
5461 fi
5462 echo ""
5463 ) | tee -a Installation
5464 dnl echo "The above configure report is appended to \"Installation\" file."
5465 echo ""
5466
5467 dnl -----------------------------------
5468 dnl Now generate config.h and Makefiles
5469 dnl -----------------------------------
5470 dnl This has to be called in order for this variable to get into config.status
5471 AC_SUBST(internal_makefile_list)
5472 # Remove any trailing slashes in these variables.
5473 test -n "$prefix" &&
5474   prefix=`echo '' "$prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
5475 test -n "$exec_prefix" &&
5476   exec_prefix=`echo '' "$exec_prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
5477
5478 dnl Build Makefile.in's from Makefile.in.in's
5479 dnl except ./Makefile from $srcdir/Makefile.in
5480
5481 for file in $internal_makefile_list; do
5482   test "$file" = src/Makefile.in && \
5483     file="src/Makefile.in:src/Makefile.in.in:src/depend"
5484   XE_APPEND($file, ac_output_files)
5485 done
5486 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
5487 test "$with_modules" = "yes" && XE_APPEND(lib-src/ellcc.h, ac_output_files)
5488
5489 AC_OUTPUT($ac_output_files,
5490 [for dir in . $MAKE_SUBDIR; do
5491   (
5492     cd $dir
5493     rm -f junk.c
5494     < Makefile.in \
5495       sed -e '/^# Generated/d' \
5496           -e 's%/\*\*/#.*%%' \
5497           -e 's/^ *# */#/' \
5498 dnl Delete Makefile.in.in comment lines
5499           -e '/^##/d' \
5500 dnl Pass through CPP directives unchanged
5501           -e '/^#/ {
5502 p
5503 d
5504 }'        \
5505 dnl Quote other lines to protect from CPP substitution
5506           -e '/./ {
5507 s/\([[\"]]\)/\\\1/g
5508 s/^/"/
5509 s/$/"/
5510 }'  > junk.c;
5511
5512 dnl Create a GNUmakefile and Makefile from Makefile.in.
5513
5514 changequote(<<,>>)dnl
5515 dnl CPP_MAKEFILE(CPPFLAGS,filename)
5516 define(<<CPP_MAKEFILE>>,
5517 echo creating $dir/<<$2>>
5518 $CPP -I. -I${top_srcdir}/src <<$1>> junk.c \
5519 dnl Delete line directives inserted by $CPP
5520   | sed -e 's/^\#.*//'          \
5521 dnl Delete spurious blanks inserted by $CPP
5522         -e 's/^[ TAB][ TAB]*$//'\
5523         -e 's/^ /TAB/'          \
5524 dnl Delete blank lines
5525         -e '/^[ \f]*$/d' \
5526 dnl Restore lines quoted above to original contents.
5527         -e '/^\"/ {
5528         s/\\\([\"]\)/\1/g
5529         s/^[ TAB]*\"//
5530         s/\"[ TAB]*$//
5531 }' > Makefile.new
5532     chmod 444 Makefile.new
5533     mv -f Makefile.new <<$2>>
5534 )dnl CPP_MAKEFILE
5535
5536     CPP_MAKEFILE(,Makefile)
5537     CPP_MAKEFILE(-DUSE_GNU_MAKE,GNUmakefile)
5538 changequote([,])dnl
5539     rm -f junk.c
5540   )
5541 done
5542
5543 dnl Append AC_DEFINE information to lib-src/config.values
5544 dnl (AC_SUBST information is already there (see config.values.sh).
5545 sed < config.status >> lib-src/config.values \
5546   -e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \
5547   -e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \
5548   -e 's/^\([[^ ]]*\) $/\1 ""/' \
5549   -e 's/ 1$/ t/'
5550
5551 ],
5552 [CPP="$CPP"
5553  top_srcdir="$srcdir"
5554  MAKE_SUBDIR="$MAKE_SUBDIR"
5555 ])dnl