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