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