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