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