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