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