(=>ucs-itaiji-003): New coded-charset for XEmacs CHISE.
[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-search-dirs | sed -ne s'/install: //p'`
1903   cygwin_include=`eval "cd $cygwin_include/../../../..; pwd"`
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" -o -r "$dir/libX11.dylib"; 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   libname_xpm="-lXpm"
3367   case "$opsys" in 
3368     cygwin*)
3369       cygwin_top=`eval gcc -print-search-dirs | sed -ne s'/install: //p'`
3370       cygwin_top=`eval "cd $cygwin_top/../../../..; pwd"`
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              libname_xpm="-lXpm-noX"
3378               ;;
3379         dnl not supported on cygwin (yet?)
3380         gtk)  ;;
3381         dnl probably not reached...
3382         none) ;;
3383         dnl ditto
3384         *)    ;;
3385       esac
3386       ;;
3387     dnl use "standard" search pattern for all other OS's
3388     *) ;;
3389   esac
3390   dnl Autodetect Xpm
3391   xpm_problem=""
3392   if test -z "$with_xpm"; then
3393     XE_PREPEND("$incpath_xpm", CFLAGS)
3394     XE_PREPEND("$libpath_xpm", LDFLAGS)
3395     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
3396     xe_check_libs="$libname_xpm"
3397     AC_TRY_RUN([#define XPM_NUMBERS
3398 #include <X11/xpm.h>
3399     int main(int c, char **v) {
3400     return c == 1 ? 0 :
3401       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
3402       XpmIncludeVersion < 30406 ? 2 : 0 ;}],
3403     [./conftest dummy_arg; xpm_status=$?;
3404       if test "$xpm_status" = "0"; then
3405         with_xpm=yes;
3406       else
3407         with_xpm=no;
3408         if test "$xpm_status" = "1"; then
3409           xpm_problem="Xpm library version and header file version don't match!"
3410         elif test "$xpm_status" = "2"; then
3411           xpm_problem="Xpm library version is too old!"
3412         else
3413           xpm_problem="Internal xpm detection logic error!"
3414         fi
3415         echo "
3416 *** WARNING *** $xpm_problem
3417   I'm not touching that with a 10-foot pole!
3418   If you really want to use the installed version of Xpm, rerun
3419   configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!"
3420     fi],
3421     [with_xpm=no])
3422     xe_check_libs=
3423     AC_MSG_RESULT($with_xpm)
3424   fi
3425   if test "$with_xpm" = "yes"; then
3426     dnl #### This code assumes that if AC_CHECK_LIB fails,
3427     dnl #### then it will succeed if FOR_MSW is defined,
3428     dnl #### but doesn't actually verify this assumption.
3429     AC_DEFINE(HAVE_XPM)
3430     XE_PREPEND("$libpath_xpm", LDFLAGS)
3431     XE_PREPEND("$libname_xpm", libs_x)
3432     XE_PREPEND("$incpath_xpm", CFLAGS)
3433     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
3434     xe_check_libs="$libname_xpm"
3435     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
3436     [xpm_for_msw=no],
3437     [xpm_for_msw=yes])
3438     xe_check_libs=
3439     AC_MSG_RESULT($xpm_for_msw)
3440     if test "$xpm_for_msw" = "yes"; then
3441       AC_DEFINE(FOR_MSW)
3442     fi
3443   fi
3444
3445   dnl Autodetect XFACE
3446   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
3447   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
3448   test -z "$with_xface" && with_xface=yes
3449   if test "$with_xface" = "yes"; then
3450     AC_DEFINE(HAVE_XFACE)
3451     XE_PREPEND(-lcompface, libs_x)
3452   fi
3453
3454   dnl For a brief period we had the GIF code split out into a separate library,
3455   dnl but patent problems, etc. sort of squashed that idea.
3456   dnl We default to building with builtin GIF decoding
3457   if test "$with_gif" != "no"; then
3458     with_gif="yes"
3459     AC_DEFINE(HAVE_GIF)
3460     XE_ADD_OBJS(dgif_lib.o gif_io.o)
3461   fi
3462
3463   dnl Too many stupid linkers can't detect cascaded lib dependencies until runtime
3464   dnl So we always search for libz compression support.
3465   if test "$with_png $with_tiff" != "no no"; then
3466     AC_CHECK_LIB(c,  inflate, [:], [
3467     AC_CHECK_LIB(z,  inflate, [XE_PREPEND(-lz,  libs_x)],[
3468     AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])])
3469   fi
3470
3471   dnl autodetect JPEG
3472   test -z "$with_jpeg" && { AC_CHECK_HEADER(jpeglib.h,                    ,with_jpeg=no) }
3473   test -z "$with_jpeg" && { AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,[:],with_jpeg=no) }
3474   test -z "$with_jpeg" && with_jpeg=yes
3475   if test "$with_jpeg" = "yes"; then
3476     AC_DEFINE(HAVE_JPEG)
3477     XE_PREPEND(-ljpeg, libs_x)
3478   fi
3479
3480   dnl autodetect PNG
3481   png_problem=""
3482   test -z "$with_png" && { AC_CHECK_FUNC(pow,                  ,with_png=no) }
3483   test -z "$with_png" && { AC_CHECK_HEADER(png.h,              ,with_png=no) }
3484   test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) }
3485   if test -z "$with_png"; then
3486     AC_MSG_CHECKING(for workable png version information)
3487     xe_check_libs="-lpng -lz"
3488     AC_TRY_RUN([#include <png.h>
3489     int main(int c, char **v) {
3490     if (c == 1) return 0;
3491     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
3492     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}],
3493     [./conftest dummy_arg; png_status=$?;
3494       if test "$png_status" = "0"; then
3495         with_png=yes;
3496       else
3497         with_png=no;
3498         if test "$png_status" = "1"; then
3499           png_problem="PNG library version and header file don't match!"
3500         elif test "$png_status" = "2"; then
3501           png_problem="PNG library version too old (pre 1.0.2)!"
3502         fi
3503         echo "
3504 *** WARNING *** $png_problem
3505   I'm not touching that with a 10-foot pole!
3506   If you really want to use the installed version of libPNG, rerun
3507   configure and add '--with-png=yes', but don't blame me if XEmacs crashes!"
3508     fi],
3509     [with_png=no])
3510     xe_check_libs=
3511     AC_MSG_RESULT($with_png)
3512   fi
3513   if test "$with_png" = "yes"; then
3514     AC_DEFINE(HAVE_PNG)
3515     XE_PREPEND(-lpng, libs_x)
3516   fi
3517
3518   dnl autodetect TIFF
3519   test -z "$with_tiff" && { AC_CHECK_HEADER(tiffio.h,            ,with_tiff=no) }
3520   test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no) }
3521   test -z "$with_tiff" && with_tiff=yes
3522   if test "$with_tiff" = "yes"; then
3523     AC_DEFINE(HAVE_TIFF)
3524     XE_PREPEND(-ltiff, libs_x)
3525   fi
3526 fi
3527
3528 dnl ----------------------
3529 dnl GTK-Specific Graphics libraries
3530 dnl ----------------------
3531
3532 if test "$with_gtk" = "yes"; then
3533   dnl Autodetect XFACE
3534   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
3535   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
3536   test -z "$with_xface" && with_xface=yes
3537   if test "$with_xface" = "yes"; then
3538     AC_DEFINE(HAVE_XFACE)
3539     XE_PREPEND(-lcompface, libs_gtk)
3540   fi
3541 fi
3542
3543
3544 dnl ----------------------
3545 dnl X-Specific Graphics libraries
3546 dnl ----------------------
3547
3548 if test "$with_x11" = "yes"; then
3549   AC_CHECKING(for X11 graphics libraries)
3550 fi
3551
3552 if test "$with_x11" = "yes"; then
3553   AC_CHECKING(for the Athena widgets)
3554
3555   dnl What in heck did the user actually want?
3556   case "$with_athena" in
3557     dnl This is the default, old fashioned flat Athena.
3558     "xaw" | "") athena_variant=Xaw      athena_3d=no  ;;
3559     "3d")       athena_variant=Xaw3d    athena_3d=yes ;;
3560     "next")     athena_variant=neXtaw   athena_3d=yes ;;
3561     "95")       athena_variant=Xaw95    athena_3d=yes ;;
3562     "xpm")      athena_variant=XawXpm   athena_3d=yes ;;
3563     *)          XE_DIE("Unknown Athena widget set \`$with_athena'. This should not happen.") ;;
3564   esac
3565
3566   athena_3d_function=Xaw3dComputeBottomShadowRGB
3567
3568   dnl Search for the Athena library...
3569   if test "$athena_3d" = "no"; then
3570     AC_CHECK_LIB($athena_variant, XawScrollbarSetThumb,
3571       [
3572         dnl Must not be a 3d library...
3573         AC_CHECK_LIB($athena_variant, $athena_3d_function,
3574           AC_MSG_WARN("Could not find a non-3d Athena widget library."),
3575           athena_lib=$athena_variant)
3576       ],
3577       AC_MSG_WARN("Could not find an Athena widget library."))
3578   else
3579     dnl The real configuration, need 3d library
3580     AC_CHECK_LIB($athena_variant, $athena_3d_function, athena_lib=$athena_variant,
3581       dnl OK, couldn't find it with a proper name, try the standard Athena lib
3582       dnl If that is 3d, presume the user asked for what they have installed.
3583       AC_CHECK_LIB(Xaw, $athena_3d_function,
3584         [
3585           athena_lib=Xaw;
3586           AC_MSG_WARN("Assuming that libXaw is actually $athena_variant.");
3587         ],
3588         AC_MSG_WARN("Could not find a 3d Athena widget library that looked like $athena_variant.")))
3589   fi
3590
3591   dnl Now we locate the Athena headers that we need.
3592   if test "$athena_3d" = "no"; then
3593     AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
3594       AC_MSG_WARN("Could not find a non-3d Athena header set."),
3595       AC_CHECK_HEADER(X11/Xaw/XawInit.h,
3596         athena_h_path=X11/Xaw,
3597         AC_MSG_WARN("Could not find a non-3d Athena header set.")))
3598   else
3599     dnl The three-d Athena headers are so much more slippery.
3600     dnl Curse this `Lets replace standard libraries' thing that they did. :/
3601     AC_CHECK_HEADER(X11/$athena_variant/XawInit.h,
3602       AC_CHECK_HEADER(X11/$athena_variant/ThreeD.h,
3603         athena_h_path=X11/$athena_variant,))
3604
3605     dnl Is the variant specific header directory directly under include?
3606     if test -z "$athena_h_path"; then
3607       AC_CHECK_HEADER($athena_variant/XawInit.h,
3608         AC_CHECK_HEADER($athena_variant/ThreeD.h,
3609           athena_h_path=$athena_variant,))
3610     fi
3611
3612     dnl If we couldn't find the specific variant, try the generic Athena 3d headers
3613     if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
3614       AC_CHECK_HEADER(X11/Xaw3d/XawInit.h,
3615         AC_CHECK_HEADER(X11/Xaw3d/ThreeD.h,
3616           [
3617             AC_MSG_WARN("Assuming that X11/Xaw3d headers are suitable for $athena_variant.")
3618             athena_h_path=X11/Xaw3d
3619           ],))
3620     fi
3621
3622     dnl Also generic 3d headers directly under include dir
3623     if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
3624       AC_CHECK_HEADER(Xaw3d/XawInit.h,
3625         AC_CHECK_HEADER(Xaw3d/ThreeD.h,
3626           [
3627             AC_MSG_WARN("Assuming that Xaw3d headers are suitable for $athena_variant.")
3628             athena_h_path=Xaw3d
3629           ],))
3630     fi
3631
3632     dnl If nothing yet found, see if Xaw is a 3d header set...
3633     dnl We AC_MSG_WARN if we fail because I am all out of ideas...
3634     if test -z "$athena_h_path"; then
3635       AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
3636         [
3637           AC_MSG_WARN("Assuming that X11/Xaw headers are suitable for $athena_variant.")
3638           athena_h_path=X11/Xaw
3639         ],
3640         AC_MSG_WARN("Could not find a suitable 3d Athena header set."))
3641     fi
3642   fi
3643
3644   dnl Do we actually have a usable Athena widget set? Please?
3645   if test -n "$athena_lib" -a -n "$athena_h_path"; then
3646     have_xaw=yes
3647   else
3648     have_xaw=no
3649   fi
3650
3651 else
3652   have_xaw=no
3653 fi dnl "$with_x11" = "yes"
3654
3655 if test "$with_x11" = "yes"; then
3656   dnl autodetect Motif - but only add to libs_x later (if necessary)
3657   AC_CHECK_HEADER(Xm/Xm.h,
3658    [AC_CHECK_LIB(Xm, XmStringFree, have_motif=yes, have_motif=no)],
3659    have_motif=no)
3660
3661   if test "$have_motif" = "yes"; then
3662     dnl autodetect lesstif
3663     AC_MSG_CHECKING(for Lesstif)
3664     AC_EGREP_CPP(yes,
3665 [#include <Xm/Xm.h>
3666 #ifdef LESSTIF_VERSION
3667 yes
3668 #endif
3669 ], have_lesstif=yes, have_lesstif=no)
3670   AC_MSG_RESULT($have_lesstif)
3671   fi
3672
3673 fi dnl "$with_x11" = "yes"
3674
3675 dnl Finish ensuring that we have values for the various toolkit items.
3676 dnl Not all toolkits support all widgets
3677
3678 dnl Avoid using Motif :-(
3679 case "$opsys" in
3680   *linux* | cygwin* )  lucid_prefers_motif="no"  ;;
3681   * )        lucid_prefers_motif="yes" ;;
3682 esac
3683
3684 case "$with_menubars" in "" | "yes" | "athena" )
3685   with_menubars="lucid" ;;
3686 esac
3687 case "$with_dialogs" in "" | "yes" | "lucid" )
3688   if test "$lucid_prefers_motif" = "yes"; then
3689     if   test "$have_motif"     = "yes"; then with_dialogs="motif"
3690     elif test "$have_xaw"       = "yes"; then with_dialogs="athena"
3691     else with_dialogs=no
3692     fi
3693   else
3694     if   test "$have_xaw"       = "yes"; then with_dialogs="athena"
3695     elif test "$have_motif"     = "yes"; then with_dialogs="motif"
3696     else with_dialogs=no
3697     fi
3698   fi ;;
3699 esac
3700 case "$with_scrollbars" in "" | "yes" )
3701   with_scrollbars="lucid" ;;
3702 esac
3703 case "$with_widgets" in
3704   "yes" | "lucid")
3705     if test "$lucid_prefers_motif" = "yes"; then
3706       if   test "$have_motif" = "yes"; then with_widgets="motif"
3707       elif test "$have_xaw"   = "yes"; then with_widgets="athena"
3708       else with_widgets=no
3709       fi
3710     else
3711       if   test "$have_xaw"   = "yes"; then with_widgets="athena"
3712       elif test "$have_motif" = "yes"; then with_widgets="motif"
3713       else with_widgets=no
3714       fi
3715     fi ;;
3716   "" )
3717     with_widgets=no ;;
3718 esac
3719
3720 all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars $with_widgets"
3721
3722 case "$all_widgets" in
3723   *athena* )
3724     if test "$have_xaw" != "yes"; then
3725       XE_DIE("Could not find a suitable Athena library to build with.")
3726     fi
3727
3728     dnl Add the Lucid widget Athena code
3729     XE_APPEND(lwlib-Xaw.o, lwlib_objs)
3730
3731     dnl Add the Athena widget library we located earlier
3732     XE_PREPEND(-l$athena_lib, libs_x)
3733
3734     dnl Tell lwlib where to find the Athena header files.
3735     dnl Many people have tried to create a `smart' way of doing this,
3736     dnl but all have failed.  Before changing the following ugly definitions,
3737     dnl consult the veterans of many a battle.
3738     AC_DEFINE_UNQUOTED(ATHENA_Scrollbar_h_,"$athena_h_path/Scrollbar.h")
3739     AC_DEFINE_UNQUOTED(ATHENA_Dialog_h_,"$athena_h_path/Dialog.h")
3740     AC_DEFINE_UNQUOTED(ATHENA_Form_h_,"$athena_h_path/Form.h")
3741     AC_DEFINE_UNQUOTED(ATHENA_Command_h_,"$athena_h_path/Command.h")
3742     AC_DEFINE_UNQUOTED(ATHENA_Label_h_,"$athena_h_path/Label.h")
3743     AC_DEFINE_UNQUOTED(ATHENA_LabelP_h_,"$athena_h_path/LabelP.h")
3744     AC_DEFINE_UNQUOTED(ATHENA_Toggle_h_,"$athena_h_path/Toggle.h")
3745     AC_DEFINE_UNQUOTED(ATHENA_ToggleP_h_,"$athena_h_path/ToggleP.h")
3746     AC_DEFINE_UNQUOTED(ATHENA_AsciiText_h_,"$athena_h_path/AsciiText.h")
3747     AC_DEFINE_UNQUOTED(ATHENA_XawInit_h_,"$athena_h_path/XawInit.h")
3748
3749     AC_DEFINE(LWLIB_USES_ATHENA)
3750     AC_DEFINE(NEED_ATHENA)
3751     need_athena="yes"
3752
3753     if test "$athena_3d" = "yes"; then
3754       AC_DEFINE(HAVE_ATHENA_3D)
3755     fi
3756   ;;
3757 esac
3758
3759 case "$all_widgets" in *motif* )
3760   AC_DEFINE(LWLIB_USES_MOTIF)
3761   AC_DEFINE(NEED_MOTIF)
3762   XE_APPEND(lwlib-Xm.o, lwlib_objs)
3763   need_motif=yes ;;
3764 esac
3765
3766 test "$with_menubars"   = "lucid" && XE_APPEND(xlwmenu.o, lwlib_objs)
3767 test "$with_menubars"   = "motif" && XE_APPEND(xlwmenu.o, lwlib_objs)
3768 test "$with_scrollbars" = "lucid" && XE_APPEND(xlwscrollbar.o, lwlib_objs)
3769 test "$with_widgets"   != "no" && test "$with_widgets" != "msw" && \
3770         XE_APPEND(xlwtabs.o xlwgcs.o, lwlib_objs)
3771 case "$with_widgets" in athena* )
3772         XE_APPEND(xlwradio.o xlwcheckbox.o xlwgauge.o, lwlib_objs);;
3773 esac
3774 case "$all_widgets" in *lucid* )
3775   AC_DEFINE(NEED_LUCID)
3776   XE_APPEND(lwlib-Xlw.o, lwlib_objs) ;;
3777 esac
3778
3779 AC_SUBST(lwlib_objs)
3780
3781 test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA)
3782 test "$with_dialogs"    = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA)
3783
3784 if test "$athena_3d" = "yes"; then
3785   test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
3786   test "$with_dialogs"    = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
3787 fi
3788
3789 case "$with_widgets" in athena* ) AC_DEFINE(LWLIB_WIDGETS_ATHENA);; esac
3790 test "$with_widgets" != "no" && test "$with_widgets" != "msw" && \
3791         AC_DEFINE(LWLIB_TABS_LUCID)
3792
3793 test "$with_menubars"   != "no"    && AC_DEFINE(HAVE_MENUBARS)
3794 test "$with_scrollbars" != "no"    && AC_DEFINE(HAVE_SCROLLBARS)
3795 test "$with_dialogs"    != "no"    && AC_DEFINE(HAVE_DIALOGS)
3796 test "$with_toolbars"   != "no"    && AC_DEFINE(HAVE_TOOLBARS)
3797 test "$with_widgets"    != "no"    && AC_DEFINE(HAVE_WIDGETS)
3798
3799 test "$with_menubars"   = "lucid"  && AC_DEFINE(LWLIB_MENUBARS_LUCID)
3800 test "$with_scrollbars" = "lucid"  && AC_DEFINE(LWLIB_SCROLLBARS_LUCID)
3801
3802 test "$with_menubars"   = "motif"  && AC_DEFINE(LWLIB_MENUBARS_MOTIF)
3803 test "$with_scrollbars" = "motif"  && AC_DEFINE(LWLIB_SCROLLBARS_MOTIF)
3804 test "$with_dialogs"    = "motif"  && AC_DEFINE(LWLIB_DIALOGS_MOTIF)
3805 test "$with_widgets"    = "motif"  && AC_DEFINE(LWLIB_WIDGETS_MOTIF)
3806
3807 test "$with_menubars"   != "no"    && XE_ADD_OBJS(menubar.o)
3808 test "$with_scrollbars" != "no"    && XE_ADD_OBJS(scrollbar.o)
3809 test "$with_dialogs"    != "no"    && XE_ADD_OBJS(dialog.o)
3810 test "$with_toolbars"   != "no"    && XE_ADD_OBJS(toolbar.o)
3811
3812 if test "$with_gtk" = "yes"; then
3813   test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar-gtk.o)
3814   test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar-gtk.o)
3815   test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog-gtk.o)
3816   test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar-gtk.o)
3817   test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-gtk.o)
3818 fi
3819
3820 if test "$with_x11" = "yes"; then
3821   test "$with_menubars"   != "no"  && XE_ADD_OBJS(menubar-x.o)
3822   test "$with_scrollbars" != "no"  && XE_ADD_OBJS(scrollbar-x.o)
3823   test "$with_dialogs"    != "no"  && XE_ADD_OBJS(dialog-x.o)
3824   test "$with_toolbars"   != "no"  && XE_ADD_OBJS(toolbar-x.o)
3825   test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-x.o)
3826 fi
3827
3828 dnl ----------------------
3829 dnl Mule-dependent options
3830 dnl ----------------------
3831
3832 test -z "$with_mule" && with_mule=no
3833 test -z "$with_file_coding" && with_file_coding=no
3834
3835 dnl if test "$with_mule" = "yes" && test ! -d "$srcdir/lisp/mule"; then
3836 dnl     echo "Attempt to Build with Mule without Mule/Lisp"
3837 dnl     echo "Please install the XEmacs/Mule tarball or"
3838 dnl     echo "rerun configure with --with-mule=no"
3839 dnl     exit 1
3840 dnl fi
3841
3842 if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then
3843   AC_DEFINE(FILE_CODING)
3844   XE_ADD_OBJS(file-coding.o)
3845 fi
3846
3847 dnl Autodetect concord
3848 concord_includes_found=no
3849 if test "$with_concord" != "no"; then
3850    AC_CHECK_HEADER(concord.h, ,with_concord=no)
3851 fi
3852 if test "$concord_includes_found" = "no" -a "$with_concord" != "no" -a \
3853    -d "/usr/local/concord/include"; then
3854   save_c_switch_site="$c_switch_site"
3855   c_switch_site="$c_switch_site -I/usr/local/concord/include"
3856   AC_CHECK_HEADER(concord.h,concord_includes_found=yes)
3857   if test "$concord_includes_found" != "yes"; then
3858     c_switch_site="$save_c_switch_site"
3859     with_concord="no"
3860   fi
3861 fi
3862
3863 test -z "$with_concord" && with_concord=yes
3864 if test "$with_concord" = "yes"; then
3865   AC_DEFINE(HAVE_CONCORD)
3866   XE_PREPEND(-lconcord, libs_x)
3867   XE_ADD_OBJS(concord.o)
3868 fi
3869
3870 test -z "$with_chise" && with_chise=yes
3871 if test "$with_chise" = "yes"; then
3872     with_mule=yes
3873     with_utf_2000=yes
3874     with_text_coding=yes
3875 fi
3876
3877 if test "$with_mule" = "yes" ; then
3878   AC_CHECKING(for Mule-related features)
3879   AC_DEFINE(MULE)
3880
3881   dnl Autodetect chise
3882   chise_includes_found=no
3883   if test "$with_chise" != "no"; then
3884     AC_CHECK_HEADER(chise.h, ,with_chise=no)
3885   fi
3886   if test "$chise_includes_found" = "no" -a "$with_chise" != "no" -a \
3887       -d "/usr/local/chise/include"; then
3888     save_c_switch_site="$c_switch_site"
3889     c_switch_site="$c_switch_site -I/usr/local/chise/include"
3890     AC_CHECK_HEADER(chise.h,chise_includes_found=yes)
3891     if test "$chise_includes_found" != "yes"; then
3892       c_switch_site="$save_c_switch_site"
3893       with_chise="no"
3894     fi
3895   fi
3896
3897   test -z "$with_chise" && with_chise=yes
3898   if test "$with_chise" = "yes"; then
3899     AC_DEFINE(HAVE_CHISE)
3900     AC_DEFINE(HAVE_LIBCHISE)
3901     XE_PREPEND(-lchise, libs_x)
3902   fi
3903
3904   AC_DEFINE(FILE_CODING)
3905   XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o)
3906   if test "$with_utf_2000" = "yes" && test "$with_text_coding" = "yes"; then
3907     AC_DEFINE(TEXT_CODING)
3908     XE_ADD_OBJS(text-coding.o)
3909   else
3910     XE_ADD_OBJS(file-coding.o)
3911   fi
3912   dnl Use -lintl to get internationalized strerror for Mule
3913   AC_CHECK_HEADERS(libintl.h)
3914   AC_CHECK_LIB(intl, strerror)
3915
3916   if test "$with_utf_2000" = "yes" ; then
3917     AC_DEFINE(CHAR_IS_UCS4)
3918     AC_DEFINE(UTF2000)
3919     with_wnn=no
3920     with_wnn6=no
3921   fi
3922
3923   AC_CHECKING(for Mule input methods)
3924   dnl Do we have the XmIm* routines?  And if so, do we want to use them?
3925   dnl XIM seems to be flaky except on Solaris...
3926   dnl test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no
3927   case "$with_xim" in "" | "yes" )
3928     AC_CHECKING(for XIM)
3929     AC_CHECK_LIB(X11, XOpenIM, with_xim=xlib, with_xim=no)
3930     dnl XIM + Lesstif is not (yet?) usable
3931     dnl Only use Motif if linking Motif anyway, or don't have xlib XIM
3932     if test "$need_motif $have_lesstif" = "yes no"; then
3933       AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
3934     elif test "$have_motif $have_lesstif $with_xim" = "yes no no"; then
3935       AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
3936     fi ;;
3937   esac
3938   if test "$with_xim" != "no"; then
3939     AC_DEFINE(HAVE_XIM)
3940     if test "$with_xim" = "xlib"; then
3941       AC_DEFINE(XIM_XLIB)
3942       XE_ADD_OBJS(input-method-xlib.o)
3943     fi
3944     if test "$with_xim" = "motif"; then
3945       AC_DEFINE(XIM_MOTIF)
3946       need_motif=yes
3947       XE_ADD_OBJS(input-method-motif.o)
3948     fi
3949     if test "$with_xim" = "motif"; then
3950       with_xfs=no
3951     fi
3952   fi
3953
3954   dnl "with_xfs" = "yes"
3955   if test "$with_xfs" = "yes" ; then
3956     AC_CHECKING(for XFontSet)
3957     AC_CHECK_LIB(X11, XmbDrawString, [:], with_xfs=no)
3958     if test "$with_xfs" = "yes" && test "$with_menubars" = "lucid"; then
3959       AC_DEFINE(USE_XFONTSET)
3960       if test "$with_xim" = "no" ; then
3961         XE_ADD_OBJS(input-method-xlib.o)
3962       fi
3963     fi
3964   fi dnl with_xfs
3965
3966   dnl Autodetect WNN
3967   test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
3968   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/jllib.h, ,with_wnn=no) }
3969   dnl gcc 2.97 fixincludes breaks inclusion of wnn/commonhd.h
3970   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/commonhd.h, ,with_wnn=no) }
3971   dnl Detour to find crypt
3972   if test "$with_wnn" != "no"; then
3973     AC_CHECK_FUNCS(crypt)
3974     test "$ac_cv_func_crypt" != "yes" && { AC_CHECK_LIB(crypt, crypt) }
3975   fi
3976   dnl Back to our regularly scheduled wnn hunting
3977   if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
3978     AC_CHECK_LIB(wnn,jl_dic_list_e,libwnn=wnn,
3979       AC_CHECK_LIB(wnn4,jl_dic_list_e,libwnn=wnn4,
3980         AC_CHECK_LIB(wnn6,jl_dic_list_e,libwnn=wnn6,
3981           AC_CHECK_LIB(wnn6_fromsrc,dic_list_e,libwnn=wnn6_fromsrc,with_wnn=no))))
3982   fi
3983   test -z "$with_wnn" && with_wnn=yes
3984   if test "$with_wnn" = "yes"; then
3985     AC_DEFINE(HAVE_WNN)
3986     XE_PREPEND(-l$libwnn, libs_x)
3987     XE_ADD_OBJS(mule-wnnfns.o)
3988     if test "$with_wnn6" != "no"; then
3989       AC_CHECK_LIB($libwnn, jl_fi_dic_list, with_wnn6=yes)
3990       test "$with_wnn6" = "yes" && AC_DEFINE(WNN6)
3991     fi
3992   fi
3993
3994   dnl Autodetect canna
3995   canna_includes_found=no
3996   if test "$with_canna" != "no"; then
3997     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3998   fi
3999   if test "$canna_includes_found" = "no" -a "$with_canna" != "no" -a \
4000       -d "/usr/local/canna/include"; then
4001     save_c_switch_site="$c_switch_site"
4002     c_switch_site="$c_switch_site -I/usr/local/canna/include"
4003     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
4004     if test "$canna_includes_found" != "yes"; then
4005       c_switch_site="$save_c_switch_site"
4006       with_canna="no"
4007     fi
4008   fi
4009
4010   test -z "$with_canna" && { AC_CHECK_HEADER(canna/RK.h,         , with_canna=no) }
4011   test -z "$with_canna" && { AC_CHECK_LIB(RKC, RkBgnBun,       [:],with_canna=no) }
4012   test -z "$with_canna" && { AC_CHECK_LIB(canna,jrKanjiControl,[:],with_canna=no) }
4013   test -z "$with_canna" && with_canna=yes
4014   if test "$with_canna" = "yes"; then
4015     AC_DEFINE(HAVE_CANNA)
4016     XE_PREPEND(-lcanna -lRKC, libs_x)
4017     XE_ADD_OBJS(mule-canna.o)
4018   fi
4019
4020 else dnl "$with_mule" = "no"
4021   for feature in xim canna wnn; do
4022     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
4023       AC_MSG_WARN("--with-${feature} ignored:  Not valid without Mule support")
4024     fi
4025     eval "with_${feature}=no"
4026   done
4027 fi dnl with_mule
4028
4029
4030 dnl At this point, we know whether we need the motif lib or not.
4031 if test "$need_motif" = "yes" ; then
4032   XE_PREPEND(-lXm, libs_x)
4033   dnl AIX needs the following library for use with Motif
4034   AC_CHECK_LIB(i18n, layout_object_getvalue, [XE_PREPEND(-li18n, libs_x)])
4035   XE_COMPUTE_RUNPATH()
4036 fi
4037
4038 dnl ----------------------------------------------------------------
4039 dnl Check for POSIX functions.
4040 dnl ----------------------------------------------------------------
4041
4042 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)
4043
4044 dnl getaddrinfo() is borked under hpux11
4045 if test "$ac_cv_func_getaddrinfo" != "no" ; then
4046   case "$opsys" in
4047     hpux11* )
4048       AC_MSG_WARN([Use of getaddrinfo is disabled for HP-UX 11.XX.])
4049       ac_cv_func_getaddrinfo=no
4050       ;;
4051   esac
4052 fi
4053
4054 dnl ----------------------------------------------------------------
4055 dnl Check for PTY support functions.
4056 dnl ----------------------------------------------------------------
4057
4058 dnl There is no "standard" pty allocation method.  Every system is different.
4059 dnl  getpt()  is the preferred pty allocation method on glibc systems.
4060 dnl _getpty() is the preferred pty allocation method on SGI systems.
4061 dnl grantpt(), unlockpt(), ptsname() are defined by Unix98.
4062 AC_CHECK_FUNCS(getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp)
4063
4064 dnl openpty() is the preferred pty allocation method on BSD and Tru64 systems.
4065 dnl openpty() might be declared in:
4066 dnl - pty.h (Tru64 or Linux)
4067 dnl - libutil.h (FreeBSD)
4068 dnl - util.h (NetBSD)
4069 AC_CHECK_FUNC(openpty, have_openpty=yes, [
4070   AC_CHECK_LIB(util, openpty, have_openpty=yes need_libutil=yes)])
4071 if test "$have_openpty" = "yes"; then
4072   AC_DEFINE(HAVE_OPENPTY)
4073   AC_CHECK_HEADERS(pty.h libutil.h util.h, break)
4074   test "$need_libutil" = "yes" && XE_APPEND(-lutil, libs_system)
4075 fi
4076
4077 dnl Check for STREAM support functions.
4078 dnl Confusingly, "str" means both "string" and "SysV Streams".
4079 AC_CHECK_HEADERS(stropts.h)
4080 if test "$ac_cv_header_stropts_h" = "yes"; then
4081   AC_CHECK_FUNCS(isastream)
4082   AC_CHECK_HEADERS(strtio.h) dnl TIOCSIGNAL
4083 fi
4084
4085 dnl Use our own realpath always.
4086 XE_ADD_OBJS(realpath.o)
4087
4088 dnl Check whether the system provides getloadavg().
4089 AC_CHECK_FUNCS(getloadavg)
4090
4091 if test "$ac_cv_func_getloadavg" = "yes"; then
4092   dnl Solaris 8 declares getloadavg() in <sys/loadavg.h>.
4093   dnl glibc 2.2 declares getloadavg() in <stdlib.h>...
4094   dnl   ...if we #define _GNU_SOURCE, which we do.
4095   AC_CHECK_HEADERS(sys/loadavg.h)
4096 else
4097   dnl We define our own getloadavg() using lower level functions.
4098   XE_ADD_OBJS(getloadavg.o)
4099
4100   dnl Used by getloadavg() - does not require root priveleges
4101   AC_CHECK_LIB(kstat, kstat_open)
4102   AC_CHECK_HEADERS(kstat.h)
4103
4104   dnl Another way to get the load average
4105   AC_CHECK_LIB(kvm, kvm_read)
4106 fi
4107
4108 dnl If netdb.h does not declare h_errno, we must declare it by hand.
4109 AC_MSG_CHECKING(whether netdb declares h_errno)
4110 AC_TRY_LINK([#include <netdb.h>],
4111   [return h_errno;],
4112   [AC_MSG_RESULT(yes)
4113    AC_DEFINE(HAVE_H_ERRNO)],
4114   [AC_MSG_RESULT(no)])
4115
4116 AC_MSG_CHECKING(for sigsetjmp)
4117 AC_TRY_COMPILE([#include <setjmp.h>],
4118         [sigjmp_buf bar; sigsetjmp (bar, 0);],
4119   [AC_MSG_RESULT(yes)
4120    AC_DEFINE(HAVE_SIGSETJMP)],
4121   [AC_MSG_RESULT(no)])
4122
4123 AC_MSG_CHECKING(whether localtime caches TZ)
4124 AC_CACHE_VAL(emacs_cv_localtime_cache,
4125 [if test "$ac_cv_func_tzset" = "yes"; then
4126 AC_TRY_RUN([#include <time.h>
4127 #if STDC_HEADERS
4128 # include <stdlib.h>
4129 #endif
4130 extern char **environ;
4131 unset_TZ ()
4132 {
4133   char **from, **to;
4134   for (to = from = environ; (*to = *from); from++)
4135     if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
4136       to++;
4137 }
4138 char TZ_GMT0[] = "TZ=GMT0";
4139 char TZ_PST8[] = "TZ=PST8";
4140 main()
4141 {
4142   time_t now = time ((time_t *) 0);
4143   int hour_GMT0, hour_unset;
4144   if (putenv (TZ_GMT0) != 0)
4145     exit (1);
4146   hour_GMT0 = localtime (&now)->tm_hour;
4147   unset_TZ ();
4148   hour_unset = localtime (&now)->tm_hour;
4149   if (putenv (TZ_PST8) != 0)
4150     exit (1);
4151   if (localtime (&now)->tm_hour == hour_GMT0)
4152     exit (1);
4153   unset_TZ ();
4154   if (localtime (&now)->tm_hour != hour_unset)
4155     exit (1);
4156   exit (0);
4157 }], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
4158 [# If we have tzset, assume the worst when cross-compiling.
4159 emacs_cv_localtime_cache=yes])
4160 else
4161         # If we lack tzset, report that localtime does not cache TZ,
4162         # since we can't invalidate the cache if we don't have tzset.
4163         emacs_cv_localtime_cache=no
4164 fi],[:])dnl
4165 AC_MSG_RESULT($emacs_cv_localtime_cache)
4166 if test $emacs_cv_localtime_cache = yes; then
4167   AC_DEFINE(LOCALTIME_CACHE)
4168 fi
4169
4170 if test "$HAVE_TIMEVAL" = "yes"; then
4171 AC_MSG_CHECKING(whether gettimeofday accepts one or two arguments)
4172 AC_TRY_LINK([
4173 #ifdef TIME_WITH_SYS_TIME
4174 #include <sys/time.h>
4175 #include <time.h>
4176 #else
4177 #ifdef HAVE_SYS_TIME_H
4178 #include <sys/time.h>
4179 #else
4180 #include <time.h>
4181 #endif
4182 #endif
4183   ],
4184   [
4185   struct timeval time;
4186   gettimeofday (&time, 0);
4187 ],
4188   [AC_MSG_RESULT(two)],
4189   [AC_MSG_RESULT(one)
4190    AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)])
4191 fi
4192
4193
4194 AC_C_INLINE
4195 test "$ac_cv_c_inline" != "no" -a "$GCC" = "yes" && XE_ADD_OBJS(inline.o)
4196
4197 dnl HP-UX has a working alloca in libPW.
4198 dnl case "${GCC}${opsys}" in hpux* )
4199 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
4200 dnl esac
4201
4202 dnl AC_FUNC_ALLOCA doesn't know about DEC C's #pragma intrinsic(alloca)
4203 if test "$__DECC" != "yes"; then
4204   AC_FUNC_ALLOCA
4205   test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
4206 fi
4207
4208 dnl Check whether vfork exists and works correctly. (This does more
4209 dnl than just check for its existence.) If so, it defines HAVE_VFORK_H.
4210 dnl If not, it defines vfork to be fork.
4211 AC_FUNC_VFORK
4212
4213 dnl Check whether strcoll exists and works correctly. (This does more
4214 dnl than just check for its existence.) If so, it defines HAVE_STRCOLL.
4215 AC_FUNC_STRCOLL
4216
4217 dnl If `getpgrp' takes no argument (the POSIX.1 version), define
4218 dnl `GETPGRP_VOID'.  Otherwise, it is the BSD version, which takes a
4219 dnl process ID as an argument.
4220 AC_CHECK_FUNCS(getpgrp)
4221 AC_FUNC_GETPGRP
4222
4223 dnl We used to call AC_FUNC_MMAP here
4224 dnl Instead we now use following, suggested by Neal Becker
4225 AC_MSG_CHECKING(for working mmap)
4226 case "$opsys" in ultrix* ) have_mmap=no ;; *)
4227 AC_TRY_RUN([#include <stdio.h>
4228 #include <unistd.h>
4229 #include <fcntl.h>
4230 #include <sys/mman.h>
4231
4232 #ifndef MAP_VARIABLE
4233 #define MAP_VARIABLE 0
4234 #endif
4235
4236 #ifndef MAP_FAILED
4237 #define MAP_FAILED -1
4238 #endif
4239
4240 int main (int argc, char *argv[])
4241 {
4242   int fd = -1;
4243   caddr_t p;
4244 #ifndef MAP_ANONYMOUS
4245   fd = open ("/dev/zero", O_RDWR);
4246   if (fd < 0)
4247     return 1;
4248 #define MAP_ANONYMOUS 0
4249 #endif
4250   if (mmap(0, 1024, PROT_READ | PROT_WRITE,
4251            MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS,
4252            fd, 0) != (void *) MAP_FAILED)
4253     return 0;
4254   perror ("conftest: mmap failed");
4255   return 1;
4256 }], have_mmap=yes, have_mmap=no) ;;
4257 esac
4258 AC_MSG_RESULT($have_mmap)
4259 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
4260
4261 dnl By default we switch off rel-alloc on cygwin as it generally causes us grief
4262 case "$opsys" in cygwin*) 
4263         test "$rel_alloc" = "default" && rel_alloc=no ;;
4264 esac
4265 dnl rel_alloc requires either GNU malloc or system malloc with mmap
4266 dnl We only turn rel_alloc on by default if mmap is available.
4267 test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
4268 if test "$rel_alloc $have_mmap" = "default yes"; then
4269   if test "$doug_lea_malloc" = "yes"; then
4270     dnl Check if malloc() calls mmap(), making rel_alloc pointless.
4271     AC_MSG_CHECKING(for M_MMAP_THRESHOLD)
4272     AC_TRY_COMPILE([#include <malloc.h>],[
4273 #ifndef M_MMAP_THRESHOLD
4274 #error No M_MMAP_THRESHOLD :-(
4275 !@+$%^&*_)(_ - unlikely to compile...
4276 #endif
4277 ], [rel_alloc=no; AC_MSG_RESULT(yes);], [rel_alloc=yes; AC_MSG_RESULT(no);])
4278   else
4279     rel_alloc=yes
4280   fi
4281 fi
4282 test "$rel_alloc" = "yes" && AC_DEFINE(REL_ALLOC)
4283
4284 dnl Check for terminal I/O variants
4285 dnl TERMIOS systems may have termio.h, but not vice-versa, I think.
4286 AC_CHECK_HEADER(termios.h,
4287   AC_DEFINE(HAVE_TERMIOS)
4288   AC_DEFINE(SIGNALS_VIA_CHARACTERS)
4289   AC_DEFINE(NO_TERMIO),
4290   [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])])
4291
4292
4293 dnl Check for Internet sockets.
4294 AC_CHECK_FUNC(socket,
4295  [AC_CHECK_HEADER(netinet/in.h,
4296    [AC_CHECK_HEADER(arpa/inet.h, [
4297   AC_DEFINE(HAVE_SOCKETS)
4298       AC_MSG_CHECKING("for sun_len member in struct sockaddr_un")
4299       AC_TRY_LINK([
4300 #include <sys/types.h>
4301 #include <sys/socket.h>
4302 #include <sys/un.h>
4303       ],
4304       [static struct sockaddr_un x; x.sun_len = 1;],
4305       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)],
4306       [AC_MSG_RESULT(no)])
4307       AC_MSG_CHECKING("for ip_mreq struct in netinet/in.h")
4308       AC_TRY_LINK([
4309 #include <sys/types.h>
4310 #include <netinet/in.h>
4311       ],
4312       [static struct ip_mreq x;],
4313       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MULTICAST)],
4314       [AC_MSG_RESULT(no)])])])])
4315
4316 dnl Check for SYS V IPC. (Inferior to sockets.)
4317 AC_CHECK_FUNC(msgget,
4318   [AC_CHECK_HEADER(sys/ipc.h,
4319     [AC_CHECK_HEADER(sys/msg.h,
4320       [AC_DEFINE(HAVE_SYSVIPC)])])])
4321
4322 dnl Check for directory variants
4323 AC_CHECK_HEADER(dirent.h, [AC_DEFINE(SYSV_SYSTEM_DIR)],
4324   [AC_CHECK_HEADER(sys/dir.h, , [AC_DEFINE(NONSYSTEM_DIR_LIBRARY)])])
4325
4326 dnl Check for nlist.h
4327 AC_CHECK_HEADER(nlist.h, AC_DEFINE(NLIST_STRUCT), )
4328
4329 dnl Check for sound of various sorts.
4330
4331 dnl Autodetect native sound
4332 AC_CHECKING("for sound support")
4333 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
4334
4335 if test "$with_native_sound" != "no"; then
4336   dnl Maybe sound is already on include path...
4337   if test -n "$native_sound_lib"; then
4338     AC_CHECK_HEADER(multimedia/audio_device.h,
4339       [sound_found=yes sound_cflags=""
4340       XE_ADD_OBJS(sunplay.o)])
4341   fi
4342
4343   dnl Autodetect Sun native sound from SUNWaudmo package
4344   if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
4345     if test -d "/usr/demo/SOUND/include/multimedia"; then
4346       sun_sound_cflags="-I/usr/demo/SOUND/include"
4347     elif test -d "/usr/demo/SOUND/multimedia"; then
4348       sun_sound_cflags="-I/usr/demo/SOUND"
4349     fi
4350
4351     if test -n "$native_sound_lib"; then
4352       sun_sound_lib="$native_sound_lib"
4353     elif test -r "/usr/demo/SOUND/lib/libaudio.a"; then
4354       sun_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
4355     elif test -r "/usr/demo/SOUND/libaudio.a"; then
4356       sun_sound_lib="/usr/demo/SOUND/libaudio.a"
4357     fi
4358
4359     if test -n "$sun_sound_cflags" -a -n "$sun_sound_lib"; then
4360       native_sound_lib="$sun_sound_lib"
4361       sound_cflags="$sun_sound_cflags"
4362       sound_found=yes
4363       XE_ADD_OBJS(sunplay.o)
4364     fi
4365   fi
4366
4367   dnl Check for SGI and HP native sound libs
4368   if test -z "$sound_found"; then
4369     case "$canonical" in
4370     *-sgi-* )
4371       if test -z "$native_sound_lib"; then
4372         AC_CHECK_LIB(audio, ALopenport, native_sound_lib="-laudio")
4373       fi
4374       if test -n "$native_sound_lib"; then
4375         sound_found=yes sound_cflags=""
4376         XE_ADD_OBJS(sgiplay.o)
4377       fi ;;
4378     hppa*-hp-hpux* )
4379       if test -z "$native_sound_lib"; then
4380         AC_CHECK_LIB(Alib, AOpenAudio, native_sound_lib="-lAlib")
4381       fi
4382       if test -n "$native_sound_lib"; then
4383         sound_found=yes
4384         XE_ADD_OBJS(hpplay.o)
4385         if test "$GCC" = "yes" # Kludge city
4386           then sound_cflags="-Dconst= -Dvolatile= -I/usr/audio/examples"
4387           else sound_cflags="+e -I/usr/audio/examples"
4388         fi
4389       fi ;;
4390     esac
4391   fi
4392
4393   dnl Win32 Native uses native sound
4394   if test -z "$sound_found"; then
4395     if test "$with_msw" = "yes"; then
4396     sound_found=yes
4397     native_sound_lib=
4398     fi
4399   fi
4400
4401   dnl Check for Linux/BSD native sound
4402   if test -z "$sound_found"; then
4403     for dir in "machine" "sys" "linux"; do
4404       AC_CHECK_HEADER(${dir}/soundcard.h,
4405         sound_found=yes
4406        need_miscplay=yes
4407         XE_ADD_OBJS(linuxplay.o)
4408         [AC_DEFINE_UNQUOTED(SOUNDCARD_H_FILE, "${dir}/soundcard.h")]
4409         break)
4410     done
4411   fi
4412
4413   test "$sound_found" = "yes" && with_native_sound=yes
4414 fi
4415
4416 if test "$with_native_sound" = "yes"; then
4417   AC_DEFINE(HAVE_NATIVE_SOUND)
4418   test -n "$native_sound_lib" && XE_PREPEND($native_sound_lib, LIBS)
4419 fi
4420
4421 dnl NAS Sound support
4422 if test "$with_nas_sound" != "no"; then
4423   AC_CHECK_HEADER(audio/audiolib.h, [
4424     AC_CHECK_LIB(audio, AuOpenServer, have_nas_sound=yes)])
4425   if test "$have_nas_sound" = "yes"; then
4426     with_nas_sound=yes
4427     AC_DEFINE(HAVE_NAS_SOUND)
4428     XE_ADD_OBJS(nas.o)
4429     XE_PREPEND(-laudio, libs_x)
4430     dnl If the nas library does not contain the error jump point,
4431     dnl then we force safer behavior.
4432     AC_EGREP_HEADER(AuXtErrorJump,audio/Xtutil.h,,[old_nas=yes; AC_DEFINE(NAS_NO_ERROR_JUMP)])
4433   else
4434     test "$with_nas_sound" = "yes" && \
4435       XE_DIE("Required NAS sound support cannot be provided.")
4436     with_nas_sound=no
4437   fi
4438 fi
4439
4440 dnl ESD Sound support
4441 if test "$with_esd_sound" != "no"; then
4442   AC_CHECK_PROG(have_esd_config, esd-config, yes, no)
4443   if test "$have_esd_config" = "yes"; then
4444     save_c_switch_site="$c_switch_site" save_LIBS="$LIBS"
4445     XE_APPEND(`esd-config --cflags`, c_switch_site)
4446     XE_PREPEND(`esd-config --libs`, LIBS)
4447     AC_CHECK_FUNC(esd_play_stream,
4448       have_esd_sound=yes,
4449       c_switch_site="$save_c_switch_site" LIBS="$save_LIBS")
4450   fi
4451
4452   if test "$have_esd_sound" = "yes"; then
4453     with_esd_sound=yes
4454     need_miscplay=yes
4455     XE_ADD_OBJS(esd.o)
4456     AC_DEFINE(HAVE_ESD_SOUND)
4457   else
4458     test "$with_esd_sound" = "yes" && \
4459       XE_DIE("Required ESD sound support cannot be provided.")
4460     with_esd_sound=no
4461   fi
4462 fi
4463
4464 test "$need_miscplay" = "yes" && XE_ADD_OBJS(miscplay.o)
4465
4466 dnl ---------------------
4467 dnl TTY-dependent options
4468 dnl ---------------------
4469
4470 test -z "$with_tty" && with_tty=yes
4471
4472 if test "$with_tty" = "yes"  ; then
4473   AC_CHECKING(for TTY-related features)
4474   AC_DEFINE(HAVE_TTY)
4475   XE_ADD_OBJS(console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o)
4476
4477   dnl Autodetect ncurses.
4478   if test -z "$with_ncurses"; then
4479     AC_CHECK_LIB(ncurses, tgetent, with_ncurses=yes, with_ncurses=no)
4480   fi
4481   if test "$with_ncurses" = "yes"; then
4482     AC_DEFINE(HAVE_NCURSES)
4483     AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
4484     AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
4485     XE_ADD_OBJS(terminfo.o)
4486     XE_PREPEND(-lncurses, LIBS)
4487
4488     if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then
4489       dnl Try again, and check for the bogus ncurses/ include bug.
4490       dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
4491       dnl <ncurses/unctrl.h>)
4492       save_c_switch_site="$c_switch_site"
4493       c_switch_site="$c_switch_site -I/usr/include/ncurses"
4494       AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
4495       if test "$ac_cv_header_ncurses_curses_h" = "yes"
4496         then AC_MSG_WARN("Your system has the bogus ncurses include bug.")
4497         else c_switch_site="$save_c_switch_site"
4498       fi
4499     fi
4500   else dnl "$with_ncurses" = "no"
4501     dnl Autodetect terminfo/-lcurses/-ltermlib/-ltermcap
4502     if test "$have_terminfo" = "yes"; then
4503       XE_ADD_OBJS(terminfo.o)
4504       if test -n "$libs_termcap"; then
4505         XE_PREPEND($libs_termcap, LIBS)
4506       else
4507         for lib in curses termlib termcap; do
4508           AC_CHECK_LIB($lib, tgetent, XE_PREPEND(-l${lib}, LIBS); break)
4509         done
4510       fi
4511     else dnl "$have_terminfo" = "no" && "with_ncurses" = "no"
4512       if test -n "$libs_termcap" -a "$opsys" = "openbsd"; then
4513         dnl We need to check if tgoto does not exist in termcap yet
4514         dnl because on OpenBSD libtermcap is another name for libcurses
4515         dnl which provides the same tgoto as ncurses
4516         AC_CHECK_LIB(termcap, tgoto, , XE_ADD_OBJS(tparam.o))
4517       else
4518         XE_ADD_OBJS(tparam.o)
4519       fi
4520       dnl The HP-UX curses library seems to have a badly broken version of select(2)
4521       dnl that makes "poll: interrupted system call" messages to appear and
4522       dnl Emacs subprocesses to hang (e.g. TeX compilation w/ AUCTeX) */
4523       case "$opsys" in *-hp-hpux* ) libs_termcap="-ltermcap" ;; esac
4524       if test -n "$libs_termcap"; then
4525         XE_PREPEND($libs_termcap, LIBS)
4526       else
4527         AC_CHECK_LIB(curses, tgetent, XE_PREPEND(-lcurses, LIBS),
4528           AC_CHECK_LIB(termcap, tgetent, XE_PREPEND(-ltermcap, LIBS),
4529             XE_ADD_OBJS(termcap.o)))
4530       fi
4531     fi
4532   fi
4533   AC_DEFINE_UNQUOTED(CURSES_H_FILE, "${curses_h_file-curses.h}")
4534   AC_DEFINE_UNQUOTED(TERM_H_FILE, "${term_h_file-term.h}")
4535
4536   dnl General Purpose Mouse (libgpm) support
4537   if test "$with_gpm" != "no"; then
4538     AC_CHECK_HEADER(gpm.h, [
4539       AC_CHECK_LIB(gpm, Gpm_Open, have_gpm=yes)])
4540     if test "$have_gpm" = "yes"; then
4541       with_gpm=yes
4542       AC_DEFINE(HAVE_GPM)
4543       XE_ADD_OBJS(gpmevent.o)
4544       XE_PREPEND(-lgpm, LIBS)
4545     elif test "$with_gpm" = "yes"; then
4546       XE_DIE(["GPM requested, but gpm.h or libgpm seems to be missing."])
4547     else
4548       with_gpm=no
4549     fi
4550   fi
4551
4552 else dnl "$with_tty" = "no"
4553   for feature in ncurses gpm; do
4554     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
4555       AC_MSG_WARN("--with-${feature} ignored:  Not valid without TTY support")
4556     fi
4557     eval "with_${feature}=no"
4558   done
4559 fi dnl with_tty
4560
4561 dnl Do we need event-unixoid.o ?
4562 dnl This is needed for X, or for TTY, or for MSWIN w/Cygwin select()
4563 dnl [but not Mingw MSWIN]
4564 test "$with_x11" = "yes" -o "$with_tty" = "yes" -o "$need_event_unixoid" = "yes" && XE_ADD_OBJS(event-unixoid.o)
4565
4566 dnl Database support
4567 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
4568 dnl On FreeBSD, both DB and DBM are part of libc.
4569 dnl By default, we check for DBM support in libgdbm, then libc, then libdbm.
4570
4571 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
4572   != "no no no" && AC_CHECKING(for database support)
4573
4574 dnl Check for ndbm.h, required for either kind of DBM support.
4575 if test "$with_database_gdbm $with_database_dbm" != "no no"; then
4576   AC_CHECK_HEADER(ndbm.h, [:], [
4577     test "$with_database_gdbm" = "yes" -o \
4578          "$with_database_dbm"  = "yes" && \
4579       XE_DIE("Required DBM support cannot be provided.")
4580     with_database_gdbm=no with_database_dbm=no])
4581 fi
4582
4583 dnl Check for DBM support in libgdbm.
4584 if test "$with_database_gdbm" != "no"; then
4585   AC_CHECK_LIB(gdbm, dbm_open, [
4586    with_database_gdbm=yes with_database_dbm=no libdbm=-lgdbm], [
4587    if test "$with_database_gdbm" = "yes"; then
4588      XE_DIE("Required GNU DBM support cannot be provided.")
4589    fi
4590    with_database_gdbm=no])
4591 fi
4592
4593 dnl Check for DBM support in libc and libdbm.
4594 if test "$with_database_dbm" != "no"; then
4595   AC_CHECK_FUNC(dbm_open, [with_database_dbm=yes libdbm=], [
4596     AC_CHECK_LIB(dbm, dbm_open, [with_database_dbm=yes libdbm=-ldbm], [
4597       test "$with_database_dbm" = "yes" && \
4598         XE_DIE("Required DBM support cannot be provided.")
4599       with_database_dbm=no])])
4600 fi
4601
4602 dnl Tell make about the DBM support we detected.
4603 test -n "$libdbm" && XE_PREPEND("$libdbm", LIBS)
4604 test "$with_database_gdbm" = "yes" -o \
4605      "$with_database_dbm"  = "yes" && \
4606   AC_DEFINE(HAVE_DBM)
4607
4608 dnl Check for u_int*_t typedefs.
4609 AC_CHECK_TYPE(u_int8_t, uint8_t)
4610 if test $ac_cv_type_u_int8_t = yes; then
4611 AC_DEFINE(HAVE_U_INT8_T,1)
4612 fi
4613 AC_CHECK_TYPE(u_int16_t, uint16_t)
4614 if test $ac_cv_type_u_int16_t = yes; then
4615 AC_DEFINE(HAVE_U_INT16_T,1)
4616 fi
4617 AC_CHECK_TYPE(u_int32_t, uint32_t)
4618 if test $ac_cv_type_u_int32_t = yes; then
4619 AC_DEFINE(HAVE_U_INT32_T,1)
4620 fi
4621 AC_CHECK_TYPE(u_int64_t, uint64_t)
4622 if test $ac_cv_type_u_int64_t = yes; then
4623 AC_DEFINE(HAVE_U_INT64_T,1)
4624 fi
4625
4626 dnl Check for Berkeley DB.
4627 if test "$with_database_berkdb" != "no"; then
4628   AC_MSG_CHECKING(for Berkeley db.h)
4629   for header in "db/db.h" "db.h"; do
4630     case "$opsys" in
4631         *freebsd*)
4632     AC_TRY_COMPILE([
4633 #include <stdlib.h>
4634 #if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1)
4635 #ifdef HAVE_INTTYPES_H
4636 #define __BIT_TYPES_DEFINED__
4637 #include <inttypes.h>
4638 #endif
4639 #endif
4640 #include <$header>
4641 ],[], db_h_file="$header"; break)
4642         ;;
4643         *)
4644     AC_TRY_COMPILE([
4645 #include <stdlib.h>
4646 #if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1)
4647 #ifdef HAVE_INTTYPES_H
4648 #define __BIT_TYPES_DEFINED__
4649 #include <inttypes.h>
4650 #if !HAVE_U_INT8_T
4651 typedef uint8_t  u_int8_t;
4652 #endif
4653 #if !HAVE_U_INT16_T
4654 typedef uint16_t u_int16_t;
4655 #endif
4656 #if !HAVE_U_INT32_T
4657 typedef uint32_t u_int32_t;
4658 #endif
4659 #ifdef WE_DONT_NEED_QUADS
4660 #if !HAVE_U_INT64_T
4661 typedef uint64_t u_int64_t;
4662 #endif
4663 #endif
4664 #endif
4665 #endif
4666 #include <$header>
4667 ],[], db_h_file="$header"; break)
4668         ;;
4669         esac
4670   done
4671   if test -z "$db_h_file"
4672   then AC_MSG_RESULT(no); with_database_berkdb=no
4673   else AC_MSG_RESULT($db_h_file)
4674   fi
4675
4676   if test "$with_database_berkdb" != "no"; then
4677     AC_MSG_CHECKING(for Berkeley DB version)
4678     AC_EGREP_CPP(yes,
4679 [#include <$db_h_file>
4680 #if DB_VERSION_MAJOR > 1
4681 yes
4682 #endif
4683 ], [AC_EGREP_CPP(yes,
4684 [#include <$db_h_file>
4685 #if DB_VERSION_MAJOR > 2
4686 yes
4687 #endif
4688 ], [AC_MSG_RESULT(3); dbfunc=db_create],[
4689     AC_MSG_RESULT(2); dbfunc=db_open])],[
4690     AC_MSG_RESULT(1); dbfunc=dbopen])
4691     AC_CHECK_FUNC($dbfunc,     with_database_berkdb=yes need_libdb=no, [
4692     AC_CHECK_LIB(db, $dbfunc,  with_database_berkdb=yes need_libdb=yes)])
4693   fi
4694
4695   if test "$with_database_berkdb" = "yes"; then
4696     AC_DEFINE_UNQUOTED(DB_H_FILE, "$db_h_file")
4697     AC_DEFINE(HAVE_BERKELEY_DB)
4698     test "$need_libdb" = "yes" && XE_PREPEND(-ldb, LIBS)
4699   else with_database_berkdb=no
4700   fi
4701 fi
4702
4703 if test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
4704      != "no no no"; then
4705   AC_DEFINE(HAVE_DATABASE)
4706   XE_ADD_OBJS(database.o)
4707   if test "$with_utf_2000" = "yes" -a "$with_chise" != "yes" ; then
4708     AC_DEFINE(HAVE_CHISE)
4709   fi
4710 fi
4711
4712 dnl Socks support
4713 if test "$with_socks" = "yes"; then
4714   AC_CHECK_LIB(socks, SOCKSinit)
4715   test -n "$ac_cv_lib_socks_SOCKSinit" && AC_DEFINE(HAVE_SOCKS)
4716 fi
4717
4718 dnl Usage tracking (undocumented and likely unused option)
4719 if test "$usage_tracking" = "yes"; then
4720   AC_DEFINE(USAGE_TRACKING)
4721   XE_PREPEND(-Bstatic -lut -Bdynamic, LIBS)
4722 fi
4723
4724 dnl autodetect dll support
4725 if test "$with_modules" != "no"; then
4726   AC_CHECKING(for module support)
4727
4728   dnl Check for MS-Windows
4729   if test "$with_msw" = "yes"; then
4730     have_dl=yes;
4731   else
4732     dnl Check for Darwin
4733     case "$opsys" in
4734       darwin) have_dl=yes; AC_DEFINE(HAVE_DYLD) ;;
4735       *) dnl Find headers and libraries
4736          AC_CHECK_HEADER(dlfcn.h, [
4737            AC_MSG_CHECKING([for dlopen in -lc])
4738            AC_TRY_LINK([#include <dlfcn.h>],dnl
4739               [dlopen ("", 0);], [ have_dl=yes ], [
4740                AC_MSG_CHECKING([for dlopen in -ldl])
4741                ac_save_LIBS="$LIBS"
4742                LIBS="-ldl $LIBS"
4743                AC_TRY_LINK([#include <dlfcn.h>],dnl
4744                  [dlopen ("", 0);], [ have_dl=yes ],
4745                  [LIBS="$ac_save_LIBS"])
4746                ac_save_LIBS=])])
4747         if test -n "$have_dl"; then
4748            AC_DEFINE(HAVE_DLOPEN)
4749         else
4750            AC_CHECK_LIB(dld, shl_load, [
4751            libdl=dld have_dl=yes;
4752            AC_DEFINE(HAVE_SHL_LOAD)], [
4753            AC_CHECK_LIB(dld, dld_init, [
4754            libdl=dld have_dl=yes;
4755            AC_DEFINE(HAVE_DLD_INIT)])])
4756         fi
4757     ;;
4758     esac
4759   fi dnl end !MS-Windows
4760
4761   if test -n "$have_dl"; then
4762     dnl XE_SHLIB_STUFF (in aclocal.m4) defines $can_build_shared
4763     XE_SHLIB_STUFF
4764   fi
4765
4766   if test "$can_build_shared" = "yes"; then
4767     AC_DEFINE(HAVE_SHLIB)
4768     XE_ADD_OBJS(sysdll.o emodules.o)
4769     XE_APPEND(src, INSTALL_ARCH_DEP_SUBDIR)
4770     test -n "$libdl" && XE_PREPEND(-l${libdl}, LIBS)
4771     AC_CHECK_FUNCS(dlerror _dlerror)
4772     with_modules=yes
4773   else
4774     if test "$with_modules" = "yes"; then
4775       XE_DIE("Required module support cannot be provided.")
4776     else
4777       AC_MSG_WARN("Module support cannot be provided.")
4778     fi
4779     with_modules=no
4780   fi
4781 fi
4782
4783 dnl Unfortunately, just because we can link doesn't mean we can run.
4784 dnl One of the above link tests may have succeeded but caused resulting
4785 dnl executables to fail to run.  Also any tests using AC_TRY_RUN will
4786 dnl have reported incorrect results.
4787 AC_TRY_RUN([int main(int c,char *v[]){return 0;}],[:],[
4788   echo ""
4789   echo "*** PANIC *** configure forgot how to build working executables!"
4790   echo ""
4791   echo "*** This is most commonly due to an unforeseen environment, causing"
4792   echo "*** configure to incorrectly compute the sequence of libraries to link."
4793   echo "*** Please examine the tail of config.log for runtime errors."
4794   echo "*** Pay special attention to the -l flags, and perhaps -I and -L."
4795   echo "*** Often adding or removing explicit options in the configure"
4796   echo "*** invocation can work around this kind of problem.  If so, please"
4797   echo "*** report it as a bug to xemacs-beta@xemacs.org."
4798   echo "***"
4799   echo "*** Other possible causes are inability to write to the file system"
4800   echo "*** (bogus permissions or disk full) or a misconfiguration of the dynamic"
4801   echo "*** linker.  On Linux, check /etc/ld.conf and rerun ldconfig if"
4802   echo "*** necessary.  On other systems, try telling configure where to find"
4803   echo "*** the shared libraries using the --site-runtime-libraries option."
4804   echo "***"
4805   echo "*** Another way to shoot yourself in the foot is to specify"
4806   echo "*** --with-FEATURE when FEATURE is not actually installed on your"
4807   echo "*** system.  Don't do that."
4808   exit 1])
4809
4810 dnl Process support
4811 if test "$win32_processes" = "yes"; then
4812   XE_ADD_OBJS(process-nt.o)
4813 else
4814   AC_DEFINE(HAVE_UNIX_PROCESSES)
4815   XE_ADD_OBJS(process-unix.o)
4816 fi
4817
4818 dnl --------------------------------
4819 dnl Compute SUBST-itutable variables
4820 dnl --------------------------------
4821
4822 dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM)
4823 dnl Use XE_SPACE instead of plain assignment statements to remove extraneous blanks
4824 XE_SPACE(CFLAGS, $CFLAGS)
4825 XE_SPACE(extra_objs, $extra_objs)
4826 XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system)
4827 XE_SPACE(c_switch_window_system, $c_switch_x_site $c_switch_gtk $X_CFLAGS)
4828 XE_SPACE(c_switch_all, $c_switch_general $c_switch_window_system)
4829 XE_SPACE(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
4830 XE_SPACE(ld_switch_window_system, $ld_switch_x_site)
4831 XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system)
4832 XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
4833 XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS)
4834 XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general)
4835
4836 dnl Compute lists of Makefiles and subdirs
4837 AC_SUBST(SRC_SUBDIR_DEPS)
4838 XE_APPEND(src, MAKE_SUBDIR)
4839 internal_makefile_list="Makefile.in"
4840 SUBDIR_MAKEFILES=''
4841 test -d lock || mkdir lock
4842 for dir in $MAKE_SUBDIR; do
4843   case "$dir" in */* ) dnl Implement mkdir -p
4844     ( for d in `echo $dir | sed 's:/: :g'` ; do
4845         test -d "$d" || mkdir "$d"; cd "$d"
4846       done ) ;;
4847    * ) test -d "$dir" || mkdir "$dir" ;;
4848   esac
4849   XE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile $dir/GNUmakefile)
4850   XE_SPACE(internal_makefile_list, $internal_makefile_list $dir/Makefile.in)
4851 done
4852 AC_SUBST(INSTALL_ARCH_DEP_SUBDIR)
4853 AC_SUBST(MAKE_SUBDIR)
4854 AC_SUBST(SUBDIR_MAKEFILES)
4855
4856 dnl Make s&m symlinks in the src directory, for config.h
4857 for dir in src/s src/m; do
4858   if test ! -d "$dir" ; then
4859     echo Making symbolic link to "$srcdir/$dir"
4860     ${LN_S} "$srcdir/$dir" "$dir"
4861   fi
4862 done
4863
4864 if test "$extra_verbose" = "yes"; then
4865   echo ""
4866   PRINT_VAR(extra_objs
4867    c_switch_general  c_switch_window_system  c_switch_all
4868   ld_switch_general ld_switch_window_system ld_switch_all
4869     ld_libs_general   ld_libs_window_system   ld_libs_all)
4870   echo ""
4871 fi
4872
4873 dnl ----------------------------------------------
4874 dnl Create some auxiliary files for developers.
4875 dnl ----------------------------------------------
4876
4877 dnl Create a .gdbinit useful for debugging XEmacs
4878 if test -f "$srcdir/src/.gdbinit" -a ! -f "src/.gdbinit"; then
4879   test "$extra_verbose" = "yes" && echo "creating src/.gdbinit"
4880   echo "source $srcdir/src/.gdbinit" > "src/.gdbinit"
4881 fi
4882
4883 dnl Create a .dbxrc useful for debugging XEmacs
4884 if test -f "$srcdir/src/.dbxrc" -a ! -f "src/.dbxrc"; then
4885   test "$extra_verbose" = "yes" && echo "creating src/.dbxrc"
4886   echo ". $srcdir/src/.dbxrc" > "src/.dbxrc"
4887 fi
4888
4889 dnl Create a useful TAGS file
4890 if test -f "$srcdir/TAGS" -a ! -f "TAGS"; then
4891   test "$extra_verbose" = "yes" && echo "creating TAGS"
4892   echo "\f
4893 $srcdir/TAGS,include" > "TAGS"
4894 fi
4895
4896 dnl Create top level .sbinit for Sun compilers
4897 if test "$__SUNPRO_C" = "yes"; then
4898   test "$extra_verbose" = "yes" && echo "creating .sbinit"
4899   ( echo "# For use with Sun WorkShop's Source browser."
4900     echo "# See sbquery(1) and sbinit(4) for more information"
4901     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
4902   ) > .sbinit
4903 fi
4904
4905 dnl There are no more compile tests; remove the core they created.
4906 rm -f core
4907
4908 dnl ----------------------------------------------
4909 dnl Substitute into Makefile, config.h and paths.h
4910 dnl ----------------------------------------------
4911
4912 dnl what sort of things to edit into Makefile, config.h and paths.h
4913 dnl configuration here uncanonicalized to avoid exceeding size limits.
4914
4915 AC_SUBST(PROGNAME)
4916 AC_SUBST(version)
4917 AC_SUBST(configuration)
4918 AC_SUBST(canonical)
4919 AC_SUBST(inststaticdir)
4920 AC_SUBST(instvardir)
4921 AC_SUBST(srcdir)
4922 AC_SUBST(bindir)
4923 AC_SUBST(datadir)
4924 AC_SUBST(pkgdir)
4925 AC_SUBST(statedir)
4926 AC_SUBST(libdir)
4927 AC_SUBST(mandir)
4928 AC_SUBST(extra_includes)
4929
4930 AC_SUBST(prefix)
4931 AC_SUBST(PREFIX_USER_DEFINED)
4932 dnl Yo, Stephen Bourne!  I want to marry you!
4933 PREFIX=$prefix
4934 while true; do
4935   case "$PREFIX" in
4936     *\$* ) eval "PREFIX=$PREFIX" ;;
4937     *) break ;;
4938   esac
4939 done
4940 AC_SUBST(PREFIX)
4941
4942 AC_SUBST(exec_prefix)
4943 AC_SUBST(EXEC_PREFIX_USER_DEFINED)
4944 EXEC_PREFIX=$exec_prefix
4945 while true; do
4946   case "$EXEC_PREFIX" in
4947     *\$* ) eval "EXEC_PREFIX=$EXEC_PREFIX" ;;
4948     *) break ;;
4949   esac
4950 done
4951 AC_SUBST(EXEC_PREFIX)
4952
4953 AC_SUBST(infodir)
4954 AC_SUBST(INFODIR_USER_DEFINED)
4955 INFODIR=$infodir
4956 while true; do
4957   case "$INFODIR" in
4958     *\$* ) eval "INFODIR=$INFODIR" ;;
4959     *) break ;;
4960   esac
4961 done
4962 AC_SUBST(INFODIR)
4963
4964 AC_SUBST(infopath)
4965 AC_SUBST(INFOPATH_USER_DEFINED)
4966 INFOPATH=$infopath
4967 while true; do
4968   case "$INFOPATH" in
4969     *\$* ) eval "INFOPATH=$INFOPATH" ;;
4970     *) break ;;
4971   esac
4972 done
4973 AC_SUBST(INFOPATH)
4974
4975 AC_SUBST(package_path)
4976 AC_SUBST(PACKAGE_PATH_USER_DEFINED)
4977 PACKAGE_PATH=$package_path
4978 while true; do
4979   case "$PACKAGE_PATH" in
4980     *\$* ) eval "PACKAGE_PATH=$PACKAGE_PATH" ;;
4981     *) break ;;
4982   esac
4983 done
4984 AC_SUBST(PACKAGE_PATH)
4985
4986 AC_SUBST(lispdir)
4987 AC_SUBST(LISPDIR_USER_DEFINED)
4988 LISPDIR=$lispdir
4989 while true; do
4990   case "$LISPDIR" in
4991     *\$* ) eval "LISPDIR=$LISPDIR" ;;
4992     *) break ;;
4993   esac
4994 done
4995 AC_SUBST(LISPDIR)
4996
4997 AC_SUBST(moduledir)
4998 AC_SUBST(MODULEDIR_USER_DEFINED)
4999 MODULEDIR=$moduledir
5000 while true; do
5001   case "$MODULEDIR" in
5002     *\$* ) eval "MODULEDIR=$MODULEDIR" ;;
5003     *) break ;;
5004   esac
5005 done
5006 AC_SUBST(MODULEDIR)
5007
5008 AC_SUBST(sitelispdir)
5009 AC_SUBST(SITELISPDIR_USER_DEFINED)
5010 SITELISPDIR=$sitelispdir
5011 while true; do
5012   case "$SITELISPDIR" in
5013     *\$* ) eval "SITELISPDIR=$SITELISPDIR" ;;
5014     *) break ;;
5015   esac
5016 done
5017 AC_SUBST(SITELISPDIR)
5018
5019 AC_SUBST(sitemoduledir)
5020 AC_SUBST(SITEMODULEDIR_USER_DEFINED)
5021 SITEMODULEDIR=$sitemoduledir
5022 while true; do
5023   case "$SITEMODULEDIR" in
5024     *\$* ) eval "SITEMODULEDIR=$SITEMODULEDIR" ;;
5025     *) break ;;
5026   esac
5027 done
5028 AC_SUBST(SITEMODULEDIR)
5029
5030 AC_SUBST(etcdir)
5031 AC_SUBST(ETCDIR_USER_DEFINED)
5032 ETCDIR=$etcdir
5033 while true; do
5034   case "$ETCDIR" in
5035     *\$* ) eval "ETCDIR=$ETCDIR" ;;
5036     *) break ;;
5037   esac
5038 done
5039 AC_SUBST(ETCDIR)
5040
5041 AC_SUBST(docdir)
5042 AC_SUBST(DOCDIR_USER_DEFINED)
5043 DOCDIR=$docdir
5044 while true; do
5045   case "$DOCDIR" in
5046     *\$* ) eval "DOCDIR=$DOCDIR" ;;
5047     *) break ;;
5048   esac
5049 done
5050 AC_SUBST(DOCDIR)
5051
5052 AC_SUBST(archlibdir)
5053 AC_SUBST(ARCHLIBDIR_USER_DEFINED)
5054 ARCHLIBDIR=$archlibdir
5055 while true; do
5056   case "$ARCHLIBDIR" in
5057     *\$* ) eval "ARCHLIBDIR=$ARCHLIBDIR" ;;
5058     *) break ;;
5059   esac
5060 done
5061 AC_SUBST(ARCHLIBDIR)
5062
5063 AC_SUBST(docdir)
5064 AC_SUBST(bitmapdir)
5065 AC_SUBST(extra_objs)
5066
5067 dnl The following flags combine all the information from:
5068 dnl - command line options (user always gets priority)
5069 dnl - user environment variables
5070 dnl - determined by configure
5071 dnl - the s&m header files (required for ellcc)
5072 AC_SUBST(machfile)
5073 AC_SUBST(opsysfile)
5074 AC_SUBST(c_switch_general)
5075 AC_SUBST(c_switch_window_system)
5076 AC_SUBST(c_switch_all)
5077 AC_SUBST(ld_switch_general)
5078 AC_SUBST(ld_switch_window_system)
5079 AC_SUBST(ld_switch_all)
5080 AC_SUBST(ld_libs_general)
5081 AC_SUBST(ld_libs_window_system)
5082 AC_SUBST(ld_libs_all)
5083 AC_SUBST(CFLAGS)
5084 AC_SUBST(CPPFLAGS)
5085 AC_SUBST(LDFLAGS)
5086 RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
5087 AC_SUBST(RECURSIVE_MAKE_ARGS)
5088
5089 AC_SUBST(native_sound_lib)
5090 AC_SUBST(sound_cflags)
5091 AC_SUBST(RANLIB)
5092 AC_SUBST(dynodump_arch)
5093
5094 dnl Preliminary support for using a different compiler for xemacs itself.
5095 dnl Useful for building XEmacs with a C++ or 64-bit compiler.
5096 : ${XEMACS_CC:=$CC}
5097 AC_SUBST(XEMACS_CC)
5098
5099 dnl The default is yes
5100 if test "$with_prefix" = "yes"; then
5101   AC_DEFINE(PREFIX_USER_DEFINED)
5102 fi
5103
5104 dnl The default is no
5105 if test "$with_site_lisp" = "no"; then
5106   AC_DEFINE(INHIBIT_SITE_LISP)
5107 fi
5108 dnl The default is yes
5109 if test "$with_site_modules" = "no"; then
5110   AC_DEFINE(INHIBIT_SITE_MODULES)
5111 fi
5112
5113 XE_SPACE(ac_configure_args, $ac_configure_args)
5114 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$configuration")
5115 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "$ac_configure_args")
5116
5117 dnl Following are deprecated
5118
5119 null_string=""
5120 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE,     $null_string)
5121 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, $null_string)
5122 AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,      $null_string)
5123 AC_DEFINE_UNQUOTED(LD_SWITCH_SITE,       $null_string)
5124 AC_DEFINE_UNQUOTED(C_SWITCH_SITE,        $null_string)
5125
5126 dnl Note: as a general rule, *only* define things here that are not
5127 dnl autodetected.  For things that are autodetected, define them
5128 dnl at the point where the autodetection occurs or would occur,
5129 dnl so that the user gets immediate feedback on the results of the
5130 dnl autodetection.
5131
5132 if   test "$GNU_MALLOC"         = "yes"; then AC_DEFINE(GNU_MALLOC)
5133 elif test "$with_system_malloc" = "yes"; then AC_DEFINE(USE_SYSTEM_MALLOC)
5134 elif test "$with_debug_malloc"  = "yes"; then AC_DEFINE(USE_DEBUG_MALLOC)
5135                                               AC_DEFINE(USE_SYSTEM_MALLOC)
5136 fi
5137 test "$with_i18n3"         = "yes" && AC_DEFINE(I18N3)
5138 test "$GCC"                = "yes" && AC_DEFINE(USE_GCC)
5139 test "$external_widget"    = "yes" && AC_DEFINE(EXTERNAL_WIDGET)
5140 test "$quick_build"        = "yes" && AC_DEFINE(QUICK_BUILD)
5141 test "$with_purify"        = "yes" && AC_DEFINE(PURIFY)
5142 test "$with_quantify"      = "yes" && AC_DEFINE(QUANTIFY)
5143 test "$with_pop"           = "yes" && AC_DEFINE(MAIL_USE_POP)
5144 test "$with_kerberos"      = "yes" && AC_DEFINE(KERBEROS)
5145 test "$with_hesiod"        = "yes" && AC_DEFINE(HESIOD)
5146 test "$use_union_type"     = "yes" && AC_DEFINE(USE_UNION_TYPE)
5147 test "$use_regex_malloc"   = "yes" && AC_DEFINE(REGEX_MALLOC)
5148 test "$pdump"              = "yes" && AC_DEFINE(PDUMP)
5149 test "$with_ipv6_cname"    = "yes" && AC_DEFINE(IPV6_CANONICALIZE)
5150
5151 dnl -------------------------------
5152 dnl Report on what we decided to do
5153 dnl -------------------------------
5154
5155 (
5156 dnl /etc/osversion is on SONY NEWS-OS
5157 if test -f /etc/osversion; then dnl SONY NEWS-OS
5158   echo "osversion: `cat /etc/osversion`"
5159 else
5160   echo "uname -a: `uname -a`"
5161 fi
5162 echo ""
5163 echo "$0 $quoted_arguments"
5164 ) > Installation
5165
5166 if test ! -z ${emacs_beta_version} ; then
5167   if test -z "${emacs_is_beta}" ; then
5168         xemacs_betaname=".${emacs_beta_version}"
5169   else
5170         xemacs_betaname="-b${emacs_beta_version}"
5171   fi
5172 else
5173   xemacs_betaname=""
5174 fi
5175
5176 dnl Start stdout redirection to '| tee -a Installation'
5177 (
5178 echo "
5179
5180 XEmacs ${emacs_major_version}.${emacs_minor_version}${xemacs_betaname} \"$xemacs_codename\" configured for \`$canonical'.
5181 "
5182 echo "
5183 Compilation / Installation:"
5184 echo "  Source code location:              $srcdir"
5185 echo "  Installation prefix:               $prefix"
5186 if test -n "$site_includes"; then
5187   echo "  Additional header files:           $site_includes"
5188 fi
5189 if test -n "$site_libraries"; then
5190   echo "  Additional libraries:              $site_libraries"
5191 fi
5192 if test -n "$site_prefixes"; then
5193   echo "  Additional prefixes:               $site_prefixes"
5194 fi
5195 if test -n "$runpath"; then
5196   echo "  Runtime library search path:       $runpath"
5197 fi
5198
5199 if test -n "$opsysfile"
5200 then echo "  Operating system description file: \`$opsysfile'"
5201 else echo "  Not using any operating system description file"
5202 fi
5203 if test -n "$machfile"
5204 then echo "  Machine description file:          \`$machfile'"
5205 else echo "  Not using any machine description file"
5206 fi
5207
5208 echo "  Compiler:                          $CC $CFLAGS"
5209 dnl Let's save some helpful-for-debugging info like compiler and libc versions..
5210 dnl First, see if it's gcc - the same check works everyplace...
5211 case "$CC" in
5212   gcc*) echo "  Compiler version:                  `$CC --version | sed 1q`"
5213         echo "  Compiler specs file:               `$CC -v 2>&1 | sed 's/.* \([[^ ]]\)/\1/' | sed 1q`"
5214         ;;
5215 dnl non-gcc machine-specific magic - contributions welcome
5216   *) case "$canonical" in
5217         *-*-aix*   ) 
5218           dnl Yes, it's this ugly for AIX...
5219           realcc=`which $CC`
5220           dnl Might be a symlink created by replaceCset command
5221           if test -L $realcc ; then
5222             ccdir=`dirname $realcc`
5223             ccprog=`/bin/ls -l $realcc | sed 's/.* \([[^ ]]\)/\1/'`
5224             dnl This doesn't handle ../../xlc type stuff, but I've not seen one...
5225             case $ccprog in
5226                 */*) realcc=$ccprog;;
5227                 *) realcc=$ccdir/$ccprog;;
5228             esac
5229           fi
5230           lpp=`lslpp -wqc $realcc | cut -f2 -d:`
5231           if test ! -z "$lpp" ; then
5232             lppstr=`lslpp -Lqc $lpp`
5233             lpplev=`echo "$lppstr" | cut -f3 -d:`
5234             lppdesc=`echo "$lppstr" | cut -f8 -d:`
5235           fi
5236           if test ! -z "$lpplev" ; then
5237             echo "  Compiler version:                  $lpp $lpplev - $lppdesc"
5238           else
5239             echo "  Compiler version:                  (unknown version)"
5240           fi
5241         ;;
5242         
5243         *-*-solaris*)
5244           ccvers=`$CC -V 2>&1 | sed 1q`
5245           if test ! -z "$ccvers" ; then
5246             echo "  Compiler version:                  $ccvers"
5247           fi
5248         ;;
5249
5250         alpha*-dec-osf*)
5251           ccvers=`$CC -V | tr '\n' ' '`
5252           if test ! -z "$ccvers" ; then
5253             echo "  Compiler version:                  $ccvers"
5254           fi
5255         ;;
5256
5257         mips-sgi-irix*)
5258           ccvers=`$CC -version`
5259           if test ! -z "$ccvers" ; then
5260             echo "  Compiler version:                  $ccvers"
5261           fi
5262         ;;
5263
5264         dnl Intel C++ Compiler on Linux
5265         i[[3-9]]86-pc-linux)
5266           ccvers=`$CC -V 2>&1 | sed -n 's@^Intel.*Version @@'p`
5267           if test ! -z "$ccvers" ; then
5268             echo "  Compiler version:                  $ccvers"
5269           fi
5270         ;;
5271           
5272         *) echo "  Compiler version:                  $CC on $canonical";;
5273   esac
5274 esac
5275
5276 echo "  Relocating allocator for buffers:  $rel_alloc"
5277 echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
5278 case "$ld_switch_site" in
5279   *nocombreloc*) echo "  Linking with \`-z nocombreloc'.
5280     - Consider configuring with --pdump." ;;
5281 esac
5282
5283 dnl Now get the libc version - contributions welcome
5284 case "$canonical" in
5285         *-*-linux*) 
5286           if test -f /etc/redhat-release ; then
5287             echo "  libc:                              `rpm -q glibc`";
5288 dnl need a Debian and Suse check here...
5289           else
5290             echo "Need to guess glibc1/2/etc here";
5291           fi
5292         ;;
5293
5294         *-*-aix*) 
5295           echo "  libc:                              bos.rte.libc `lslpp -Lqc bos.rte.libc | cut -f3 -d:`" 
5296         ;;
5297
5298         *-*-solaris*)
5299           libc=`pkginfo -l SUNWcsl | grep VERSION: | awk '{print $2}'`
5300           echo "  libc:                              SUNWcsl $libc"
5301
5302         ;;
5303
5304         mips-sgi-irix*)
5305           echo "  IRIX version:                      `uname -sRm`'"
5306         ;;
5307           
5308
5309         alpha*-dec-osf*)
5310         dnl Another ugly case
5311           (cd /usr/.smdb.;
5312                 libc=` grep -h libc.so *.inv | awk '$9 == "f" {print $12}' | tr '\n' ','`
5313                 echo "  libc:                              $libc"
5314                 
5315           )
5316         ;;
5317
5318         *) echo "  libc:                              system-provided libc on $canonical" ;;
5319 esac
5320
5321
5322 echo "
5323 Window System:"
5324 if test "$with_msw" = "yes"; then
5325   echo "  Compiling in support for the Microsoft window system."
5326 fi
5327 if test "$with_x11" = "yes"; then
5328   echo "  Compiling in support for the X window system:"
5329   echo "    - X Windows headers location:                 $x_includes"
5330   echo "    - X Windows libraries location:               $x_libraries"
5331   if test "$with_xauth" != yes; then
5332     echo "    - Xau (X authority) not available."
5333   fi
5334   if test "$with_xmu" != yes; then
5335     echo "    - Xmu library not available; substituting equivalent routines."
5336   fi
5337   if test "$with_wmcommand" != no; then
5338     echo "    - Handling WM_COMMAND properly."
5339   fi
5340 fi
5341 if test "$need_motif" = "yes" ; then
5342   echo "  Compiling in support for Motif."
5343   if test "$have_lesstif" = "yes"; then
5344     echo "    - Using LessTif implementation."
5345   fi
5346   echo "  *WARNING*  Many versions of Motif are buggy, requiring workarounds."
5347   echo "             You are likely to experience slow redisplay."
5348   echo "             You may need to install vendor patches to Motif."
5349   echo "             See PROBLEMS for more information."
5350 fi
5351 if test "$need_athena" = "yes"; then
5352   echo "  Compiling in support for the Athena widget set:"
5353   echo "    - Athena headers location:                    $athena_h_path"
5354   echo "    - Athena library to link:                     $athena_lib"
5355 fi
5356 case "$with_menubars" in
5357   gtk   ) echo "  Using GTK menubars."   ;;
5358   lucid ) echo "  Using Lucid menubars." ;;
5359   motif ) echo "  Using Motif menubars."
5360           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
5361           echo "             We recommend using the Lucid menubar instead."
5362           echo "             Re-run configure with --with-menubars='lucid'." ;;
5363     msw ) echo "  Using MS-Windows menubars." ;;
5364 esac
5365 case "$with_scrollbars" in
5366   gtk    ) echo "  Using GTK scrollbars."        ;;
5367   lucid  ) echo "  Using Lucid scrollbars."      ;;
5368   motif  ) echo "  Using Motif scrollbars."      ;;
5369   athena ) echo "  Using Athena scrollbars."     ;;
5370      msw ) echo "  Using MS-Windows scrollbars." ;;
5371 esac
5372 case "$with_dialogs" in
5373   gtk    ) echo "  Using GTK dialog boxes." ;;
5374   motif  ) echo "  Using Motif dialog boxes."
5375            if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
5376              echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
5377              echo "             We recommend using the Athena dialog boxes instead."
5378              echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
5379              echo "             Read the PROBLEMS file for more information."
5380            fi; fi ;;
5381   athena ) echo "  Using Athena dialog boxes."     ;;
5382      msw ) echo "  Using MS-Windows dialog boxes." ;;
5383 esac
5384 case "$with_widgets" in
5385   gtk    ) echo "  Using GTK native widgets."        ;;
5386   motif  ) echo "  Using Motif native widgets."      ;;
5387   athena ) echo "  Using Athena native widgets."     ;;
5388      msw ) echo "  Using MS-Windows native widgets." ;;
5389 esac
5390 if test "$with_dragndrop" = yes; then
5391   echo "  Compiling in support for Drag'n'Drop (EXPERIMENTAL)."
5392   echo "    -  Drag'n'Drop prototype:                             $dragndrop_proto."
5393 fi
5394
5395 echo "
5396 TTY:"
5397 test "$with_ncurses" = yes && echo "  Compiling in support for ncurses."
5398 test "$with_gpm" = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
5399
5400 echo "
5401 Images:"
5402 test "$with_gif" = yes && echo "  Compiling in support for GIF  images (builtin)."
5403 if test "$with_xpm" = yes; then
5404   echo "  Compiling in support for XPM  images."
5405 elif test "$with_x11" = yes; then
5406   echo "  WARNING: -----------------------------------------------------------"
5407   echo "  WARNING: Compiling without XPM image support."
5408   if test "$xpm_problem" != ""; then
5409     echo "  Reason: $xpm_problem"
5410   fi
5411   echo "  WARNING: You should strongly consider installing XPM."
5412   echo "  WARNING: Otherwise toolbars and other graphics will look suboptimal."
5413   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
5414   echo "  WARNING: -----------------------------------------------------------"
5415 fi
5416 if test "$with_png" = yes; then
5417   echo "  Compiling in support for PNG  images."
5418 elif test "$window_system" != "none"; then
5419   echo "  WARNING: -----------------------------------------------------------"
5420   echo "  WARNING: Compiling without PNG image support."
5421   if test "$png_problem" != ""; then
5422     echo "  Reason: $png_problem"
5423   fi
5424   echo "  WARNING: You should strongly consider installing the PNG libraries."
5425   echo "  WARNING: Otherwise certain images and glyphs may not display."
5426   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
5427   echo "  WARNING: -----------------------------------------------------------"
5428 fi
5429 test "$with_jpeg" = yes && echo "  Compiling in support for JPEG images."
5430 test "$with_tiff" = yes && echo "  Compiling in support for TIFF images."
5431 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
5432
5433 echo "
5434 Sound:"
5435 test "$with_native_sound" = yes && echo "  Compiling in support for sound (native)."
5436 test "$with_nas_sound" = yes && echo "  Compiling in support for NAS (network audio system)."
5437 test "$old_nas" = yes && echo "    - NAS library lacks error trapping; will play synchronously."
5438 test "$with_esd_sound" = yes && echo "  Compiling in support for ESD (Enlightened Sound Daemon)."
5439
5440 echo "
5441 Databases:"
5442 test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley database."
5443 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
5444 test "$with_database_gdbm"   = yes && echo "  Compiling in support for GNU DBM."
5445 test "$with_ldap" = yes && echo "  Compiling in support for LDAP."
5446 if test "$with_postgresql" = yes; then
5447   echo "  Compiling in support for PostgreSQL."
5448   echo "    - Using PostgreSQL header file:  $libpq_fe_h_file"
5449   test "$with_postgresqlv7" = yes && echo "    - Using PostgreSQL V7 bindings."
5450 fi
5451 if test "$with_concord" = yes; then
5452   echo "  Compiling in support for CONCORD."
5453 fi
5454
5455 echo "
5456 Multiscriptization / Multilingualization / Internationalization:"
5457 test "$with_mule" = yes && echo "  Compiling in support for Mule (multi-lingual Emacs)."
5458 test "$with_chise" = yes && echo "  Using CHISE (CHaracter Information Service Environment) support."
5459 test "$with_utf_2000" = yes && echo "  Using UTF-2000 (UTF-8) buffer/string representation."
5460 test "$with_text_coding" = yes && echo "  Compiling in support for text coding."
5461 test "$with_file_coding" = yes && echo "  Compiling in support for file coding."
5462 test "$with_xim" != no && echo "  Compiling in support for XIM (X11R5+ I18N input method)."
5463 test "$with_xim" = motif && echo "    - Using Motif to provide XIM support."
5464 test "$with_xim" = xlib && echo "    - Using raw Xlib to provide XIM support."
5465 test "$with_xfs" = yes && echo "    - Using XFontSet to provide bilingual menubar."
5466 test "$with_canna" = yes && echo "  Compiling in support for Canna on Mule."
5467 if test "$with_wnn" = yes; then
5468   echo "  Compiling in support for the WNN input method on Mule."
5469   test "$with_wnn6" = yes && echo "    - Using WNN version 6."
5470 fi
5471 test "$with_i18n3" = yes && echo "  Compiling in support for I18N level 3 (doesn't currently work)."
5472
5473 echo "
5474 Mail:"
5475 test "$with_pop" = yes && echo "  Compiling in support for POP mail retrieval."
5476 test "$with_kerberos" = yes && echo "  Compiling in support for Kerberos POP authentication."
5477 test "$with_hesiod" = yes && echo "  Compiling in support for Hesiod POP server access."
5478 test -n "$mail_locking" && echo "  Compiling in support for \"$mail_locking\" mail spool file locking method."
5479
5480 echo "
5481 Other Features:"
5482 test "$with_ipv6_cname" = no && echo "  Inhibiting IPv6 canonicalization at startup."
5483 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
5484 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
5485 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
5486 test "$with_dnet" = yes && echo "  Compiling in support for DNET."
5487 test "$with_modules" = "yes" && echo "  Compiling in support for dynamic shared object modules."
5488 if test "$use_union_type" = yes; then
5489   echo "  WARNING: ---------------------------------------------------------"
5490   echo "  Using the union type for Lisp_Objects."
5491   echo "  Union type has been implicated in hard-to-debug runtime crashes."
5492   echo "  Do NOT use this build of XEmacs for ordinary work.  See PROBLEMS."
5493   echo "  WARNING: ---------------------------------------------------------"
5494 fi
5495 if test "$use_regex_malloc" = no; then
5496   echo "  WARNING: -----------------------------------------------------------"
5497   echo "  Using alloca to allocate the failure stack."
5498   echo "  It may be impossible to detect stack exhaustion, and you will crash."
5499   echo "  Do NOT use this build of XEmacs for ordinary work."
5500   echo "  WARNING: -----------------------------------------------------------"
5501 fi
5502 test "$pdump" = yes && echo "  Using the new portable dumper."
5503 test "$debug" = yes && echo "  Compiling in support for extra debugging code."
5504 test "$usage_tracking" = yes && echo "  Compiling in support for active usage tracking (Sun internal)."
5505 if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc $error_check_glyphs" \
5506   != "no no no no no no"; then
5507   echo "  WARNING: ---------------------------------------------------------"
5508   echo "  WARNING: Compiling in support for runtime error checking."
5509   echo "  WARNING: XEmacs will run noticeably more slowly as a result."
5510   echo "  WARNING: Error checking is on by default for XEmacs beta releases."
5511   echo "  WARNING: ---------------------------------------------------------"
5512 fi
5513 echo ""
5514 ) | tee -a Installation
5515 dnl echo "The above configure report is appended to \"Installation\" file."
5516 echo ""
5517
5518 dnl -----------------------------------
5519 dnl Now generate config.h and Makefiles
5520 dnl -----------------------------------
5521 dnl This has to be called in order for this variable to get into config.status
5522 AC_SUBST(internal_makefile_list)
5523 # Remove any trailing slashes in these variables.
5524 test -n "$prefix" &&
5525   prefix=`echo '' "$prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
5526 test -n "$exec_prefix" &&
5527   exec_prefix=`echo '' "$exec_prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
5528
5529 dnl Build Makefile.in's from Makefile.in.in's
5530 dnl except ./Makefile from $srcdir/Makefile.in
5531
5532 for file in $internal_makefile_list; do
5533   test "$file" = src/Makefile.in && \
5534     file="src/Makefile.in:src/Makefile.in.in:src/depend"
5535   XE_APPEND($file, ac_output_files)
5536 done
5537 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
5538 test "$with_modules" = "yes" && XE_APPEND(lib-src/ellcc.h, ac_output_files)
5539
5540 AC_OUTPUT($ac_output_files,
5541 [for dir in . $MAKE_SUBDIR; do
5542   (
5543     cd $dir
5544     rm -f junk.c
5545     < Makefile.in \
5546       sed -e '/^# Generated/d' \
5547           -e 's%/\*\*/#.*%%' \
5548           -e 's/^ *# */#/' \
5549 dnl Delete Makefile.in.in comment lines
5550           -e '/^##/d' \
5551 dnl Pass through CPP directives unchanged
5552           -e '/^#/ {
5553 p
5554 d
5555 }'        \
5556 dnl Quote other lines to protect from CPP substitution
5557           -e '/./ {
5558 s/\([[\"]]\)/\\\1/g
5559 s/^/"/
5560 s/$/"/
5561 }'  > junk.c;
5562
5563 dnl Create a GNUmakefile and Makefile from Makefile.in.
5564
5565 changequote(<<,>>)dnl
5566 dnl CPP_MAKEFILE(CPPFLAGS,filename)
5567 define(<<CPP_MAKEFILE>>,
5568 echo creating $dir/<<$2>>
5569 $CPP -I. -I${top_srcdir}/src <<$1>> junk.c \
5570 dnl Delete line directives inserted by $CPP
5571   | sed -e 's/^\#.*//'          \
5572 dnl Delete spurious blanks inserted by $CPP
5573         -e 's/^[ TAB][ TAB]*$//'\
5574         -e 's/^ /TAB/'          \
5575 dnl Delete blank lines
5576         -e '/^[ \f]*$/d' \
5577 dnl Restore lines quoted above to original contents.
5578         -e '/^\"/ {
5579         s/\\\([\"]\)/\1/g
5580         s/^[ TAB]*\"//
5581         s/\"[ TAB]*$//
5582 }' > Makefile.new
5583     chmod 444 Makefile.new
5584     mv -f Makefile.new <<$2>>
5585 )dnl CPP_MAKEFILE
5586
5587     CPP_MAKEFILE(,Makefile)
5588     CPP_MAKEFILE(-DUSE_GNU_MAKE,GNUmakefile)
5589 changequote([,])dnl
5590     rm -f junk.c
5591   )
5592 done
5593
5594 dnl Append AC_DEFINE information to lib-src/config.values
5595 dnl (AC_SUBST information is already there (see config.values.sh).
5596 sed < config.status >> lib-src/config.values \
5597   -e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \
5598   -e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \
5599   -e 's/^\([[^ ]]*\) $/\1 ""/' \
5600   -e 's/ 1$/ t/'
5601
5602 ],
5603 [CPP="$CPP"
5604  top_srcdir="$srcdir"
5605  MAKE_SUBDIR="$MAKE_SUBDIR"
5606 ])dnl