Sync with r21-2-33 and r21-2-33-utf-2000.
[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, 93, 94, 95, 96 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) 1998, 1999 J. Kean Johnston.
11
12 ### Don't edit this script!
13 ### This script was automatically generated by the `autoconf' program
14 ### from the file `./configure.in'.
15 ### To rebuild it, execute the command
16 ###     autoconf
17 ### in the this directory.  You must have autoconf version 2.13 or later.
18
19 ### This file is part of XEmacs.
20
21 ### XEmacs is free software; you can redistribute it and/or modify it
22 ### under the terms of the GNU General Public License as published by
23 ### the Free Software Foundation; either version 2, or (at your
24 ### option) any later version.
25
26 ### XEmacs is distributed in the hope that it will be useful, but
27 ### WITHOUT ANY WARRANTY; without even the implied warranty of
28 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
29 ### General Public License for more details.
30
31 ### You should have received a copy of the GNU General Public License
32 ### along with XEmacs; see the file COPYING.  If not, write to the Free
33 ### Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
34 ### 02111-1307, USA.
35
36 ### For usage, run `./configure --help'
37 ### For more detailed information on building and installing XEmacs,
38 ### read the file `INSTALL'.
39 ###
40 ### If configure succeeds, it leaves its status in config.status.
41 ### A log of configuration tests can be found in config.log.
42 ### If configure fails after disturbing the status quo,
43 ###     config.status is removed.
44 ])
45
46 dnl Since XEmacs has configuration requirements that autoconf cannot
47 dnl meet, this file is an unholy marriage of custom-baked
48 dnl configuration code and autoconf macros.
49
50 dnl We use the m4 quoting characters [ ] (as established by the
51 dnl autoconf system), so quote them like this: [[foo]]
52
53 AC_PREREQ(2.13)dnl
54 dnl Redefine some standard autoconf macros
55 dnl here is how XEmacs is different:
56 dnl - no cache file
57 dnl - non-standard options
58 dnl - suport for extra-verbosity
59 dnl - ordinary libs are handled separately from X libs (might be a mistake)
60 dnl - various random kludges (e.g. -with-dnet=no
61
62 dnl PRINT_VAR(var var ...)  prints values of shell variables
63 define([PRINT_VAR],[for var in patsubst([$1],[[
64 ]+],[ ]); do eval "echo \"$var = '\$$var'\""; done])
65
66 dnl Disable cache files:
67 dnl This is controversial, but I am convinced this is the right way to go,
68 dnl at least by default.  Otherwise there are too many surprises.
69 define([AC_CACHE_LOAD], )dnl
70 define([AC_CACHE_SAVE], )dnl
71 define([AC_CACHE_VAL], [
72 $2
73 ])dnl
74
75 dnl Redefine AC_TRY_RUN_NATIVE to not throw away stderr while running
76 dnl AC_TRY_RUN_NATIVE(PROGRAM, [ACTION-IF-TRUE [, ACTION-IF-FALSE]])
77 define([AC_TRY_RUN_NATIVE],
78 [cat > conftest.$ac_ext <<EOF
79 [#]line __oline__ "configure"
80 #include "confdefs.h"
81 [$1]
82 EOF
83 if AC_TRY_EVAL(ac_link) && test -s conftest && (./conftest; exit $?) 2>&AC_FD_CC
84 then
85 dnl Do not remove the temporary files here, so they can be examined.
86   ifelse([$2], , :, [$2])
87 else
88   conftest_rc="$?"
89   echo "configure: failed program was:" >&AC_FD_CC
90   cat conftest.$ac_ext >&AC_FD_CC
91 ifelse([$3], , , [  rm -fr conftest*
92   $3
93 ])dnl
94 fi
95 rm -fr conftest*])dnl AC_TRY_RUN_NATIVE
96
97
98 dnl Avoid spurious cross-compiling warnings from AC_TRY_RUN
99 dnl XEmacs is unlikely to ever cross-compile
100 define([AC_TRY_RUN],[AC_TRY_RUN_NATIVE([$1], [$2], [$3])])dnl
101
102 dnl Redefine AC_DEFINE* to provide more output if extra_verbose
103 dnl Set VARIABLE to VALUE, verbatim, or 1.
104 dnl AC_DEFINE(VARIABLE [, VALUE])
105 define([AC_DEFINE],
106 [{ test "$extra_verbose" = "yes" && cat << \EOF
107     Defining $1[]ifelse($#, 2, [ = $2],)
108 EOF
109 cat >> confdefs.h <<\EOF
110 [#define] $1 ifelse($#, 2, [$2], 1)
111 EOF
112 }
113 ])dnl AC_DEFINE
114
115 define([AC_DEFINE_UNQUOTED],
116 [{ test "$extra_verbose" = "yes" && cat << EOF
117     Defining $1[]ifelse($#, 2, [ = $2],)
118 EOF
119 cat >> confdefs.h <<EOF
120 [#define] $1 ifelse($#, 2, [$2], 1)
121 EOF
122 }
123 ])dnl AC_DEFINE_UNQUOTED
124
125 dnl redefine AC_CHECK_LIB in accordance with our own value of ac_link
126 dnl Add in extra kludgy check to support with_dnet=no
127 dnl Add in extra LDFLAGS arg, which PRECEDE libs
128 dnl Support --with-dnet=no
129
130 dnl AC_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
131 dnl             [, OTHER-LIBRARIES] [, LDFLAGS]]]])
132 define([AC_CHECK_LIB],
133 [ifelse([$1],dnet, [if test "$with_dnet" = "no" ; then
134 ac_cv_lib_dnet_dnet_ntoa=no
135 ifelse([$4], , , [$4]
136 )dnl
137 else
138 ])]
139 AC_CHECK_LIB_ORIG_HACKED([$1],[$2],[$3],[$4],[$5], [$6])
140 [ifelse([$1],dnet,[fi
141 ])]dnl
142 )dnl AC_CHECK_LIB
143
144 define([AC_CHECK_LIB_ORIG_HACKED],
145 [ifelse([$5],,AC_MSG_CHECKING([for $2 in -l$1]),
146 xe_msg_checking="for [$2] in -l[$1]"
147 test -n "[$5]" && xe_msg_checking="$xe_msg_checking using extra libs [$5]"
148 AC_MSG_CHECKING("$xe_msg_checking"))
149 dnl Use a cache variable name containing both the library and function name,
150 dnl because the test really is for library $1 defining function $2, not
151 dnl just for library $1.  Separate tests with the same $1 and different $2s
152 dnl may have different results.
153 ac_lib_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
154 AC_CACHE_VAL(ac_cv_lib_$ac_lib_var,
155 [xe_check_libs="$6 -l$1 $5"
156 AC_TRY_LINK(dnl
157 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
158 [/* Override any gcc2 internal prototype to avoid an error.  */
159 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
160 extern "C"
161 #endif
162 ])dnl
163 [/* We use char because int might match the return type of a gcc2
164     builtin and then its argument prototype would still apply.  */
165 char $2();
166 ]),
167             [$2()],
168             eval "ac_cv_lib_$ac_lib_var=yes",
169             eval "ac_cv_lib_$ac_lib_var=no")
170 xe_check_libs=""
171 ])dnl
172 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
173   AC_MSG_RESULT(yes)
174   ifelse([$3], ,
175 [changequote(, )dnl
176   ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
177     -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
178 changequote([, ])dnl
179   AC_DEFINE_UNQUOTED($ac_tr_lib)
180   XE_PREPEND([-l$1], LIBS)
181 ], [$3])
182 else
183   AC_MSG_RESULT(no)
184 ifelse([$4], , , [$4
185 ])dnl
186 fi
187 ])dnl AC_CHECK_LIB_ORIG_HACKED
188
189
190 dnl AC_LANG_C()
191 define([AC_LANG_C],
192 [define([AC_LANG], [C])dnl
193 ac_ext=c
194 dnl CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
195 dnl ac_cpp='$CPP $CPPFLAGS'
196 dnl ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&AC_FD_CC'
197 dnl ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC'
198 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
199 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
200 xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
201 ac_cpp='$CPP '"$xe_cppflags"
202 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&AC_FD_CC'
203 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&AC_FD_CC'
204 cross_compiling=no
205 ]) dnl AC_LANG_C
206
207 dnl The construct foo=`echo $w1 $w2 $w3` fails on some systems if $w1 = -e or -n
208 dnl So we use the following instead.
209 dnl XE_SPACE(var, words)
210 define([XE_SPACE],[
211 T=""
212 for W in $2; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
213 $1="$T"
214 ])dnl XE_SPACE
215
216 dnl XE_ADD_OBJS(foo.o ...)
217 define([XE_ADD_OBJS],
218 [extra_objs="$extra_objs [$1]" && dnl
219  if test "$extra_verbose" = "yes"; then
220    echo "    xemacs will be linked with \"[$1]\""
221  fi])dnl XE_ADD_OBJS
222
223 dnl XE_APPEND(value, varname)
224 define([XE_APPEND],
225 [[$2]="$[$2] [$1]" && dnl
226  if test "$extra_verbose" = "yes"; then echo "    Appending \"[$1]\" to \$[$2]"; fi])
227
228 dnl XE_PREPEND(value, varname)
229 define([XE_PREPEND],
230 [[$2]="[$1] $[$2]" && dnl
231  if test "$extra_verbose" = "yes"; then echo "    Prepending \"[$1]\" to \$[$2]"; fi])
232
233 dnl XE_DIE(message)
234 define([XE_DIE], [{ echo "Error:" $1 >&2; exit 1; }])
235
236 dnl XE_STRIP_4TH_COMPONENT(var)
237 dnl Changes i986-pc-linux-gnu to i986-pc-linux, as God (not RMS) intended.
238 define([XE_STRIP_4TH_COMPONENT],
239 [$1=`echo "$$1" | sed '[s/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/]'`])
240
241 dnl Initialize some variables set by options.
242 dnl The variables have the same names as the options, with
243 dnl dashes changed to underlines.
244
245 define([AC_INIT_PARSE_ARGS],[
246
247 dnl Get sane consistent behavior from various shells
248 dnl Avoid losing with weird user CDPATHs
249
250 if test -n "$ZSH_VERSION"; then
251   dnl zsh's Bourne shell emulation options
252   setopt NO_BAD_PATTERN NO_BANG_HIST NO_BG_NICE NO_EQUALS NO_FUNCTION_ARGZERO
253   setopt GLOB_SUBST NO_HUP INTERACTIVE_COMMENTS KSH_ARRAYS NO_MULTIOS NO_NOMATCH
254   setopt RM_STAR_SILENT POSIX_BUILTINS SH_FILE_EXPANSION SH_GLOB SH_OPTION_LETTERS
255   setopt SH_WORD_SPLIT BSD_ECHO IGNORE_BRACES
256   dnl zsh-3.1-beta drops core on the following
257   dnl unset CDPATH
258   if test -n "$CDPATH"; then CDPATH="."; export CDPATH; fi
259 elif test -n "$BASH_VERSION"; then
260   dnl Use Posix mode with bash
261   set -o posix
262   unset CDPATH
263 else
264   if test -n "$CDPATH"; then CDPATH="."; export CDPATH; fi
265 fi
266
267 dnl Initialize some variables set by options.
268 dnl The variables have the same names as the options, with
269 dnl dashes changed to underlines.
270 exec_prefix=NONE
271 host=NONE
272 no_create=
273 nonopt=NONE
274 no_recursion=
275 prefix=NONE
276 program_prefix=NONE
277 program_suffix=NONE
278 program_transform_name=s,x,x,
279 silent=
280 site=
281 srcdir=
282 target=NONE
283 verbose=
284 x_includes=NONE
285 x_libraries=NONE
286
287 dnl Installation directory options.
288 dnl These are left unexpanded so users can "make install exec_prefix=/foo"
289 dnl and all the variables that are supposed to be based on exec_prefix
290 dnl by default will actually change.
291 dnl Use braces instead of parens because sh, perl, etc. also accept them.
292 dnl If you change these, you need to synchronize with the settings of the
293 dnl various ..._USER_DEFINED variables further down.
294 bindir='${exec_prefix}/bin'
295 sbindir='${exec_prefix}/sbin'
296 libexecdir='${exec_prefix}/libexec'
297 datadir='${prefix}/share'
298 sysconfdir='${prefix}/etc'
299 sharedstatedir='${prefix}/com'
300 localstatedir='${prefix}/var'
301 libdir='${{exec_prefix}}/lib'
302 includedir='${prefix}/include'
303 oldincludedir='/usr/include'
304 infodir='${prefix}/info'
305 mandir='${prefix}/man'
306
307 dnl Initialize some other variables.
308 subdirs=
309 MFLAGS= MAKEFLAGS=
310 SHELL=${CONFIG_SHELL-/bin/sh}
311 dnl Maximum number of lines to put in a shell here document.
312 ac_max_here_lines=12
313 ])dnl AC_INIT_PARSE_ARGS
314
315 AC_INIT(src/lisp.h)dnl
316 AC_CONFIG_HEADER(src/config.h lwlib/config.h)
317 dnl Remove any more than one leading "." element from the path name.
318 dnl If we do not remove them, then another "./" will be prepended to
319 dnl the file name each time we use config.status, and the program name
320 dnl will get larger and larger.  This would not be a problem, except
321 dnl that since progname gets recorded in all the Makefiles this script
322 dnl produces, move-if-change thinks they're different when they're
323 dnl not.
324 dnl
325 dnl It would be nice if we could put the ./ in a \( \) group and then
326 dnl apply the * operator to that, so we remove as many leading './././'s
327 dnl as are present, but some seds (like Ultrix's sed) don't allow you to
328 dnl apply * to a \( \) group.  Bleah.
329 progname="`echo $0 | sed 's:^\./\./:\./:'`"
330
331 dnl -----------------------------
332 dnl Establish some default values
333 dnl -----------------------------
334
335 XE_APPEND(lib-src, MAKE_SUBDIR)
336 XE_APPEND(lib-src, INSTALL_ARCH_DEP_SUBDIR)
337
338 prefix='/usr/local'
339 exec_prefix='${prefix}'
340 bindir='${exec_prefix}/bin'
341 dnl FSF 19.29 changes to:
342 dnl datadir='${prefix}/share'
343 dnl sharedstatedir='${prefix}/com'
344 dnl libexecdir='${exec_prefix}/libexec'
345 datadir='${prefix}/lib'
346 statedir='${prefix}/lib'
347 libdir='${exec_prefix}/lib'
348 mandir='${prefix}/man/man1'
349 inststaticdir='${PROGNAME}'
350 instvardir='${PROGNAME}-${version}'
351 infodir='${datadir}/${instvardir}/info'
352 infopath=''
353 install_pp=''
354 lispdir='${datadir}/${instvardir}/lisp'
355 moduledir='${datadir}/${instvardir}/${configuration}/modules'
356 sitelispdir='${datadir}/${inststaticdir}/site-lisp'
357 sitemoduledir='${datadir}/${inststaticdir}/site-modules'
358 pkgdir='${datadir}/${instvardir}/lisp'
359 package_path=''
360 etcdir='${datadir}/${instvardir}/etc'
361 lockdir='${statedir}/${inststaticdir}/lock'
362 archlibdir='${datadir}/${instvardir}/${configuration}'
363 docdir='${archlibdir}'
364 with_prefix='yes'
365 with_site_lisp='no'
366 with_site_modules='yes'
367 with_menubars=''
368 with_scrollbars=''
369 with_widgets=''
370 with_dialogs=''
371 with_file_coding=''
372 cpp='' cppflags='' libs='' ldflags=''
373 dynamic=''
374 with_x11=''
375 with_msw=''
376 rel_alloc='default'
377 with_system_malloc='default'
378 with_dlmalloc='default'
379 native_sound_lib=''
380 dnl use_assertions should be 'yes' by default.  Too many people in this
381 dnl world have core dumps turned off by default or \"cannot find where the
382 dnl core file went\".  At least we should get some useful output ...
383 use_assertions="yes"
384 dnl the following is set to yes or no later.
385 with_toolbars=""
386 with_tty=""
387 use_union_type="no"
388 with_dnet=""
389 pdump="no"
390 dnl dragndrop is still experimental.  When it is stable, comment out the following line:
391 with_dragndrop="no"
392
393 dnl ------------------
394 dnl Options Processing
395 dnl ------------------
396
397 define([USAGE_ERROR],
398 [(echo "$progname: Usage error:"
399 echo " " $1
400 echo "  Use \`$progname --help' to show usage.") >&2 && exit 1])
401
402 dnl Record all the arguments, so we can save them in config.status.
403 arguments="$@"
404
405 dnl Shell Magic: Quote the quoted arguments in ARGUMENTS.  At a later date,
406 dnl in order to get the arguments back in $@, we have to do an
407 dnl 'eval set x "$quoted_arguments"; shift'
408 dnl # We use sed to turn embedded ' into '"'"'.  I truly hate sh quoting.
409 quoted_sed_magic=s/"'"/"'"'"'"'"'"'"'"/g
410 quoted_arguments=
411 for i in "$@"; do
412    case "$i" in
413    -no-create | --no-create | --no-creat | --no-crea | --no-cre \
414    | --no-cr | --no-c) ;;
415    -no-recursion | --no-recursion | --no-recursio | --no-recursi \
416    | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
417    *)
418    quoted_i="`echo '' $i | sed -e 's:^ ::' -e $quoted_sed_magic`"
419    quoted_arguments="$quoted_arguments '$quoted_i'" ;;
420    esac
421 done
422
423 dnl Do not use shift -- that destroys the argument list, which autoconf needs
424 dnl to produce config.status.  It turns out that "set - $arguments" does not
425 dnl work portably.
426 dnl However, it also turns out that many shells cannot expand ${10} at all.
427 dnl So using an index variable does not work either.  It is possible to use
428 dnl some shell magic to make 'set x "$arguments"; shift' work portably.
429 while test $# != 0; do
430   arg="$1"; shift
431   case "$arg" in
432     --no-create|--no-recursion) ;;
433     dnl Anything starting with a hyphen we assume is an option.
434     -* )
435       dnl Separate the switch name from the value it is being given.
436       case "$arg" in
437         -*=*)
438           opt=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*\([[^=]]*\)=.*$:\1:'`
439           val=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*[[^=]]*=\(.*\)$:\1:'`
440           valomitted=no
441         ;;
442            dnl special case these strings since echo may silently eat them:
443            dnl --help ) opt=help val=yes valomitted=yes ;;
444            dnl --version ) opt=version val=yes valomitted=yes ;;
445            dnl -e ) opt=e val=yes valomitted=yes ;;
446            dnl -E ) opt=E val=yes valomitted=yes ;;
447            dnl -n ) opt=n val=yes valomitted=yes ;;
448         -*)
449            dnl If FOO is a boolean argument, --FOO is equivalent to
450            dnl --FOO=yes.  Otherwise, the value comes from the next
451            dnl argument - see below.
452           opt=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*\(.*\)$:\1:'`
453           val="yes" valomitted=yes
454         ;;
455       esac
456
457       dnl translate "-" in option string to "_"
458       optname="$opt"
459       opt="`echo '' $opt | sed -e 's:^ ::' | tr - _`"
460
461       dnl Support --without-FOO as a synonym for --with-FOO=no
462       case "${valomitted}-${opt}" in yes-without_* )
463         opt=`echo $opt | sed 's/without/with/'`
464         valomitted="no" val="no" ;;
465       esac
466
467       dnl Process the option.
468       case "$opt" in
469
470       dnl Process (many) boolean options
471         with_site_lisp  | \
472         with_prefix     | \
473         with_site_modules | \
474         with_x          | \
475         with_x11        | \
476         with_msw        | \
477         with_gcc        | \
478         dynamic         | \
479         with_ncurses    | \
480         with_dnet       | \
481         with_socks      | \
482         with_dragndrop  | \
483         with_cde        | \
484         with_offix      | \
485         with_gpm        | \
486         with_xpm        | \
487         with_xface      | \
488         with_gif        | \
489         with_jpeg       | \
490         with_png        | \
491         with_tiff       | \
492         with_wmcommand  | \
493         with_xmu        | \
494         with_purify     | \
495         with_quantify   | \
496         with_toolbars   | \
497         with_tty        | \
498         with_xfs        | \
499         with_i18n3      | \
500         with_mule       | \
501         with_utf_2000   | \
502         with_text_coding| \
503         with_file_coding| \
504         with_canna      | \
505         with_wnn        | \
506         with_wnn6       | \
507         with_workshop   | \
508         with_sparcworks | \
509         with_tooltalk   | \
510         with_ldap       | \
511         with_postgresql | \
512         with_pop        | \
513         with_kerberos   | \
514         with_hesiod     | \
515         with_dnet       | \
516         with_infodock   | \
517         external_widget | \
518         verbose         | \
519         extra_verbose   | \
520         usage_tracking  | \
521         use_union_type  | \
522         pdump           | \
523         debug           | \
524         use_assertions  | \
525         memory_usage_stats | \
526         with_clash_detection | \
527         with_modules | \
528         quick_build )
529           dnl Make sure the value given was either "yes" or "no".
530           case "$val" in
531             y | ye | yes )      val=yes ;;
532             n | no )            val=no  ;;
533             * ) USAGE_ERROR("The \`--$optname' option requires a boolean value: \`yes' or \`no'.") ;;
534           esac
535           eval "$opt=\"$val\"" ;;
536
537
538         dnl Options that take a user-supplied value, as in --x-includes=/usr/X11R6/include
539         dnl The cache-file option is ignored (for compatibility with other configures)
540         srcdir          | \
541         compiler        | \
542         cflags          | \
543         cpp             | \
544         cppflags        | \
545         libs            | \
546         ldflags         | \
547         cache_file      | \
548         native_sound_lib| \
549         site_lisp       | \
550         x_includes      | \
551         x_libraries     | \
552         site_includes   | \
553         site_libraries  | \
554         site_prefixes   | \
555         site_runtime_libraries )
556           dnl If the value was omitted, get it from the next argument.
557           if test "$valomitted" = "yes" ; then
558             dnl Get the next argument from the argument list, if there is one.
559             if test "$#" = 0 ; then
560               USAGE_ERROR("The \`--$optname' option requires a value.");
561             fi
562             val="$1"; shift
563           fi
564           eval "$opt=\"$val\""
565         ;;
566
567         dnl Options that take "yes", "no", or "default" values
568         rel_alloc | \
569         with_dlmalloc | \
570         with_debug_malloc  | use_debug_malloc | \
571         with_system_malloc | use_system_malloc )
572           case "$val" in
573             y | ye | yes )      val=yes ;;
574             n | no )            val=no  ;;
575             d | de | def | defa | defau | defaul | default ) val=default ;;
576             * ) USAGE_ERROR(["The \`--$optname' option requires one of these values:
577   \`yes', \`no', or \`default'."]) ;;
578           esac
579           case "$opt" in use_* ) opt="`echo $opt | sed s/use/with/`" ;; esac
580           eval "$opt=\"$val\""
581         ;;
582
583         dnl Has the user requested database support?
584         "with_database" )
585           with_database_berkdb=no
586           with_database_dbm=no
587           with_database_gdbm=no
588           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
589             case "$x" in
590               no ) ;;
591               b | be | ber | berk | berkd | berkdb )       with_database_berkdb=yes ;;
592               d | db | dbm )                               with_database_dbm=yes    ;;
593               g | gn | gnu | gnud | gnudb | gnudbm | gdbm) with_database_gdbm=yes   ;;
594               * ) USAGE_ERROR(["The \`--$optname' option value
595   must be either \`no' or a comma-separated list
596   of one or more of \`berkdb' and either \`dbm' or \`gnudbm'."]) ;;
597             esac
598           done
599           if test "$with_database_dbm"  = "yes" -a \
600                   "$with_database_gdbm" = "yes"; then
601           USAGE_ERROR("Only one of \`dbm' and \`gnudbm' may be specified
602   with the \`--$optname' option.")
603           fi
604         ;;
605
606         dnl Has the user requested sound support?
607         "with_sound" )
608         dnl values is a subset of all,native,nas,esd
609         dnl or their negatives: none,nonative,nonas,noesd
610           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
611             case "$x" in
612               dnl all and none are only permitted as the first in the list.
613               n | no | non | none ) new_sdefault=no ;;
614               a | al | all | both ) new_sdefault=yes ;;
615
616               native )       with_native_sound=yes ;;
617               nonative )     with_native_sound=no ;;
618
619               nas )          with_nas_sound=yes ;;
620               nonas )        with_nas_sound=no ;;
621
622               esd )          with_esd_sound=yes ;;
623               noesd )        with_esd_sound=no ;;
624
625               * ) bogus_sound=yes ;;
626             esac
627             if test "$bogus_sound" -o \
628                  \( -n "$new_sdefault" -a -n "$sound_notfirst" \) ; then
629                 types="\`all', \`none', \`(no)native', \`no(nas)', \`(no)esd'."
630                 USAGE_ERROR(["Valid types for the \`--$optname' option are:
631   $types.
632 The default is to autodetect all sound support."])
633             elif test -n "$new_sdefault" ; then
634                 with_native_sound=$new_sdefault
635                 with_nas_sound=$new_sdefault
636                 with_esd_sound=$new_sdefault
637                 new_sdefault=   # reset this
638             fi
639             sound_notfirst=true
640           done
641         ;;
642
643         dnl Has the user specified a prefered Athena widget set?
644         dnl This bit expands any alias names out for us...
645         "with_athena" )
646           case "$val" in
647             xa | xaw )                    val=xaw    ;;
648             3 | 3d | xaw3d )              val=3d     ;;
649             dnl No `n' for next, someone may try `no'
650             ne | nex | next | naxtaw)     val=next   ;;
651             dnl Have not tested the next two...
652             9 | 95 | xaw95 )              val=95     ;;
653             xp | xpm | xawxpm )           val=xpm    ;;
654             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
655   \`xaw', \`3d', \`next', \`95', or \`xpm'."]) ;;
656           esac
657           eval "$opt=\"$val\""
658         ;;
659
660         dnl Has the user requested XIM support?
661         "with_xim" )
662           case "$val" in
663             y | ye | yes )                val=yes   ;;
664             n | no | non | none )         val=no    ;;
665             x | xl | xli | xlib )         val=xlib  ;;
666             m | mo | mot | moti | motif ) val=motif ;;
667             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
668   \`motif', \`xlib', \`yes', or \`no'."]) ;;
669           esac
670           eval "$opt=\"$val\""
671         ;;
672
673         dnl Mail locking specification
674         "mail_locking" )
675           case "$val" in
676             lockf )     val=lockf ;;
677             flock )     val=flock ;;
678             file | dot ) val=file  ;;
679             locking )   val=locking  ;;
680             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
681   \`lockf', \`flock', \`file', \`locking', or \`mmdf'."]) ;;
682           esac
683           eval "$opt=\"$val\""
684         ;;
685
686         dnl Has the user requested error-checking?
687         "error_checking" )
688           dnl value can be all, none, and/or a list of categories to check.
689           dnl Example: --error-checking=all,noextents,nobufpos
690           dnl Example: --error-checking=none,malloc,gc
691
692           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
693             case "$x" in
694               dnl all and none are only permitted as the first in the list.
695               n | no | non | none ) new_default=no ;;
696               a | al | all )        new_default=yes ;;
697
698               extents )       error_check_extents=yes ;;
699               noextents )     error_check_extents=no ;;
700
701               typecheck )     error_check_typecheck=yes ;;
702               notypecheck )   error_check_typecheck=no ;;
703
704               bufpos )        error_check_bufpos=yes ;;
705               nobufpos )      error_check_bufpos=no ;;
706
707               gc )            error_check_gc=yes ;;
708               nogc )          error_check_gc=no ;;
709
710               malloc )        error_check_malloc=yes ;;
711               nomalloc )      error_check_malloc=no ;;
712
713               byte_code )     error_check_byte_code=yes ;;
714               nobyte_code )   error_check_byte_code=no ;;
715
716               glyphs )     error_check_glyphs=yes ;;
717               noglyphs )   error_check_glyphs=no ;;
718
719               * ) bogus_error_check=yes ;;
720             esac
721             if test "$bogus_error_check" -o \
722                  \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then
723                 if test "$error_check_default" = yes ; then
724                   types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', \`nomalloc', \`noglyphs' and \`nobyte-code'."
725                 else
726                   types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', \`malloc', \`glyphs' and \`byte-code'."
727                 fi
728                 USAGE_ERROR(["Valid types for the \`--$optname' option are:
729   $types."])
730             elif test -n "$new_default" ; then
731                 error_check_extents=$new_default
732                 error_check_typecheck=$new_default
733                 error_check_bufpos=$new_default
734                 error_check_gc=$new_default
735                 error_check_malloc=$new_default
736                 error_check_byte_code=$new_default
737                 error_check_glyphs=$new_default
738                 new_default=    # reset this
739             fi
740             echeck_notfirst=true
741           done
742         ;;
743
744         dnl Has the user tried to tell us where the X files are?
745         dnl I think these are dopey, but no less than three alpha
746         dnl testers, at large sites, have said they have their X files
747         dnl installed in odd places.
748
749         dnl Has the user specified one of the path options?
750         prefix | exec_prefix | bindir | datadir | statedir | libdir | \
751         mandir | infodir | infopath | lispdir | etcdir | lockdir | pkgdir | \
752         archlibdir | docdir | package_path )
753            dnl If the value was omitted, get it from the next argument.
754            if test "$valomitted" = "yes"; then
755              if test "$#" = 0; then
756                  USAGE_ERROR("The \`--$optname' option requires a value.");
757              fi
758              val="$1"; shift
759            fi
760            eval "$opt=\"$val\""
761
762            dnl You need to synchronize this with the way the
763            dnl default values are built.
764            case "$opt" in
765              dnl prefix is taken care of by --with-prefix
766              exec_prefix ) AC_DEFINE(EXEC_PREFIX_USER_DEFINED) ;;
767              lispdir ) AC_DEFINE(LISPDIR_USER_DEFINED) ;;
768              sitelispdir ) AC_DEFINE(SITELISPDIR_USER_DEFINED) ;;
769              moduledir ) AC_DEFINE(MODULEDIR_USER_DEFINED) ;;
770              etcdir  )  AC_DEFINE(ETCDIR_USER_DEFINED) ;;
771              infodir ) AC_DEFINE(INFODIR_USER_DEFINED) ;;
772              infopath ) AC_DEFINE(INFOPATH_USER_DEFINED) ;;
773              package_path ) AC_DEFINE(PACKAGE_PATH_USER_DEFINED) ;;
774              datadir )
775                 AC_DEFINE(INFODIR_USER_DEFINED)
776                 AC_DEFINE(LISPDIR_USER_DEFINED)
777             AC_DEFINE(MODULEDIR_USER_DEFINED)
778                 AC_DEFINE(ETCDIR_USER_DEFINED) ;;
779              statedir | lockdir ) AC_DEFINE(LOCKDIR_USER_DEFINED) ;;
780              docdir ) AC_DEFINE(DOCDIR_USER_DEFINED) ;;
781              exec_prefix | libdir | archlibdir ) AC_DEFINE(ARCHLIBDIR_USER_DEFINED) ;;
782            esac
783         ;;
784
785         dnl --no-create added by autoconf for use by config.status
786         "no_create" ) ;;
787
788         dnl Has the user asked for some help?
789         "usage" | "help" ) ${PAGER-more} ${srcdir}/configure.usage; exit 0 ;;
790
791         dnl Has the user specified the toolkit(s) to use for GUI elements?
792         "with_menubars"   | \
793         "with_scrollbars" | \
794         "with_dialogs" | \
795         "with_widgets" )
796           case "$val" in
797             l | lu | luc | luci | lucid )               val=lucid  ;;
798             m | mo | mot | moti | motif )               val=motif  ;;
799             a | at | ath | athe | athen | athena )      val=athena ;;
800             n | no | non | none )                       val=no ;;
801             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
802   \`lucid', \`motif', \`athena', 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-osf4*                ) 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         dnl This is a pain.  Like the current USL cc, SCO cc -E
1531         dnl tokenizes as it preprocesses, making configure very
1532         dnl unhappy.  Unfortunately, /lib/cpp does not understand
1533         dnl flags like "-b elf", so we have to cheat in order to
1534         dnl pick up the right defines for UNEXEC from the s-file.
1535         dnl 01/05/95 robertl@dgii.com
1536         if test "$dynamic" = "yes" ; then
1537                 NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE -D_SCO_ELF"  ;
1538         else
1539                 NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE"  ;
1540         fi ;;
1541       *-sysv5* )                opsys=sco7 ;;
1542       *-386bsd* )               opsys=386bsd ;;
1543       *-freebsd* )              opsys=freebsd ;;
1544       *-nextstep* )             opsys=nextstep ;;
1545       *-pc-cygwin* )            opsys=cygwin32 ;;
1546       *-pc-mingw* )             opsys=mingw32 ;
1547                                 test -z "$with_tty" && with_tty="no";;
1548       dnl Otherwise, we fall through to the generic opsys code at the bottom.
1549     esac
1550   ;;
1551
1552   dnl Linux/68k
1553   m68k-*-linux* ) machine=m68k opsys=linux ;;
1554
1555 esac
1556
1557 if test -z "$machine" -o -z "$opsys"; then
1558   (echo "$progname: XEmacs hasn't been ported to \`$canonical' systems."
1559    echo "$progname: Check \`etc/MACHINES' for recognized configuration names."
1560   ) >&2
1561   exit 1
1562 fi
1563
1564 if test -z "$dynamic"; then
1565   case "$opsys" in
1566     hpux* | sunos4* ) dynamic=no ;;
1567     *) dynamic=yes ;;
1568   esac
1569 fi
1570 if test "$dynamic" = "yes"; then
1571   case "$opsys" in
1572     hpux* | sunos4* | sco5 ) opsys="${opsys}-shr" ;;
1573     decosf* ) ld_call_shared="-call_shared" ;;
1574   esac
1575 else dnl "$dynamic" = "no"
1576   case "$opsys" in
1577     sol2 )
1578       echo "Static linking is not supported on Solaris 2."
1579       echo "Rerun configure without specifying --dynamic=no."
1580       exit 1 ;;
1581     linux   ) ld_call_shared="-Bstatic" ;;
1582     decosf* ) ld_call_shared="-non_shared" ;;
1583   esac
1584 fi
1585
1586 dnl Use xlc by default on AIX
1587 case "$opsys" in aix*) NON_GNU_CC=xlc ;; esac
1588
1589 stack_trace_eye_catcher=`echo ${PROGNAME}_${version}_${canonical} | sed 'y/.-/__/'`
1590 AC_DEFINE_UNQUOTED(STACK_TRACE_EYE_CATCHER, $stack_trace_eye_catcher)
1591
1592 machfile="m/${machine}.h"
1593 opsysfile="s/${opsys}.h"
1594
1595 dnl --------------------------------------------------
1596 dnl Determine the compiler, set up for feature testing
1597 dnl --------------------------------------------------
1598
1599 dnl Sun Development environment support
1600 test "$with_sparcworks" = "yes" && with_workshop=yes # compatibility alias
1601 XE_CHECK_FEATURE_DEPENDENCY(workshop, tooltalk)
1602 if test "$with_workshop" = "yes"; then
1603   AC_DEFINE(SUNPRO)
1604   XE_ADD_OBJS(sunpro.o)
1605 fi
1606
1607 if test "$with_clash_detection" != "no"; then
1608   AC_DEFINE(CLASH_DETECTION)
1609   XE_ADD_OBJS(filelock.o)
1610 fi
1611
1612 dnl Choose a compiler from (in order)
1613 dnl --compiler, env var CC, with_gcc=no && ${NON_GNU_CC:-cc}, AC_PROG_CC
1614 test -n "$compiler" && CC="$compiler"
1615 if test "$with_gcc" = "no"; then dnl Try to find a non-gcc compiler
1616   case "$CC" in "" | *gcc* ) CC="${NON_GNU_CC-cc}" ;; esac
1617 fi
1618
1619 dnl If we don't set CFLAGS here, AC_PROG_CC will set it.
1620 dnl But we know better what's good for us, so we do our own
1621 dnl computation of real CFLAGS later.
1622 dnl --cflags overrides environment variable CFLAGS
1623 test "${cflags-unset}" != unset && CFLAGS="$cflags"
1624 if test "${CFLAGS-unset}" != unset
1625   then cflags_specified=yes;
1626   else cflags_specified=no;
1627 fi
1628
1629 xe_save_CFLAGS="$CFLAGS"
1630
1631 AC_PROG_CC dnl Autoconf has its own magic for compiler autodetection
1632
1633 dnl Retry using random guesswork if AC_PROG_CC got it wrong...
1634 if   test "$with_gcc" = "no"  -a "$GCC" = "yes"; then
1635   CC=${NON_GNU_CC-cc}
1636   AC_PROG_CC
1637 elif test "$with_gcc" = "yes" -a "$GCC" != "yes" ; then
1638   CC=gcc
1639   AC_PROG_CC
1640 fi
1641 CFLAGS="$xe_save_CFLAGS"
1642
1643 dnl Figure out what C preprocessor to use.
1644
1645 dnl On Sun systems, people sometimes set up the variable CPP
1646 dnl with a value that is a directory, not an executable at all.
1647 dnl Detect that case, and ignore that value.
1648 test -n "$CPP" -a -d "$CPP" && CPP=
1649
1650 test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
1651
1652 AC_PROG_CPP
1653
1654 dnl --------------------------------------------------------------------
1655 dnl Compiler feature macros
1656 dnl --------------------------------------------------------------------
1657
1658 AC_AIX dnl Defines _ALL_SOURCE on AIX.
1659
1660 dnl Determine which SMART_INCLUDE macro will work for this system
1661 cat > $srcdir/conffoo.h <<EOF
1662 #define CONFFOO 1
1663 EOF
1664 AC_MSG_CHECKING(for a working inclusion macro)
1665 AC_TRY_COMPILE(,[
1666 #define SMART_INCLUDE(path,file) <path/file>
1667 #define CONFFOO_H_PATH $srcdir
1668 #define CONFFOO_INCLUDE(file) SMART_INCLUDE (CONFFOO_H_PATH,file)
1669 #include CONFFOO_INCLUDE(conffoo.h)
1670 ], [ AC_MSG_RESULT(direct); AC_DEFINE(SMART_INCLUDE_INDIRECTIONS,0) ],
1671 AC_TRY_COMPILE(,[
1672 #define GLUE_INCLUDE(path,file)  <##path##/##file##>
1673 #define SMART_INCLUDE(path,file) GLUE_INCLUDE(path,file)
1674 #define CONFFOO_H_PATH $srcdir
1675 #define CONFFOO_INCLUDE(file) SMART_INCLUDE(CONFFOO_H_PATH,file)
1676 #include CONFFOO_INCLUDE(conffoo.h)
1677 ], [ AC_MSG_RESULT(simple); AC_DEFINE(SMART_INCLUDE_INDIRECTIONS,1) ],
1678 AC_TRY_COMPILE(,[
1679 #define GLUE_INCLUDE_2(path,file)  <##path##/##file##>
1680 #define GLUE_INCLUDE_1(path,file) GLUE_INCLUDE_2(path,file)
1681 #define SMART_INCLUDE(path,file) GLUE_INCLUDE_1(path,file)
1682 #define CONFFOO_H_PATH $srcdir
1683 #define CONFFOO_INCLUDE(file) SMART_INCLUDE (CONFFOO_H_PATH,file)
1684 #include CONFFOO_INCLUDE(conffoo.h)
1685 ], [ AC_MSG_RESULT(double); AC_DEFINE(SMART_INCLUDE_INDIRECTIONS,2) ],
1686   AC_MSG_ERROR([Cannot define a proper SMART_INCLUDE macro. Please report.]))))
1687 rm -f $srcdir/conffoo.h
1688
1689
1690 dnl We want feature macros defined here and in config.h.in, so that
1691 dnl the compilation environment at configure time and compile time agree.
1692
1693 AC_MSG_CHECKING(for GNU libc)
1694 AC_TRY_COMPILE([#include <features.h>],[
1695 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
1696 #error Not a GNU libc system :-(
1697 ******* ======= ******** &&&&&&&&
1698 #endif
1699 ], have_glibc=yes, have_glibc=no)
1700 AC_MSG_RESULT($have_glibc)
1701 dnl I'm tired of pop being broken with GLIBC -slb
1702 dnl Well. then why not fix fucking pop?
1703 test "$have_glibc" = "yes" && AC_DEFINE(_GNU_SOURCE)
1704
1705 dnl We'd like to use vendor extensions, where available.
1706 dnl We'd like to use functions from the latest Unix98 standards.
1707 dnl See http://www.opengroup.org/onlinepubs/007908799/xsh/compilation.html
1708 case "$opsys" in
1709   sol2)
1710    AC_DEFINE(__EXTENSIONS__)
1711    dnl Solaris 2 before 2.5 had some bugs with feature test macro interaction.
1712    if test "$os_release" -ge 55; then
1713      AC_DEFINE(_XOPEN_SOURCE,500)
1714      AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
1715    fi ;;
1716   linux)
1717     AC_DEFINE(_POSIX_C_SOURCE,199506L)
1718     AC_DEFINE(_XOPEN_SOURCE,500)
1719     AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
1720     ;;
1721 esac
1722
1723 dnl Identify compilers to enable compiler-specific hacks.
1724 dnl Add support for other compilers HERE!
1725 dnl GCC is already identified elsewhere.
1726 AC_TRY_RUN([int main () {
1727 #if defined __SUNPRO_C
1728 return 11;
1729 #elif defined __DECC
1730 return 12;
1731 #else
1732 return 0;
1733 #endif
1734 }], [],
1735 [case "$conftest_rc" in
1736   11) echo "You appear to be using the SunPro C compiler."; __SUNPRO_C=yes ;;
1737   12) echo "You appear to be using the DEC C compiler."   ; __DECC=yes ;;
1738 esac])
1739
1740
1741 dnl case "$canonical" in
1742 dnl   *-sun-sunos* ) test "$CPP" = "acc -E" && CPP="acc -E -Xs" ;;
1743 dnl esac
1744
1745 dnl --------------------------------------------------------------------
1746 dnl Extract some information from the operating system and machine files
1747 dnl --------------------------------------------------------------------
1748
1749 echo "Extracting information from the machine- and system-dependent headers..."
1750
1751 dnl It is not important that this name contain the PID; you cannot run
1752 dnl two configures in the same directory and have anything work
1753 dnl anyway.
1754 tempcname="conftest.c"
1755
1756 dnl CPP_to_sh(CPP_SYMBOL, SH_VAR, DEFAULT_VALUE)
1757 define([CPP_to_sh],
1758 [[#]ifndef [$1]
1759 [#]define [$1]ifelse([$3],,, [ "$3"])
1760 [#]endif
1761 configure___ [$2]=[$1]
1762 ])dnl CPP_to_sh
1763
1764 dnl CPP_boolean_to_sh(CPP_SYMBOL, SH_VAR)
1765 define([CPP_boolean_to_sh],
1766 [[#]ifdef [$1]
1767 configure___ [$2]=yes
1768 [#]else
1769 configure___ [$2]=no
1770 [#]endif
1771 ])dnl CPP_boolean_to_sh
1772
1773 cat > $tempcname <<EOF
1774 #define NOT_C_CODE
1775 #define C_SWITCH_SITE
1776 #define C_SWITCH_X_SITE
1777 #define LD_SWITCH_SITE
1778 #define LD_SWITCH_X_SITE
1779 #define LD_SWITCH_X_SITE_AUX
1780 #define OS_RELEASE $os_release
1781 #include "$srcdir/src/$opsysfile"
1782 #include "$srcdir/src/$machfile"
1783
1784 CPP_to_sh(LIBS_MACHINE, libs_machine)
1785 CPP_to_sh(LIBS_SYSTEM,  libs_system)
1786 CPP_to_sh(LIBS_TERMCAP, libs_termcap)
1787 CPP_to_sh(LIB_STANDARD, libs_standard)
1788
1789 CPP_to_sh(OBJECTS_MACHINE, objects_machine)
1790 CPP_to_sh(OBJECTS_SYSTEM,  objects_system)
1791
1792 CPP_to_sh(C_SWITCH_MACHINE,   c_switch_machine)
1793 CPP_to_sh(C_SWITCH_SYSTEM,    c_switch_system)
1794
1795 CPP_to_sh(LD_SWITCH_MACHINE,  ld_switch_machine)
1796 CPP_to_sh(LD_SWITCH_SYSTEM,   ld_switch_system)
1797
1798 CPP_to_sh(UNEXEC, unexec, unexec.o)
1799
1800 CPP_to_sh(LD_SWITCH_SHARED, ld_switch_shared, -c)
1801
1802 #define ORDINARY_LD "\$(CC) \$(CFLAGS)"
1803 configure___ ordinary_ld=ORDINARY_LD
1804
1805 #ifdef ORDINARY_LINK
1806 #define LD ORDINARY_LD
1807 #else /* no ORDINARY LINK */
1808 #ifdef COFF_ENCAPSULATE
1809 #define LD "\$(CC) -nostdlib"
1810 #else /* not COFF_ENCAPSULATE */
1811 #ifdef LINKER
1812 #define LD LINKER
1813 #else /* ! defined (LINKER) */
1814 #define LD "ld"
1815 #endif /* ! defined (LINKER) */
1816 #endif /* ! defined (COFF_ENCAPSULATE) */
1817 #endif /* not ORDINARY_LINK */
1818 configure___ ld=LD
1819
1820 CPP_to_sh(LIB_GCC, lib_gcc)
1821 CPP_to_sh(LD_TEXT_START_ADDR, ld_text_start_addr)
1822
1823 #if ! defined (ORDINARY_LINK) && !defined (START_FILES)
1824 #ifdef NO_REMAP
1825 #ifdef COFF_ENCAPSULATE
1826 #define START_FILES "pre-crt0.o /usr/local/lib/gcc-crt0.o"
1827 #else /* ! defined (COFF_ENCAPSULATE) */
1828 #define START_FILES "pre-crt0.o /lib/crt0.o"
1829 #endif /* ! defined (COFF_ENCAPSULATE) */
1830 #else /* ! defined (NO_REMAP) */
1831 #define START_FILES "ecrt0.o"
1832 #endif /* ! defined (NO_REMAP) */
1833 #endif /* no ORDINARY_LINK */
1834 #ifndef START_FILES
1835 #define START_FILES
1836 #endif
1837 configure___ start_files=START_FILES
1838
1839 CPP_boolean_to_sh(ORDINARY_LINK, ordinary_link)
1840 CPP_boolean_to_sh(SYSTEM_MALLOC, system_malloc)
1841 CPP_boolean_to_sh(TERMINFO, have_terminfo)
1842 dnl The MAIL_USE_xxx variables come from the s&m headers
1843 CPP_boolean_to_sh(MAIL_USE_FLOCK, mail_use_flock)
1844 CPP_boolean_to_sh(MAIL_USE_LOCKF, mail_use_lockf)
1845 CPP_boolean_to_sh(MAIL_USE_LOCKING, mail_use_locking)
1846 CPP_boolean_to_sh(HAVE_WIN32_PROCESSES, win32_processes)
1847 EOF
1848
1849 dnl The value of CPP is a quoted variable reference, so we need to do this
1850 dnl to get its actual value...
1851 CPP=`eval "echo $CPP $CPPFLAGS"`
1852 define(TAB, [   ])dnl
1853 changequote(, )dnl
1854 eval `$CPP -Isrc $tempcname \
1855         | sed -n -e "s/[ TAB]*=[ TAB\"]*/='/" -e "s/[ TAB\"]*\$/'/" -e "s/^configure___//p"`
1856 changequote([, ])dnl
1857
1858 rm $tempcname
1859
1860 if test "$pdump" = "yes"; then
1861   ordinary_link="yes"
1862   ld="${ordinary_ld}"
1863   start_files=
1864   libs_standard=
1865   unexec=
1866   lib_gcc=      
1867 fi
1868
1869 dnl For debugging...
1870 test "$extra_verbose" = "yes" && \
1871   PRINT_VAR(libs_machine libs_system libs_termcap libs_standard
1872   objects_machine objects_system c_switch_machine c_switch_system
1873   ld_switch_machine ld_switch_system unexec ld_switch_shared
1874   ld lib_gcc ld_text_start_addr start_files ordinary_link
1875   have_terminfo mail_use_flock mail_use_lockf) && echo ""
1876
1877 dnl Pick up mingw32 include path
1878 case "$opsys" in mingw*) mingw_include=`eval "gcc -print-file-name=libc.a"` ;
1879         mingw_include=`eval "dirname $mingw_include"` ;
1880         mingw_include="-I$mingw_include/../include/mingw32" ;
1881         XE_APPEND($mingw_include, c_switch_system) ;;
1882 esac
1883
1884 dnl Non-ordinary link usually requires -lc
1885 test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc"
1886
1887 dnl Compiler-specific hacks
1888 dnl DEC C requires -std
1889 test "$__DECC" = "yes" && XE_APPEND(-std, c_switch_site)
1890
1891 dnl Calculalate value of CFLAGS:
1892 dnl Use either command line flag, environment var, or autodetection
1893 if test "$cflags_specified" = "no"; then
1894   dnl Following values of CFLAGS are known to work well.
1895   dnl Should we take debugging options into consideration?
1896   if   test "$GCC" = "yes"; then
1897     CFLAGS="-g -O3 -Wall -Wno-switch -Wpointer-arith -Winline -Wmissing-prototypes -Wshadow"
1898     dnl I'm not convinced this is a good idea any more. -sb
1899     dnl test "$opsys $machine" = "linux intel386" && \
1900     dnl CFLAGS="$CFLAGS -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2"
1901   elif test "$__SUNPRO_C" = "yes"; then
1902     case "$opsys" in
1903       sol2    ) CFLAGS="-v -xO4" ;;
1904       sunos4* ) CFLAGS="-xO2";;
1905     esac
1906   elif test "$__DECC" = "yes"; then
1907     CFLAGS="-O3"
1908   elif test "$CC" = "xlc"; then
1909     CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000"
1910   dnl ### Add optimal CFLAGS support for other compilers HERE!
1911   else
1912     CFLAGS="-O" ;dnl The only POSIX-approved flag
1913   fi
1914 fi
1915
1916 dnl Search for GCC specific build problems we know about
1917 if test "$GCC" = "yes"; then
1918 AC_MSG_CHECKING(for buggy gcc versions)
1919 GCC_VERSION=`$CC --version`
1920 case `uname -s`:`uname -m`:$GCC_VERSION in
1921         dnl egcs 2.90.21 (egcs-1.00 release)
1922         dnl egcs 2.90.29 (egcs-1.0.3 release)
1923     *:sun4*:2.8.1|*:sun4*:egcs-2.90.*)
1924         dnl Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures
1925         dnl without also using `-fno-schedule-insns'.
1926         case "$CFLAGS" in
1927             *-O2*|*-O3*)
1928                 case "$CFLAGS" in
1929                     *-fno-schedule-insns*) ;;
1930                     *)
1931                         AC_MSG_RESULT(Yes)
1932                         AC_MSG_WARN(Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures)
1933                         AC_MSG_WARN(without also using -fno-schedule-insns.)
1934                         AC_MSG_ERROR(Aborting due to known problem)
1935                         ;;
1936                 esac
1937                 ;;
1938         esac
1939         ;;
1940         dnl egcs-2.91.57 (egcs-1.1 release)
1941         dnl egcs-2.91.66 (egcs-1.1.2 release)
1942     Linux:alpha:egcs-2.91.*)
1943         AC_MSG_RESULT(Yes)
1944         AC_MSG_WARN(There have been reports of egcs-1.1 not compiling XEmacs correctly on)
1945         AC_MSG_WARN(Alpha Linux.  There have also been reports that egcs-1.0.3a is O.K.)
1946         AC_MSG_ERROR(Aborting due to known problem)
1947         ;;
1948     *:i*86*:2.7.2*)
1949         case "$GCC_VERSION" in
1950             2.7.2)
1951                 case "$CFLAGS" in
1952                     *-O2*|*-O3*)
1953                         case "$CFLAGS" in
1954                             *-fno-strength-reduce*) ;;
1955                             *)
1956                                 AC_MSG_RESULT(Yes)
1957                                 AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using)
1958                                 AC_MSG_WARN(-fno-strength-reduce.)
1959                                 AC_MSG_ERROR(Aborting due to known problem)
1960                                 ;;
1961                         esac
1962                         ;;
1963                 esac
1964                 ;;
1965         esac
1966         case "$CFLAGS" in
1967          *-fno-caller-saves*) ;;
1968          *)
1969             AC_MSG_RESULT(Yes)
1970             AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using)
1971             AC_MSG_WARN(-fno-caller-saves.)
1972             AC_MSG_ERROR(Aborting due to known problem)
1973             ;;
1974         esac
1975         ;;
1976 esac
1977 fi
1978 AC_MSG_RESULT(No)
1979
1980 dnl Inform compiler that certain flags are meant for the linker
1981 dnl XE_PROTECT_LINKER_FLAGS(shell_var)
1982 define([XE_PROTECT_LINKER_FLAGS], [
1983 if test "$GCC" = "yes"; then
1984   set x $[$1]; shift; [$1]=""
1985   while test -n "[$]1"; do
1986     case [$]1 in
1987       -L  | -l  | -u               ) [$1]="$[$1] [$]1 [$]2"; shift ;;
1988       -L* | -l* | -u* | -Wl* | -pg ) [$1]="$[$1] [$]1" ;;
1989       -Xlinker* ) ;;
1990       * ) [$1]="$[$1] -Xlinker [$]1" ;;
1991     esac
1992     shift
1993   done
1994 fi])dnl
1995 XE_PROTECT_LINKER_FLAGS(ld_switch_system)
1996 XE_PROTECT_LINKER_FLAGS(ld_switch_machine)
1997 XE_PROTECT_LINKER_FLAGS(LDFLAGS)
1998 XE_PROTECT_LINKER_FLAGS(ld_call_shared)
1999
2000 dnl Add s&m-determined objects (including unexec) to link line
2001 test -n "$objects_machine" && XE_ADD_OBJS($objects_machine)
2002 test -n "$objects_system"  && XE_ADD_OBJS($objects_system)
2003 test -n "$unexec"          && test ! "$pdump" = "yes" && XE_ADD_OBJS($unexec)
2004 test "$pdump" = "yes" && XE_ADD_OBJS(dumper.o)
2005
2006 dnl Dynodump (Solaris 2.x, x<6)
2007 AC_MSG_CHECKING(for dynodump)
2008 if test "$unexec" != "unexsol2.o"; then
2009   AC_MSG_RESULT(no)
2010 else
2011   AC_MSG_RESULT(yes)
2012   AC_DEFINE(DYNODUMP)
2013   XE_APPEND(dynodump, MAKE_SUBDIR)
2014   XE_APPEND(dynodump, SRC_SUBDIR_DEPS)
2015   case "$machine" in
2016     sparc   ) dynodump_arch=sparc ;;
2017     *86*    ) dynodump_arch=i386  ;;
2018     powerpc ) dynodump_arch=ppc   ;;
2019   esac
2020   dnl Dynodump requires the system linker
2021   test "$GCC" = "yes" && XE_APPEND(-fno-gnu-linker, ld_switch_site)
2022 fi
2023
2024 dnl Feed s&m crud to src/Makefile
2025
2026 dnl Linux/powerpc needs the following magic for some reason
2027 test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript"
2028
2029 if test "$unexec" = "unexaix.o"; then
2030 dnl AIX needs various hacks to make static linking work.
2031   if   test "$dynamic" = "no"; then
2032   start_flags="-Wl,-bnso,-bnodelcsect"
2033   test "$GCC" = "yes" && start_flags="-B/bin/ ${start_flags}"
2034   for f in "/lib/syscalls.exp" "/lib/threads.exp"; do
2035     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; fi
2036   done
2037   for f in "/usr/lpp/X11/bin/smt.exp" "/usr/bin/X11/smt.exp"; do
2038     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; break; fi
2039   done
2040   AC_CHECK_LIB(C, terminateAndUnload, XE_APPEND(-lC, libs_system))
2041   fi
2042 elif test -n "$ld_text_start_addr"; then
2043   start_flags="-T $ld_text_start_addr -e __start"
2044 fi
2045 AC_SUBST(start_flags)
2046
2047 AC_SUBST(ld_switch_shared)
2048 AC_SUBST(start_files)
2049 if test "$ordinary_link" = "no" -a "$GCC" = "yes"; then
2050  test -z "$linker" &&  linker='$(CC) -nostdlib'
2051  test -z "$lib_gcc" && lib_gcc='`$(CC) -print-libgcc-file-name`'
2052 fi
2053 test "$GCC" != "yes" && lib_gcc=
2054 AC_SUBST(ld)
2055 AC_SUBST(lib_gcc)
2056
2057 dnl ---------------------------------------------------------------
2058 dnl Add site and system specific flags to compile and link commands
2059 dnl ---------------------------------------------------------------
2060
2061 dnl Allow use of either ":" or spaces for lists of directories
2062 define(COLON_TO_SPACE,
2063   [case "$[$1]" in *:* [)] [$1]="`echo '' $[$1] | sed -e 's/^ //' -e 's/:/ /g'`";; esac])dnl
2064
2065 dnl --site-libraries (multiple dirs)
2066 COLON_TO_SPACE(site_libraries)
2067 if test -n "$site_libraries"; then
2068   for arg in $site_libraries; do
2069     case "$arg" in
2070      -* ) ;;
2071      * ) test -d "$arg" || \
2072            XE_DIE("Invalid site library \`$arg': no such directory")
2073        arg="-L${arg}" ;;
2074     esac
2075     XE_APPEND($arg, ld_switch_site)
2076   done
2077 fi
2078
2079 dnl --site-includes (multiple dirs)
2080 COLON_TO_SPACE(site_includes)
2081 if test -n "$site_includes"; then
2082   for arg in $site_includes; do
2083     case "$arg" in
2084       -* ) ;;
2085       * ) test -d "$arg" || \
2086            XE_DIE("Invalid site include \`$arg': no such directory")
2087       arg="-I${arg}" ;;
2088     esac
2089     XE_APPEND($arg, c_switch_site)
2090   done
2091 fi
2092
2093 dnl --site-prefixes (multiple dirs)
2094 dnl --site-prefixes=dir1:dir2 is a convenient shorthand for
2095 dnl --site-libraries=dir1/lib:dir2/lib --site-includes=dir1/include:dir2/include
2096 dnl Site prefixes take precedence over the standard places, but not over
2097 dnl site-includes and site-libraries.
2098 COLON_TO_SPACE(site_prefixes)
2099 if test -n "$site_prefixes"; then
2100   for dir in $site_prefixes; do
2101     lib_dir="${dir}/lib"
2102     inc_dir="${dir}/include"
2103     if test ! -d "$dir"; then
2104       XE_DIE("Invalid site prefix \`$dir': no such directory")
2105     elif test ! -d "$lib_dir"; then
2106       XE_DIE("Invalid site prefix \`$dir': no such directory \`$lib_dir'")
2107     else
2108       if test -d "$inc_dir"; then
2109         XE_APPEND("-I$inc_dir", c_switch_site)
2110       fi
2111       XE_APPEND("-L$lib_dir", ld_switch_site)
2112     fi
2113   done
2114 fi
2115
2116 dnl GNU software installs by default into /usr/local/{include,lib}
2117 dnl if test -d "/usr/local/include" -a -d "/usr/local/lib"; then
2118 dnl   XE_APPEND("-L/usr/local/lib",    ld_switch_site)
2119 dnl   XE_APPEND("-I/usr/local/include", c_switch_site)
2120 dnl fi
2121
2122 dnl Extra system-specific library directories - please add to list
2123 for dir in "/usr/ccs/lib"; do
2124   test -d "$dir" && XE_APPEND(-L${dir}, ld_switch_system)
2125 done
2126
2127 dnl --site-runtime-libraries (multiple dirs)
2128 COLON_TO_SPACE(site_runtime_libraries)
2129 if test -n "$site_runtime_libraries"; then
2130   LD_RUN_PATH="`echo $site_runtime_libraries | sed -e 's/  */:/g'`"
2131   export LD_RUN_PATH
2132 fi
2133
2134 dnl Linux systems have dynamic runtime library directories listed in
2135 dnl /etc/ld.so.conf.  Since those are used at run time, it seems pretty
2136 dnl safe to use them at link time, and less controversial than forcing
2137 dnl the run-time to use the link-time libraries.  This also helps avoid
2138 dnl mismatches between the link-time and run-time libraries.
2139
2140 dnl #### Unfortunately, there are horrible libc4 and libc5 libraries
2141 dnl listed in /etc/ld.so.conf on some systems, and including them on
2142 dnl the link path leads to linking in utterly broken libc's.
2143 dnl There are many clever ways of approaching this problem,
2144 dnl but finding out that actually works...
2145
2146 dnl if test -z "$LD_RUN_PATH" -a -r "/etc/ld.so.conf"; then
2147 dnl   for dir in `cat /etc/ld.so.conf`; do
2148 dnl     test -d "$dir" && XE_APPEND(-L${dir}, ld_switch_system)
2149 dnl   done
2150 dnl   add_runtime_path=no
2151 dnl fi
2152
2153 dnl -------------------------------------
2154 dnl Compute runtime library path
2155 dnl -------------------------------------
2156
2157 if test -n "$add_runtime_path"; then :;
2158 elif test "$dynamic" = "no"; then add_runtime_path=no
2159 elif test -n "$LD_RUN_PATH"; then add_runtime_path=yes
2160 else case "$opsys" in
2161        sol2 | irix* | *bsd* | decosf* ) add_runtime_path=yes ;;
2162        * ) add_runtime_path=no ;;
2163      esac
2164 fi
2165
2166 if test "$add_runtime_path" = "yes"; then
2167   dnl Try to autodetect runtime library flag (usually -R),
2168   dnl and whether it works (or at least does no harm)
2169   AC_MSG_CHECKING("for runtime libraries flag")
2170   case "$opsys" in
2171     sol2 ) dash_r="-R" ;;
2172     decosf* | linux* | irix*) dash_r="-rpath " ;;
2173     *)
2174       dash_r=""
2175       for try_dash_r in "-R" "-R " "-rpath "; do
2176         xe_check_libs="${try_dash_r}/no/such/file-or-directory"
2177         XE_PROTECT_LINKER_FLAGS(xe_check_libs)
2178         AC_TRY_LINK(, , dash_r="$try_dash_r")
2179         xe_check_libs=""
2180         test -n "$dash_r" && break
2181       done ;;
2182   esac
2183   if test -n "$dash_r";
2184     then AC_MSG_RESULT("\"${dash_r}\"")
2185     else AC_MSG_RESULT(NONE)
2186   fi
2187 fi
2188
2189 xe_add_unique_runpath_dir='
2190   xe_add_p=yes
2191   for xe_dir in $runpath_dirs; do   dnl Uniquify
2192     test "$xe_dir" = "$xe_runpath_dir" && xe_add_p=no
2193   done
2194   if test "$xe_add_p" = "yes"; then
2195     test -n "$runpath" && runpath="${runpath}:"
2196     runpath="${runpath}${xe_runpath_dir}"
2197     runpath_dirs="$runpath_dirs $xe_runpath_dir"
2198   fi'
2199
2200
2201 dnl XE_ADD_RUNPATH_DIR(directory)
2202 define([XE_ADD_RUNPATH_DIR],[{
2203 xe_runpath_dir=$1
2204 dnl PRINT_VAR(ld_switch_site ld_switch_x_site runpath xe_runpath_dir LD_RUN_PATH xe_ldflags)
2205   test "$xe_runpath_dir" != "/lib"     -a \
2206         "$xe_runpath_dir" != "/usr/lib" -a \
2207         -n "`ls ${xe_runpath_dir}/*.s[[ol]] 2>/dev/null`" && \
2208   eval "$xe_add_unique_runpath_dir"
2209 }])dnl
2210
2211 dnl XE_COMPUTE_RUNPATH()
2212 define([XE_COMPUTE_RUNPATH],[
2213 if test "$add_runtime_path" = "yes" -a -n "$dash_r"; then
2214   dnl Remove runtime paths from current ld switches
2215   ld_switch_site=`echo   '' $ld_switch_site   | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
2216   ld_switch_x_site=`echo '' $ld_switch_x_site | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
2217   dnl PRINT_VAR(ld_switch_site ld_switch_x_site)
2218
2219   dnl Fix up Runtime path
2220   dnl If LD_RUN_PATH is set in environment, use that.
2221   dnl In this case, assume user has set the right value.
2222   runpath="" runpath_dirs=""
2223   if test -n "$LD_RUN_PATH"; then
2224     runpath="$LD_RUN_PATH"
2225   elif test "$GCC" = "yes"; then
2226     dnl Compute runpath from gcc's -v output
2227     ld_switch_run_save="$ld_switch_run"; ld_switch_run=""
2228     echo "int main(int argc, char *argv[[]]) {return 0;}" > conftest.c
2229     xe_runpath_link='${CC-cc} -o conftest -v $CFLAGS '"$xe_ldflags"' conftest.$ac_ext 2>&1 1>/dev/null'
2230     for arg in `eval "$xe_runpath_link" | grep ' -L'`; do
2231       case "$arg" in P,* | -L* | -R* )
2232         for dir in `echo '' "$arg" | sed -e 's:^ ::' -e 's/^..//' -e 'y/:/ /'`; do
2233           XE_ADD_RUNPATH_DIR("$dir")
2234         done ;;
2235       esac
2236     done
2237     ld_switch_run="$ld_switch_run_save"
2238     rm -f conftest*
2239   else
2240     dnl Add all directories with .so files to runpath
2241     for arg in $ld_switch_site $ld_switch_x_site; do
2242       case "$arg" in -L*) XE_ADD_RUNPATH_DIR(`echo '' "$arg" | sed -e 's:^ ::' -e 's/^-L//'`);; esac
2243     done
2244     dnl Sometimes /opt/SUNWdt/lib is the only installed Motif available
2245     if test "$opsys $need_motif" = "sol2 yes"; then
2246       xe_runpath_dir="/opt/SUNWdt/lib";
2247       eval "$xe_add_unique_runpath_dir";
2248     fi
2249   fi dnl Compute $runpath
2250
2251   if test -n "$runpath"; then
2252     ld_switch_run="${dash_r}${runpath}"
2253     XE_PROTECT_LINKER_FLAGS(ld_switch_run)
2254     test "$extra_verbose" = "yes" && echo "Setting runpath to $runpath"
2255   fi
2256 fi
2257 ])dnl
2258 XE_COMPUTE_RUNPATH()
2259
2260 dnl JKJ REMOVEME
2261 dnl XE_SHLIB_STUFF
2262
2263 dnl -----------------------------------
2264 dnl Do some misc autoconf-special tests
2265 dnl -----------------------------------
2266
2267 dnl Do the opsystem or machine files prohibit the use of the GNU malloc?
2268 dnl Assume not, until told otherwise.
2269 GNU_MALLOC=yes
2270 if test "$with_dlmalloc" != "no"; then
2271         doug_lea_malloc=yes
2272 else
2273         doug_lea_malloc=no
2274 fi
2275 after_morecore_hook_exists=yes
2276 AC_CHECK_FUNC(malloc_get_state, ,doug_lea_malloc=no)
2277 AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
2278 AC_MSG_CHECKING(whether __after_morecore_hook exists)
2279 AC_TRY_LINK([extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0],
2280   [AC_MSG_RESULT(yes)],
2281   [AC_MSG_RESULT(no)
2282    after_morecore_hook_exists=no])
2283 if test "$system_malloc" = "yes" ; then
2284   GNU_MALLOC=no
2285   GNU_MALLOC_reason="
2286     - The GNU allocators don't work with this system configuration."
2287 elif test "$with_system_malloc" = "yes" ; then
2288   GNU_MALLOC=no
2289   GNU_MALLOC_reason="
2290     - User chose not to use GNU allocators."
2291 elif test "$with_debug_malloc" = "yes" ; then
2292   GNU_MALLOC=no
2293   GNU_MALLOC_reason="
2294     - User chose to use Debugging Malloc."
2295 fi
2296
2297 if test "$doug_lea_malloc" = "yes" ; then
2298   if test "$GNU_MALLOC" = yes ; then
2299     GNU_MALLOC_reason="
2300     - Using Doug Lea's new malloc from the GNU C Library."
2301   fi
2302   AC_DEFINE(DOUG_LEA_MALLOC)
2303   if test "$after_morecore_hook_exists" = "no" ; then
2304     GNU_MALLOC_reason="
2305     - Using Doug Lea's new malloc from the Linux C Library."
2306     AC_DEFINE(_NO_MALLOC_WARNING_)
2307   fi
2308   use_minimal_tagbits=yes
2309 fi
2310
2311 dnl #### mcheck is broken in all versions of Linux libc and glibc.
2312 dnl Try this again when 2.1 hits the streets.
2313 dnl Avoid using free-hook.c if support exists for malloc debugging in libc
2314 dnl have_libmcheck=no
2315 dnl if test "$error_check_malloc" = "yes" -a \
2316 dnl    "$have_glibc" = "yes" -a \
2317 dnl    "$doug_lea_malloc" = "yes"; then
2318 dnl   AC_CHECK_HEADERS(mcheck.h)
2319 dnl   AC_CHECK_LIB(mcheck, mcheck, have_libmcheck=yes, have_libmcheck=no)
2320 dnl fi
2321
2322 dnl if test "$have_libmcheck" = "yes"; then
2323 dnl   AC_DEFINE(HAVE_LIBMCHECK)
2324 dnl   libmcheck=-lmcheck
2325 dnl   AC_SUBST(libmcheck)
2326 dnl fi
2327
2328 dnl Some other nice autoconf tests.  If you add a test here which
2329 dnl should make an entry in src/config.h, do not forget to add an
2330 dnl #undef clause to src/config.h.in for autoconf to modify.
2331
2332 AC_PROG_RANLIB
2333 AC_PROG_INSTALL
2334 AC_PROG_YACC
2335
2336 dnl checks for header files
2337 AC_CHECK_HEADERS(dnl
2338   a.out.h dnl
2339   cygwin/version.h dnl
2340   fcntl.h dnl
2341   inttypes.h dnl
2342   libgen.h dnl
2343   locale.h dnl
2344   mach/mach.h dnl
2345   sys/param.h dnl
2346   sys/pstat.h dnl
2347   sys/stropts.h dnl
2348   sys/time.h dnl
2349   sys/timeb.h dnl
2350   sys/un.h dnl
2351   kstat.h dnl
2352   ulimit.h dnl
2353   unistd.h dnl
2354   utime.h dnl
2355 )
2356 AC_HEADER_SYS_WAIT
2357 AC_HEADER_STDC
2358 AC_HEADER_TIME
2359 AC_DECL_SYS_SIGLIST
2360
2361 dnl Some systems have utime.h but do not declare the struct anyplace.
2362 AC_MSG_CHECKING(for struct utimbuf)
2363 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2364 #include <sys/time.h>
2365 #include <time.h>
2366 #else
2367 #ifdef HAVE_SYS_TIME_H
2368 #include <sys/time.h>
2369 #else
2370 #include <time.h>
2371 #endif
2372 #endif
2373 #ifdef HAVE_UTIME_H
2374 #include <utime.h>
2375 #endif], [static struct utimbuf x; x.actime = x.modtime;],
2376   [AC_MSG_RESULT(yes)
2377    AC_DEFINE(HAVE_STRUCT_UTIMBUF)],
2378   AC_MSG_RESULT(no))
2379
2380 dnl checks for typedefs
2381 AC_TYPE_SIGNAL
2382 AC_TYPE_SIZE_T
2383 AC_TYPE_PID_T
2384 AC_TYPE_UID_T
2385 AC_TYPE_MODE_T
2386 AC_TYPE_OFF_T
2387 AC_CHECK_TYPE(ssize_t, int)
2388
2389 AC_MSG_CHECKING(for struct timeval)
2390 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2391 #include <sys/time.h>
2392 #include <time.h>
2393 #else
2394 #ifdef HAVE_SYS_TIME_H
2395 #include <sys/time.h>
2396 #else
2397 #include <time.h>
2398 #endif
2399 #endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
2400   [AC_MSG_RESULT(yes)
2401   HAVE_TIMEVAL=yes
2402   AC_DEFINE(HAVE_TIMEVAL)],
2403   [AC_MSG_RESULT(no)
2404    HAVE_TIMEVAL=no])
2405
2406 dnl checks for structure members
2407 AC_STRUCT_TM
2408 AC_STRUCT_TIMEZONE
2409
2410 dnl checks for compiler characteristics
2411 AC_C_CONST
2412
2413 dnl check for Make feature
2414 AC_PROG_MAKE_SET
2415
2416 dnl check byte order
2417 AC_C_BIGENDIAN
2418
2419 dnl define SIZEOF_TYPE
2420 AC_CHECK_SIZEOF(short)
2421 if test "$ac_cv_sizeof_short" = 0; then
2422   echo ""
2423   echo "*** PANIC *** Configure tests are not working - compiler is broken."
2424   echo "*** PANIC *** Please examine config.log for compilation errors."
2425   exit 1
2426 fi
2427 AC_CHECK_SIZEOF(int)
2428 AC_CHECK_SIZEOF(long)
2429 AC_CHECK_SIZEOF(long long)
2430 AC_CHECK_SIZEOF(void *)
2431
2432 dnl check for long file names
2433 AC_SYS_LONG_FILE_NAMES
2434
2435 dnl -lm is required by LISP_FLOAT_TYPE, among other things
2436 AC_CHECK_FUNC(sin, ,AC_CHECK_LIB(m, sin))
2437
2438 dnl Floating operation support is now unconditional
2439 AC_DEFINE(LISP_FLOAT_TYPE)
2440
2441 AC_TRY_LINK([#include <math.h>],
2442   [return atanh(1.0) + asinh(1.0) + acosh(1.0); ],
2443   AC_DEFINE(HAVE_INVERSE_HYPERBOLIC))
2444
2445 dnl Determine type of mail locking from configure args and s&m headers
2446 AC_CHECKING(type of mail spool file locking)
2447 AC_CHECK_FUNCS(lockf flock)
2448 dnl The mail_use_xxx variables are set according to the s&m headers.
2449 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
2450 test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
2451 test -z "$mail_locking" -a "$mail_use_locking" = "yes" && mail_locking=locking
2452 if   test "$mail_locking" = "lockf"; then AC_DEFINE(MAIL_LOCK_LOCKF)
2453 elif test "$mail_locking" = "flock"; then AC_DEFINE(MAIL_LOCK_FLOCK)
2454 elif test "$mail_locking" = "locking"; then AC_DEFINE(MAIL_LOCK_LOCKING)
2455 else mail_locking="dot-locking"; AC_DEFINE(MAIL_LOCK_DOT)
2456 fi
2457 test "$mail_locking" = "lockf" -a "$ac_cv_func_lockf" != "yes" && \
2458   XE_DIE("lockf mail locking requested but not available.")
2459 test "$mail_locking" = "flock" -a "$ac_cv_func_flock" != "yes" && \
2460   XE_DIE("flock mail locking requested but not available.")
2461 test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \
2462   XE_DIE("locking mail locking requested but not available.")
2463
2464 case "$opsys" in decosf*)
2465   AC_CHECK_LIB(pthreads, cma_open)
2466   test "$ac_cv_lib_pthreads_cma_open" = "yes" && \
2467     c_switch_site="$c_switch_site -threads" ;;
2468 esac
2469
2470 AC_MSG_CHECKING(whether the -xildoff compiler flag is required)
2471 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
2472   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
2473     then AC_MSG_RESULT(no);
2474     else AC_MSG_RESULT(yes); XE_APPEND(-xildoff, ld_switch_site)
2475   fi
2476   else AC_MSG_RESULT(no)
2477 fi
2478
2479 dnl Link with "-z ignore" on Solaris if supported
2480 if test "$opsys" = "sol2"; then
2481   if test "$os_release" -ge 56; then
2482     AC_MSG_CHECKING(for \"-z ignore\" linker flag)
2483     case "`ld -h 2>&1`" in
2484       *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
2485         XE_PREPEND(-z ignore, ld_switch_site) ;;
2486       *) AC_MSG_RESULT(no) ;;
2487     esac
2488   fi
2489 fi
2490
2491 dnl ----------------------
2492 dnl Choose a window system
2493 dnl ----------------------
2494
2495 AC_CHECKING("for specified window system")
2496
2497 if test "$with_x11" != "no"; then
2498   dnl User-specified --x-includes or --x-libraries implies --with-x11.
2499   test "$x_includes $x_libraries" != "NONE NONE" && \
2500    window_system=x11 with_x11=yes
2501
2502   dnl Autodetection of X11 libraries and includes
2503   dnl -------------------------------------------
2504   dnl AC_PATH_XTRA thinks it can find our X headers and includes, but
2505   dnl it often gets it wrong, so we only use it as a last resort.
2506
2507   dnl $OPENWINHOME implies --x-includes and --x-libraries
2508   dnl Not (yet) handled by autoconf2
2509   if test "$x_includes $x_libraries" = "NONE NONE" \
2510     -a -n "$OPENWINHOME" \
2511     -a "$OPENWINHOME" != "/usr/openwin" \
2512     -a -d "$OPENWINHOME"; then
2513       test -d "$OPENWINHOME/lib"           && x_libraries="$OPENWINHOME/lib"
2514       test -d "$OPENWINHOME/include"       && x_includes="$OPENWINHOME/include"
2515       test -d "$OPENWINHOME/share/include" && x_includes="$OPENWINHOME/share/include"
2516   fi
2517
2518   if test "$x_includes" = "NONE"; then
2519     dnl AC_PATH_XTRA often guesses /usr/include, when some other
2520     dnl include directory is a MUCH better guess (Linux, HP-UX 10.20).
2521     dnl This is a workaround for idiot (esp. HP) system vendors, who
2522     dnl provide a /usr/include/X11, but DON'T FULLY POPULATE IT.
2523     for dir in "/usr/X11" "/usr/X11R6"; do
2524       if test -d "$dir/include/X11"; then x_includes="$dir/include"; break; fi
2525     done
2526   fi
2527
2528   if test "$x_libraries" = "NONE"; then
2529     for dir in "/usr/X11/lib" "/usr/X11R6/lib" "/usr/lib/X11R6"; do
2530       if test -r "$dir/libX11.a"; then x_libraries="$dir"; break; fi
2531     done
2532   fi
2533
2534   AC_PATH_XTRA # Autoconf claims to find X library and include dirs for us.
2535   if test "$no_x" = "yes"
2536   then with_x11=no  window_system=none HAVE_X_WINDOWS=no
2537   else with_x11=yes window_system=x11  HAVE_X_WINDOWS=yes
2538   fi
2539 fi
2540
2541 case "$with_x11" in
2542   yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
2543   no  ) window_system=none HAVE_X_WINDOWS=no  ;;
2544 esac
2545
2546 if test "$with_x11" = "yes"; then
2547   AC_DEFINE(HAVE_X_WINDOWS)
2548   XE_APPEND(lwlib, MAKE_SUBDIR)
2549   XE_APPEND(lwlib, SRC_SUBDIR_DEPS)
2550
2551   dnl Try to find Motif/CDE/Tooltalk dirs
2552   dnl These take precedence over other X libs/includes, so PRE-pend
2553   for lib_dir in "/usr/dt/lib" "/usr/lib/Motif2.1" "/usr/lib/Motif1.2" "/usr/lib/Motif1.1"; do
2554     inc_dir=`echo $lib_dir | sed -e 's/lib/include/'`
2555     if test -d "$lib_dir" -a -d "$inc_dir"; then
2556       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2557         x_libraries="$lib_dir $x_libraries"
2558         XE_PREPEND(-L${lib_dir}, X_LIBS) ;;
2559       esac
2560       case "$x_includes" in "$inc_dir"* ) ;; *)
2561         x_includes="$inc_dir $x_includes"
2562         XE_PREPEND(-I${inc_dir}, X_CFLAGS) ;;
2563       esac
2564       break; dnl only need ONE Motif implementation!
2565       fi
2566   done
2567
2568   dnl Contrib X libs/includes do NOT take precedence, so AP-pend
2569   for rel in "X11R6" "X11R5" "X11R4"; do
2570     lib_dir="/usr/contrib/$rel/lib" inc_dir="/usr/contrib/$rel/include"
2571     if test -d "$lib_dir" -a -d "$inc_dir"; then
2572       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2573         x_libraries="$x_libraries $lib_dir"
2574         XE_APPEND(-L${lib_dir}, X_LIBS)
2575       esac
2576       case "$x_includes" in "$inc_dir"* ) ;; *)
2577         x_includes="$x_includes $inc_dir"
2578         XE_APPEND(-I${inc_dir}, X_CFLAGS)
2579       esac
2580       break; dnl Only need ONE X11 implementation !
2581     fi
2582   done
2583
2584   dnl Avoid version mismatch for shared library libXm.so on osf4
2585   if test "$GCC" = yes -a -d /usr/shlib; then XE_APPEND(-L/usr/shlib, X_LIBS); fi
2586
2587   ld_switch_x_site="$X_LIBS"
2588
2589   XE_COMPUTE_RUNPATH()
2590
2591   if test "$extra_verbose" = "yes"; then
2592     echo; echo "X11 compilation variables:"
2593     PRINT_VAR(x_libraries x_includes X_CFLAGS X_LIBS X_PRE_LIBS X_EXTRA_LIBS)
2594     echo
2595   fi
2596
2597   dnl Set up bitmaps search path.
2598   dnl The original suggestion was to unconditionally to append X11/bitmaps
2599   dnl to each element of $x_includes, I'm pretty sure this is the wrong
2600   dnl thing to do.  We test for bitmaps and X11/bitmaps directories on each
2601   dnl element and add them to BITMAPDIR if they exist.
2602   bitmapdirs=
2603   if test "$x_includes" != NONE; then
2604     for i in $x_includes; do
2605       if test -d "$i/bitmaps"; then
2606         bitmapdirs="$i/bitmaps:$bitmapdirs"
2607       fi
2608       if test -d "$i/X11/bitmaps"; then
2609         bitmapdirs="$i/X11/bitmaps:$bitmapdirs"
2610       fi
2611     done
2612     bitmapdirs=`echo "$bitmapdirs" | sed s/.$//`
2613   fi
2614   test ! -z "$bitmapdirs" && AC_DEFINE_UNQUOTED(BITMAPDIR, "$bitmapdirs")
2615
2616   dnl Autodetect defines extracted from X config by xmkmf, e.g. NARROWPROTO
2617   AC_CHECKING(for X defines extracted by xmkmf)
2618   rm -fr conftestdir
2619   if mkdir conftestdir; then
2620     cd conftestdir
2621     cat > Imakefile <<'EOF'
2622 xetest:
2623         @echo ${PROTO_DEFINES} ${STD_DEFINES}
2624 EOF
2625     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2626       # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2627       xmkmf_defines=`${MAKE-make} xetest 2>/dev/null | grep -v make`
2628     fi
2629     cd ..
2630     rm -fr conftestdir
2631     for word in $xmkmf_defines; do
2632       case "$word" in
2633         -D*=* ) ;;
2634         -D* ) word=`echo '' $word | sed -e 's:^ *-D::'`
2635               AC_DEFINE_UNQUOTED($word) ;;
2636       esac
2637     done
2638   fi
2639
2640   dnl make sure we can find Intrinsic.h
2641   AC_CHECK_HEADER(X11/Intrinsic.h, ,
2642    [AC_MSG_ERROR("Unable to find X11 header files.")])
2643
2644   dnl -lXt and -lX11 are required
2645   dnl Some broken systems require the magic "-b i486-linuxaout" flag
2646   AC_CHECK_LIB(X11, XOpenDisplay, have_lib_x11=yes)
2647   if test "$have_lib_x11" != "yes"; then
2648     AC_CHECK_LIB(X11, XGetFontProperty,
2649       ld_switch_x_site="-b i486-linuxaout $ld_switch_x_site",
2650       [AC_MSG_ERROR("Unable to find X11 libraries.")],
2651       -b i486-linuxaout)
2652   fi
2653   libs_x="-lX11"
2654   test "$extra_verbose" = "yes" && echo "    Setting libs_x to \"-lX11\""
2655
2656   dnl Autodetect -lXext
2657   AC_CHECK_LIB(Xext, XShapeSelectInput, XE_PREPEND(-lXext, libs_x))
2658
2659   dnl Require -lXt
2660   AC_CHECK_LIB(Xt, XtOpenDisplay, XE_PREPEND(-lXt, libs_x),
2661     AC_MSG_ERROR("Unable to find X11 libraries."))
2662
2663   AC_MSG_CHECKING(the version of X11 being used)
2664   AC_TRY_RUN([#include <X11/Intrinsic.h>
2665     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }],
2666     [./conftest foobar; x11_release=$?],[x11_release=4],[x11_release=4])
2667   AC_MSG_RESULT(R${x11_release})
2668   AC_DEFINE_UNQUOTED(THIS_IS_X11R${x11_release})
2669
2670   AC_CHECK_FUNCS(XConvertCase)
2671
2672   AC_CHECK_HEADERS(X11/Xlocale.h)
2673
2674   dnl remove this - we should avoid checking for specific OS
2675   AC_MSG_CHECKING(for XFree86)
2676   if test -d "/usr/X386/include" -o \
2677           -f "/etc/XF86Config"    -o \
2678           -f "/etc/X11/XF86Config" -o \
2679           -f "/usr/X11R6/lib/X11/XF86Config"; then
2680     AC_MSG_RESULT(yes)
2681     AC_DEFINE(HAVE_XFREE386)
2682   else
2683     AC_MSG_RESULT(no)
2684   fi
2685
2686   dnl autodetect -lXmu
2687   test -z "$with_xmu" && { AC_CHECK_LIB(Xmu, XmuReadBitmapDataFromFile,
2688                            with_xmu=yes, with_xmu=no) }
2689   if test "$with_xmu" = "no"; then
2690     XE_ADD_OBJS(xmu.o)
2691   else
2692     XE_PREPEND(-lXmu, libs_x)
2693     AC_DEFINE(HAVE_XMU)
2694   fi
2695
2696   dnl Autodetect -lXbsd
2697   dnl #### Someone, please add a better function than main
2698   AC_CHECK_LIB(Xbsd, main, XE_PREPEND(-lXbsd, libs_x))
2699
2700   dnl Problem with the MIT distribution of X on AIX
2701   if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then
2702     dnl X11R6 requires thread-safe code on AIX for some reason
2703     if test "$GCC" = "yes"; then
2704       XE_PREPEND(-mthreads, X_CFLAGS)
2705       XE_PREPEND(-mthreads, libs_x)
2706     else
2707       case "$CC" in
2708         "xlc" ) CC="xlc_r" ;;
2709         "xlC" ) CC="xlC_r" ;;
2710         "cc"  ) CC="cc_r" ;;
2711       esac
2712     fi
2713   fi
2714
2715 fi dnl $with_x11 = yes
2716
2717 if test "$with_msw" != "no"; then
2718   AC_CHECKING(for MS-Windows)
2719   AC_CHECK_LIB(gdi32,main,with_msw=yes)
2720   if test "$with_msw" = "yes"; then
2721     AC_DEFINE(HAVE_MS_WINDOWS)
2722     install_pp="$blddir/lib-src/installexe.sh"
2723     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomctl32 -lwinspool, libs_system)
2724     test "$with_dragndrop" != no && XE_APPEND(msw, dragndrop_proto)
2725     if test "$window_system" != x11; then
2726         window_system=msw
2727         test "$with_scrollbars" != "no" && with_scrollbars=msw \
2728             && XE_ADD_OBJS(scrollbar-msw.o)
2729         test "$with_menubars"   != "no" && with_menubars=msw \
2730             && XE_ADD_OBJS(menubar-msw.o)
2731         test "$with_toolbars"   != "no" && with_toolbars=msw \
2732             && XE_ADD_OBJS(toolbar-msw.o)
2733         test "$with_dialogs"   != "no" && with_dialogs=msw \
2734             && XE_ADD_OBJS(dialog-msw.o)
2735         test "$with_widgets"   != "no" && with_widgets=msw
2736     else
2737         test "$with_scrollbars" != "no" && XE_ADD_OBJS(scrollbar-msw.o)
2738         test "$with_menubars"   != "no" && XE_ADD_OBJS(menubar-msw.o)
2739         test "$with_toolbars"   != "no" && XE_ADD_OBJS(toolbar-msw.o)
2740         test "$with_dialogs"    != "no" && XE_ADD_OBJS(dialog-msw.o)
2741     fi
2742     dnl check for our special version of select
2743     AC_TRY_RUN([#include <fcntl.h>
2744     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }],
2745     [AC_DEFINE(HAVE_MSG_SELECT)])
2746     with_file_coding=yes
2747     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)
2748   fi
2749 fi
2750
2751 AC_SUBST(install_pp)
2752
2753 test -z "$window_system" && window_system="none"
2754
2755 dnl Test for features that require a window system - ANY window system
2756 if test "$window_system" = "none"; then
2757   for feature in menubars scrollbars toolbars dialogs dragndrop xface
2758   do
2759     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2760        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
2761     fi
2762     eval "with_${feature}=no"
2763   done
2764 else
2765   test -z "$with_toolbars" && with_toolbars=yes
2766 fi
2767
2768 dnl ### Test for features that require mswindows support - currently none
2769 dnl ### MS-Windows folks: add code here..... (martin)
2770 if test "$with_msw" != "yes"; then
2771   for feature in   MARTIN_IS_CLUELESS_ABOUT_MSW_FEATURES
2772   do
2773     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2774        AC_MSG_WARN([--with-$feature ignored:  Not valid without MS-Windows support])
2775     fi
2776     eval "with_${feature}=no"
2777   done
2778 else
2779   :
2780 fi
2781
2782 dnl Test for features that require X11 support
2783 if test "$with_x11" != "yes"; then
2784   dnl It ought to be reasonable to have no output device at all, and only use
2785   dnl XEmacs in --batch mode.
2786   dnl if test "$with_tty" = "no" ; then
2787   dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
2788   dnl fi
2789   for feature in tooltalk cde offix wmcommand xim xmu nas_sound
2790   do
2791     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2792        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
2793     fi
2794     eval "with_${feature}=no"
2795   done
2796 fi
2797
2798 dnl FSF 19.29 has some bitmapdir stuff here.
2799 bitmapdir=
2800
2801 case "$window_system" in
2802   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
2803   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
2804   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
2805 esac
2806
2807 case "$x_libraries" in *X11R4* )
2808   test "$opsys" = "hpux9"     && opsysfile="s/hpux9-x11r4.h"
2809   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
2810 esac
2811
2812 dnl Enable or disable proper handling of WM_COMMAND
2813 AC_CHECKING(for WM_COMMAND option);
2814 dnl if test "$with_wmcommand" = "yes"; then
2815 if test "$with_wmcommand" != "no"; then
2816   AC_DEFINE(HAVE_WMCOMMAND)
2817 fi
2818
2819 dnl Autodetect Xauth
2820 dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
2821 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
2822 test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h,          ,with_xauth=no) }
2823 test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no) }
2824 test -z "$with_xauth" && with_xauth=yes
2825 if test "$with_xauth" = "yes"; then
2826   AC_DEFINE(HAVE_XAUTH)
2827   XE_SPACE(libs_xauth, $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
2828 fi
2829 AC_SUBST(libs_xauth)
2830
2831 dnl This one is for the static initializeds variables in
2832 dnl offix.c, so that the thing is dumped after lastfile.o
2833 AC_SUBST(dnd_objs)
2834
2835 dnl Autodetect tooltalk
2836 if test "$with_tooltalk" != "no" ; then
2837   dnl autodetect the location of tt_c.h
2838   dnl tt_c.h might be in Tt or desktop include directories
2839   for dir in "" "Tt/" "desktop/" ; do
2840     AC_CHECK_HEADER(${dir}tt_c.h, tt_c_h_file="${dir}tt_c.h"; break)
2841   done
2842   if test -z "$tt_c_h_file"; then
2843     if test "$with_tooltalk" = "yes"; then
2844       USAGE_ERROR("Unable to find required tooltalk header files.")
2845     fi
2846     with_tooltalk=no
2847   fi
2848 fi
2849 if test "$with_tooltalk" != "no" ; then
2850   for extra_libs in "" "-lI18N -lce" "-lcxx"; do
2851     AC_CHECK_LIB(tt, tt_message_create,
2852       tt_libs="-ltt $extra_libs"; break, [:],$extra_libs)
2853   done
2854   if test -z "$tt_libs"; then
2855     if test "$with_tooltalk" = "yes"; then
2856       USAGE_ERROR("Unable to find required tooltalk libraries.")
2857     fi
2858     with_tooltalk=no
2859   fi
2860 fi
2861 test -z "$with_tooltalk" && with_tooltalk=yes
2862 if test "$with_tooltalk" = "yes"; then
2863   AC_DEFINE(TOOLTALK)
2864   AC_DEFINE_UNQUOTED(TT_C_H_FILE, "$tt_c_h_file")
2865   XE_PREPEND($tt_libs, libs_x)
2866   XE_ADD_OBJS(tooltalk.o)
2867 fi
2868
2869 dnl Autodetect CDE
2870 test -z "$with_cde" && { AC_CHECK_HEADER(Dt/Dt.h,               , with_cde=no) }
2871 test -z "$with_cde" && { AC_CHECK_LIB(DtSvc, DtDndDragStart, [:], with_cde=no) }
2872 test -z "$with_cde" && with_cde=yes
2873 if test "$with_dragndrop" = no; then
2874   AC_MSG_WARN([No CDE without generic Drag'n'Drop support])
2875   with_cde=no
2876 fi
2877 if test "$with_cde" = "yes" ; then
2878   AC_DEFINE(HAVE_CDE)
2879   XE_PREPEND(-lDtSvc, libs_x)
2880   XE_APPEND(CDE, dragndrop_proto)
2881   with_tooltalk=yes # CDE requires Tooltalk
2882   need_motif=yes    # CDE requires Motif
2883 fi
2884
2885 dnl Always compile OffiX unless --without-offix is given, no
2886 dnl X11 support is compiled in, no standard Xmu is available,
2887 dnl or dragndrop support is disabled
2888 dnl Because OffiX support currently loses when more than one display
2889 dnl is in use, we now disable it by default -slb 07/10/1998.
2890 test "$window_system" != "x11" && with_offix=no
2891 if test "$with_xmu" != yes -a "$with_x11" = yes; then
2892   AC_MSG_WARN([No OffiX without real Xmu support])
2893   with_offix=no
2894 fi
2895 if test "$with_dragndrop" = no; then
2896   AC_MSG_WARN([No OffiX without generic Drag'n'Drop support])
2897   with_offix=no
2898 fi
2899 if test "$with_cde" = yes; then
2900   AC_MSG_WARN([CDE already found, disabling OffiX support])
2901   with_offix=no
2902 fi
2903 test -z "$with_offix" && with_offix=no
2904 if test "$with_offix" = "yes"; then
2905   AC_DEFINE(HAVE_OFFIX_DND)
2906   XE_APPEND(offix.o, dnd_objs)
2907   XE_APPEND(OffiX, dragndrop_proto)
2908 fi
2909
2910 dnl Autodetect Drag'n'Drop support
2911 dnl always included if CDE, Offix, or MSWindows are defined
2912 AC_MSG_CHECKING(if drag and drop API is needed)
2913 if test "$with_dragndrop" != "no" ; then
2914   if test -n "$dragndrop_proto" ; then
2915     with_dragndrop=yes
2916     AC_MSG_RESULT([yes (${dragndrop_proto} )])
2917     AC_DEFINE(HAVE_DRAGNDROP)
2918     XE_APPEND(dragdrop.o, extra_objs)
2919   else
2920     with_dragndrop=no
2921     AC_MSG_RESULT(no)
2922   fi
2923 fi
2924
2925 dnl Autodetect LDAP
2926 AC_CHECKING(for LDAP)
2927 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
2928 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
2929 if test "$with_ldap" != "no"; then
2930   AC_CHECK_LIB(ldap, ldap_search, with_ldap_nolber=yes, with_ldap_nolber=no)
2931   test "$with_ldap_nolber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_lber=yes, with_ldap_lber=no, -llber) }
2932   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) }
2933   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) }
2934   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
2935 fi
2936 if test "$with_ldap" = "yes"; then
2937   AC_DEFINE(HAVE_LDAP)
2938   XE_ADD_OBJS(eldap.o)
2939   if test "$with_ldap_nolber" = "yes" ; then
2940     XE_PREPEND(-lldap, LIBS)
2941   else
2942     if test "$with_ldap_krb" = "yes" ; then
2943       XE_PREPEND(-lkrb, LIBS)
2944     fi
2945     if test "$with_ldap_krbdes" = "yes" ; then
2946       XE_PREPEND(-ldes, LIBS)
2947       XE_PREPEND(-lkrb, LIBS)
2948     fi
2949     XE_PREPEND(-llber, LIBS)
2950     XE_PREPEND(-lldap, LIBS)
2951   fi
2952   AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result)
2953 fi
2954
2955 dnl Autodetect PostgreSQL
2956 dnl The default installation location (non-Linux) is /usr/local/pgsql;
2957 dnl  a different prefix can be selected at build/install time.  If PostgreSQL
2958 dnl  is installed into a different prefix, that prefix must be specified in
2959 dnl  in the --site-prefixes flag.
2960 dnl The default RPM-based Linux installation location is /usr.
2961 AC_CHECKING(for PostgreSQL)
2962 postgres_h_path=""
2963 postgres_includes_found=no
2964 save_c_switch_site="$c_switch_site"
2965
2966 dnl First, test standard location and site prefixes only:
2967 if test "$with_postgresql" != "no"; then
2968         AC_CHECK_HEADER(libpq-fe.h,postgres_includes_found=yes)
2969 fi
2970
2971 dnl Otherwise, test different known headers locations on linux:
2972 if test "$postgres_includes_found" = "no" -a "$with_postgresql" != "no" -a \
2973         -d "/usr/local/pgsql/include"; then
2974         c_switch_site="$c_switch_site -I/usr/local/pgsql/include"
2975         AC_CHECK_HEADER(libpq-fe.h,postgres_includes_found=yes)
2976         if test "$postgres_includes_found" != "yes"; then
2977                 postgres_h_path="/usr/local/pgsql/include"
2978         fi
2979         c_switch_site="$save_c_switch_site"
2980 fi
2981 if test "$postgres_includes_found" = "no" -a "$with_postgresql" != "no" -a \
2982         -d "/usr/include/pgsql"; then
2983         c_switch_site="$c_switch_site -I/usr/include/pgsql"
2984         AC_CHECK_HEADER(libpq-fe.h,postgres_includes_found=yes)
2985         if test "$postgres_includes_found" = "yes"; then
2986                 postgres_h_path="pgsql"
2987         fi
2988                 c_switch_site="$save_c_switch_site"
2989         fi
2990 if test "$postgres_includes_found" = "no" -a "$with_postgresql" != "no" -a \
2991         -d "/usr/include/postgresql"; then
2992         c_switch_site="$c_switch_site -I/usr/include/postgresql"
2993         AC_CHECK_HEADER(libpq-fe.h,postgres_includes_found=yes)
2994         if test "$postgres_includes_found" = "yes"; then
2995                 postgres_h_path="postgresql"
2996 fi
2997         c_switch_site="$save_c_switch_site"
2998 fi
2999
3000 dnl Finally, check if we can link with libpq:
3001 if test "$postgres_includes_found" = "yes"; then
3002         AC_CHECK_LIB(pq,PQconnectdb,with_postgresql=yes,with_postgresql=no)
3003 fi
3004 if test "$with_postgresql" = "yes"; then
3005         AC_CHECK_LIB(pq,PQconnectStart,with_postgresqlv7=yes,with_postgresqlv7=no)
3006 fi
3007 if test "$with_postgresql" = "yes"; then
3008         if test -n "$postgres_h_path"; then
3009                 AC_DEFINE_UNQUOTED(POSTGRES_H_PATH, $postgres_h_path)
3010         fi
3011         AC_DEFINE(HAVE_POSTGRESQL)
3012         if test "$with_postgresqlv7" = "yes"; then
3013                 AC_DEFINE(HAVE_POSTGRESQLV7)
3014         fi
3015         XE_PREPEND(-lpq, LIBS)
3016         XE_ADD_OBJS(postgresql.o)
3017 fi
3018
3019 dnl ----------------------
3020 dnl Graphics libraries
3021 dnl ----------------------
3022
3023 if test "$window_system" != "none"; then
3024   AC_CHECKING(for graphics libraries)
3025
3026   dnl Autodetect Xpm
3027   xpm_problem=""
3028   if test -z "$with_xpm"; then
3029     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
3030     xe_check_libs=-lXpm
3031     AC_TRY_RUN([#define XPM_NUMBERS
3032 #include <X11/xpm.h>
3033     int main(int c, char **v) {
3034     return c == 1 ? 0 :
3035       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
3036       XpmIncludeVersion < 30406 ? 2 : 0 ;}],
3037     [./conftest dummy_arg; xpm_status=$?;
3038       if test "$xpm_status" = "0"; then
3039         with_xpm=yes;
3040       else
3041         with_xpm=no;
3042         if test "$xpm_status" = "1"; then
3043           xpm_problem="Xpm library version and header file version don't match!"
3044         elif test "$xpm_status" = "2"; then
3045           xpm_problem="Xpm library version is too old!"
3046         else
3047           xpm_problem="Internal xpm detection logic error!"
3048         fi
3049         echo "
3050 *** WARNING *** $xpm_problem
3051   I'm not touching that with a 10-foot pole!
3052   If you really want to use the installed version of Xpm, rerun
3053   configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!"
3054     fi],
3055     [with_xpm=no])
3056     xe_check_libs=
3057     AC_MSG_RESULT($with_xpm)
3058   fi
3059   if test "$with_xpm" = "yes"; then
3060     AC_DEFINE(HAVE_XPM)
3061     XE_PREPEND(-lXpm, libs_x)
3062     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
3063     xe_check_libs=-lXpm
3064     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
3065     [xpm_for_msw=no],
3066     [xpm_for_msw=yes])
3067     xe_check_libs=
3068     AC_MSG_RESULT($xpm_for_msw)
3069     if test "$xpm_for_msw" = "yes"; then
3070       AC_DEFINE(FOR_MSW)
3071     fi
3072   fi
3073
3074   dnl Autodetect XFACE
3075   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
3076   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
3077   test -z "$with_xface" && with_xface=yes
3078   if test "$with_xface" = "yes"; then
3079     AC_DEFINE(HAVE_XFACE)
3080     XE_PREPEND(-lcompface, libs_x)
3081   fi
3082
3083   dnl For a brief period we had the GIF code split out into a separate library,
3084   dnl but patent problems, etc. sort of squashed that idea.
3085   dnl We default to building with builtin GIF decoding
3086   if test "$with_gif" != "no"; then
3087     with_gif="yes"
3088     AC_DEFINE(HAVE_GIF)
3089     XE_ADD_OBJS(dgif_lib.o gif_io.o)
3090   fi
3091
3092   dnl Too many stupid linkers can't detect cascaded lib dependencies until runtime
3093   dnl So we always search for libz compression support.
3094   if test "$with_png $with_tiff" != "no no"; then
3095     AC_CHECK_LIB(c,  inflate, [:], [
3096     AC_CHECK_LIB(z,  inflate, [XE_PREPEND(-lz,  libs_x)],[
3097     AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])])
3098   fi
3099
3100   dnl autodetect JPEG
3101   test -z "$with_jpeg" && { AC_CHECK_HEADER(jpeglib.h,                    ,with_jpeg=no) }
3102   test -z "$with_jpeg" && { AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,[:],with_jpeg=no) }
3103   test -z "$with_jpeg" && with_jpeg=yes
3104   if test "$with_jpeg" = "yes"; then
3105     AC_DEFINE(HAVE_JPEG)
3106     XE_PREPEND(-ljpeg, libs_x)
3107   fi
3108
3109   dnl autodetect PNG
3110   png_problem=""
3111   test -z "$with_png" && { AC_CHECK_FUNC(pow,                  ,with_png=no) }
3112   test -z "$with_png" && { AC_CHECK_HEADER(png.h,              ,with_png=no) }
3113   test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) }
3114   if test -z "$with_png"; then
3115     AC_MSG_CHECKING(for workable png version information)
3116     xe_check_libs="-lpng -lz"
3117     AC_TRY_RUN([#include <png.h>
3118     int main(int c, char **v) {
3119     if (c == 1) return 0;
3120     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
3121     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}],
3122     [./conftest dummy_arg; png_status=$?;
3123       if test "$png_status" = "0"; then
3124         with_png=yes;
3125       else
3126         with_png=no;
3127         if test "$png_status" = "1"; then
3128           png_problem="PNG library version and header file don't match!"
3129         elif test "$png_status" = "2"; then
3130           png_problem="PNG library version too old (pre 1.0.2)!"
3131         fi
3132         echo "
3133 *** WARNING *** $png_problem
3134   I'm not touching that with a 10-foot pole!
3135   If you really want to use the installed version of libPNG, rerun
3136   configure and add '--with-png=yes', but don't blame me if XEmacs crashes!"
3137     fi],
3138     [with_png=no])
3139     xe_check_libs=
3140     AC_MSG_RESULT($with_png)
3141   fi
3142   if test "$with_png" = "yes"; then
3143     AC_DEFINE(HAVE_PNG)
3144     XE_PREPEND(-lpng, libs_x)
3145   fi
3146
3147   dnl autodetect TIFF
3148   test -z "$with_tiff" && { AC_CHECK_HEADER(tiffio.h,            ,with_tiff=no) }
3149   test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no) }
3150   test -z "$with_tiff" && with_tiff=yes
3151   if test "$with_tiff" = "yes"; then
3152     AC_DEFINE(HAVE_TIFF)
3153     XE_PREPEND(-ltiff, libs_x)
3154   fi
3155 fi
3156
3157 dnl ----------------------
3158 dnl X-Specific Graphics libraries
3159 dnl ----------------------
3160
3161 if test "$with_x11" = "yes"; then
3162
3163   AC_CHECKING(for X11 graphics libraries)
3164
3165   AC_CHECKING(for the Athena widgets)
3166
3167   dnl What in heck did the user actually want?
3168   case "$with_athena" in
3169     dnl This is the default, old fashioned flat Athena.
3170     "xaw" | "") athena_variant=Xaw      athena_3d=no  ;;
3171     "3d")       athena_variant=Xaw3d    athena_3d=yes ;;
3172     "next")     athena_variant=neXtaw   athena_3d=yes ;;
3173     "95")       athena_variant=Xaw95    athena_3d=yes ;;
3174     "xpm")      athena_variant=XawXpm   athena_3d=yes ;;
3175     *)          XE_DIE("Unknown Athena widget set \`$with_athena'. This should not happen.") ;;
3176   esac
3177
3178   dnl Search for the Athena library...
3179   if test "$athena_3d" = "no"; then
3180     AC_CHECK_LIB($athena_variant, XawScrollbarSetThumb,
3181       [
3182         dnl Must not be a 3d library...
3183         AC_CHECK_LIB($athena_variant, threeDClassRec,
3184           AC_MSG_WARN("Could not find a non-3d Athena widget library."),
3185           athena_lib=$athena_variant)
3186       ],
3187       AC_MSG_WARN("Could not find an Athena widget library."))
3188   else
3189     dnl The real configuration, need 3d library
3190     AC_CHECK_LIB($athena_variant, threeDClassRec, athena_lib=$athena_variant,
3191       dnl OK, couldn't find it with a proper name, try the standard Athena lib
3192       dnl If that is 3d, presume the user asked for what they have installed.
3193       AC_CHECK_LIB(Xaw, threeDClassRec,
3194         [
3195           athena_lib=Xaw;
3196           AC_MSG_WARN("Assuming that libXaw is actually $athena_variant.");
3197         ],
3198         AC_MSG_WARN("Could not find a 3d Athena widget library that looked like $athena_variant.")))
3199   fi
3200
3201   dnl Now we locate the Athena headers that we need.
3202   if test "$athena_3d" = "no"; then
3203     AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
3204       AC_MSG_WARN("Could not find a non-3d Athena header set."),
3205       AC_CHECK_HEADER(X11/Xaw/XawInit.h,
3206         athena_h_path=X11/Xaw,
3207         AC_MSG_WARN("Could not find a non-3d Athena header set.")))
3208   else
3209     dnl The three-d Athena headers are so much more slippery.
3210     dnl Curse this `Lets replace standard libraries' thing that they did. :/
3211     AC_CHECK_HEADER(X11/$athena_variant/XawInit.h,
3212       AC_CHECK_HEADER(X11/$athena_variant/ThreeD.h,
3213         athena_h_path=X11/$athena_variant,))
3214
3215     dnl Is the variant specific header directory directly under include?
3216     if test -z "$athena_h_path"; then
3217       AC_CHECK_HEADER($athena_variant/XawInit.h,
3218         AC_CHECK_HEADER($athena_variant/ThreeD.h,
3219           athena_h_path=$athena_variant,))
3220     fi
3221
3222     dnl If we couldn't find the specific variant, try the generic Athena 3d headers
3223     if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
3224       AC_CHECK_HEADER(X11/Xaw3d/XawInit.h,
3225         AC_CHECK_HEADER(X11/Xaw3d/ThreeD.h,
3226           [
3227             AC_MSG_WARN("Assuming that X11/Xaw3d headers are suitable for $athena_variant.")
3228             athena_h_path=X11/Xaw3d
3229           ],))
3230     fi
3231
3232     dnl Also generic 3d headers directly under include dir
3233     if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
3234       AC_CHECK_HEADER(Xaw3d/XawInit.h,
3235         AC_CHECK_HEADER(Xaw3d/ThreeD.h,
3236           [
3237             AC_MSG_WARN("Assuming that Xaw3d headers are suitable for $athena_variant.")
3238             athena_h_path=Xaw3d
3239           ],))
3240     fi
3241
3242     dnl If nothing yet found, see if Xaw is a 3d header set...
3243     dnl We AC_MSG_WARN if we fail because I am all out of ideas...
3244     if test -z "$athena_h_path"; then
3245       AC_CHECK_HEADER(X11/Xaw/ThreeD.h,
3246         [
3247           AC_MSG_WARN("Assuming that X11/Xaw headers are suitable for $athena_variant.")
3248           athena_h_path=X11/Xaw
3249         ],
3250         AC_MSG_WARN("Could not find a suitable 3d Athena header set."))
3251     fi
3252   fi
3253
3254   dnl Do we actually have a usable Athena widget set? Please?
3255   if test -n "$athena_lib" -a -n "$athena_h_path"; then
3256     have_xaw=yes
3257   else
3258     have_xaw=no
3259   fi
3260
3261   dnl autodetect Motif - but only add to libs_x later (if necessary)
3262   AC_CHECK_HEADER(Xm/Xm.h,
3263    [AC_CHECK_LIB(Xm, XmStringFree, have_motif=yes, have_motif=no)],
3264    have_motif=no)
3265
3266   if test "$have_motif" = "yes"; then
3267     dnl autodetect lesstif
3268     AC_MSG_CHECKING(for Lesstif)
3269     AC_EGREP_CPP(yes,
3270 [#include <Xm/Xm.h>
3271 #ifdef LESSTIF_VERSION
3272 yes
3273 #endif
3274 ], have_lesstif=yes, have_lesstif=no)
3275   AC_MSG_RESULT($have_lesstif)
3276   fi
3277
3278 fi dnl "$with_x11" = "yes"
3279
3280 dnl Finish ensuring that we have values for the various toolkit items.
3281 dnl Not all toolkits support all widgets
3282 dnl if Motif is available we use it for the dialog boxes.
3283
3284 case "$with_menubars" in "" | "yes" | "athena" )
3285   with_menubars="lucid" ;;
3286 esac
3287 case "$with_dialogs" in "" | "yes" | "lucid" )
3288   if   test "$have_motif"     = "yes"; then with_dialogs="motif"
3289   elif test "$have_xaw"       = "yes"; then with_dialogs="athena"
3290   else with_dialogs=no
3291   fi ;;
3292 esac
3293 case "$with_scrollbars" in "" | "yes" )
3294   with_scrollbars="lucid" ;;
3295 esac
3296 case "$with_widgets" in "" | "yes" | "lucid")
3297   if   test "$have_motif" = "yes"; then with_widgets="motif"
3298   elif test "$have_xaw"   = "yes"; then with_widgets="athena"
3299   else with_widgets=no
3300   fi ;;
3301 esac
3302
3303 all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars $with_widgets"
3304
3305 case "$all_widgets" in
3306   *athena* )
3307     if test "$have_xaw" != "yes"; then
3308       XE_DIE("Could not find a suitable Athena library to build with.")
3309     fi
3310
3311     dnl Add the Lucid widget Athena code
3312     XE_APPEND(lwlib-Xaw.o, lwlib_objs)
3313
3314     dnl Add the Athena widget library we located earlier
3315     XE_PREPEND(-l$athena_lib, libs_x)
3316
3317     dnl Export the path for lwlib, used to build and include the headers
3318     dnl from the right place later on.
3319     AC_DEFINE_UNQUOTED(ATHENA_H_PATH, $athena_h_path)
3320
3321     AC_DEFINE(LWLIB_USES_ATHENA)
3322     AC_DEFINE(NEED_ATHENA)
3323
3324     if test "$athena_3d" = "yes"; then
3325       AC_DEFINE(HAVE_ATHENA_3D)
3326     fi
3327   ;;
3328 esac
3329
3330 case "$all_widgets" in *motif* )
3331   AC_DEFINE(LWLIB_USES_MOTIF)
3332   AC_DEFINE(NEED_MOTIF)
3333   XE_APPEND(lwlib-Xm.o, lwlib_objs)
3334   need_motif=yes ;;
3335 esac
3336
3337 test "$with_menubars"   = "lucid" && XE_APPEND(xlwmenu.o, lwlib_objs)
3338 test "$with_menubars"   = "motif" && XE_APPEND(xlwmenu.o, lwlib_objs)
3339 test "$with_scrollbars" = "lucid" && XE_APPEND(xlwscrollbar.o, lwlib_objs)
3340 test "$with_widgets"   != "no" && test "$with_widgets" != "msw" && \
3341         XE_APPEND(xlwtabs.o xlwgcs.o, lwlib_objs)
3342 case "$with_widgets" in athena* )
3343         XE_APPEND(xlwradio.o xlwcheckbox.o xlwgauge.o, lwlib_objs);;
3344 esac
3345 case "$all_widgets" in *lucid* )
3346   AC_DEFINE(NEED_LUCID)
3347   XE_APPEND(lwlib-Xlw.o, lwlib_objs) ;;
3348 esac
3349
3350 AC_SUBST(lwlib_objs)
3351
3352 test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA)
3353 test "$with_dialogs"    = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA)
3354
3355 if test "$athena_3d" = "yes"; then
3356   test "$with_scrollbars" = "athena" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
3357   test "$with_dialogs"    = "athena" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
3358 fi
3359
3360 case "$with_widgets" in athena* ) AC_DEFINE(LWLIB_WIDGETS_ATHENA);; esac
3361 test "$with_widgets" != "no" && test "$with_widgets" != "msw" && \
3362         AC_DEFINE(LWLIB_TABS_LUCID)
3363
3364 test "$with_menubars"   != "no"    && AC_DEFINE(HAVE_MENUBARS)
3365 test "$with_scrollbars" != "no"    && AC_DEFINE(HAVE_SCROLLBARS)
3366 test "$with_dialogs"    != "no"    && AC_DEFINE(HAVE_DIALOGS)
3367 test "$with_toolbars"   != "no"    && AC_DEFINE(HAVE_TOOLBARS)
3368 test "$with_widgets"    != "no"    && AC_DEFINE(HAVE_WIDGETS)
3369
3370 test "$with_menubars"   = "lucid"  && AC_DEFINE(LWLIB_MENUBARS_LUCID)
3371 test "$with_scrollbars" = "lucid"  && AC_DEFINE(LWLIB_SCROLLBARS_LUCID)
3372
3373 test "$with_menubars"   = "motif"  && AC_DEFINE(LWLIB_MENUBARS_MOTIF)
3374 test "$with_scrollbars" = "motif"  && AC_DEFINE(LWLIB_SCROLLBARS_MOTIF)
3375 test "$with_dialogs"    = "motif"  && AC_DEFINE(LWLIB_DIALOGS_MOTIF)
3376 test "$with_widgets"    = "motif"  && AC_DEFINE(LWLIB_WIDGETS_MOTIF)
3377
3378 test "$with_menubars"   != "no"    && XE_ADD_OBJS(menubar.o)
3379 test "$with_scrollbars" != "no"    && XE_ADD_OBJS(scrollbar.o)
3380 test "$with_dialogs"    != "no"    && XE_ADD_OBJS(dialog.o)
3381 test "$with_toolbars"   != "no"    && XE_ADD_OBJS(toolbar.o)
3382
3383 if test "$with_x11" = "yes"; then
3384   test "$with_menubars"   != "no"  && XE_ADD_OBJS(menubar-x.o)
3385   test "$with_scrollbars" != "no"  && XE_ADD_OBJS(scrollbar-x.o)
3386   test "$with_dialogs"    != "no"  && XE_ADD_OBJS(dialog-x.o)
3387   test "$with_toolbars"   != "no"  && XE_ADD_OBJS(toolbar-x.o)
3388   test "$all_widgets" != "no no no no no" && XE_ADD_OBJS(gui-x.o)
3389 fi
3390
3391 dnl ----------------------
3392 dnl Mule-dependent options
3393 dnl ----------------------
3394
3395 test -z "$with_mule" && with_mule=no
3396 test -z "$with_file_coding" && with_file_coding=no
3397
3398 dnl if test "$with_mule" = "yes" && test ! -d "$srcdir/lisp/mule"; then
3399 dnl     echo "Attempt to Build with Mule without Mule/Lisp"
3400 dnl     echo "Please install the XEmacs/Mule tarball or"
3401 dnl     echo "rerun configure with --with-mule=no"
3402 dnl     exit 1
3403 dnl fi
3404
3405 if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then
3406   AC_DEFINE(FILE_CODING)
3407   XE_ADD_OBJS(file-coding.o)
3408 fi
3409
3410 if test "$with_mule" = "yes" ; then
3411   AC_CHECKING(for Mule-related features)
3412   AC_DEFINE(MULE)
3413   AC_DEFINE(FILE_CODING)
3414   XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o)
3415   if test "$with_utf_2000" = "yes" && test "$with_text_coding" = "yes"; then
3416     AC_DEFINE(TEXT_CODING)
3417     XE_ADD_OBJS(text-coding.o)
3418   else
3419     XE_ADD_OBJS(file-coding.o)
3420   fi
3421   dnl Use -lintl to get internationalized strerror for Mule
3422   AC_CHECK_HEADERS(libintl.h)
3423   AC_CHECK_LIB(intl, strerror)
3424
3425   if test "$with_utf_2000" = "yes" ; then
3426     AC_DEFINE(CHAR_IS_UCS4)
3427     AC_DEFINE(UTF2000)
3428   fi
3429
3430   AC_CHECKING(for Mule input methods)
3431   dnl Do we have the XmIm* routines?  And if so, do we want to use them?
3432   dnl XIM seems to be flaky except on Solaris...
3433   dnl test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no
3434   case "$with_xim" in "" | "yes" )
3435     AC_CHECKING(for XIM)
3436     AC_CHECK_LIB(X11, XOpenIM, with_xim=xlib, with_xim=no)
3437     dnl XIM + Lesstif is not (yet?) usable
3438     if test "$have_motif $have_lesstif" = "yes no"; then
3439       AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif)
3440     fi ;;
3441   esac
3442   if test "$with_xim" != "no"; then
3443     AC_DEFINE(HAVE_XIM)
3444     if test "$with_xim" = "xlib"; then
3445       AC_DEFINE(XIM_XLIB)
3446       XE_ADD_OBJS(input-method-xlib.o)
3447     fi
3448     if test "$with_xim" = "motif"; then
3449       AC_DEFINE(XIM_MOTIF)
3450       need_motif=yes
3451       XE_ADD_OBJS(input-method-motif.o)
3452     fi
3453     if test "$with_xim" = "motif"; then
3454       with_xfs=no
3455     fi
3456   fi
3457
3458   dnl "with_xfs" = "yes"
3459   if test "$with_xfs" = "yes" ; then
3460     AC_CHECKING(for XFontSet)
3461     AC_CHECK_LIB(X11, XmbDrawString, [:], with_xfs=no)
3462     if test "$with_xfs" = "yes" && test "$with_menubars" = "lucid"; then
3463       AC_DEFINE(USE_XFONTSET)
3464       if test "$with_xim" = "no" ; then
3465         XE_ADD_OBJS(input-method-xfs.o)
3466       fi
3467     fi
3468   fi dnl with_xfs
3469
3470   dnl Autodetect WNN
3471   test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
3472   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/jllib.h, ,with_wnn=no) }
3473   dnl Detour to find crypt
3474   if test "$with_wnn" != "no"; then
3475     AC_CHECK_FUNCS(crypt)
3476     test "$ac_cv_func_crypt" != "yes" && { AC_CHECK_LIB(crypt, crypt) }
3477   fi
3478   dnl Back to our regularly scheduled wnn hunting
3479   if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
3480     AC_CHECK_LIB(wnn,jl_dic_list_e,libwnn=wnn,
3481       AC_CHECK_LIB(wnn4,jl_dic_list_e,libwnn=wnn4,
3482         AC_CHECK_LIB(wnn6,jl_dic_list_e,libwnn=wnn6,
3483           AC_CHECK_LIB(wnn6_fromsrc,dic_list_e,libwnn=wnn6_fromsrc,with_wnn=no))))
3484   fi
3485   test -z "$with_wnn" && with_wnn=yes
3486   if test "$with_wnn" = "yes"; then
3487     AC_DEFINE(HAVE_WNN)
3488     XE_PREPEND(-l$libwnn, libs_x)
3489     XE_ADD_OBJS(mule-wnnfns.o)
3490     if test "$with_wnn6" != "no"; then
3491       AC_CHECK_LIB($libwnn, jl_fi_dic_list, with_wnn6=yes)
3492       test "$with_wnn6" = "yes" && AC_DEFINE(WNN6)
3493     fi
3494   fi
3495
3496   dnl Autodetect canna
3497   canna_includes_found=no
3498   if test "$with_canna" != "no"; then
3499     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3500   fi
3501   if test "$canna_includes_found" = "no" -a "$with_canna" != "no" -a \
3502       -d "/usr/local/canna/include"; then
3503     save_c_switch_site="$c_switch_site"
3504     c_switch_site="$c_switch_site -I/usr/local/canna/include"
3505     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3506     if test "$canna_includes_found" != "yes"; then
3507       c_switch_site="$save_c_switch_site"
3508       with_canna="no"
3509     fi
3510   fi
3511
3512   test -z "$with_canna" && { AC_CHECK_HEADER(canna/RK.h,         , with_canna=no) }
3513   test -z "$with_canna" && { AC_CHECK_LIB(RKC, RkBgnBun,       [:],with_canna=no) }
3514   test -z "$with_canna" && { AC_CHECK_LIB(canna,jrKanjiControl,[:],with_canna=no) }
3515   test -z "$with_canna" && with_canna=yes
3516   if test "$with_canna" = "yes"; then
3517     AC_DEFINE(HAVE_CANNA)
3518     XE_PREPEND(-lcanna -lRKC, libs_x)
3519     XE_ADD_OBJS(mule-canna.o)
3520   fi
3521
3522 else dnl "$with_mule" = "no"
3523   for feature in xim canna wnn; do
3524     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3525       AC_MSG_WARN("--with-${feature} ignored:  Not valid without Mule support")
3526     fi
3527     eval "with_${feature}=no"
3528   done
3529 fi dnl with_mule
3530
3531
3532 dnl At this point, we know whether we need the motif lib or not.
3533 if test "$need_motif" = "yes" ; then
3534   XE_PREPEND(-lXm, libs_x)
3535   dnl AIX needs the following library for use with Motif
3536   AC_CHECK_LIB(i18n, layout_object_getvalue, [XE_PREPEND(-li18n, libs_x)])
3537   XE_COMPUTE_RUNPATH()
3538 fi
3539
3540 AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf fsync ftruncate umask)
3541
3542 dnl Use our own realpath always.
3543 XE_ADD_OBJS(realpath.o)
3544
3545 dnl Check whether the system provides getloadavg (Solaris 7 has it)
3546 AC_CHECK_FUNCS(getloadavg)
3547
3548 if test "$ac_cv_func_getloadavg" != "yes"
3549 then
3550   XE_ADD_OBJS(getloadavg.o)
3551
3552   dnl Used by getloadavg() - does not require root priveleges
3553   AC_CHECK_LIB(kstat, kstat_open)
3554
3555   dnl Another way to get the load average
3556   AC_CHECK_LIB(kvm, kvm_read)
3557 fi
3558
3559 dnl If netdb.h does not declare h_errno, we must declare it by hand.
3560 AC_MSG_CHECKING(whether netdb declares h_errno)
3561 AC_TRY_LINK([#include <netdb.h>],
3562   [return h_errno;],
3563   [AC_MSG_RESULT(yes)
3564    AC_DEFINE(HAVE_H_ERRNO)],
3565   [AC_MSG_RESULT(no)])
3566
3567 AC_MSG_CHECKING(for sigsetjmp)
3568 AC_TRY_COMPILE([#include <setjmp.h>],
3569         [sigjmp_buf bar; sigsetjmp (bar, 0);],
3570   [AC_MSG_RESULT(yes)
3571    AC_DEFINE(HAVE_SIGSETJMP)],
3572   [AC_MSG_RESULT(no)])
3573
3574 AC_MSG_CHECKING(whether localtime caches TZ)
3575 AC_CACHE_VAL(emacs_cv_localtime_cache,
3576 [if test "$ac_cv_func_tzset" = "yes"; then
3577 AC_TRY_RUN([#include <time.h>
3578 #if STDC_HEADERS
3579 # include <stdlib.h>
3580 #endif
3581 extern char **environ;
3582 unset_TZ ()
3583 {
3584   char **from, **to;
3585   for (to = from = environ; (*to = *from); from++)
3586     if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
3587       to++;
3588 }
3589 char TZ_GMT0[] = "TZ=GMT0";
3590 char TZ_PST8[] = "TZ=PST8";
3591 main()
3592 {
3593   time_t now = time ((time_t *) 0);
3594   int hour_GMT0, hour_unset;
3595   if (putenv (TZ_GMT0) != 0)
3596     exit (1);
3597   hour_GMT0 = localtime (&now)->tm_hour;
3598   unset_TZ ();
3599   hour_unset = localtime (&now)->tm_hour;
3600   if (putenv (TZ_PST8) != 0)
3601     exit (1);
3602   if (localtime (&now)->tm_hour == hour_GMT0)
3603     exit (1);
3604   unset_TZ ();
3605   if (localtime (&now)->tm_hour != hour_unset)
3606     exit (1);
3607   exit (0);
3608 }], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
3609 [# If we have tzset, assume the worst when cross-compiling.
3610 emacs_cv_localtime_cache=yes])
3611 else
3612         # If we lack tzset, report that localtime does not cache TZ,
3613         # since we can't invalidate the cache if we don't have tzset.
3614         emacs_cv_localtime_cache=no
3615 fi],[:])dnl
3616 AC_MSG_RESULT($emacs_cv_localtime_cache)
3617 if test $emacs_cv_localtime_cache = yes; then
3618   AC_DEFINE(LOCALTIME_CACHE)
3619 fi
3620
3621 if test "$HAVE_TIMEVAL" = "yes"; then
3622 AC_MSG_CHECKING(whether gettimeofday accepts one or two arguments)
3623 AC_TRY_LINK([
3624 #ifdef TIME_WITH_SYS_TIME
3625 #include <sys/time.h>
3626 #include <time.h>
3627 #else
3628 #ifdef HAVE_SYS_TIME_H
3629 #include <sys/time.h>
3630 #else
3631 #include <time.h>
3632 #endif
3633 #endif
3634   ],
3635   [
3636   struct timeval time;
3637   gettimeofday (&time, 0);
3638 ],
3639   [AC_MSG_RESULT(two)],
3640   [AC_MSG_RESULT(one)
3641    AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)])
3642 fi
3643
3644
3645 AC_C_INLINE
3646 test "$ac_cv_c_inline" != "no" -a "$GCC" = "yes" && XE_ADD_OBJS(inline.o)
3647
3648 dnl HP-UX has a working alloca in libPW.
3649 dnl case "${GCC}${opsys}" in hpux* )
3650 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
3651 dnl esac
3652
3653 AC_FUNC_ALLOCA
3654 test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
3655
3656 dnl Check whether vfork exists and works correctly. (This does more
3657 dnl than just check for its existence.) If so, it defines HAVE_VFORK_H.
3658 dnl If not, it defines vfork to be fork.
3659 AC_FUNC_VFORK
3660
3661 dnl Check whether strcoll exists and works correctly. (This does more
3662 dnl than just check for its existence.) If so, it defines HAVE_STRCOLL.
3663 AC_FUNC_STRCOLL
3664
3665 dnl If `getpgrp' takes no argument (the POSIX.1 version), define
3666 dnl `GETPGRP_VOID'.  Otherwise, it is the BSD version, which takes a
3667 dnl process ID as an argument.
3668 AC_CHECK_FUNCS(getpgrp)
3669 AC_FUNC_GETPGRP
3670
3671 dnl We used to call AC_FUNC_MMAP here
3672 dnl Instead we now use following, suggested by Neal Becker
3673 AC_MSG_CHECKING(for working mmap)
3674 case "$opsys" in ultrix* ) have_mmap=no ;; *)
3675 AC_TRY_RUN([#include <stdio.h>
3676 #include <unistd.h>
3677 #include <fcntl.h>
3678 #include <sys/mman.h>
3679
3680 #ifndef MAP_VARIABLE
3681 #define MAP_VARIABLE 0
3682 #endif
3683
3684 #ifndef MAP_FAILED
3685 #define MAP_FAILED -1
3686 #endif
3687
3688 int main (int argc, char *argv[])
3689 {
3690   int fd = -1;
3691   caddr_t p;
3692 #ifndef MAP_ANONYMOUS
3693   fd = open ("/dev/zero", O_RDWR);
3694   if (fd < 0)
3695     return 1;
3696 #define MAP_ANONYMOUS 0
3697 #endif
3698   if (mmap(0, 1024, PROT_READ | PROT_WRITE,
3699            MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS,
3700            fd, 0) != (void *) MAP_FAILED)
3701     return 0;
3702   perror ("conftest: mmap failed");
3703   return 1;
3704 }], have_mmap=yes, have_mmap=no) ;;
3705 esac
3706 AC_MSG_RESULT($have_mmap)
3707 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
3708
3709 dnl rel_alloc requires either GNU malloc or system malloc with mmap
3710 dnl We only turn rel_alloc on by default if mmap is available.
3711 test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
3712 if test "$rel_alloc $have_mmap" = "default yes"; then
3713   if test "$doug_lea_malloc" = "yes"; then
3714     dnl Check if malloc() calls mmap(), making rel_alloc pointless.
3715     AC_MSG_CHECKING(for M_MMAP_THRESHOLD)
3716     AC_TRY_COMPILE([#include <malloc.h>],[
3717 #ifndef M_MMAP_THRESHOLD
3718 #error No M_MMAP_THRESHOLD :-(
3719 !@+$%^&*_)(_ - unlikely to compile...
3720 #endif
3721 ], [rel_alloc=no; AC_MSG_RESULT(yes);], [rel_alloc=yes; AC_MSG_RESULT(no);])
3722   else
3723     rel_alloc=yes
3724   fi
3725 fi
3726 test "$rel_alloc" = "yes" && AC_DEFINE(REL_ALLOC)
3727
3728 dnl Check for terminal I/O variants
3729 dnl TERMIOS systems may have termio.h, but not vice-versa, I think.
3730 AC_CHECK_HEADER(termios.h,
3731   AC_DEFINE(HAVE_TERMIOS)
3732   AC_DEFINE(SIGNALS_VIA_CHARACTERS)
3733   AC_DEFINE(NO_TERMIO),
3734   [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])])
3735
3736
3737 dnl Check for Internet sockets.
3738 AC_CHECK_FUNC(socket,
3739  [AC_CHECK_HEADER(netinet/in.h,
3740    [AC_CHECK_HEADER(arpa/inet.h, [
3741   AC_DEFINE(HAVE_SOCKETS)
3742       AC_MSG_CHECKING("for sun_len member in struct sockaddr_un")
3743       AC_TRY_LINK([
3744 #include <sys/types.h>
3745 #include <sys/socket.h>
3746 #include <sys/un.h>
3747       ],
3748       [static struct sockaddr_un x; x.sun_len = 1;],
3749       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)],
3750       [AC_MSG_RESULT(no)])
3751       AC_MSG_CHECKING("for ip_mreq struct in netinet/in.h")
3752       AC_TRY_LINK([
3753 #include <sys/types.h>
3754 #include <netinet/in.h>
3755       ],
3756       [static struct ip_mreq x;],
3757       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MULTICAST)],
3758       [AC_MSG_RESULT(no)])])])])
3759
3760 dnl Check for SYS V IPC. (Inferior to sockets.)
3761 AC_CHECK_FUNC(msgget,
3762   [AC_CHECK_HEADER(sys/ipc.h,
3763     [AC_CHECK_HEADER(sys/msg.h,
3764       [AC_DEFINE(HAVE_SYSVIPC)])])])
3765
3766 dnl Check for directory variants
3767 AC_CHECK_HEADER(dirent.h, [AC_DEFINE(SYSV_SYSTEM_DIR)],
3768   [AC_CHECK_HEADER(sys/dir.h, , [AC_DEFINE(NONSYSTEM_DIR_LIBRARY)])])
3769
3770 dnl Check for nlist.h
3771 AC_CHECK_HEADER(nlist.h, AC_DEFINE(NLIST_STRUCT), )
3772
3773 dnl Check for sound of various sorts.
3774
3775 dnl Autodetect native sound
3776 AC_CHECKING("for sound support")
3777 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
3778
3779 if test "$with_native_sound" != "no"; then
3780   dnl Maybe sound is already on include path...
3781   if test -n "$native_sound_lib"; then
3782     AC_CHECK_HEADER(multimedia/audio_device.h,
3783       [sound_found=yes sound_cflags=""
3784       XE_ADD_OBJS(sunplay.o)])
3785   fi
3786
3787   dnl Autodetect Sun native sound from SUNWaudmo package
3788   if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
3789     sound_found=yes
3790     XE_ADD_OBJS(sunplay.o)
3791     if test -d "/usr/demo/SOUND/include"
3792       then sound_cflags="-I/usr/demo/SOUND/include"
3793       else sound_cflags="-I/usr/demo/SOUND"
3794     fi
3795     if test -z "$native_sound_lib" ; then
3796       if test -r "/usr/demo/SOUND/lib/libaudio.a"
3797         then native_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
3798         else native_sound_lib="/usr/demo/SOUND/libaudio.a"
3799       fi
3800     fi
3801   fi
3802
3803   dnl Check for SGI and HP native sound libs
3804   if test -z "$sound_found"; then
3805     case "$canonical" in
3806     *-sgi-* )
3807       if test -z "$native_sound_lib"; then
3808         AC_CHECK_LIB(audio, ALopenport, native_sound_lib="-laudio")
3809       fi
3810       if test -n "$native_sound_lib"; then
3811         sound_found=yes sound_cflags=""
3812         XE_ADD_OBJS(sgiplay.o)
3813       fi ;;
3814     hppa*-hp-hpux* )
3815       if test -z "$native_sound_lib"; then
3816         AC_CHECK_LIB(Alib, AOpenAudio, native_sound_lib="-lAlib")
3817       fi
3818       if test -n "$native_sound_lib"; then
3819         sound_found=yes
3820         XE_ADD_OBJS(hpplay.o)
3821         if test "$GCC" = "yes" # Kludge city
3822           then sound_cflags="-Dconst= -Dvolatile= -I/usr/audio/examples"
3823           else sound_cflags="+e -I/usr/audio/examples"
3824         fi
3825       fi ;;
3826     esac
3827   fi
3828
3829   dnl Check for Linux/BSD native sound
3830   if test -z "$sound_found"; then
3831     for dir in "machine" "sys" "linux"; do
3832       AC_CHECK_HEADER(${dir}/soundcard.h,
3833         sound_found=yes
3834        need_miscplay=yes
3835         XE_ADD_OBJS(linuxplay.o)
3836         [AC_DEFINE_UNQUOTED(SOUNDCARD_H_FILE, "${dir}/soundcard.h")]
3837         break)
3838     done
3839   fi
3840
3841   test "$sound_found" = "yes" && with_native_sound=yes
3842 fi
3843
3844 if test "$with_native_sound" = "yes"; then
3845   AC_DEFINE(HAVE_NATIVE_SOUND)
3846   test -n "$native_sound_lib" && XE_PREPEND($native_sound_lib, LIBS)
3847 fi
3848
3849 dnl NAS Sound support
3850 if test "$with_nas_sound" != "no"; then
3851   AC_CHECK_HEADER(audio/audiolib.h, [
3852     AC_CHECK_LIB(audio, AuOpenServer, have_nas_sound=yes)])
3853   if test "$have_nas_sound" = "yes"; then
3854     with_nas_sound=yes
3855     AC_DEFINE(HAVE_NAS_SOUND)
3856     XE_ADD_OBJS(nas.o)
3857     XE_PREPEND(-laudio, libs_x)
3858     dnl If the nas library does not contain the error jump point,
3859     dnl then we force safer behavior.
3860     AC_EGREP_HEADER(AuXtErrorJump,audio/Xtutil.h,,[old_nas=yes; AC_DEFINE(NAS_NO_ERROR_JUMP)])
3861   else
3862     test "$with_nas_sound" = "yes" && \
3863       XE_DIE("Required NAS sound support cannot be provided.")
3864     with_nas_sound=no
3865   fi
3866 fi
3867
3868 dnl ESD Sound support
3869 if test "$with_esd_sound" != "no"; then
3870   AC_CHECK_PROG(have_esd_config, esd-config, yes, no)
3871   if test "$have_esd_config" = "yes"; then
3872     save_c_switch_site="$c_switch_site" save_LIBS="$LIBS"
3873     XE_APPEND(`esd-config --cflags`, c_switch_site)
3874     XE_PREPEND(`esd-config --libs`, LIBS)
3875     AC_CHECK_FUNC(esd_play_stream,
3876       have_esd_sound=yes,
3877       c_switch_site="$save_c_switch_site" LIBS="$save_LIBS")
3878   fi
3879
3880   if test "$have_esd_sound" = "yes"; then
3881     with_esd_sound=yes
3882     need_miscplay=yes
3883     XE_ADD_OBJS(esd.o)
3884     AC_DEFINE(HAVE_ESD_SOUND)
3885   else
3886     test "$with_esd_sound" = "yes" && \
3887       XE_DIE("Required ESD sound support cannot be provided.")
3888     with_esd_sound=no
3889   fi
3890 fi
3891
3892 test "$need_miscplay" = "yes" && XE_ADD_OBJS(miscplay.o)
3893
3894 dnl ---------------------
3895 dnl TTY-dependent options
3896 dnl ---------------------
3897
3898 test -z "$with_tty" && with_tty=yes
3899
3900 if test "$with_tty" = "yes"  ; then
3901   AC_CHECKING(for TTY-related features)
3902   AC_DEFINE(HAVE_TTY)
3903   XE_ADD_OBJS(console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o)
3904
3905   dnl Autodetect ncurses.
3906   if test -z "$with_ncurses"; then
3907     AC_CHECK_LIB(ncurses, tgetent, with_ncurses=yes, with_ncurses=no)
3908   fi
3909   if test "$with_ncurses" = "yes"; then
3910     AC_DEFINE(HAVE_NCURSES)
3911     AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
3912     AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
3913     XE_ADD_OBJS(terminfo.o)
3914     XE_PREPEND(-lncurses, LIBS)
3915
3916     if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then
3917       dnl Try again, and check for the bogus ncurses/ include bug.
3918       dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
3919       dnl <ncurses/unctrl.h>)
3920       save_c_switch_site="$c_switch_site"
3921       c_switch_site="$c_switch_site -I/usr/include/ncurses"
3922       AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
3923       if test "$ac_cv_header_ncurses_curses_h" = "yes"
3924         then AC_MSG_WARN("Your system has the bogus ncurses include bug.")
3925         else c_switch_site="$save_c_switch_site"
3926       fi
3927     fi
3928   else dnl "$with_ncurses" = "no"
3929     dnl Autodetect terminfo/-lcurses/-ltermlib/-ltermcap
3930     if test "$have_terminfo" = "yes"; then
3931       XE_ADD_OBJS(terminfo.o)
3932       if test -n "$libs_termcap"; then
3933         XE_PREPEND($libs_termcap, LIBS)
3934       else
3935         for lib in curses termlib termcap; do
3936           AC_CHECK_LIB($lib, tgetent, XE_PREPEND(-l${lib}, LIBS); break)
3937         done
3938       fi
3939     else dnl "$have_terminfo" = "no" && "with_ncurses" = "no"
3940       XE_ADD_OBJS(tparam.o)
3941       dnl The HP-UX curses library seems to have a badly broken version of select(2)
3942       dnl that makes "poll: interrupted system call" messages to appear and
3943       dnl Emacs suprocesses to hang (e.g. TeX compilation w/ AUCTeX) */
3944       case "$opsys" in *-hp-hpux* ) libs_termcap="-ltermcap" ;; esac
3945       if test -n "$libs_termcap"; then
3946         XE_PREPEND($libs_termcap, LIBS)
3947       else
3948         AC_CHECK_LIB(curses, tgetent, XE_PREPEND(-lcurses, LIBS),
3949           AC_CHECK_LIB(termcap, tgetent, XE_PREPEND(-ltermcap, LIBS),
3950             XE_ADD_OBJS(termcap.o)))
3951       fi
3952     fi
3953   fi
3954   AC_DEFINE_UNQUOTED(CURSES_H_FILE, "${curses_h_file-curses.h}")
3955   AC_DEFINE_UNQUOTED(TERM_H_FILE, "${term_h_file-term.h}")
3956
3957   dnl Autodetect gpm
3958   test -z "$with_gpm" && { AC_CHECK_HEADER(gpm.h, , with_gpm=no) }
3959   test -z "$with_gpm" && { AC_CHECK_LIB(gpm, Gpm_Open, with_gpm=yes, with_gpm=no) }
3960   if test "$with_gpm" = "yes"; then
3961     AC_DEFINE(HAVE_GPM)
3962     XE_ADD_OBJS(gpmevent.o)
3963     XE_PREPEND(-lgpm, LIBS)
3964   fi
3965
3966 else dnl "$with_tty" = "no"
3967   for feature in ncurses gpm; do
3968     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3969       AC_MSG_WARN("--with-${feature} ignored:  Not valid without TTY support")
3970     fi
3971     eval "with_${feature}=no"
3972   done
3973 fi dnl with_tty
3974
3975 dnl Do we need event-unixoid.o ?
3976 test "$with_x11" = "yes" -o "$with_tty" = "yes" && XE_ADD_OBJS(event-unixoid.o)
3977
3978 dnl Database support
3979 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
3980 dnl On FreeBSD, both DB and DBM are part of libc.
3981 dnl By default, we check for DBM support in libgdbm, then libc, then libdbm.
3982
3983 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
3984   != "no no no" && AC_CHECKING(for database support)
3985
3986 dnl Check for ndbm.h, required for either kind of DBM support.
3987 if test "$with_database_gdbm $with_database_dbm" != "no no"; then
3988   AC_CHECK_HEADER(ndbm.h, [:], [
3989     test "$with_database_gdbm" = "yes" -o \
3990          "$with_database_dbm"  = "yes" && \
3991       XE_DIE("Required DBM support cannot be provided.")
3992     with_database_gdbm=no with_database_dbm=no])
3993 fi
3994
3995 dnl Check for DBM support in libgdbm.
3996 if test "$with_database_gdbm" != "no"; then
3997   AC_CHECK_LIB(gdbm, dbm_open, [
3998    with_database_gdbm=yes with_database_dbm=no libdbm=-lgdbm], [
3999    if test "$with_database_gdbm" = "yes"; then
4000      XE_DIE("Required GNU DBM support cannot be provided.")
4001    fi
4002    with_database_gdbm=no])
4003 fi
4004
4005 dnl Check for DBM support in libc and libdbm.
4006 if test "$with_database_dbm" != "no"; then
4007   AC_CHECK_FUNC(dbm_open, [with_database_dbm=yes libdbm=], [
4008     AC_CHECK_LIB(dbm, dbm_open, [with_database_dbm=yes libdbm=-ldbm], [
4009       test "$with_database_dbm" = "yes" && \
4010         XE_DIE("Required DBM support cannot be provided.")
4011       with_database_dbm=no])])
4012 fi
4013
4014 dnl Tell make about the DBM support we detected.
4015 test -n "$libdbm" && XE_PREPEND("$libdbm", LIBS)
4016 test "$with_database_gdbm" = "yes" -o \
4017      "$with_database_dbm"  = "yes" && \
4018   AC_DEFINE(HAVE_DBM)
4019
4020 dnl Check for Berkeley DB.
4021 if test "$with_database_berkdb" != "no"; then
4022   AC_MSG_CHECKING(for Berkeley db.h)
4023   for header in "db/db.h" "db.h"; do
4024     AC_TRY_COMPILE([
4025 #include <stdlib.h>
4026 #if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1)
4027 #ifdef HAVE_INTTYPES_H
4028 #define __BIT_TYPES_DEFINED__
4029 #include <inttypes.h>
4030 typedef uint8_t  u_int8_t;
4031 typedef uint16_t u_int16_t;
4032 typedef uint32_t u_int32_t;
4033 #ifdef WE_DONT_NEED_QUADS
4034 typedef uint64_t u_int64_t;
4035 #endif
4036 #endif
4037 #endif
4038 #include <$header>
4039 ],[], db_h_file="$header"; break)
4040   done
4041   if test -z "$db_h_file"
4042   then AC_MSG_RESULT(no); with_database_berkdb=no
4043   else AC_MSG_RESULT($db_h_file)
4044   fi
4045
4046   if test "$with_database_berkdb" != "no"; then
4047     AC_MSG_CHECKING(for Berkeley DB version)
4048     AC_EGREP_CPP(yes,
4049 [#include <$db_h_file>
4050 #if DB_VERSION_MAJOR > 1
4051 yes
4052 #endif
4053 ], [AC_MSG_RESULT(2); dbfunc=db_open], [AC_MSG_RESULT(1); dbfunc=dbopen])
4054     AC_CHECK_FUNC($dbfunc,     with_database_berkdb=yes need_libdb=no, [
4055     AC_CHECK_LIB(db, $dbfunc,  with_database_berkdb=yes need_libdb=yes)])
4056   fi
4057
4058   if test "$with_database_berkdb" = "yes"; then
4059     AC_DEFINE_UNQUOTED(DB_H_FILE, "$db_h_file")
4060     AC_DEFINE(HAVE_BERKELEY_DB)
4061     test "$need_libdb" = "yes" && XE_PREPEND(-ldb, LIBS)
4062   else with_database_berkdb=no
4063   fi
4064 fi
4065
4066 if test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
4067      != "no no no"; then
4068   AC_DEFINE(HAVE_DATABASE)
4069   XE_ADD_OBJS(database.o)
4070 fi
4071
4072 dnl Socks support
4073 if test "$with_socks" = "yes"; then
4074   AC_CHECK_LIB(socks, SOCKSinit)
4075   test -n "$ac_cv_lib_socks_SOCKSinit" && AC_DEFINE(HAVE_SOCKS)
4076 fi
4077
4078 dnl Usage tracking (undocumented and likely unused option)
4079 if test "$usage_tracking" = "yes"; then
4080   AC_DEFINE(USAGE_TRACKING)
4081   XE_PREPEND(-Bstatic -lut -Bdynamic, LIBS)
4082 fi
4083
4084 dnl autodetect dll support
4085 if test "$with_modules" != "no"; then
4086   AC_CHECKING(for module support)
4087
4088   dnl Find headers and libraries
4089   AC_CHECK_HEADER(dlfcn.h, [
4090     AC_CHECK_LIB(dl, dlopen, [ have_dl=yes libdl=dl], [
4091     AC_CHECK_LIB(c,  dlopen, [ have_dl=yes ])])])
4092   if test -n "$have_dl"; then
4093     AC_DEFINE(HAVE_DLOPEN)
4094   else
4095     AC_CHECK_LIB(dld, shl_load, [
4096       libdl=dld have_dl=yes;
4097       AC_DEFINE(HAVE_SHL_LOAD)], [
4098     AC_CHECK_LIB(dld, dld_init, [
4099       libdl=dld have_dl=yes;
4100       AC_DEFINE(HAVE_DLD_INIT)])])
4101   fi
4102
4103   if test -n "$have_dl"; then
4104     dnl XE_SHLIB_STUFF (in aclocal.m4) defines $can_build_shared
4105     XE_SHLIB_STUFF
4106   fi
4107
4108   if test "$can_build_shared" = "yes"; then
4109     AC_DEFINE(HAVE_SHLIB)
4110     XE_ADD_OBJS(sysdll.o emodules.o)
4111     XE_APPEND(src, INSTALL_ARCH_DEP_SUBDIR)
4112     test -n "$libdl" && XE_PREPEND(-l${libdl}, LIBS)
4113     AC_CHECK_FUNCS(dlerror _dlerror)
4114     with_modules=yes
4115   else
4116     if test "$with_modules" = "yes"; then
4117       XE_DIE("Required module support cannot be provided.")
4118     else
4119       AC_MSG_WARN("Module support cannot be provided.")
4120     fi
4121     with_modules=no
4122   fi
4123 fi
4124
4125 dnl Unfortunately, just because we can link doesn't mean we can run.
4126 dnl One of the above link tests may have succeeded but caused resulting
4127 dnl executables to fail to run.  Also any tests using AC_TRY_RUN will
4128 dnl have reported incorrect results.
4129 AC_TRY_RUN([int main(int c,char *v[]){return 0;}],[:],[
4130   echo ""
4131   echo "*** PANIC *** The C compiler can no longer build working executables."
4132   echo "*** PANIC *** Please examine the tail of config.log for runtime errors."
4133   echo "*** PANIC *** The most likely reason for this problem is that configure"
4134   echo "*** PANIC *** links with shared libraries, but those libraries cannot be"
4135   echo "*** PANIC *** found at run time."
4136   echo "*** PANIC ***"
4137   echo "*** PANIC *** On a Linux system, edit /etc/ld.so.conf and re-run ldconfig."
4138   echo "*** PANIC *** On other systems, try telling configure where to find the"
4139   echo "*** PANIC *** shared libraries using the --site-runtime-libraries option"
4140   echo "*** PANIC ***"
4141   echo "*** PANIC *** Another way to shoot yourself in the foot is to specify"
4142   echo "*** PANIC *** --with-FEATURE when FEATURE is not actually installed"
4143   echo "*** PANIC *** on your system.  Don't do that."
4144   exit 1])
4145
4146 dnl Process support
4147 if test "$win32_processes" = "yes"; then
4148   XE_ADD_OBJS(process-nt.o)
4149 else
4150   AC_DEFINE(HAVE_UNIX_PROCESSES)
4151   XE_ADD_OBJS(process-unix.o)
4152 fi
4153
4154 dnl --------------------------------
4155 dnl Compute SUBST-itutable variables
4156 dnl --------------------------------
4157
4158 dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM)
4159 dnl Use XE_SPACE instead of plain assignment statements to remove extraneous blanks
4160 XE_SPACE(CFLAGS, $CFLAGS)
4161 XE_SPACE(extra_objs, $extra_objs)
4162 XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system)
4163 XE_SPACE(c_switch_window_system, $c_switch_x_site $X_CFLAGS)
4164 XE_SPACE(c_switch_all, $c_switch_general $c_switch_window_system)
4165 XE_SPACE(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
4166 XE_SPACE(ld_switch_window_system, $ld_switch_x_site)
4167 XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system)
4168 XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
4169 XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $X_PRE_LIBS)
4170 XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general)
4171
4172 dnl Compute lists of Makefiles and subdirs
4173 AC_SUBST(SRC_SUBDIR_DEPS)
4174 XE_APPEND(src, MAKE_SUBDIR)
4175 internal_makefile_list="Makefile.in"
4176 SUBDIR_MAKEFILES=''
4177 test -d lock || mkdir lock
4178 for dir in $MAKE_SUBDIR; do
4179   case "$dir" in */* ) dnl Implement mkdir -p
4180     ( for d in `echo $dir | sed 's:/: :g'` ; do
4181         test -d "$d" || mkdir "$d"; cd "$d"
4182       done ) ;;
4183    * ) test -d "$dir" || mkdir "$dir" ;;
4184   esac
4185   XE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile $dir/GNUmakefile)
4186   XE_SPACE(internal_makefile_list, $internal_makefile_list $dir/Makefile.in)
4187 done
4188 AC_SUBST(INSTALL_ARCH_DEP_SUBDIR)
4189 AC_SUBST(MAKE_SUBDIR)
4190 AC_SUBST(SUBDIR_MAKEFILES)
4191
4192 dnl Make s&m symlinks in the src directory, for config.h
4193 for dir in src/s src/m; do
4194   if test ! -d "$dir" ; then
4195     echo Making symbolic link to "$srcdir/$dir"
4196     ${LN_S} "$srcdir/$dir" "$dir"
4197   fi
4198 done
4199
4200 if test "$extra_verbose" = "yes"; then
4201   echo ""
4202   PRINT_VAR(extra_objs
4203    c_switch_general  c_switch_window_system  c_switch_all
4204   ld_switch_general ld_switch_window_system ld_switch_all
4205     ld_libs_general   ld_libs_window_system   ld_libs_all)
4206   echo ""
4207 fi
4208
4209 dnl ----------------------------------------------
4210 dnl Create some auxiliary files for developers.
4211 dnl ----------------------------------------------
4212
4213 dnl Create a .gdbinit useful for debugging XEmacs
4214 if test -f "$srcdir/src/.gdbinit" -a ! -f "src/.gdbinit"; then
4215   test "$extra_verbose" = "yes" && echo "creating src/.gdbinit"
4216   echo "source $srcdir/src/.gdbinit" > "src/.gdbinit"
4217 fi
4218
4219 dnl Create a .dbxrc useful for debugging XEmacs
4220 if test -f "$srcdir/src/.dbxrc" -a ! -f "src/.dbxrc"; then
4221   test "$extra_verbose" = "yes" && echo "creating src/.dbxrc"
4222   echo ". $srcdir/src/.dbxrc" > "src/.dbxrc"
4223 fi
4224
4225 dnl Create a useful TAGS file
4226 if test -f "$srcdir/TAGS" -a ! -f "TAGS"; then
4227   test "$extra_verbose" = "yes" && echo "creating TAGS"
4228   echo "\f
4229 $srcdir/TAGS,include" > "TAGS"
4230 fi
4231
4232 dnl Create top level .sbinit for Sun compilers
4233 if test "$__SUNPRO_C" = "yes"; then
4234   test "$extra_verbose" = "yes" && echo "creating .sbinit"
4235   ( echo "# For use with Sun WorkShop's Source browser."
4236     echo "# See sbquery(1) and sbinit(4) for more information"
4237     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
4238   ) > .sbinit
4239 fi
4240
4241 dnl There are no more compile tests; remove the core they created.
4242 rm -f core
4243
4244 dnl ----------------------------------------------
4245 dnl Substitute into Makefile, config.h and paths.h
4246 dnl ----------------------------------------------
4247
4248 dnl what sort of things to edit into Makefile, config.h and paths.h
4249 dnl configuration here uncanonicalized to avoid exceeding size limits.
4250
4251 AC_SUBST(PROGNAME)
4252 AC_SUBST(version)
4253 AC_SUBST(configuration)
4254 AC_SUBST(canonical)
4255 AC_SUBST(inststaticdir)
4256 AC_SUBST(instvardir)
4257 AC_SUBST(srcdir)
4258 AC_SUBST(bindir)
4259 AC_SUBST(datadir)
4260 AC_SUBST(pkgdir)
4261 AC_SUBST(statedir)
4262 AC_SUBST(libdir)
4263 AC_SUBST(mandir)
4264
4265 AC_SUBST(prefix)
4266 AC_SUBST(PREFIX_USER_DEFINED)
4267 dnl Yo, Stephen Bourne!  I want to marry you!
4268 PREFIX=$prefix
4269 while true; do
4270   case "$PREFIX" in
4271     *\$* ) eval "PREFIX=$PREFIX" ;;
4272     *) break ;;
4273   esac
4274 done
4275 AC_SUBST(PREFIX)
4276
4277 AC_SUBST(exec_prefix)
4278 AC_SUBST(EXEC_PREFIX_USER_DEFINED)
4279 EXEC_PREFIX=$exec_prefix
4280 while true; do
4281   case "$EXEC_PREFIX" in
4282     *\$* ) eval "EXEC_PREFIX=$EXEC_PREFIX" ;;
4283     *) break ;;
4284   esac
4285 done
4286 AC_SUBST(EXEC_PREFIX)
4287
4288 AC_SUBST(infodir)
4289 AC_SUBST(INFODIR_USER_DEFINED)
4290 INFODIR=$infodir
4291 while true; do
4292   case "$INFODIR" in
4293     *\$* ) eval "INFODIR=$INFODIR" ;;
4294     *) break ;;
4295   esac
4296 done
4297 AC_SUBST(INFODIR)
4298
4299 AC_SUBST(infopath)
4300 AC_SUBST(INFOPATH_USER_DEFINED)
4301 INFOPATH=$infopath
4302 while true; do
4303   case "$INFOPATH" in
4304     *\$* ) eval "INFOPATH=$INFOPATH" ;;
4305     *) break ;;
4306   esac
4307 done
4308 AC_SUBST(INFOPATH)
4309
4310 AC_SUBST(package_path)
4311 AC_SUBST(PACKAGE_PATH_USER_DEFINED)
4312 PACKAGE_PATH=$package_path
4313 while true; do
4314   case "$PACKAGE_PATH" in
4315     *\$* ) eval "PACKAGE_PATH=$PACKAGE_PATH" ;;
4316     *) break ;;
4317   esac
4318 done
4319 AC_SUBST(PACKAGE_PATH)
4320
4321 AC_SUBST(lispdir)
4322 AC_SUBST(LISPDIR_USER_DEFINED)
4323 LISPDIR=$lispdir
4324 while true; do
4325   case "$LISPDIR" in
4326     *\$* ) eval "LISPDIR=$LISPDIR" ;;
4327     *) break ;;
4328   esac
4329 done
4330 AC_SUBST(LISPDIR)
4331
4332 AC_SUBST(moduledir)
4333 AC_SUBST(MODULEDIR_USER_DEFINED)
4334 MODULEDIR=$moduledir
4335 while true; do
4336   case "$MODULEDIR" in
4337     *\$* ) eval "MODULEDIR=$MODULEDIR" ;;
4338     *) break ;;
4339   esac
4340 done
4341 AC_SUBST(MODULEDIR)
4342
4343 AC_SUBST(sitelispdir)
4344 AC_SUBST(SITELISPDIR_USER_DEFINED)
4345 SITELISPDIR=$sitelispdir
4346 while true; do
4347   case "$SITELISPDIR" in
4348     *\$* ) eval "SITELISPDIR=$SITELISPDIR" ;;
4349     *) break ;;
4350   esac
4351 done
4352 AC_SUBST(SITELISPDIR)
4353
4354 AC_SUBST(sitemoduledir)
4355 AC_SUBST(SITEMODULEDIR_USER_DEFINED)
4356 SITEMODULEDIR=$sitemoduledir
4357 while true; do
4358   case "$SITEMODULEDIR" in
4359     *\$* ) eval "SITEMODULEDIR=$SITEMODULEDIR" ;;
4360     *) break ;;
4361   esac
4362 done
4363 AC_SUBST(SITEMODULEDIR)
4364
4365 AC_SUBST(etcdir)
4366 AC_SUBST(ETCDIR_USER_DEFINED)
4367 ETCDIR=$etcdir
4368 while true; do
4369   case "$ETCDIR" in
4370     *\$* ) eval "ETCDIR=$ETCDIR" ;;
4371     *) break ;;
4372   esac
4373 done
4374 AC_SUBST(ETCDIR)
4375
4376 AC_SUBST(lockdir)
4377 AC_SUBST(LOCKDIR_USER_DEFINED)
4378 LOCKDIR=$lockdir
4379 while true; do
4380   case "$LOCKDIR" in
4381     *\$* ) eval "LOCKDIR=$LOCKDIR" ;;
4382     *) break ;;
4383   esac
4384 done
4385 AC_SUBST(LOCKDIR)
4386
4387 AC_SUBST(docdir)
4388 AC_SUBST(DOCDIR_USER_DEFINED)
4389 DOCDIR=$docdir
4390 while true; do
4391   case "$DOCDIR" in
4392     *\$* ) eval "DOCDIR=$DOCDIR" ;;
4393     *) break ;;
4394   esac
4395 done
4396 AC_SUBST(DOCDIR)
4397
4398 AC_SUBST(archlibdir)
4399 AC_SUBST(ARCHLIBDIR_USER_DEFINED)
4400 ARCHLIBDIR=$archlibdir
4401 while true; do
4402   case "$ARCHLIBDIR" in
4403     *\$* ) eval "ARCHLIBDIR=$ARCHLIBDIR" ;;
4404     *) break ;;
4405   esac
4406 done
4407 AC_SUBST(ARCHLIBDIR)
4408
4409 AC_SUBST(docdir)
4410 AC_SUBST(bitmapdir)
4411 AC_SUBST(extra_objs)
4412
4413 dnl The following flags combine all the information from:
4414 dnl - command line options (user always gets priority)
4415 dnl - user environment variables
4416 dnl - determined by configure
4417 dnl - the s&m header files (required for ellcc)
4418 AC_SUBST(machfile)
4419 AC_SUBST(opsysfile)
4420 AC_SUBST(c_switch_general)
4421 AC_SUBST(c_switch_window_system)
4422 AC_SUBST(c_switch_all)
4423 AC_SUBST(ld_switch_general)
4424 AC_SUBST(ld_switch_window_system)
4425 AC_SUBST(ld_switch_all)
4426 AC_SUBST(ld_libs_general)
4427 AC_SUBST(ld_libs_window_system)
4428 AC_SUBST(ld_libs_all)
4429 AC_SUBST(CFLAGS)
4430 AC_SUBST(CPPFLAGS)
4431 AC_SUBST(LDFLAGS)
4432 RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
4433 AC_SUBST(RECURSIVE_MAKE)
4434
4435 AC_SUBST(native_sound_lib)
4436 AC_SUBST(sound_cflags)
4437 AC_SUBST(RANLIB)
4438 AC_SUBST(dynodump_arch)
4439
4440 dnl Preliminary support for using a different compiler for xemacs itself.
4441 dnl Useful for building XEmacs with a C++ or 64-bit compiler.
4442 : ${XEMACS_CC:=$CC}
4443 AC_SUBST(XEMACS_CC)
4444
4445 dnl The default is yes
4446 if test "$with_prefix" = "yes"; then
4447   AC_DEFINE(PREFIX_USER_DEFINED)
4448 fi
4449
4450 dnl The default is no
4451 if test "$with_site_lisp" = "no"; then
4452   AC_DEFINE(INHIBIT_SITE_LISP)
4453 fi
4454 dnl The default is yes
4455 if test "$with_site_modules" = "no"; then
4456   AC_DEFINE(INHIBIT_SITE_MODULES)
4457 fi
4458
4459 XE_SPACE(ac_configure_args, $ac_configure_args)
4460 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$configuration")
4461 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "$ac_configure_args")
4462 AC_DEFINE_UNQUOTED(config_machfile,  "$machfile")
4463 AC_DEFINE_UNQUOTED(config_opsysfile, "$opsysfile")
4464
4465 dnl Following are deprecated
4466
4467 null_string=""
4468 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE,     $null_string)
4469 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, $null_string)
4470 AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,      $null_string)
4471 AC_DEFINE_UNQUOTED(LD_SWITCH_SITE,       $null_string)
4472 AC_DEFINE_UNQUOTED(C_SWITCH_SITE,        $null_string)
4473
4474 dnl Note: as a general rule, *only* define things here that are not
4475 dnl autodetected.  For things that are autodetected, define them
4476 dnl at the point where the autodetection occurs or would occur,
4477 dnl so that the user gets immediate feedback on the results of the
4478 dnl autodetection.
4479
4480 if   test "$GNU_MALLOC"         = "yes"; then AC_DEFINE(GNU_MALLOC)
4481 elif test "$with_system_malloc" = "yes"; then AC_DEFINE(USE_SYSTEM_MALLOC)
4482 elif test "$with_debug_malloc"  = "yes"; then AC_DEFINE(USE_DEBUG_MALLOC)
4483                                               AC_DEFINE(USE_SYSTEM_MALLOC)
4484 fi
4485 test "$with_i18n3"         = "yes" && AC_DEFINE(I18N3)
4486 test "$GCC"                = "yes" && AC_DEFINE(USE_GCC)
4487 test "$external_widget"    = "yes" && AC_DEFINE(EXTERNAL_WIDGET)
4488 test "$quick_build"        = "yes" && AC_DEFINE(QUICK_BUILD)
4489 test "$with_purify"        = "yes" && AC_DEFINE(PURIFY)
4490 test "$with_quantify"      = "yes" && AC_DEFINE(QUANTIFY)
4491 test "$with_pop"           = "yes" && AC_DEFINE(MAIL_USE_POP)
4492 test "$with_kerberos"      = "yes" && AC_DEFINE(KERBEROS)
4493 test "$with_hesiod"        = "yes" && AC_DEFINE(HESIOD)
4494 test "$use_union_type"     = "yes" && AC_DEFINE(USE_UNION_TYPE)
4495 test "$pdump"              = "yes" && AC_DEFINE(PDUMP)
4496
4497 dnl -------------------------------
4498 dnl Report on what we decided to do
4499 dnl -------------------------------
4500
4501 (
4502 dnl /etc/osversion is on SONY NEWS-OS
4503 if test -f /etc/osversion; then dnl SONY NEWS-OS
4504   echo "osversion: `cat /etc/osversion`"
4505 else
4506   echo "uname -a: `uname -a`"
4507 fi
4508 echo ""
4509 echo "$0 $quoted_arguments"
4510 ) > Installation
4511
4512 if test ! -z ${emacs_beta_version} ; then
4513   if test -z "${emacs_is_beta}" ; then
4514         xemacs_betaname=".${emacs_beta_version}"
4515   else
4516         xemacs_betaname="-b${emacs_beta_version}"
4517   fi
4518 else
4519   xemacs_betaname=""
4520 fi
4521
4522 dnl Start stdout redirection to '| tee -a Installation'
4523 (
4524 echo "
4525
4526 XEmacs ${emacs_major_version}.${emacs_minor_version}${xemacs_betaname} \"$xemacs_codename\" configured for \`$canonical'.
4527 "
4528 echo "
4529 Compilation / Installation:"
4530 echo "  Source code location:              $srcdir"
4531 echo "  Installation prefix:               $prefix"
4532 if test -n "$site_includes"; then
4533   echo "  Additional header files:           $site_includes"
4534 fi
4535 if test -n "$site_libraries"; then
4536   echo "  Additional libraries:              $site_libraries"
4537 fi
4538 if test -n "$site_prefixes"; then
4539   echo "  Additional prefixes:               $site_prefixes"
4540 fi
4541 if test -n "$runpath"; then
4542   echo "  Runtime library search path:       $runpath"
4543 fi
4544 echo "  Operating system description file: \`$opsysfile'"
4545 echo "  Machine description file:          \`$machfile'"
4546 echo "  Compiler:                          $CC $CFLAGS"
4547 echo "  Relocating allocator for buffers:  $rel_alloc"
4548 echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
4549
4550 echo "
4551 Window System:"
4552 if test "$with_msw" = "yes"; then
4553   echo "  Compiling in support for the Microsoft window system."
4554 fi
4555 if test "$with_x11" = "yes"; then
4556   echo "  Compiling in support for the X window system:"
4557   echo "    - X Windows headers location:                 $x_includes"
4558   echo "    - X Windows libraries location:               $x_libraries"
4559   if test "$with_xauth" != yes; then
4560     echo "    - Xau (X authority) not available."
4561   fi
4562   if test "$with_xmu" != yes; then
4563     echo "    - Xmu library not available; substituting equivalent routines."
4564   fi
4565   if test "$with_wmcommand" != no; then
4566     echo "    - Handling WM_COMMAND properly."
4567   fi
4568 fi
4569 if test "$have_xaw" = "yes"; then
4570   echo "  Compiling in support for the Athena widget set:"
4571   echo "    - Athena headers location:                    $athena_h_path"
4572   echo "    - Athena library to link:                     $athena_lib"
4573 fi
4574 case "$with_menubars" in
4575   lucid ) echo "  Using Lucid menubars." ;;
4576   motif ) echo "  Using Motif menubars."
4577           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
4578           echo "             We recommend using the Lucid menubar instead."
4579           echo "             Re-run configure with --with-menubars='lucid'." ;;
4580     msw ) echo "  Using MS-Windows menubars." ;;
4581 esac
4582 case "$with_scrollbars" in
4583   lucid  ) echo "  Using Lucid scrollbars."      ;;
4584   motif  ) echo "  Using Motif scrollbars."      ;;
4585   athena ) echo "  Using Athena scrollbars."     ;;
4586      msw ) echo "  Using MS-Windows scrollbars." ;;
4587 esac
4588 case "$with_dialogs" in
4589   motif  ) echo "  Using Motif dialog boxes."
4590            if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
4591              echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
4592              echo "             We recommend using the Athena dialog boxes instead."
4593              echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
4594              echo "             Read the PROBLEMS file for more information."
4595            fi; fi ;;
4596   athena ) echo "  Using Athena dialog boxes."     ;;
4597      msw ) echo "  Using MS-Windows dialog boxes." ;;
4598 esac
4599 case "$with_widgets" in
4600   motif  ) echo "  Using Motif native widgets."      ;;
4601   athena ) echo "  Using Athena native widgets."     ;;
4602      msw ) echo "  Using MS-Windows native widgets." ;;
4603 esac
4604 if test "$with_dragndrop" = yes; then
4605   echo "  Compiling in support for Drag'n'Drop (EXPERIMENTAL)."
4606   echo "    -  Drag'n'Drop prototype:                             $dragndrop_proto."
4607 fi
4608
4609 echo "
4610 TTY:"
4611 test "$with_ncurses" = yes && echo "  Compiling in support for ncurses."
4612 test "$with_gpm" = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
4613
4614 echo "
4615 Images:"
4616 test "$with_gif" = yes && echo "  Compiling in support for GIF  images (builtin)."
4617 if test "$with_xpm" = yes; then
4618   echo "  Compiling in support for XPM  images."
4619 elif test "$with_x11" = yes; then
4620   echo "  WARNING: -----------------------------------------------------------"
4621   echo "  WARNING: Compiling without XPM image support."
4622   if test "$xpm_problem" != ""; then
4623     echo "  Reason: $xpm_problem"
4624   fi
4625   echo "  WARNING: You should strongly consider installing XPM."
4626   echo "  WARNING: Otherwise toolbars and other graphics will look suboptimal."
4627   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
4628   echo "  WARNING: -----------------------------------------------------------"
4629 fi
4630 if test "$with_png" = yes; then
4631   echo "  Compiling in support for PNG  images."
4632 elif test "$window_system" != "none"; then
4633   echo "  WARNING: -----------------------------------------------------------"
4634   echo "  WARNING: Compiling without PNG image support."
4635   if test "$png_problem" != ""; then
4636     echo "  Reason: $png_problem"
4637   fi
4638   echo "  WARNING: You should strongly consider installing the PNG libraries."
4639   echo "  WARNING: Otherwise certain images and glyphs may not display."
4640   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
4641   echo "  WARNING: -----------------------------------------------------------"
4642 fi
4643 test "$with_jpeg" = yes && echo "  Compiling in support for JPEG images."
4644 test "$with_tiff" = yes && echo "  Compiling in support for TIFF images."
4645 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
4646
4647 echo "
4648 Sound:"
4649 test "$with_native_sound" = yes && echo "  Compiling in support for sound (native)."
4650 test "$with_nas_sound" = yes && echo "  Compiling in support for NAS (network audio system)."
4651 test "$old_nas" = yes && echo "    - NAS library lacks error trapping; will play synchronously."
4652 test "$with_esd_sound" = yes && echo "  Compiling in support for ESD (Enlightened Sound Daemon)."
4653
4654 echo "
4655 Databases:"
4656 test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley database."
4657 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
4658 test "$with_database_gdbm"   = yes && echo "  Compiling in support for GNU DBM."
4659 test "$with_ldap" = yes && echo "  Compiling in support for LDAP."
4660 if test "$with_postgresql" = yes; then
4661   echo "  Compiling in support for PostgreSQL."
4662   if test "$with_postgresqlv7" = yes; then
4663     echo "    - Using PostgreSQL V7 bindings."
4664   fi
4665   if test -n "$postgres_h_path"; then
4666     echo "    - PostgreSQL headers location:  $postgres_h_path"
4667   fi
4668 fi
4669
4670 echo "
4671 Internationalization:"
4672 test "$with_mule" = yes && echo "  Compiling in support for Mule (multi-lingual Emacs)."
4673 test "$with_utf_2000" = yes && echo "  Using UTF-2000 (UTF-8) buffer/string representation."
4674 test "$with_text_coding" = yes && echo "  Compiling in support for text coding."
4675 test "$with_file_coding" = yes && echo "  Compiling in support for file coding."
4676 test "$with_xim" != no && echo "  Compiling in support for XIM (X11R5+ I18N input method)."
4677 test "$with_xim" = motif && echo "    - Using Motif to provide XIM support."
4678 test "$with_xim" = xlib && echo "    - Using raw Xlib to provide XIM support."
4679 test "$with_xfs" = yes && echo "    - Using XFontSet to provide bilingual menubar."
4680 test "$with_canna" = yes && echo "  Compiling in support for Canna on Mule."
4681 if test "$with_wnn" = yes; then
4682   echo "  Compiling in support for the WNN input method on Mule."
4683   test "$with_wnn6" = yes && echo "    - Using WNN version 6."
4684 fi
4685 test "$with_i18n3" = yes && echo "  Compiling in support for I18N level 3 (doesn't currently work)."
4686
4687 echo "
4688 Mail:"
4689 test "$with_pop" = yes && echo "  Compiling in support for POP mail retrieval."
4690 test "$with_kerberos" = yes && echo "  Compiling in support for Kerberos POP authentication."
4691 test "$with_hesiod" = yes && echo "  Compiling in support for Hesiod POP server access."
4692 echo "  Compiling in support for \"$mail_locking\" mail spool file locking method."
4693
4694 echo "
4695 Other Features:"
4696 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
4697 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
4698 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
4699 test "$with_dnet" = yes && echo "  Compiling in support for DNET."
4700 test "$with_modules" = "yes" && echo "  Compiling in support for dynamic shared object modules."
4701 test "$with_clash_detection" != "no" && \
4702   echo "  Clash detection will use \"$lockdir\" for locking files."
4703 test "$use_union_type" = yes && echo "  Using the union type for Lisp_Objects."
4704 test "$pdump" = yes && echo "  Using the new portable dumper."
4705 test "$debug" = yes && echo "  Compiling in support for extra debugging code."
4706 test "$usage_tracking" = yes && echo "  Compiling in support for active usage tracking (Sun internal)."
4707 if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc $error_check_glyphs" \
4708   != "no no no no no no"; then
4709   echo "  WARNING: ---------------------------------------------------------"
4710   echo "  WARNING: Compiling in support for runtime error checking."
4711   echo "  WARNING: XEmacs will run noticeably more slowly as a result."
4712   echo "  WARNING: Error checking is on by default for XEmacs beta releases."
4713   echo "  WARNING: ---------------------------------------------------------"
4714 fi
4715 echo ""
4716 ) | tee -a Installation
4717 dnl echo "The above configure report is appended to \"Installation\" file."
4718 echo ""
4719
4720 dnl -----------------------------------
4721 dnl Now generate config.h and Makefiles
4722 dnl -----------------------------------
4723 dnl This has to be called in order for this variable to get into config.status
4724 AC_SUBST(internal_makefile_list)
4725 # Remove any trailing slashes in these variables.
4726 test -n "$prefix" &&
4727   prefix=`echo '' "$prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4728 test -n "$exec_prefix" &&
4729   exec_prefix=`echo '' "$exec_prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4730
4731 dnl Build Makefile.in's from Makefile.in.in's
4732 dnl except ./Makefile from $srcdir/Makefile.in
4733
4734 for file in $internal_makefile_list; do
4735   test "$file" = src/Makefile.in && \
4736     file="src/Makefile.in:src/Makefile.in.in:src/depend"
4737   XE_APPEND($file, ac_output_files)
4738 done
4739 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
4740 test "$with_modules" = "yes" && XE_APPEND(lib-src/ellcc.h, ac_output_files)
4741
4742 AC_OUTPUT($ac_output_files,
4743 [for dir in . $MAKE_SUBDIR; do
4744   (
4745     cd $dir
4746     rm -f junk.c
4747     < Makefile.in \
4748       sed -e '/^# Generated/d' \
4749           -e 's%/\*\*/#.*%%' \
4750           -e 's/^ *# */#/' \
4751 dnl Delete Makefile.in.in comment lines
4752           -e '/^##/d' \
4753 dnl Pass through CPP directives unchanged
4754           -e '/^#/ {
4755 p
4756 d
4757 }'        \
4758 dnl Quote other lines to protect from CPP substitution
4759           -e '/./ {
4760 s/\([[\"]]\)/\\\1/g
4761 s/^/"/
4762 s/$/"/
4763 }'  > junk.c;
4764
4765 dnl Create a GNUmakefile and Makefile from Makefile.in.
4766
4767 changequote(<<,>>)dnl
4768 dnl CPP_MAKEFILE(CPPFLAGS,filename)
4769 define(<<CPP_MAKEFILE>>,
4770 echo creating $dir/<<$2>>
4771 $CPP -I. -I${top_srcdir}/src <<$1>> junk.c \
4772 dnl Delete line directives inserted by $CPP
4773   | sed -e 's/^\#.*//'          \
4774 dnl Delete spurious blanks inserted by $CPP
4775         -e 's/^[ TAB][ TAB]*$//'\
4776         -e 's/^ /TAB/'          \
4777 dnl Delete blank lines
4778   | sed -n -e '/^..*$/p'        \
4779 dnl Restore lines quoted above to original contents.
4780   | sed '/^\"/ {
4781         s/\\\([\"]\)/\1/g
4782         s/^[ TAB]*\"//
4783         s/\"[ TAB]*$//
4784 }' > Makefile.new
4785     chmod 444 Makefile.new
4786     mv -f Makefile.new <<$2>>
4787 )dnl CPP_MAKEFILE
4788
4789     CPP_MAKEFILE(,Makefile)
4790     CPP_MAKEFILE(-DUSE_GNU_MAKE,GNUmakefile)
4791 changequote([,])dnl
4792     rm -f junk.c
4793   )
4794 done
4795
4796 dnl Append AC_DEFINE information to lib-src/config.values
4797 dnl (AC_SUBST information is already there (see config.values.sh).
4798 sed < config.status >> lib-src/config.values \
4799   -e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \
4800   -e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \
4801   -e 's/^\([[^ ]]*\) $/\1 ""/' \
4802   -e 's/ 1$/ t/'
4803
4804 ],
4805 [CPP="$CPP"
4806  top_srcdir="$srcdir"
4807  MAKE_SUBDIR="$MAKE_SUBDIR"
4808 ])dnl