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