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