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