XEmacs 21.2.38 (Peisino)
[chise/xemacs-chise.git.1] / configure.in
1 dnl Define our own header notice with own copyright
2 define([AC_INIT_NOTICE],
3 [#### Configuration script for XEmacs.  Largely divergent from FSF.
4 #### Guess values for system-dependent variables and create Makefiles.
5 #### Generated automatically using autoconf version] AC_ACVERSION [
6 #### Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
7 #### Copyright (C) 1993-1995 Board of Trustees, University of Illinois.
8 #### Copyright (C) 1996, 1997 Sun Microsystems, Inc.
9 #### Copyright (C) 1995, 1996 Ben Wing.
10 #### Copyright (C) 1998, 1999 J. Kean Johnston.
11
12 ### Don't edit this script!
13 ### This script was automatically generated by the `autoconf' program
14 ### from the file `./configure.in'.
15 ### To rebuild it, execute the command
16 ###     autoconf
17 ### in the this directory.  You must have autoconf version 2.13 or later.
18
19 ### This file is part of XEmacs.
20
21 ### XEmacs is free software; you can redistribute it and/or modify it
22 ### under the terms of the GNU General Public License as published by
23 ### the Free Software Foundation; either version 2, or (at your
24 ### option) any later version.
25
26 ### XEmacs is distributed in the hope that it will be useful, but
27 ### WITHOUT ANY WARRANTY; without even the implied warranty of
28 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
29 ### General Public License for more details.
30
31 ### You should have received a copy of the GNU General Public License
32 ### along with XEmacs; see the file COPYING.  If not, write to the Free
33 ### Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
34 ### 02111-1307, USA.
35
36 ### For usage, run `./configure --help'
37 ### For more detailed information on building and installing XEmacs,
38 ### read the file `INSTALL'.
39 ###
40 ### If configure succeeds, it leaves its status in config.status.
41 ### A log of configuration tests can be found in config.log.
42 ### If configure fails after disturbing the status quo,
43 ###     config.status is removed.
44 ])
45
46 dnl Since XEmacs has configuration requirements that autoconf cannot
47 dnl meet, this file is an unholy marriage of custom-baked
48 dnl configuration code and autoconf macros.
49
50 dnl We use the m4 quoting characters [ ] (as established by the
51 dnl autoconf system), so quote them like this: [[foo]]
52
53 AC_PREREQ(2.13)dnl
54 dnl Redefine some standard autoconf macros
55 dnl here is how XEmacs is different:
56 dnl - no cache file
57 dnl - non-standard options
58 dnl - suport for extra-verbosity
59 dnl - ordinary libs are handled separately from X libs (might be a mistake)
60 dnl - various random kludges (e.g. -with-dnet=no)
61
62 dnl PRINT_VAR(var var ...)  prints values of shell variables
63 define([PRINT_VAR],[for var in patsubst([$1],[[
64 ]+],[ ]); do eval "echo \"$var = '\$$var'\""; done])
65
66 dnl Disable cache files:
67 dnl This is controversial, but I am convinced this is the right way to go,
68 dnl at least by default.  Otherwise there are too many surprises.
69 define([AC_CACHE_LOAD], )dnl
70 define([AC_CACHE_SAVE], )dnl
71 define([AC_CACHE_VAL], [
72 $2
73 ])dnl
74
75 dnl Redefine AC_TRY_RUN_NATIVE to not throw away stderr while running
76 dnl AC_TRY_RUN_NATIVE(PROGRAM, [ACTION-IF-TRUE [, ACTION-IF-FALSE]])
77 define([AC_TRY_RUN_NATIVE],
78 [cat > conftest.$ac_ext <<EOF
79 [#]line __oline__ "configure"
80 #include "confdefs.h"
81 [$1]
82 EOF
83 if AC_TRY_EVAL(ac_link) && test -s conftest && (./conftest; exit $?) 2>&AC_FD_CC
84 then
85 dnl Do not remove the temporary files here, so they can be examined.
86   ifelse([$2], , :, [$2])
87 else
88   conftest_rc="$?"
89   echo "configure: failed program was:" >&AC_FD_CC
90   cat conftest.$ac_ext >&AC_FD_CC
91 ifelse([$3], , , [  rm -fr conftest*
92   $3
93 ])dnl
94 fi
95 rm -fr conftest*])dnl AC_TRY_RUN_NATIVE
96
97
98 dnl Avoid spurious cross-compiling warnings from AC_TRY_RUN
99 dnl XEmacs is unlikely to ever cross-compile
100 define([AC_TRY_RUN],[AC_TRY_RUN_NATIVE([$1], [$2], [$3])])dnl
101
102 dnl Redefine AC_DEFINE* to provide more output if extra_verbose
103 dnl Set VARIABLE to VALUE, verbatim, or 1.
104 dnl AC_DEFINE(VARIABLE [, VALUE])
105 define([AC_DEFINE],
106 [{ test "$extra_verbose" = "yes" && cat << \EOF
107     Defining $1[]ifelse($#, 2, [ = $2],)
108 EOF
109 cat >> confdefs.h <<\EOF
110 [#define] $1 ifelse($#, 2, [$2], 1)
111 EOF
112 }
113 ])dnl AC_DEFINE
114
115 define([AC_DEFINE_UNQUOTED],
116 [{ test "$extra_verbose" = "yes" && cat << EOF
117     Defining $1[]ifelse($#, 2, [ = $2],)
118 EOF
119 cat >> confdefs.h <<EOF
120 [#define] $1 ifelse($#, 2, [$2], 1)
121 EOF
122 }
123 ])dnl AC_DEFINE_UNQUOTED
124
125 dnl redefine AC_CHECK_LIB in accordance with our own value of ac_link
126 dnl Add in extra kludgy check to support with_dnet=no
127 dnl Add in extra LDFLAGS arg, which PRECEDE libs
128 dnl Support --with-dnet=no
129
130 dnl AC_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
131 dnl             [, OTHER-LIBRARIES] [, LDFLAGS]]]])
132 define([AC_CHECK_LIB],
133 [ifelse([$1],dnet, [if test "$with_dnet" = "no" ; then
134 ac_cv_lib_dnet_dnet_ntoa=no
135 ifelse([$4], , , [$4]
136 )dnl
137 else
138 ])]
139 AC_CHECK_LIB_ORIG_HACKED([$1],[$2],[$3],[$4],[$5], [$6])
140 [ifelse([$1],dnet,[fi
141 ])]dnl
142 )dnl AC_CHECK_LIB
143
144 define([AC_CHECK_LIB_ORIG_HACKED],
145 [ifelse([$5],,AC_MSG_CHECKING([for $2 in -l$1]),
146 xe_msg_checking="for [$2] in -l[$1]"
147 test -n "[$5]" && xe_msg_checking="$xe_msg_checking using extra libs [$5]"
148 AC_MSG_CHECKING("$xe_msg_checking"))
149 dnl Use a cache variable name containing both the library and function name,
150 dnl because the test really is for library $1 defining function $2, not
151 dnl just for library $1.  Separate tests with the same $1 and different $2s
152 dnl may have different results.
153 ac_lib_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
154 AC_CACHE_VAL(ac_cv_lib_$ac_lib_var,
155 [xe_check_libs="$6 -l$1 $5"
156 AC_TRY_LINK(dnl
157 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
158 [/* Override any gcc2 internal prototype to avoid an error.  */
159 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
160 extern "C"
161 #endif
162 ])dnl
163 [/* We use char because int might match the return type of a gcc2
164     builtin and then its argument prototype would still apply.  */
165 char $2();
166 ]),
167             [$2()],
168             eval "ac_cv_lib_$ac_lib_var=yes",
169             eval "ac_cv_lib_$ac_lib_var=no")
170 xe_check_libs=""
171 ])dnl
172 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
173   AC_MSG_RESULT(yes)
174   ifelse([$3], ,
175 [changequote(, )dnl
176   ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
177     -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
178 changequote([, ])dnl
179   AC_DEFINE_UNQUOTED($ac_tr_lib)
180   XE_PREPEND([-l$1], LIBS)
181 ], [$3])
182 else
183   AC_MSG_RESULT(no)
184 ifelse([$4], , , [$4
185 ])dnl
186 fi
187 ])dnl AC_CHECK_LIB_ORIG_HACKED
188
189
190 dnl AC_LANG_C()
191 define([AC_LANG_C],
192 [define([AC_LANG], [C])dnl
193 ac_ext=c
194 dnl CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
195 dnl ac_cpp='$CPP $CPPFLAGS'
196 dnl ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&AC_FD_CC'
197 dnl ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC'
198 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
199 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
200 xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
201 ac_cpp='$CPP '"$xe_cppflags"
202 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&AC_FD_CC'
203 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&AC_FD_CC'
204 cross_compiling=no
205 ]) dnl AC_LANG_C
206
207 dnl The construct foo=`echo $w1 $w2 $w3` fails on some systems if $w1 = -e or -n
208 dnl So we use the following instead.
209 dnl XE_SPACE(var, words)
210 define([XE_SPACE],[
211 T=""
212 for W in $2; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
213 $1="$T"
214 ])dnl XE_SPACE
215
216 dnl XE_ADD_OBJS(foo.o ...)
217 define([XE_ADD_OBJS],
218 [extra_objs="$extra_objs [$1]" && dnl
219  if test "$extra_verbose" = "yes"; then
220    echo "    xemacs will be linked with \"[$1]\""
221  fi])dnl XE_ADD_OBJS
222
223 dnl XE_APPEND(value, varname)
224 define([XE_APPEND],
225 [[$2]="$[$2] [$1]" && dnl
226  if test "$extra_verbose" = "yes"; then echo "    Appending \"[$1]\" to \$[$2]"; fi])
227
228 dnl XE_PREPEND(value, varname)
229 define([XE_PREPEND],
230 [[$2]="[$1] $[$2]" && dnl
231  if test "$extra_verbose" = "yes"; then echo "    Prepending \"[$1]\" to \$[$2]"; fi])
232
233 dnl XE_DIE(message)
234 define([XE_DIE], [{ echo "Error:" $1 >&2; exit 1; }])
235
236 dnl XE_STRIP_4TH_COMPONENT(var)
237 dnl Changes i986-pc-linux-gnu to i986-pc-linux, as God (not RMS) intended.
238 define([XE_STRIP_4TH_COMPONENT],
239 [$1=`echo "$$1" | sed '[s/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/]'`])
240
241 dnl Initialize some variables set by options.
242 dnl The variables have the same names as the options, with
243 dnl dashes changed to underlines.
244
245 define([AC_INIT_PARSE_ARGS],[
246
247 dnl Get sane consistent behavior from various shells
248 dnl Avoid losing with weird user CDPATHs
249
250 if test -n "$ZSH_VERSION"; then
251   dnl zsh's Bourne shell emulation options
252   setopt NO_BAD_PATTERN NO_BANG_HIST NO_BG_NICE NO_EQUALS NO_FUNCTION_ARGZERO
253   setopt GLOB_SUBST NO_HUP INTERACTIVE_COMMENTS KSH_ARRAYS NO_MULTIOS NO_NOMATCH
254   setopt RM_STAR_SILENT POSIX_BUILTINS SH_FILE_EXPANSION SH_GLOB SH_OPTION_LETTERS
255   setopt SH_WORD_SPLIT BSD_ECHO IGNORE_BRACES
256   dnl zsh-3.1-beta drops core on the following
257   dnl unset CDPATH
258   if test -n "$CDPATH"; then CDPATH="."; export CDPATH; fi
259 elif test -n "$BASH_VERSION"; then
260   dnl Use Posix mode with bash
261   set -o posix
262   unset CDPATH
263 else
264   if test -n "$CDPATH"; then CDPATH="."; export CDPATH; fi
265 fi
266
267 dnl Initialize some variables set by options.
268 dnl The variables have the same names as the options, with
269 dnl dashes changed to underlines.
270 exec_prefix=NONE
271 host=NONE
272 no_create=
273 nonopt=NONE
274 no_recursion=
275 prefix=NONE
276 program_prefix=NONE
277 program_suffix=NONE
278 program_transform_name=s,x,x,
279 silent=
280 site=
281 srcdir=
282 target=NONE
283 verbose=
284 x_includes=NONE
285 x_libraries=NONE
286
287 dnl Installation directory options.
288 dnl These are left unexpanded so users can "make install exec_prefix=/foo"
289 dnl and all the variables that are supposed to be based on exec_prefix
290 dnl by default will actually change.
291 dnl Use braces instead of parens because sh, perl, etc. also accept them.
292 dnl If you change these, you need to synchronize with the settings of the
293 dnl various ..._USER_DEFINED variables further down.
294 bindir='${exec_prefix}/bin'
295 sbindir='${exec_prefix}/sbin'
296 libexecdir='${exec_prefix}/libexec'
297 datadir='${prefix}/share'
298 sysconfdir='${prefix}/etc'
299 sharedstatedir='${prefix}/com'
300 localstatedir='${prefix}/var'
301 libdir='${{exec_prefix}}/lib'
302 includedir='${prefix}/include'
303 oldincludedir='/usr/include'
304 infodir='${prefix}/info'
305 mandir='${prefix}/man'
306
307 dnl Initialize some other variables.
308 subdirs=
309 MFLAGS= MAKEFLAGS=
310 SHELL=${CONFIG_SHELL-/bin/sh}
311 dnl Maximum number of lines to put in a shell here document.
312 ac_max_here_lines=12
313 ])dnl AC_INIT_PARSE_ARGS
314
315 AC_INIT(src/lisp.h)dnl
316 AC_CONFIG_HEADER(src/config.h lwlib/config.h)
317 dnl Remove any more than one leading "." element from the path name.
318 dnl If we do not remove them, then another "./" will be prepended to
319 dnl the file name each time we use config.status, and the program name
320 dnl will get larger and larger.  This would not be a problem, except
321 dnl that since progname gets recorded in all the Makefiles this script
322 dnl produces, move-if-change thinks they're different when they're
323 dnl not.
324 dnl
325 dnl It would be nice if we could put the ./ in a \( \) group and then
326 dnl apply the * operator to that, so we remove as many leading './././'s
327 dnl as are present, but some seds (like Ultrix's sed) don't allow you to
328 dnl apply * to a \( \) group.  Bleah.
329 progname="`echo $0 | sed 's:^\./\./:\./:'`"
330
331 dnl -----------------------------
332 dnl Establish some default values
333 dnl -----------------------------
334
335 XE_APPEND(lib-src, MAKE_SUBDIR)
336 XE_APPEND(lib-src, INSTALL_ARCH_DEP_SUBDIR)
337
338 prefix='/usr/local'
339 exec_prefix='${prefix}'
340 bindir='${exec_prefix}/bin'
341 dnl FSF 19.29 changes to:
342 dnl datadir='${prefix}/share'
343 dnl sharedstatedir='${prefix}/com'
344 dnl libexecdir='${exec_prefix}/libexec'
345 datadir='${prefix}/lib'
346 statedir='${prefix}/lib'
347 libdir='${exec_prefix}/lib'
348 mandir='${prefix}/man/man1'
349 inststaticdir='${PROGNAME}'
350 instvardir='${PROGNAME}-${version}'
351 infodir='${datadir}/${instvardir}/info'
352 infopath=''
353 install_pp=''
354 lispdir='${datadir}/${instvardir}/lisp'
355 moduledir='${datadir}/${instvardir}/${configuration}/modules'
356 sitelispdir='${datadir}/${inststaticdir}/site-lisp'
357 sitemoduledir='${datadir}/${inststaticdir}/site-modules'
358 pkgdir='${datadir}/${instvardir}/lisp'
359 package_path=''
360 etcdir='${datadir}/${instvardir}/etc'
361 archlibdir='${datadir}/${instvardir}/${configuration}'
362 docdir='${archlibdir}'
363 with_prefix='yes'
364 with_site_lisp='no'
365 with_site_modules='yes'
366 with_menubars=''
367 with_scrollbars=''
368 with_widgets=''
369 with_dialogs=''
370 with_file_coding=''
371 cpp='' cppflags='' libs='' ldflags=''
372 dynamic=''
373 with_x11=''
374 with_msw=''
375 rel_alloc='default'
376 with_system_malloc='default'
377 with_dlmalloc='default'
378 native_sound_lib=''
379 dnl use_assertions should be 'yes' by default.  Too many people in this
380 dnl world have core dumps turned off by default or \"cannot find where the
381 dnl core file went\".  At least we should get some useful output ...
382 use_assertions="yes"
383 dnl the following is set to yes or no later.
384 with_toolbars=""
385 with_tty=""
386 use_union_type="no"
387 with_dnet=""
388 pdump="no"
389 dnl dragndrop is still experimental.  When it is stable, comment out the following line:
390 with_dragndrop="no"
391
392 dnl ------------------
393 dnl Options Processing
394 dnl ------------------
395
396 define([USAGE_ERROR],
397 [(echo "$progname: Usage error:"
398 echo " " $1
399 echo "  Use \`$progname --help' to show usage.") >&2 && exit 1])
400
401 dnl Record all the arguments, so we can save them in config.status.
402 arguments="$@"
403
404 dnl Shell Magic: Quote the quoted arguments in ARGUMENTS.  At a later date,
405 dnl in order to get the arguments back in $@, we have to do an
406 dnl 'eval set x "$quoted_arguments"; shift'
407 dnl # We use sed to turn embedded ' into '"'"'.  I truly hate sh quoting.
408 quoted_sed_magic=s/"'"/"'"'"'"'"'"'"'"/g
409 quoted_arguments=
410 for i in "$@"; do
411    case "$i" in
412    -no-create | --no-create | --no-creat | --no-crea | --no-cre \
413    | --no-cr | --no-c) ;;
414    -no-recursion | --no-recursion | --no-recursio | --no-recursi \
415    | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
416    *)
417    quoted_i="`echo '' $i | sed -e 's:^ ::' -e $quoted_sed_magic`"
418    quoted_arguments="$quoted_arguments '$quoted_i'" ;;
419    esac
420 done
421
422 dnl Do not use shift -- that destroys the argument list, which autoconf needs
423 dnl to produce config.status.  It turns out that "set - $arguments" does not
424 dnl work portably.
425 dnl However, it also turns out that many shells cannot expand ${10} at all.
426 dnl So using an index variable does not work either.  It is possible to use
427 dnl some shell magic to make 'set x "$arguments"; shift' work portably.
428 while test $# != 0; do
429   arg="$1"; shift
430   case "$arg" in
431     --no-create|--no-recursion) ;;
432     dnl Anything starting with a hyphen we assume is an option.
433     -* )
434       dnl Separate the switch name from the value it is being given.
435       case "$arg" in
436         -*=*)
437           opt=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*\([[^=]]*\)=.*$:\1:'`
438           val=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*[[^=]]*=\(.*\)$:\1:'`
439           valomitted=no
440         ;;
441            dnl special case these strings since echo may silently eat them:
442            dnl --help ) opt=help val=yes valomitted=yes ;;
443            dnl --version ) opt=version val=yes valomitted=yes ;;
444            dnl -e ) opt=e val=yes valomitted=yes ;;
445            dnl -E ) opt=E val=yes valomitted=yes ;;
446            dnl -n ) opt=n val=yes valomitted=yes ;;
447         -*)
448            dnl If FOO is a boolean argument, --FOO is equivalent to
449            dnl --FOO=yes.  Otherwise, the value comes from the next
450            dnl argument - see below.
451           opt=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*\(.*\)$:\1:'`
452           val="yes" valomitted=yes
453         ;;
454       esac
455
456       dnl translate "-" in option string to "_"
457       optname="$opt"
458       opt="`echo '' $opt | sed -e 's:^ ::' | tr - _`"
459
460       dnl Support --without-FOO as a synonym for --with-FOO=no
461       case "${valomitted}-${opt}" in yes-without_* )
462         opt=`echo $opt | sed 's/without/with/'`
463         valomitted="no" val="no" ;;
464       esac
465
466       dnl Process the option.
467       case "$opt" in
468
469       dnl Process (many) boolean options
470         with_site_lisp  | \
471         with_prefix     | \
472         with_site_modules | \
473         with_x          | \
474         with_x11        | \
475         with_msw        | \
476         with_gcc        | \
477         dynamic         | \
478         with_ncurses    | \
479         with_dnet       | \
480         with_socks      | \
481         with_dragndrop  | \
482         with_cde        | \
483         with_offix      | \
484         with_gpm        | \
485         with_xpm        | \
486         with_xface      | \
487         with_gif        | \
488         with_jpeg       | \
489         with_png        | \
490         with_tiff       | \
491         with_wmcommand  | \
492         with_xmu        | \
493         with_purify     | \
494         with_quantify   | \
495         with_toolbars   | \
496         with_tty        | \
497         with_xfs        | \
498         with_i18n3      | \
499         with_mule       | \
500         with_file_coding| \
501         with_canna      | \
502         with_wnn        | \
503         with_wnn6       | \
504         with_workshop   | \
505         with_sparcworks | \
506         with_tooltalk   | \
507         with_ldap       | \
508         with_postgresql | \
509         with_pop        | \
510         with_kerberos   | \
511         with_hesiod     | \
512         with_dnet       | \
513         with_infodock   | \
514         external_widget | \
515         verbose         | \
516         extra_verbose   | \
517         usage_tracking  | \
518         use_union_type  | \
519         pdump           | \
520         debug           | \
521         use_assertions  | \
522         memory_usage_stats | \
523         with_clash_detection | \
524         with_modules | \
525         quick_build )
526           dnl Make sure the value given was either "yes" or "no".
527           case "$val" in
528             y | ye | yes )      val=yes ;;
529             n | no )            val=no  ;;
530             * ) USAGE_ERROR("The \`--$optname' option requires a boolean value: \`yes' or \`no'.") ;;
531           esac
532           eval "$opt=\"$val\"" ;;
533
534
535         dnl Options that take a user-supplied value, as in --x-includes=/usr/X11R6/include
536         dnl The cache-file option is ignored (for compatibility with other configures)
537         srcdir          | \
538         compiler        | \
539         cflags          | \
540         cpp             | \
541         cppflags        | \
542         libs            | \
543         ldflags         | \
544         cache_file      | \
545         native_sound_lib| \
546         site_lisp       | \
547         x_includes      | \
548         x_libraries     | \
549         site_includes   | \
550         site_libraries  | \
551         site_prefixes   | \
552         site_runtime_libraries )
553           dnl If the value was omitted, get it from the next argument.
554           if test "$valomitted" = "yes" ; then
555             dnl Get the next argument from the argument list, if there is one.
556             if test "$#" = 0 ; then
557               USAGE_ERROR("The \`--$optname' option requires a value.");
558             fi
559             val="$1"; shift
560           fi
561           eval "$opt=\"$val\""
562         ;;
563
564         dnl Options that take "yes", "no", or "default" values
565         rel_alloc | \
566         with_dlmalloc | \
567         with_debug_malloc  | use_debug_malloc | \
568         with_system_malloc | use_system_malloc )
569           case "$val" in
570             y | ye | yes )      val=yes ;;
571             n | no )            val=no  ;;
572             d | de | def | defa | defau | defaul | default ) val=default ;;
573             * ) USAGE_ERROR(["The \`--$optname' option requires one of these values:
574   \`yes', \`no', or \`default'."]) ;;
575           esac
576           case "$opt" in use_* ) opt="`echo $opt | sed s/use/with/`" ;; esac
577           eval "$opt=\"$val\""
578         ;;
579
580         dnl Has the user requested database support?
581         "with_database" )
582           with_database_berkdb=no
583           with_database_dbm=no
584           with_database_gdbm=no
585           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
586             case "$x" in
587               no ) ;;
588               b | be | ber | berk | berkd | berkdb )       with_database_berkdb=yes ;;
589               d | db | dbm )                               with_database_dbm=yes    ;;
590               g | gn | gnu | gnud | gnudb | gnudbm | gdbm) with_database_gdbm=yes   ;;
591               * ) USAGE_ERROR(["The \`--$optname' option value
592   must be either \`no' or a comma-separated list
593   of one or more of \`berkdb' and either \`dbm' or \`gnudbm'."]) ;;
594             esac
595           done
596           if test "$with_database_dbm"  = "yes" -a \
597                   "$with_database_gdbm" = "yes"; then
598           USAGE_ERROR("Only one of \`dbm' and \`gnudbm' may be specified
599   with the \`--$optname' option.")
600           fi
601         ;;
602
603         dnl Has the user requested sound support?
604         "with_sound" )
605         dnl values is a subset of all,native,nas,esd
606         dnl or their negatives: none,nonative,nonas,noesd
607           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
608             case "$x" in
609               dnl all and none are only permitted as the first in the list.
610               n | no | non | none ) new_sdefault=no ;;
611               a | al | all | both ) new_sdefault=yes ;;
612
613               native )       with_native_sound=yes ;;
614               nonative )     with_native_sound=no ;;
615
616               nas )          with_nas_sound=yes ;;
617               nonas )        with_nas_sound=no ;;
618
619               esd )          with_esd_sound=yes ;;
620               noesd )        with_esd_sound=no ;;
621
622               * ) bogus_sound=yes ;;
623             esac
624             if test "$bogus_sound" -o \
625                  \( -n "$new_sdefault" -a -n "$sound_notfirst" \) ; then
626                 types="\`all', \`none', \`(no)native', \`no(nas)', \`(no)esd'."
627                 USAGE_ERROR(["Valid types for the \`--$optname' option are:
628   $types.
629 The default is to autodetect all sound support."])
630             elif test -n "$new_sdefault" ; then
631                 with_native_sound=$new_sdefault
632                 with_nas_sound=$new_sdefault
633                 with_esd_sound=$new_sdefault
634                 new_sdefault=   # reset this
635             fi
636             sound_notfirst=true
637           done
638         ;;
639
640         dnl Has the user specified a preferred Athena widget set?
641         dnl This bit expands any alias names out for us...
642         "with_athena" )
643           case "$val" in
644             xa | xaw )                    val=xaw    ;;
645             3 | 3d | xaw3d )              val=3d     ;;
646             dnl No `n' for next, someone may try `no'
647             ne | nex | next | naxtaw)     val=next   ;;
648             dnl Have not tested the next two...
649             9 | 95 | xaw95 )              val=95     ;;
650             xp | xpm | xawxpm )           val=xpm    ;;
651             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
652   \`xaw', \`3d', \`next', \`95', or \`xpm'."]) ;;
653           esac
654           eval "$opt=\"$val\""
655         ;;
656
657         dnl Has the user requested XIM support?
658         "with_xim" )
659           case "$val" in
660             y | ye | yes )                val=yes   ;;
661             n | no | non | none )         val=no    ;;
662             x | xl | xli | xlib )         val=xlib  ;;
663             m | mo | mot | moti | motif ) val=motif ;;
664             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
665   \`motif', \`xlib', \`yes', or \`no'."]) ;;
666           esac
667           eval "$opt=\"$val\""
668         ;;
669
670         dnl Mail locking specification
671         "mail_locking" )
672           case "$val" in
673             lockf )     val=lockf ;;
674             flock )     val=flock ;;
675             file | dot ) val=file  ;;
676             locking )   val=locking  ;;
677             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
678   \`lockf', \`flock', \`file', \`locking', or \`mmdf'."]) ;;
679           esac
680           eval "$opt=\"$val\""
681         ;;
682
683         dnl Has the user requested error-checking?
684         "error_checking" )
685           dnl value can be all, none, and/or a list of categories to check.
686           dnl Example: --error-checking=all,noextents,nobufpos
687           dnl Example: --error-checking=none,malloc,gc
688
689           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
690             case "$x" in
691               dnl all and none are only permitted as the first in the list.
692               n | no | non | none ) new_default=no ;;
693               a | al | all )        new_default=yes ;;
694
695               extents )       error_check_extents=yes ;;
696               noextents )     error_check_extents=no ;;
697
698               typecheck )     error_check_typecheck=yes ;;
699               notypecheck )   error_check_typecheck=no ;;
700
701               bufpos )        error_check_bufpos=yes ;;
702               nobufpos )      error_check_bufpos=no ;;
703
704               gc )            error_check_gc=yes ;;
705               nogc )          error_check_gc=no ;;
706
707               malloc )        error_check_malloc=yes ;;
708               nomalloc )      error_check_malloc=no ;;
709
710               byte_code )     error_check_byte_code=yes ;;
711               nobyte_code )   error_check_byte_code=no ;;
712
713               glyphs )     error_check_glyphs=yes ;;
714               noglyphs )   error_check_glyphs=no ;;
715
716               * ) bogus_error_check=yes ;;
717             esac
718             if test "$bogus_error_check" -o \
719                  \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then
720                 if test "$error_check_default" = yes ; then
721                   types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', \`nomalloc', \`noglyphs' and \`nobyte-code'."
722                 else
723                   types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', \`malloc', \`glyphs' and \`byte-code'."
724                 fi
725                 USAGE_ERROR(["Valid types for the \`--$optname' option are:
726   $types."])
727             elif test -n "$new_default" ; then
728                 error_check_extents=$new_default
729                 error_check_typecheck=$new_default
730                 error_check_bufpos=$new_default
731                 error_check_gc=$new_default
732                 error_check_malloc=$new_default
733                 error_check_byte_code=$new_default
734                 error_check_glyphs=$new_default
735                 new_default=    # reset this
736             fi
737             echeck_notfirst=true
738           done
739         ;;
740
741         dnl Has the user tried to tell us where the X files are?
742         dnl I think these are dopey, but no less than three alpha
743         dnl testers, at large sites, have said they have their X files
744         dnl installed in odd places.
745
746         dnl Has the user specified one of the path options?
747         prefix | exec_prefix | bindir | datadir | statedir | libdir | \
748         mandir | infodir | infopath | lispdir | etcdir | pkgdir | \
749         archlibdir | docdir | package_path )
750            dnl If the value was omitted, get it from the next argument.
751            if test "$valomitted" = "yes"; then
752              if test "$#" = 0; then
753                  USAGE_ERROR("The \`--$optname' option requires a value.");
754              fi
755              val="$1"; shift
756            fi
757            eval "$opt=\"$val\""
758
759            dnl You need to synchronize this with the way the
760            dnl default values are built.
761            case "$opt" in
762              dnl prefix is taken care of by --with-prefix
763              exec_prefix ) AC_DEFINE(EXEC_PREFIX_USER_DEFINED) ;;
764              lispdir ) AC_DEFINE(LISPDIR_USER_DEFINED) ;;
765              sitelispdir ) AC_DEFINE(SITELISPDIR_USER_DEFINED) ;;
766              moduledir ) AC_DEFINE(MODULEDIR_USER_DEFINED) ;;
767              etcdir  )  AC_DEFINE(ETCDIR_USER_DEFINED) ;;
768              infodir ) AC_DEFINE(INFODIR_USER_DEFINED) ;;
769              infopath ) AC_DEFINE(INFOPATH_USER_DEFINED) ;;
770              package_path ) AC_DEFINE(PACKAGE_PATH_USER_DEFINED) ;;
771              datadir )
772                 AC_DEFINE(INFODIR_USER_DEFINED)
773                 AC_DEFINE(LISPDIR_USER_DEFINED)
774             AC_DEFINE(MODULEDIR_USER_DEFINED)
775                 AC_DEFINE(ETCDIR_USER_DEFINED) ;;
776              docdir ) AC_DEFINE(DOCDIR_USER_DEFINED) ;;
777              exec_prefix | libdir | archlibdir ) AC_DEFINE(ARCHLIBDIR_USER_DEFINED) ;;
778            esac
779         ;;
780
781         dnl --no-create added by autoconf for use by config.status
782         "no_create" ) ;;
783
784         dnl Has the user asked for some help?
785         "usage" | "help" ) ${PAGER-more} ${srcdir}/configure.usage; exit 0 ;;
786
787         dnl Has the user specified the toolkit(s) to use for GUI elements?
788         "with_menubars"   | \
789         "with_scrollbars" | \
790         "with_dialogs"    | \
791         "with_widgets" )
792           case "$val" in
793             l | lu | luc | luci | lucid )               val=lucid  ;;
794             m | mo | mot | moti | motif )               val=motif  ;;
795             a | at | ath | athe | athen | athena )      val=athena ;;
796             n | no | non | none )                       val=no     ;;
797             y | ye | yes )                              val=yes    ;;
798             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
799   \`lucid', \`motif', \`athena', \`yes', or \`no'."]) ;;
800           esac
801           eval "$opt=\"$val\""
802         ;;
803
804         dnl Obsolete legacy argument?  Warn, but otherwise ignore.
805         "use_minimal_tagbits" | \
806         "use_indexed_lrecord_implementation" | \
807         "run_in_place"  | \
808         "const_is_losing" | \
809         "with_gnu_make" )
810           AC_MSG_WARN([Obsolete option \`--$optname' ignored.])
811         ;;
812
813         dnl Unrecognized option?  No mercy for user errors.
814         * ) USAGE_ERROR("Unrecognized option: $arg") ;;
815
816       esac
817     ;;
818
819     dnl Assume anything with multiple hyphens is a configuration name.
820     *-*-*) configuration="$arg" ;;
821
822     dnl Unrecognized argument?  No mercy for user errors.
823     *) USAGE_ERROR("Unrecognized argument: $arg") ;;
824
825   esac
826 done
827
828 dnl -------------------------
829 dnl Finish options processing
830 dnl -------------------------
831
832 dnl Several options are equivalent to, and override, environment variables.
833 test -n "$cpp"      && CPP="$cpp"
834 test -n "$cppflags" && CPPFLAGS="$cppflags"
835 test -n "$libs"     && LIBS="$libs"
836 test -n "$ldflags"  && LDFLAGS="$ldflags"
837
838 dnl Get the arguments back.  See the diatribe on Shell Magic above.
839 eval set x "$quoted_arguments"; shift
840
841 dnl --extra-verbose implies --verbose
842 test "$extra_verbose" = "yes" && verbose=yes
843
844 dnl with_x is an obsolete synonym for with_x11
845 test -n "$with_x" && with_x11="$with_x"
846
847 dnl --with-quantify or --with-purify imply --use-system-malloc
848 if test "$with_purify" = "yes" -o "$with_quantify" = "yes"; then
849   test "$with_system_malloc" = "default" && with_system_malloc=yes
850 fi
851
852 dnl XE_CHECK_FEATURE_DEPENDENCY(feature1, feature2)
853 define([XE_CHECK_FEATURE_DEPENDENCY],
854 [if test "$with_$1 $with_$2" = "yes no"; then
855   USAGE_ERROR("--with-$1 requires --with-$2")
856 elif test "$with_$2" = "no" ; then with_$1=no
857 elif test "$with_$1" = "yes"; then with_$2=yes
858 fi
859 ])
860
861 dnl CDE requires tooltalk
862 XE_CHECK_FEATURE_DEPENDENCY(cde, tooltalk)
863
864 dnl Find the source directory.
865 case "$srcdir" in
866
867   dnl If srcdir is not specified, see if  "." or ".." might work.
868   "" )
869     for dir in "`echo $0 | sed 's|//|/|' | sed 's|/[[^/]]*$||'`" "." ".." ; do
870       if test -f "$dir/src/lisp.h" -a \
871               -f "$dir/lisp/version.el" ; then
872         srcdir="$dir"
873         break
874       fi
875     done
876     if test -z "$srcdir" ; then
877       USAGE_ERROR(["Neither the current directory nor its parent seem to
878   contain the XEmacs sources.  If you do not want to build XEmacs in its
879   source tree, you should run \`$progname' in the directory in which
880   you wish to build XEmacs, using the \`--srcdir' option to say where the
881   sources may be found."])
882     fi
883   ;;
884
885   dnl Otherwise, check if the directory they specified is okay.
886   * )
887     if test ! -f "$srcdir/src/lisp.h" -o \
888             ! -f "$srcdir/lisp/version.el" ; then
889       USAGE_ERROR(["The directory specified with the \`--srcdir' option,
890   \`$srcdir', doesn't seem to contain the XEmacs sources.  You should
891   either run the \`$progname' script at the top of the XEmacs source
892   tree, or use the \`--srcdir' option to specify the XEmacs source directory."])
893     fi
894   ;;
895 esac
896
897 dnl ###########################################################################
898 if test -z "$configuration"; then
899   dnl Guess the configuration
900   configuration=`${CONFIG_SHELL-/bin/sh} $srcdir/config.guess`
901   if test -z "$configuration"; then
902     USAGE_ERROR(["XEmacs has not been ported to this host type.
903 Try explicitly specifying the CONFIGURATION when rerunning configure."])
904   fi
905 fi
906
907 AC_PROG_LN_S
908
909 dnl Make symlinks for etc, lisp, and info directories while the path
910 dnl is still relative.  We do not symlink lock because someone may
911 dnl have stuck the source on a read-only partition.  Instead we
912 dnl create it as an actual directory later on if it does not already
913 dnl exist.
914 for dir in lisp etc man info tests; do
915   if test ! -d "$dir" ; then
916     echo Making symbolic link to "$srcdir/$dir"
917     ${LN_S} "$srcdir/$dir" "$dir"
918   fi
919 done
920
921 dnl Do our best to deal with automounter brokenness
922 dnl CANONICALIZE_PATH(varname)
923 define([CANONICALIZE_PATH],
924 [if test -d "/net"; then
925   if test -d "/tmp_mnt/net"; then tdir="tmp_mnt/net"; else tdir="tmp_mnt"; fi
926   $1=`echo "[$]$1" | \
927    sed -e "s|^${tdir}/|/net/|" -e "s|^/a/|/net/|" -e "s|^/amd/|/net/|"`
928 fi])dnl
929
930 dnl Calculate canonical name for blddir (i.e. current directory).
931 dnl PWD may already be the preferable absolute name for ".",
932 dnl but we can't trust it - it is sometimes inaccurate.
933 absolute_pwd="`pwd`";
934 if test -n "$PWD" -a "`cd $PWD && pwd`" = "$absolute_pwd"
935 then blddir="$PWD"
936 else blddir="$absolute_pwd"; CANONICALIZE_PATH(blddir)
937 fi
938 AC_SUBST(blddir)
939
940 dnl Make srcdir absolute, if not already.  It is important to
941 dnl avoid running the path through pwd unnecessary, since pwd can
942 dnl give you automounter prefixes, which can go away.
943 case "$srcdir" in
944   /* ) ;;
945   .  ) srcdir="$blddir" ;;
946   *  ) srcdir="`cd $srcdir && pwd`"; CANONICALIZE_PATH(srcdir) ;;
947 esac
948
949 dnl Check if the source directory already has a configured system in it.
950 if test `pwd` != `sh -c cd $srcdir && pwd`  \
951    && test -f "$srcdir/src/config.h"; then
952   (echo "$progname: WARNING: The directory tree \`$srcdir' is being used"
953    echo "   as a build directory right now; it has been configured in its own"
954    echo "   right.  To configure in another directory as well, you MUST"
955    echo "   use GNU make.  If you do not have GNU make, then you must"
956    echo "   now do \`make distclean' in $srcdir,"
957    echo "   and then run $progname again.") >&2
958   extrasub='/^VPATH[[    ]]*=/c\
959 vpath %.c $(srcdir)\
960 vpath %.h $(srcdir)\
961 vpath %.y $(srcdir)\
962 vpath %.l $(srcdir)\
963 vpath %.s $(srcdir)\
964 vpath %.in $(srcdir)'
965 fi
966
967 dnl ----------------------------------------
968 dnl Find out which version of XEmacs this is
969 dnl ----------------------------------------
970 . "$srcdir/version.sh" || exit 1;
971 dnl Must do the following first to determine verbosity for AC_DEFINE
972 if test -n "$emacs_is_beta"; then beta=yes; else beta=no; fi
973 : "${extra_verbose=$beta}"
974 version="${emacs_major_version}.${emacs_minor_version}"
975 AC_DEFINE_UNQUOTED(EMACS_MAJOR_VERSION, $emacs_major_version)
976 AC_DEFINE_UNQUOTED(EMACS_MINOR_VERSION, $emacs_minor_version)
977 if test -n "$emacs_beta_version" ; then
978   if test "$beta" = "yes"; then
979         version="${version}-b${emacs_beta_version}"
980         AC_DEFINE_UNQUOTED(EMACS_BETA_VERSION, $emacs_beta_version)
981   else
982         version="${version}.${emacs_beta_version}"
983         AC_DEFINE_UNQUOTED(EMACS_PATCH_LEVEL, $emacs_beta_version)
984   fi
985 fi
986 AC_DEFINE_UNQUOTED(XEMACS_CODENAME, "$xemacs_codename")
987 AC_DEFINE_UNQUOTED(EMACS_VERSION, "$version")
988
989 if test "$with_infodock" = "yes"; then
990   if test ! -f ../../ID-INSTALL; then
991     echo "Cannot build InfoDock without InfoDock sources"
992     with_infodock=no
993   fi
994 fi
995
996 if test "$with_infodock" = "yes"; then
997   dnl InfoDock version numbers.  XEmacs will use the same style of numbering
998   dnl after the release of XEmacs 21.0.
999   AC_DEFINE_UNQUOTED(INFODOCK_MAJOR_VERSION, $infodock_major_version)
1000   AC_DEFINE_UNQUOTED(INFODOCK_MINOR_VERSION, $infodock_minor_version)
1001   AC_DEFINE_UNQUOTED(INFODOCK_BUILD_VERSION, $infodock_build_version)
1002   version=${infodock_major_version}.${infodock_minor_version}.${infodock_build_version}
1003   PROGNAME=infodock
1004   CPPFLAGS="$CPPFLAGS -DINFODOCK"
1005 else
1006   PROGNAME=xemacs
1007 fi
1008
1009 AC_DEFINE_UNQUOTED(EMACS_PROGNAME, "$PROGNAME")
1010
1011 dnl ----------------------------------
1012 dnl Error checking and debugging flags
1013 dnl ----------------------------------
1014 dnl Error checking default to "yes" in beta versions, to "no" in releases.
1015 dnl Same goes for --debug and --extra-verbosity.
1016 if test -n "$emacs_is_beta"; then beta=yes; else beta=no; fi
1017 test "${error_check_extents=$beta}"   = yes && AC_DEFINE(ERROR_CHECK_EXTENTS)
1018 test "${error_check_typecheck=$beta}" = yes && AC_DEFINE(ERROR_CHECK_TYPECHECK)
1019 test "${error_check_bufpos=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_BUFPOS)
1020 test "${error_check_gc=$beta}"        = yes && AC_DEFINE(ERROR_CHECK_GC)
1021 test "${error_check_malloc=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_MALLOC)
1022 test "${error_check_byte_code=$beta}" = yes && AC_DEFINE(ERROR_CHECK_BYTE_CODE)
1023 test "${error_check_glyphs=$beta}" = yes && AC_DEFINE(ERROR_CHECK_GLYPHS)
1024 dnl debug=yes must be set when error checking is present.  This should be
1025 dnl fixed up.
1026 dnl debug implies other options
1027 if test "${debug:=$beta}" = "yes"; then
1028   use_assertions=yes memory_usage_stats=yes
1029   XE_ADD_OBJS(debug.o)
1030   XE_ADD_OBJS(tests.o)
1031   AC_DEFINE(DEBUG_XEMACS)
1032 fi
1033 test "$use_assertions"     = "yes" && AC_DEFINE(USE_ASSERTIONS)
1034 test "$memory_usage_stats" = "yes" && AC_DEFINE(MEMORY_USAGE_STATS)
1035
1036 dnl ------------------------------
1037 dnl Determine the s&m files to use
1038 dnl ------------------------------
1039 dnl Given the configuration name, set machfile and opsysfile to the
1040 dnl names of the m/*.h and s/*.h files we should use.
1041
1042 dnl Canonicalize the configuration name.
1043 AC_MSG_CHECKING("host system type")
1044 dnl allow -workshop suffix on configuration name
1045 internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'`
1046 canonical=`${CONFIG_SHELL-/bin/sh} $srcdir/config.sub "$internal_configuration"`
1047 XE_STRIP_4TH_COMPONENT(configuration)
1048 XE_STRIP_4TH_COMPONENT(canonical)
1049 AC_MSG_RESULT($configuration)
1050
1051 dnl If you add support for a new configuration, add code to this
1052 dnl switch statement to recognize your configuration name and select
1053 dnl the appropriate operating system and machine description files.
1054
1055 dnl You would hope that you could choose an m/*.h file pretty much
1056 dnl based on the machine portion of the configuration name, and an s-
1057 dnl file based on the operating system portion.  However, it turns out
1058 dnl that each m/*.h file is pretty manufacturer-specific - for
1059 dnl example, apollo.h, hp9000s300.h, mega68k, news.h, and tad68k are
1060 dnl all 68000 machines; mips.h, pmax.h, and news-risc are all MIPS
1061 dnl machines.  So we basically have to have a special case for each
1062 dnl configuration name.
1063
1064 dnl As far as handling version numbers on operating systems is
1065 dnl concerned, make sure things will fail in a fixable way.  If
1066 dnl /etc/MACHINES says nothing about version numbers, be
1067 dnl prepared to handle anything reasonably.  If version numbers
1068 dnl matter, be sure /etc/MACHINES says something about it.
1069
1070 dnl Eric Raymond says we should accept strings like "sysvr4" to mean
1071 dnl "System V Release 4"; he writes, "The old convention encouraged"
1072 dnl "confusion between `system' and `release' levels'."
1073
1074 machine='' opsys=''
1075
1076 dnl Straightforward machine determination
1077 case "$canonical" in
1078   sparc-*-*        ) machine=sparc ;;
1079   alpha*-*-*       ) machine=alpha ;;
1080   vax-*-*          ) machine=vax ;;
1081   mips-dec-*       ) machine=pmax ;;
1082   mips-sgi-irix6*  ) machine=iris6d ;;
1083   mips-sgi-*       ) machine=iris4d ;;
1084   mips*-linux      ) machine=mips ;;
1085   romp-ibm-*       ) machine=ibmrt ;;
1086   rs6000-ibm-aix*  ) machine=ibmrs6000 ;;
1087   powerpc-ibm-aix* ) machine=ibmrs6000 ;;
1088   powerpc*-*       ) machine=powerpc ;;
1089   hppa-*-*         ) machine=hp800 ;;
1090   m88k-dg-*        ) machine=aviion ;;
1091   m68*-sony-*      ) machine=news ;;
1092   mips-sony-*      ) machine=news-risc ;;
1093   clipper-*        ) machine=clipper ;;
1094   arm*             ) machine=arm ;;
1095   ns32k-*          ) machine=ns32000 ;;
1096 esac
1097
1098 dnl Straightforward OS determination
1099 case "$canonical" in
1100   *-*-linux*    ) opsys=linux ;;
1101   *-*-netbsd*   ) opsys=netbsd ;;
1102   *-*-openbsd*  ) opsys=openbsd ;;
1103   *-*-nextstep* ) opsys=nextstep ;;
1104   *-*-vms       ) opsys=vms ;;
1105
1106   dnl DEC OSF
1107   *-dec-osf1.3 | *-dec-osf2* ) opsys=decosf1-3 ;;
1108   *-dec-osf1.2 | *-dec-osf1* ) opsys=decosf1-2 ;;
1109   *-dec-osf3.[[2-9]]         ) opsys=decosf3-2 ;;
1110   *-dec-osf3*                ) opsys=decosf3-1 ;;
1111   *-dec-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   elf.h dnl
2341   cygwin/version.h dnl
2342   fcntl.h dnl
2343   inttypes.h dnl
2344   libgen.h dnl
2345   locale.h dnl
2346   mach/mach.h dnl
2347   sys/param.h dnl
2348   sys/pstat.h dnl
2349   sys/time.h dnl
2350   sys/timeb.h dnl
2351   sys/un.h dnl
2352   ulimit.h dnl
2353   unistd.h dnl
2354   utime.h dnl
2355 )
2356 AC_HEADER_SYS_WAIT
2357 AC_HEADER_STDC
2358 AC_HEADER_TIME
2359 AC_DECL_SYS_SIGLIST
2360
2361 dnl Some systems have utime.h but do not declare the struct anyplace.
2362 AC_MSG_CHECKING(for struct utimbuf)
2363 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2364 #include <sys/time.h>
2365 #include <time.h>
2366 #else
2367 #ifdef HAVE_SYS_TIME_H
2368 #include <sys/time.h>
2369 #else
2370 #include <time.h>
2371 #endif
2372 #endif
2373 #ifdef HAVE_UTIME_H
2374 #include <utime.h>
2375 #endif], [static struct utimbuf x; x.actime = x.modtime;],
2376   [AC_MSG_RESULT(yes)
2377    AC_DEFINE(HAVE_STRUCT_UTIMBUF)],
2378   AC_MSG_RESULT(no))
2379
2380 dnl checks for typedefs
2381 AC_TYPE_SIGNAL
2382 AC_TYPE_SIZE_T
2383 AC_TYPE_PID_T
2384 AC_TYPE_UID_T
2385 AC_TYPE_MODE_T
2386 AC_TYPE_OFF_T
2387 AC_CHECK_TYPE(ssize_t, int)
2388
2389 dnl check for Unix98 socklen_t
2390 AC_MSG_CHECKING(for socklen_t)
2391 AC_TRY_COMPILE([#include <sys/socket.h>
2392 socklen_t x;
2393 ],[],[AC_MSG_RESULT(yes)],[
2394 AC_TRY_COMPILE([#include <sys/socket.h>
2395 int accept (int, struct sockaddr *, size_t *);
2396 ],[],[
2397 AC_MSG_RESULT(size_t)
2398 AC_DEFINE(socklen_t,size_t)], [
2399 AC_MSG_RESULT(int)
2400 AC_DEFINE(socklen_t,int)])])
2401
2402 AC_MSG_CHECKING(for struct timeval)
2403 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2404 #include <sys/time.h>
2405 #include <time.h>
2406 #else
2407 #ifdef HAVE_SYS_TIME_H
2408 #include <sys/time.h>
2409 #else
2410 #include <time.h>
2411 #endif
2412 #endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
2413   [AC_MSG_RESULT(yes)
2414   HAVE_TIMEVAL=yes
2415   AC_DEFINE(HAVE_TIMEVAL)],
2416   [AC_MSG_RESULT(no)
2417    HAVE_TIMEVAL=no])
2418
2419 dnl checks for structure members
2420 AC_STRUCT_TM
2421 AC_STRUCT_TIMEZONE
2422
2423 dnl checks for compiler characteristics
2424 AC_C_CONST
2425
2426 dnl check for Make feature
2427 AC_PROG_MAKE_SET
2428
2429 dnl check byte order
2430 AC_C_BIGENDIAN
2431
2432 dnl define SIZEOF_TYPE
2433 AC_CHECK_SIZEOF(short)
2434 if test "$ac_cv_sizeof_short" = 0; then
2435   echo ""
2436   echo "*** PANIC *** Configure tests are not working - compiler is broken."
2437   echo "*** PANIC *** Please examine config.log for compilation errors."
2438   exit 1
2439 fi
2440 AC_CHECK_SIZEOF(int)
2441 AC_CHECK_SIZEOF(long)
2442 AC_CHECK_SIZEOF(long long)
2443 AC_CHECK_SIZEOF(void *)
2444
2445 dnl check for long file names
2446 AC_SYS_LONG_FILE_NAMES
2447
2448 dnl -lm is required by LISP_FLOAT_TYPE, among other things
2449 AC_CHECK_FUNC(sin, ,AC_CHECK_LIB(m, sin))
2450
2451 dnl Floating operation support is now unconditional
2452 AC_DEFINE(LISP_FLOAT_TYPE)
2453
2454 AC_TRY_LINK([#include <math.h>],
2455   [return atanh(1.0) + asinh(1.0) + acosh(1.0); ],
2456   AC_DEFINE(HAVE_INVERSE_HYPERBOLIC))
2457
2458 dnl Determine type of mail locking from configure args and s&m headers
2459 AC_CHECKING(type of mail spool file locking)
2460 AC_CHECK_FUNCS(lockf flock)
2461 dnl The mail_use_xxx variables are set according to the s&m headers.
2462 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
2463 test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
2464 test -z "$mail_locking" -a "$mail_use_locking" = "yes" && mail_locking=locking
2465 if   test -z "$mail_locking"; then
2466   case "$opsys" in cygwin* | mingw*)
2467     mail_locking=pop ;;
2468   esac
2469 fi
2470
2471 if   test "$mail_locking" = "lockf"; then AC_DEFINE(MAIL_LOCK_LOCKF)
2472 elif test "$mail_locking" = "flock"; then AC_DEFINE(MAIL_LOCK_FLOCK)
2473 elif test "$mail_locking" = "locking"; then AC_DEFINE(MAIL_LOCK_LOCKING)
2474 elif test "$mail_locking" = "pop"; then
2475   with_pop=yes
2476   mail_locking=
2477 else mail_locking="dot-locking"; AC_DEFINE(MAIL_LOCK_DOT)
2478 fi
2479 test "$mail_locking" = "lockf" -a "$ac_cv_func_lockf" != "yes" && \
2480   XE_DIE("lockf mail locking requested but not available.")
2481 test "$mail_locking" = "flock" -a "$ac_cv_func_flock" != "yes" && \
2482   XE_DIE("flock mail locking requested but not available.")
2483 test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \
2484   XE_DIE("locking mail locking requested but not available.")
2485
2486 case "$opsys" in decosf*)
2487   AC_CHECK_LIB(pthreads, cma_open)
2488   test "$ac_cv_lib_pthreads_cma_open" = "yes" && \
2489     c_switch_site="$c_switch_site -threads" ;;
2490 esac
2491
2492 AC_MSG_CHECKING(whether the -xildoff compiler flag is required)
2493 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
2494   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
2495     then AC_MSG_RESULT(no);
2496     else AC_MSG_RESULT(yes); XE_APPEND(-xildoff, ld_switch_site)
2497   fi
2498   else AC_MSG_RESULT(no)
2499 fi
2500
2501 dnl Link with "-z ignore" on Solaris if supported
2502 if test "$opsys" = "sol2"; then
2503   if test "$os_release" -ge 56; then
2504     AC_MSG_CHECKING(for \"-z ignore\" linker flag)
2505     case "`ld -h 2>&1`" in
2506       *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
2507         XE_PREPEND(-z ignore, ld_switch_site) ;;
2508       *) AC_MSG_RESULT(no) ;;
2509     esac
2510   fi
2511 fi
2512
2513 dnl ----------------------
2514 dnl Choose a window system
2515 dnl ----------------------
2516
2517 AC_CHECKING("for specified window system")
2518
2519 if test "$with_x11" != "no"; then
2520   dnl User-specified --x-includes or --x-libraries implies --with-x11.
2521   test "$x_includes $x_libraries" != "NONE NONE" && \
2522    window_system=x11 with_x11=yes
2523
2524   dnl Autodetection of X11 libraries and includes
2525   dnl -------------------------------------------
2526   dnl AC_PATH_XTRA thinks it can find our X headers and includes, but
2527   dnl it often gets it wrong, so we only use it as a last resort.
2528
2529   dnl $OPENWINHOME implies --x-includes and --x-libraries
2530   dnl Not (yet) handled by autoconf2
2531   if test "$x_includes $x_libraries" = "NONE NONE" \
2532     -a -n "$OPENWINHOME" \
2533     -a "$OPENWINHOME" != "/usr/openwin" \
2534     -a -d "$OPENWINHOME"; then
2535       test -d "$OPENWINHOME/lib"           && x_libraries="$OPENWINHOME/lib"
2536       test -d "$OPENWINHOME/include"       && x_includes="$OPENWINHOME/include"
2537       test -d "$OPENWINHOME/share/include" && x_includes="$OPENWINHOME/share/include"
2538   fi
2539
2540   if test "$x_includes" = "NONE"; then
2541     dnl AC_PATH_XTRA often guesses /usr/include, when some other
2542     dnl include directory is a MUCH better guess (Linux, HP-UX 10.20).
2543     dnl This is a workaround for idiot (esp. HP) system vendors, who
2544     dnl provide a /usr/include/X11, but DON'T FULLY POPULATE IT.
2545     for dir in "/usr/X11" "/usr/X11R6"; do
2546       if test -d "$dir/include/X11"; then x_includes="$dir/include"; break; fi
2547     done
2548   fi
2549
2550   if test "$x_libraries" = "NONE"; then
2551     for dir in "/usr/X11/lib" "/usr/X11R6/lib" "/usr/lib/X11R6"; do
2552       if test -r "$dir/libX11.a"; then x_libraries="$dir"; break; fi
2553     done
2554   fi
2555
2556   AC_PATH_XTRA # Autoconf claims to find X library and include dirs for us.
2557   if test "$no_x" = "yes"
2558   then with_x11=no  window_system=none HAVE_X_WINDOWS=no
2559   else with_x11=yes window_system=x11  HAVE_X_WINDOWS=yes
2560   fi
2561 fi
2562
2563 case "$with_x11" in
2564   yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
2565   no  ) window_system=none HAVE_X_WINDOWS=no  ;;
2566 esac
2567
2568 if test "$with_x11" = "yes"; then
2569   AC_DEFINE(HAVE_X_WINDOWS)
2570   XE_APPEND(lwlib, MAKE_SUBDIR)
2571   XE_APPEND(lwlib, SRC_SUBDIR_DEPS)
2572
2573   dnl Try to find Motif/CDE/Tooltalk dirs
2574   dnl These take precedence over other X libs/includes, so PRE-pend
2575   for lib_dir in "/usr/dt/lib" "/usr/lib/Motif2.1" "/usr/lib/Motif1.2" "/usr/lib/Motif1.1"; do
2576     inc_dir=`echo $lib_dir | sed -e 's/lib/include/'`
2577     if test -d "$lib_dir" -a -d "$inc_dir"; then
2578       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2579         x_libraries="$lib_dir $x_libraries"
2580         XE_PREPEND(-L${lib_dir}, X_LIBS) ;;
2581       esac
2582       case "$x_includes" in "$inc_dir"* ) ;; *)
2583         x_includes="$inc_dir $x_includes"
2584         XE_PREPEND(-I${inc_dir}, X_CFLAGS) ;;
2585       esac
2586       break; dnl only need ONE Motif implementation!
2587       fi
2588   done
2589
2590   dnl Contrib X libs/includes do NOT take precedence, so AP-pend
2591   for rel in "X11R6" "X11R5" "X11R4"; do
2592     lib_dir="/usr/contrib/$rel/lib" inc_dir="/usr/contrib/$rel/include"
2593     if test -d "$lib_dir" -a -d "$inc_dir"; then
2594       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2595         x_libraries="$x_libraries $lib_dir"
2596         XE_APPEND(-L${lib_dir}, X_LIBS)
2597       esac
2598       case "$x_includes" in "$inc_dir"* ) ;; *)
2599         x_includes="$x_includes $inc_dir"
2600         XE_APPEND(-I${inc_dir}, X_CFLAGS)
2601       esac
2602       break; dnl Only need ONE X11 implementation !
2603     fi
2604   done
2605
2606   dnl Avoid version mismatch for shared library libXm.so on osf4
2607   case "$opsys" in
2608   decosf*) if test "$GCC" = yes -a -d /usr/shlib; then XE_APPEND(-L/usr/shlib, X_LIBS); fi ;;
2609   esac
2610
2611   ld_switch_x_site="$X_LIBS"
2612
2613   XE_COMPUTE_RUNPATH()
2614
2615   if test "$extra_verbose" = "yes"; then
2616     echo; echo "X11 compilation variables:"
2617     PRINT_VAR(x_libraries x_includes X_CFLAGS X_LIBS X_PRE_LIBS X_EXTRA_LIBS)
2618     echo
2619   fi
2620
2621   dnl Set up bitmaps search path.
2622   dnl The original suggestion was to unconditionally to append X11/bitmaps
2623   dnl to each element of $x_includes, I'm pretty sure this is the wrong
2624   dnl thing to do.  We test for bitmaps and X11/bitmaps directories on each
2625   dnl element and add them to BITMAPDIR if they exist.
2626   bitmapdirs=
2627   if test "$x_includes" != NONE; then
2628     for i in $x_includes; do
2629       if test -d "$i/bitmaps"; then
2630         bitmapdirs="$i/bitmaps:$bitmapdirs"
2631       fi
2632       if test -d "$i/X11/bitmaps"; then
2633         bitmapdirs="$i/X11/bitmaps:$bitmapdirs"
2634       fi
2635     done
2636     bitmapdirs=`echo "$bitmapdirs" | sed s/.$//`
2637   fi
2638   test ! -z "$bitmapdirs" && AC_DEFINE_UNQUOTED(BITMAPDIR, "$bitmapdirs")
2639
2640   dnl Autodetect defines extracted from X config by xmkmf, e.g. NARROWPROTO
2641   AC_CHECKING(for X defines extracted by xmkmf)
2642   rm -fr conftestdir
2643   if mkdir conftestdir; then
2644     cd conftestdir
2645     cat > Imakefile <<'EOF'
2646 xetest:
2647         @echo ${PROTO_DEFINES} ${STD_DEFINES}
2648 EOF
2649     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2650       # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2651       xmkmf_defines=`${MAKE-make} xetest 2>/dev/null | grep -v make`
2652     fi
2653     cd ..
2654     rm -fr conftestdir
2655     for word in $xmkmf_defines; do
2656       case "$word" in -D* )
2657         sym=`echo '' $word | sed -e 's:^ *-D::' -e 's:=.*::'`
2658         case "$word" in
2659           -D*=* ) val=`echo '' $word | sed -e 's:^.*=::'` ;;
2660           *     ) val=1 ;;
2661         esac
2662 dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above.
2663         if grep "^#define $sym " confdefs.h >/dev/null; then :; else
2664           if test "$val" = "1"
2665             then AC_DEFINE_UNQUOTED($sym)
2666             else AC_DEFINE_UNQUOTED($sym,$val)
2667           fi
2668         fi  ;;
2669       esac
2670     done
2671   fi
2672
2673   dnl make sure we can find Intrinsic.h
2674   AC_CHECK_HEADER(X11/Intrinsic.h, ,
2675    [AC_MSG_ERROR("Unable to find X11 header files.")])
2676
2677   dnl -lXt and -lX11 are required
2678   dnl Some broken systems require the magic "-b i486-linuxaout" flag
2679   AC_CHECK_LIB(X11, XOpenDisplay, have_lib_x11=yes)
2680   if test "$have_lib_x11" != "yes"; then
2681     AC_CHECK_LIB(X11, XGetFontProperty,
2682       ld_switch_x_site="-b i486-linuxaout $ld_switch_x_site",
2683       [AC_MSG_ERROR("Unable to find X11 libraries.")],
2684       -b i486-linuxaout)
2685   fi
2686   libs_x="-lX11"
2687   test "$extra_verbose" = "yes" && echo "    Setting libs_x to \"-lX11\""
2688
2689   dnl Autodetect -lXext
2690   AC_CHECK_LIB(Xext, XShapeSelectInput, XE_PREPEND(-lXext, libs_x))
2691
2692   dnl Require -lXt
2693   AC_CHECK_LIB(Xt, XtOpenDisplay, XE_PREPEND(-lXt, libs_x),
2694     AC_MSG_ERROR("Unable to find X11 libraries."))
2695
2696   AC_MSG_CHECKING(the version of X11 being used)
2697   AC_TRY_RUN([#include <X11/Intrinsic.h>
2698     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }],
2699     [./conftest foobar; x11_release=$?],[x11_release=4],[x11_release=4])
2700   AC_MSG_RESULT(R${x11_release})
2701   AC_DEFINE_UNQUOTED(THIS_IS_X11R${x11_release})
2702
2703   if test "${x11_release}" = "4"; then
2704     case "$with_widgets" in
2705       "" | "no") with_widgets=no ;;
2706       *) XE_DIE("Widget support requires X11R5 or greater") ;;
2707     esac
2708   fi
2709
2710   AC_CHECK_FUNCS(XConvertCase)
2711
2712   AC_CHECK_HEADERS(X11/Xlocale.h)
2713
2714   dnl XFree86 has a non-standard prototype for this X11R6 function
2715   AC_CHECK_FUNCS(XRegisterIMInstantiateCallback)
2716   AC_MSG_CHECKING(for standard XRegisterIMInstantiateCallback prototype)
2717   AC_TRY_COMPILE([
2718 #define NeedFunctionPrototypes 1
2719 #include <X11/Xlib.h>
2720 extern Bool XRegisterIMInstantiateCallback(
2721    Display*, struct _XrmHashBucketRec*, char*, char*, XIMProc, XPointer*);
2722 ], [], 
2723   [AC_MSG_RESULT(yes)],
2724   [AC_MSG_RESULT(no)
2725    AC_DEFINE(XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE)])
2726
2727   dnl autodetect -lXmu
2728   test -z "$with_xmu" && { AC_CHECK_LIB(Xmu, XmuReadBitmapDataFromFile,
2729                            with_xmu=yes, with_xmu=no) }
2730   if test "$with_xmu" = "no"; then
2731     XE_ADD_OBJS(xmu.o)
2732   else
2733     XE_PREPEND(-lXmu, libs_x)
2734     AC_DEFINE(HAVE_XMU)
2735   fi
2736
2737   dnl Autodetect -lXbsd
2738   dnl #### Someone, please add a better function than main
2739   AC_CHECK_LIB(Xbsd, main, XE_PREPEND(-lXbsd, libs_x))
2740
2741   dnl Problem with the MIT distribution of X on AIX
2742   if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then
2743     dnl X11R6 requires thread-safe code on AIX for some reason
2744     if test "$GCC" = "yes"; then
2745       XE_PREPEND(-mthreads, X_CFLAGS)
2746       XE_PREPEND(-mthreads, libs_x)
2747     else
2748       case "$CC" in
2749         "xlc" ) CC="xlc_r" ;;
2750         "xlC" ) CC="xlC_r" ;;
2751         "cc"  ) CC="cc_r" ;;
2752       esac
2753     fi
2754   fi
2755
2756 fi dnl $with_x11 = yes
2757
2758 if test "$with_msw" != "no"; then
2759   AC_CHECKING(for MS-Windows)
2760   AC_CHECK_LIB(gdi32,main,with_msw=yes)
2761   if test "$with_msw" = "yes"; then
2762     AC_DEFINE(HAVE_MS_WINDOWS)
2763     install_pp="$blddir/lib-src/installexe.sh"
2764     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lwinspool, libs_system)
2765     test "$with_dragndrop" != no && XE_APPEND(msw, dragndrop_proto)
2766     if test "$window_system" != x11; then
2767         window_system=msw
2768         test "$with_scrollbars" != "no" && with_scrollbars=msw \
2769             && XE_ADD_OBJS(scrollbar-msw.o)
2770         test "$with_menubars"   != "no" && with_menubars=msw \
2771             && XE_ADD_OBJS(menubar-msw.o)
2772         test "$with_toolbars"   != "no" && with_toolbars=msw \
2773             && XE_ADD_OBJS(toolbar-msw.o)
2774         test "$with_dialogs"   != "no" && with_dialogs=msw \
2775             && XE_ADD_OBJS(dialog-msw.o)
2776         test "$with_widgets"   != "no" && with_widgets=msw
2777     else
2778         test "$with_scrollbars" != "no" && XE_ADD_OBJS(scrollbar-msw.o)
2779         test "$with_menubars"   != "no" && XE_ADD_OBJS(menubar-msw.o)
2780         test "$with_toolbars"   != "no" && XE_ADD_OBJS(toolbar-msw.o)
2781         test "$with_dialogs"    != "no" && XE_ADD_OBJS(dialog-msw.o)
2782     fi
2783     dnl check for our special version of select
2784     AC_TRY_RUN([#include <fcntl.h>
2785     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }],
2786     [AC_DEFINE(HAVE_MSG_SELECT)])
2787     with_file_coding=yes
2788     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)
2789   fi
2790 fi
2791
2792 AC_SUBST(install_pp)
2793
2794 test -z "$window_system" && window_system="none"
2795
2796 dnl Test for features that require a window system - ANY window system
2797 if test "$window_system" = "none"; then
2798   for feature in menubars scrollbars toolbars dialogs dragndrop xface
2799   do
2800     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2801        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
2802     fi
2803     eval "with_${feature}=no"
2804   done
2805 else
2806   test -z "$with_toolbars" && with_toolbars=yes
2807 fi
2808
2809 dnl ### Test for features that require mswindows support - currently none
2810 dnl ### MS-Windows folks: add code here..... (martin)
2811 if test "$with_msw" != "yes"; then
2812   for feature in   MARTIN_IS_CLUELESS_ABOUT_MSW_FEATURES
2813   do
2814     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2815        AC_MSG_WARN([--with-$feature ignored:  Not valid without MS-Windows support])
2816     fi
2817     eval "with_${feature}=no"
2818   done
2819 else
2820   :
2821 fi
2822
2823 dnl Test for features that require X11 support
2824 if test "$with_x11" != "yes"; then
2825   dnl It ought to be reasonable to have no output device at all, and only use
2826   dnl XEmacs in --batch mode.
2827   dnl if test "$with_tty" = "no" ; then
2828   dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
2829   dnl fi
2830   for feature in tooltalk cde offix wmcommand xim xmu nas_sound
2831   do
2832     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2833        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
2834     fi
2835     eval "with_${feature}=no"
2836   done
2837 fi
2838
2839 dnl Balloon Help requires the Shape extension, not available everywhere,
2840 dnl for example not on AIX 4.3.
2841 if test "$with_x11" = "yes"; then
2842   AC_CHECK_HEADER(X11/extensions/shape.h, [
2843    AC_DEFINE(HAVE_BALLOON_HELP)
2844    XE_ADD_OBJS(balloon_help.o balloon-x.o)])
2845 fi
2846
2847 dnl FSF 19.29 has some bitmapdir stuff here.
2848 bitmapdir=
2849
2850 case "$window_system" in
2851   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
2852   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
2853   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
2854 esac
2855
2856 case "$x_libraries" in *X11R4* )
2857   test "$opsys" = "hpux9"     && opsysfile="s/hpux9-x11r4.h"
2858   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
2859 esac
2860
2861 dnl Enable or disable proper handling of WM_COMMAND
2862 AC_CHECKING(for WM_COMMAND option);
2863 dnl if test "$with_wmcommand" = "yes"; then
2864 if test "$with_wmcommand" != "no"; then
2865   AC_DEFINE(HAVE_WMCOMMAND)
2866 fi
2867
2868 dnl Autodetect Xauth
2869 dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
2870 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
2871 test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h,          ,with_xauth=no) }
2872 test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no) }
2873 test -z "$with_xauth" && with_xauth=yes
2874 if test "$with_xauth" = "yes"; then
2875   AC_DEFINE(HAVE_XAUTH)
2876   XE_SPACE(libs_xauth, $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
2877 fi
2878 AC_SUBST(libs_xauth)
2879
2880 dnl This one is for the static initializeds variables in
2881 dnl offix.c, so that the thing is dumped after lastfile.o
2882 AC_SUBST(dnd_objs)
2883
2884 dnl Autodetect tooltalk
2885 if test "$with_tooltalk" != "no" ; then
2886   dnl autodetect the location of tt_c.h
2887   dnl tt_c.h might be in Tt or desktop include directories
2888   for dir in "" "Tt/" "desktop/" ; do
2889     AC_CHECK_HEADER(${dir}tt_c.h, tt_c_h_file="${dir}tt_c.h"; break)
2890   done
2891   if test -z "$tt_c_h_file"; then
2892     if test "$with_tooltalk" = "yes"; then
2893       USAGE_ERROR("Unable to find required tooltalk header files.")
2894     fi
2895     with_tooltalk=no
2896   fi
2897 fi
2898 if test "$with_tooltalk" != "no" ; then
2899   for extra_libs in "" "-lI18N -lce" "-lcxx"; do
2900     AC_CHECK_LIB(tt, tt_message_create,
2901       tt_libs="-ltt $extra_libs"; break, [:],$extra_libs)
2902   done
2903   if test -z "$tt_libs"; then
2904     if test "$with_tooltalk" = "yes"; then
2905       USAGE_ERROR("Unable to find required tooltalk libraries.")
2906     fi
2907     with_tooltalk=no
2908   fi
2909 fi
2910 test -z "$with_tooltalk" && with_tooltalk=yes
2911 if test "$with_tooltalk" = "yes"; then
2912   AC_DEFINE(TOOLTALK)
2913   AC_DEFINE_UNQUOTED(TT_C_H_FILE, "$tt_c_h_file")
2914   XE_PREPEND($tt_libs, libs_x)
2915   XE_ADD_OBJS(tooltalk.o)
2916 fi
2917
2918 dnl Autodetect CDE
2919 test -z "$with_cde" && { AC_CHECK_HEADER(Dt/Dt.h,               , with_cde=no) }
2920 test -z "$with_cde" && { AC_CHECK_LIB(DtSvc, DtDndDragStart, [:], with_cde=no) }
2921 test -z "$with_cde" && with_cde=yes
2922 if test "$with_dragndrop" = no; then
2923   AC_MSG_WARN([No CDE without generic Drag'n'Drop support])
2924   with_cde=no
2925 fi
2926 if test "$with_cde" = "yes" ; then
2927   AC_DEFINE(HAVE_CDE)
2928   XE_PREPEND(-lDtSvc, libs_x)
2929   XE_APPEND(CDE, dragndrop_proto)
2930   with_tooltalk=yes # CDE requires Tooltalk
2931   need_motif=yes    # CDE requires Motif
2932 fi
2933
2934 dnl Always compile OffiX unless --without-offix is given, no
2935 dnl X11 support is compiled in, no standard Xmu is available,
2936 dnl or dragndrop support is disabled
2937 dnl Because OffiX support currently loses when more than one display
2938 dnl is in use, we now disable it by default -slb 07/10/1998.
2939 test "$window_system" != "x11" && with_offix=no
2940 if test "$with_xmu" != yes -a "$with_x11" = yes; then
2941   AC_MSG_WARN([No OffiX without real Xmu support])
2942   with_offix=no
2943 fi
2944 if test "$with_dragndrop" = no; then
2945   AC_MSG_WARN([No OffiX without generic Drag'n'Drop support])
2946   with_offix=no
2947 fi
2948 if test "$with_cde" = yes; then
2949   AC_MSG_WARN([CDE already found, disabling OffiX support])
2950   with_offix=no
2951 fi
2952 test -z "$with_offix" && with_offix=no
2953 if test "$with_offix" = "yes"; then
2954   AC_DEFINE(HAVE_OFFIX_DND)
2955   XE_APPEND(offix.o, dnd_objs)
2956   XE_APPEND(OffiX, dragndrop_proto)
2957 fi
2958
2959 dnl Autodetect Drag'n'Drop support
2960 dnl always included if CDE, Offix, or MSWindows are defined
2961 if test "$with_dragndrop" != "no" ; then
2962   AC_MSG_CHECKING(if drag and drop API is needed)
2963   if test -n "$dragndrop_proto" ; then
2964     with_dragndrop=yes
2965     AC_MSG_RESULT([yes (${dragndrop_proto} )])
2966     AC_DEFINE(HAVE_DRAGNDROP)
2967     XE_APPEND(dragdrop.o, extra_objs)
2968   else
2969     with_dragndrop=no
2970     AC_MSG_RESULT(no)
2971   fi
2972 fi
2973
2974 dnl Autodetect LDAP
2975 AC_CHECKING(for LDAP)
2976 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
2977 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
2978 if test "$with_ldap" != "no"; then
2979   AC_CHECK_LIB(ldap, ldap_search, with_ldap_nolber=yes, with_ldap_nolber=no)
2980   test "$with_ldap_nolber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_lber=yes, with_ldap_lber=no, -llber) }
2981   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) }
2982   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) }
2983   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
2984 fi
2985 if test "$with_ldap" = "yes"; then
2986   AC_DEFINE(HAVE_LDAP)
2987   XE_ADD_OBJS(eldap.o)
2988   if test "$with_ldap_nolber" = "yes" ; then
2989     XE_PREPEND(-lldap, LIBS)
2990   else
2991     if test "$with_ldap_krb" = "yes" ; then
2992       XE_PREPEND(-lkrb, LIBS)
2993     fi
2994     if test "$with_ldap_krbdes" = "yes" ; then
2995       XE_PREPEND(-ldes, LIBS)
2996       XE_PREPEND(-lkrb, LIBS)
2997     fi
2998     XE_PREPEND(-llber, LIBS)
2999     XE_PREPEND(-lldap, LIBS)
3000   fi
3001   AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result)
3002 fi
3003
3004 dnl Autodetect PostgreSQL
3005 dnl On many Linux systems, PostgreSQL is packaged to be installed in /usr;
3006 dnl in this case, configure will easily detect it there.
3007 dnl
3008 dnl If PostgreSQL is installed into a different prefix,
3009 dnl (such as the default /usr/local/pgsql when building from source),
3010 dnl that prefix must be specified using the --site-prefixes flag.
3011 if test "$with_postgresql" != "no"; then
3012   AC_CHECKING(for PostgreSQL)
3013
3014 dnl Look for these standard header file locations, known to be used on Linux
3015   for header_dir in "" "pgsql/" "postgresql/"; do
3016     AC_CHECK_HEADER(${header_dir}libpq-fe.h,
3017                     libpq_fe_h_file=${header_dir}libpq-fe.h; break)
3018   done
3019
3020   test -n "$libpq_fe_h_file" && { AC_CHECK_LIB(pq,PQconnectdb,have_libpq=yes) }
3021
3022   if test -n "$libpq_fe_h_file" -a "$have_libpq" = "yes"; then
3023     with_postgresql=yes
3024     AC_DEFINE(HAVE_POSTGRESQL)
3025     AC_CHECK_LIB(pq,PQconnectStart, [
3026                  with_postgresqlv7=yes;
3027                  AC_DEFINE(HAVE_POSTGRESQLV7)])
3028     AC_DEFINE_UNQUOTED(LIBPQ_FE_H_FILE, "$libpq_fe_h_file")
3029     XE_PREPEND(-lpq, LIBS)
3030     XE_ADD_OBJS(postgresql.o)
3031   elif test "$with_postgresql" = "yes"; then
3032     XE_DIE("Required PostgreSQL support cannot be provided.  Check --site-prefixes.")
3033   fi
3034 fi
3035
3036 dnl ----------------------
3037 dnl Graphics libraries
3038 dnl ----------------------
3039
3040 if test "$window_system" != "none"; then
3041   AC_CHECKING(for graphics libraries)
3042
3043   dnl Autodetect Xpm
3044   xpm_problem=""
3045   if test -z "$with_xpm"; then
3046     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
3047     xe_check_libs=-lXpm
3048     AC_TRY_RUN([#define XPM_NUMBERS
3049 #include <X11/xpm.h>
3050     int main(int c, char **v) {
3051     return c == 1 ? 0 :
3052       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
3053       XpmIncludeVersion < 30406 ? 2 : 0 ;}],
3054     [./conftest dummy_arg; xpm_status=$?;
3055       if test "$xpm_status" = "0"; then
3056         with_xpm=yes;
3057       else
3058         with_xpm=no;
3059         if test "$xpm_status" = "1"; then
3060           xpm_problem="Xpm library version and header file version don't match!"
3061         elif test "$xpm_status" = "2"; then
3062           xpm_problem="Xpm library version is too old!"
3063         else
3064           xpm_problem="Internal xpm detection logic error!"
3065         fi
3066         echo "
3067 *** WARNING *** $xpm_problem
3068   I'm not touching that with a 10-foot pole!
3069   If you really want to use the installed version of Xpm, rerun
3070   configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!"
3071     fi],
3072     [with_xpm=no])
3073     xe_check_libs=
3074     AC_MSG_RESULT($with_xpm)
3075   fi
3076   if test "$with_xpm" = "yes"; then
3077     AC_DEFINE(HAVE_XPM)
3078     XE_PREPEND(-lXpm, libs_x)
3079     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
3080     xe_check_libs=-lXpm
3081     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
3082     [xpm_for_msw=no],
3083     [xpm_for_msw=yes])
3084     xe_check_libs=
3085     AC_MSG_RESULT($xpm_for_msw)
3086     if test "$xpm_for_msw" = "yes"; then
3087       AC_DEFINE(FOR_MSW)
3088     fi
3089   fi
3090
3091   dnl Autodetect XFACE
3092   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
3093   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
3094   test -z "$with_xface" && with_xface=yes
3095   if test "$with_xface" = "yes"; then
3096     AC_DEFINE(HAVE_XFACE)
3097     XE_PREPEND(-lcompface, libs_x)
3098   fi
3099
3100   dnl For a brief period we had the GIF code split out into a separate library,
3101   dnl but patent problems, etc. sort of squashed that idea.
3102   dnl We default to building with builtin GIF decoding
3103   if test "$with_gif" != "no"; then
3104     with_gif="yes"
3105     AC_DEFINE(HAVE_GIF)
3106     XE_ADD_OBJS(dgif_lib.o gif_io.o)
3107   fi
3108
3109   dnl Too many stupid linkers can't detect cascaded lib dependencies until runtime
3110   dnl So we always search for libz compression support.
3111   if test "$with_png $with_tiff" != "no no"; then
3112     AC_CHECK_LIB(c,  inflate, [:], [
3113     AC_CHECK_LIB(z,  inflate, [XE_PREPEND(-lz,  libs_x)],[
3114     AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])])
3115   fi
3116
3117   dnl autodetect JPEG
3118   test -z "$with_jpeg" && { AC_CHECK_HEADER(jpeglib.h,                    ,with_jpeg=no) }
3119   test -z "$with_jpeg" && { AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,[:],with_jpeg=no) }
3120   test -z "$with_jpeg" && with_jpeg=yes
3121   if test "$with_jpeg" = "yes"; then
3122     AC_DEFINE(HAVE_JPEG)
3123     XE_PREPEND(-ljpeg, libs_x)
3124   fi
3125
3126   dnl autodetect PNG
3127   png_problem=""
3128   test -z "$with_png" && { AC_CHECK_FUNC(pow,                  ,with_png=no) }
3129   test -z "$with_png" && { AC_CHECK_HEADER(png.h,              ,with_png=no) }
3130   test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) }
3131   if test -z "$with_png"; then
3132     AC_MSG_CHECKING(for workable png version information)
3133     xe_check_libs="-lpng -lz"
3134     AC_TRY_RUN([#include <png.h>
3135     int main(int c, char **v) {
3136     if (c == 1) return 0;
3137     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
3138     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}],
3139     [./conftest dummy_arg; png_status=$?;
3140       if test "$png_status" = "0"; then
3141         with_png=yes;
3142       else
3143         with_png=no;
3144         if test "$png_status" = "1"; then
3145           png_problem="PNG library version and header file don't match!"
3146         elif test "$png_status" = "2"; then
3147           png_problem="PNG library version too old (pre 1.0.2)!"
3148         fi
3149         echo "
3150 *** WARNING *** $png_problem
3151   I'm not touching that with a 10-foot pole!
3152   If you really want to use the installed version of libPNG, rerun
3153   configure and add '--with-png=yes', but don't blame me if XEmacs crashes!"
3154     fi],
3155     [with_png=no])
3156     xe_check_libs=
3157     AC_MSG_RESULT($with_png)
3158   fi
3159   if test "$with_png" = "yes"; then
3160     AC_DEFINE(HAVE_PNG)
3161     XE_PREPEND(-lpng, libs_x)
3162   fi
3163
3164   dnl autodetect TIFF
3165   test -z "$with_tiff" && { AC_CHECK_HEADER(tiffio.h,            ,with_tiff=no) }
3166   test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no) }
3167   test -z "$with_tiff" && with_tiff=yes
3168   if test "$with_tiff" = "yes"; then
3169     AC_DEFINE(HAVE_TIFF)
3170     XE_PREPEND(-ltiff, libs_x)
3171   fi
3172 fi
3173
3174 dnl ----------------------
3175 dnl X-Specific Graphics libraries
3176 dnl ----------------------
3177
3178 if test "$with_x11" = "yes"; then
3179
3180   AC_CHECKING(for X11 graphics libraries)
3181
3182   AC_CHECKING(for the Athena widgets)
3183
3184   dnl What in heck did the user actually want?
3185   case "$with_athena" in
3186     dnl This is the default, old fashioned flat Athena.
3187     "xaw" | "") athena_variant=Xaw      athena_3d=no  ;;
3188     "3d")       athena_variant=Xaw3d    athena_3d=yes ;;
3189     "next")     athena_variant=neXtaw   athena_3d=yes ;;
3190     "95")       athena_variant=Xaw95    athena_3d=yes ;;
3191     "xpm")      athena_variant=XawXpm   athena_3d=yes ;;
3192     *)          XE_DIE("Unknown Athena widget set \`$with_athena'. This should not happen.") ;;
3193   esac
3194
3195   dnl Search for the Athena library...
3196   if test "$athena_3d" = "no"; then
3197     AC_CHECK_LIB($athena_variant, XawScrollbarSetThumb,
3198       [
3199         dnl Must not be a 3d library...
3200         AC_CHECK_LIB($athena_variant, threeDClassRec,
3201           AC_MSG_WARN("Could not find a non-3d Athena widget library."),
3202           athena_lib=$athena_variant)
3203       ],
3204       AC_MSG_WARN("Could not find an Athena widget library."))
3205   else
3206     dnl The real configuration, need 3d library
3207     AC_CHECK_LIB($athena_variant, threeDClassRec, athena_lib=$athena_variant,
3208       dnl OK, couldn't find it with a proper name, try the standard Athena lib
3209       dnl If that is 3d, presume the user asked for what they have installed.
3210       AC_CHECK_LIB(Xaw, threeDClassRec,
3211         [
3212           athena_lib=Xaw;
3213           AC_MSG_WARN("Assuming that libXaw is actually $athena_variant.");
3214         ],
3215         AC_MSG_WARN("Could not find a 3d Athena widget library that looked like $athena_variant.")))
3216   fi
3217
3218   dnl Now we locate the Athena headers that we need.
3219   if test "$athena_3d" = "no"; then
3220     AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
3221       AC_MSG_WARN("Could not find a non-3d Athena header set."),
3222       AC_CHECK_HEADER(X11/Xaw/XawInit.h,
3223         athena_h_path=X11/Xaw,
3224         AC_MSG_WARN("Could not find a non-3d Athena header set.")))
3225   else
3226     dnl The three-d Athena headers are so much more slippery.
3227     dnl Curse this `Lets replace standard libraries' thing that they did. :/
3228     AC_CHECK_HEADER(X11/$athena_variant/XawInit.h,
3229       AC_CHECK_HEADER(X11/$athena_variant/ThreeD.h,
3230         athena_h_path=X11/$athena_variant,))
3231
3232     dnl Is the variant specific header directory directly under include?
3233     if test -z "$athena_h_path"; then
3234       AC_CHECK_HEADER($athena_variant/XawInit.h,
3235         AC_CHECK_HEADER($athena_variant/ThreeD.h,
3236           athena_h_path=$athena_variant,))
3237     fi
3238
3239     dnl If we couldn't find the specific variant, try the generic Athena 3d headers
3240     if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
3241       AC_CHECK_HEADER(X11/Xaw3d/XawInit.h,
3242         AC_CHECK_HEADER(X11/Xaw3d/ThreeD.h,
3243           [
3244             AC_MSG_WARN("Assuming that X11/Xaw3d headers are suitable for $athena_variant.")
3245             athena_h_path=X11/Xaw3d
3246           ],))
3247     fi
3248
3249     dnl Also generic 3d headers directly under include dir
3250     if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
3251       AC_CHECK_HEADER(Xaw3d/XawInit.h,
3252         AC_CHECK_HEADER(Xaw3d/ThreeD.h,
3253           [
3254             AC_MSG_WARN("Assuming that Xaw3d headers are suitable for $athena_variant.")
3255             athena_h_path=Xaw3d
3256           ],))
3257     fi
3258
3259     dnl If nothing yet found, see if Xaw is a 3d header set...
3260     dnl We AC_MSG_WARN if we fail because I am all out of ideas...
3261     if test -z "$athena_h_path"; then
3262       AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
3263         [
3264           AC_MSG_WARN("Assuming that X11/Xaw headers are suitable for $athena_variant.")
3265           athena_h_path=X11/Xaw
3266         ],
3267         AC_MSG_WARN("Could not find a suitable 3d Athena header set."))
3268     fi
3269   fi
3270
3271   dnl Do we actually have a usable Athena widget set? Please?
3272   if test -n "$athena_lib" -a -n "$athena_h_path"; then
3273     have_xaw=yes
3274   else
3275     have_xaw=no
3276   fi
3277
3278   dnl autodetect Motif - but only add to libs_x later (if necessary)
3279   AC_CHECK_HEADER(Xm/Xm.h,
3280    [AC_CHECK_LIB(Xm, XmStringFree, have_motif=yes, have_motif=no)],
3281    have_motif=no)
3282
3283   if test "$have_motif" = "yes"; then
3284     dnl autodetect lesstif
3285     AC_MSG_CHECKING(for Lesstif)
3286     AC_EGREP_CPP(yes,
3287 [#include <Xm/Xm.h>
3288 #ifdef LESSTIF_VERSION
3289 yes
3290 #endif
3291 ], have_lesstif=yes, have_lesstif=no)
3292   AC_MSG_RESULT($have_lesstif)
3293   fi
3294
3295 fi dnl "$with_x11" = "yes"
3296
3297 dnl Finish ensuring that we have values for the various toolkit items.
3298 dnl Not all toolkits support all widgets
3299 dnl if Motif is available we use it for the dialog boxes.
3300
3301 case "$with_menubars" in "" | "yes" | "athena" )
3302   with_menubars="lucid" ;;
3303 esac
3304 case "$with_dialogs" in "" | "yes" | "lucid" )
3305   if   test "$have_motif"     = "yes"; then with_dialogs="motif"
3306   elif test "$have_xaw"       = "yes"; then with_dialogs="athena"
3307   else with_dialogs=no
3308   fi ;;
3309 esac
3310 case "$with_scrollbars" in "" | "yes" )
3311   with_scrollbars="lucid" ;;
3312 esac
3313 case "$with_widgets" in "" | "yes" | "lucid")
3314   if   test "$have_motif" = "yes"; then with_widgets="motif"
3315   elif test "$have_xaw"   = "yes"; then with_widgets="athena"
3316   else with_widgets=no
3317   fi ;;
3318 esac
3319
3320 all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars $with_widgets"
3321
3322 case "$all_widgets" in
3323   *athena* )
3324     if test "$have_xaw" != "yes"; then
3325       XE_DIE("Could not find a suitable Athena library to build with.")
3326     fi
3327
3328     dnl Add the Lucid widget Athena code
3329     XE_APPEND(lwlib-Xaw.o, lwlib_objs)
3330
3331     dnl Add the Athena widget library we located earlier
3332     XE_PREPEND(-l$athena_lib, libs_x)
3333
3334     dnl Tell lwlib where to find the Athena header files.
3335     dnl Many people have tried to create a `smart' way of doing this,
3336     dnl but all have failed.  Before changing the following ugly definitions,
3337     dnl consult the veterans of many a battle.
3338     AC_DEFINE_UNQUOTED(ATHENA_Scrollbar_h_,"$athena_h_path/Scrollbar.h")
3339     AC_DEFINE_UNQUOTED(ATHENA_Dialog_h_,"$athena_h_path/Dialog.h")
3340     AC_DEFINE_UNQUOTED(ATHENA_Form_h_,"$athena_h_path/Form.h")
3341     AC_DEFINE_UNQUOTED(ATHENA_Command_h_,"$athena_h_path/Command.h")
3342     AC_DEFINE_UNQUOTED(ATHENA_Label_h_,"$athena_h_path/Label.h")
3343     AC_DEFINE_UNQUOTED(ATHENA_LabelP_h_,"$athena_h_path/LabelP.h")
3344     AC_DEFINE_UNQUOTED(ATHENA_Toggle_h_,"$athena_h_path/Toggle.h")
3345     AC_DEFINE_UNQUOTED(ATHENA_ToggleP_h_,"$athena_h_path/ToggleP.h")
3346     AC_DEFINE_UNQUOTED(ATHENA_AsciiText_h_,"$athena_h_path/AsciiText.h")
3347     AC_DEFINE_UNQUOTED(ATHENA_XawInit_h_,"$athena_h_path/XawInit.h")
3348
3349     AC_DEFINE(LWLIB_USES_ATHENA)
3350     AC_DEFINE(NEED_ATHENA)
3351     need_athena="yes"
3352
3353     if test "$athena_3d" = "yes"; then
3354       AC_DEFINE(HAVE_ATHENA_3D)
3355     fi
3356   ;;
3357 esac
3358
3359 case "$all_widgets" in *motif* )
3360   AC_DEFINE(LWLIB_USES_MOTIF)
3361   AC_DEFINE(NEED_MOTIF)
3362   XE_APPEND(lwlib-Xm.o, lwlib_objs)
3363   need_motif=yes ;;
3364 esac
3365
3366 test "$with_menubars"   = "lucid" && XE_APPEND(xlwmenu.o, lwlib_objs)
3367 test "$with_menubars"   = "motif" && XE_APPEND(xlwmenu.o, lwlib_objs)
3368 test "$with_scrollbars" = "lucid" && XE_APPEND(xlwscrollbar.o, lwlib_objs)
3369 test "$with_widgets"   != "no" && test "$with_widgets" != "msw" && \
3370         XE_APPEND(xlwtabs.o xlwgcs.o, lwlib_objs)
3371 case "$with_widgets" in athena* )
3372         XE_APPEND(xlwradio.o xlwcheckbox.o xlwgauge.o, lwlib_objs);;
3373 esac
3374 case "$all_widgets" in *lucid* )
3375   AC_DEFINE(NEED_LUCID)
3376   XE_APPEND(lwlib-Xlw.o, lwlib_objs) ;;
3377 esac
3378
3379 AC_SUBST(lwlib_objs)
3380
3381 test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA)
3382 test "$with_dialogs"    = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA)
3383
3384 if test "$athena_3d" = "yes"; then
3385   test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
3386   test "$with_dialogs"    = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
3387 fi
3388
3389 case "$with_widgets" in athena* ) AC_DEFINE(LWLIB_WIDGETS_ATHENA);; esac
3390 test "$with_widgets" != "no" && test "$with_widgets" != "msw" && \
3391         AC_DEFINE(LWLIB_TABS_LUCID)
3392
3393 test "$with_menubars"   != "no"    && AC_DEFINE(HAVE_MENUBARS)
3394 test "$with_scrollbars" != "no"    && AC_DEFINE(HAVE_SCROLLBARS)
3395 test "$with_dialogs"    != "no"    && AC_DEFINE(HAVE_DIALOGS)
3396 test "$with_toolbars"   != "no"    && AC_DEFINE(HAVE_TOOLBARS)
3397 test "$with_widgets"    != "no"    && AC_DEFINE(HAVE_WIDGETS)
3398
3399 test "$with_menubars"   = "lucid"  && AC_DEFINE(LWLIB_MENUBARS_LUCID)
3400 test "$with_scrollbars" = "lucid"  && AC_DEFINE(LWLIB_SCROLLBARS_LUCID)
3401
3402 test "$with_menubars"   = "motif"  && AC_DEFINE(LWLIB_MENUBARS_MOTIF)
3403 test "$with_scrollbars" = "motif"  && AC_DEFINE(LWLIB_SCROLLBARS_MOTIF)
3404 test "$with_dialogs"    = "motif"  && AC_DEFINE(LWLIB_DIALOGS_MOTIF)
3405 test "$with_widgets"    = "motif"  && AC_DEFINE(LWLIB_WIDGETS_MOTIF)
3406
3407 test "$with_menubars"   != "no"    && XE_ADD_OBJS(menubar.o)
3408 test "$with_scrollbars" != "no"    && XE_ADD_OBJS(scrollbar.o)
3409 test "$with_dialogs"    != "no"    && XE_ADD_OBJS(dialog.o)
3410 test "$with_toolbars"   != "no"    && XE_ADD_OBJS(toolbar.o)
3411
3412 if test "$with_x11" = "yes"; then
3413   test "$with_menubars"   != "no"  && XE_ADD_OBJS(menubar-x.o)
3414   test "$with_scrollbars" != "no"  && XE_ADD_OBJS(scrollbar-x.o)
3415   test "$with_dialogs"    != "no"  && XE_ADD_OBJS(dialog-x.o)
3416   test "$with_toolbars"   != "no"  && XE_ADD_OBJS(toolbar-x.o)
3417   test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-x.o)
3418 fi
3419
3420 dnl ----------------------
3421 dnl Mule-dependent options
3422 dnl ----------------------
3423
3424 test -z "$with_mule" && with_mule=no
3425 test -z "$with_file_coding" && with_file_coding=no
3426
3427 dnl if test "$with_mule" = "yes" && test ! -d "$srcdir/lisp/mule"; then
3428 dnl     echo "Attempt to Build with Mule without Mule/Lisp"
3429 dnl     echo "Please install the XEmacs/Mule tarball or"
3430 dnl     echo "rerun configure with --with-mule=no"
3431 dnl     exit 1
3432 dnl fi
3433
3434 if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then
3435   AC_DEFINE(FILE_CODING)
3436   XE_ADD_OBJS(file-coding.o)
3437 fi
3438
3439 if test "$with_mule" = "yes" ; then
3440   AC_CHECKING(for Mule-related features)
3441   AC_DEFINE(MULE)
3442   AC_DEFINE(FILE_CODING)
3443   XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o file-coding.o)
3444
3445   dnl Use -lintl to get internationalized strerror for Mule
3446   AC_CHECK_HEADERS(libintl.h)
3447   AC_CHECK_LIB(intl, strerror)
3448
3449   AC_CHECKING(for Mule input methods)
3450   dnl Do we have the XmIm* routines?  And if so, do we want to use them?
3451   dnl XIM seems to be flaky except on Solaris...
3452   dnl test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no
3453   case "$with_xim" in "" | "yes" )
3454     AC_CHECKING(for XIM)
3455     AC_CHECK_LIB(X11, XOpenIM, with_xim=xlib, with_xim=no)
3456     dnl XIM + Lesstif is not (yet?) usable
3457     if test "$have_motif $have_lesstif" = "yes no"; then
3458       AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
3459     fi ;;
3460   esac
3461   if test "$with_xim" != "no"; then
3462     AC_DEFINE(HAVE_XIM)
3463     if test "$with_xim" = "xlib"; then
3464       AC_DEFINE(XIM_XLIB)
3465       XE_ADD_OBJS(input-method-xlib.o)
3466     fi
3467     if test "$with_xim" = "motif"; then
3468       AC_DEFINE(XIM_MOTIF)
3469       need_motif=yes
3470       XE_ADD_OBJS(input-method-motif.o)
3471     fi
3472     if test "$with_xim" = "motif"; then
3473       with_xfs=no
3474     fi
3475   fi
3476
3477   dnl "with_xfs" = "yes"
3478   if test "$with_xfs" = "yes" ; then
3479     AC_CHECKING(for XFontSet)
3480     AC_CHECK_LIB(X11, XmbDrawString, [:], with_xfs=no)
3481     if test "$with_xfs" = "yes" && test "$with_menubars" = "lucid"; then
3482       AC_DEFINE(USE_XFONTSET)
3483       if test "$with_xim" = "no" ; then
3484         XE_ADD_OBJS(input-method-xfs.o)
3485       fi
3486     fi
3487   fi dnl with_xfs
3488
3489   dnl Autodetect WNN
3490   test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
3491   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/jllib.h, ,with_wnn=no) }
3492   dnl Detour to find crypt
3493   if test "$with_wnn" != "no"; then
3494     AC_CHECK_FUNCS(crypt)
3495     test "$ac_cv_func_crypt" != "yes" && { AC_CHECK_LIB(crypt, crypt) }
3496   fi
3497   dnl Back to our regularly scheduled wnn hunting
3498   if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
3499     AC_CHECK_LIB(wnn,jl_dic_list_e,libwnn=wnn,
3500       AC_CHECK_LIB(wnn4,jl_dic_list_e,libwnn=wnn4,
3501         AC_CHECK_LIB(wnn6,jl_dic_list_e,libwnn=wnn6,
3502           AC_CHECK_LIB(wnn6_fromsrc,dic_list_e,libwnn=wnn6_fromsrc,with_wnn=no))))
3503   fi
3504   test -z "$with_wnn" && with_wnn=yes
3505   if test "$with_wnn" = "yes"; then
3506     AC_DEFINE(HAVE_WNN)
3507     XE_PREPEND(-l$libwnn, libs_x)
3508     XE_ADD_OBJS(mule-wnnfns.o)
3509     if test "$with_wnn6" != "no"; then
3510       AC_CHECK_LIB($libwnn, jl_fi_dic_list, with_wnn6=yes)
3511       test "$with_wnn6" = "yes" && AC_DEFINE(WNN6)
3512     fi
3513   fi
3514
3515   dnl Autodetect canna
3516   canna_includes_found=no
3517   if test "$with_canna" != "no"; then
3518     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3519   fi
3520   if test "$canna_includes_found" = "no" -a "$with_canna" != "no" -a \
3521       -d "/usr/local/canna/include"; then
3522     save_c_switch_site="$c_switch_site"
3523     c_switch_site="$c_switch_site -I/usr/local/canna/include"
3524     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3525     if test "$canna_includes_found" != "yes"; then
3526       c_switch_site="$save_c_switch_site"
3527       with_canna="no"
3528     fi
3529   fi
3530
3531   test -z "$with_canna" && { AC_CHECK_HEADER(canna/RK.h,         , with_canna=no) }
3532   test -z "$with_canna" && { AC_CHECK_LIB(RKC, RkBgnBun,       [:],with_canna=no) }
3533   test -z "$with_canna" && { AC_CHECK_LIB(canna,jrKanjiControl,[:],with_canna=no) }
3534   test -z "$with_canna" && with_canna=yes
3535   if test "$with_canna" = "yes"; then
3536     AC_DEFINE(HAVE_CANNA)
3537     XE_PREPEND(-lcanna -lRKC, libs_x)
3538     XE_ADD_OBJS(mule-canna.o)
3539   fi
3540
3541 else dnl "$with_mule" = "no"
3542   for feature in xim canna wnn; do
3543     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3544       AC_MSG_WARN("--with-${feature} ignored:  Not valid without Mule support")
3545     fi
3546     eval "with_${feature}=no"
3547   done
3548 fi dnl with_mule
3549
3550
3551 dnl At this point, we know whether we need the motif lib or not.
3552 if test "$need_motif" = "yes" ; then
3553   XE_PREPEND(-lXm, libs_x)
3554   dnl AIX needs the following library for use with Motif
3555   AC_CHECK_LIB(i18n, layout_object_getvalue, [XE_PREPEND(-li18n, libs_x)])
3556   XE_COMPUTE_RUNPATH()
3557 fi
3558
3559 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)
3560
3561 dnl Check for PTY support functions.
3562 dnl  getpt  is the preferred pty allocation method on glibc systems.
3563 dnl _getpty is the preferred pty allocation method on SGI systems.
3564 dnl grantpt, unlockpt, ptsname are defined by Unix98.
3565 AC_CHECK_FUNCS(getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp)
3566
3567 dnl openpty is the preferred pty allocation method on BSD and Tru64 systems.
3568 dnl openpty might be declared in pty.h or in libutil.h.
3569 AC_CHECK_FUNC(openpty, have_openpty=yes, [
3570   AC_CHECK_LIB(util, openpty, have_openpty=yes need_libutil=yes)])
3571 if test "$have_openpty" = "yes"; then
3572   AC_DEFINE(HAVE_OPENPTY)
3573   AC_CHECK_HEADERS(pty.h libutil.h)
3574   test "$need_libutil" = "yes" && XE_APPEND(-lutil, libs_system)
3575 fi
3576
3577 dnl Check for STREAM support functions.
3578 dnl Confusingly, "str" means both "string" and "SysV Streams".
3579 AC_CHECK_HEADERS(stropts.h)
3580 if test "$ac_cv_header_stropts_h" = "yes"; then
3581   AC_CHECK_FUNCS(isastream)
3582   AC_CHECK_HEADERS(strtio.h) dnl TIOCSIGNAL
3583 fi
3584
3585 dnl Use our own realpath always.
3586 XE_ADD_OBJS(realpath.o)
3587
3588 dnl Check whether the system provides getloadavg().
3589 AC_CHECK_FUNCS(getloadavg)
3590
3591 if test "$ac_cv_func_getloadavg" = "yes"; then
3592   dnl Solaris 8 declares getloadavg() in <sys/loadavg.h>.
3593   dnl glibc 2.2 declares getloadavg() in <stdlib.h>...
3594   dnl   ...if we #define _GNU_SOURCE, which we do.
3595   AC_CHECK_HEADERS(sys/loadavg.h)
3596 else
3597   dnl We define our own getloadavg() using lower level functions.
3598   XE_ADD_OBJS(getloadavg.o)
3599
3600   dnl Used by getloadavg() - does not require root priveleges
3601   AC_CHECK_LIB(kstat, kstat_open)
3602   AC_CHECK_HEADERS(kstat.h)
3603
3604   dnl Another way to get the load average
3605   AC_CHECK_LIB(kvm, kvm_read)
3606 fi
3607
3608 dnl If netdb.h does not declare h_errno, we must declare it by hand.
3609 AC_MSG_CHECKING(whether netdb declares h_errno)
3610 AC_TRY_LINK([#include <netdb.h>],
3611   [return h_errno;],
3612   [AC_MSG_RESULT(yes)
3613    AC_DEFINE(HAVE_H_ERRNO)],
3614   [AC_MSG_RESULT(no)])
3615
3616 AC_MSG_CHECKING(for sigsetjmp)
3617 AC_TRY_COMPILE([#include <setjmp.h>],
3618         [sigjmp_buf bar; sigsetjmp (bar, 0);],
3619   [AC_MSG_RESULT(yes)
3620    AC_DEFINE(HAVE_SIGSETJMP)],
3621   [AC_MSG_RESULT(no)])
3622
3623 AC_MSG_CHECKING(whether localtime caches TZ)
3624 AC_CACHE_VAL(emacs_cv_localtime_cache,
3625 [if test "$ac_cv_func_tzset" = "yes"; then
3626 AC_TRY_RUN([#include <time.h>
3627 #if STDC_HEADERS
3628 # include <stdlib.h>
3629 #endif
3630 extern char **environ;
3631 unset_TZ ()
3632 {
3633   char **from, **to;
3634   for (to = from = environ; (*to = *from); from++)
3635     if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
3636       to++;
3637 }
3638 char TZ_GMT0[] = "TZ=GMT0";
3639 char TZ_PST8[] = "TZ=PST8";
3640 main()
3641 {
3642   time_t now = time ((time_t *) 0);
3643   int hour_GMT0, hour_unset;
3644   if (putenv (TZ_GMT0) != 0)
3645     exit (1);
3646   hour_GMT0 = localtime (&now)->tm_hour;
3647   unset_TZ ();
3648   hour_unset = localtime (&now)->tm_hour;
3649   if (putenv (TZ_PST8) != 0)
3650     exit (1);
3651   if (localtime (&now)->tm_hour == hour_GMT0)
3652     exit (1);
3653   unset_TZ ();
3654   if (localtime (&now)->tm_hour != hour_unset)
3655     exit (1);
3656   exit (0);
3657 }], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
3658 [# If we have tzset, assume the worst when cross-compiling.
3659 emacs_cv_localtime_cache=yes])
3660 else
3661         # If we lack tzset, report that localtime does not cache TZ,
3662         # since we can't invalidate the cache if we don't have tzset.
3663         emacs_cv_localtime_cache=no
3664 fi],[:])dnl
3665 AC_MSG_RESULT($emacs_cv_localtime_cache)
3666 if test $emacs_cv_localtime_cache = yes; then
3667   AC_DEFINE(LOCALTIME_CACHE)
3668 fi
3669
3670 if test "$HAVE_TIMEVAL" = "yes"; then
3671 AC_MSG_CHECKING(whether gettimeofday accepts one or two arguments)
3672 AC_TRY_LINK([
3673 #ifdef TIME_WITH_SYS_TIME
3674 #include <sys/time.h>
3675 #include <time.h>
3676 #else
3677 #ifdef HAVE_SYS_TIME_H
3678 #include <sys/time.h>
3679 #else
3680 #include <time.h>
3681 #endif
3682 #endif
3683   ],
3684   [
3685   struct timeval time;
3686   gettimeofday (&time, 0);
3687 ],
3688   [AC_MSG_RESULT(two)],
3689   [AC_MSG_RESULT(one)
3690    AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)])
3691 fi
3692
3693
3694 AC_C_INLINE
3695 test "$ac_cv_c_inline" != "no" -a "$GCC" = "yes" && XE_ADD_OBJS(inline.o)
3696
3697 dnl HP-UX has a working alloca in libPW.
3698 dnl case "${GCC}${opsys}" in hpux* )
3699 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
3700 dnl esac
3701
3702 dnl AC_FUNC_ALLOCA doesn't know about DEC C's #pragma intrinsic(alloca)
3703 if test "$__DECC" != "yes"; then
3704   AC_FUNC_ALLOCA
3705   test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
3706 fi
3707
3708 dnl Check whether vfork exists and works correctly. (This does more
3709 dnl than just check for its existence.) If so, it defines HAVE_VFORK_H.
3710 dnl If not, it defines vfork to be fork.
3711 AC_FUNC_VFORK
3712
3713 dnl Check whether strcoll exists and works correctly. (This does more
3714 dnl than just check for its existence.) If so, it defines HAVE_STRCOLL.
3715 AC_FUNC_STRCOLL
3716
3717 dnl If `getpgrp' takes no argument (the POSIX.1 version), define
3718 dnl `GETPGRP_VOID'.  Otherwise, it is the BSD version, which takes a
3719 dnl process ID as an argument.
3720 AC_CHECK_FUNCS(getpgrp)
3721 AC_FUNC_GETPGRP
3722
3723 dnl We used to call AC_FUNC_MMAP here
3724 dnl Instead we now use following, suggested by Neal Becker
3725 AC_MSG_CHECKING(for working mmap)
3726 case "$opsys" in ultrix* ) have_mmap=no ;; *)
3727 AC_TRY_RUN([#include <stdio.h>
3728 #include <unistd.h>
3729 #include <fcntl.h>
3730 #include <sys/mman.h>
3731
3732 #ifndef MAP_VARIABLE
3733 #define MAP_VARIABLE 0
3734 #endif
3735
3736 #ifndef MAP_FAILED
3737 #define MAP_FAILED -1
3738 #endif
3739
3740 int main (int argc, char *argv[])
3741 {
3742   int fd = -1;
3743   caddr_t p;
3744 #ifndef MAP_ANONYMOUS
3745   fd = open ("/dev/zero", O_RDWR);
3746   if (fd < 0)
3747     return 1;
3748 #define MAP_ANONYMOUS 0
3749 #endif
3750   if (mmap(0, 1024, PROT_READ | PROT_WRITE,
3751            MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS,
3752            fd, 0) != (void *) MAP_FAILED)
3753     return 0;
3754   perror ("conftest: mmap failed");
3755   return 1;
3756 }], have_mmap=yes, have_mmap=no) ;;
3757 esac
3758 AC_MSG_RESULT($have_mmap)
3759 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
3760
3761 dnl rel_alloc requires either GNU malloc or system malloc with mmap
3762 dnl We only turn rel_alloc on by default if mmap is available.
3763 test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
3764 if test "$rel_alloc $have_mmap" = "default yes"; then
3765   if test "$doug_lea_malloc" = "yes"; then
3766     dnl Check if malloc() calls mmap(), making rel_alloc pointless.
3767     AC_MSG_CHECKING(for M_MMAP_THRESHOLD)
3768     AC_TRY_COMPILE([#include <malloc.h>],[
3769 #ifndef M_MMAP_THRESHOLD
3770 #error No M_MMAP_THRESHOLD :-(
3771 !@+$%^&*_)(_ - unlikely to compile...
3772 #endif
3773 ], [rel_alloc=no; AC_MSG_RESULT(yes);], [rel_alloc=yes; AC_MSG_RESULT(no);])
3774   else
3775     rel_alloc=yes
3776   fi
3777 fi
3778 test "$rel_alloc" = "yes" && AC_DEFINE(REL_ALLOC)
3779
3780 dnl Check for terminal I/O variants
3781 dnl TERMIOS systems may have termio.h, but not vice-versa, I think.
3782 AC_CHECK_HEADER(termios.h,
3783   AC_DEFINE(HAVE_TERMIOS)
3784   AC_DEFINE(SIGNALS_VIA_CHARACTERS)
3785   AC_DEFINE(NO_TERMIO),
3786   [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])])
3787
3788
3789 dnl Check for Internet sockets.
3790 AC_CHECK_FUNC(socket,
3791  [AC_CHECK_HEADER(netinet/in.h,
3792    [AC_CHECK_HEADER(arpa/inet.h, [
3793   AC_DEFINE(HAVE_SOCKETS)
3794       AC_MSG_CHECKING("for sun_len member in struct sockaddr_un")
3795       AC_TRY_LINK([
3796 #include <sys/types.h>
3797 #include <sys/socket.h>
3798 #include <sys/un.h>
3799       ],
3800       [static struct sockaddr_un x; x.sun_len = 1;],
3801       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)],
3802       [AC_MSG_RESULT(no)])
3803       AC_MSG_CHECKING("for ip_mreq struct in netinet/in.h")
3804       AC_TRY_LINK([
3805 #include <sys/types.h>
3806 #include <netinet/in.h>
3807       ],
3808       [static struct ip_mreq x;],
3809       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MULTICAST)],
3810       [AC_MSG_RESULT(no)])])])])
3811
3812 dnl Check for SYS V IPC. (Inferior to sockets.)
3813 AC_CHECK_FUNC(msgget,
3814   [AC_CHECK_HEADER(sys/ipc.h,
3815     [AC_CHECK_HEADER(sys/msg.h,
3816       [AC_DEFINE(HAVE_SYSVIPC)])])])
3817
3818 dnl Check for directory variants
3819 AC_CHECK_HEADER(dirent.h, [AC_DEFINE(SYSV_SYSTEM_DIR)],
3820   [AC_CHECK_HEADER(sys/dir.h, , [AC_DEFINE(NONSYSTEM_DIR_LIBRARY)])])
3821
3822 dnl Check for nlist.h
3823 AC_CHECK_HEADER(nlist.h, AC_DEFINE(NLIST_STRUCT), )
3824
3825 dnl Check for sound of various sorts.
3826
3827 dnl Autodetect native sound
3828 AC_CHECKING("for sound support")
3829 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
3830
3831 if test "$with_native_sound" != "no"; then
3832   dnl Maybe sound is already on include path...
3833   if test -n "$native_sound_lib"; then
3834     AC_CHECK_HEADER(multimedia/audio_device.h,
3835       [sound_found=yes sound_cflags=""
3836       XE_ADD_OBJS(sunplay.o)])
3837   fi
3838
3839   dnl Autodetect Sun native sound from SUNWaudmo package
3840   if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
3841     sound_found=yes
3842     XE_ADD_OBJS(sunplay.o)
3843     if test -d "/usr/demo/SOUND/include"
3844       then sound_cflags="-I/usr/demo/SOUND/include"
3845       else sound_cflags="-I/usr/demo/SOUND"
3846     fi
3847     if test -z "$native_sound_lib" ; then
3848       if test -r "/usr/demo/SOUND/lib/libaudio.a"
3849         then native_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
3850         else native_sound_lib="/usr/demo/SOUND/libaudio.a"
3851       fi
3852     fi
3853   fi
3854
3855   dnl Check for SGI and HP native sound libs
3856   if test -z "$sound_found"; then
3857     case "$canonical" in
3858     *-sgi-* )
3859       if test -z "$native_sound_lib"; then
3860         AC_CHECK_LIB(audio, ALopenport, native_sound_lib="-laudio")
3861       fi
3862       if test -n "$native_sound_lib"; then
3863         sound_found=yes sound_cflags=""
3864         XE_ADD_OBJS(sgiplay.o)
3865       fi ;;
3866     hppa*-hp-hpux* )
3867       if test -z "$native_sound_lib"; then
3868         AC_CHECK_LIB(Alib, AOpenAudio, native_sound_lib="-lAlib")
3869       fi
3870       if test -n "$native_sound_lib"; then
3871         sound_found=yes
3872         XE_ADD_OBJS(hpplay.o)
3873         if test "$GCC" = "yes" # Kludge city
3874           then sound_cflags="-Dconst= -Dvolatile= -I/usr/audio/examples"
3875           else sound_cflags="+e -I/usr/audio/examples"
3876         fi
3877       fi ;;
3878     esac
3879   fi
3880
3881   dnl Check for Linux/BSD native sound
3882   if test -z "$sound_found"; then
3883     for dir in "machine" "sys" "linux"; do
3884       AC_CHECK_HEADER(${dir}/soundcard.h,
3885         sound_found=yes
3886        need_miscplay=yes
3887         XE_ADD_OBJS(linuxplay.o)
3888         [AC_DEFINE_UNQUOTED(SOUNDCARD_H_FILE, "${dir}/soundcard.h")]
3889         break)
3890     done
3891   fi
3892
3893   dnl Win32 Native uses native sound
3894   if test -z "$sound_found"; then
3895     if test "$with_msw" = "yes"; then
3896     sound_found=yes
3897     native_sound_lib=
3898     fi
3899   fi
3900
3901   test "$sound_found" = "yes" && with_native_sound=yes
3902 fi
3903
3904 if test "$with_native_sound" = "yes"; then
3905   AC_DEFINE(HAVE_NATIVE_SOUND)
3906   test -n "$native_sound_lib" && XE_PREPEND($native_sound_lib, LIBS)
3907 fi
3908
3909 dnl NAS Sound support
3910 if test "$with_nas_sound" != "no"; then
3911   AC_CHECK_HEADER(audio/audiolib.h, [
3912     AC_CHECK_LIB(audio, AuOpenServer, have_nas_sound=yes)])
3913   if test "$have_nas_sound" = "yes"; then
3914     with_nas_sound=yes
3915     AC_DEFINE(HAVE_NAS_SOUND)
3916     XE_ADD_OBJS(nas.o)
3917     XE_PREPEND(-laudio, libs_x)
3918     dnl If the nas library does not contain the error jump point,
3919     dnl then we force safer behavior.
3920     AC_EGREP_HEADER(AuXtErrorJump,audio/Xtutil.h,,[old_nas=yes; AC_DEFINE(NAS_NO_ERROR_JUMP)])
3921   else
3922     test "$with_nas_sound" = "yes" && \
3923       XE_DIE("Required NAS sound support cannot be provided.")
3924     with_nas_sound=no
3925   fi
3926 fi
3927
3928 dnl ESD Sound support
3929 if test "$with_esd_sound" != "no"; then
3930   AC_CHECK_PROG(have_esd_config, esd-config, yes, no)
3931   if test "$have_esd_config" = "yes"; then
3932     save_c_switch_site="$c_switch_site" save_LIBS="$LIBS"
3933     XE_APPEND(`esd-config --cflags`, c_switch_site)
3934     XE_PREPEND(`esd-config --libs`, LIBS)
3935     AC_CHECK_FUNC(esd_play_stream,
3936       have_esd_sound=yes,
3937       c_switch_site="$save_c_switch_site" LIBS="$save_LIBS")
3938   fi
3939
3940   if test "$have_esd_sound" = "yes"; then
3941     with_esd_sound=yes
3942     need_miscplay=yes
3943     XE_ADD_OBJS(esd.o)
3944     AC_DEFINE(HAVE_ESD_SOUND)
3945   else
3946     test "$with_esd_sound" = "yes" && \
3947       XE_DIE("Required ESD sound support cannot be provided.")
3948     with_esd_sound=no
3949   fi
3950 fi
3951
3952 test "$need_miscplay" = "yes" && XE_ADD_OBJS(miscplay.o)
3953
3954 dnl ---------------------
3955 dnl TTY-dependent options
3956 dnl ---------------------
3957
3958 test -z "$with_tty" && with_tty=yes
3959
3960 if test "$with_tty" = "yes"  ; then
3961   AC_CHECKING(for TTY-related features)
3962   AC_DEFINE(HAVE_TTY)
3963   XE_ADD_OBJS(console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o)
3964
3965   dnl Autodetect ncurses.
3966   if test -z "$with_ncurses"; then
3967     AC_CHECK_LIB(ncurses, tgetent, with_ncurses=yes, with_ncurses=no)
3968   fi
3969   if test "$with_ncurses" = "yes"; then
3970     AC_DEFINE(HAVE_NCURSES)
3971     AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
3972     AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
3973     XE_ADD_OBJS(terminfo.o)
3974     XE_PREPEND(-lncurses, LIBS)
3975
3976     if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then
3977       dnl Try again, and check for the bogus ncurses/ include bug.
3978       dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
3979       dnl <ncurses/unctrl.h>)
3980       save_c_switch_site="$c_switch_site"
3981       c_switch_site="$c_switch_site -I/usr/include/ncurses"
3982       AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
3983       if test "$ac_cv_header_ncurses_curses_h" = "yes"
3984         then AC_MSG_WARN("Your system has the bogus ncurses include bug.")
3985         else c_switch_site="$save_c_switch_site"
3986       fi
3987     fi
3988   else dnl "$with_ncurses" = "no"
3989     dnl Autodetect terminfo/-lcurses/-ltermlib/-ltermcap
3990     if test "$have_terminfo" = "yes"; then
3991       XE_ADD_OBJS(terminfo.o)
3992       if test -n "$libs_termcap"; then
3993         XE_PREPEND($libs_termcap, LIBS)
3994       else
3995         for lib in curses termlib termcap; do
3996           AC_CHECK_LIB($lib, tgetent, XE_PREPEND(-l${lib}, LIBS); break)
3997         done
3998       fi
3999     else dnl "$have_terminfo" = "no" && "with_ncurses" = "no"
4000       XE_ADD_OBJS(tparam.o)
4001       dnl The HP-UX curses library seems to have a badly broken version of select(2)
4002       dnl that makes "poll: interrupted system call" messages to appear and
4003       dnl Emacs suprocesses to hang (e.g. TeX compilation w/ AUCTeX) */
4004       case "$opsys" in *-hp-hpux* ) libs_termcap="-ltermcap" ;; esac
4005       if test -n "$libs_termcap"; then
4006         XE_PREPEND($libs_termcap, LIBS)
4007       else
4008         AC_CHECK_LIB(curses, tgetent, XE_PREPEND(-lcurses, LIBS),
4009           AC_CHECK_LIB(termcap, tgetent, XE_PREPEND(-ltermcap, LIBS),
4010             XE_ADD_OBJS(termcap.o)))
4011       fi
4012     fi
4013   fi
4014   AC_DEFINE_UNQUOTED(CURSES_H_FILE, "${curses_h_file-curses.h}")
4015   AC_DEFINE_UNQUOTED(TERM_H_FILE, "${term_h_file-term.h}")
4016
4017   dnl Autodetect gpm
4018   test -z "$with_gpm" && { AC_CHECK_HEADER(gpm.h, , with_gpm=no) }
4019   test -z "$with_gpm" && { AC_CHECK_LIB(gpm, Gpm_Open, with_gpm=yes, with_gpm=no) }
4020   if test "$with_gpm" = "yes"; then
4021     AC_DEFINE(HAVE_GPM)
4022     XE_ADD_OBJS(gpmevent.o)
4023     XE_PREPEND(-lgpm, LIBS)
4024   fi
4025
4026 else dnl "$with_tty" = "no"
4027   for feature in ncurses gpm; do
4028     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
4029       AC_MSG_WARN("--with-${feature} ignored:  Not valid without TTY support")
4030     fi
4031     eval "with_${feature}=no"
4032   done
4033 fi dnl with_tty
4034
4035 dnl Do we need event-unixoid.o ?
4036 test "$with_x11" = "yes" -o "$with_tty" = "yes" && XE_ADD_OBJS(event-unixoid.o)
4037
4038 dnl Database support
4039 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
4040 dnl On FreeBSD, both DB and DBM are part of libc.
4041 dnl By default, we check for DBM support in libgdbm, then libc, then libdbm.
4042
4043 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
4044   != "no no no" && AC_CHECKING(for database support)
4045
4046 dnl Check for ndbm.h, required for either kind of DBM support.
4047 if test "$with_database_gdbm $with_database_dbm" != "no no"; then
4048   AC_CHECK_HEADER(ndbm.h, [:], [
4049     test "$with_database_gdbm" = "yes" -o \
4050          "$with_database_dbm"  = "yes" && \
4051       XE_DIE("Required DBM support cannot be provided.")
4052     with_database_gdbm=no with_database_dbm=no])
4053 fi
4054
4055 dnl Check for DBM support in libgdbm.
4056 if test "$with_database_gdbm" != "no"; then
4057   AC_CHECK_LIB(gdbm, dbm_open, [
4058    with_database_gdbm=yes with_database_dbm=no libdbm=-lgdbm], [
4059    if test "$with_database_gdbm" = "yes"; then
4060      XE_DIE("Required GNU DBM support cannot be provided.")
4061    fi
4062    with_database_gdbm=no])
4063 fi
4064
4065 dnl Check for DBM support in libc and libdbm.
4066 if test "$with_database_dbm" != "no"; then
4067   AC_CHECK_FUNC(dbm_open, [with_database_dbm=yes libdbm=], [
4068     AC_CHECK_LIB(dbm, dbm_open, [with_database_dbm=yes libdbm=-ldbm], [
4069       test "$with_database_dbm" = "yes" && \
4070         XE_DIE("Required DBM support cannot be provided.")
4071       with_database_dbm=no])])
4072 fi
4073
4074 dnl Tell make about the DBM support we detected.
4075 test -n "$libdbm" && XE_PREPEND("$libdbm", LIBS)
4076 test "$with_database_gdbm" = "yes" -o \
4077      "$with_database_dbm"  = "yes" && \
4078   AC_DEFINE(HAVE_DBM)
4079
4080 dnl Check for Berkeley DB.
4081 if test "$with_database_berkdb" != "no"; then
4082   AC_MSG_CHECKING(for Berkeley db.h)
4083   for header in "db/db.h" "db.h"; do
4084     AC_TRY_COMPILE([
4085 #include <stdlib.h>
4086 #if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1)
4087 #ifdef HAVE_INTTYPES_H
4088 #define __BIT_TYPES_DEFINED__
4089 #include <inttypes.h>
4090 typedef uint8_t  u_int8_t;
4091 typedef uint16_t u_int16_t;
4092 typedef uint32_t u_int32_t;
4093 #ifdef WE_DONT_NEED_QUADS
4094 typedef uint64_t u_int64_t;
4095 #endif
4096 #endif
4097 #endif
4098 #include <$header>
4099 ],[], db_h_file="$header"; break)
4100   done
4101   if test -z "$db_h_file"
4102   then AC_MSG_RESULT(no); with_database_berkdb=no
4103   else AC_MSG_RESULT($db_h_file)
4104   fi
4105
4106   if test "$with_database_berkdb" != "no"; then
4107     AC_MSG_CHECKING(for Berkeley DB version)
4108     AC_EGREP_CPP(yes,
4109 [#include <$db_h_file>
4110 #if DB_VERSION_MAJOR > 1
4111 yes
4112 #endif
4113 ], [AC_MSG_RESULT(2); dbfunc=db_open], [AC_MSG_RESULT(1); dbfunc=dbopen])
4114     AC_CHECK_FUNC($dbfunc,     with_database_berkdb=yes need_libdb=no, [
4115     AC_CHECK_LIB(db, $dbfunc,  with_database_berkdb=yes need_libdb=yes)])
4116   fi
4117
4118   if test "$with_database_berkdb" = "yes"; then
4119     AC_DEFINE_UNQUOTED(DB_H_FILE, "$db_h_file")
4120     AC_DEFINE(HAVE_BERKELEY_DB)
4121     test "$need_libdb" = "yes" && XE_PREPEND(-ldb, LIBS)
4122   else with_database_berkdb=no
4123   fi
4124 fi
4125
4126 if test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
4127      != "no no no"; then
4128   AC_DEFINE(HAVE_DATABASE)
4129   XE_ADD_OBJS(database.o)
4130 fi
4131
4132 dnl Socks support
4133 if test "$with_socks" = "yes"; then
4134   AC_CHECK_LIB(socks, SOCKSinit)
4135   test -n "$ac_cv_lib_socks_SOCKSinit" && AC_DEFINE(HAVE_SOCKS)
4136 fi
4137
4138 dnl Usage tracking (undocumented and likely unused option)
4139 if test "$usage_tracking" = "yes"; then
4140   AC_DEFINE(USAGE_TRACKING)
4141   XE_PREPEND(-Bstatic -lut -Bdynamic, LIBS)
4142 fi
4143
4144 dnl autodetect dll support
4145 if test "$with_modules" != "no"; then
4146   AC_CHECKING(for module support)
4147
4148   dnl Check for MS-Windows
4149   if test "$with_msw" = "yes"; then
4150     have_dl=yes;
4151   else
4152     dnl Find headers and libraries
4153     AC_CHECK_HEADER(dlfcn.h, [
4154       AC_CHECK_LIB(dl, dlopen, [ have_dl=yes libdl=dl], [
4155       AC_CHECK_LIB(c,  dlopen, [ have_dl=yes ])])])
4156     if test -n "$have_dl"; then
4157       AC_DEFINE(HAVE_DLOPEN)
4158     else
4159       AC_CHECK_LIB(dld, shl_load, [
4160         libdl=dld have_dl=yes;
4161         AC_DEFINE(HAVE_SHL_LOAD)], [
4162         AC_CHECK_LIB(dld, dld_init, [
4163         libdl=dld have_dl=yes;
4164         AC_DEFINE(HAVE_DLD_INIT)])])
4165     fi
4166   fi dnl end !MS-Windows
4167
4168   if test -n "$have_dl"; then
4169     dnl XE_SHLIB_STUFF (in aclocal.m4) defines $can_build_shared
4170     XE_SHLIB_STUFF
4171   fi
4172
4173   if test "$can_build_shared" = "yes"; then
4174     AC_DEFINE(HAVE_SHLIB)
4175     XE_ADD_OBJS(sysdll.o emodules.o)
4176     XE_APPEND(src, INSTALL_ARCH_DEP_SUBDIR)
4177     test -n "$libdl" && XE_PREPEND(-l${libdl}, LIBS)
4178     AC_CHECK_FUNCS(dlerror _dlerror)
4179     with_modules=yes
4180   else
4181     if test "$with_modules" = "yes"; then
4182       XE_DIE("Required module support cannot be provided.")
4183     else
4184       AC_MSG_WARN("Module support cannot be provided.")
4185     fi
4186     with_modules=no
4187   fi
4188 fi
4189
4190 dnl Unfortunately, just because we can link doesn't mean we can run.
4191 dnl One of the above link tests may have succeeded but caused resulting
4192 dnl executables to fail to run.  Also any tests using AC_TRY_RUN will
4193 dnl have reported incorrect results.
4194 AC_TRY_RUN([int main(int c,char *v[]){return 0;}],[:],[
4195   echo ""
4196   echo "*** PANIC *** The C compiler can no longer build working executables."
4197   echo "*** PANIC *** Please examine the tail of config.log for runtime errors."
4198   echo "*** PANIC *** The most likely reason for this problem is that configure"
4199   echo "*** PANIC *** links with shared libraries, but those libraries cannot be"
4200   echo "*** PANIC *** found at run time."
4201   echo "*** PANIC ***"
4202   echo "*** PANIC *** On a Linux system, edit /etc/ld.so.conf and re-run ldconfig."
4203   echo "*** PANIC *** On other systems, try telling configure where to find the"
4204   echo "*** PANIC *** shared libraries using the --site-runtime-libraries option"
4205   echo "*** PANIC ***"
4206   echo "*** PANIC *** Another way to shoot yourself in the foot is to specify"
4207   echo "*** PANIC *** --with-FEATURE when FEATURE is not actually installed"
4208   echo "*** PANIC *** on your system.  Don't do that."
4209   exit 1])
4210
4211 dnl Process support
4212 if test "$win32_processes" = "yes"; then
4213   XE_ADD_OBJS(process-nt.o)
4214 else
4215   AC_DEFINE(HAVE_UNIX_PROCESSES)
4216   XE_ADD_OBJS(process-unix.o)
4217 fi
4218
4219 dnl --------------------------------
4220 dnl Compute SUBST-itutable variables
4221 dnl --------------------------------
4222
4223 dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM)
4224 dnl Use XE_SPACE instead of plain assignment statements to remove extraneous blanks
4225 XE_SPACE(CFLAGS, $CFLAGS)
4226 XE_SPACE(extra_objs, $extra_objs)
4227 XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system)
4228 XE_SPACE(c_switch_window_system, $c_switch_x_site $X_CFLAGS)
4229 XE_SPACE(c_switch_all, $c_switch_general $c_switch_window_system)
4230 XE_SPACE(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
4231 XE_SPACE(ld_switch_window_system, $ld_switch_x_site)
4232 XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system)
4233 XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
4234 XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $X_PRE_LIBS)
4235 XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general)
4236
4237 dnl Compute lists of Makefiles and subdirs
4238 AC_SUBST(SRC_SUBDIR_DEPS)
4239 XE_APPEND(src, MAKE_SUBDIR)
4240 internal_makefile_list="Makefile.in"
4241 SUBDIR_MAKEFILES=''
4242 test -d lock || mkdir lock
4243 for dir in $MAKE_SUBDIR; do
4244   case "$dir" in */* ) dnl Implement mkdir -p
4245     ( for d in `echo $dir | sed 's:/: :g'` ; do
4246         test -d "$d" || mkdir "$d"; cd "$d"
4247       done ) ;;
4248    * ) test -d "$dir" || mkdir "$dir" ;;
4249   esac
4250   XE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile $dir/GNUmakefile)
4251   XE_SPACE(internal_makefile_list, $internal_makefile_list $dir/Makefile.in)
4252 done
4253 AC_SUBST(INSTALL_ARCH_DEP_SUBDIR)
4254 AC_SUBST(MAKE_SUBDIR)
4255 AC_SUBST(SUBDIR_MAKEFILES)
4256
4257 dnl Make s&m symlinks in the src directory, for config.h
4258 for dir in src/s src/m; do
4259   if test ! -d "$dir" ; then
4260     echo Making symbolic link to "$srcdir/$dir"
4261     ${LN_S} "$srcdir/$dir" "$dir"
4262   fi
4263 done
4264
4265 if test "$extra_verbose" = "yes"; then
4266   echo ""
4267   PRINT_VAR(extra_objs
4268    c_switch_general  c_switch_window_system  c_switch_all
4269   ld_switch_general ld_switch_window_system ld_switch_all
4270     ld_libs_general   ld_libs_window_system   ld_libs_all)
4271   echo ""
4272 fi
4273
4274 dnl ----------------------------------------------
4275 dnl Create some auxiliary files for developers.
4276 dnl ----------------------------------------------
4277
4278 dnl Create a .gdbinit useful for debugging XEmacs
4279 if test -f "$srcdir/src/.gdbinit" -a ! -f "src/.gdbinit"; then
4280   test "$extra_verbose" = "yes" && echo "creating src/.gdbinit"
4281   echo "source $srcdir/src/.gdbinit" > "src/.gdbinit"
4282 fi
4283
4284 dnl Create a .dbxrc useful for debugging XEmacs
4285 if test -f "$srcdir/src/.dbxrc" -a ! -f "src/.dbxrc"; then
4286   test "$extra_verbose" = "yes" && echo "creating src/.dbxrc"
4287   echo ". $srcdir/src/.dbxrc" > "src/.dbxrc"
4288 fi
4289
4290 dnl Create a useful TAGS file
4291 if test -f "$srcdir/TAGS" -a ! -f "TAGS"; then
4292   test "$extra_verbose" = "yes" && echo "creating TAGS"
4293   echo "\f
4294 $srcdir/TAGS,include" > "TAGS"
4295 fi
4296
4297 dnl Create top level .sbinit for Sun compilers
4298 if test "$__SUNPRO_C" = "yes"; then
4299   test "$extra_verbose" = "yes" && echo "creating .sbinit"
4300   ( echo "# For use with Sun WorkShop's Source browser."
4301     echo "# See sbquery(1) and sbinit(4) for more information"
4302     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
4303   ) > .sbinit
4304 fi
4305
4306 dnl There are no more compile tests; remove the core they created.
4307 rm -f core
4308
4309 dnl ----------------------------------------------
4310 dnl Substitute into Makefile, config.h and paths.h
4311 dnl ----------------------------------------------
4312
4313 dnl what sort of things to edit into Makefile, config.h and paths.h
4314 dnl configuration here uncanonicalized to avoid exceeding size limits.
4315
4316 AC_SUBST(PROGNAME)
4317 AC_SUBST(version)
4318 AC_SUBST(configuration)
4319 AC_SUBST(canonical)
4320 AC_SUBST(inststaticdir)
4321 AC_SUBST(instvardir)
4322 AC_SUBST(srcdir)
4323 AC_SUBST(bindir)
4324 AC_SUBST(datadir)
4325 AC_SUBST(pkgdir)
4326 AC_SUBST(statedir)
4327 AC_SUBST(libdir)
4328 AC_SUBST(mandir)
4329
4330 AC_SUBST(prefix)
4331 AC_SUBST(PREFIX_USER_DEFINED)
4332 dnl Yo, Stephen Bourne!  I want to marry you!
4333 PREFIX=$prefix
4334 while true; do
4335   case "$PREFIX" in
4336     *\$* ) eval "PREFIX=$PREFIX" ;;
4337     *) break ;;
4338   esac
4339 done
4340 AC_SUBST(PREFIX)
4341
4342 AC_SUBST(exec_prefix)
4343 AC_SUBST(EXEC_PREFIX_USER_DEFINED)
4344 EXEC_PREFIX=$exec_prefix
4345 while true; do
4346   case "$EXEC_PREFIX" in
4347     *\$* ) eval "EXEC_PREFIX=$EXEC_PREFIX" ;;
4348     *) break ;;
4349   esac
4350 done
4351 AC_SUBST(EXEC_PREFIX)
4352
4353 AC_SUBST(infodir)
4354 AC_SUBST(INFODIR_USER_DEFINED)
4355 INFODIR=$infodir
4356 while true; do
4357   case "$INFODIR" in
4358     *\$* ) eval "INFODIR=$INFODIR" ;;
4359     *) break ;;
4360   esac
4361 done
4362 AC_SUBST(INFODIR)
4363
4364 AC_SUBST(infopath)
4365 AC_SUBST(INFOPATH_USER_DEFINED)
4366 INFOPATH=$infopath
4367 while true; do
4368   case "$INFOPATH" in
4369     *\$* ) eval "INFOPATH=$INFOPATH" ;;
4370     *) break ;;
4371   esac
4372 done
4373 AC_SUBST(INFOPATH)
4374
4375 AC_SUBST(package_path)
4376 AC_SUBST(PACKAGE_PATH_USER_DEFINED)
4377 PACKAGE_PATH=$package_path
4378 while true; do
4379   case "$PACKAGE_PATH" in
4380     *\$* ) eval "PACKAGE_PATH=$PACKAGE_PATH" ;;
4381     *) break ;;
4382   esac
4383 done
4384 AC_SUBST(PACKAGE_PATH)
4385
4386 AC_SUBST(lispdir)
4387 AC_SUBST(LISPDIR_USER_DEFINED)
4388 LISPDIR=$lispdir
4389 while true; do
4390   case "$LISPDIR" in
4391     *\$* ) eval "LISPDIR=$LISPDIR" ;;
4392     *) break ;;
4393   esac
4394 done
4395 AC_SUBST(LISPDIR)
4396
4397 AC_SUBST(moduledir)
4398 AC_SUBST(MODULEDIR_USER_DEFINED)
4399 MODULEDIR=$moduledir
4400 while true; do
4401   case "$MODULEDIR" in
4402     *\$* ) eval "MODULEDIR=$MODULEDIR" ;;
4403     *) break ;;
4404   esac
4405 done
4406 AC_SUBST(MODULEDIR)
4407
4408 AC_SUBST(sitelispdir)
4409 AC_SUBST(SITELISPDIR_USER_DEFINED)
4410 SITELISPDIR=$sitelispdir
4411 while true; do
4412   case "$SITELISPDIR" in
4413     *\$* ) eval "SITELISPDIR=$SITELISPDIR" ;;
4414     *) break ;;
4415   esac
4416 done
4417 AC_SUBST(SITELISPDIR)
4418
4419 AC_SUBST(sitemoduledir)
4420 AC_SUBST(SITEMODULEDIR_USER_DEFINED)
4421 SITEMODULEDIR=$sitemoduledir
4422 while true; do
4423   case "$SITEMODULEDIR" in
4424     *\$* ) eval "SITEMODULEDIR=$SITEMODULEDIR" ;;
4425     *) break ;;
4426   esac
4427 done
4428 AC_SUBST(SITEMODULEDIR)
4429
4430 AC_SUBST(etcdir)
4431 AC_SUBST(ETCDIR_USER_DEFINED)
4432 ETCDIR=$etcdir
4433 while true; do
4434   case "$ETCDIR" in
4435     *\$* ) eval "ETCDIR=$ETCDIR" ;;
4436     *) break ;;
4437   esac
4438 done
4439 AC_SUBST(ETCDIR)
4440
4441 AC_SUBST(docdir)
4442 AC_SUBST(DOCDIR_USER_DEFINED)
4443 DOCDIR=$docdir
4444 while true; do
4445   case "$DOCDIR" in
4446     *\$* ) eval "DOCDIR=$DOCDIR" ;;
4447     *) break ;;
4448   esac
4449 done
4450 AC_SUBST(DOCDIR)
4451
4452 AC_SUBST(archlibdir)
4453 AC_SUBST(ARCHLIBDIR_USER_DEFINED)
4454 ARCHLIBDIR=$archlibdir
4455 while true; do
4456   case "$ARCHLIBDIR" in
4457     *\$* ) eval "ARCHLIBDIR=$ARCHLIBDIR" ;;
4458     *) break ;;
4459   esac
4460 done
4461 AC_SUBST(ARCHLIBDIR)
4462
4463 AC_SUBST(docdir)
4464 AC_SUBST(bitmapdir)
4465 AC_SUBST(extra_objs)
4466
4467 dnl The following flags combine all the information from:
4468 dnl - command line options (user always gets priority)
4469 dnl - user environment variables
4470 dnl - determined by configure
4471 dnl - the s&m header files (required for ellcc)
4472 AC_SUBST(machfile)
4473 AC_SUBST(opsysfile)
4474 AC_SUBST(c_switch_general)
4475 AC_SUBST(c_switch_window_system)
4476 AC_SUBST(c_switch_all)
4477 AC_SUBST(ld_switch_general)
4478 AC_SUBST(ld_switch_window_system)
4479 AC_SUBST(ld_switch_all)
4480 AC_SUBST(ld_libs_general)
4481 AC_SUBST(ld_libs_window_system)
4482 AC_SUBST(ld_libs_all)
4483 AC_SUBST(CFLAGS)
4484 AC_SUBST(CPPFLAGS)
4485 AC_SUBST(LDFLAGS)
4486 RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
4487 AC_SUBST(RECURSIVE_MAKE)
4488
4489 AC_SUBST(native_sound_lib)
4490 AC_SUBST(sound_cflags)
4491 AC_SUBST(RANLIB)
4492 AC_SUBST(dynodump_arch)
4493
4494 dnl Preliminary support for using a different compiler for xemacs itself.
4495 dnl Useful for building XEmacs with a C++ or 64-bit compiler.
4496 : ${XEMACS_CC:=$CC}
4497 AC_SUBST(XEMACS_CC)
4498
4499 dnl The default is yes
4500 if test "$with_prefix" = "yes"; then
4501   AC_DEFINE(PREFIX_USER_DEFINED)
4502 fi
4503
4504 dnl The default is no
4505 if test "$with_site_lisp" = "no"; then
4506   AC_DEFINE(INHIBIT_SITE_LISP)
4507 fi
4508 dnl The default is yes
4509 if test "$with_site_modules" = "no"; then
4510   AC_DEFINE(INHIBIT_SITE_MODULES)
4511 fi
4512
4513 XE_SPACE(ac_configure_args, $ac_configure_args)
4514 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$configuration")
4515 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "$ac_configure_args")
4516
4517 dnl Following are deprecated
4518
4519 null_string=""
4520 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE,     $null_string)
4521 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, $null_string)
4522 AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,      $null_string)
4523 AC_DEFINE_UNQUOTED(LD_SWITCH_SITE,       $null_string)
4524 AC_DEFINE_UNQUOTED(C_SWITCH_SITE,        $null_string)
4525
4526 dnl Note: as a general rule, *only* define things here that are not
4527 dnl autodetected.  For things that are autodetected, define them
4528 dnl at the point where the autodetection occurs or would occur,
4529 dnl so that the user gets immediate feedback on the results of the
4530 dnl autodetection.
4531
4532 if   test "$GNU_MALLOC"         = "yes"; then AC_DEFINE(GNU_MALLOC)
4533 elif test "$with_system_malloc" = "yes"; then AC_DEFINE(USE_SYSTEM_MALLOC)
4534 elif test "$with_debug_malloc"  = "yes"; then AC_DEFINE(USE_DEBUG_MALLOC)
4535                                               AC_DEFINE(USE_SYSTEM_MALLOC)
4536 fi
4537 test "$with_i18n3"         = "yes" && AC_DEFINE(I18N3)
4538 test "$GCC"                = "yes" && AC_DEFINE(USE_GCC)
4539 test "$external_widget"    = "yes" && AC_DEFINE(EXTERNAL_WIDGET)
4540 test "$quick_build"        = "yes" && AC_DEFINE(QUICK_BUILD)
4541 test "$with_purify"        = "yes" && AC_DEFINE(PURIFY)
4542 test "$with_quantify"      = "yes" && AC_DEFINE(QUANTIFY)
4543 test "$with_pop"           = "yes" && AC_DEFINE(MAIL_USE_POP)
4544 test "$with_kerberos"      = "yes" && AC_DEFINE(KERBEROS)
4545 test "$with_hesiod"        = "yes" && AC_DEFINE(HESIOD)
4546 test "$use_union_type"     = "yes" && AC_DEFINE(USE_UNION_TYPE)
4547 test "$pdump"              = "yes" && AC_DEFINE(PDUMP)
4548
4549 dnl -------------------------------
4550 dnl Report on what we decided to do
4551 dnl -------------------------------
4552
4553 (
4554 dnl /etc/osversion is on SONY NEWS-OS
4555 if test -f /etc/osversion; then dnl SONY NEWS-OS
4556   echo "osversion: `cat /etc/osversion`"
4557 else
4558   echo "uname -a: `uname -a`"
4559 fi
4560 echo ""
4561 echo "$0 $quoted_arguments"
4562 ) > Installation
4563
4564 if test ! -z ${emacs_beta_version} ; then
4565   if test -z "${emacs_is_beta}" ; then
4566         xemacs_betaname=".${emacs_beta_version}"
4567   else
4568         xemacs_betaname="-b${emacs_beta_version}"
4569   fi
4570 else
4571   xemacs_betaname=""
4572 fi
4573
4574 dnl Start stdout redirection to '| tee -a Installation'
4575 (
4576 echo "
4577
4578 XEmacs ${emacs_major_version}.${emacs_minor_version}${xemacs_betaname} \"$xemacs_codename\" configured for \`$canonical'.
4579 "
4580 echo "
4581 Compilation / Installation:"
4582 echo "  Source code location:              $srcdir"
4583 echo "  Installation prefix:               $prefix"
4584 if test -n "$site_includes"; then
4585   echo "  Additional header files:           $site_includes"
4586 fi
4587 if test -n "$site_libraries"; then
4588   echo "  Additional libraries:              $site_libraries"
4589 fi
4590 if test -n "$site_prefixes"; then
4591   echo "  Additional prefixes:               $site_prefixes"
4592 fi
4593 if test -n "$runpath"; then
4594   echo "  Runtime library search path:       $runpath"
4595 fi
4596
4597 if test -n "$opsysfile"
4598 then echo "  Operating system description file: \`$opsysfile'"
4599 else echo "  Not using any operating system description file"
4600 fi
4601 if test -n "$machfile"
4602 then echo "  Machine description file:          \`$machfile'"
4603 else echo "  Not using any machine description file"
4604 fi
4605
4606 echo "  Compiler:                          $CC $CFLAGS"
4607 echo "  Relocating allocator for buffers:  $rel_alloc"
4608 echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
4609
4610 echo "
4611 Window System:"
4612 if test "$with_msw" = "yes"; then
4613   echo "  Compiling in support for the Microsoft window system."
4614 fi
4615 if test "$with_x11" = "yes"; then
4616   echo "  Compiling in support for the X window system:"
4617   echo "    - X Windows headers location:                 $x_includes"
4618   echo "    - X Windows libraries location:               $x_libraries"
4619   if test "$with_xauth" != yes; then
4620     echo "    - Xau (X authority) not available."
4621   fi
4622   if test "$with_xmu" != yes; then
4623     echo "    - Xmu library not available; substituting equivalent routines."
4624   fi
4625   if test "$with_wmcommand" != no; then
4626     echo "    - Handling WM_COMMAND properly."
4627   fi
4628 fi
4629 if test "$need_athena" = "yes"; then
4630   echo "  Compiling in support for the Athena widget set:"
4631   echo "    - Athena headers location:                    $athena_h_path"
4632   echo "    - Athena library to link:                     $athena_lib"
4633 fi
4634 case "$with_menubars" in
4635   lucid ) echo "  Using Lucid menubars." ;;
4636   motif ) echo "  Using Motif menubars."
4637           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
4638           echo "             We recommend using the Lucid menubar instead."
4639           echo "             Re-run configure with --with-menubars='lucid'." ;;
4640     msw ) echo "  Using MS-Windows menubars." ;;
4641 esac
4642 case "$with_scrollbars" in
4643   lucid  ) echo "  Using Lucid scrollbars."      ;;
4644   motif  ) echo "  Using Motif scrollbars."      ;;
4645   athena ) echo "  Using Athena scrollbars."     ;;
4646      msw ) echo "  Using MS-Windows scrollbars." ;;
4647 esac
4648 case "$with_dialogs" in
4649   motif  ) echo "  Using Motif dialog boxes."
4650            if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
4651              echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
4652              echo "             We recommend using the Athena dialog boxes instead."
4653              echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
4654              echo "             Read the PROBLEMS file for more information."
4655            fi; fi ;;
4656   athena ) echo "  Using Athena dialog boxes."     ;;
4657      msw ) echo "  Using MS-Windows dialog boxes." ;;
4658 esac
4659 case "$with_widgets" in
4660   motif  ) echo "  Using Motif native widgets."      ;;
4661   athena ) echo "  Using Athena native widgets."     ;;
4662      msw ) echo "  Using MS-Windows native widgets." ;;
4663 esac
4664 if test "$with_dragndrop" = yes; then
4665   echo "  Compiling in support for Drag'n'Drop (EXPERIMENTAL)."
4666   echo "    -  Drag'n'Drop prototype:                             $dragndrop_proto."
4667 fi
4668
4669 echo "
4670 TTY:"
4671 test "$with_ncurses" = yes && echo "  Compiling in support for ncurses."
4672 test "$with_gpm" = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
4673
4674 echo "
4675 Images:"
4676 test "$with_gif" = yes && echo "  Compiling in support for GIF  images (builtin)."
4677 if test "$with_xpm" = yes; then
4678   echo "  Compiling in support for XPM  images."
4679 elif test "$with_x11" = yes; then
4680   echo "  WARNING: -----------------------------------------------------------"
4681   echo "  WARNING: Compiling without XPM image support."
4682   if test "$xpm_problem" != ""; then
4683     echo "  Reason: $xpm_problem"
4684   fi
4685   echo "  WARNING: You should strongly consider installing XPM."
4686   echo "  WARNING: Otherwise toolbars and other graphics will look suboptimal."
4687   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
4688   echo "  WARNING: -----------------------------------------------------------"
4689 fi
4690 if test "$with_png" = yes; then
4691   echo "  Compiling in support for PNG  images."
4692 elif test "$window_system" != "none"; then
4693   echo "  WARNING: -----------------------------------------------------------"
4694   echo "  WARNING: Compiling without PNG image support."
4695   if test "$png_problem" != ""; then
4696     echo "  Reason: $png_problem"
4697   fi
4698   echo "  WARNING: You should strongly consider installing the PNG libraries."
4699   echo "  WARNING: Otherwise certain images and glyphs may not display."
4700   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
4701   echo "  WARNING: -----------------------------------------------------------"
4702 fi
4703 test "$with_jpeg" = yes && echo "  Compiling in support for JPEG images."
4704 test "$with_tiff" = yes && echo "  Compiling in support for TIFF images."
4705 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
4706
4707 echo "
4708 Sound:"
4709 test "$with_native_sound" = yes && echo "  Compiling in support for sound (native)."
4710 test "$with_nas_sound" = yes && echo "  Compiling in support for NAS (network audio system)."
4711 test "$old_nas" = yes && echo "    - NAS library lacks error trapping; will play synchronously."
4712 test "$with_esd_sound" = yes && echo "  Compiling in support for ESD (Enlightened Sound Daemon)."
4713
4714 echo "
4715 Databases:"
4716 test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley database."
4717 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
4718 test "$with_database_gdbm"   = yes && echo "  Compiling in support for GNU DBM."
4719 test "$with_ldap" = yes && echo "  Compiling in support for LDAP."
4720 if test "$with_postgresql" = yes; then
4721   echo "  Compiling in support for PostgreSQL."
4722   echo "    - Using PostgreSQL header file:  $libpq_fe_h_file"
4723   test "$with_postgresqlv7" = yes && echo "    - Using PostgreSQL V7 bindings."
4724 fi
4725
4726 echo "
4727 Internationalization:"
4728 test "$with_mule" = yes && echo "  Compiling in support for Mule (multi-lingual Emacs)."
4729 test "$with_file_coding" = yes && echo "  Compiling in support for file coding."
4730 test "$with_xim" != no && echo "  Compiling in support for XIM (X11R5+ I18N input method)."
4731 test "$with_xim" = motif && echo "    - Using Motif to provide XIM support."
4732 test "$with_xim" = xlib && echo "    - Using raw Xlib to provide XIM support."
4733 test "$with_xfs" = yes && echo "    - Using XFontSet to provide bilingual menubar."
4734 test "$with_canna" = yes && echo "  Compiling in support for Canna on Mule."
4735 if test "$with_wnn" = yes; then
4736   echo "  Compiling in support for the WNN input method on Mule."
4737   test "$with_wnn6" = yes && echo "    - Using WNN version 6."
4738 fi
4739 test "$with_i18n3" = yes && echo "  Compiling in support for I18N level 3 (doesn't currently work)."
4740
4741 echo "
4742 Mail:"
4743 test "$with_pop" = yes && echo "  Compiling in support for POP mail retrieval."
4744 test "$with_kerberos" = yes && echo "  Compiling in support for Kerberos POP authentication."
4745 test "$with_hesiod" = yes && echo "  Compiling in support for Hesiod POP server access."
4746 test -n "$mail_locking" && echo "  Compiling in support for \"$mail_locking\" mail spool file locking method."
4747
4748 echo "
4749 Other Features:"
4750 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
4751 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
4752 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
4753 test "$with_dnet" = yes && echo "  Compiling in support for DNET."
4754 test "$with_modules" = "yes" && echo "  Compiling in support for dynamic shared object modules."
4755 test "$use_union_type" = yes && echo "  Using the union type for Lisp_Objects."
4756 test "$pdump" = yes && echo "  Using the new portable dumper."
4757 test "$debug" = yes && echo "  Compiling in support for extra debugging code."
4758 test "$usage_tracking" = yes && echo "  Compiling in support for active usage tracking (Sun internal)."
4759 if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc $error_check_glyphs" \
4760   != "no no no no no no"; then
4761   echo "  WARNING: ---------------------------------------------------------"
4762   echo "  WARNING: Compiling in support for runtime error checking."
4763   echo "  WARNING: XEmacs will run noticeably more slowly as a result."
4764   echo "  WARNING: Error checking is on by default for XEmacs beta releases."
4765   echo "  WARNING: ---------------------------------------------------------"
4766 fi
4767 echo ""
4768 ) | tee -a Installation
4769 dnl echo "The above configure report is appended to \"Installation\" file."
4770 echo ""
4771
4772 dnl -----------------------------------
4773 dnl Now generate config.h and Makefiles
4774 dnl -----------------------------------
4775 dnl This has to be called in order for this variable to get into config.status
4776 AC_SUBST(internal_makefile_list)
4777 # Remove any trailing slashes in these variables.
4778 test -n "$prefix" &&
4779   prefix=`echo '' "$prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4780 test -n "$exec_prefix" &&
4781   exec_prefix=`echo '' "$exec_prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4782
4783 dnl Build Makefile.in's from Makefile.in.in's
4784 dnl except ./Makefile from $srcdir/Makefile.in
4785
4786 for file in $internal_makefile_list; do
4787   test "$file" = src/Makefile.in && \
4788     file="src/Makefile.in:src/Makefile.in.in:src/depend"
4789   XE_APPEND($file, ac_output_files)
4790 done
4791 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
4792 test "$with_modules" = "yes" && XE_APPEND(lib-src/ellcc.h, ac_output_files)
4793
4794 AC_OUTPUT($ac_output_files,
4795 [for dir in . $MAKE_SUBDIR; do
4796   (
4797     cd $dir
4798     rm -f junk.c
4799     < Makefile.in \
4800       sed -e '/^# Generated/d' \
4801           -e 's%/\*\*/#.*%%' \
4802           -e 's/^ *# */#/' \
4803 dnl Delete Makefile.in.in comment lines
4804           -e '/^##/d' \
4805 dnl Pass through CPP directives unchanged
4806           -e '/^#/ {
4807 p
4808 d
4809 }'        \
4810 dnl Quote other lines to protect from CPP substitution
4811           -e '/./ {
4812 s/\([[\"]]\)/\\\1/g
4813 s/^/"/
4814 s/$/"/
4815 }'  > junk.c;
4816
4817 dnl Create a GNUmakefile and Makefile from Makefile.in.
4818
4819 changequote(<<,>>)dnl
4820 dnl CPP_MAKEFILE(CPPFLAGS,filename)
4821 define(<<CPP_MAKEFILE>>,
4822 echo creating $dir/<<$2>>
4823 $CPP -I. -I${top_srcdir}/src <<$1>> junk.c \
4824 dnl Delete line directives inserted by $CPP
4825   | sed -e 's/^\#.*//'          \
4826 dnl Delete spurious blanks inserted by $CPP
4827         -e 's/^[ TAB][ TAB]*$//'\
4828         -e 's/^ /TAB/'          \
4829 dnl Delete blank lines
4830         -e '/^[ \f]*$/d' \
4831 dnl Restore lines quoted above to original contents.
4832         -e '/^\"/ {
4833         s/\\\([\"]\)/\1/g
4834         s/^[ TAB]*\"//
4835         s/\"[ TAB]*$//
4836 }' > Makefile.new
4837     chmod 444 Makefile.new
4838     mv -f Makefile.new <<$2>>
4839 )dnl CPP_MAKEFILE
4840
4841     CPP_MAKEFILE(,Makefile)
4842     CPP_MAKEFILE(-DUSE_GNU_MAKE,GNUmakefile)
4843 changequote([,])dnl
4844     rm -f junk.c
4845   )
4846 done
4847
4848 dnl Append AC_DEFINE information to lib-src/config.values
4849 dnl (AC_SUBST information is already there (see config.values.sh).
4850 sed < config.status >> lib-src/config.values \
4851   -e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \
4852   -e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \
4853   -e 's/^\([[^ ]]*\) $/\1 ""/' \
4854   -e 's/ 1$/ t/'
4855
4856 ],
4857 [CPP="$CPP"
4858  top_srcdir="$srcdir"
4859  MAKE_SUBDIR="$MAKE_SUBDIR"
4860 ])dnl