import xemacs-21.2.37
[chise/xemacs-chise.git-] / 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-osf[[4-9]]*          ) 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 XFree86 has a non-standard prototype for this X11R6 function
2714   AC_CHECK_FUNCS(XRegisterIMInstantiateCallback)
2715   AC_MSG_CHECKING(for standard XRegisterIMInstantiateCallback prototype)
2716   AC_TRY_COMPILE([
2717 #define NeedFunctionPrototypes 1
2718 #include <X11/Xlib.h>
2719 extern Bool XRegisterIMInstantiateCallback(
2720    Display*, struct _XrmHashBucketRec*, char*, char*, XIMProc, XPointer*);
2721 ], [], 
2722   [AC_MSG_RESULT(yes)],
2723   [AC_MSG_RESULT(no)
2724    AC_DEFINE(XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE)])
2725
2726   dnl autodetect -lXmu
2727   test -z "$with_xmu" && { AC_CHECK_LIB(Xmu, XmuReadBitmapDataFromFile,
2728                            with_xmu=yes, with_xmu=no) }
2729   if test "$with_xmu" = "no"; then
2730     XE_ADD_OBJS(xmu.o)
2731   else
2732     XE_PREPEND(-lXmu, libs_x)
2733     AC_DEFINE(HAVE_XMU)
2734   fi
2735
2736   dnl Autodetect -lXbsd
2737   dnl #### Someone, please add a better function than main
2738   AC_CHECK_LIB(Xbsd, main, XE_PREPEND(-lXbsd, libs_x))
2739
2740   dnl Problem with the MIT distribution of X on AIX
2741   if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then
2742     dnl X11R6 requires thread-safe code on AIX for some reason
2743     if test "$GCC" = "yes"; then
2744       XE_PREPEND(-mthreads, X_CFLAGS)
2745       XE_PREPEND(-mthreads, libs_x)
2746     else
2747       case "$CC" in
2748         "xlc" ) CC="xlc_r" ;;
2749         "xlC" ) CC="xlC_r" ;;
2750         "cc"  ) CC="cc_r" ;;
2751       esac
2752     fi
2753   fi
2754
2755 fi dnl $with_x11 = yes
2756
2757 if test "$with_msw" != "no"; then
2758   AC_CHECKING(for MS-Windows)
2759   AC_CHECK_LIB(gdi32,main,with_msw=yes)
2760   if test "$with_msw" = "yes"; then
2761     AC_DEFINE(HAVE_MS_WINDOWS)
2762     install_pp="$blddir/lib-src/installexe.sh"
2763     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lwinspool, libs_system)
2764     test "$with_dragndrop" != no && XE_APPEND(msw, dragndrop_proto)
2765     if test "$window_system" != x11; then
2766         window_system=msw
2767         test "$with_scrollbars" != "no" && with_scrollbars=msw \
2768             && XE_ADD_OBJS(scrollbar-msw.o)
2769         test "$with_menubars"   != "no" && with_menubars=msw \
2770             && XE_ADD_OBJS(menubar-msw.o)
2771         test "$with_toolbars"   != "no" && with_toolbars=msw \
2772             && XE_ADD_OBJS(toolbar-msw.o)
2773         test "$with_dialogs"   != "no" && with_dialogs=msw \
2774             && XE_ADD_OBJS(dialog-msw.o)
2775         test "$with_widgets"   != "no" && with_widgets=msw
2776     else
2777         test "$with_scrollbars" != "no" && XE_ADD_OBJS(scrollbar-msw.o)
2778         test "$with_menubars"   != "no" && XE_ADD_OBJS(menubar-msw.o)
2779         test "$with_toolbars"   != "no" && XE_ADD_OBJS(toolbar-msw.o)
2780         test "$with_dialogs"    != "no" && XE_ADD_OBJS(dialog-msw.o)
2781     fi
2782     dnl check for our special version of select
2783     AC_TRY_RUN([#include <fcntl.h>
2784     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }],
2785     [AC_DEFINE(HAVE_MSG_SELECT)])
2786     with_file_coding=yes
2787     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)
2788   fi
2789 fi
2790
2791 AC_SUBST(install_pp)
2792
2793 test -z "$window_system" && window_system="none"
2794
2795 dnl Test for features that require a window system - ANY window system
2796 if test "$window_system" = "none"; then
2797   for feature in menubars scrollbars toolbars dialogs dragndrop xface
2798   do
2799     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2800        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
2801     fi
2802     eval "with_${feature}=no"
2803   done
2804 else
2805   test -z "$with_toolbars" && with_toolbars=yes
2806 fi
2807
2808 dnl ### Test for features that require mswindows support - currently none
2809 dnl ### MS-Windows folks: add code here..... (martin)
2810 if test "$with_msw" != "yes"; then
2811   for feature in   MARTIN_IS_CLUELESS_ABOUT_MSW_FEATURES
2812   do
2813     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2814        AC_MSG_WARN([--with-$feature ignored:  Not valid without MS-Windows support])
2815     fi
2816     eval "with_${feature}=no"
2817   done
2818 else
2819   :
2820 fi
2821
2822 dnl Test for features that require X11 support
2823 if test "$with_x11" != "yes"; then
2824   dnl It ought to be reasonable to have no output device at all, and only use
2825   dnl XEmacs in --batch mode.
2826   dnl if test "$with_tty" = "no" ; then
2827   dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
2828   dnl fi
2829   for feature in tooltalk cde offix wmcommand xim xmu nas_sound
2830   do
2831     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2832        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
2833     fi
2834     eval "with_${feature}=no"
2835   done
2836 fi
2837
2838 dnl Balloon Help requires the Shape extension, not available everywhere,
2839 dnl for example not on AIX 4.3.
2840 if test "$with_x11" = "yes"; then
2841   AC_CHECK_HEADER(X11/extensions/shape.h, [
2842    AC_DEFINE(HAVE_BALLOON_HELP)
2843    XE_ADD_OBJS(balloon_help.o balloon-x.o)])
2844 fi
2845
2846 dnl FSF 19.29 has some bitmapdir stuff here.
2847 bitmapdir=
2848
2849 case "$window_system" in
2850   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
2851   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
2852   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
2853 esac
2854
2855 case "$x_libraries" in *X11R4* )
2856   test "$opsys" = "hpux9"     && opsysfile="s/hpux9-x11r4.h"
2857   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
2858 esac
2859
2860 dnl Enable or disable proper handling of WM_COMMAND
2861 AC_CHECKING(for WM_COMMAND option);
2862 dnl if test "$with_wmcommand" = "yes"; then
2863 if test "$with_wmcommand" != "no"; then
2864   AC_DEFINE(HAVE_WMCOMMAND)
2865 fi
2866
2867 dnl Autodetect Xauth
2868 dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
2869 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
2870 test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h,          ,with_xauth=no) }
2871 test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no) }
2872 test -z "$with_xauth" && with_xauth=yes
2873 if test "$with_xauth" = "yes"; then
2874   AC_DEFINE(HAVE_XAUTH)
2875   XE_SPACE(libs_xauth, $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
2876 fi
2877 AC_SUBST(libs_xauth)
2878
2879 dnl This one is for the static initializeds variables in
2880 dnl offix.c, so that the thing is dumped after lastfile.o
2881 AC_SUBST(dnd_objs)
2882
2883 dnl Autodetect tooltalk
2884 if test "$with_tooltalk" != "no" ; then
2885   dnl autodetect the location of tt_c.h
2886   dnl tt_c.h might be in Tt or desktop include directories
2887   for dir in "" "Tt/" "desktop/" ; do
2888     AC_CHECK_HEADER(${dir}tt_c.h, tt_c_h_file="${dir}tt_c.h"; break)
2889   done
2890   if test -z "$tt_c_h_file"; then
2891     if test "$with_tooltalk" = "yes"; then
2892       USAGE_ERROR("Unable to find required tooltalk header files.")
2893     fi
2894     with_tooltalk=no
2895   fi
2896 fi
2897 if test "$with_tooltalk" != "no" ; then
2898   for extra_libs in "" "-lI18N -lce" "-lcxx"; do
2899     AC_CHECK_LIB(tt, tt_message_create,
2900       tt_libs="-ltt $extra_libs"; break, [:],$extra_libs)
2901   done
2902   if test -z "$tt_libs"; then
2903     if test "$with_tooltalk" = "yes"; then
2904       USAGE_ERROR("Unable to find required tooltalk libraries.")
2905     fi
2906     with_tooltalk=no
2907   fi
2908 fi
2909 test -z "$with_tooltalk" && with_tooltalk=yes
2910 if test "$with_tooltalk" = "yes"; then
2911   AC_DEFINE(TOOLTALK)
2912   AC_DEFINE_UNQUOTED(TT_C_H_FILE, "$tt_c_h_file")
2913   XE_PREPEND($tt_libs, libs_x)
2914   XE_ADD_OBJS(tooltalk.o)
2915 fi
2916
2917 dnl Autodetect CDE
2918 test -z "$with_cde" && { AC_CHECK_HEADER(Dt/Dt.h,               , with_cde=no) }
2919 test -z "$with_cde" && { AC_CHECK_LIB(DtSvc, DtDndDragStart, [:], with_cde=no) }
2920 test -z "$with_cde" && with_cde=yes
2921 if test "$with_dragndrop" = no; then
2922   AC_MSG_WARN([No CDE without generic Drag'n'Drop support])
2923   with_cde=no
2924 fi
2925 if test "$with_cde" = "yes" ; then
2926   AC_DEFINE(HAVE_CDE)
2927   XE_PREPEND(-lDtSvc, libs_x)
2928   XE_APPEND(CDE, dragndrop_proto)
2929   with_tooltalk=yes # CDE requires Tooltalk
2930   need_motif=yes    # CDE requires Motif
2931 fi
2932
2933 dnl Always compile OffiX unless --without-offix is given, no
2934 dnl X11 support is compiled in, no standard Xmu is available,
2935 dnl or dragndrop support is disabled
2936 dnl Because OffiX support currently loses when more than one display
2937 dnl is in use, we now disable it by default -slb 07/10/1998.
2938 test "$window_system" != "x11" && with_offix=no
2939 if test "$with_xmu" != yes -a "$with_x11" = yes; then
2940   AC_MSG_WARN([No OffiX without real Xmu support])
2941   with_offix=no
2942 fi
2943 if test "$with_dragndrop" = no; then
2944   AC_MSG_WARN([No OffiX without generic Drag'n'Drop support])
2945   with_offix=no
2946 fi
2947 if test "$with_cde" = yes; then
2948   AC_MSG_WARN([CDE already found, disabling OffiX support])
2949   with_offix=no
2950 fi
2951 test -z "$with_offix" && with_offix=no
2952 if test "$with_offix" = "yes"; then
2953   AC_DEFINE(HAVE_OFFIX_DND)
2954   XE_APPEND(offix.o, dnd_objs)
2955   XE_APPEND(OffiX, dragndrop_proto)
2956 fi
2957
2958 dnl Autodetect Drag'n'Drop support
2959 dnl always included if CDE, Offix, or MSWindows are defined
2960 AC_MSG_CHECKING(if drag and drop API is needed)
2961 if test "$with_dragndrop" != "no" ; then
2962   if test -n "$dragndrop_proto" ; then
2963     with_dragndrop=yes
2964     AC_MSG_RESULT([yes (${dragndrop_proto} )])
2965     AC_DEFINE(HAVE_DRAGNDROP)
2966     XE_APPEND(dragdrop.o, extra_objs)
2967   else
2968     with_dragndrop=no
2969     AC_MSG_RESULT(no)
2970   fi
2971 fi
2972
2973 dnl Autodetect LDAP
2974 AC_CHECKING(for LDAP)
2975 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
2976 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
2977 if test "$with_ldap" != "no"; then
2978   AC_CHECK_LIB(ldap, ldap_search, with_ldap_nolber=yes, with_ldap_nolber=no)
2979   test "$with_ldap_nolber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_lber=yes, with_ldap_lber=no, -llber) }
2980   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) }
2981   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) }
2982   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
2983 fi
2984 if test "$with_ldap" = "yes"; then
2985   AC_DEFINE(HAVE_LDAP)
2986   XE_ADD_OBJS(eldap.o)
2987   if test "$with_ldap_nolber" = "yes" ; then
2988     XE_PREPEND(-lldap, LIBS)
2989   else
2990     if test "$with_ldap_krb" = "yes" ; then
2991       XE_PREPEND(-lkrb, LIBS)
2992     fi
2993     if test "$with_ldap_krbdes" = "yes" ; then
2994       XE_PREPEND(-ldes, LIBS)
2995       XE_PREPEND(-lkrb, LIBS)
2996     fi
2997     XE_PREPEND(-llber, LIBS)
2998     XE_PREPEND(-lldap, LIBS)
2999   fi
3000   AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result)
3001 fi
3002
3003 dnl Autodetect PostgreSQL
3004 dnl On many Linux systems, PostgreSQL is packaged to be installed in /usr;
3005 dnl in this case, configure will easily detect it there.
3006 dnl
3007 dnl If PostgreSQL is installed into a different prefix,
3008 dnl (such as the default /usr/local/pgsql when building from source),
3009 dnl that prefix must be specified using the --site-prefixes flag.
3010 if test "$with_postgresql" != "no"; then
3011   AC_CHECKING(for PostgreSQL)
3012
3013 dnl Look for these standard header file locations, known to be used on Linux
3014   for header_dir in "" "pgsql/" "postgresql/"; do
3015     AC_CHECK_HEADER(${header_dir}libpq-fe.h,
3016                     libpq_fe_h_file=${header_dir}libpq-fe.h; break)
3017   done
3018
3019   test -n "$libpq_fe_h_file" && { AC_CHECK_LIB(pq,PQconnectdb,have_libpq=yes) }
3020
3021   if test -n "$libpq_fe_h_file" -a "$have_libpq" = "yes"; then
3022     with_postgresql=yes
3023     AC_DEFINE(HAVE_POSTGRESQL)
3024     AC_CHECK_LIB(pq,PQconnectStart, [
3025                  with_postgresqlv7=yes;
3026                  AC_DEFINE(HAVE_POSTGRESQLV7)])
3027     AC_DEFINE_UNQUOTED(LIBPQ_FE_H_FILE, "$libpq_fe_h_file")
3028     XE_PREPEND(-lpq, LIBS)
3029     XE_ADD_OBJS(postgresql.o)
3030   elif test "$with_postgresql" = "yes"; then
3031     XE_DIE("Required PostgreSQL support cannot be provided.  Check --site-prefixes.")
3032   fi
3033 fi
3034
3035 dnl ----------------------
3036 dnl Graphics libraries
3037 dnl ----------------------
3038
3039 if test "$window_system" != "none"; then
3040   AC_CHECKING(for graphics libraries)
3041
3042   dnl Autodetect Xpm
3043   xpm_problem=""
3044   if test -z "$with_xpm"; then
3045     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
3046     xe_check_libs=-lXpm
3047     AC_TRY_RUN([#define XPM_NUMBERS
3048 #include <X11/xpm.h>
3049     int main(int c, char **v) {
3050     return c == 1 ? 0 :
3051       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
3052       XpmIncludeVersion < 30406 ? 2 : 0 ;}],
3053     [./conftest dummy_arg; xpm_status=$?;
3054       if test "$xpm_status" = "0"; then
3055         with_xpm=yes;
3056       else
3057         with_xpm=no;
3058         if test "$xpm_status" = "1"; then
3059           xpm_problem="Xpm library version and header file version don't match!"
3060         elif test "$xpm_status" = "2"; then
3061           xpm_problem="Xpm library version is too old!"
3062         else
3063           xpm_problem="Internal xpm detection logic error!"
3064         fi
3065         echo "
3066 *** WARNING *** $xpm_problem
3067   I'm not touching that with a 10-foot pole!
3068   If you really want to use the installed version of Xpm, rerun
3069   configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!"
3070     fi],
3071     [with_xpm=no])
3072     xe_check_libs=
3073     AC_MSG_RESULT($with_xpm)
3074   fi
3075   if test "$with_xpm" = "yes"; then
3076     AC_DEFINE(HAVE_XPM)
3077     XE_PREPEND(-lXpm, libs_x)
3078     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
3079     xe_check_libs=-lXpm
3080     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
3081     [xpm_for_msw=no],
3082     [xpm_for_msw=yes])
3083     xe_check_libs=
3084     AC_MSG_RESULT($xpm_for_msw)
3085     if test "$xpm_for_msw" = "yes"; then
3086       AC_DEFINE(FOR_MSW)
3087     fi
3088   fi
3089
3090   dnl Autodetect XFACE
3091   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
3092   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
3093   test -z "$with_xface" && with_xface=yes
3094   if test "$with_xface" = "yes"; then
3095     AC_DEFINE(HAVE_XFACE)
3096     XE_PREPEND(-lcompface, libs_x)
3097   fi
3098
3099   dnl For a brief period we had the GIF code split out into a separate library,
3100   dnl but patent problems, etc. sort of squashed that idea.
3101   dnl We default to building with builtin GIF decoding
3102   if test "$with_gif" != "no"; then
3103     with_gif="yes"
3104     AC_DEFINE(HAVE_GIF)
3105     XE_ADD_OBJS(dgif_lib.o gif_io.o)
3106   fi
3107
3108   dnl Too many stupid linkers can't detect cascaded lib dependencies until runtime
3109   dnl So we always search for libz compression support.
3110   if test "$with_png $with_tiff" != "no no"; then
3111     AC_CHECK_LIB(c,  inflate, [:], [
3112     AC_CHECK_LIB(z,  inflate, [XE_PREPEND(-lz,  libs_x)],[
3113     AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])])
3114   fi
3115
3116   dnl autodetect JPEG
3117   test -z "$with_jpeg" && { AC_CHECK_HEADER(jpeglib.h,                    ,with_jpeg=no) }
3118   test -z "$with_jpeg" && { AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,[:],with_jpeg=no) }
3119   test -z "$with_jpeg" && with_jpeg=yes
3120   if test "$with_jpeg" = "yes"; then
3121     AC_DEFINE(HAVE_JPEG)
3122     XE_PREPEND(-ljpeg, libs_x)
3123   fi
3124
3125   dnl autodetect PNG
3126   png_problem=""
3127   test -z "$with_png" && { AC_CHECK_FUNC(pow,                  ,with_png=no) }
3128   test -z "$with_png" && { AC_CHECK_HEADER(png.h,              ,with_png=no) }
3129   test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) }
3130   if test -z "$with_png"; then
3131     AC_MSG_CHECKING(for workable png version information)
3132     xe_check_libs="-lpng -lz"
3133     AC_TRY_RUN([#include <png.h>
3134     int main(int c, char **v) {
3135     if (c == 1) return 0;
3136     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
3137     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}],
3138     [./conftest dummy_arg; png_status=$?;
3139       if test "$png_status" = "0"; then
3140         with_png=yes;
3141       else
3142         with_png=no;
3143         if test "$png_status" = "1"; then
3144           png_problem="PNG library version and header file don't match!"
3145         elif test "$png_status" = "2"; then
3146           png_problem="PNG library version too old (pre 1.0.2)!"
3147         fi
3148         echo "
3149 *** WARNING *** $png_problem
3150   I'm not touching that with a 10-foot pole!
3151   If you really want to use the installed version of libPNG, rerun
3152   configure and add '--with-png=yes', but don't blame me if XEmacs crashes!"
3153     fi],
3154     [with_png=no])
3155     xe_check_libs=
3156     AC_MSG_RESULT($with_png)
3157   fi
3158   if test "$with_png" = "yes"; then
3159     AC_DEFINE(HAVE_PNG)
3160     XE_PREPEND(-lpng, libs_x)
3161   fi
3162
3163   dnl autodetect TIFF
3164   test -z "$with_tiff" && { AC_CHECK_HEADER(tiffio.h,            ,with_tiff=no) }
3165   test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no) }
3166   test -z "$with_tiff" && with_tiff=yes
3167   if test "$with_tiff" = "yes"; then
3168     AC_DEFINE(HAVE_TIFF)
3169     XE_PREPEND(-ltiff, libs_x)
3170   fi
3171 fi
3172
3173 dnl ----------------------
3174 dnl X-Specific Graphics libraries
3175 dnl ----------------------
3176
3177 if test "$with_x11" = "yes"; then
3178
3179   AC_CHECKING(for X11 graphics libraries)
3180
3181   AC_CHECKING(for the Athena widgets)
3182
3183   dnl What in heck did the user actually want?
3184   case "$with_athena" in
3185     dnl This is the default, old fashioned flat Athena.
3186     "xaw" | "") athena_variant=Xaw      athena_3d=no  ;;
3187     "3d")       athena_variant=Xaw3d    athena_3d=yes ;;
3188     "next")     athena_variant=neXtaw   athena_3d=yes ;;
3189     "95")       athena_variant=Xaw95    athena_3d=yes ;;
3190     "xpm")      athena_variant=XawXpm   athena_3d=yes ;;
3191     *)          XE_DIE("Unknown Athena widget set \`$with_athena'. This should not happen.") ;;
3192   esac
3193
3194   dnl Search for the Athena library...
3195   if test "$athena_3d" = "no"; then
3196     AC_CHECK_LIB($athena_variant, XawScrollbarSetThumb,
3197       [
3198         dnl Must not be a 3d library...
3199         AC_CHECK_LIB($athena_variant, threeDClassRec,
3200           AC_MSG_WARN("Could not find a non-3d Athena widget library."),
3201           athena_lib=$athena_variant)
3202       ],
3203       AC_MSG_WARN("Could not find an Athena widget library."))
3204   else
3205     dnl The real configuration, need 3d library
3206     AC_CHECK_LIB($athena_variant, threeDClassRec, athena_lib=$athena_variant,
3207       dnl OK, couldn't find it with a proper name, try the standard Athena lib
3208       dnl If that is 3d, presume the user asked for what they have installed.
3209       AC_CHECK_LIB(Xaw, threeDClassRec,
3210         [
3211           athena_lib=Xaw;
3212           AC_MSG_WARN("Assuming that libXaw is actually $athena_variant.");
3213         ],
3214         AC_MSG_WARN("Could not find a 3d Athena widget library that looked like $athena_variant.")))
3215   fi
3216
3217   dnl Now we locate the Athena headers that we need.
3218   if test "$athena_3d" = "no"; then
3219     AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
3220       AC_MSG_WARN("Could not find a non-3d Athena header set."),
3221       AC_CHECK_HEADER(X11/Xaw/XawInit.h,
3222         athena_h_path=X11/Xaw,
3223         AC_MSG_WARN("Could not find a non-3d Athena header set.")))
3224   else
3225     dnl The three-d Athena headers are so much more slippery.
3226     dnl Curse this `Lets replace standard libraries' thing that they did. :/
3227     AC_CHECK_HEADER(X11/$athena_variant/XawInit.h,
3228       AC_CHECK_HEADER(X11/$athena_variant/ThreeD.h,
3229         athena_h_path=X11/$athena_variant,))
3230
3231     dnl Is the variant specific header directory directly under include?
3232     if test -z "$athena_h_path"; then
3233       AC_CHECK_HEADER($athena_variant/XawInit.h,
3234         AC_CHECK_HEADER($athena_variant/ThreeD.h,
3235           athena_h_path=$athena_variant,))
3236     fi
3237
3238     dnl If we couldn't find the specific variant, try the generic Athena 3d headers
3239     if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
3240       AC_CHECK_HEADER(X11/Xaw3d/XawInit.h,
3241         AC_CHECK_HEADER(X11/Xaw3d/ThreeD.h,
3242           [
3243             AC_MSG_WARN("Assuming that X11/Xaw3d headers are suitable for $athena_variant.")
3244             athena_h_path=X11/Xaw3d
3245           ],))
3246     fi
3247
3248     dnl Also generic 3d headers directly under include dir
3249     if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
3250       AC_CHECK_HEADER(Xaw3d/XawInit.h,
3251         AC_CHECK_HEADER(Xaw3d/ThreeD.h,
3252           [
3253             AC_MSG_WARN("Assuming that Xaw3d headers are suitable for $athena_variant.")
3254             athena_h_path=Xaw3d
3255           ],))
3256     fi
3257
3258     dnl If nothing yet found, see if Xaw is a 3d header set...
3259     dnl We AC_MSG_WARN if we fail because I am all out of ideas...
3260     if test -z "$athena_h_path"; then
3261       AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
3262         [
3263           AC_MSG_WARN("Assuming that X11/Xaw headers are suitable for $athena_variant.")
3264           athena_h_path=X11/Xaw
3265         ],
3266         AC_MSG_WARN("Could not find a suitable 3d Athena header set."))
3267     fi
3268   fi
3269
3270   dnl Do we actually have a usable Athena widget set? Please?
3271   if test -n "$athena_lib" -a -n "$athena_h_path"; then
3272     have_xaw=yes
3273   else
3274     have_xaw=no
3275   fi
3276
3277   dnl autodetect Motif - but only add to libs_x later (if necessary)
3278   AC_CHECK_HEADER(Xm/Xm.h,
3279    [AC_CHECK_LIB(Xm, XmStringFree, have_motif=yes, have_motif=no)],
3280    have_motif=no)
3281
3282   if test "$have_motif" = "yes"; then
3283     dnl autodetect lesstif
3284     AC_MSG_CHECKING(for Lesstif)
3285     AC_EGREP_CPP(yes,
3286 [#include <Xm/Xm.h>
3287 #ifdef LESSTIF_VERSION
3288 yes
3289 #endif
3290 ], have_lesstif=yes, have_lesstif=no)
3291   AC_MSG_RESULT($have_lesstif)
3292   fi
3293
3294 fi dnl "$with_x11" = "yes"
3295
3296 dnl Finish ensuring that we have values for the various toolkit items.
3297 dnl Not all toolkits support all widgets
3298 dnl if Motif is available we use it for the dialog boxes.
3299
3300 case "$with_menubars" in "" | "yes" | "athena" )
3301   with_menubars="lucid" ;;
3302 esac
3303 case "$with_dialogs" in "" | "yes" | "lucid" )
3304   if   test "$have_motif"     = "yes"; then with_dialogs="motif"
3305   elif test "$have_xaw"       = "yes"; then with_dialogs="athena"
3306   else with_dialogs=no
3307   fi ;;
3308 esac
3309 case "$with_scrollbars" in "" | "yes" )
3310   with_scrollbars="lucid" ;;
3311 esac
3312 case "$with_widgets" in "" | "yes" | "lucid")
3313   if   test "$have_motif" = "yes"; then with_widgets="motif"
3314   elif test "$have_xaw"   = "yes"; then with_widgets="athena"
3315   else with_widgets=no
3316   fi ;;
3317 esac
3318
3319 all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars $with_widgets"
3320
3321 case "$all_widgets" in
3322   *athena* )
3323     if test "$have_xaw" != "yes"; then
3324       XE_DIE("Could not find a suitable Athena library to build with.")
3325     fi
3326
3327     dnl Add the Lucid widget Athena code
3328     XE_APPEND(lwlib-Xaw.o, lwlib_objs)
3329
3330     dnl Add the Athena widget library we located earlier
3331     XE_PREPEND(-l$athena_lib, libs_x)
3332
3333     dnl Tell lwlib where to find the Athena header files.
3334     dnl Many people have tried to create a `smart' way of doing this,
3335     dnl but all have failed.  Before changing the following ugly definitions,
3336     dnl consult the veterans of many a battle.
3337     AC_DEFINE_UNQUOTED(ATHENA_Scrollbar_h_,"$athena_h_path/Scrollbar.h")
3338     AC_DEFINE_UNQUOTED(ATHENA_Dialog_h_,"$athena_h_path/Dialog.h")
3339     AC_DEFINE_UNQUOTED(ATHENA_Form_h_,"$athena_h_path/Form.h")
3340     AC_DEFINE_UNQUOTED(ATHENA_Command_h_,"$athena_h_path/Command.h")
3341     AC_DEFINE_UNQUOTED(ATHENA_Label_h_,"$athena_h_path/Label.h")
3342     AC_DEFINE_UNQUOTED(ATHENA_LabelP_h_,"$athena_h_path/LabelP.h")
3343     AC_DEFINE_UNQUOTED(ATHENA_Toggle_h_,"$athena_h_path/Toggle.h")
3344     AC_DEFINE_UNQUOTED(ATHENA_ToggleP_h_,"$athena_h_path/ToggleP.h")
3345     AC_DEFINE_UNQUOTED(ATHENA_AsciiText_h_,"$athena_h_path/AsciiText.h")
3346     AC_DEFINE_UNQUOTED(ATHENA_XawInit_h_,"$athena_h_path/XawInit.h")
3347
3348     AC_DEFINE(LWLIB_USES_ATHENA)
3349     AC_DEFINE(NEED_ATHENA)
3350     need_athena="yes"
3351
3352     if test "$athena_3d" = "yes"; then
3353       AC_DEFINE(HAVE_ATHENA_3D)
3354     fi
3355   ;;
3356 esac
3357
3358 case "$all_widgets" in *motif* )
3359   AC_DEFINE(LWLIB_USES_MOTIF)
3360   AC_DEFINE(NEED_MOTIF)
3361   XE_APPEND(lwlib-Xm.o, lwlib_objs)
3362   need_motif=yes ;;
3363 esac
3364
3365 test "$with_menubars"   = "lucid" && XE_APPEND(xlwmenu.o, lwlib_objs)
3366 test "$with_menubars"   = "motif" && XE_APPEND(xlwmenu.o, lwlib_objs)
3367 test "$with_scrollbars" = "lucid" && XE_APPEND(xlwscrollbar.o, lwlib_objs)
3368 test "$with_widgets"   != "no" && test "$with_widgets" != "msw" && \
3369         XE_APPEND(xlwtabs.o xlwgcs.o, lwlib_objs)
3370 case "$with_widgets" in athena* )
3371         XE_APPEND(xlwradio.o xlwcheckbox.o xlwgauge.o, lwlib_objs);;
3372 esac
3373 case "$all_widgets" in *lucid* )
3374   AC_DEFINE(NEED_LUCID)
3375   XE_APPEND(lwlib-Xlw.o, lwlib_objs) ;;
3376 esac
3377
3378 AC_SUBST(lwlib_objs)
3379
3380 test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA)
3381 test "$with_dialogs"    = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA)
3382
3383 if test "$athena_3d" = "yes"; then
3384   test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
3385   test "$with_dialogs"    = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
3386 fi
3387
3388 case "$with_widgets" in athena* ) AC_DEFINE(LWLIB_WIDGETS_ATHENA);; esac
3389 test "$with_widgets" != "no" && test "$with_widgets" != "msw" && \
3390         AC_DEFINE(LWLIB_TABS_LUCID)
3391
3392 test "$with_menubars"   != "no"    && AC_DEFINE(HAVE_MENUBARS)
3393 test "$with_scrollbars" != "no"    && AC_DEFINE(HAVE_SCROLLBARS)
3394 test "$with_dialogs"    != "no"    && AC_DEFINE(HAVE_DIALOGS)
3395 test "$with_toolbars"   != "no"    && AC_DEFINE(HAVE_TOOLBARS)
3396 test "$with_widgets"    != "no"    && AC_DEFINE(HAVE_WIDGETS)
3397
3398 test "$with_menubars"   = "lucid"  && AC_DEFINE(LWLIB_MENUBARS_LUCID)
3399 test "$with_scrollbars" = "lucid"  && AC_DEFINE(LWLIB_SCROLLBARS_LUCID)
3400
3401 test "$with_menubars"   = "motif"  && AC_DEFINE(LWLIB_MENUBARS_MOTIF)
3402 test "$with_scrollbars" = "motif"  && AC_DEFINE(LWLIB_SCROLLBARS_MOTIF)
3403 test "$with_dialogs"    = "motif"  && AC_DEFINE(LWLIB_DIALOGS_MOTIF)
3404 test "$with_widgets"    = "motif"  && AC_DEFINE(LWLIB_WIDGETS_MOTIF)
3405
3406 test "$with_menubars"   != "no"    && XE_ADD_OBJS(menubar.o)
3407 test "$with_scrollbars" != "no"    && XE_ADD_OBJS(scrollbar.o)
3408 test "$with_dialogs"    != "no"    && XE_ADD_OBJS(dialog.o)
3409 test "$with_toolbars"   != "no"    && XE_ADD_OBJS(toolbar.o)
3410
3411 if test "$with_x11" = "yes"; then
3412   test "$with_menubars"   != "no"  && XE_ADD_OBJS(menubar-x.o)
3413   test "$with_scrollbars" != "no"  && XE_ADD_OBJS(scrollbar-x.o)
3414   test "$with_dialogs"    != "no"  && XE_ADD_OBJS(dialog-x.o)
3415   test "$with_toolbars"   != "no"  && XE_ADD_OBJS(toolbar-x.o)
3416   test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-x.o)
3417 fi
3418
3419 dnl ----------------------
3420 dnl Mule-dependent options
3421 dnl ----------------------
3422
3423 test -z "$with_mule" && with_mule=no
3424 test -z "$with_file_coding" && with_file_coding=no
3425
3426 dnl if test "$with_mule" = "yes" && test ! -d "$srcdir/lisp/mule"; then
3427 dnl     echo "Attempt to Build with Mule without Mule/Lisp"
3428 dnl     echo "Please install the XEmacs/Mule tarball or"
3429 dnl     echo "rerun configure with --with-mule=no"
3430 dnl     exit 1
3431 dnl fi
3432
3433 if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then
3434   AC_DEFINE(FILE_CODING)
3435   XE_ADD_OBJS(file-coding.o)
3436 fi
3437
3438 if test "$with_mule" = "yes" ; then
3439   AC_CHECKING(for Mule-related features)
3440   AC_DEFINE(MULE)
3441   AC_DEFINE(FILE_CODING)
3442   XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o file-coding.o)
3443
3444   dnl Use -lintl to get internationalized strerror for Mule
3445   AC_CHECK_HEADERS(libintl.h)
3446   AC_CHECK_LIB(intl, strerror)
3447
3448   AC_CHECKING(for Mule input methods)
3449   dnl Do we have the XmIm* routines?  And if so, do we want to use them?
3450   dnl XIM seems to be flaky except on Solaris...
3451   dnl test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no
3452   case "$with_xim" in "" | "yes" )
3453     AC_CHECKING(for XIM)
3454     AC_CHECK_LIB(X11, XOpenIM, with_xim=xlib, with_xim=no)
3455     dnl XIM + Lesstif is not (yet?) usable
3456     if test "$have_motif $have_lesstif" = "yes no"; then
3457       AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
3458     fi ;;
3459   esac
3460   if test "$with_xim" != "no"; then
3461     AC_DEFINE(HAVE_XIM)
3462     if test "$with_xim" = "xlib"; then
3463       AC_DEFINE(XIM_XLIB)
3464       XE_ADD_OBJS(input-method-xlib.o)
3465     fi
3466     if test "$with_xim" = "motif"; then
3467       AC_DEFINE(XIM_MOTIF)
3468       need_motif=yes
3469       XE_ADD_OBJS(input-method-motif.o)
3470     fi
3471     if test "$with_xim" = "motif"; then
3472       with_xfs=no
3473     fi
3474   fi
3475
3476   dnl "with_xfs" = "yes"
3477   if test "$with_xfs" = "yes" ; then
3478     AC_CHECKING(for XFontSet)
3479     AC_CHECK_LIB(X11, XmbDrawString, [:], with_xfs=no)
3480     if test "$with_xfs" = "yes" && test "$with_menubars" = "lucid"; then
3481       AC_DEFINE(USE_XFONTSET)
3482       if test "$with_xim" = "no" ; then
3483         XE_ADD_OBJS(input-method-xfs.o)
3484       fi
3485     fi
3486   fi dnl with_xfs
3487
3488   dnl Autodetect WNN
3489   test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
3490   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/jllib.h, ,with_wnn=no) }
3491   dnl Detour to find crypt
3492   if test "$with_wnn" != "no"; then
3493     AC_CHECK_FUNCS(crypt)
3494     test "$ac_cv_func_crypt" != "yes" && { AC_CHECK_LIB(crypt, crypt) }
3495   fi
3496   dnl Back to our regularly scheduled wnn hunting
3497   if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
3498     AC_CHECK_LIB(wnn,jl_dic_list_e,libwnn=wnn,
3499       AC_CHECK_LIB(wnn4,jl_dic_list_e,libwnn=wnn4,
3500         AC_CHECK_LIB(wnn6,jl_dic_list_e,libwnn=wnn6,
3501           AC_CHECK_LIB(wnn6_fromsrc,dic_list_e,libwnn=wnn6_fromsrc,with_wnn=no))))
3502   fi
3503   test -z "$with_wnn" && with_wnn=yes
3504   if test "$with_wnn" = "yes"; then
3505     AC_DEFINE(HAVE_WNN)
3506     XE_PREPEND(-l$libwnn, libs_x)
3507     XE_ADD_OBJS(mule-wnnfns.o)
3508     if test "$with_wnn6" != "no"; then
3509       AC_CHECK_LIB($libwnn, jl_fi_dic_list, with_wnn6=yes)
3510       test "$with_wnn6" = "yes" && AC_DEFINE(WNN6)
3511     fi
3512   fi
3513
3514   dnl Autodetect canna
3515   canna_includes_found=no
3516   if test "$with_canna" != "no"; then
3517     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3518   fi
3519   if test "$canna_includes_found" = "no" -a "$with_canna" != "no" -a \
3520       -d "/usr/local/canna/include"; then
3521     save_c_switch_site="$c_switch_site"
3522     c_switch_site="$c_switch_site -I/usr/local/canna/include"
3523     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3524     if test "$canna_includes_found" != "yes"; then
3525       c_switch_site="$save_c_switch_site"
3526       with_canna="no"
3527     fi
3528   fi
3529
3530   test -z "$with_canna" && { AC_CHECK_HEADER(canna/RK.h,         , with_canna=no) }
3531   test -z "$with_canna" && { AC_CHECK_LIB(RKC, RkBgnBun,       [:],with_canna=no) }
3532   test -z "$with_canna" && { AC_CHECK_LIB(canna,jrKanjiControl,[:],with_canna=no) }
3533   test -z "$with_canna" && with_canna=yes
3534   if test "$with_canna" = "yes"; then
3535     AC_DEFINE(HAVE_CANNA)
3536     XE_PREPEND(-lcanna -lRKC, libs_x)
3537     XE_ADD_OBJS(mule-canna.o)
3538   fi
3539
3540 else dnl "$with_mule" = "no"
3541   for feature in xim canna wnn; do
3542     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3543       AC_MSG_WARN("--with-${feature} ignored:  Not valid without Mule support")
3544     fi
3545     eval "with_${feature}=no"
3546   done
3547 fi dnl with_mule
3548
3549
3550 dnl At this point, we know whether we need the motif lib or not.
3551 if test "$need_motif" = "yes" ; then
3552   XE_PREPEND(-lXm, libs_x)
3553   dnl AIX needs the following library for use with Motif
3554   AC_CHECK_LIB(i18n, layout_object_getvalue, [XE_PREPEND(-li18n, libs_x)])
3555   XE_COMPUTE_RUNPATH()
3556 fi
3557
3558 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)
3559
3560 dnl Check for PTY support functions.
3561 dnl  getpt  is the preferred pty allocation method on glibc systems.
3562 dnl _getpty is the preferred pty allocation method on SGI systems.
3563 dnl grantpt, unlockpt, ptsname are defined by Unix98.
3564 AC_CHECK_FUNCS(getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp)
3565
3566 dnl openpty is the preferred pty allocation method on BSD and Tru64 systems.
3567 dnl openpty might be declared in pty.h or in libutil.h.
3568 AC_CHECK_FUNC(openpty, have_openpty=yes, [
3569   AC_CHECK_LIB(util, openpty, have_openpty=yes need_libutil=yes)])
3570 if test "$have_openpty" = "yes"; then
3571   AC_DEFINE(HAVE_OPENPTY)
3572   AC_CHECK_HEADERS(pty.h libutil.h)
3573   test "$need_libutil" = "yes" && XE_APPEND(-lutil, libs_system)
3574 fi
3575
3576 dnl Check for STREAM support functions.
3577 dnl Confusingly, "str" means both "string" and "SysV Streams".
3578 AC_CHECK_HEADERS(stropts.h)
3579 if test "$ac_cv_header_stropts_h" = "yes"; then
3580   AC_CHECK_FUNCS(isastream)
3581   AC_CHECK_HEADERS(strtio.h) dnl TIOCSIGNAL
3582 fi
3583
3584 dnl Use our own realpath always.
3585 XE_ADD_OBJS(realpath.o)
3586
3587 dnl Check whether the system provides getloadavg().
3588 AC_CHECK_FUNCS(getloadavg)
3589
3590 if test "$ac_cv_func_getloadavg" = "yes"; then
3591   dnl Solaris 8 declares getloadavg() in <sys/loadavg.h>.
3592   dnl glibc 2.2 declares getloadavg() in <stdlib.h>...
3593   dnl   ...if we #define _GNU_SOURCE, which we do.
3594   AC_CHECK_HEADERS(sys/loadavg.h)
3595 else
3596   dnl We define our own getloadavg() using lower level functions.
3597   XE_ADD_OBJS(getloadavg.o)
3598
3599   dnl Used by getloadavg() - does not require root priveleges
3600   AC_CHECK_LIB(kstat, kstat_open)
3601   AC_CHECK_HEADERS(kstat.h)
3602
3603   dnl Another way to get the load average
3604   AC_CHECK_LIB(kvm, kvm_read)
3605 fi
3606
3607 dnl If netdb.h does not declare h_errno, we must declare it by hand.
3608 AC_MSG_CHECKING(whether netdb declares h_errno)
3609 AC_TRY_LINK([#include <netdb.h>],
3610   [return h_errno;],
3611   [AC_MSG_RESULT(yes)
3612    AC_DEFINE(HAVE_H_ERRNO)],
3613   [AC_MSG_RESULT(no)])
3614
3615 AC_MSG_CHECKING(for sigsetjmp)
3616 AC_TRY_COMPILE([#include <setjmp.h>],
3617         [sigjmp_buf bar; sigsetjmp (bar, 0);],
3618   [AC_MSG_RESULT(yes)
3619    AC_DEFINE(HAVE_SIGSETJMP)],
3620   [AC_MSG_RESULT(no)])
3621
3622 AC_MSG_CHECKING(whether localtime caches TZ)
3623 AC_CACHE_VAL(emacs_cv_localtime_cache,
3624 [if test "$ac_cv_func_tzset" = "yes"; then
3625 AC_TRY_RUN([#include <time.h>
3626 #if STDC_HEADERS
3627 # include <stdlib.h>
3628 #endif
3629 extern char **environ;
3630 unset_TZ ()
3631 {
3632   char **from, **to;
3633   for (to = from = environ; (*to = *from); from++)
3634     if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
3635       to++;
3636 }
3637 char TZ_GMT0[] = "TZ=GMT0";
3638 char TZ_PST8[] = "TZ=PST8";
3639 main()
3640 {
3641   time_t now = time ((time_t *) 0);
3642   int hour_GMT0, hour_unset;
3643   if (putenv (TZ_GMT0) != 0)
3644     exit (1);
3645   hour_GMT0 = localtime (&now)->tm_hour;
3646   unset_TZ ();
3647   hour_unset = localtime (&now)->tm_hour;
3648   if (putenv (TZ_PST8) != 0)
3649     exit (1);
3650   if (localtime (&now)->tm_hour == hour_GMT0)
3651     exit (1);
3652   unset_TZ ();
3653   if (localtime (&now)->tm_hour != hour_unset)
3654     exit (1);
3655   exit (0);
3656 }], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
3657 [# If we have tzset, assume the worst when cross-compiling.
3658 emacs_cv_localtime_cache=yes])
3659 else
3660         # If we lack tzset, report that localtime does not cache TZ,
3661         # since we can't invalidate the cache if we don't have tzset.
3662         emacs_cv_localtime_cache=no
3663 fi],[:])dnl
3664 AC_MSG_RESULT($emacs_cv_localtime_cache)
3665 if test $emacs_cv_localtime_cache = yes; then
3666   AC_DEFINE(LOCALTIME_CACHE)
3667 fi
3668
3669 if test "$HAVE_TIMEVAL" = "yes"; then
3670 AC_MSG_CHECKING(whether gettimeofday accepts one or two arguments)
3671 AC_TRY_LINK([
3672 #ifdef TIME_WITH_SYS_TIME
3673 #include <sys/time.h>
3674 #include <time.h>
3675 #else
3676 #ifdef HAVE_SYS_TIME_H
3677 #include <sys/time.h>
3678 #else
3679 #include <time.h>
3680 #endif
3681 #endif
3682   ],
3683   [
3684   struct timeval time;
3685   gettimeofday (&time, 0);
3686 ],
3687   [AC_MSG_RESULT(two)],
3688   [AC_MSG_RESULT(one)
3689    AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)])
3690 fi
3691
3692
3693 AC_C_INLINE
3694 test "$ac_cv_c_inline" != "no" -a "$GCC" = "yes" && XE_ADD_OBJS(inline.o)
3695
3696 dnl HP-UX has a working alloca in libPW.
3697 dnl case "${GCC}${opsys}" in hpux* )
3698 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
3699 dnl esac
3700
3701 dnl AC_FUNC_ALLOCA doesn't know about DEC C's #pragma intrinsic(alloca)
3702 if test "$__DECC" != "yes"; then
3703   AC_FUNC_ALLOCA
3704   test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
3705 fi
3706
3707 dnl Check whether vfork exists and works correctly. (This does more
3708 dnl than just check for its existence.) If so, it defines HAVE_VFORK_H.
3709 dnl If not, it defines vfork to be fork.
3710 AC_FUNC_VFORK
3711
3712 dnl Check whether strcoll exists and works correctly. (This does more
3713 dnl than just check for its existence.) If so, it defines HAVE_STRCOLL.
3714 AC_FUNC_STRCOLL
3715
3716 dnl If `getpgrp' takes no argument (the POSIX.1 version), define
3717 dnl `GETPGRP_VOID'.  Otherwise, it is the BSD version, which takes a
3718 dnl process ID as an argument.
3719 AC_CHECK_FUNCS(getpgrp)
3720 AC_FUNC_GETPGRP
3721
3722 dnl We used to call AC_FUNC_MMAP here
3723 dnl Instead we now use following, suggested by Neal Becker
3724 AC_MSG_CHECKING(for working mmap)
3725 case "$opsys" in ultrix* ) have_mmap=no ;; *)
3726 AC_TRY_RUN([#include <stdio.h>
3727 #include <unistd.h>
3728 #include <fcntl.h>
3729 #include <sys/mman.h>
3730
3731 #ifndef MAP_VARIABLE
3732 #define MAP_VARIABLE 0
3733 #endif
3734
3735 #ifndef MAP_FAILED
3736 #define MAP_FAILED -1
3737 #endif
3738
3739 int main (int argc, char *argv[])
3740 {
3741   int fd = -1;
3742   caddr_t p;
3743 #ifndef MAP_ANONYMOUS
3744   fd = open ("/dev/zero", O_RDWR);
3745   if (fd < 0)
3746     return 1;
3747 #define MAP_ANONYMOUS 0
3748 #endif
3749   if (mmap(0, 1024, PROT_READ | PROT_WRITE,
3750            MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS,
3751            fd, 0) != (void *) MAP_FAILED)
3752     return 0;
3753   perror ("conftest: mmap failed");
3754   return 1;
3755 }], have_mmap=yes, have_mmap=no) ;;
3756 esac
3757 AC_MSG_RESULT($have_mmap)
3758 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
3759
3760 dnl rel_alloc requires either GNU malloc or system malloc with mmap
3761 dnl We only turn rel_alloc on by default if mmap is available.
3762 test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
3763 if test "$rel_alloc $have_mmap" = "default yes"; then
3764   if test "$doug_lea_malloc" = "yes"; then
3765     dnl Check if malloc() calls mmap(), making rel_alloc pointless.
3766     AC_MSG_CHECKING(for M_MMAP_THRESHOLD)
3767     AC_TRY_COMPILE([#include <malloc.h>],[
3768 #ifndef M_MMAP_THRESHOLD
3769 #error No M_MMAP_THRESHOLD :-(
3770 !@+$%^&*_)(_ - unlikely to compile...
3771 #endif
3772 ], [rel_alloc=no; AC_MSG_RESULT(yes);], [rel_alloc=yes; AC_MSG_RESULT(no);])
3773   else
3774     rel_alloc=yes
3775   fi
3776 fi
3777 test "$rel_alloc" = "yes" && AC_DEFINE(REL_ALLOC)
3778
3779 dnl Check for terminal I/O variants
3780 dnl TERMIOS systems may have termio.h, but not vice-versa, I think.
3781 AC_CHECK_HEADER(termios.h,
3782   AC_DEFINE(HAVE_TERMIOS)
3783   AC_DEFINE(SIGNALS_VIA_CHARACTERS)
3784   AC_DEFINE(NO_TERMIO),
3785   [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])])
3786
3787
3788 dnl Check for Internet sockets.
3789 AC_CHECK_FUNC(socket,
3790  [AC_CHECK_HEADER(netinet/in.h,
3791    [AC_CHECK_HEADER(arpa/inet.h, [
3792   AC_DEFINE(HAVE_SOCKETS)
3793       AC_MSG_CHECKING("for sun_len member in struct sockaddr_un")
3794       AC_TRY_LINK([
3795 #include <sys/types.h>
3796 #include <sys/socket.h>
3797 #include <sys/un.h>
3798       ],
3799       [static struct sockaddr_un x; x.sun_len = 1;],
3800       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)],
3801       [AC_MSG_RESULT(no)])
3802       AC_MSG_CHECKING("for ip_mreq struct in netinet/in.h")
3803       AC_TRY_LINK([
3804 #include <sys/types.h>
3805 #include <netinet/in.h>
3806       ],
3807       [static struct ip_mreq x;],
3808       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MULTICAST)],
3809       [AC_MSG_RESULT(no)])])])])
3810
3811 dnl Check for SYS V IPC. (Inferior to sockets.)
3812 AC_CHECK_FUNC(msgget,
3813   [AC_CHECK_HEADER(sys/ipc.h,
3814     [AC_CHECK_HEADER(sys/msg.h,
3815       [AC_DEFINE(HAVE_SYSVIPC)])])])
3816
3817 dnl Check for directory variants
3818 AC_CHECK_HEADER(dirent.h, [AC_DEFINE(SYSV_SYSTEM_DIR)],
3819   [AC_CHECK_HEADER(sys/dir.h, , [AC_DEFINE(NONSYSTEM_DIR_LIBRARY)])])
3820
3821 dnl Check for nlist.h
3822 AC_CHECK_HEADER(nlist.h, AC_DEFINE(NLIST_STRUCT), )
3823
3824 dnl Check for sound of various sorts.
3825
3826 dnl Autodetect native sound
3827 AC_CHECKING("for sound support")
3828 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
3829
3830 if test "$with_native_sound" != "no"; then
3831   dnl Maybe sound is already on include path...
3832   if test -n "$native_sound_lib"; then
3833     AC_CHECK_HEADER(multimedia/audio_device.h,
3834       [sound_found=yes sound_cflags=""
3835       XE_ADD_OBJS(sunplay.o)])
3836   fi
3837
3838   dnl Autodetect Sun native sound from SUNWaudmo package
3839   if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
3840     sound_found=yes
3841     XE_ADD_OBJS(sunplay.o)
3842     if test -d "/usr/demo/SOUND/include"
3843       then sound_cflags="-I/usr/demo/SOUND/include"
3844       else sound_cflags="-I/usr/demo/SOUND"
3845     fi
3846     if test -z "$native_sound_lib" ; then
3847       if test -r "/usr/demo/SOUND/lib/libaudio.a"
3848         then native_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
3849         else native_sound_lib="/usr/demo/SOUND/libaudio.a"
3850       fi
3851     fi
3852   fi
3853
3854   dnl Check for SGI and HP native sound libs
3855   if test -z "$sound_found"; then
3856     case "$canonical" in
3857     *-sgi-* )
3858       if test -z "$native_sound_lib"; then
3859         AC_CHECK_LIB(audio, ALopenport, native_sound_lib="-laudio")
3860       fi
3861       if test -n "$native_sound_lib"; then
3862         sound_found=yes sound_cflags=""
3863         XE_ADD_OBJS(sgiplay.o)
3864       fi ;;
3865     hppa*-hp-hpux* )
3866       if test -z "$native_sound_lib"; then
3867         AC_CHECK_LIB(Alib, AOpenAudio, native_sound_lib="-lAlib")
3868       fi
3869       if test -n "$native_sound_lib"; then
3870         sound_found=yes
3871         XE_ADD_OBJS(hpplay.o)
3872         if test "$GCC" = "yes" # Kludge city
3873           then sound_cflags="-Dconst= -Dvolatile= -I/usr/audio/examples"
3874           else sound_cflags="+e -I/usr/audio/examples"
3875         fi
3876       fi ;;
3877     esac
3878   fi
3879
3880   dnl Check for Linux/BSD native sound
3881   if test -z "$sound_found"; then
3882     for dir in "machine" "sys" "linux"; do
3883       AC_CHECK_HEADER(${dir}/soundcard.h,
3884         sound_found=yes
3885        need_miscplay=yes
3886         XE_ADD_OBJS(linuxplay.o)
3887         [AC_DEFINE_UNQUOTED(SOUNDCARD_H_FILE, "${dir}/soundcard.h")]
3888         break)
3889     done
3890   fi
3891
3892   dnl Win32 Native uses native sound
3893   if test -z "$sound_found"; then
3894     if test "$with_msw" = "yes"; then
3895     sound_found=yes
3896     native_sound_lib=
3897     fi
3898   fi
3899
3900   test "$sound_found" = "yes" && with_native_sound=yes
3901 fi
3902
3903 if test "$with_native_sound" = "yes"; then
3904   AC_DEFINE(HAVE_NATIVE_SOUND)
3905   test -n "$native_sound_lib" && XE_PREPEND($native_sound_lib, LIBS)
3906 fi
3907
3908 dnl NAS Sound support
3909 if test "$with_nas_sound" != "no"; then
3910   AC_CHECK_HEADER(audio/audiolib.h, [
3911     AC_CHECK_LIB(audio, AuOpenServer, have_nas_sound=yes)])
3912   if test "$have_nas_sound" = "yes"; then
3913     with_nas_sound=yes
3914     AC_DEFINE(HAVE_NAS_SOUND)
3915     XE_ADD_OBJS(nas.o)
3916     XE_PREPEND(-laudio, libs_x)
3917     dnl If the nas library does not contain the error jump point,
3918     dnl then we force safer behavior.
3919     AC_EGREP_HEADER(AuXtErrorJump,audio/Xtutil.h,,[old_nas=yes; AC_DEFINE(NAS_NO_ERROR_JUMP)])
3920   else
3921     test "$with_nas_sound" = "yes" && \
3922       XE_DIE("Required NAS sound support cannot be provided.")
3923     with_nas_sound=no
3924   fi
3925 fi
3926
3927 dnl ESD Sound support
3928 if test "$with_esd_sound" != "no"; then
3929   AC_CHECK_PROG(have_esd_config, esd-config, yes, no)
3930   if test "$have_esd_config" = "yes"; then
3931     save_c_switch_site="$c_switch_site" save_LIBS="$LIBS"
3932     XE_APPEND(`esd-config --cflags`, c_switch_site)
3933     XE_PREPEND(`esd-config --libs`, LIBS)
3934     AC_CHECK_FUNC(esd_play_stream,
3935       have_esd_sound=yes,
3936       c_switch_site="$save_c_switch_site" LIBS="$save_LIBS")
3937   fi
3938
3939   if test "$have_esd_sound" = "yes"; then
3940     with_esd_sound=yes
3941     need_miscplay=yes
3942     XE_ADD_OBJS(esd.o)
3943     AC_DEFINE(HAVE_ESD_SOUND)
3944   else
3945     test "$with_esd_sound" = "yes" && \
3946       XE_DIE("Required ESD sound support cannot be provided.")
3947     with_esd_sound=no
3948   fi
3949 fi
3950
3951 test "$need_miscplay" = "yes" && XE_ADD_OBJS(miscplay.o)
3952
3953 dnl ---------------------
3954 dnl TTY-dependent options
3955 dnl ---------------------
3956
3957 test -z "$with_tty" && with_tty=yes
3958
3959 if test "$with_tty" = "yes"  ; then
3960   AC_CHECKING(for TTY-related features)
3961   AC_DEFINE(HAVE_TTY)
3962   XE_ADD_OBJS(console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o)
3963
3964   dnl Autodetect ncurses.
3965   if test -z "$with_ncurses"; then
3966     AC_CHECK_LIB(ncurses, tgetent, with_ncurses=yes, with_ncurses=no)
3967   fi
3968   if test "$with_ncurses" = "yes"; then
3969     AC_DEFINE(HAVE_NCURSES)
3970     AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
3971     AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
3972     XE_ADD_OBJS(terminfo.o)
3973     XE_PREPEND(-lncurses, LIBS)
3974
3975     if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then
3976       dnl Try again, and check for the bogus ncurses/ include bug.
3977       dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
3978       dnl <ncurses/unctrl.h>)
3979       save_c_switch_site="$c_switch_site"
3980       c_switch_site="$c_switch_site -I/usr/include/ncurses"
3981       AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
3982       if test "$ac_cv_header_ncurses_curses_h" = "yes"
3983         then AC_MSG_WARN("Your system has the bogus ncurses include bug.")
3984         else c_switch_site="$save_c_switch_site"
3985       fi
3986     fi
3987   else dnl "$with_ncurses" = "no"
3988     dnl Autodetect terminfo/-lcurses/-ltermlib/-ltermcap
3989     if test "$have_terminfo" = "yes"; then
3990       XE_ADD_OBJS(terminfo.o)
3991       if test -n "$libs_termcap"; then
3992         XE_PREPEND($libs_termcap, LIBS)
3993       else
3994         for lib in curses termlib termcap; do
3995           AC_CHECK_LIB($lib, tgetent, XE_PREPEND(-l${lib}, LIBS); break)
3996         done
3997       fi
3998     else dnl "$have_terminfo" = "no" && "with_ncurses" = "no"
3999       XE_ADD_OBJS(tparam.o)
4000       dnl The HP-UX curses library seems to have a badly broken version of select(2)
4001       dnl that makes "poll: interrupted system call" messages to appear and
4002       dnl Emacs suprocesses to hang (e.g. TeX compilation w/ AUCTeX) */
4003       case "$opsys" in *-hp-hpux* ) libs_termcap="-ltermcap" ;; esac
4004       if test -n "$libs_termcap"; then
4005         XE_PREPEND($libs_termcap, LIBS)
4006       else
4007         AC_CHECK_LIB(curses, tgetent, XE_PREPEND(-lcurses, LIBS),
4008           AC_CHECK_LIB(termcap, tgetent, XE_PREPEND(-ltermcap, LIBS),
4009             XE_ADD_OBJS(termcap.o)))
4010       fi
4011     fi
4012   fi
4013   AC_DEFINE_UNQUOTED(CURSES_H_FILE, "${curses_h_file-curses.h}")
4014   AC_DEFINE_UNQUOTED(TERM_H_FILE, "${term_h_file-term.h}")
4015
4016   dnl Autodetect gpm
4017   test -z "$with_gpm" && { AC_CHECK_HEADER(gpm.h, , with_gpm=no) }
4018   test -z "$with_gpm" && { AC_CHECK_LIB(gpm, Gpm_Open, with_gpm=yes, with_gpm=no) }
4019   if test "$with_gpm" = "yes"; then
4020     AC_DEFINE(HAVE_GPM)
4021     XE_ADD_OBJS(gpmevent.o)
4022     XE_PREPEND(-lgpm, LIBS)
4023   fi
4024
4025 else dnl "$with_tty" = "no"
4026   for feature in ncurses gpm; do
4027     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
4028       AC_MSG_WARN("--with-${feature} ignored:  Not valid without TTY support")
4029     fi
4030     eval "with_${feature}=no"
4031   done
4032 fi dnl with_tty
4033
4034 dnl Do we need event-unixoid.o ?
4035 test "$with_x11" = "yes" -o "$with_tty" = "yes" && XE_ADD_OBJS(event-unixoid.o)
4036
4037 dnl Database support
4038 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
4039 dnl On FreeBSD, both DB and DBM are part of libc.
4040 dnl By default, we check for DBM support in libgdbm, then libc, then libdbm.
4041
4042 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
4043   != "no no no" && AC_CHECKING(for database support)
4044
4045 dnl Check for ndbm.h, required for either kind of DBM support.
4046 if test "$with_database_gdbm $with_database_dbm" != "no no"; then
4047   AC_CHECK_HEADER(ndbm.h, [:], [
4048     test "$with_database_gdbm" = "yes" -o \
4049          "$with_database_dbm"  = "yes" && \
4050       XE_DIE("Required DBM support cannot be provided.")
4051     with_database_gdbm=no with_database_dbm=no])
4052 fi
4053
4054 dnl Check for DBM support in libgdbm.
4055 if test "$with_database_gdbm" != "no"; then
4056   AC_CHECK_LIB(gdbm, dbm_open, [
4057    with_database_gdbm=yes with_database_dbm=no libdbm=-lgdbm], [
4058    if test "$with_database_gdbm" = "yes"; then
4059      XE_DIE("Required GNU DBM support cannot be provided.")
4060    fi
4061    with_database_gdbm=no])
4062 fi
4063
4064 dnl Check for DBM support in libc and libdbm.
4065 if test "$with_database_dbm" != "no"; then
4066   AC_CHECK_FUNC(dbm_open, [with_database_dbm=yes libdbm=], [
4067     AC_CHECK_LIB(dbm, dbm_open, [with_database_dbm=yes libdbm=-ldbm], [
4068       test "$with_database_dbm" = "yes" && \
4069         XE_DIE("Required DBM support cannot be provided.")
4070       with_database_dbm=no])])
4071 fi
4072
4073 dnl Tell make about the DBM support we detected.
4074 test -n "$libdbm" && XE_PREPEND("$libdbm", LIBS)
4075 test "$with_database_gdbm" = "yes" -o \
4076      "$with_database_dbm"  = "yes" && \
4077   AC_DEFINE(HAVE_DBM)
4078
4079 dnl Check for Berkeley DB.
4080 if test "$with_database_berkdb" != "no"; then
4081   AC_MSG_CHECKING(for Berkeley db.h)
4082   for header in "db/db.h" "db.h"; do
4083     AC_TRY_COMPILE([
4084 #include <stdlib.h>
4085 #if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1)
4086 #ifdef HAVE_INTTYPES_H
4087 #define __BIT_TYPES_DEFINED__
4088 #include <inttypes.h>
4089 typedef uint8_t  u_int8_t;
4090 typedef uint16_t u_int16_t;
4091 typedef uint32_t u_int32_t;
4092 #ifdef WE_DONT_NEED_QUADS
4093 typedef uint64_t u_int64_t;
4094 #endif
4095 #endif
4096 #endif
4097 #include <$header>
4098 ],[], db_h_file="$header"; break)
4099   done
4100   if test -z "$db_h_file"
4101   then AC_MSG_RESULT(no); with_database_berkdb=no
4102   else AC_MSG_RESULT($db_h_file)
4103   fi
4104
4105   if test "$with_database_berkdb" != "no"; then
4106     AC_MSG_CHECKING(for Berkeley DB version)
4107     AC_EGREP_CPP(yes,
4108 [#include <$db_h_file>
4109 #if DB_VERSION_MAJOR > 1
4110 yes
4111 #endif
4112 ], [AC_MSG_RESULT(2); dbfunc=db_open], [AC_MSG_RESULT(1); dbfunc=dbopen])
4113     AC_CHECK_FUNC($dbfunc,     with_database_berkdb=yes need_libdb=no, [
4114     AC_CHECK_LIB(db, $dbfunc,  with_database_berkdb=yes need_libdb=yes)])
4115   fi
4116
4117   if test "$with_database_berkdb" = "yes"; then
4118     AC_DEFINE_UNQUOTED(DB_H_FILE, "$db_h_file")
4119     AC_DEFINE(HAVE_BERKELEY_DB)
4120     test "$need_libdb" = "yes" && XE_PREPEND(-ldb, LIBS)
4121   else with_database_berkdb=no
4122   fi
4123 fi
4124
4125 if test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
4126      != "no no no"; then
4127   AC_DEFINE(HAVE_DATABASE)
4128   XE_ADD_OBJS(database.o)
4129 fi
4130
4131 dnl Socks support
4132 if test "$with_socks" = "yes"; then
4133   AC_CHECK_LIB(socks, SOCKSinit)
4134   test -n "$ac_cv_lib_socks_SOCKSinit" && AC_DEFINE(HAVE_SOCKS)
4135 fi
4136
4137 dnl Usage tracking (undocumented and likely unused option)
4138 if test "$usage_tracking" = "yes"; then
4139   AC_DEFINE(USAGE_TRACKING)
4140   XE_PREPEND(-Bstatic -lut -Bdynamic, LIBS)
4141 fi
4142
4143 dnl autodetect dll support
4144 if test "$with_modules" != "no"; then
4145   AC_CHECKING(for module support)
4146
4147   dnl Check for MS-Windows
4148   if test "$with_msw" = "yes"; then
4149     have_dl=yes;
4150   else
4151     dnl Find headers and libraries
4152     AC_CHECK_HEADER(dlfcn.h, [
4153       AC_CHECK_LIB(dl, dlopen, [ have_dl=yes libdl=dl], [
4154       AC_CHECK_LIB(c,  dlopen, [ have_dl=yes ])])])
4155     if test -n "$have_dl"; then
4156       AC_DEFINE(HAVE_DLOPEN)
4157     else
4158       AC_CHECK_LIB(dld, shl_load, [
4159         libdl=dld have_dl=yes;
4160         AC_DEFINE(HAVE_SHL_LOAD)], [
4161         AC_CHECK_LIB(dld, dld_init, [
4162         libdl=dld have_dl=yes;
4163         AC_DEFINE(HAVE_DLD_INIT)])])
4164     fi
4165   fi dnl end !MS-Windows
4166
4167   if test -n "$have_dl"; then
4168     dnl XE_SHLIB_STUFF (in aclocal.m4) defines $can_build_shared
4169     XE_SHLIB_STUFF
4170   fi
4171
4172   if test "$can_build_shared" = "yes"; then
4173     AC_DEFINE(HAVE_SHLIB)
4174     XE_ADD_OBJS(sysdll.o emodules.o)
4175     XE_APPEND(src, INSTALL_ARCH_DEP_SUBDIR)
4176     test -n "$libdl" && XE_PREPEND(-l${libdl}, LIBS)
4177     AC_CHECK_FUNCS(dlerror _dlerror)
4178     with_modules=yes
4179   else
4180     if test "$with_modules" = "yes"; then
4181       XE_DIE("Required module support cannot be provided.")
4182     else
4183       AC_MSG_WARN("Module support cannot be provided.")
4184     fi
4185     with_modules=no
4186   fi
4187 fi
4188
4189 dnl Unfortunately, just because we can link doesn't mean we can run.
4190 dnl One of the above link tests may have succeeded but caused resulting
4191 dnl executables to fail to run.  Also any tests using AC_TRY_RUN will
4192 dnl have reported incorrect results.
4193 AC_TRY_RUN([int main(int c,char *v[]){return 0;}],[:],[
4194   echo ""
4195   echo "*** PANIC *** The C compiler can no longer build working executables."
4196   echo "*** PANIC *** Please examine the tail of config.log for runtime errors."
4197   echo "*** PANIC *** The most likely reason for this problem is that configure"
4198   echo "*** PANIC *** links with shared libraries, but those libraries cannot be"
4199   echo "*** PANIC *** found at run time."
4200   echo "*** PANIC ***"
4201   echo "*** PANIC *** On a Linux system, edit /etc/ld.so.conf and re-run ldconfig."
4202   echo "*** PANIC *** On other systems, try telling configure where to find the"
4203   echo "*** PANIC *** shared libraries using the --site-runtime-libraries option"
4204   echo "*** PANIC ***"
4205   echo "*** PANIC *** Another way to shoot yourself in the foot is to specify"
4206   echo "*** PANIC *** --with-FEATURE when FEATURE is not actually installed"
4207   echo "*** PANIC *** on your system.  Don't do that."
4208   exit 1])
4209
4210 dnl Process support
4211 if test "$win32_processes" = "yes"; then
4212   XE_ADD_OBJS(process-nt.o)
4213 else
4214   AC_DEFINE(HAVE_UNIX_PROCESSES)
4215   XE_ADD_OBJS(process-unix.o)
4216 fi
4217
4218 dnl --------------------------------
4219 dnl Compute SUBST-itutable variables
4220 dnl --------------------------------
4221
4222 dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM)
4223 dnl Use XE_SPACE instead of plain assignment statements to remove extraneous blanks
4224 XE_SPACE(CFLAGS, $CFLAGS)
4225 XE_SPACE(extra_objs, $extra_objs)
4226 XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system)
4227 XE_SPACE(c_switch_window_system, $c_switch_x_site $X_CFLAGS)
4228 XE_SPACE(c_switch_all, $c_switch_general $c_switch_window_system)
4229 XE_SPACE(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
4230 XE_SPACE(ld_switch_window_system, $ld_switch_x_site)
4231 XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system)
4232 XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
4233 XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $X_PRE_LIBS)
4234 XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general)
4235
4236 dnl Compute lists of Makefiles and subdirs
4237 AC_SUBST(SRC_SUBDIR_DEPS)
4238 XE_APPEND(src, MAKE_SUBDIR)
4239 internal_makefile_list="Makefile.in"
4240 SUBDIR_MAKEFILES=''
4241 test -d lock || mkdir lock
4242 for dir in $MAKE_SUBDIR; do
4243   case "$dir" in */* ) dnl Implement mkdir -p
4244     ( for d in `echo $dir | sed 's:/: :g'` ; do
4245         test -d "$d" || mkdir "$d"; cd "$d"
4246       done ) ;;
4247    * ) test -d "$dir" || mkdir "$dir" ;;
4248   esac
4249   XE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile $dir/GNUmakefile)
4250   XE_SPACE(internal_makefile_list, $internal_makefile_list $dir/Makefile.in)
4251 done
4252 AC_SUBST(INSTALL_ARCH_DEP_SUBDIR)
4253 AC_SUBST(MAKE_SUBDIR)
4254 AC_SUBST(SUBDIR_MAKEFILES)
4255
4256 dnl Make s&m symlinks in the src directory, for config.h
4257 for dir in src/s src/m; do
4258   if test ! -d "$dir" ; then
4259     echo Making symbolic link to "$srcdir/$dir"
4260     ${LN_S} "$srcdir/$dir" "$dir"
4261   fi
4262 done
4263
4264 if test "$extra_verbose" = "yes"; then
4265   echo ""
4266   PRINT_VAR(extra_objs
4267    c_switch_general  c_switch_window_system  c_switch_all
4268   ld_switch_general ld_switch_window_system ld_switch_all
4269     ld_libs_general   ld_libs_window_system   ld_libs_all)
4270   echo ""
4271 fi
4272
4273 dnl ----------------------------------------------
4274 dnl Create some auxiliary files for developers.
4275 dnl ----------------------------------------------
4276
4277 dnl Create a .gdbinit useful for debugging XEmacs
4278 if test -f "$srcdir/src/.gdbinit" -a ! -f "src/.gdbinit"; then
4279   test "$extra_verbose" = "yes" && echo "creating src/.gdbinit"
4280   echo "source $srcdir/src/.gdbinit" > "src/.gdbinit"
4281 fi
4282
4283 dnl Create a .dbxrc useful for debugging XEmacs
4284 if test -f "$srcdir/src/.dbxrc" -a ! -f "src/.dbxrc"; then
4285   test "$extra_verbose" = "yes" && echo "creating src/.dbxrc"
4286   echo ". $srcdir/src/.dbxrc" > "src/.dbxrc"
4287 fi
4288
4289 dnl Create a useful TAGS file
4290 if test -f "$srcdir/TAGS" -a ! -f "TAGS"; then
4291   test "$extra_verbose" = "yes" && echo "creating TAGS"
4292   echo "\f
4293 $srcdir/TAGS,include" > "TAGS"
4294 fi
4295
4296 dnl Create top level .sbinit for Sun compilers
4297 if test "$__SUNPRO_C" = "yes"; then
4298   test "$extra_verbose" = "yes" && echo "creating .sbinit"
4299   ( echo "# For use with Sun WorkShop's Source browser."
4300     echo "# See sbquery(1) and sbinit(4) for more information"
4301     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
4302   ) > .sbinit
4303 fi
4304
4305 dnl There are no more compile tests; remove the core they created.
4306 rm -f core
4307
4308 dnl ----------------------------------------------
4309 dnl Substitute into Makefile, config.h and paths.h
4310 dnl ----------------------------------------------
4311
4312 dnl what sort of things to edit into Makefile, config.h and paths.h
4313 dnl configuration here uncanonicalized to avoid exceeding size limits.
4314
4315 AC_SUBST(PROGNAME)
4316 AC_SUBST(version)
4317 AC_SUBST(configuration)
4318 AC_SUBST(canonical)
4319 AC_SUBST(inststaticdir)
4320 AC_SUBST(instvardir)
4321 AC_SUBST(srcdir)
4322 AC_SUBST(bindir)
4323 AC_SUBST(datadir)
4324 AC_SUBST(pkgdir)
4325 AC_SUBST(statedir)
4326 AC_SUBST(libdir)
4327 AC_SUBST(mandir)
4328
4329 AC_SUBST(prefix)
4330 AC_SUBST(PREFIX_USER_DEFINED)
4331 dnl Yo, Stephen Bourne!  I want to marry you!
4332 PREFIX=$prefix
4333 while true; do
4334   case "$PREFIX" in
4335     *\$* ) eval "PREFIX=$PREFIX" ;;
4336     *) break ;;
4337   esac
4338 done
4339 AC_SUBST(PREFIX)
4340
4341 AC_SUBST(exec_prefix)
4342 AC_SUBST(EXEC_PREFIX_USER_DEFINED)
4343 EXEC_PREFIX=$exec_prefix
4344 while true; do
4345   case "$EXEC_PREFIX" in
4346     *\$* ) eval "EXEC_PREFIX=$EXEC_PREFIX" ;;
4347     *) break ;;
4348   esac
4349 done
4350 AC_SUBST(EXEC_PREFIX)
4351
4352 AC_SUBST(infodir)
4353 AC_SUBST(INFODIR_USER_DEFINED)
4354 INFODIR=$infodir
4355 while true; do
4356   case "$INFODIR" in
4357     *\$* ) eval "INFODIR=$INFODIR" ;;
4358     *) break ;;
4359   esac
4360 done
4361 AC_SUBST(INFODIR)
4362
4363 AC_SUBST(infopath)
4364 AC_SUBST(INFOPATH_USER_DEFINED)
4365 INFOPATH=$infopath
4366 while true; do
4367   case "$INFOPATH" in
4368     *\$* ) eval "INFOPATH=$INFOPATH" ;;
4369     *) break ;;
4370   esac
4371 done
4372 AC_SUBST(INFOPATH)
4373
4374 AC_SUBST(package_path)
4375 AC_SUBST(PACKAGE_PATH_USER_DEFINED)
4376 PACKAGE_PATH=$package_path
4377 while true; do
4378   case "$PACKAGE_PATH" in
4379     *\$* ) eval "PACKAGE_PATH=$PACKAGE_PATH" ;;
4380     *) break ;;
4381   esac
4382 done
4383 AC_SUBST(PACKAGE_PATH)
4384
4385 AC_SUBST(lispdir)
4386 AC_SUBST(LISPDIR_USER_DEFINED)
4387 LISPDIR=$lispdir
4388 while true; do
4389   case "$LISPDIR" in
4390     *\$* ) eval "LISPDIR=$LISPDIR" ;;
4391     *) break ;;
4392   esac
4393 done
4394 AC_SUBST(LISPDIR)
4395
4396 AC_SUBST(moduledir)
4397 AC_SUBST(MODULEDIR_USER_DEFINED)
4398 MODULEDIR=$moduledir
4399 while true; do
4400   case "$MODULEDIR" in
4401     *\$* ) eval "MODULEDIR=$MODULEDIR" ;;
4402     *) break ;;
4403   esac
4404 done
4405 AC_SUBST(MODULEDIR)
4406
4407 AC_SUBST(sitelispdir)
4408 AC_SUBST(SITELISPDIR_USER_DEFINED)
4409 SITELISPDIR=$sitelispdir
4410 while true; do
4411   case "$SITELISPDIR" in
4412     *\$* ) eval "SITELISPDIR=$SITELISPDIR" ;;
4413     *) break ;;
4414   esac
4415 done
4416 AC_SUBST(SITELISPDIR)
4417
4418 AC_SUBST(sitemoduledir)
4419 AC_SUBST(SITEMODULEDIR_USER_DEFINED)
4420 SITEMODULEDIR=$sitemoduledir
4421 while true; do
4422   case "$SITEMODULEDIR" in
4423     *\$* ) eval "SITEMODULEDIR=$SITEMODULEDIR" ;;
4424     *) break ;;
4425   esac
4426 done
4427 AC_SUBST(SITEMODULEDIR)
4428
4429 AC_SUBST(etcdir)
4430 AC_SUBST(ETCDIR_USER_DEFINED)
4431 ETCDIR=$etcdir
4432 while true; do
4433   case "$ETCDIR" in
4434     *\$* ) eval "ETCDIR=$ETCDIR" ;;
4435     *) break ;;
4436   esac
4437 done
4438 AC_SUBST(ETCDIR)
4439
4440 AC_SUBST(docdir)
4441 AC_SUBST(DOCDIR_USER_DEFINED)
4442 DOCDIR=$docdir
4443 while true; do
4444   case "$DOCDIR" in
4445     *\$* ) eval "DOCDIR=$DOCDIR" ;;
4446     *) break ;;
4447   esac
4448 done
4449 AC_SUBST(DOCDIR)
4450
4451 AC_SUBST(archlibdir)
4452 AC_SUBST(ARCHLIBDIR_USER_DEFINED)
4453 ARCHLIBDIR=$archlibdir
4454 while true; do
4455   case "$ARCHLIBDIR" in
4456     *\$* ) eval "ARCHLIBDIR=$ARCHLIBDIR" ;;
4457     *) break ;;
4458   esac
4459 done
4460 AC_SUBST(ARCHLIBDIR)
4461
4462 AC_SUBST(docdir)
4463 AC_SUBST(bitmapdir)
4464 AC_SUBST(extra_objs)
4465
4466 dnl The following flags combine all the information from:
4467 dnl - command line options (user always gets priority)
4468 dnl - user environment variables
4469 dnl - determined by configure
4470 dnl - the s&m header files (required for ellcc)
4471 AC_SUBST(machfile)
4472 AC_SUBST(opsysfile)
4473 AC_SUBST(c_switch_general)
4474 AC_SUBST(c_switch_window_system)
4475 AC_SUBST(c_switch_all)
4476 AC_SUBST(ld_switch_general)
4477 AC_SUBST(ld_switch_window_system)
4478 AC_SUBST(ld_switch_all)
4479 AC_SUBST(ld_libs_general)
4480 AC_SUBST(ld_libs_window_system)
4481 AC_SUBST(ld_libs_all)
4482 AC_SUBST(CFLAGS)
4483 AC_SUBST(CPPFLAGS)
4484 AC_SUBST(LDFLAGS)
4485 RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
4486 AC_SUBST(RECURSIVE_MAKE)
4487
4488 AC_SUBST(native_sound_lib)
4489 AC_SUBST(sound_cflags)
4490 AC_SUBST(RANLIB)
4491 AC_SUBST(dynodump_arch)
4492
4493 dnl Preliminary support for using a different compiler for xemacs itself.
4494 dnl Useful for building XEmacs with a C++ or 64-bit compiler.
4495 : ${XEMACS_CC:=$CC}
4496 AC_SUBST(XEMACS_CC)
4497
4498 dnl The default is yes
4499 if test "$with_prefix" = "yes"; then
4500   AC_DEFINE(PREFIX_USER_DEFINED)
4501 fi
4502
4503 dnl The default is no
4504 if test "$with_site_lisp" = "no"; then
4505   AC_DEFINE(INHIBIT_SITE_LISP)
4506 fi
4507 dnl The default is yes
4508 if test "$with_site_modules" = "no"; then
4509   AC_DEFINE(INHIBIT_SITE_MODULES)
4510 fi
4511
4512 XE_SPACE(ac_configure_args, $ac_configure_args)
4513 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$configuration")
4514 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "$ac_configure_args")
4515
4516 dnl Following are deprecated
4517
4518 null_string=""
4519 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE,     $null_string)
4520 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, $null_string)
4521 AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,      $null_string)
4522 AC_DEFINE_UNQUOTED(LD_SWITCH_SITE,       $null_string)
4523 AC_DEFINE_UNQUOTED(C_SWITCH_SITE,        $null_string)
4524
4525 dnl Note: as a general rule, *only* define things here that are not
4526 dnl autodetected.  For things that are autodetected, define them
4527 dnl at the point where the autodetection occurs or would occur,
4528 dnl so that the user gets immediate feedback on the results of the
4529 dnl autodetection.
4530
4531 if   test "$GNU_MALLOC"         = "yes"; then AC_DEFINE(GNU_MALLOC)
4532 elif test "$with_system_malloc" = "yes"; then AC_DEFINE(USE_SYSTEM_MALLOC)
4533 elif test "$with_debug_malloc"  = "yes"; then AC_DEFINE(USE_DEBUG_MALLOC)
4534                                               AC_DEFINE(USE_SYSTEM_MALLOC)
4535 fi
4536 test "$with_i18n3"         = "yes" && AC_DEFINE(I18N3)
4537 test "$GCC"                = "yes" && AC_DEFINE(USE_GCC)
4538 test "$external_widget"    = "yes" && AC_DEFINE(EXTERNAL_WIDGET)
4539 test "$quick_build"        = "yes" && AC_DEFINE(QUICK_BUILD)
4540 test "$with_purify"        = "yes" && AC_DEFINE(PURIFY)
4541 test "$with_quantify"      = "yes" && AC_DEFINE(QUANTIFY)
4542 test "$with_pop"           = "yes" && AC_DEFINE(MAIL_USE_POP)
4543 test "$with_kerberos"      = "yes" && AC_DEFINE(KERBEROS)
4544 test "$with_hesiod"        = "yes" && AC_DEFINE(HESIOD)
4545 test "$use_union_type"     = "yes" && AC_DEFINE(USE_UNION_TYPE)
4546 test "$pdump"              = "yes" && AC_DEFINE(PDUMP)
4547
4548 dnl -------------------------------
4549 dnl Report on what we decided to do
4550 dnl -------------------------------
4551
4552 (
4553 dnl /etc/osversion is on SONY NEWS-OS
4554 if test -f /etc/osversion; then dnl SONY NEWS-OS
4555   echo "osversion: `cat /etc/osversion`"
4556 else
4557   echo "uname -a: `uname -a`"
4558 fi
4559 echo ""
4560 echo "$0 $quoted_arguments"
4561 ) > Installation
4562
4563 if test ! -z ${emacs_beta_version} ; then
4564   if test -z "${emacs_is_beta}" ; then
4565         xemacs_betaname=".${emacs_beta_version}"
4566   else
4567         xemacs_betaname="-b${emacs_beta_version}"
4568   fi
4569 else
4570   xemacs_betaname=""
4571 fi
4572
4573 dnl Start stdout redirection to '| tee -a Installation'
4574 (
4575 echo "
4576
4577 XEmacs ${emacs_major_version}.${emacs_minor_version}${xemacs_betaname} \"$xemacs_codename\" configured for \`$canonical'.
4578 "
4579 echo "
4580 Compilation / Installation:"
4581 echo "  Source code location:              $srcdir"
4582 echo "  Installation prefix:               $prefix"
4583 if test -n "$site_includes"; then
4584   echo "  Additional header files:           $site_includes"
4585 fi
4586 if test -n "$site_libraries"; then
4587   echo "  Additional libraries:              $site_libraries"
4588 fi
4589 if test -n "$site_prefixes"; then
4590   echo "  Additional prefixes:               $site_prefixes"
4591 fi
4592 if test -n "$runpath"; then
4593   echo "  Runtime library search path:       $runpath"
4594 fi
4595
4596 if test -n "$opsysfile"
4597 then echo "  Operating system description file: \`$opsysfile'"
4598 else echo "  Not using any operating system description file"
4599 fi
4600 if test -n "$machfile"
4601 then echo "  Machine description file:          \`$machfile'"
4602 else echo "  Not using any machine description file"
4603 fi
4604
4605 echo "  Compiler:                          $CC $CFLAGS"
4606 echo "  Relocating allocator for buffers:  $rel_alloc"
4607 echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
4608
4609 echo "
4610 Window System:"
4611 if test "$with_msw" = "yes"; then
4612   echo "  Compiling in support for the Microsoft window system."
4613 fi
4614 if test "$with_x11" = "yes"; then
4615   echo "  Compiling in support for the X window system:"
4616   echo "    - X Windows headers location:                 $x_includes"
4617   echo "    - X Windows libraries location:               $x_libraries"
4618   if test "$with_xauth" != yes; then
4619     echo "    - Xau (X authority) not available."
4620   fi
4621   if test "$with_xmu" != yes; then
4622     echo "    - Xmu library not available; substituting equivalent routines."
4623   fi
4624   if test "$with_wmcommand" != no; then
4625     echo "    - Handling WM_COMMAND properly."
4626   fi
4627 fi
4628 if test "$need_athena" = "yes"; then
4629   echo "  Compiling in support for the Athena widget set:"
4630   echo "    - Athena headers location:                    $athena_h_path"
4631   echo "    - Athena library to link:                     $athena_lib"
4632 fi
4633 case "$with_menubars" in
4634   lucid ) echo "  Using Lucid menubars." ;;
4635   motif ) echo "  Using Motif menubars."
4636           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
4637           echo "             We recommend using the Lucid menubar instead."
4638           echo "             Re-run configure with --with-menubars='lucid'." ;;
4639     msw ) echo "  Using MS-Windows menubars." ;;
4640 esac
4641 case "$with_scrollbars" in
4642   lucid  ) echo "  Using Lucid scrollbars."      ;;
4643   motif  ) echo "  Using Motif scrollbars."      ;;
4644   athena ) echo "  Using Athena scrollbars."     ;;
4645      msw ) echo "  Using MS-Windows scrollbars." ;;
4646 esac
4647 case "$with_dialogs" in
4648   motif  ) echo "  Using Motif dialog boxes."
4649            if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
4650              echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
4651              echo "             We recommend using the Athena dialog boxes instead."
4652              echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
4653              echo "             Read the PROBLEMS file for more information."
4654            fi; fi ;;
4655   athena ) echo "  Using Athena dialog boxes."     ;;
4656      msw ) echo "  Using MS-Windows dialog boxes." ;;
4657 esac
4658 case "$with_widgets" in
4659   motif  ) echo "  Using Motif native widgets."      ;;
4660   athena ) echo "  Using Athena native widgets."     ;;
4661      msw ) echo "  Using MS-Windows native widgets." ;;
4662 esac
4663 if test "$with_dragndrop" = yes; then
4664   echo "  Compiling in support for Drag'n'Drop (EXPERIMENTAL)."
4665   echo "    -  Drag'n'Drop prototype:                             $dragndrop_proto."
4666 fi
4667
4668 echo "
4669 TTY:"
4670 test "$with_ncurses" = yes && echo "  Compiling in support for ncurses."
4671 test "$with_gpm" = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
4672
4673 echo "
4674 Images:"
4675 test "$with_gif" = yes && echo "  Compiling in support for GIF  images (builtin)."
4676 if test "$with_xpm" = yes; then
4677   echo "  Compiling in support for XPM  images."
4678 elif test "$with_x11" = yes; then
4679   echo "  WARNING: -----------------------------------------------------------"
4680   echo "  WARNING: Compiling without XPM image support."
4681   if test "$xpm_problem" != ""; then
4682     echo "  Reason: $xpm_problem"
4683   fi
4684   echo "  WARNING: You should strongly consider installing XPM."
4685   echo "  WARNING: Otherwise toolbars and other graphics will look suboptimal."
4686   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
4687   echo "  WARNING: -----------------------------------------------------------"
4688 fi
4689 if test "$with_png" = yes; then
4690   echo "  Compiling in support for PNG  images."
4691 elif test "$window_system" != "none"; then
4692   echo "  WARNING: -----------------------------------------------------------"
4693   echo "  WARNING: Compiling without PNG image support."
4694   if test "$png_problem" != ""; then
4695     echo "  Reason: $png_problem"
4696   fi
4697   echo "  WARNING: You should strongly consider installing the PNG libraries."
4698   echo "  WARNING: Otherwise certain images and glyphs may not display."
4699   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
4700   echo "  WARNING: -----------------------------------------------------------"
4701 fi
4702 test "$with_jpeg" = yes && echo "  Compiling in support for JPEG images."
4703 test "$with_tiff" = yes && echo "  Compiling in support for TIFF images."
4704 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
4705
4706 echo "
4707 Sound:"
4708 test "$with_native_sound" = yes && echo "  Compiling in support for sound (native)."
4709 test "$with_nas_sound" = yes && echo "  Compiling in support for NAS (network audio system)."
4710 test "$old_nas" = yes && echo "    - NAS library lacks error trapping; will play synchronously."
4711 test "$with_esd_sound" = yes && echo "  Compiling in support for ESD (Enlightened Sound Daemon)."
4712
4713 echo "
4714 Databases:"
4715 test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley database."
4716 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
4717 test "$with_database_gdbm"   = yes && echo "  Compiling in support for GNU DBM."
4718 test "$with_ldap" = yes && echo "  Compiling in support for LDAP."
4719 if test "$with_postgresql" = yes; then
4720   echo "  Compiling in support for PostgreSQL."
4721   echo "    - Using PostgreSQL header file:  $libpq_fe_h_file"
4722   test "$with_postgresqlv7" = yes && echo "    - Using PostgreSQL V7 bindings."
4723 fi
4724
4725 echo "
4726 Internationalization:"
4727 test "$with_mule" = yes && echo "  Compiling in support for Mule (multi-lingual Emacs)."
4728 test "$with_file_coding" = yes && echo "  Compiling in support for file coding."
4729 test "$with_xim" != no && echo "  Compiling in support for XIM (X11R5+ I18N input method)."
4730 test "$with_xim" = motif && echo "    - Using Motif to provide XIM support."
4731 test "$with_xim" = xlib && echo "    - Using raw Xlib to provide XIM support."
4732 test "$with_xfs" = yes && echo "    - Using XFontSet to provide bilingual menubar."
4733 test "$with_canna" = yes && echo "  Compiling in support for Canna on Mule."
4734 if test "$with_wnn" = yes; then
4735   echo "  Compiling in support for the WNN input method on Mule."
4736   test "$with_wnn6" = yes && echo "    - Using WNN version 6."
4737 fi
4738 test "$with_i18n3" = yes && echo "  Compiling in support for I18N level 3 (doesn't currently work)."
4739
4740 echo "
4741 Mail:"
4742 test "$with_pop" = yes && echo "  Compiling in support for POP mail retrieval."
4743 test "$with_kerberos" = yes && echo "  Compiling in support for Kerberos POP authentication."
4744 test "$with_hesiod" = yes && echo "  Compiling in support for Hesiod POP server access."
4745 test -n "$mail_locking" && echo "  Compiling in support for \"$mail_locking\" mail spool file locking method."
4746
4747 echo "
4748 Other Features:"
4749 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
4750 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
4751 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
4752 test "$with_dnet" = yes && echo "  Compiling in support for DNET."
4753 test "$with_modules" = "yes" && echo "  Compiling in support for dynamic shared object modules."
4754 test "$use_union_type" = yes && echo "  Using the union type for Lisp_Objects."
4755 test "$pdump" = yes && echo "  Using the new portable dumper."
4756 test "$debug" = yes && echo "  Compiling in support for extra debugging code."
4757 test "$usage_tracking" = yes && echo "  Compiling in support for active usage tracking (Sun internal)."
4758 if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc $error_check_glyphs" \
4759   != "no no no no no no"; then
4760   echo "  WARNING: ---------------------------------------------------------"
4761   echo "  WARNING: Compiling in support for runtime error checking."
4762   echo "  WARNING: XEmacs will run noticeably more slowly as a result."
4763   echo "  WARNING: Error checking is on by default for XEmacs beta releases."
4764   echo "  WARNING: ---------------------------------------------------------"
4765 fi
4766 echo ""
4767 ) | tee -a Installation
4768 dnl echo "The above configure report is appended to \"Installation\" file."
4769 echo ""
4770
4771 dnl -----------------------------------
4772 dnl Now generate config.h and Makefiles
4773 dnl -----------------------------------
4774 dnl This has to be called in order for this variable to get into config.status
4775 AC_SUBST(internal_makefile_list)
4776 # Remove any trailing slashes in these variables.
4777 test -n "$prefix" &&
4778   prefix=`echo '' "$prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4779 test -n "$exec_prefix" &&
4780   exec_prefix=`echo '' "$exec_prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4781
4782 dnl Build Makefile.in's from Makefile.in.in's
4783 dnl except ./Makefile from $srcdir/Makefile.in
4784
4785 for file in $internal_makefile_list; do
4786   test "$file" = src/Makefile.in && \
4787     file="src/Makefile.in:src/Makefile.in.in:src/depend"
4788   XE_APPEND($file, ac_output_files)
4789 done
4790 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
4791 test "$with_modules" = "yes" && XE_APPEND(lib-src/ellcc.h, ac_output_files)
4792
4793 AC_OUTPUT($ac_output_files,
4794 [for dir in . $MAKE_SUBDIR; do
4795   (
4796     cd $dir
4797     rm -f junk.c
4798     < Makefile.in \
4799       sed -e '/^# Generated/d' \
4800           -e 's%/\*\*/#.*%%' \
4801           -e 's/^ *# */#/' \
4802 dnl Delete Makefile.in.in comment lines
4803           -e '/^##/d' \
4804 dnl Pass through CPP directives unchanged
4805           -e '/^#/ {
4806 p
4807 d
4808 }'        \
4809 dnl Quote other lines to protect from CPP substitution
4810           -e '/./ {
4811 s/\([[\"]]\)/\\\1/g
4812 s/^/"/
4813 s/$/"/
4814 }'  > junk.c;
4815
4816 dnl Create a GNUmakefile and Makefile from Makefile.in.
4817
4818 changequote(<<,>>)dnl
4819 dnl CPP_MAKEFILE(CPPFLAGS,filename)
4820 define(<<CPP_MAKEFILE>>,
4821 echo creating $dir/<<$2>>
4822 $CPP -I. -I${top_srcdir}/src <<$1>> junk.c \
4823 dnl Delete line directives inserted by $CPP
4824   | sed -e 's/^\#.*//'          \
4825 dnl Delete spurious blanks inserted by $CPP
4826         -e 's/^[ TAB][ TAB]*$//'\
4827         -e 's/^ /TAB/'          \
4828 dnl Delete blank lines
4829         -e '/^[ \f]*$/d' \
4830 dnl Restore lines quoted above to original contents.
4831         -e '/^\"/ {
4832         s/\\\([\"]\)/\1/g
4833         s/^[ TAB]*\"//
4834         s/\"[ TAB]*$//
4835 }' > Makefile.new
4836     chmod 444 Makefile.new
4837     mv -f Makefile.new <<$2>>
4838 )dnl CPP_MAKEFILE
4839
4840     CPP_MAKEFILE(,Makefile)
4841     CPP_MAKEFILE(-DUSE_GNU_MAKE,GNUmakefile)
4842 changequote([,])dnl
4843     rm -f junk.c
4844   )
4845 done
4846
4847 dnl Append AC_DEFINE information to lib-src/config.values
4848 dnl (AC_SUBST information is already there (see config.values.sh).
4849 sed < config.status >> lib-src/config.values \
4850   -e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \
4851   -e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \
4852   -e 's/^\([[^ ]]*\) $/\1 ""/' \
4853   -e 's/ 1$/ t/'
4854
4855 ],
4856 [CPP="$CPP"
4857  top_srcdir="$srcdir"
4858  MAKE_SUBDIR="$MAKE_SUBDIR"
4859 ])dnl