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