Sync up with r21-4-19.
[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 fi
2098
2099 dnl Feed s&m crud to src/Makefile
2100
2101 dnl Linux/powerpc needs the following magic for some reason
2102 dnl [Not needed with YellowDog 2.3 and causes link problems with YellowDog 3.0,
2103 dnl the two most popular PowerPC distributions.]
2104 dnl test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript"
2105
2106 if test "$unexec" = "unexaix.o"; then
2107 dnl AIX needs various hacks to make static linking work.
2108   if   test "$dynamic" = "no"; then
2109   start_flags="-Wl,-bnso,-bnodelcsect"
2110   test "$GCC" = "yes" && start_flags="-B/bin/ ${start_flags}"
2111   for f in "/lib/syscalls.exp" "/lib/threads.exp"; do
2112     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; fi
2113   done
2114   for f in "/usr/lpp/X11/bin/smt.exp" "/usr/bin/X11/smt.exp"; do
2115     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; break; fi
2116   done
2117   AC_CHECK_LIB(C, terminateAndUnload, XE_APPEND(-lC, libs_system))
2118   fi
2119 elif test -n "$ld_text_start_addr"; then
2120   start_flags="-T $ld_text_start_addr -e __start"
2121 fi
2122 AC_SUBST(start_flags)
2123
2124 AC_SUBST(ld_switch_shared)
2125 AC_SUBST(start_files)
2126 if test "$ordinary_link" = "no" -a "$GCC" = "yes"; then
2127  test -z "$linker" &&  linker='$(CC) -nostdlib'
2128  test -z "$lib_gcc" && lib_gcc='`$(CC) -print-libgcc-file-name`'
2129 fi
2130 test "$GCC" != "yes" && lib_gcc=
2131 AC_SUBST(ld)
2132 AC_SUBST(lib_gcc)
2133
2134 dnl ---------------------------------------------------------------
2135 dnl Add site and system specific flags to compile and link commands
2136 dnl ---------------------------------------------------------------
2137
2138 dnl Allow use of either ":" or spaces for lists of directories
2139 define(COLON_TO_SPACE,
2140   [case "$[$1]" in *:* [)] [$1]="`echo '' $[$1] | sed -e 's/^ //' -e 's/:/ /g'`";; esac])dnl
2141
2142 dnl --site-libraries (multiple dirs)
2143 COLON_TO_SPACE(site_libraries)
2144 if test -n "$site_libraries"; then
2145   for arg in $site_libraries; do
2146     case "$arg" in
2147      -* ) ;;
2148      * ) test -d "$arg" || \
2149            XE_DIE("Invalid site library \`$arg': no such directory")
2150        arg="-L${arg}" ;;
2151     esac
2152     XE_APPEND($arg, ld_switch_site)
2153   done
2154 fi
2155
2156 dnl --site-includes (multiple dirs)
2157 COLON_TO_SPACE(site_includes)
2158 if test -n "$site_includes"; then
2159   for arg in $site_includes; do
2160     case "$arg" in
2161       -* ) ;;
2162       * ) test -d "$arg" || \
2163            XE_DIE("Invalid site include \`$arg': no such directory")
2164       arg="-I${arg}" ;;
2165     esac
2166     XE_APPEND($arg, c_switch_site)
2167   done
2168 fi
2169
2170 dnl --site-prefixes (multiple dirs)
2171 dnl --site-prefixes=dir1:dir2 is a convenient shorthand for
2172 dnl --site-libraries=dir1/lib:dir2/lib --site-includes=dir1/include:dir2/include
2173 dnl Site prefixes take precedence over the standard places, but not over
2174 dnl site-includes and site-libraries.
2175 COLON_TO_SPACE(site_prefixes)
2176 if test -n "$site_prefixes"; then
2177   for dir in $site_prefixes; do
2178     lib_dir="${dir}/lib"
2179     inc_dir="${dir}/include"
2180     if test ! -d "$dir"; then
2181       XE_DIE("Invalid site prefix \`$dir': no such directory")
2182     elif test ! -d "$lib_dir"; then
2183       XE_DIE("Invalid site prefix \`$dir': no such directory \`$lib_dir'")
2184     else
2185       if test -d "$inc_dir"; then
2186         XE_APPEND("-I$inc_dir", c_switch_site)
2187       fi
2188       XE_APPEND("-L$lib_dir", ld_switch_site)
2189     fi
2190   done
2191 fi
2192
2193 dnl GNU software installs by default into /usr/local/{include,lib}
2194 dnl if test -d "/usr/local/include" -a -d "/usr/local/lib"; then
2195 dnl   XE_APPEND("-L/usr/local/lib",    ld_switch_site)
2196 dnl   XE_APPEND("-I/usr/local/include", c_switch_site)
2197 dnl fi
2198
2199 dnl Extra system-specific library directories - please add to list
2200 for dir in "/usr/ccs/lib"; do
2201   test -d "$dir" && XE_APPEND(-L${dir}, ld_switch_system)
2202 done
2203
2204 dnl --site-runtime-libraries (multiple dirs)
2205 COLON_TO_SPACE(site_runtime_libraries)
2206 if test -n "$site_runtime_libraries"; then
2207   LD_RUN_PATH="`echo $site_runtime_libraries | sed -e 's/  */:/g'`"
2208   export LD_RUN_PATH
2209 fi
2210
2211 dnl Linux systems have dynamic runtime library directories listed in
2212 dnl /etc/ld.so.conf.  Since those are used at run time, it seems pretty
2213 dnl safe to use them at link time, and less controversial than forcing
2214 dnl the run-time to use the link-time libraries.  This also helps avoid
2215 dnl mismatches between the link-time and run-time libraries.
2216
2217 dnl #### Unfortunately, there are horrible libc4 and libc5 libraries
2218 dnl listed in /etc/ld.so.conf on some systems, and including them on
2219 dnl the link path leads to linking in utterly broken libc's.
2220 dnl There are many clever ways of approaching this problem,
2221 dnl but finding one that actually works...
2222
2223 dnl if test -z "$LD_RUN_PATH" -a -r "/etc/ld.so.conf"; then
2224 dnl   for dir in `cat /etc/ld.so.conf`; do
2225 dnl     test -d "$dir" && XE_APPEND(-L${dir}, ld_switch_system)
2226 dnl   done
2227 dnl   add_runtime_path=no
2228 dnl fi
2229
2230 dnl -------------------------------------
2231 dnl Compute runtime library path
2232 dnl -------------------------------------
2233
2234 if test -n "$add_runtime_path"; then :;
2235 elif test "$dynamic" = "no"; then add_runtime_path=no
2236 elif test -n "$LD_RUN_PATH"; then add_runtime_path=yes
2237 else case "$opsys" in
2238        sol2 | irix* | *bsd* | decosf* ) add_runtime_path=yes ;;
2239        * ) add_runtime_path=no ;;
2240      esac
2241 fi
2242
2243 if test "$add_runtime_path" = "yes"; then
2244   dnl Try to autodetect runtime library flag (usually -R),
2245   dnl and whether it works (or at least does no harm)
2246   AC_MSG_CHECKING("for runtime libraries flag")
2247   case "$opsys" in
2248     sol2 ) dash_r="-R" ;;
2249     decosf* | linux* | irix*) dash_r="-rpath " ;;
2250     *)
2251       dash_r=""
2252       for try_dash_r in "-R" "-R " "-rpath "; do
2253         xe_check_libs="${try_dash_r}/no/such/file-or-directory"
2254         XE_PROTECT_LINKER_FLAGS(xe_check_libs)
2255         AC_TRY_LINK(, , dash_r="$try_dash_r")
2256         xe_check_libs=""
2257         test -n "$dash_r" && break
2258       done ;;
2259   esac
2260   if test -n "$dash_r";
2261     then AC_MSG_RESULT("\"${dash_r}\"")
2262     else AC_MSG_RESULT(NONE)
2263   fi
2264 fi
2265
2266 xe_add_unique_runpath_dir='
2267   xe_add_p=yes
2268   for xe_dir in $runpath_dirs; do   dnl Uniquify
2269     test "$xe_dir" = "$xe_runpath_dir" && xe_add_p=no
2270   done
2271   if test "$xe_add_p" = "yes"; then
2272     test -n "$runpath" && runpath="${runpath}:"
2273     runpath="${runpath}${xe_runpath_dir}"
2274     runpath_dirs="$runpath_dirs $xe_runpath_dir"
2275   fi'
2276
2277
2278 dnl XE_ADD_RUNPATH_DIR(directory)
2279 define([XE_ADD_RUNPATH_DIR],[{
2280 xe_runpath_dir=$1
2281 dnl PRINT_VAR(ld_switch_site ld_switch_x_site runpath xe_runpath_dir LD_RUN_PATH xe_ldflags)
2282   test "$xe_runpath_dir" != "/lib"     -a \
2283         "$xe_runpath_dir" != "/usr/lib" -a \
2284         -n "`ls ${xe_runpath_dir}/*.s[[ol]] 2>/dev/null`" && \
2285   eval "$xe_add_unique_runpath_dir"
2286 }])dnl
2287
2288 dnl XE_COMPUTE_RUNPATH()
2289 define([XE_COMPUTE_RUNPATH],[
2290 if test "$add_runtime_path" = "yes" -a -n "$dash_r"; then
2291   dnl Remove runtime paths from current ld switches
2292   ld_switch_site=`echo   '' $ld_switch_site   | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
2293   ld_switch_x_site=`echo '' $ld_switch_x_site | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
2294   dnl PRINT_VAR(ld_switch_site ld_switch_x_site)
2295
2296   dnl Fix up Runtime path
2297   dnl If LD_RUN_PATH is set in environment, use that.
2298   dnl In this case, assume user has set the right value.
2299   runpath="" runpath_dirs=""
2300   if test -n "$LD_RUN_PATH"; then
2301     runpath="$LD_RUN_PATH"
2302   elif test "$GCC" = "yes"; then
2303     dnl Compute runpath from gcc's -v output
2304     ld_switch_run_save="$ld_switch_run"; ld_switch_run=""
2305     echo "int main(int argc, char *argv[[]]) {return 0;}" > conftest.c
2306     xe_runpath_link='${CC-cc} -o conftest -v $CFLAGS '"$xe_ldflags"' conftest.$ac_ext 2>&1 1>/dev/null'
2307     for arg in `eval "$xe_runpath_link" | grep ' -L'`; do
2308       case "$arg" in P,* | -L* | -R* )
2309         for dir in `echo '' "$arg" | sed -e 's:^ ::' -e 's/^..//' -e 'y/:/ /'`; do
2310           XE_ADD_RUNPATH_DIR("$dir")
2311         done ;;
2312       esac
2313     done
2314     ld_switch_run="$ld_switch_run_save"
2315     rm -f conftest*
2316   else
2317     dnl Add all directories with .so files to runpath
2318     for arg in $ld_switch_site $ld_switch_x_site; do
2319       case "$arg" in -L*) XE_ADD_RUNPATH_DIR(`echo '' "$arg" | sed -e 's:^ ::' -e 's/^-L//'`);; esac
2320     done
2321     dnl Sometimes /opt/SUNWdt/lib is the only installed Motif available
2322     dnl #### this test always fails here as need_motif is null
2323     if test "$opsys $need_motif" = "sol2 yes"; then
2324       xe_runpath_dir="/opt/SUNWdt/lib";
2325       eval "$xe_add_unique_runpath_dir";
2326     fi
2327   fi dnl Compute $runpath
2328
2329   if test -n "$runpath"; then
2330     ld_switch_run="${dash_r}${runpath}"
2331     XE_PROTECT_LINKER_FLAGS(ld_switch_run)
2332     test "$extra_verbose" = "yes" && echo "Setting runpath to $runpath"
2333   fi
2334 fi
2335 ])dnl
2336 XE_COMPUTE_RUNPATH()
2337
2338 dnl -----------------------------------
2339 dnl Do some misc autoconf-special tests
2340 dnl -----------------------------------
2341
2342 dnl Do the opsystem or machine files prohibit the use of the GNU malloc?
2343 dnl Assume not, until told otherwise.
2344 GNU_MALLOC=yes
2345 if test "$with_dlmalloc" != "no"; then
2346         doug_lea_malloc=yes
2347 else
2348         doug_lea_malloc=no
2349 fi
2350 after_morecore_hook_exists=yes
2351 AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
2352 AC_MSG_CHECKING(whether __after_morecore_hook exists)
2353 AC_TRY_LINK([extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0],
2354   [AC_MSG_RESULT(yes)],
2355   [AC_MSG_RESULT(no)
2356    after_morecore_hook_exists=no])
2357 if test "$system_malloc" = "yes" ; then
2358   GNU_MALLOC=no
2359   GNU_MALLOC_reason="
2360     - The GNU allocators don't work with this system configuration."
2361 elif test "$with_system_malloc" = "yes" ; then
2362   GNU_MALLOC=no
2363   GNU_MALLOC_reason="
2364     - User chose not to use GNU allocators."
2365 elif test "$with_debug_malloc" = "yes" ; then
2366   GNU_MALLOC=no
2367   GNU_MALLOC_reason="
2368     - User chose to use Debugging Malloc."
2369 fi
2370
2371 if test "$doug_lea_malloc" = "yes" -a "$GNU_MALLOC" = "yes" ; then
2372   GNU_MALLOC_reason="
2373     - Using Doug Lea's new malloc from the GNU C Library."
2374   AC_DEFINE(DOUG_LEA_MALLOC)
2375   if test "$after_morecore_hook_exists" = "no" ; then
2376     GNU_MALLOC_reason="
2377     - Using Doug Lea's new malloc from the Linux C Library."
2378     AC_DEFINE(_NO_MALLOC_WARNING_)
2379   fi
2380 fi
2381
2382 dnl #### mcheck is broken in all versions of Linux libc and glibc.
2383 dnl Try this again when 2.1 hits the streets.
2384 dnl Avoid using free-hook.c if support exists for malloc debugging in libc
2385 dnl have_libmcheck=no
2386 dnl if test "$error_check_malloc" = "yes" -a \
2387 dnl    "$have_glibc" = "yes" -a \
2388 dnl    "$doug_lea_malloc" = "yes"; then
2389 dnl   AC_CHECK_HEADERS(mcheck.h)
2390 dnl   AC_CHECK_LIB(mcheck, mcheck, have_libmcheck=yes, have_libmcheck=no)
2391 dnl fi
2392
2393 dnl if test "$have_libmcheck" = "yes"; then
2394 dnl   AC_DEFINE(HAVE_LIBMCHECK)
2395 dnl   libmcheck=-lmcheck
2396 dnl   AC_SUBST(libmcheck)
2397 dnl fi
2398
2399 dnl Some other nice autoconf tests.  If you add a test here which
2400 dnl should make an entry in src/config.h, do not forget to add an
2401 dnl #undef clause to src/config.h.in for autoconf to modify.
2402
2403 AC_PROG_RANLIB
2404 AC_PROG_INSTALL
2405 AC_PROG_YACC
2406
2407 dnl checks for header files
2408 AC_CHECK_HEADERS(dnl
2409   a.out.h dnl
2410   elf.h dnl
2411   cygwin/version.h dnl
2412   fcntl.h dnl
2413   inttypes.h dnl
2414   libgen.h dnl
2415   locale.h dnl
2416   mach/mach.h dnl
2417   sys/param.h dnl
2418   sys/pstat.h dnl
2419   sys/time.h dnl
2420   sys/timeb.h dnl
2421   sys/un.h dnl
2422   ulimit.h dnl
2423   unistd.h dnl
2424 )
2425 AC_HEADER_SYS_WAIT
2426 AC_HEADER_STDC
2427 AC_HEADER_TIME
2428 AC_DECL_SYS_SIGLIST
2429
2430
2431 dnl ----------------------------------------------------------------
2432 dnl Checking for utime() or utimes().
2433 dnl We prefer utime, since it is more standard.
2434 dnl Some systems have utime.h but do not declare the struct anyplace,
2435 dnl so we use a more sophisticated test for utime than AC_CHECK_FUNCS.
2436 dnl ----------------------------------------------------------------
2437 AC_MSG_CHECKING(for utime)
2438 AC_TRY_COMPILE([#include <sys/types.h>
2439 #include <utime.h>],
2440 [struct utimbuf x; x.actime = x.modtime = 0; utime ("/", &x);],
2441   [AC_MSG_RESULT(yes)
2442    AC_DEFINE(HAVE_UTIME)],
2443   [AC_MSG_RESULT(no)
2444    dnl We don't have utime(); how about utimes()?
2445    AC_CHECK_FUNCS(utimes)])
2446
2447
2448 dnl checks for typedefs
2449 AC_TYPE_SIGNAL
2450 AC_TYPE_SIZE_T
2451 AC_TYPE_PID_T
2452 AC_TYPE_UID_T
2453 AC_TYPE_MODE_T
2454 AC_TYPE_OFF_T
2455 AC_CHECK_TYPE(ssize_t, int)
2456
2457 dnl check for Unix98 socklen_t
2458 AC_MSG_CHECKING(for socklen_t)
2459 AC_TRY_COMPILE([#include <sys/types.h>
2460 #include <sys/socket.h>
2461 socklen_t x;
2462 ],[],[AC_MSG_RESULT(yes)],[
2463 AC_TRY_COMPILE([#include <sys/types.h>
2464 #include <sys/socket.h>
2465 int accept (int, struct sockaddr *, size_t *);
2466 ],[],[
2467 AC_MSG_RESULT(size_t)
2468 AC_DEFINE(socklen_t,size_t)], [
2469 AC_MSG_RESULT(int)
2470 AC_DEFINE(socklen_t,int)])])
2471
2472 AC_MSG_CHECKING(for struct timeval)
2473 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2474 #include <sys/time.h>
2475 #include <time.h>
2476 #else
2477 #ifdef HAVE_SYS_TIME_H
2478 #include <sys/time.h>
2479 #else
2480 #include <time.h>
2481 #endif
2482 #endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
2483   [AC_MSG_RESULT(yes)
2484   HAVE_TIMEVAL=yes
2485   AC_DEFINE(HAVE_TIMEVAL)],
2486   [AC_MSG_RESULT(no)
2487    HAVE_TIMEVAL=no])
2488
2489 dnl checks for structure members
2490 AC_STRUCT_TM
2491 AC_STRUCT_TIMEZONE
2492
2493 dnl checks for compiler characteristics
2494 AC_C_CONST
2495
2496 dnl check for Make feature
2497 AC_PROG_MAKE_SET
2498
2499 dnl check byte order
2500 AC_C_BIGENDIAN
2501
2502 dnl define SIZEOF_TYPE
2503 AC_CHECK_SIZEOF(short)
2504 if test "$ac_cv_sizeof_short" = 0; then
2505   echo ""
2506   echo "*** PANIC *** Configure tests are not working - compiler is broken."
2507   echo "*** PANIC *** Please examine config.log for compilation errors."
2508   exit 1
2509 fi
2510 AC_CHECK_SIZEOF(int)
2511 AC_CHECK_SIZEOF(long)
2512 AC_CHECK_SIZEOF(long long)
2513 AC_CHECK_SIZEOF(void *)
2514
2515 dnl Cygwin from 1003022 has intptr_t, uintptr_t in <cygwin/types.h>
2516 case $opsys in
2517   cygwin* ) AC_EGREP_HEADER([typedef.*intptr_t;], [cygwin/types.h],
2518                             [AC_MSG_RESULT(yes)
2519                              AC_DEFINE(INTPTR_T_IN_CYGWIN_TYPES_H,1)],
2520                             [AC_MSG_RESULT(no)]) ;;
2521 esac
2522
2523 dnl check for long file names
2524 AC_SYS_LONG_FILE_NAMES
2525
2526 dnl -lm is required by LISP_FLOAT_TYPE, among other things
2527 AC_CHECK_FUNC(sin, ,AC_CHECK_LIB(m, sin))
2528
2529 dnl Floating operation support is now unconditional
2530 AC_DEFINE(LISP_FLOAT_TYPE)
2531
2532 AC_TRY_LINK([#include <math.h>],
2533   [return atanh(1.0) + asinh(1.0) + acosh(1.0); ],
2534   AC_DEFINE(HAVE_INVERSE_HYPERBOLIC))
2535
2536 dnl Determine type of mail locking from configure args and s&m headers
2537 AC_CHECKING(type of mail spool file locking)
2538 AC_CHECK_FUNCS(lockf flock)
2539 dnl The mail_use_xxx variables are set according to the s&m headers.
2540 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
2541 test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
2542 test -z "$mail_locking" -a "$mail_use_locking" = "yes" && mail_locking=locking
2543 if   test -z "$mail_locking"; then
2544   case "$opsys" in cygwin* | mingw*)
2545     mail_locking=pop ;;
2546   esac
2547 fi
2548
2549 if   test "$mail_locking" = "lockf"; then AC_DEFINE(MAIL_LOCK_LOCKF)
2550 elif test "$mail_locking" = "flock"; then AC_DEFINE(MAIL_LOCK_FLOCK)
2551 elif test "$mail_locking" = "locking"; then AC_DEFINE(MAIL_LOCK_LOCKING)
2552 elif test "$mail_locking" = "pop"; then
2553   with_pop=yes
2554   mail_locking=
2555 else mail_locking="dot-locking"; AC_DEFINE(MAIL_LOCK_DOT)
2556 fi
2557 test "$mail_locking" = "lockf" -a "$ac_cv_func_lockf" != "yes" && \
2558   XE_DIE("lockf mail locking requested but not available.")
2559 test "$mail_locking" = "flock" -a "$ac_cv_func_flock" != "yes" && \
2560   XE_DIE("flock mail locking requested but not available.")
2561 test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \
2562   XE_DIE("locking mail locking requested but not available.")
2563
2564 case "$opsys" in decosf*)
2565   AC_CHECK_LIB(pthreads, cma_open)
2566   test "$ac_cv_lib_pthreads_cma_open" = "yes" && \
2567     c_switch_site="$c_switch_site -threads" ;;
2568 esac
2569
2570 dnl ----------------------------------------------------------------
2571 dnl Miscellaneous flags
2572 dnl ----------------------------------------------------------------
2573
2574 AC_MSG_CHECKING(whether the -xildoff compiler flag is required)
2575 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
2576   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
2577     then AC_MSG_RESULT(no);
2578     else AC_MSG_RESULT(yes); XE_APPEND(-xildoff, ld_switch_site)
2579   fi
2580   else AC_MSG_RESULT(no)
2581 fi
2582
2583 dnl Link with "-z ignore" on Solaris if supported
2584 if test "$opsys" = "sol2"; then
2585   if test "$os_release" -ge 506; then
2586     AC_MSG_CHECKING(for \"-z ignore\" linker flag)
2587     case "`ld -h 2>&1`" in
2588       *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
2589         XE_PREPEND(-z ignore, ld_switch_site) ;;
2590       *) AC_MSG_RESULT(no) ;;
2591     esac
2592   fi
2593 fi
2594
2595 dnl ----------------------
2596 dnl Choose a window system
2597 dnl ----------------------
2598
2599 AC_CHECKING("for specified window system")
2600
2601 dnl Autodetection of Gdk libraries and includes
2602 dnl -------------------------------------------
2603 dnl On some systems (FreeBSD springs to mind), they use
2604 dnl versions on the utility routines, so instead of gtk-config
2605 dnl you must use gtk12-config, etc, etc.
2606
2607 GNOME_CONFIG=no
2608 GTK_CONFIG=no
2609
2610 if test "$with_gnome" != "no"; then
2611    AC_MSG_CHECKING(for GNOME configuration script)
2612    for possible in gnome-config
2613    do
2614       possible_version=`${possible} --version 2> /dev/null`
2615       if test "x${possible_version}" != "x"; then
2616               GNOME_CONFIG="${possible}"
2617               with_gnome=yes
2618               with_gtk=yes
2619               break
2620       fi
2621    done
2622    AC_MSG_RESULT([${GNOME_CONFIG}])
2623 fi
2624
2625 if test "${GNOME_CONFIG}" != "no"; then
2626       GNOME_LIBS=`${GNOME_CONFIG} --libs gnomeui`
2627       GNOME_CFLAGS=`${GNOME_CONFIG} --cflags gnomeui`
2628       AC_DEFINE(HAVE_GNOME)
2629       XE_APPEND(${GNOME_LIBS}, libs_gtk)
2630       XE_APPEND(${GNOME_CFLAGS}, c_switch_gtk)
2631 fi
2632
2633 if test "$with_gtk" != "no";then
2634    AC_MSG_CHECKING(for GTK configuration script)
2635    for possible in gtk12-config gtk14-config gtk-config
2636    do
2637       possible_version=`${possible} --version 2> /dev/null`
2638       if test "x${possible_version}" != "x"; then
2639               GTK_CONFIG="${possible}"
2640               case "${possible_version}" in
2641                 1.0.*) AC_MSG_WARN([GTK 1.2 is required, please upgrade your version of GTK.]); with_gtk=no;;
2642                 1.3.*) AC_MSG_WARN([GTK 1.3 is not supported right now]); with_gtk=no;;
2643                 1.2.*)
2644                         with_gtk=yes
2645                         break
2646                         ;;
2647                 *)     AC_MSG_WARN([Found unsupported version of GTK: $possible_version]);;
2648               esac
2649       fi
2650    done
2651    AC_MSG_RESULT([${GTK_CONFIG}])
2652 fi
2653
2654 if test "${GTK_CONFIG}" != "no"; then
2655       AC_MSG_CHECKING(gtk version)
2656       GTK_VERSION=`${GTK_CONFIG} --version`
2657       AC_MSG_RESULT(${GTK_VERSION})
2658
2659       AC_MSG_CHECKING(gtk libs)
2660       GTK_LIBS=`${GTK_CONFIG} --libs`
2661       XE_APPEND(${GTK_LIBS}, libs_gtk)
2662       AC_MSG_RESULT(${GTK_LIBS})
2663
2664       AC_MSG_CHECKING(gtk cflags)
2665       GTK_CFLAGS=`${GTK_CONFIG} --cflags`
2666       if test "$GCC" = "yes"; then
2667         GTK_CFLAGS="${GTK_CFLAGS} -Wno-shadow"
2668       fi
2669       XE_APPEND(${GTK_CFLAGS}, c_switch_gtk)
2670       AC_MSG_RESULT(${GTK_CFLAGS})
2671
2672       AC_CHECK_LIB(gdk_imlib, main, XE_PREPEND(-lgdk_imlib, libs_gtk))
2673       AC_CHECK_LIB(Imlib, Imlib_init, XE_APPEND(-lImlib, libs_gtk))
2674       AC_CHECK_FUNCS(gdk_imlib_init)
2675
2676       AC_DEFINE(HAVE_XPM)
2677       AC_DEFINE(HAVE_GTK)
2678       AC_SUBST(GTK_CONFIG)
2679
2680       window_system=gtk
2681       with_gtk=yes
2682       with_x11=no
2683
2684       test "${with_scrollbars}" != "no" && with_scrollbars=gtk
2685       test "${with_toolbars}" != no && with_toolbars=gtk
2686       test "${with_menubars}" != "no" && with_menubars=gtk
2687       test "${with_dialogs}" != "no" && with_dialogs=gtk
2688       test "${with_widgets}" != "no" && with_widgets=gtk
2689
2690       XE_ADD_OBJS(console-gtk.o device-gtk.o event-gtk.o frame-gtk.o)
2691       XE_ADD_OBJS(objects-gtk.o redisplay-gtk.o glyphs-gtk.o)
2692       XE_ADD_OBJS(select-gtk.o gccache-gtk.o)
2693       XE_ADD_OBJS(gtk-xemacs.o ui-gtk.o)
2694
2695       dnl Check for libglade support (it rocks)
2696       OLD_CFLAGS="${CFLAGS}"
2697       OLD_CPPFLAGS="${CPPFLAGS}"
2698       OLD_LDFLAGS="${LDFLAGS}"
2699       CFLAGS="${GTK_CFLAGS} ${CFLAGS}"
2700       CPPFLAGS="${GTK_CFLAGS} ${CFLAGS}"
2701       LDFLAGS="${LDFLAGS} ${GTK_LIBS}"
2702       AC_CHECK_HEADERS(glade/glade.h glade.h)
2703       AC_CHECK_LIB(xml, main, XE_PREPEND(-lxml, libs_gtk))
2704       AC_CHECK_LIB(glade, main, XE_PREPEND(-lglade, libs_gtk))
2705       AC_CHECK_LIB(glade-gnome, main, XE_PREPEND(-lglade-gnome, libs_gtk))
2706       AC_EGREP_HEADER([char \*txtdomain;], [glade/glade-xml.h],
2707                       [AC_MSG_RESULT(yes)
2708                        AC_DEFINE(LIBGLADE_XML_TXTDOMAIN,1)],
2709                       [AC_MSG_RESULT(no)])
2710       CFLAGS="${OLD_CFLAGS}"
2711       CPPFLAGS="${OLD_CPPFLAGS}"
2712       LDFLAGS="${OLD_LDFLAGS}"
2713 fi
2714
2715 dnl We may eventually prefer gtk/gdk over vanilla X11...
2716
2717 if test "$with_x11" != "no"; then
2718   dnl User-specified --x-includes or --x-libraries implies --with-x11.
2719   test "$x_includes $x_libraries" != "NONE NONE" && \
2720    window_system=x11 with_x11=yes
2721
2722   dnl Autodetection of X11 libraries and includes
2723   dnl -------------------------------------------
2724   dnl AC_PATH_XTRA thinks it can find our X headers and includes, but
2725   dnl it often gets it wrong, so we only use it as a last resort.
2726
2727   dnl $OPENWINHOME implies --x-includes and --x-libraries
2728   dnl Not (yet) handled by autoconf2
2729   if test "$x_includes $x_libraries" = "NONE NONE" \
2730     -a -n "$OPENWINHOME" \
2731     -a "$OPENWINHOME" != "/usr/openwin" \
2732     -a -d "$OPENWINHOME"; then
2733       test -d "$OPENWINHOME/lib"           && x_libraries="$OPENWINHOME/lib"
2734       test -d "$OPENWINHOME/include"       && x_includes="$OPENWINHOME/include"
2735       test -d "$OPENWINHOME/share/include" && x_includes="$OPENWINHOME/share/include"
2736   fi
2737
2738   if test "$x_includes" = "NONE"; then
2739     dnl AC_PATH_XTRA often guesses /usr/include, when some other
2740     dnl include directory is a MUCH better guess (Linux, HP-UX 10.20).
2741     dnl This is a workaround for idiot (esp. HP) system vendors, who
2742     dnl provide a /usr/include/X11, but DON'T FULLY POPULATE IT.
2743     for dir in "/usr/X11" "/usr/X11R6"; do
2744       if test -d "$dir/include/X11"; then x_includes="$dir/include"; break; fi
2745     done
2746   fi
2747
2748   if test "$x_libraries" = "NONE"; then
2749     for dir in "/usr/X11/lib" "/usr/X11R6/lib" "/usr/lib/X11R6"; do
2750       if test -r "$dir/libX11.a"; then x_libraries="$dir"; break; fi
2751     done
2752   fi
2753
2754   AC_PATH_XTRA # Autoconf claims to find X library and include dirs for us.
2755   if test "$no_x" = "yes"
2756   then with_x11=no  window_system=none HAVE_X_WINDOWS=no
2757   else with_x11=yes window_system=x11  HAVE_X_WINDOWS=yes
2758   fi
2759 fi
2760
2761 dnl #### wmperry:: !x11 != NONE
2762 dnl case "$with_x11" in
2763 dnl  yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
2764 dnl  no  ) window_system=none HAVE_X_WINDOWS=no  ;;
2765 dnl esac
2766
2767 if test "$with_x11" = "yes"; then
2768   AC_DEFINE(HAVE_X_WINDOWS)
2769   XE_APPEND(lwlib, MAKE_SUBDIR)
2770   XE_APPEND(lwlib, SRC_SUBDIR_DEPS)
2771
2772
2773   dnl Look for Motif, but only if not found in $x_includes and $x_libraries
2774   AC_CHECK_HEADER(Xm/Xm.h, [AC_CHECK_LIB(Xm, XmStringFree, got_motif=yes)])
2775
2776   if test "$got_motif" != "yes"; then
2777     dnl Try to find Motif/CDE/Tooltalk dirs
2778     dnl These take precedence over other X libs/includes, so PRE-pend
2779     for lib_dir in "/usr/dt/lib" "/usr/lib/Motif2.1" \
2780                    "/usr/lib/Motif1.2" "/usr/lib/Motif1.1"; do
2781       inc_dir=`echo $lib_dir | sed -e 's/lib/include/'`
2782       if test -d "$lib_dir" -a -d "$inc_dir"; then
2783         case "$x_libraries" in *"$lib_dir"* ) ;; *)
2784           x_libraries="$lib_dir $x_libraries"
2785           XE_PREPEND(-L${lib_dir}, X_LIBS) ;;
2786         esac
2787         case "$x_includes" in "$inc_dir"* ) ;; *)
2788           x_includes="$inc_dir $x_includes"
2789           XE_PREPEND(-I${inc_dir}, X_CFLAGS) ;;
2790         esac
2791         break; dnl only need ONE Motif implementation!
2792         fi
2793     done
2794   fi
2795
2796   dnl Contrib X libs/includes do NOT take precedence, so AP-pend
2797   for rel in "X11R6" "X11R5" "X11R4"; do
2798     lib_dir="/usr/contrib/$rel/lib" inc_dir="/usr/contrib/$rel/include"
2799     if test -d "$lib_dir" -a -d "$inc_dir"; then
2800       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2801         x_libraries="$x_libraries $lib_dir"
2802         XE_APPEND(-L${lib_dir}, X_LIBS)
2803       esac
2804       case "$x_includes" in "$inc_dir"* ) ;; *)
2805         x_includes="$x_includes $inc_dir"
2806         XE_APPEND(-I${inc_dir}, X_CFLAGS)
2807       esac
2808       break; dnl Only need ONE X11 implementation !
2809     fi
2810   done
2811
2812   dnl Avoid version mismatch for shared library libXm.so on osf4
2813   case "$opsys" in
2814   decosf*) if test "$GCC" = yes -a -d /usr/shlib; then XE_APPEND(-L/usr/shlib, X_LIBS); fi ;;
2815   esac
2816
2817   ld_switch_x_site="$X_LIBS"
2818
2819   XE_COMPUTE_RUNPATH()
2820
2821   if test "$extra_verbose" = "yes"; then
2822     echo; echo "X11 compilation variables:"
2823     PRINT_VAR(x_libraries x_includes X_CFLAGS X_LIBS X_PRE_LIBS X_EXTRA_LIBS)
2824     echo
2825   fi
2826
2827   dnl Set up bitmaps search path.
2828   dnl The original suggestion was to unconditionally to append X11/bitmaps
2829   dnl to each element of $x_includes, I'm pretty sure this is the wrong
2830   dnl thing to do.  We test for bitmaps and X11/bitmaps directories on each
2831   dnl element and add them to BITMAPDIR if they exist.
2832   bitmapdirs=
2833   if test "$x_includes" != NONE; then
2834     for i in $x_includes; do
2835       if test -d "$i/bitmaps"; then
2836         bitmapdirs="$i/bitmaps:$bitmapdirs"
2837       fi
2838       if test -d "$i/X11/bitmaps"; then
2839         bitmapdirs="$i/X11/bitmaps:$bitmapdirs"
2840       fi
2841     done
2842     bitmapdirs=`echo "$bitmapdirs" | sed s/.$//`
2843   fi
2844   test ! -z "$bitmapdirs" && AC_DEFINE_UNQUOTED(BITMAPDIR, "$bitmapdirs")
2845
2846   dnl Autodetect defines extracted from X config by xmkmf, e.g. NARROWPROTO
2847   AC_CHECKING(for X defines extracted by xmkmf)
2848   rm -fr conftestdir
2849   if mkdir conftestdir; then
2850     cd conftestdir
2851     cat > Imakefile <<'EOF'
2852 xetest:
2853         @echo ${PROTO_DEFINES} ${STD_DEFINES}
2854 EOF
2855     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2856       # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2857       xmkmf_defines=`${MAKE-make} xetest 2>/dev/null | grep -v make`
2858     fi
2859     cd ..
2860     rm -fr conftestdir
2861     for word in $xmkmf_defines; do
2862       case "$word" in 
2863       -D__STDC__*) ;;
2864       -D* )
2865         sym=`echo '' $word | sed -e 's:^ *-D::' -e 's:=.*::'`
2866         case "$word" in
2867           -D*=* ) val=`echo '' $word | sed -e 's:^.*=::'` ;;
2868           *     ) val=1 ;;
2869         esac
2870 dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above.
2871         if grep "^#define $sym " confdefs.h >/dev/null; then :; else
2872           if test "$val" = "1"
2873             then AC_DEFINE_UNQUOTED($sym)
2874             else AC_DEFINE_UNQUOTED($sym,$val)
2875           fi
2876         fi  ;;
2877       esac
2878     done
2879   fi
2880
2881   dnl make sure we can find Intrinsic.h
2882   AC_CHECK_HEADER(X11/Intrinsic.h, ,
2883    [AC_MSG_ERROR("Unable to find X11 header files.")])
2884
2885   dnl -lXt and -lX11 are required
2886   dnl Some broken systems require the magic "-b i486-linuxaout" flag
2887   AC_CHECK_LIB(X11, XOpenDisplay, have_lib_x11=yes)
2888   if test "$have_lib_x11" != "yes"; then
2889     AC_CHECK_LIB(X11, XGetFontProperty,
2890       ld_switch_x_site="-b i486-linuxaout $ld_switch_x_site",
2891       [AC_MSG_ERROR("Unable to find X11 libraries.")],
2892       -b i486-linuxaout)
2893   fi
2894   libs_x="-lX11"
2895   test "$extra_verbose" = "yes" && echo "    Setting libs_x to \"-lX11\""
2896
2897   dnl Autodetect -lXext
2898   AC_CHECK_LIB(Xext, XShapeSelectInput, XE_PREPEND(-lXext, libs_x))
2899
2900   dnl Require -lXt
2901   AC_CHECK_LIB(Xt, XtOpenDisplay, XE_PREPEND(-lXt, libs_x),
2902     AC_MSG_ERROR("Unable to find X11 libraries."))
2903
2904   AC_MSG_CHECKING(the version of X11 being used)
2905   AC_TRY_RUN([#include <X11/Intrinsic.h>
2906     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }],
2907     [./conftest foobar; x11_release=$?],[x11_release=4],[x11_release=4])
2908   AC_MSG_RESULT(R${x11_release})
2909   AC_DEFINE_UNQUOTED(THIS_IS_X11R${x11_release})
2910
2911   if test "${x11_release}" = "4"; then
2912     case "$with_widgets" in
2913       "" | "no") with_widgets=no ;;
2914       *) XE_DIE("Widget support requires X11R5 or greater") ;;
2915     esac
2916   fi
2917
2918   AC_CHECK_FUNCS(XConvertCase XtRegisterDrawable)
2919
2920   AC_CHECK_HEADERS(X11/Xlocale.h)
2921
2922   dnl XFree86 has a non-standard prototype for this X11R6 function
2923   AC_CHECK_FUNCS(XRegisterIMInstantiateCallback)
2924   AC_MSG_CHECKING(for standard XRegisterIMInstantiateCallback prototype)
2925   AC_TRY_COMPILE([
2926 #define NeedFunctionPrototypes 1
2927 #include <X11/Xlib.h>
2928 extern Bool XRegisterIMInstantiateCallback(
2929    Display*, struct _XrmHashBucketRec*, char*, char*, XIMProc, XPointer*);
2930 ], [], 
2931   [AC_MSG_RESULT(yes)],
2932   [AC_MSG_RESULT(no)
2933    AC_DEFINE(XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE)])
2934
2935   dnl autodetect -lXmu
2936   test -z "$with_xmu" && { AC_CHECK_LIB(Xmu, XmuReadBitmapDataFromFile,
2937                            with_xmu=yes, with_xmu=no) }
2938   if test "$with_xmu" = "no"; then
2939     XE_ADD_OBJS(xmu.o)
2940   else
2941     XE_PREPEND(-lXmu, libs_x)
2942     AC_DEFINE(HAVE_XMU)
2943   fi
2944
2945   dnl Autodetect -lXbsd
2946   dnl #### Someone, please add a better function than main
2947   AC_CHECK_LIB(Xbsd, main, XE_PREPEND(-lXbsd, libs_x))
2948
2949   dnl Problem with the MIT distribution of X on AIX
2950   if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then
2951     dnl X11R6 requires thread-safe code on AIX for some reason
2952     if test "$GCC" = "yes"; then
2953       dnl gcc changed the name of the `-mthreads' option to `-pthread'
2954       dnl on 2000-06-12
2955       AC_MSG_CHECKING(for name of AIX gcc threads option)
2956       case `$CC -v --help 2>&1` in
2957         *-mthreads*) aix_threads=-mthreads ;;
2958                   *) aix_threads=-pthread  ;;
2959       esac
2960       AC_MSG_RESULT($aix_threads)
2961       XE_PREPEND($aix_threads, X_CFLAGS)
2962       XE_PREPEND($aix_threads, libs_x)
2963     else
2964       dnl Try to use the thread-safe "_r" versions of xlc
2965       case "$CC" in *_r) : ;;
2966         *)
2967          xe_save_CC="$CC"
2968          CC="${CC}_r"
2969          AC_CHECK_SIZEOF(short)
2970          test "$ac_cv_sizeof_short" = 0 && CC="$xe_save_CC" ;;
2971       esac
2972     fi
2973   fi
2974
2975 fi dnl $with_x11 = yes
2976
2977 if test "$with_msw" != "no"; then
2978   AC_CHECKING(for MS-Windows)
2979   AC_CHECK_LIB(gdi32,main,with_msw=yes)
2980   if test "$with_msw" = "yes"; then
2981     AC_DEFINE(HAVE_MS_WINDOWS)
2982
2983     dnl The net installer only works with MS-Windows currently
2984     if test "$with_netinstall" = "yes"; then
2985       XE_APPEND(netinstall, MAKE_SUBDIR)
2986       XE_APPEND(netinstall, SRC_SUBDIR_DEPS)
2987       XE_APPEND(netinstall, INSTALL_ARCH_DEP_SUBDIR)
2988     fi
2989
2990     install_pp="$srcdir/lib-src/installexe.sh"
2991     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lkernel32 -lwinspool, libs_system)
2992     test "$with_dragndrop" != no && XE_APPEND(msw, dragndrop_proto)
2993     if test "$window_system" != x11; then
2994         window_system=msw
2995         test "$with_scrollbars" != "no" && with_scrollbars=msw \
2996             && XE_ADD_OBJS(scrollbar-msw.o)
2997         test "$with_menubars"   != "no" && with_menubars=msw \
2998             && XE_ADD_OBJS(menubar-msw.o)
2999         test "$with_toolbars"   != "no" && with_toolbars=msw \
3000             && XE_ADD_OBJS(toolbar-msw.o)
3001         test "$with_dialogs"   != "no" && with_dialogs=msw \
3002             && XE_ADD_OBJS(dialog-msw.o)
3003         test "$with_widgets"   != "no" && with_widgets=msw
3004     else
3005         test "$with_scrollbars" != "no" && XE_ADD_OBJS(scrollbar-msw.o)
3006         test "$with_menubars"   != "no" && XE_ADD_OBJS(menubar-msw.o)
3007         test "$with_toolbars"   != "no" && XE_ADD_OBJS(toolbar-msw.o)
3008         test "$with_dialogs"    != "no" && XE_ADD_OBJS(dialog-msw.o)
3009     fi
3010     dnl check for our special version of select
3011     AC_TRY_RUN([#include <fcntl.h>
3012     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }],
3013     [need_event_unixoid=yes; AC_DEFINE(HAVE_MSG_SELECT)])
3014     with_file_coding=yes
3015     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)
3016   fi
3017 fi
3018
3019 AC_SUBST(install_pp)
3020
3021 test -z "$window_system" && window_system="none"
3022
3023 dnl Test for features that require a window system - ANY window system
3024 if test "$window_system" = "none"; then
3025   for feature in menubars scrollbars toolbars dialogs dragndrop xface
3026   do
3027     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3028        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
3029     fi
3030     eval "with_${feature}=no"
3031   done
3032 else
3033   test -z "$with_toolbars" && with_toolbars=yes
3034 fi
3035
3036 dnl ### Test for features that require mswindows support - currently none
3037 dnl ### MS-Windows folks: add code here..... (martin)
3038 if test "$with_msw" != "yes"; then
3039   for feature in   MARTIN_IS_CLUELESS_ABOUT_MSW_FEATURES
3040   do
3041     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3042        AC_MSG_WARN([--with-$feature ignored:  Not valid without MS-Windows support])
3043     fi
3044     eval "with_${feature}=no"
3045   done
3046 else
3047   :
3048 fi
3049
3050 dnl Test for features that require X11 support
3051 if test "$with_x11" != "yes"; then
3052   dnl It ought to be reasonable to have no output device at all, and only use
3053   dnl XEmacs in --batch mode.
3054   dnl if test "$with_tty" = "no" ; then
3055   dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
3056   dnl fi
3057   for feature in tooltalk cde offix wmcommand xim xmu nas_sound
3058   do
3059     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3060        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
3061     fi
3062     eval "with_${feature}=no"
3063   done
3064 fi
3065
3066 dnl Balloon Help requires the Shape extension, not available everywhere,
3067 dnl for example not on AIX 4.3.
3068 if test "$with_x11" = "yes"; then
3069   AC_CHECK_HEADER(X11/extensions/shape.h, [
3070    AC_DEFINE(HAVE_BALLOON_HELP)
3071    XE_ADD_OBJS(balloon_help.o balloon-x.o)])
3072 fi
3073
3074 dnl FSF 19.29 has some bitmapdir stuff here.
3075 bitmapdir=
3076
3077 case "$window_system" in
3078   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
3079   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
3080   gtk  )
3081        HAVE_X_WINDOWS=no
3082        test "$with_gnome" = "yes" && echo "  Using GNOME."
3083        test "$with_gnome" = "no" && echo "  Using GTK."
3084        ;;
3085   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
3086 esac
3087
3088 case "$x_libraries" in *X11R4* )
3089   test "$opsys" = "hpux9"     && opsysfile="s/hpux9-x11r4.h"
3090   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
3091 esac
3092
3093 dnl Enable or disable proper handling of WM_COMMAND
3094 AC_CHECKING(for WM_COMMAND option);
3095 dnl if test "$with_wmcommand" = "yes"; then
3096 if test "$with_wmcommand" != "no"; then
3097   AC_DEFINE(HAVE_WMCOMMAND)
3098 fi
3099
3100 dnl Autodetect Xauth
3101 dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
3102 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
3103 test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h,          ,with_xauth=no) }
3104 test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no) }
3105 test -z "$with_xauth" && with_xauth=yes
3106 if test "$with_xauth" = "yes"; then
3107   AC_DEFINE(HAVE_XAUTH)
3108   XE_SPACE(libs_xauth, $GTK_LIBS $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
3109 fi
3110 AC_SUBST(libs_xauth)
3111
3112 dnl This one is for the static initializeds variables in
3113 dnl offix.c, so that the thing is dumped after lastfile.o
3114 AC_SUBST(dnd_objs)
3115
3116 dnl Autodetect tooltalk
3117 if test "$with_tooltalk" != "no" ; then
3118   dnl autodetect the location of tt_c.h
3119   dnl tt_c.h might be in Tt or desktop include directories
3120   for dir in "" "Tt/" "desktop/" ; do
3121     AC_CHECK_HEADER(${dir}tt_c.h, tt_c_h_file="${dir}tt_c.h"; break)
3122   done
3123   if test -z "$tt_c_h_file"; then
3124     if test "$with_tooltalk" = "yes"; then
3125       USAGE_ERROR("Unable to find required tooltalk header files.")
3126     fi
3127     with_tooltalk=no
3128   fi
3129 fi
3130 if test "$with_tooltalk" != "no" ; then
3131   for extra_libs in "" "-lI18N -lce" "-lcxx"; do
3132     AC_CHECK_LIB(tt, tt_message_create,
3133       tt_libs="-ltt $extra_libs"; break, [:],$extra_libs)
3134   done
3135   if test -z "$tt_libs"; then
3136     if test "$with_tooltalk" = "yes"; then
3137       USAGE_ERROR("Unable to find required tooltalk libraries.")
3138     fi
3139     with_tooltalk=no
3140   fi
3141 fi
3142 test -z "$with_tooltalk" && with_tooltalk=yes
3143 if test "$with_tooltalk" = "yes"; then
3144   AC_DEFINE(TOOLTALK)
3145   AC_DEFINE_UNQUOTED(TT_C_H_FILE, "$tt_c_h_file")
3146   XE_PREPEND($tt_libs, libs_x)
3147   XE_ADD_OBJS(tooltalk.o)
3148 fi
3149
3150 dnl Autodetect CDE
3151 test -z "$with_cde" && { AC_CHECK_HEADER(Dt/Dt.h,               , with_cde=no) }
3152 test -z "$with_cde" && { AC_CHECK_LIB(DtSvc, DtDndDragStart, [:], with_cde=no) }
3153 test -z "$with_cde" && with_cde=yes
3154 if test "$with_dragndrop" = no; then
3155   AC_MSG_WARN([No CDE without generic Drag'n'Drop support])
3156   with_cde=no
3157 fi
3158 if test "$with_cde" = "yes" ; then
3159   AC_DEFINE(HAVE_CDE)
3160   XE_PREPEND(-lDtSvc, libs_x)
3161   XE_APPEND(CDE, dragndrop_proto)
3162   with_tooltalk=yes # CDE requires Tooltalk
3163   need_motif=yes    # CDE requires Motif
3164 fi
3165
3166 dnl Always compile OffiX unless --without-offix is given, no
3167 dnl X11 support is compiled in, no standard Xmu is available,
3168 dnl or dragndrop support is disabled
3169 dnl Because OffiX support currently loses when more than one display
3170 dnl is in use, we now disable it by default -slb 07/10/1998.
3171 test "$window_system" != "x11" && with_offix=no
3172 if test "$with_xmu" != yes -a "$with_x11" = yes; then
3173   AC_MSG_WARN([No OffiX without real Xmu support])
3174   with_offix=no
3175 fi
3176 if test "$with_dragndrop" = no; then
3177   AC_MSG_WARN([No OffiX without generic Drag'n'Drop support])
3178   with_offix=no
3179 fi
3180 if test "$with_cde" = yes; then
3181   AC_MSG_WARN([CDE already found, disabling OffiX support])
3182   with_offix=no
3183 fi
3184 test -z "$with_offix" && with_offix=no
3185 if test "$with_offix" = "yes"; then
3186   AC_DEFINE(HAVE_OFFIX_DND)
3187   XE_APPEND(offix.o, dnd_objs)
3188   XE_APPEND(OffiX, dragndrop_proto)
3189 fi
3190 if test "$with_gtk" = "yes"; then
3191    XE_APPEND(GTK, dragndrop_proto)
3192 fi
3193
3194 dnl Autodetect Drag'n'Drop support
3195 dnl always included if CDE, Offix, or MSWindows are defined
3196 if test "$with_dragndrop" != "no" ; then
3197   AC_MSG_CHECKING(if drag and drop API is needed)
3198   if test -n "$dragndrop_proto" ; then
3199     with_dragndrop=yes
3200     AC_MSG_RESULT([yes (${dragndrop_proto} )])
3201     AC_DEFINE(HAVE_DRAGNDROP)
3202     XE_APPEND(dragdrop.o, extra_objs)
3203   else
3204     with_dragndrop=no
3205     AC_MSG_RESULT(no)
3206   fi
3207 fi
3208
3209 dnl Autodetect LDAP
3210 AC_CHECKING(for LDAP)
3211 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
3212 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
3213 if test no != "$with_ldap";then
3214   if test . != "${ldap_libs+.}";then
3215     ldap_libs=
3216     AC_CHECK_FUNC(ldap_open,dnl Allow it to be in generic "$LIBS"
3217       [with_ldap=yes
3218       test yes = "$extra_verbose" &&
3219         echo "Setting ldap_libs to $ldap_libs"],dnl
3220       [AC_CHECK_LIB(ldap, ldap_open,dnl
3221         [with_ldap=yes],dnl
3222 dnl If logic of setting these vars change, change it the same way below.
3223         [ldap_needs_lber=yes ldap_other_libs=-llber
3224 dnl This requires `AC_CACHE_VAL' (which is called by `AC_CHECK_LIB')
3225 dnl to be redefined to ignore cached (shell variable) value, as it is
3226 dnl done above, because the same variable is used in all
3227 dnl `AC_CHECK_LIB' expansions in macro invocation below.  Worse, if it
3228 dnl is not done, there is no portable way to compensate for this
3229 dnl locally since `unset' command is not supported by all shells.  The
3230 dnl other solution would be changing `AC_CHECK_LIB' so that cache
3231 dnl variable name depends on the macro OTHER-LIBRARIES argument.
3232         AC_CHECK_LIB(ldap, ldap_open,dnl
3233           [with_ldap=yes],dnl
3234           [ldap_needs_krb=yes ldap_other_libs="$ldap_other_libs -lkrb"
3235           AC_CHECK_LIB(ldap, ldap_open,dnl
3236             [with_ldap=yes],dnl
3237             [ldap_needs_des=yes ldap_other_libs="$ldap_other_libs -ldes"
3238             AC_CHECK_LIB(ldap, ldap_open,dnl
3239               [with_ldap=yes],dnl
3240               [with_ldap=no],dnl
3241               $ldap_other_libs)],dnl
3242             $ldap_other_libs)],dnl
3243           $ldap_other_libs)])
3244       if test yes = "$with_ldap" -a yes != "$ldap_needs_lber";then
3245 dnl Need this check since `LDAP_OPT_ON' is (currently) used only with
3246 dnl `ldap_set_option', and the latter may not exist at all, for which
3247 dnl is testing later.  So `LDAP_OPT_ON' is not necessarily defined.
3248         AC_CACHE_CHECK([for LDAP_OPT_ON definition],xe_cv_have_LDAP_OPT_ON,
3249           [AC_TRY_COMPILE(
3250 [#include <lber.h>
3251 #include <ldap.h>
3252 #ifdef LDAP_OPT_ON
3253 /* Relying on const defined by ac_c_const (upper case). */
3254 const void *const v = LDAP_OPT_ON;
3255 #else /* !defined (LDAP_OPT_ON) */
3256 choke me
3257 #endif /* !defined (LDAP_OPT_ON) */],[],
3258             [xe_cv_have_LDAP_OPT_ON=yes],
3259             [xe_cv_have_LDAP_OPT_ON=no])])
3260         if test yes = "$xe_cv_have_LDAP_OPT_ON";then
3261           AC_CACHE_CHECK([LDAP_OPT_ON linking],
3262             xe_cv_LDAP_OPT_ON_links,
3263             [xe_save_LIBS="$LIBS"
3264             LIBS="-lldap $LIBS"
3265 AC_TRY_LINK(
3266 [#include <lber.h>
3267 #include <ldap.h>
3268 const void *const v = LDAP_OPT_ON;],[],
3269               xe_cv_LDAP_OPT_ON_links=yes,
3270               xe_cv_LDAP_OPT_ON_links=no)
3271             LIBS="$xe_save_LIBS"])
3272 dnl In some openldap installations other `ldap_*' functions link with
3273 dnl `-lldap' alone, but `LDAP_OPT_ON' requires `-llber'.
3274           if test yes != "$xe_cv_LDAP_OPT_ON_links";then
3275             ldap_needs_lber=yes ldap_other_libs=-llber
3276             AC_CACHE_CHECK([LDAP_OPT_ON linking with -llber],
3277               xe_cv_LDAP_OPT_ON_links_w_lber,
3278               [xe_save_LIBS="$LIBS"
3279               LIBS="-lldap $ldap_other_libs $LIBS"
3280 AC_TRY_LINK(
3281 [#include <lber.h>
3282 #include <ldap.h>
3283 const void *const v = LDAP_OPT_ON;],[],
3284               xe_cv_LDAP_OPT_ON_links_w_lber=yes,
3285               xe_cv_LDAP_OPT_ON_links_w_lber=no)
3286               LIBS="$xe_save_LIBS"])
3287             if test yes != "$xe_cv_LDAP_OPT_ON_links_w_lber";then
3288               with_ldap=no
3289             fi
3290           fi
3291         fi
3292       fi
3293       if test yes = "$with_ldap";then
3294         if test yes = "$ldap_needs_des";then
3295           XE_PREPEND(-ldes, ldap_libs)
3296         fi
3297         if test yes = "$ldap_needs_krb";then
3298           XE_PREPEND(-lkrb, ldap_libs)
3299         fi
3300         if test yes = "$ldap_needs_lber";then
3301           XE_PREPEND(-llber, ldap_libs)
3302         fi
3303         XE_PREPEND(-lldap, ldap_libs)
3304       fi])
3305   else
3306 dnl Allow builder to override "$ldap_libs".
3307     save_LIBS="$LIBS" LIBS="$ldap_libs $LIBS"
3308     AC_CHECK_FUNC(ldap_open,dnl
3309       [with_ldap=yes
3310       test yes = "$extra_verbose" &&
3311         echo "Setting ldap_libs to $ldap_libs"],dnl
3312       [with_ldap=no])
3313     LIBS="$save_LIBS"
3314   fi
3315 fi
3316 if test "$with_ldap" = "yes"; then
3317   AC_DEFINE(HAVE_LDAP)
3318   XE_ADD_OBJS(eldap.o)
3319   LIBS="$ldap_libs $LIBS"
3320   AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result)
3321 fi
3322
3323 dnl Autodetect PostgreSQL
3324 dnl On many Linux systems, PostgreSQL is packaged to be installed in /usr;
3325 dnl in this case, configure will easily detect it there.
3326 dnl
3327 dnl If PostgreSQL is installed into a different prefix,
3328 dnl (such as the default /usr/local/pgsql when building from source),
3329 dnl that prefix must be specified using the --site-prefixes flag.
3330 if test "$with_postgresql" != "no"; then
3331   AC_CHECKING(for PostgreSQL)
3332
3333 dnl Look for these standard header file locations, known to be used on Linux
3334   for header_dir in "" "pgsql/" "postgresql/"; do
3335     AC_CHECK_HEADER(${header_dir}libpq-fe.h,
3336                     libpq_fe_h_file=${header_dir}libpq-fe.h; break)
3337   done
3338
3339   test -n "$libpq_fe_h_file" && { AC_CHECK_LIB(pq,PQconnectdb,have_libpq=yes) }
3340
3341   if test -n "$libpq_fe_h_file" -a "$have_libpq" = "yes"; then
3342     with_postgresql=yes
3343     AC_DEFINE(HAVE_POSTGRESQL)
3344     AC_CHECK_LIB(pq,PQconnectStart, [
3345                  with_postgresqlv7=yes;
3346                  AC_DEFINE(HAVE_POSTGRESQLV7)])
3347     AC_DEFINE_UNQUOTED(LIBPQ_FE_H_FILE, "$libpq_fe_h_file")
3348     XE_PREPEND(-lpq, LIBS)
3349     XE_ADD_OBJS(postgresql.o)
3350   elif test "$with_postgresql" = "yes"; then
3351     XE_DIE("Required PostgreSQL support cannot be provided.  Check --site-prefixes.")
3352   fi
3353 fi
3354
3355 dnl ----------------------
3356 dnl Graphics libraries
3357 dnl ----------------------
3358
3359 if test "$window_system" != "none"; then
3360   AC_CHECKING(for graphics libraries)
3361
3362   dnl add special code to handle xpm-nox on Cygwin (csw)
3363   dnl   -- should only happen if CYGWIN && WITH_XPM && WITH_MSW && !WITH_X
3364   libpath_xpm=
3365   incpath_xpm=
3366   case "$opsys" in 
3367     cygwin*)
3368       cygwin_top=`eval "gcc -print-file-name=libc.a"` ;
3369       cygwin_top=`eval "dirname ${cygwin_top}"`;
3370       cygwin_top="${cygwin_top}/..";
3371       case "$window_system" in
3372         dnl use "standard" search pattern
3373         x11)  ;;
3374         dnl hardcode "standard" non-X11 xpm lib/inc dirs
3375         msw) libpath_xpm="-L${cygwin_top}/lib/noX"
3376              incpath_xpm="-I${cygwin_top}/include/noX"
3377               ;;
3378         dnl not supported on cygwin (yet?)
3379         gtk)  ;;
3380         dnl probably not reached...
3381         none) ;;
3382         dnl ditto
3383         *)    ;;
3384       esac
3385       ;;
3386     dnl use "standard" search pattern for all other OS's
3387     *) ;;
3388   esac
3389   dnl Autodetect Xpm
3390   xpm_problem=""
3391   if test -z "$with_xpm"; then
3392     XE_PREPEND("$incpath_xpm", CFLAGS)
3393     XE_PREPEND("$libpath_xpm", LDFLAGS)
3394     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
3395     xe_check_libs=-lXpm
3396     AC_TRY_RUN([#define XPM_NUMBERS
3397 #include <X11/xpm.h>
3398     int main(int c, char **v) {
3399     return c == 1 ? 0 :
3400       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
3401       XpmIncludeVersion < 30406 ? 2 : 0 ;}],
3402     [./conftest dummy_arg; xpm_status=$?;
3403       if test "$xpm_status" = "0"; then
3404         with_xpm=yes;
3405       else
3406         with_xpm=no;
3407         if test "$xpm_status" = "1"; then
3408           xpm_problem="Xpm library version and header file version don't match!"
3409         elif test "$xpm_status" = "2"; then
3410           xpm_problem="Xpm library version is too old!"
3411         else
3412           xpm_problem="Internal xpm detection logic error!"
3413         fi
3414         echo "
3415 *** WARNING *** $xpm_problem
3416   I'm not touching that with a 10-foot pole!
3417   If you really want to use the installed version of Xpm, rerun
3418   configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!"
3419     fi],
3420     [with_xpm=no])
3421     xe_check_libs=
3422     AC_MSG_RESULT($with_xpm)
3423   fi
3424   if test "$with_xpm" = "yes"; then
3425     dnl #### This code assumes that if AC_CHECK_LIB fails,
3426     dnl #### then it will succeed if FOR_MSW is defined,
3427     dnl #### but doesn't actually verify this assumption.
3428     AC_DEFINE(HAVE_XPM)
3429     XE_PREPEND("$libpath_xpm", LDFLAGS)
3430     XE_PREPEND(-lXpm, libs_x)
3431     XE_PREPEND("$incpath_xpm", CFLAGS)
3432     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
3433     xe_check_libs=-lXpm
3434     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
3435     [xpm_for_msw=no],
3436     [xpm_for_msw=yes])
3437     xe_check_libs=
3438     AC_MSG_RESULT($xpm_for_msw)
3439     if test "$xpm_for_msw" = "yes"; then
3440       AC_DEFINE(FOR_MSW)
3441     fi
3442   fi
3443
3444   dnl Autodetect XFACE
3445   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
3446   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
3447   test -z "$with_xface" && with_xface=yes
3448   if test "$with_xface" = "yes"; then
3449     AC_DEFINE(HAVE_XFACE)
3450     XE_PREPEND(-lcompface, libs_x)
3451   fi
3452
3453   dnl For a brief period we had the GIF code split out into a separate library,
3454   dnl but patent problems, etc. sort of squashed that idea.
3455   dnl We default to building with builtin GIF decoding
3456   if test "$with_gif" != "no"; then
3457     with_gif="yes"
3458     AC_DEFINE(HAVE_GIF)
3459     XE_ADD_OBJS(dgif_lib.o gif_io.o)
3460   fi
3461
3462   dnl Too many stupid linkers can't detect cascaded lib dependencies until runtime
3463   dnl So we always search for libz compression support.
3464   if test "$with_png $with_tiff" != "no no"; then
3465     AC_CHECK_LIB(c,  inflate, [:], [
3466     AC_CHECK_LIB(z,  inflate, [XE_PREPEND(-lz,  libs_x)],[
3467     AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])])
3468   fi
3469
3470   dnl autodetect JPEG
3471   test -z "$with_jpeg" && { AC_CHECK_HEADER(jpeglib.h,                    ,with_jpeg=no) }
3472   test -z "$with_jpeg" && { AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,[:],with_jpeg=no) }
3473   test -z "$with_jpeg" && with_jpeg=yes
3474   if test "$with_jpeg" = "yes"; then
3475     AC_DEFINE(HAVE_JPEG)
3476     XE_PREPEND(-ljpeg, libs_x)
3477   fi
3478
3479   dnl autodetect PNG
3480   png_problem=""
3481   test -z "$with_png" && { AC_CHECK_FUNC(pow,                  ,with_png=no) }
3482   test -z "$with_png" && { AC_CHECK_HEADER(png.h,              ,with_png=no) }
3483   test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) }
3484   if test -z "$with_png"; then
3485     AC_MSG_CHECKING(for workable png version information)
3486     xe_check_libs="-lpng -lz"
3487     AC_TRY_RUN([#include <png.h>
3488     int main(int c, char **v) {
3489     if (c == 1) return 0;
3490     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
3491     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}],
3492     [./conftest dummy_arg; png_status=$?;
3493       if test "$png_status" = "0"; then
3494         with_png=yes;
3495       else
3496         with_png=no;
3497         if test "$png_status" = "1"; then
3498           png_problem="PNG library version and header file don't match!"
3499         elif test "$png_status" = "2"; then
3500           png_problem="PNG library version too old (pre 1.0.2)!"
3501         fi
3502         echo "
3503 *** WARNING *** $png_problem
3504   I'm not touching that with a 10-foot pole!
3505   If you really want to use the installed version of libPNG, rerun
3506   configure and add '--with-png=yes', but don't blame me if XEmacs crashes!"
3507     fi],
3508     [with_png=no])
3509     xe_check_libs=
3510     AC_MSG_RESULT($with_png)
3511   fi
3512   if test "$with_png" = "yes"; then
3513     AC_DEFINE(HAVE_PNG)
3514     XE_PREPEND(-lpng, libs_x)
3515   fi
3516
3517   dnl autodetect TIFF
3518   test -z "$with_tiff" && { AC_CHECK_HEADER(tiffio.h,            ,with_tiff=no) }
3519   test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no) }
3520   test -z "$with_tiff" && with_tiff=yes
3521   if test "$with_tiff" = "yes"; then
3522     AC_DEFINE(HAVE_TIFF)
3523     XE_PREPEND(-ltiff, libs_x)
3524   fi
3525 fi
3526
3527 dnl ----------------------
3528 dnl GTK-Specific Graphics libraries
3529 dnl ----------------------
3530
3531 if test "$with_gtk" = "yes"; then
3532   dnl Autodetect XFACE
3533   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
3534   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
3535   test -z "$with_xface" && with_xface=yes
3536   if test "$with_xface" = "yes"; then
3537     AC_DEFINE(HAVE_XFACE)
3538     XE_PREPEND(-lcompface, libs_gtk)
3539   fi
3540 fi
3541
3542
3543 dnl ----------------------
3544 dnl X-Specific Graphics libraries
3545 dnl ----------------------
3546
3547 if test "$with_x11" = "yes"; then
3548   AC_CHECKING(for X11 graphics libraries)
3549 fi
3550
3551 if test "$with_x11" = "yes"; then
3552   AC_CHECKING(for the Athena widgets)
3553
3554   dnl What in heck did the user actually want?
3555   case "$with_athena" in
3556     dnl This is the default, old fashioned flat Athena.
3557     "xaw" | "") athena_variant=Xaw      athena_3d=no  ;;
3558     "3d")       athena_variant=Xaw3d    athena_3d=yes ;;
3559     "next")     athena_variant=neXtaw   athena_3d=yes ;;
3560     "95")       athena_variant=Xaw95    athena_3d=yes ;;
3561     "xpm")      athena_variant=XawXpm   athena_3d=yes ;;
3562     *)          XE_DIE("Unknown Athena widget set \`$with_athena'. This should not happen.") ;;
3563   esac
3564
3565   athena_3d_function=Xaw3dComputeBottomShadowRGB
3566
3567   dnl Search for the Athena library...
3568   if test "$athena_3d" = "no"; then
3569     AC_CHECK_LIB($athena_variant, XawScrollbarSetThumb,
3570       [
3571         dnl Must not be a 3d library...
3572         AC_CHECK_LIB($athena_variant, $athena_3d_function,
3573           AC_MSG_WARN("Could not find a non-3d Athena widget library."),
3574           athena_lib=$athena_variant)
3575       ],
3576       AC_MSG_WARN("Could not find an Athena widget library."))
3577   else
3578     dnl The real configuration, need 3d library
3579     AC_CHECK_LIB($athena_variant, $athena_3d_function, athena_lib=$athena_variant,
3580       dnl OK, couldn't find it with a proper name, try the standard Athena lib
3581       dnl If that is 3d, presume the user asked for what they have installed.
3582       AC_CHECK_LIB(Xaw, $athena_3d_function,
3583         [
3584           athena_lib=Xaw;
3585           AC_MSG_WARN("Assuming that libXaw is actually $athena_variant.");
3586         ],
3587         AC_MSG_WARN("Could not find a 3d Athena widget library that looked like $athena_variant.")))
3588   fi
3589
3590   dnl Now we locate the Athena headers that we need.
3591   if test "$athena_3d" = "no"; then
3592     AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
3593       AC_MSG_WARN("Could not find a non-3d Athena header set."),
3594       AC_CHECK_HEADER(X11/Xaw/XawInit.h,
3595         athena_h_path=X11/Xaw,
3596         AC_MSG_WARN("Could not find a non-3d Athena header set.")))
3597   else
3598     dnl The three-d Athena headers are so much more slippery.
3599     dnl Curse this `Lets replace standard libraries' thing that they did. :/
3600     AC_CHECK_HEADER(X11/$athena_variant/XawInit.h,
3601       AC_CHECK_HEADER(X11/$athena_variant/ThreeD.h,
3602         athena_h_path=X11/$athena_variant,))
3603
3604     dnl Is the variant specific header directory directly under include?
3605     if test -z "$athena_h_path"; then
3606       AC_CHECK_HEADER($athena_variant/XawInit.h,
3607         AC_CHECK_HEADER($athena_variant/ThreeD.h,
3608           athena_h_path=$athena_variant,))
3609     fi
3610
3611     dnl If we couldn't find the specific variant, try the generic Athena 3d headers
3612     if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
3613       AC_CHECK_HEADER(X11/Xaw3d/XawInit.h,
3614         AC_CHECK_HEADER(X11/Xaw3d/ThreeD.h,
3615           [
3616             AC_MSG_WARN("Assuming that X11/Xaw3d headers are suitable for $athena_variant.")
3617             athena_h_path=X11/Xaw3d
3618           ],))
3619     fi
3620
3621     dnl Also generic 3d headers directly under include dir
3622     if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
3623       AC_CHECK_HEADER(Xaw3d/XawInit.h,
3624         AC_CHECK_HEADER(Xaw3d/ThreeD.h,
3625           [
3626             AC_MSG_WARN("Assuming that Xaw3d headers are suitable for $athena_variant.")
3627             athena_h_path=Xaw3d
3628           ],))
3629     fi
3630
3631     dnl If nothing yet found, see if Xaw is a 3d header set...
3632     dnl We AC_MSG_WARN if we fail because I am all out of ideas...
3633     if test -z "$athena_h_path"; then
3634       AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
3635         [
3636           AC_MSG_WARN("Assuming that X11/Xaw headers are suitable for $athena_variant.")
3637           athena_h_path=X11/Xaw
3638         ],
3639         AC_MSG_WARN("Could not find a suitable 3d Athena header set."))
3640     fi
3641   fi
3642
3643   dnl Do we actually have a usable Athena widget set? Please?
3644   if test -n "$athena_lib" -a -n "$athena_h_path"; then
3645     have_xaw=yes
3646   else
3647     have_xaw=no
3648   fi
3649
3650 else
3651   have_xaw=no
3652 fi dnl "$with_x11" = "yes"
3653
3654 if test "$with_x11" = "yes"; then
3655   dnl autodetect Motif - but only add to libs_x later (if necessary)
3656   AC_CHECK_HEADER(Xm/Xm.h,
3657    [AC_CHECK_LIB(Xm, XmStringFree, have_motif=yes, have_motif=no)],
3658    have_motif=no)
3659
3660   if test "$have_motif" = "yes"; then
3661     dnl autodetect lesstif
3662     AC_MSG_CHECKING(for Lesstif)
3663     AC_EGREP_CPP(yes,
3664 [#include <Xm/Xm.h>
3665 #ifdef LESSTIF_VERSION
3666 yes
3667 #endif
3668 ], have_lesstif=yes, have_lesstif=no)
3669   AC_MSG_RESULT($have_lesstif)
3670   fi
3671
3672 fi dnl "$with_x11" = "yes"
3673
3674 dnl Finish ensuring that we have values for the various toolkit items.
3675 dnl Not all toolkits support all widgets
3676
3677 dnl Avoid using Motif :-(
3678 case "$opsys" in
3679   *linux* | cygwin* )  lucid_prefers_motif="no"  ;;
3680   * )        lucid_prefers_motif="yes" ;;
3681 esac
3682
3683 case "$with_menubars" in "" | "yes" | "athena" )
3684   with_menubars="lucid" ;;
3685 esac
3686 case "$with_dialogs" in "" | "yes" | "lucid" )
3687   if test "$lucid_prefers_motif" = "yes"; then
3688     if   test "$have_motif"     = "yes"; then with_dialogs="motif"
3689     elif test "$have_xaw"       = "yes"; then with_dialogs="athena"
3690     else with_dialogs=no
3691     fi
3692   else
3693     if   test "$have_xaw"       = "yes"; then with_dialogs="athena"
3694     elif test "$have_motif"     = "yes"; then with_dialogs="motif"
3695     else with_dialogs=no
3696     fi
3697   fi ;;
3698 esac
3699 case "$with_scrollbars" in "" | "yes" )
3700   with_scrollbars="lucid" ;;
3701 esac
3702 case "$with_widgets" in
3703   "yes" | "lucid")
3704     if test "$lucid_prefers_motif" = "yes"; then
3705       if   test "$have_motif" = "yes"; then with_widgets="motif"
3706       elif test "$have_xaw"   = "yes"; then with_widgets="athena"
3707       else with_widgets=no
3708       fi
3709     else
3710       if   test "$have_xaw"   = "yes"; then with_widgets="athena"
3711       elif test "$have_motif" = "yes"; then with_widgets="motif"
3712       else with_widgets=no
3713       fi
3714     fi ;;
3715   "" )
3716     with_widgets=no ;;
3717 esac
3718
3719 all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars $with_widgets"
3720
3721 case "$all_widgets" in
3722   *athena* )
3723     if test "$have_xaw" != "yes"; then
3724       XE_DIE("Could not find a suitable Athena library to build with.")
3725     fi
3726
3727     dnl Add the Lucid widget Athena code
3728     XE_APPEND(lwlib-Xaw.o, lwlib_objs)
3729
3730     dnl Add the Athena widget library we located earlier
3731     XE_PREPEND(-l$athena_lib, libs_x)
3732
3733     dnl Tell lwlib where to find the Athena header files.
3734     dnl Many people have tried to create a `smart' way of doing this,
3735     dnl but all have failed.  Before changing the following ugly definitions,
3736     dnl consult the veterans of many a battle.
3737     AC_DEFINE_UNQUOTED(ATHENA_Scrollbar_h_,"$athena_h_path/Scrollbar.h")
3738     AC_DEFINE_UNQUOTED(ATHENA_Dialog_h_,"$athena_h_path/Dialog.h")
3739     AC_DEFINE_UNQUOTED(ATHENA_Form_h_,"$athena_h_path/Form.h")
3740     AC_DEFINE_UNQUOTED(ATHENA_Command_h_,"$athena_h_path/Command.h")
3741     AC_DEFINE_UNQUOTED(ATHENA_Label_h_,"$athena_h_path/Label.h")
3742     AC_DEFINE_UNQUOTED(ATHENA_LabelP_h_,"$athena_h_path/LabelP.h")
3743     AC_DEFINE_UNQUOTED(ATHENA_Toggle_h_,"$athena_h_path/Toggle.h")
3744     AC_DEFINE_UNQUOTED(ATHENA_ToggleP_h_,"$athena_h_path/ToggleP.h")
3745     AC_DEFINE_UNQUOTED(ATHENA_AsciiText_h_,"$athena_h_path/AsciiText.h")
3746     AC_DEFINE_UNQUOTED(ATHENA_XawInit_h_,"$athena_h_path/XawInit.h")
3747
3748     AC_DEFINE(LWLIB_USES_ATHENA)
3749     AC_DEFINE(NEED_ATHENA)
3750     need_athena="yes"
3751
3752     if test "$athena_3d" = "yes"; then
3753       AC_DEFINE(HAVE_ATHENA_3D)
3754     fi
3755   ;;
3756 esac
3757
3758 case "$all_widgets" in *motif* )
3759   AC_DEFINE(LWLIB_USES_MOTIF)
3760   AC_DEFINE(NEED_MOTIF)
3761   XE_APPEND(lwlib-Xm.o, lwlib_objs)
3762   need_motif=yes ;;
3763 esac
3764
3765 test "$with_menubars"   = "lucid" && XE_APPEND(xlwmenu.o, lwlib_objs)
3766 test "$with_menubars"   = "motif" && XE_APPEND(xlwmenu.o, lwlib_objs)
3767 test "$with_scrollbars" = "lucid" && XE_APPEND(xlwscrollbar.o, lwlib_objs)
3768 test "$with_widgets"   != "no" && test "$with_widgets" != "msw" && \
3769         XE_APPEND(xlwtabs.o xlwgcs.o, lwlib_objs)
3770 case "$with_widgets" in athena* )
3771         XE_APPEND(xlwradio.o xlwcheckbox.o xlwgauge.o, lwlib_objs);;
3772 esac
3773 case "$all_widgets" in *lucid* )
3774   AC_DEFINE(NEED_LUCID)
3775   XE_APPEND(lwlib-Xlw.o, lwlib_objs) ;;
3776 esac
3777
3778 AC_SUBST(lwlib_objs)
3779
3780 test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA)
3781 test "$with_dialogs"    = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA)
3782
3783 if test "$athena_3d" = "yes"; then
3784   test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
3785   test "$with_dialogs"    = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
3786 fi
3787
3788 case "$with_widgets" in athena* ) AC_DEFINE(LWLIB_WIDGETS_ATHENA);; esac
3789 test "$with_widgets" != "no" && test "$with_widgets" != "msw" && \
3790         AC_DEFINE(LWLIB_TABS_LUCID)
3791
3792 test "$with_menubars"   != "no"    && AC_DEFINE(HAVE_MENUBARS)
3793 test "$with_scrollbars" != "no"    && AC_DEFINE(HAVE_SCROLLBARS)
3794 test "$with_dialogs"    != "no"    && AC_DEFINE(HAVE_DIALOGS)
3795 test "$with_toolbars"   != "no"    && AC_DEFINE(HAVE_TOOLBARS)
3796 test "$with_widgets"    != "no"    && AC_DEFINE(HAVE_WIDGETS)
3797
3798 test "$with_menubars"   = "lucid"  && AC_DEFINE(LWLIB_MENUBARS_LUCID)
3799 test "$with_scrollbars" = "lucid"  && AC_DEFINE(LWLIB_SCROLLBARS_LUCID)
3800
3801 test "$with_menubars"   = "motif"  && AC_DEFINE(LWLIB_MENUBARS_MOTIF)
3802 test "$with_scrollbars" = "motif"  && AC_DEFINE(LWLIB_SCROLLBARS_MOTIF)
3803 test "$with_dialogs"    = "motif"  && AC_DEFINE(LWLIB_DIALOGS_MOTIF)
3804 test "$with_widgets"    = "motif"  && AC_DEFINE(LWLIB_WIDGETS_MOTIF)
3805
3806 test "$with_menubars"   != "no"    && XE_ADD_OBJS(menubar.o)
3807 test "$with_scrollbars" != "no"    && XE_ADD_OBJS(scrollbar.o)
3808 test "$with_dialogs"    != "no"    && XE_ADD_OBJS(dialog.o)
3809 test "$with_toolbars"   != "no"    && XE_ADD_OBJS(toolbar.o)
3810
3811 if test "$with_gtk" = "yes"; then
3812   test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar-gtk.o)
3813   test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar-gtk.o)
3814   test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog-gtk.o)
3815   test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar-gtk.o)
3816   test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-gtk.o)
3817 fi
3818
3819 if test "$with_x11" = "yes"; then
3820   test "$with_menubars"   != "no"  && XE_ADD_OBJS(menubar-x.o)
3821   test "$with_scrollbars" != "no"  && XE_ADD_OBJS(scrollbar-x.o)
3822   test "$with_dialogs"    != "no"  && XE_ADD_OBJS(dialog-x.o)
3823   test "$with_toolbars"   != "no"  && XE_ADD_OBJS(toolbar-x.o)
3824   test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-x.o)
3825 fi
3826
3827 dnl ----------------------
3828 dnl Mule-dependent options
3829 dnl ----------------------
3830
3831 test -z "$with_mule" && with_mule=no
3832 test -z "$with_file_coding" && with_file_coding=no
3833
3834 dnl if test "$with_mule" = "yes" && test ! -d "$srcdir/lisp/mule"; then
3835 dnl     echo "Attempt to Build with Mule without Mule/Lisp"
3836 dnl     echo "Please install the XEmacs/Mule tarball or"
3837 dnl     echo "rerun configure with --with-mule=no"
3838 dnl     exit 1
3839 dnl fi
3840
3841 if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then
3842   AC_DEFINE(FILE_CODING)
3843   XE_ADD_OBJS(file-coding.o)
3844 fi
3845
3846 dnl Autodetect concord
3847 concord_includes_found=no
3848 if test "$with_concord" != "no"; then
3849    AC_CHECK_HEADER(concord.h, ,with_concord=no)
3850 fi
3851 if test "$concord_includes_found" = "no" -a "$with_concord" != "no" -a \
3852    -d "/usr/local/concord/include"; then
3853   save_c_switch_site="$c_switch_site"
3854   c_switch_site="$c_switch_site -I/usr/local/concord/include"
3855   AC_CHECK_HEADER(concord.h,concord_includes_found=yes)
3856   if test "$concord_includes_found" != "yes"; then
3857     c_switch_site="$save_c_switch_site"
3858     with_concord="no"
3859   fi
3860 fi
3861
3862 test -z "$with_concord" && with_concord=yes
3863 if test "$with_concord" = "yes"; then
3864   AC_DEFINE(HAVE_CONCORD)
3865   XE_PREPEND(-lconcord, libs_x)
3866   XE_ADD_OBJS(concord.o)
3867 fi
3868
3869 test -z "$with_chise" && with_chise=yes
3870 if test "$with_chise" = "yes"; then
3871     with_mule=yes
3872     with_utf_2000=yes
3873     with_text_coding=yes
3874 fi
3875
3876 if test "$with_mule" = "yes" ; then
3877   AC_CHECKING(for Mule-related features)
3878   AC_DEFINE(MULE)
3879
3880   dnl Autodetect chise
3881   chise_includes_found=no
3882   if test "$with_chise" != "no"; then
3883     AC_CHECK_HEADER(chise.h, ,with_chise=no)
3884   fi
3885   if test "$chise_includes_found" = "no" -a "$with_chise" != "no" -a \
3886       -d "/usr/local/chise/include"; then
3887     save_c_switch_site="$c_switch_site"
3888     c_switch_site="$c_switch_site -I/usr/local/chise/include"
3889     AC_CHECK_HEADER(chise.h,chise_includes_found=yes)
3890     if test "$chise_includes_found" != "yes"; then
3891       c_switch_site="$save_c_switch_site"
3892       with_chise="no"
3893     fi
3894   fi
3895
3896   test -z "$with_chise" && with_chise=yes
3897   if test "$with_chise" = "yes"; then
3898     AC_DEFINE(HAVE_CHISE)
3899     AC_DEFINE(HAVE_LIBCHISE)
3900     XE_PREPEND(-lchise, libs_x)
3901   fi
3902
3903   AC_DEFINE(FILE_CODING)
3904   XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o)
3905   if test "$with_utf_2000" = "yes" && test "$with_text_coding" = "yes"; then
3906     AC_DEFINE(TEXT_CODING)
3907     XE_ADD_OBJS(text-coding.o)
3908   else
3909     XE_ADD_OBJS(file-coding.o)
3910   fi
3911   dnl Use -lintl to get internationalized strerror for Mule
3912   AC_CHECK_HEADERS(libintl.h)
3913   AC_CHECK_LIB(intl, strerror)
3914
3915   if test "$with_utf_2000" = "yes" ; then
3916     AC_DEFINE(CHAR_IS_UCS4)
3917     AC_DEFINE(UTF2000)
3918     with_wnn=no
3919     with_wnn6=no
3920   fi
3921
3922   AC_CHECKING(for Mule input methods)
3923   dnl Do we have the XmIm* routines?  And if so, do we want to use them?
3924   dnl XIM seems to be flaky except on Solaris...
3925   dnl test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no
3926   case "$with_xim" in "" | "yes" )
3927     AC_CHECKING(for XIM)
3928     AC_CHECK_LIB(X11, XOpenIM, with_xim=xlib, with_xim=no)
3929     dnl XIM + Lesstif is not (yet?) usable
3930     dnl Only use Motif if linking Motif anyway, or don't have xlib XIM
3931     if test "$need_motif $have_lesstif" = "yes no"; then
3932       AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
3933     elif test "$have_motif $have_lesstif $with_xim" = "yes no no"; then
3934       AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
3935     fi ;;
3936   esac
3937   if test "$with_xim" != "no"; then
3938     AC_DEFINE(HAVE_XIM)
3939     if test "$with_xim" = "xlib"; then
3940       AC_DEFINE(XIM_XLIB)
3941       XE_ADD_OBJS(input-method-xlib.o)
3942     fi
3943     if test "$with_xim" = "motif"; then
3944       AC_DEFINE(XIM_MOTIF)
3945       need_motif=yes
3946       XE_ADD_OBJS(input-method-motif.o)
3947     fi
3948     if test "$with_xim" = "motif"; then
3949       with_xfs=no
3950     fi
3951   fi
3952
3953   dnl "with_xfs" = "yes"
3954   if test "$with_xfs" = "yes" ; then
3955     AC_CHECKING(for XFontSet)
3956     AC_CHECK_LIB(X11, XmbDrawString, [:], with_xfs=no)
3957     if test "$with_xfs" = "yes" && test "$with_menubars" = "lucid"; then
3958       AC_DEFINE(USE_XFONTSET)
3959       if test "$with_xim" = "no" ; then
3960         XE_ADD_OBJS(input-method-xlib.o)
3961       fi
3962     fi
3963   fi dnl with_xfs
3964
3965   dnl Autodetect WNN
3966   test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
3967   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/jllib.h, ,with_wnn=no) }
3968   dnl gcc 2.97 fixincludes breaks inclusion of wnn/commonhd.h
3969   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/commonhd.h, ,with_wnn=no) }
3970   dnl Detour to find crypt
3971   if test "$with_wnn" != "no"; then
3972     AC_CHECK_FUNCS(crypt)
3973     test "$ac_cv_func_crypt" != "yes" && { AC_CHECK_LIB(crypt, crypt) }
3974   fi
3975   dnl Back to our regularly scheduled wnn hunting
3976   if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
3977     AC_CHECK_LIB(wnn,jl_dic_list_e,libwnn=wnn,
3978       AC_CHECK_LIB(wnn4,jl_dic_list_e,libwnn=wnn4,
3979         AC_CHECK_LIB(wnn6,jl_dic_list_e,libwnn=wnn6,
3980           AC_CHECK_LIB(wnn6_fromsrc,dic_list_e,libwnn=wnn6_fromsrc,with_wnn=no))))
3981   fi
3982   test -z "$with_wnn" && with_wnn=yes
3983   if test "$with_wnn" = "yes"; then
3984     AC_DEFINE(HAVE_WNN)
3985     XE_PREPEND(-l$libwnn, libs_x)
3986     XE_ADD_OBJS(mule-wnnfns.o)
3987     if test "$with_wnn6" != "no"; then
3988       AC_CHECK_LIB($libwnn, jl_fi_dic_list, with_wnn6=yes)
3989       test "$with_wnn6" = "yes" && AC_DEFINE(WNN6)
3990     fi
3991   fi
3992
3993   dnl Autodetect canna
3994   canna_includes_found=no
3995   if test "$with_canna" != "no"; then
3996     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3997   fi
3998   if test "$canna_includes_found" = "no" -a "$with_canna" != "no" -a \
3999       -d "/usr/local/canna/include"; then
4000     save_c_switch_site="$c_switch_site"
4001     c_switch_site="$c_switch_site -I/usr/local/canna/include"
4002     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
4003     if test "$canna_includes_found" != "yes"; then
4004       c_switch_site="$save_c_switch_site"
4005       with_canna="no"
4006     fi
4007   fi
4008
4009   test -z "$with_canna" && { AC_CHECK_HEADER(canna/RK.h,         , with_canna=no) }
4010   test -z "$with_canna" && { AC_CHECK_LIB(RKC, RkBgnBun,       [:],with_canna=no) }
4011   test -z "$with_canna" && { AC_CHECK_LIB(canna,jrKanjiControl,[:],with_canna=no) }
4012   test -z "$with_canna" && with_canna=yes
4013   if test "$with_canna" = "yes"; then
4014     AC_DEFINE(HAVE_CANNA)
4015     XE_PREPEND(-lcanna -lRKC, libs_x)
4016     XE_ADD_OBJS(mule-canna.o)
4017   fi
4018
4019 else dnl "$with_mule" = "no"
4020   for feature in xim canna wnn; do
4021     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
4022       AC_MSG_WARN("--with-${feature} ignored:  Not valid without Mule support")
4023     fi
4024     eval "with_${feature}=no"
4025   done
4026 fi dnl with_mule
4027
4028
4029 dnl At this point, we know whether we need the motif lib or not.
4030 if test "$need_motif" = "yes" ; then
4031   XE_PREPEND(-lXm, libs_x)
4032   dnl AIX needs the following library for use with Motif
4033   AC_CHECK_LIB(i18n, layout_object_getvalue, [XE_PREPEND(-li18n, libs_x)])
4034   XE_COMPUTE_RUNPATH()
4035 fi
4036
4037 dnl ----------------------------------------------------------------
4038 dnl Check for POSIX functions.
4039 dnl ----------------------------------------------------------------
4040
4041 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)
4042
4043 dnl getaddrinfo() is borked under hpux11
4044 if test "$ac_cv_func_getaddrinfo" != "no" ; then
4045   case "$opsys" in
4046     hpux11* )
4047       AC_MSG_WARN([Use of getaddrinfo is disabled for HP-UX 11.XX.])
4048       ac_cv_func_getaddrinfo=no
4049       ;;
4050   esac
4051 fi
4052
4053 dnl ----------------------------------------------------------------
4054 dnl Check for PTY support functions.
4055 dnl ----------------------------------------------------------------
4056
4057 dnl There is no "standard" pty allocation method.  Every system is different.
4058 dnl  getpt()  is the preferred pty allocation method on glibc systems.
4059 dnl _getpty() is the preferred pty allocation method on SGI systems.
4060 dnl grantpt(), unlockpt(), ptsname() are defined by Unix98.
4061 AC_CHECK_FUNCS(getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp)
4062
4063 dnl openpty() is the preferred pty allocation method on BSD and Tru64 systems.
4064 dnl openpty() might be declared in:
4065 dnl - pty.h (Tru64 or Linux)
4066 dnl - libutil.h (FreeBSD)
4067 dnl - util.h (NetBSD)
4068 AC_CHECK_FUNC(openpty, have_openpty=yes, [
4069   AC_CHECK_LIB(util, openpty, have_openpty=yes need_libutil=yes)])
4070 if test "$have_openpty" = "yes"; then
4071   AC_DEFINE(HAVE_OPENPTY)
4072   AC_CHECK_HEADERS(pty.h libutil.h util.h, break)
4073   test "$need_libutil" = "yes" && XE_APPEND(-lutil, libs_system)
4074 fi
4075
4076 dnl Check for STREAM support functions.
4077 dnl Confusingly, "str" means both "string" and "SysV Streams".
4078 AC_CHECK_HEADERS(stropts.h)
4079 if test "$ac_cv_header_stropts_h" = "yes"; then
4080   AC_CHECK_FUNCS(isastream)
4081   AC_CHECK_HEADERS(strtio.h) dnl TIOCSIGNAL
4082 fi
4083
4084 dnl Use our own realpath always.
4085 XE_ADD_OBJS(realpath.o)
4086
4087 dnl Check whether the system provides getloadavg().
4088 AC_CHECK_FUNCS(getloadavg)
4089
4090 if test "$ac_cv_func_getloadavg" = "yes"; then
4091   dnl Solaris 8 declares getloadavg() in <sys/loadavg.h>.
4092   dnl glibc 2.2 declares getloadavg() in <stdlib.h>...
4093   dnl   ...if we #define _GNU_SOURCE, which we do.
4094   AC_CHECK_HEADERS(sys/loadavg.h)
4095 else
4096   dnl We define our own getloadavg() using lower level functions.
4097   XE_ADD_OBJS(getloadavg.o)
4098
4099   dnl Used by getloadavg() - does not require root priveleges
4100   AC_CHECK_LIB(kstat, kstat_open)
4101   AC_CHECK_HEADERS(kstat.h)
4102
4103   dnl Another way to get the load average
4104   AC_CHECK_LIB(kvm, kvm_read)
4105 fi
4106
4107 dnl If netdb.h does not declare h_errno, we must declare it by hand.
4108 AC_MSG_CHECKING(whether netdb declares h_errno)
4109 AC_TRY_LINK([#include <netdb.h>],
4110   [return h_errno;],
4111   [AC_MSG_RESULT(yes)
4112    AC_DEFINE(HAVE_H_ERRNO)],
4113   [AC_MSG_RESULT(no)])
4114
4115 AC_MSG_CHECKING(for sigsetjmp)
4116 AC_TRY_COMPILE([#include <setjmp.h>],
4117         [sigjmp_buf bar; sigsetjmp (bar, 0);],
4118   [AC_MSG_RESULT(yes)
4119    AC_DEFINE(HAVE_SIGSETJMP)],
4120   [AC_MSG_RESULT(no)])
4121
4122 AC_MSG_CHECKING(whether localtime caches TZ)
4123 AC_CACHE_VAL(emacs_cv_localtime_cache,
4124 [if test "$ac_cv_func_tzset" = "yes"; then
4125 AC_TRY_RUN([#include <time.h>
4126 #if STDC_HEADERS
4127 # include <stdlib.h>
4128 #endif
4129 extern char **environ;
4130 unset_TZ ()
4131 {
4132   char **from, **to;
4133   for (to = from = environ; (*to = *from); from++)
4134     if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
4135       to++;
4136 }
4137 char TZ_GMT0[] = "TZ=GMT0";
4138 char TZ_PST8[] = "TZ=PST8";
4139 main()
4140 {
4141   time_t now = time ((time_t *) 0);
4142   int hour_GMT0, hour_unset;
4143   if (putenv (TZ_GMT0) != 0)
4144     exit (1);
4145   hour_GMT0 = localtime (&now)->tm_hour;
4146   unset_TZ ();
4147   hour_unset = localtime (&now)->tm_hour;
4148   if (putenv (TZ_PST8) != 0)
4149     exit (1);
4150   if (localtime (&now)->tm_hour == hour_GMT0)
4151     exit (1);
4152   unset_TZ ();
4153   if (localtime (&now)->tm_hour != hour_unset)
4154     exit (1);
4155   exit (0);
4156 }], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
4157 [# If we have tzset, assume the worst when cross-compiling.
4158 emacs_cv_localtime_cache=yes])
4159 else
4160         # If we lack tzset, report that localtime does not cache TZ,
4161         # since we can't invalidate the cache if we don't have tzset.
4162         emacs_cv_localtime_cache=no
4163 fi],[:])dnl
4164 AC_MSG_RESULT($emacs_cv_localtime_cache)
4165 if test $emacs_cv_localtime_cache = yes; then
4166   AC_DEFINE(LOCALTIME_CACHE)
4167 fi
4168
4169 if test "$HAVE_TIMEVAL" = "yes"; then
4170 AC_MSG_CHECKING(whether gettimeofday accepts one or two arguments)
4171 AC_TRY_LINK([
4172 #ifdef TIME_WITH_SYS_TIME
4173 #include <sys/time.h>
4174 #include <time.h>
4175 #else
4176 #ifdef HAVE_SYS_TIME_H
4177 #include <sys/time.h>
4178 #else
4179 #include <time.h>
4180 #endif
4181 #endif
4182   ],
4183   [
4184   struct timeval time;
4185   gettimeofday (&time, 0);
4186 ],
4187   [AC_MSG_RESULT(two)],
4188   [AC_MSG_RESULT(one)
4189    AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)])
4190 fi
4191
4192
4193 AC_C_INLINE
4194 test "$ac_cv_c_inline" != "no" -a "$GCC" = "yes" && XE_ADD_OBJS(inline.o)
4195
4196 dnl HP-UX has a working alloca in libPW.
4197 dnl case "${GCC}${opsys}" in hpux* )
4198 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
4199 dnl esac
4200
4201 dnl AC_FUNC_ALLOCA doesn't know about DEC C's #pragma intrinsic(alloca)
4202 if test "$__DECC" != "yes"; then
4203   AC_FUNC_ALLOCA
4204   test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
4205 fi
4206
4207 dnl Check whether vfork exists and works correctly. (This does more
4208 dnl than just check for its existence.) If so, it defines HAVE_VFORK_H.
4209 dnl If not, it defines vfork to be fork.
4210 AC_FUNC_VFORK
4211
4212 dnl Check whether strcoll exists and works correctly. (This does more
4213 dnl than just check for its existence.) If so, it defines HAVE_STRCOLL.
4214 AC_FUNC_STRCOLL
4215
4216 dnl If `getpgrp' takes no argument (the POSIX.1 version), define
4217 dnl `GETPGRP_VOID'.  Otherwise, it is the BSD version, which takes a
4218 dnl process ID as an argument.
4219 AC_CHECK_FUNCS(getpgrp)
4220 AC_FUNC_GETPGRP
4221
4222 dnl We used to call AC_FUNC_MMAP here
4223 dnl Instead we now use following, suggested by Neal Becker
4224 AC_MSG_CHECKING(for working mmap)
4225 case "$opsys" in ultrix* ) have_mmap=no ;; *)
4226 AC_TRY_RUN([#include <stdio.h>
4227 #include <unistd.h>
4228 #include <fcntl.h>
4229 #include <sys/mman.h>
4230
4231 #ifndef MAP_VARIABLE
4232 #define MAP_VARIABLE 0
4233 #endif
4234
4235 #ifndef MAP_FAILED
4236 #define MAP_FAILED -1
4237 #endif
4238
4239 int main (int argc, char *argv[])
4240 {
4241   int fd = -1;
4242   caddr_t p;
4243 #ifndef MAP_ANONYMOUS
4244   fd = open ("/dev/zero", O_RDWR);
4245   if (fd < 0)
4246     return 1;
4247 #define MAP_ANONYMOUS 0
4248 #endif
4249   if (mmap(0, 1024, PROT_READ | PROT_WRITE,
4250            MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS,
4251            fd, 0) != (void *) MAP_FAILED)
4252     return 0;
4253   perror ("conftest: mmap failed");
4254   return 1;
4255 }], have_mmap=yes, have_mmap=no) ;;
4256 esac
4257 AC_MSG_RESULT($have_mmap)
4258 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
4259
4260 dnl By default we switch off rel-alloc on cygwin as it generally causes us grief
4261 case "$opsys" in cygwin*) 
4262         test "$rel_alloc" = "default" && rel_alloc=no ;;
4263 esac
4264 dnl rel_alloc requires either GNU malloc or system malloc with mmap
4265 dnl We only turn rel_alloc on by default if mmap is available.
4266 test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
4267 if test "$rel_alloc $have_mmap" = "default yes"; then
4268   if test "$doug_lea_malloc" = "yes"; then
4269     dnl Check if malloc() calls mmap(), making rel_alloc pointless.
4270     AC_MSG_CHECKING(for M_MMAP_THRESHOLD)
4271     AC_TRY_COMPILE([#include <malloc.h>],[
4272 #ifndef M_MMAP_THRESHOLD
4273 #error No M_MMAP_THRESHOLD :-(
4274 !@+$%^&*_)(_ - unlikely to compile...
4275 #endif
4276 ], [rel_alloc=no; AC_MSG_RESULT(yes);], [rel_alloc=yes; AC_MSG_RESULT(no);])
4277   else
4278     rel_alloc=yes
4279   fi
4280 fi
4281 test "$rel_alloc" = "yes" && AC_DEFINE(REL_ALLOC)
4282
4283 dnl Check for terminal I/O variants
4284 dnl TERMIOS systems may have termio.h, but not vice-versa, I think.
4285 AC_CHECK_HEADER(termios.h,
4286   AC_DEFINE(HAVE_TERMIOS)
4287   AC_DEFINE(SIGNALS_VIA_CHARACTERS)
4288   AC_DEFINE(NO_TERMIO),
4289   [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])])
4290
4291
4292 dnl Check for Internet sockets.
4293 AC_CHECK_FUNC(socket,
4294  [AC_CHECK_HEADER(netinet/in.h,
4295    [AC_CHECK_HEADER(arpa/inet.h, [
4296   AC_DEFINE(HAVE_SOCKETS)
4297       AC_MSG_CHECKING("for sun_len member in struct sockaddr_un")
4298       AC_TRY_LINK([
4299 #include <sys/types.h>
4300 #include <sys/socket.h>
4301 #include <sys/un.h>
4302       ],
4303       [static struct sockaddr_un x; x.sun_len = 1;],
4304       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)],
4305       [AC_MSG_RESULT(no)])
4306       AC_MSG_CHECKING("for ip_mreq struct in netinet/in.h")
4307       AC_TRY_LINK([
4308 #include <sys/types.h>
4309 #include <netinet/in.h>
4310       ],
4311       [static struct ip_mreq x;],
4312       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MULTICAST)],
4313       [AC_MSG_RESULT(no)])])])])
4314
4315 dnl Check for SYS V IPC. (Inferior to sockets.)
4316 AC_CHECK_FUNC(msgget,
4317   [AC_CHECK_HEADER(sys/ipc.h,
4318     [AC_CHECK_HEADER(sys/msg.h,
4319       [AC_DEFINE(HAVE_SYSVIPC)])])])
4320
4321 dnl Check for directory variants
4322 AC_CHECK_HEADER(dirent.h, [AC_DEFINE(SYSV_SYSTEM_DIR)],
4323   [AC_CHECK_HEADER(sys/dir.h, , [AC_DEFINE(NONSYSTEM_DIR_LIBRARY)])])
4324
4325 dnl Check for nlist.h
4326 AC_CHECK_HEADER(nlist.h, AC_DEFINE(NLIST_STRUCT), )
4327
4328 dnl Check for sound of various sorts.
4329
4330 dnl Autodetect native sound
4331 AC_CHECKING("for sound support")
4332 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
4333
4334 if test "$with_native_sound" != "no"; then
4335   dnl Maybe sound is already on include path...
4336   if test -n "$native_sound_lib"; then
4337     AC_CHECK_HEADER(multimedia/audio_device.h,
4338       [sound_found=yes sound_cflags=""
4339       XE_ADD_OBJS(sunplay.o)])
4340   fi
4341
4342   dnl Autodetect Sun native sound from SUNWaudmo package
4343   if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
4344     if test -d "/usr/demo/SOUND/include/multimedia"; then
4345       sun_sound_cflags="-I/usr/demo/SOUND/include"
4346     elif test -d "/usr/demo/SOUND/multimedia"; then
4347       sun_sound_cflags="-I/usr/demo/SOUND"
4348     fi
4349
4350     if test -n "$native_sound_lib"; then
4351       sun_sound_lib="$native_sound_lib"
4352     elif test -r "/usr/demo/SOUND/lib/libaudio.a"; then
4353       sun_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
4354     elif test -r "/usr/demo/SOUND/libaudio.a"; then
4355       sun_sound_lib="/usr/demo/SOUND/libaudio.a"
4356     fi
4357
4358     if test -n "$sun_sound_cflags" -a -n "$sun_sound_lib"; then
4359       native_sound_lib="$sun_sound_lib"
4360       sound_cflags="$sun_sound_cflags"
4361       sound_found=yes
4362       XE_ADD_OBJS(sunplay.o)
4363     fi
4364   fi
4365
4366   dnl Check for SGI and HP native sound libs
4367   if test -z "$sound_found"; then
4368     case "$canonical" in
4369     *-sgi-* )
4370       if test -z "$native_sound_lib"; then
4371         AC_CHECK_LIB(audio, ALopenport, native_sound_lib="-laudio")
4372       fi
4373       if test -n "$native_sound_lib"; then
4374         sound_found=yes sound_cflags=""
4375         XE_ADD_OBJS(sgiplay.o)
4376       fi ;;
4377     hppa*-hp-hpux* )
4378       if test -z "$native_sound_lib"; then
4379         AC_CHECK_LIB(Alib, AOpenAudio, native_sound_lib="-lAlib")
4380       fi
4381       if test -n "$native_sound_lib"; then
4382         sound_found=yes
4383         XE_ADD_OBJS(hpplay.o)
4384         if test "$GCC" = "yes" # Kludge city
4385           then sound_cflags="-Dconst= -Dvolatile= -I/usr/audio/examples"
4386           else sound_cflags="+e -I/usr/audio/examples"
4387         fi
4388       fi ;;
4389     esac
4390   fi
4391
4392   dnl Win32 Native uses native sound
4393   if test -z "$sound_found"; then
4394     if test "$with_msw" = "yes"; then
4395     sound_found=yes
4396     native_sound_lib=
4397     fi
4398   fi
4399
4400   dnl Check for Linux/BSD native sound
4401   if test -z "$sound_found"; then
4402     for dir in "machine" "sys" "linux"; do
4403       AC_CHECK_HEADER(${dir}/soundcard.h,
4404         sound_found=yes
4405        need_miscplay=yes
4406         XE_ADD_OBJS(linuxplay.o)
4407         [AC_DEFINE_UNQUOTED(SOUNDCARD_H_FILE, "${dir}/soundcard.h")]
4408         break)
4409     done
4410   fi
4411
4412   test "$sound_found" = "yes" && with_native_sound=yes
4413 fi
4414
4415 if test "$with_native_sound" = "yes"; then
4416   AC_DEFINE(HAVE_NATIVE_SOUND)
4417   test -n "$native_sound_lib" && XE_PREPEND($native_sound_lib, LIBS)
4418 fi
4419
4420 dnl NAS Sound support
4421 if test "$with_nas_sound" != "no"; then
4422   AC_CHECK_HEADER(audio/audiolib.h, [
4423     AC_CHECK_LIB(audio, AuOpenServer, have_nas_sound=yes)])
4424   if test "$have_nas_sound" = "yes"; then
4425     with_nas_sound=yes
4426     AC_DEFINE(HAVE_NAS_SOUND)
4427     XE_ADD_OBJS(nas.o)
4428     XE_PREPEND(-laudio, libs_x)
4429     dnl If the nas library does not contain the error jump point,
4430     dnl then we force safer behavior.
4431     AC_EGREP_HEADER(AuXtErrorJump,audio/Xtutil.h,,[old_nas=yes; AC_DEFINE(NAS_NO_ERROR_JUMP)])
4432   else
4433     test "$with_nas_sound" = "yes" && \
4434       XE_DIE("Required NAS sound support cannot be provided.")
4435     with_nas_sound=no
4436   fi
4437 fi
4438
4439 dnl ESD Sound support
4440 if test "$with_esd_sound" != "no"; then
4441   AC_CHECK_PROG(have_esd_config, esd-config, yes, no)
4442   if test "$have_esd_config" = "yes"; then
4443     save_c_switch_site="$c_switch_site" save_LIBS="$LIBS"
4444     XE_APPEND(`esd-config --cflags`, c_switch_site)
4445     XE_PREPEND(`esd-config --libs`, LIBS)
4446     AC_CHECK_FUNC(esd_play_stream,
4447       have_esd_sound=yes,
4448       c_switch_site="$save_c_switch_site" LIBS="$save_LIBS")
4449   fi
4450
4451   if test "$have_esd_sound" = "yes"; then
4452     with_esd_sound=yes
4453     need_miscplay=yes
4454     XE_ADD_OBJS(esd.o)
4455     AC_DEFINE(HAVE_ESD_SOUND)
4456   else
4457     test "$with_esd_sound" = "yes" && \
4458       XE_DIE("Required ESD sound support cannot be provided.")
4459     with_esd_sound=no
4460   fi
4461 fi
4462
4463 test "$need_miscplay" = "yes" && XE_ADD_OBJS(miscplay.o)
4464
4465 dnl ---------------------
4466 dnl TTY-dependent options
4467 dnl ---------------------
4468
4469 test -z "$with_tty" && with_tty=yes
4470
4471 if test "$with_tty" = "yes"  ; then
4472   AC_CHECKING(for TTY-related features)
4473   AC_DEFINE(HAVE_TTY)
4474   XE_ADD_OBJS(console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o)
4475
4476   dnl Autodetect ncurses.
4477   if test -z "$with_ncurses"; then
4478     AC_CHECK_LIB(ncurses, tgetent, with_ncurses=yes, with_ncurses=no)
4479   fi
4480   if test "$with_ncurses" = "yes"; then
4481     AC_DEFINE(HAVE_NCURSES)
4482     AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
4483     AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
4484     XE_ADD_OBJS(terminfo.o)
4485     XE_PREPEND(-lncurses, LIBS)
4486
4487     if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then
4488       dnl Try again, and check for the bogus ncurses/ include bug.
4489       dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
4490       dnl <ncurses/unctrl.h>)
4491       save_c_switch_site="$c_switch_site"
4492       c_switch_site="$c_switch_site -I/usr/include/ncurses"
4493       AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
4494       if test "$ac_cv_header_ncurses_curses_h" = "yes"
4495         then AC_MSG_WARN("Your system has the bogus ncurses include bug.")
4496         else c_switch_site="$save_c_switch_site"
4497       fi
4498     fi
4499   else dnl "$with_ncurses" = "no"
4500     dnl Autodetect terminfo/-lcurses/-ltermlib/-ltermcap
4501     if test "$have_terminfo" = "yes"; then
4502       XE_ADD_OBJS(terminfo.o)
4503       if test -n "$libs_termcap"; then
4504         XE_PREPEND($libs_termcap, LIBS)
4505       else
4506         for lib in curses termlib termcap; do
4507           AC_CHECK_LIB($lib, tgetent, XE_PREPEND(-l${lib}, LIBS); break)
4508         done
4509       fi
4510     else dnl "$have_terminfo" = "no" && "with_ncurses" = "no"
4511       if test -n "$libs_termcap" -a "$opsys" = "openbsd"; then
4512         dnl We need to check if tgoto does not exist in termcap yet
4513         dnl because on OpenBSD libtermcap is another name for libcurses
4514         dnl which provides the same tgoto as ncurses
4515         AC_CHECK_LIB(termcap, tgoto, , XE_ADD_OBJS(tparam.o))
4516       else
4517         XE_ADD_OBJS(tparam.o)
4518       fi
4519       dnl The HP-UX curses library seems to have a badly broken version of select(2)
4520       dnl that makes "poll: interrupted system call" messages to appear and
4521       dnl Emacs subprocesses to hang (e.g. TeX compilation w/ AUCTeX) */
4522       case "$opsys" in *-hp-hpux* ) libs_termcap="-ltermcap" ;; esac
4523       if test -n "$libs_termcap"; then
4524         XE_PREPEND($libs_termcap, LIBS)
4525       else
4526         AC_CHECK_LIB(curses, tgetent, XE_PREPEND(-lcurses, LIBS),
4527           AC_CHECK_LIB(termcap, tgetent, XE_PREPEND(-ltermcap, LIBS),
4528             XE_ADD_OBJS(termcap.o)))
4529       fi
4530     fi
4531   fi
4532   AC_DEFINE_UNQUOTED(CURSES_H_FILE, "${curses_h_file-curses.h}")
4533   AC_DEFINE_UNQUOTED(TERM_H_FILE, "${term_h_file-term.h}")
4534
4535   dnl General Purpose Mouse (libgpm) support
4536   if test "$with_gpm" != "no"; then
4537     AC_CHECK_HEADER(gpm.h, [
4538       AC_CHECK_LIB(gpm, Gpm_Open, have_gpm=yes)])
4539     if test "$have_gpm" = "yes"; then
4540       with_gpm=yes
4541       AC_DEFINE(HAVE_GPM)
4542       XE_ADD_OBJS(gpmevent.o)
4543       XE_PREPEND(-lgpm, LIBS)
4544     elif test "$with_gpm" = "yes"; then
4545       XE_DIE(["GPM requested, but gpm.h or libgpm seems to be missing."])
4546     else
4547       with_gpm=no
4548     fi
4549   fi
4550
4551 else dnl "$with_tty" = "no"
4552   for feature in ncurses gpm; do
4553     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
4554       AC_MSG_WARN("--with-${feature} ignored:  Not valid without TTY support")
4555     fi
4556     eval "with_${feature}=no"
4557   done
4558 fi dnl with_tty
4559
4560 dnl Do we need event-unixoid.o ?
4561 dnl This is needed for X, or for TTY, or for MSWIN w/Cygwin select()
4562 dnl [but not Mingw MSWIN]
4563 test "$with_x11" = "yes" -o "$with_tty" = "yes" -o "$need_event_unixoid" = "yes" && XE_ADD_OBJS(event-unixoid.o)
4564
4565 dnl Database support
4566 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
4567 dnl On FreeBSD, both DB and DBM are part of libc.
4568 dnl By default, we check for DBM support in libgdbm, then libc, then libdbm.
4569
4570 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
4571   != "no no no" && AC_CHECKING(for database support)
4572
4573 dnl Check for ndbm.h, required for either kind of DBM support.
4574 if test "$with_database_gdbm $with_database_dbm" != "no no"; then
4575   AC_CHECK_HEADER(ndbm.h, [:], [
4576     test "$with_database_gdbm" = "yes" -o \
4577          "$with_database_dbm"  = "yes" && \
4578       XE_DIE("Required DBM support cannot be provided.")
4579     with_database_gdbm=no with_database_dbm=no])
4580 fi
4581
4582 dnl Check for DBM support in libgdbm.
4583 if test "$with_database_gdbm" != "no"; then
4584   AC_CHECK_LIB(gdbm, dbm_open, [
4585    with_database_gdbm=yes with_database_dbm=no libdbm=-lgdbm], [
4586    if test "$with_database_gdbm" = "yes"; then
4587      XE_DIE("Required GNU DBM support cannot be provided.")
4588    fi
4589    with_database_gdbm=no])
4590 fi
4591
4592 dnl Check for DBM support in libc and libdbm.
4593 if test "$with_database_dbm" != "no"; then
4594   AC_CHECK_FUNC(dbm_open, [with_database_dbm=yes libdbm=], [
4595     AC_CHECK_LIB(dbm, dbm_open, [with_database_dbm=yes libdbm=-ldbm], [
4596       test "$with_database_dbm" = "yes" && \
4597         XE_DIE("Required DBM support cannot be provided.")
4598       with_database_dbm=no])])
4599 fi
4600
4601 dnl Tell make about the DBM support we detected.
4602 test -n "$libdbm" && XE_PREPEND("$libdbm", LIBS)
4603 test "$with_database_gdbm" = "yes" -o \
4604      "$with_database_dbm"  = "yes" && \
4605   AC_DEFINE(HAVE_DBM)
4606
4607 dnl Check for u_int*_t typedefs.
4608 AC_CHECK_TYPE(u_int8_t, uint8_t)
4609 if test $ac_cv_type_u_int8_t = yes; then
4610 AC_DEFINE(HAVE_U_INT8_T,1)
4611 fi
4612 AC_CHECK_TYPE(u_int16_t, uint16_t)
4613 if test $ac_cv_type_u_int16_t = yes; then
4614 AC_DEFINE(HAVE_U_INT16_T,1)
4615 fi
4616 AC_CHECK_TYPE(u_int32_t, uint32_t)
4617 if test $ac_cv_type_u_int32_t = yes; then
4618 AC_DEFINE(HAVE_U_INT32_T,1)
4619 fi
4620 AC_CHECK_TYPE(u_int64_t, uint64_t)
4621 if test $ac_cv_type_u_int64_t = yes; then
4622 AC_DEFINE(HAVE_U_INT64_T,1)
4623 fi
4624
4625 dnl Check for Berkeley DB.
4626 if test "$with_database_berkdb" != "no"; then
4627   AC_MSG_CHECKING(for Berkeley db.h)
4628   for header in "db/db.h" "db.h"; do
4629     case "$opsys" in
4630         *freebsd*)
4631     AC_TRY_COMPILE([
4632 #include <stdlib.h>
4633 #if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1)
4634 #ifdef HAVE_INTTYPES_H
4635 #define __BIT_TYPES_DEFINED__
4636 #include <inttypes.h>
4637 #endif
4638 #endif
4639 #include <$header>
4640 ],[], db_h_file="$header"; break)
4641         ;;
4642         *)
4643     AC_TRY_COMPILE([
4644 #include <stdlib.h>
4645 #if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1)
4646 #ifdef HAVE_INTTYPES_H
4647 #define __BIT_TYPES_DEFINED__
4648 #include <inttypes.h>
4649 #if !HAVE_U_INT8_T
4650 typedef uint8_t  u_int8_t;
4651 #endif
4652 #if !HAVE_U_INT16_T
4653 typedef uint16_t u_int16_t;
4654 #endif
4655 #if !HAVE_U_INT32_T
4656 typedef uint32_t u_int32_t;
4657 #endif
4658 #ifdef WE_DONT_NEED_QUADS
4659 #if !HAVE_U_INT64_T
4660 typedef uint64_t u_int64_t;
4661 #endif
4662 #endif
4663 #endif
4664 #endif
4665 #include <$header>
4666 ],[], db_h_file="$header"; break)
4667         ;;
4668         esac
4669   done
4670   if test -z "$db_h_file"
4671   then AC_MSG_RESULT(no); with_database_berkdb=no
4672   else AC_MSG_RESULT($db_h_file)
4673   fi
4674
4675   if test "$with_database_berkdb" != "no"; then
4676     AC_MSG_CHECKING(for Berkeley DB version)
4677     AC_EGREP_CPP(yes,
4678 [#include <$db_h_file>
4679 #if DB_VERSION_MAJOR > 1
4680 yes
4681 #endif
4682 ], [AC_EGREP_CPP(yes,
4683 [#include <$db_h_file>
4684 #if DB_VERSION_MAJOR > 2
4685 yes
4686 #endif
4687 ], [AC_MSG_RESULT(3); dbfunc=db_create],[
4688     AC_MSG_RESULT(2); dbfunc=db_open])],[
4689     AC_MSG_RESULT(1); dbfunc=dbopen])
4690     AC_CHECK_FUNC($dbfunc,     with_database_berkdb=yes need_libdb=no, [
4691     AC_CHECK_LIB(db, $dbfunc,  with_database_berkdb=yes need_libdb=yes)])
4692   fi
4693
4694   if test "$with_database_berkdb" = "yes"; then
4695     AC_DEFINE_UNQUOTED(DB_H_FILE, "$db_h_file")
4696     AC_DEFINE(HAVE_BERKELEY_DB)
4697     test "$need_libdb" = "yes" && XE_PREPEND(-ldb, LIBS)
4698   else with_database_berkdb=no
4699   fi
4700 fi
4701
4702 if test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
4703      != "no no no"; then
4704   AC_DEFINE(HAVE_DATABASE)
4705   XE_ADD_OBJS(database.o)
4706   if test "$with_utf_2000" = "yes" -a "$with_chise" != "yes" ; then
4707     AC_DEFINE(HAVE_CHISE)
4708   fi
4709 fi
4710
4711 dnl Socks support
4712 if test "$with_socks" = "yes"; then
4713   AC_CHECK_LIB(socks, SOCKSinit)
4714   test -n "$ac_cv_lib_socks_SOCKSinit" && AC_DEFINE(HAVE_SOCKS)
4715 fi
4716
4717 dnl Usage tracking (undocumented and likely unused option)
4718 if test "$usage_tracking" = "yes"; then
4719   AC_DEFINE(USAGE_TRACKING)
4720   XE_PREPEND(-Bstatic -lut -Bdynamic, LIBS)
4721 fi
4722
4723 dnl autodetect dll support
4724 if test "$with_modules" != "no"; then
4725   AC_CHECKING(for module support)
4726
4727   dnl Check for MS-Windows
4728   if test "$with_msw" = "yes"; then
4729     have_dl=yes;
4730   else
4731     dnl Check for Darwin
4732     case "$opsys" in
4733       darwin) have_dl=yes; AC_DEFINE(HAVE_DYLD) ;;
4734       *) dnl Find headers and libraries
4735          AC_CHECK_HEADER(dlfcn.h, [
4736            AC_MSG_CHECKING([for dlopen in -lc])
4737            AC_TRY_LINK([#include <dlfcn.h>],dnl
4738               [dlopen ("", 0);], [ have_dl=yes ], [
4739                AC_MSG_CHECKING([for dlopen in -ldl])
4740                ac_save_LIBS="$LIBS"
4741                LIBS="-ldl $LIBS"
4742                AC_TRY_LINK([#include <dlfcn.h>],dnl
4743                  [dlopen ("", 0);], [ have_dl=yes ],
4744                  [LIBS="$ac_save_LIBS"])
4745                ac_save_LIBS=])])
4746         if test -n "$have_dl"; then
4747            AC_DEFINE(HAVE_DLOPEN)
4748         else
4749            AC_CHECK_LIB(dld, shl_load, [
4750            libdl=dld have_dl=yes;
4751            AC_DEFINE(HAVE_SHL_LOAD)], [
4752            AC_CHECK_LIB(dld, dld_init, [
4753            libdl=dld have_dl=yes;
4754            AC_DEFINE(HAVE_DLD_INIT)])])
4755         fi
4756     ;;
4757     esac
4758   fi dnl end !MS-Windows
4759
4760   if test -n "$have_dl"; then
4761     dnl XE_SHLIB_STUFF (in aclocal.m4) defines $can_build_shared
4762     XE_SHLIB_STUFF
4763   fi
4764
4765   if test "$can_build_shared" = "yes"; then
4766     AC_DEFINE(HAVE_SHLIB)
4767     XE_ADD_OBJS(sysdll.o emodules.o)
4768     XE_APPEND(src, INSTALL_ARCH_DEP_SUBDIR)
4769     test -n "$libdl" && XE_PREPEND(-l${libdl}, LIBS)
4770     AC_CHECK_FUNCS(dlerror _dlerror)
4771     with_modules=yes
4772   else
4773     if test "$with_modules" = "yes"; then
4774       XE_DIE("Required module support cannot be provided.")
4775     else
4776       AC_MSG_WARN("Module support cannot be provided.")
4777     fi
4778     with_modules=no
4779   fi
4780 fi
4781
4782 dnl Unfortunately, just because we can link doesn't mean we can run.
4783 dnl One of the above link tests may have succeeded but caused resulting
4784 dnl executables to fail to run.  Also any tests using AC_TRY_RUN will
4785 dnl have reported incorrect results.
4786 AC_TRY_RUN([int main(int c,char *v[]){return 0;}],[:],[
4787   echo ""
4788   echo "*** PANIC *** configure forgot how to build working executables!"
4789   echo ""
4790   echo "*** This is most commonly due to an unforeseen environment, causing"
4791   echo "*** configure to incorrectly compute the sequence of libraries to link."
4792   echo "*** Please examine the tail of config.log for runtime errors."
4793   echo "*** Pay special attention to the -l flags, and perhaps -I and -L."
4794   echo "*** Often adding or removing explicit options in the configure"
4795   echo "*** invocation can work around this kind of problem.  If so, please"
4796   echo "*** report it as a bug to xemacs-beta@xemacs.org."
4797   echo "***"
4798   echo "*** Other possible causes are inability to write to the file system"
4799   echo "*** (bogus permissions or disk full) or a misconfiguration of the dynamic"
4800   echo "*** linker.  On Linux, check /etc/ld.conf and rerun ldconfig if"
4801   echo "*** necessary.  On other systems, try telling configure where to find"
4802   echo "*** the shared libraries using the --site-runtime-libraries option."
4803   echo "***"
4804   echo "*** Another way to shoot yourself in the foot is to specify"
4805   echo "*** --with-FEATURE when FEATURE is not actually installed on your"
4806   echo "*** system.  Don't do that."
4807   exit 1])
4808
4809 dnl Process support
4810 if test "$win32_processes" = "yes"; then
4811   XE_ADD_OBJS(process-nt.o)
4812 else
4813   AC_DEFINE(HAVE_UNIX_PROCESSES)
4814   XE_ADD_OBJS(process-unix.o)
4815 fi
4816
4817 dnl --------------------------------
4818 dnl Compute SUBST-itutable variables
4819 dnl --------------------------------
4820
4821 dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM)
4822 dnl Use XE_SPACE instead of plain assignment statements to remove extraneous blanks
4823 XE_SPACE(CFLAGS, $CFLAGS)
4824 XE_SPACE(extra_objs, $extra_objs)
4825 XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system)
4826 XE_SPACE(c_switch_window_system, $c_switch_x_site $c_switch_gtk $X_CFLAGS)
4827 XE_SPACE(c_switch_all, $c_switch_general $c_switch_window_system)
4828 XE_SPACE(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
4829 XE_SPACE(ld_switch_window_system, $ld_switch_x_site)
4830 XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system)
4831 XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
4832 XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS)
4833 XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general)
4834
4835 dnl Compute lists of Makefiles and subdirs
4836 AC_SUBST(SRC_SUBDIR_DEPS)
4837 XE_APPEND(src, MAKE_SUBDIR)
4838 internal_makefile_list="Makefile.in"
4839 SUBDIR_MAKEFILES=''
4840 test -d lock || mkdir lock
4841 for dir in $MAKE_SUBDIR; do
4842   case "$dir" in */* ) dnl Implement mkdir -p
4843     ( for d in `echo $dir | sed 's:/: :g'` ; do
4844         test -d "$d" || mkdir "$d"; cd "$d"
4845       done ) ;;
4846    * ) test -d "$dir" || mkdir "$dir" ;;
4847   esac
4848   XE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile $dir/GNUmakefile)
4849   XE_SPACE(internal_makefile_list, $internal_makefile_list $dir/Makefile.in)
4850 done
4851 AC_SUBST(INSTALL_ARCH_DEP_SUBDIR)
4852 AC_SUBST(MAKE_SUBDIR)
4853 AC_SUBST(SUBDIR_MAKEFILES)
4854
4855 dnl Make s&m symlinks in the src directory, for config.h
4856 for dir in src/s src/m; do
4857   if test ! -d "$dir" ; then
4858     echo Making symbolic link to "$srcdir/$dir"
4859     ${LN_S} "$srcdir/$dir" "$dir"
4860   fi
4861 done
4862
4863 if test "$extra_verbose" = "yes"; then
4864   echo ""
4865   PRINT_VAR(extra_objs
4866    c_switch_general  c_switch_window_system  c_switch_all
4867   ld_switch_general ld_switch_window_system ld_switch_all
4868     ld_libs_general   ld_libs_window_system   ld_libs_all)
4869   echo ""
4870 fi
4871
4872 dnl ----------------------------------------------
4873 dnl Create some auxiliary files for developers.
4874 dnl ----------------------------------------------
4875
4876 dnl Create a .gdbinit useful for debugging XEmacs
4877 if test -f "$srcdir/src/.gdbinit" -a ! -f "src/.gdbinit"; then
4878   test "$extra_verbose" = "yes" && echo "creating src/.gdbinit"
4879   echo "source $srcdir/src/.gdbinit" > "src/.gdbinit"
4880 fi
4881
4882 dnl Create a .dbxrc useful for debugging XEmacs
4883 if test -f "$srcdir/src/.dbxrc" -a ! -f "src/.dbxrc"; then
4884   test "$extra_verbose" = "yes" && echo "creating src/.dbxrc"
4885   echo ". $srcdir/src/.dbxrc" > "src/.dbxrc"
4886 fi
4887
4888 dnl Create a useful TAGS file
4889 if test -f "$srcdir/TAGS" -a ! -f "TAGS"; then
4890   test "$extra_verbose" = "yes" && echo "creating TAGS"
4891   echo "\f
4892 $srcdir/TAGS,include" > "TAGS"
4893 fi
4894
4895 dnl Create top level .sbinit for Sun compilers
4896 if test "$__SUNPRO_C" = "yes"; then
4897   test "$extra_verbose" = "yes" && echo "creating .sbinit"
4898   ( echo "# For use with Sun WorkShop's Source browser."
4899     echo "# See sbquery(1) and sbinit(4) for more information"
4900     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
4901   ) > .sbinit
4902 fi
4903
4904 dnl There are no more compile tests; remove the core they created.
4905 rm -f core
4906
4907 dnl ----------------------------------------------
4908 dnl Substitute into Makefile, config.h and paths.h
4909 dnl ----------------------------------------------
4910
4911 dnl what sort of things to edit into Makefile, config.h and paths.h
4912 dnl configuration here uncanonicalized to avoid exceeding size limits.
4913
4914 AC_SUBST(PROGNAME)
4915 AC_SUBST(version)
4916 AC_SUBST(configuration)
4917 AC_SUBST(canonical)
4918 AC_SUBST(inststaticdir)
4919 AC_SUBST(instvardir)
4920 AC_SUBST(srcdir)
4921 AC_SUBST(bindir)
4922 AC_SUBST(datadir)
4923 AC_SUBST(pkgdir)
4924 AC_SUBST(statedir)
4925 AC_SUBST(libdir)
4926 AC_SUBST(mandir)
4927 AC_SUBST(extra_includes)
4928
4929 AC_SUBST(prefix)
4930 AC_SUBST(PREFIX_USER_DEFINED)
4931 dnl Yo, Stephen Bourne!  I want to marry you!
4932 PREFIX=$prefix
4933 while true; do
4934   case "$PREFIX" in
4935     *\$* ) eval "PREFIX=$PREFIX" ;;
4936     *) break ;;
4937   esac
4938 done
4939 AC_SUBST(PREFIX)
4940
4941 AC_SUBST(exec_prefix)
4942 AC_SUBST(EXEC_PREFIX_USER_DEFINED)
4943 EXEC_PREFIX=$exec_prefix
4944 while true; do
4945   case "$EXEC_PREFIX" in
4946     *\$* ) eval "EXEC_PREFIX=$EXEC_PREFIX" ;;
4947     *) break ;;
4948   esac
4949 done
4950 AC_SUBST(EXEC_PREFIX)
4951
4952 AC_SUBST(infodir)
4953 AC_SUBST(INFODIR_USER_DEFINED)
4954 INFODIR=$infodir
4955 while true; do
4956   case "$INFODIR" in
4957     *\$* ) eval "INFODIR=$INFODIR" ;;
4958     *) break ;;
4959   esac
4960 done
4961 AC_SUBST(INFODIR)
4962
4963 AC_SUBST(infopath)
4964 AC_SUBST(INFOPATH_USER_DEFINED)
4965 INFOPATH=$infopath
4966 while true; do
4967   case "$INFOPATH" in
4968     *\$* ) eval "INFOPATH=$INFOPATH" ;;
4969     *) break ;;
4970   esac
4971 done
4972 AC_SUBST(INFOPATH)
4973
4974 AC_SUBST(package_path)
4975 AC_SUBST(PACKAGE_PATH_USER_DEFINED)
4976 PACKAGE_PATH=$package_path
4977 while true; do
4978   case "$PACKAGE_PATH" in
4979     *\$* ) eval "PACKAGE_PATH=$PACKAGE_PATH" ;;
4980     *) break ;;
4981   esac
4982 done
4983 AC_SUBST(PACKAGE_PATH)
4984
4985 AC_SUBST(lispdir)
4986 AC_SUBST(LISPDIR_USER_DEFINED)
4987 LISPDIR=$lispdir
4988 while true; do
4989   case "$LISPDIR" in
4990     *\$* ) eval "LISPDIR=$LISPDIR" ;;
4991     *) break ;;
4992   esac
4993 done
4994 AC_SUBST(LISPDIR)
4995
4996 AC_SUBST(moduledir)
4997 AC_SUBST(MODULEDIR_USER_DEFINED)
4998 MODULEDIR=$moduledir
4999 while true; do
5000   case "$MODULEDIR" in
5001     *\$* ) eval "MODULEDIR=$MODULEDIR" ;;
5002     *) break ;;
5003   esac
5004 done
5005 AC_SUBST(MODULEDIR)
5006
5007 AC_SUBST(sitelispdir)
5008 AC_SUBST(SITELISPDIR_USER_DEFINED)
5009 SITELISPDIR=$sitelispdir
5010 while true; do
5011   case "$SITELISPDIR" in
5012     *\$* ) eval "SITELISPDIR=$SITELISPDIR" ;;
5013     *) break ;;
5014   esac
5015 done
5016 AC_SUBST(SITELISPDIR)
5017
5018 AC_SUBST(sitemoduledir)
5019 AC_SUBST(SITEMODULEDIR_USER_DEFINED)
5020 SITEMODULEDIR=$sitemoduledir
5021 while true; do
5022   case "$SITEMODULEDIR" in
5023     *\$* ) eval "SITEMODULEDIR=$SITEMODULEDIR" ;;
5024     *) break ;;
5025   esac
5026 done
5027 AC_SUBST(SITEMODULEDIR)
5028
5029 AC_SUBST(etcdir)
5030 AC_SUBST(ETCDIR_USER_DEFINED)
5031 ETCDIR=$etcdir
5032 while true; do
5033   case "$ETCDIR" in
5034     *\$* ) eval "ETCDIR=$ETCDIR" ;;
5035     *) break ;;
5036   esac
5037 done
5038 AC_SUBST(ETCDIR)
5039
5040 AC_SUBST(docdir)
5041 AC_SUBST(DOCDIR_USER_DEFINED)
5042 DOCDIR=$docdir
5043 while true; do
5044   case "$DOCDIR" in
5045     *\$* ) eval "DOCDIR=$DOCDIR" ;;
5046     *) break ;;
5047   esac
5048 done
5049 AC_SUBST(DOCDIR)
5050
5051 AC_SUBST(archlibdir)
5052 AC_SUBST(ARCHLIBDIR_USER_DEFINED)
5053 ARCHLIBDIR=$archlibdir
5054 while true; do
5055   case "$ARCHLIBDIR" in
5056     *\$* ) eval "ARCHLIBDIR=$ARCHLIBDIR" ;;
5057     *) break ;;
5058   esac
5059 done
5060 AC_SUBST(ARCHLIBDIR)
5061
5062 AC_SUBST(docdir)
5063 AC_SUBST(bitmapdir)
5064 AC_SUBST(extra_objs)
5065
5066 dnl The following flags combine all the information from:
5067 dnl - command line options (user always gets priority)
5068 dnl - user environment variables
5069 dnl - determined by configure
5070 dnl - the s&m header files (required for ellcc)
5071 AC_SUBST(machfile)
5072 AC_SUBST(opsysfile)
5073 AC_SUBST(c_switch_general)
5074 AC_SUBST(c_switch_window_system)
5075 AC_SUBST(c_switch_all)
5076 AC_SUBST(ld_switch_general)
5077 AC_SUBST(ld_switch_window_system)
5078 AC_SUBST(ld_switch_all)
5079 AC_SUBST(ld_libs_general)
5080 AC_SUBST(ld_libs_window_system)
5081 AC_SUBST(ld_libs_all)
5082 AC_SUBST(CFLAGS)
5083 AC_SUBST(CPPFLAGS)
5084 AC_SUBST(LDFLAGS)
5085 RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
5086 AC_SUBST(RECURSIVE_MAKE_ARGS)
5087
5088 AC_SUBST(native_sound_lib)
5089 AC_SUBST(sound_cflags)
5090 AC_SUBST(RANLIB)
5091 AC_SUBST(dynodump_arch)
5092
5093 dnl Preliminary support for using a different compiler for xemacs itself.
5094 dnl Useful for building XEmacs with a C++ or 64-bit compiler.
5095 : ${XEMACS_CC:=$CC}
5096 AC_SUBST(XEMACS_CC)
5097
5098 dnl The default is yes
5099 if test "$with_prefix" = "yes"; then
5100   AC_DEFINE(PREFIX_USER_DEFINED)
5101 fi
5102
5103 dnl The default is no
5104 if test "$with_site_lisp" = "no"; then
5105   AC_DEFINE(INHIBIT_SITE_LISP)
5106 fi
5107 dnl The default is yes
5108 if test "$with_site_modules" = "no"; then
5109   AC_DEFINE(INHIBIT_SITE_MODULES)
5110 fi
5111
5112 XE_SPACE(ac_configure_args, $ac_configure_args)
5113 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$configuration")
5114 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "$ac_configure_args")
5115
5116 dnl Following are deprecated
5117
5118 null_string=""
5119 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE,     $null_string)
5120 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, $null_string)
5121 AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,      $null_string)
5122 AC_DEFINE_UNQUOTED(LD_SWITCH_SITE,       $null_string)
5123 AC_DEFINE_UNQUOTED(C_SWITCH_SITE,        $null_string)
5124
5125 dnl Note: as a general rule, *only* define things here that are not
5126 dnl autodetected.  For things that are autodetected, define them
5127 dnl at the point where the autodetection occurs or would occur,
5128 dnl so that the user gets immediate feedback on the results of the
5129 dnl autodetection.
5130
5131 if   test "$GNU_MALLOC"         = "yes"; then AC_DEFINE(GNU_MALLOC)
5132 elif test "$with_system_malloc" = "yes"; then AC_DEFINE(USE_SYSTEM_MALLOC)
5133 elif test "$with_debug_malloc"  = "yes"; then AC_DEFINE(USE_DEBUG_MALLOC)
5134                                               AC_DEFINE(USE_SYSTEM_MALLOC)
5135 fi
5136 test "$with_i18n3"         = "yes" && AC_DEFINE(I18N3)
5137 test "$GCC"                = "yes" && AC_DEFINE(USE_GCC)
5138 test "$external_widget"    = "yes" && AC_DEFINE(EXTERNAL_WIDGET)
5139 test "$quick_build"        = "yes" && AC_DEFINE(QUICK_BUILD)
5140 test "$with_purify"        = "yes" && AC_DEFINE(PURIFY)
5141 test "$with_quantify"      = "yes" && AC_DEFINE(QUANTIFY)
5142 test "$with_pop"           = "yes" && AC_DEFINE(MAIL_USE_POP)
5143 test "$with_kerberos"      = "yes" && AC_DEFINE(KERBEROS)
5144 test "$with_hesiod"        = "yes" && AC_DEFINE(HESIOD)
5145 test "$use_union_type"     = "yes" && AC_DEFINE(USE_UNION_TYPE)
5146 test "$use_regex_malloc"   = "yes" && AC_DEFINE(REGEX_MALLOC)
5147 test "$pdump"              = "yes" && AC_DEFINE(PDUMP)
5148 test "$with_ipv6_cname"    = "yes" && AC_DEFINE(IPV6_CANONICALIZE)
5149
5150 dnl -------------------------------
5151 dnl Report on what we decided to do
5152 dnl -------------------------------
5153
5154 (
5155 dnl /etc/osversion is on SONY NEWS-OS
5156 if test -f /etc/osversion; then dnl SONY NEWS-OS
5157   echo "osversion: `cat /etc/osversion`"
5158 else
5159   echo "uname -a: `uname -a`"
5160 fi
5161 echo ""
5162 echo "$0 $quoted_arguments"
5163 ) > Installation
5164
5165 if test ! -z ${emacs_beta_version} ; then
5166   if test -z "${emacs_is_beta}" ; then
5167         xemacs_betaname=".${emacs_beta_version}"
5168   else
5169         xemacs_betaname="-b${emacs_beta_version}"
5170   fi
5171 else
5172   xemacs_betaname=""
5173 fi
5174
5175 dnl Start stdout redirection to '| tee -a Installation'
5176 (
5177 echo "
5178
5179 XEmacs ${emacs_major_version}.${emacs_minor_version}${xemacs_betaname} \"$xemacs_codename\" configured for \`$canonical'.
5180 "
5181 echo "
5182 Compilation / Installation:"
5183 echo "  Source code location:              $srcdir"
5184 echo "  Installation prefix:               $prefix"
5185 if test -n "$site_includes"; then
5186   echo "  Additional header files:           $site_includes"
5187 fi
5188 if test -n "$site_libraries"; then
5189   echo "  Additional libraries:              $site_libraries"
5190 fi
5191 if test -n "$site_prefixes"; then
5192   echo "  Additional prefixes:               $site_prefixes"
5193 fi
5194 if test -n "$runpath"; then
5195   echo "  Runtime library search path:       $runpath"
5196 fi
5197
5198 if test -n "$opsysfile"
5199 then echo "  Operating system description file: \`$opsysfile'"
5200 else echo "  Not using any operating system description file"
5201 fi
5202 if test -n "$machfile"
5203 then echo "  Machine description file:          \`$machfile'"
5204 else echo "  Not using any machine description file"
5205 fi
5206
5207 echo "  Compiler:                          $CC $CFLAGS"
5208 dnl Let's save some helpful-for-debugging info like compiler and libc versions..
5209 dnl First, see if it's gcc - the same check works everyplace...
5210 case "$CC" in
5211   gcc*) echo "  Compiler version:                  `$CC --version | sed 1q`"
5212         echo "  Compiler specs file:               `$CC -v 2>&1 | sed 's/.* \([[^ ]]\)/\1/' | sed 1q`"
5213         ;;
5214 dnl non-gcc machine-specific magic - contributions welcome
5215   *) case "$canonical" in
5216         *-*-aix*   ) 
5217           dnl Yes, it's this ugly for AIX...
5218           realcc=`which $CC`
5219           dnl Might be a symlink created by replaceCset command
5220           if test -L $realcc ; then
5221             ccdir=`dirname $realcc`
5222             ccprog=`/bin/ls -l $realcc | sed 's/.* \([[^ ]]\)/\1/'`
5223             dnl This doesn't handle ../../xlc type stuff, but I've not seen one...
5224             case $ccprog in
5225                 */*) realcc=$ccprog;;
5226                 *) realcc=$ccdir/$ccprog;;
5227             esac
5228           fi
5229           lpp=`lslpp -wqc $realcc | cut -f2 -d:`
5230           if test ! -z "$lpp" ; then
5231             lppstr=`lslpp -Lqc $lpp`
5232             lpplev=`echo "$lppstr" | cut -f3 -d:`
5233             lppdesc=`echo "$lppstr" | cut -f8 -d:`
5234           fi
5235           if test ! -z "$lpplev" ; then
5236             echo "  Compiler version:                  $lpp $lpplev - $lppdesc"
5237           else
5238             echo "  Compiler version:                  (unknown version)"
5239           fi
5240         ;;
5241         
5242         *-*-solaris*)
5243           ccvers=`$CC -V 2>&1 | sed 1q`
5244           if test ! -z "$ccvers" ; then
5245             echo "  Compiler version:                  $ccvers"
5246           fi
5247         ;;
5248
5249         alpha*-dec-osf*)
5250           ccvers=`$CC -V | tr '\n' ' '`
5251           if test ! -z "$ccvers" ; then
5252             echo "  Compiler version:                  $ccvers"
5253           fi
5254         ;;
5255
5256         mips-sgi-irix*)
5257           ccvers=`$CC -version`
5258           if test ! -z "$ccvers" ; then
5259             echo "  Compiler version:                  $ccvers"
5260           fi
5261         ;;
5262
5263         dnl Intel C++ Compiler on Linux
5264         i[[3-9]]86-pc-linux)
5265           ccvers=`$CC -V 2>&1 | sed -n 's@^Intel.*Version @@'p`
5266           if test ! -z "$ccvers" ; then
5267             echo "  Compiler version:                  $ccvers"
5268           fi
5269         ;;
5270           
5271         *) echo "  Compiler version:                  $CC on $canonical";;
5272   esac
5273 esac
5274
5275 echo "  Relocating allocator for buffers:  $rel_alloc"
5276 echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
5277 case "$ld_switch_site" in
5278   *nocombreloc*) echo "  Linking with \`-z nocombreloc'.
5279     - Consider configuring with --pdump." ;;
5280 esac
5281
5282 dnl Now get the libc version - contributions welcome
5283 case "$canonical" in
5284         *-*-linux*) 
5285           if test -f /etc/redhat-release ; then
5286             echo "  libc:                              `rpm -q glibc`";
5287 dnl need a Debian and Suse check here...
5288           else
5289             echo "Need to guess glibc1/2/etc here";
5290           fi
5291         ;;
5292
5293         *-*-aix*) 
5294           echo "  libc:                              bos.rte.libc `lslpp -Lqc bos.rte.libc | cut -f3 -d:`" 
5295         ;;
5296
5297         *-*-solaris*)
5298           libc=`pkginfo -l SUNWcsl | grep VERSION: | awk '{print $2}'`
5299           echo "  libc:                              SUNWcsl $libc"
5300
5301         ;;
5302
5303         mips-sgi-irix*)
5304           echo "  IRIX version:                      `uname -sRm`'"
5305         ;;
5306           
5307
5308         alpha*-dec-osf*)
5309         dnl Another ugly case
5310           (cd /usr/.smdb.;
5311                 libc=` grep -h libc.so *.inv | awk '$9 == "f" {print $12}' | tr '\n' ','`
5312                 echo "  libc:                              $libc"
5313                 
5314           )
5315         ;;
5316
5317         *) echo "  libc:                              system-provided libc on $canonical" ;;
5318 esac
5319
5320
5321 echo "
5322 Window System:"
5323 if test "$with_msw" = "yes"; then
5324   echo "  Compiling in support for the Microsoft window system."
5325 fi
5326 if test "$with_x11" = "yes"; then
5327   echo "  Compiling in support for the X window system:"
5328   echo "    - X Windows headers location:                 $x_includes"
5329   echo "    - X Windows libraries location:               $x_libraries"
5330   if test "$with_xauth" != yes; then
5331     echo "    - Xau (X authority) not available."
5332   fi
5333   if test "$with_xmu" != yes; then
5334     echo "    - Xmu library not available; substituting equivalent routines."
5335   fi
5336   if test "$with_wmcommand" != no; then
5337     echo "    - Handling WM_COMMAND properly."
5338   fi
5339 fi
5340 if test "$need_motif" = "yes" ; then
5341   echo "  Compiling in support for Motif."
5342   if test "$have_lesstif" = "yes"; then
5343     echo "    - Using LessTif implementation."
5344   fi
5345   echo "  *WARNING*  Many versions of Motif are buggy, requiring workarounds."
5346   echo "             You are likely to experience slow redisplay."
5347   echo "             You may need to install vendor patches to Motif."
5348   echo "             See PROBLEMS for more information."
5349 fi
5350 if test "$need_athena" = "yes"; then
5351   echo "  Compiling in support for the Athena widget set:"
5352   echo "    - Athena headers location:                    $athena_h_path"
5353   echo "    - Athena library to link:                     $athena_lib"
5354 fi
5355 case "$with_menubars" in
5356   gtk   ) echo "  Using GTK menubars."   ;;
5357   lucid ) echo "  Using Lucid menubars." ;;
5358   motif ) echo "  Using Motif menubars."
5359           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
5360           echo "             We recommend using the Lucid menubar instead."
5361           echo "             Re-run configure with --with-menubars='lucid'." ;;
5362     msw ) echo "  Using MS-Windows menubars." ;;
5363 esac
5364 case "$with_scrollbars" in
5365   gtk    ) echo "  Using GTK scrollbars."        ;;
5366   lucid  ) echo "  Using Lucid scrollbars."      ;;
5367   motif  ) echo "  Using Motif scrollbars."      ;;
5368   athena ) echo "  Using Athena scrollbars."     ;;
5369      msw ) echo "  Using MS-Windows scrollbars." ;;
5370 esac
5371 case "$with_dialogs" in
5372   gtk    ) echo "  Using GTK dialog boxes." ;;
5373   motif  ) echo "  Using Motif dialog boxes."
5374            if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
5375              echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
5376              echo "             We recommend using the Athena dialog boxes instead."
5377              echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
5378              echo "             Read the PROBLEMS file for more information."
5379            fi; fi ;;
5380   athena ) echo "  Using Athena dialog boxes."     ;;
5381      msw ) echo "  Using MS-Windows dialog boxes." ;;
5382 esac
5383 case "$with_widgets" in
5384   gtk    ) echo "  Using GTK native widgets."        ;;
5385   motif  ) echo "  Using Motif native widgets."      ;;
5386   athena ) echo "  Using Athena native widgets."     ;;
5387      msw ) echo "  Using MS-Windows native widgets." ;;
5388 esac
5389 if test "$with_dragndrop" = yes; then
5390   echo "  Compiling in support for Drag'n'Drop (EXPERIMENTAL)."
5391   echo "    -  Drag'n'Drop prototype:                             $dragndrop_proto."
5392 fi
5393
5394 echo "
5395 TTY:"
5396 test "$with_ncurses" = yes && echo "  Compiling in support for ncurses."
5397 test "$with_gpm" = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
5398
5399 echo "
5400 Images:"
5401 test "$with_gif" = yes && echo "  Compiling in support for GIF  images (builtin)."
5402 if test "$with_xpm" = yes; then
5403   echo "  Compiling in support for XPM  images."
5404 elif test "$with_x11" = yes; then
5405   echo "  WARNING: -----------------------------------------------------------"
5406   echo "  WARNING: Compiling without XPM image support."
5407   if test "$xpm_problem" != ""; then
5408     echo "  Reason: $xpm_problem"
5409   fi
5410   echo "  WARNING: You should strongly consider installing XPM."
5411   echo "  WARNING: Otherwise toolbars and other graphics will look suboptimal."
5412   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
5413   echo "  WARNING: -----------------------------------------------------------"
5414 fi
5415 if test "$with_png" = yes; then
5416   echo "  Compiling in support for PNG  images."
5417 elif test "$window_system" != "none"; then
5418   echo "  WARNING: -----------------------------------------------------------"
5419   echo "  WARNING: Compiling without PNG image support."
5420   if test "$png_problem" != ""; then
5421     echo "  Reason: $png_problem"
5422   fi
5423   echo "  WARNING: You should strongly consider installing the PNG libraries."
5424   echo "  WARNING: Otherwise certain images and glyphs may not display."
5425   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
5426   echo "  WARNING: -----------------------------------------------------------"
5427 fi
5428 test "$with_jpeg" = yes && echo "  Compiling in support for JPEG images."
5429 test "$with_tiff" = yes && echo "  Compiling in support for TIFF images."
5430 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
5431
5432 echo "
5433 Sound:"
5434 test "$with_native_sound" = yes && echo "  Compiling in support for sound (native)."
5435 test "$with_nas_sound" = yes && echo "  Compiling in support for NAS (network audio system)."
5436 test "$old_nas" = yes && echo "    - NAS library lacks error trapping; will play synchronously."
5437 test "$with_esd_sound" = yes && echo "  Compiling in support for ESD (Enlightened Sound Daemon)."
5438
5439 echo "
5440 Databases:"
5441 test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley database."
5442 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
5443 test "$with_database_gdbm"   = yes && echo "  Compiling in support for GNU DBM."
5444 test "$with_ldap" = yes && echo "  Compiling in support for LDAP."
5445 if test "$with_postgresql" = yes; then
5446   echo "  Compiling in support for PostgreSQL."
5447   echo "    - Using PostgreSQL header file:  $libpq_fe_h_file"
5448   test "$with_postgresqlv7" = yes && echo "    - Using PostgreSQL V7 bindings."
5449 fi
5450 if test "$with_concord" = yes; then
5451   echo "  Compiling in support for CONCORD."
5452 fi
5453
5454 echo "
5455 Multiscriptization / Multilingualization / Internationalization:"
5456 test "$with_mule" = yes && echo "  Compiling in support for Mule (multi-lingual Emacs)."
5457 test "$with_chise" = yes && echo "  Using CHISE (CHaracter Information Service Environment) support."
5458 test "$with_utf_2000" = yes && echo "  Using UTF-2000 (UTF-8) buffer/string representation."
5459 test "$with_text_coding" = yes && echo "  Compiling in support for text coding."
5460 test "$with_file_coding" = yes && echo "  Compiling in support for file coding."
5461 test "$with_xim" != no && echo "  Compiling in support for XIM (X11R5+ I18N input method)."
5462 test "$with_xim" = motif && echo "    - Using Motif to provide XIM support."
5463 test "$with_xim" = xlib && echo "    - Using raw Xlib to provide XIM support."
5464 test "$with_xfs" = yes && echo "    - Using XFontSet to provide bilingual menubar."
5465 test "$with_canna" = yes && echo "  Compiling in support for Canna on Mule."
5466 if test "$with_wnn" = yes; then
5467   echo "  Compiling in support for the WNN input method on Mule."
5468   test "$with_wnn6" = yes && echo "    - Using WNN version 6."
5469 fi
5470 test "$with_i18n3" = yes && echo "  Compiling in support for I18N level 3 (doesn't currently work)."
5471
5472 echo "
5473 Mail:"
5474 test "$with_pop" = yes && echo "  Compiling in support for POP mail retrieval."
5475 test "$with_kerberos" = yes && echo "  Compiling in support for Kerberos POP authentication."
5476 test "$with_hesiod" = yes && echo "  Compiling in support for Hesiod POP server access."
5477 test -n "$mail_locking" && echo "  Compiling in support for \"$mail_locking\" mail spool file locking method."
5478
5479 echo "
5480 Other Features:"
5481 test "$with_ipv6_cname" = no && echo "  Inhibiting IPv6 canonicalization at startup."
5482 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
5483 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
5484 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
5485 test "$with_dnet" = yes && echo "  Compiling in support for DNET."
5486 test "$with_modules" = "yes" && echo "  Compiling in support for dynamic shared object modules."
5487 if test "$use_union_type" = yes; then
5488   echo "  WARNING: ---------------------------------------------------------"
5489   echo "  Using the union type for Lisp_Objects."
5490   echo "  Union type has been implicated in hard-to-debug runtime crashes."
5491   echo "  Do NOT use this build of XEmacs for ordinary work.  See PROBLEMS."
5492   echo "  WARNING: ---------------------------------------------------------"
5493 fi
5494 if test "$use_regex_malloc" = no; then
5495   echo "  WARNING: -----------------------------------------------------------"
5496   echo "  Using alloca to allocate the failure stack."
5497   echo "  It may be impossible to detect stack exhaustion, and you will crash."
5498   echo "  Do NOT use this build of XEmacs for ordinary work."
5499   echo "  WARNING: -----------------------------------------------------------"
5500 fi
5501 test "$pdump" = yes && echo "  Using the new portable dumper."
5502 test "$debug" = yes && echo "  Compiling in support for extra debugging code."
5503 test "$usage_tracking" = yes && echo "  Compiling in support for active usage tracking (Sun internal)."
5504 if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc $error_check_glyphs" \
5505   != "no no no no no no"; then
5506   echo "  WARNING: ---------------------------------------------------------"
5507   echo "  WARNING: Compiling in support for runtime error checking."
5508   echo "  WARNING: XEmacs will run noticeably more slowly as a result."
5509   echo "  WARNING: Error checking is on by default for XEmacs beta releases."
5510   echo "  WARNING: ---------------------------------------------------------"
5511 fi
5512 echo ""
5513 ) | tee -a Installation
5514 dnl echo "The above configure report is appended to \"Installation\" file."
5515 echo ""
5516
5517 dnl -----------------------------------
5518 dnl Now generate config.h and Makefiles
5519 dnl -----------------------------------
5520 dnl This has to be called in order for this variable to get into config.status
5521 AC_SUBST(internal_makefile_list)
5522 # Remove any trailing slashes in these variables.
5523 test -n "$prefix" &&
5524   prefix=`echo '' "$prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
5525 test -n "$exec_prefix" &&
5526   exec_prefix=`echo '' "$exec_prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
5527
5528 dnl Build Makefile.in's from Makefile.in.in's
5529 dnl except ./Makefile from $srcdir/Makefile.in
5530
5531 for file in $internal_makefile_list; do
5532   test "$file" = src/Makefile.in && \
5533     file="src/Makefile.in:src/Makefile.in.in:src/depend"
5534   XE_APPEND($file, ac_output_files)
5535 done
5536 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
5537 test "$with_modules" = "yes" && XE_APPEND(lib-src/ellcc.h, ac_output_files)
5538
5539 AC_OUTPUT($ac_output_files,
5540 [for dir in . $MAKE_SUBDIR; do
5541   (
5542     cd $dir
5543     rm -f junk.c
5544     < Makefile.in \
5545       sed -e '/^# Generated/d' \
5546           -e 's%/\*\*/#.*%%' \
5547           -e 's/^ *# */#/' \
5548 dnl Delete Makefile.in.in comment lines
5549           -e '/^##/d' \
5550 dnl Pass through CPP directives unchanged
5551           -e '/^#/ {
5552 p
5553 d
5554 }'        \
5555 dnl Quote other lines to protect from CPP substitution
5556           -e '/./ {
5557 s/\([[\"]]\)/\\\1/g
5558 s/^/"/
5559 s/$/"/
5560 }'  > junk.c;
5561
5562 dnl Create a GNUmakefile and Makefile from Makefile.in.
5563
5564 changequote(<<,>>)dnl
5565 dnl CPP_MAKEFILE(CPPFLAGS,filename)
5566 define(<<CPP_MAKEFILE>>,
5567 echo creating $dir/<<$2>>
5568 $CPP -I. -I${top_srcdir}/src <<$1>> junk.c \
5569 dnl Delete line directives inserted by $CPP
5570   | sed -e 's/^\#.*//'          \
5571 dnl Delete spurious blanks inserted by $CPP
5572         -e 's/^[ TAB][ TAB]*$//'\
5573         -e 's/^ /TAB/'          \
5574 dnl Delete blank lines
5575         -e '/^[ \f]*$/d' \
5576 dnl Restore lines quoted above to original contents.
5577         -e '/^\"/ {
5578         s/\\\([\"]\)/\1/g
5579         s/^[ TAB]*\"//
5580         s/\"[ TAB]*$//
5581 }' > Makefile.new
5582     chmod 444 Makefile.new
5583     mv -f Makefile.new <<$2>>
5584 )dnl CPP_MAKEFILE
5585
5586     CPP_MAKEFILE(,Makefile)
5587     CPP_MAKEFILE(-DUSE_GNU_MAKE,GNUmakefile)
5588 changequote([,])dnl
5589     rm -f junk.c
5590   )
5591 done
5592
5593 dnl Append AC_DEFINE information to lib-src/config.values
5594 dnl (AC_SUBST information is already there (see config.values.sh).
5595 sed < config.status >> lib-src/config.values \
5596   -e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \
5597   -e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \
5598   -e 's/^\([[^ ]]*\) $/\1 ""/' \
5599   -e 's/ 1$/ t/'
5600
5601 ],
5602 [CPP="$CPP"
5603  top_srcdir="$srcdir"
5604  MAKE_SUBDIR="$MAKE_SUBDIR"
5605 ])dnl