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