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