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