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