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