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