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