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