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