XEmacs 21.2-b3
[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     test "$with_dragndrop" != no && XE_APPEND(msw, dragndrop_proto)
2446     if test "$window_system" != x11; then
2447         window_system=msw
2448         test "$with_scrollbars" != "no" && with_scrollbars=msw \
2449             && XE_ADD_OBJS(scrollbar-msw.o)
2450         test "$with_menubars"   != "no" && with_menubars=msw \
2451             && XE_ADD_OBJS(menubar-msw.o)
2452         test "$with_toolbars"   != "no" && with_toolbars=msw \
2453             && XE_ADD_OBJS(toolbar-msw.o)
2454         test "$with_dialogs"   != "no" && with_dialogs=msw \
2455             && XE_ADD_OBJS(dialog-msw.o)
2456     else
2457         test "$with_scrollbars"   != "no" && XE_ADD_OBJS(scrollbar-msw.o)
2458         test "$with_menubars"   != "no" && XE_ADD_OBJS(menubar-msw.o)
2459         test "$with_toolbars"   != "no" && XE_ADD_OBJS(toolbar-msw.o)
2460         test "$with_dialogs"   != "no" && XE_ADD_OBJS(dialog-msw.o)
2461     fi
2462     dnl check for our special version of select         
2463     AC_TRY_RUN([#include <fcntl.h>
2464     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }],
2465     [AC_DEFINE(HAVE_MSG_SELECT)])
2466     const_is_losing=no
2467     with_file_coding=yes
2468     use_minimal_tagbits=yes
2469     use_indexed_lrecord_implementation=yes
2470     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)
2471   fi
2472 fi
2473
2474 AC_SUBST(install_pp)
2475
2476 test -z "$window_system" && window_system="none"
2477
2478 dnl Test for features that require a window system - ANY window system
2479 if test "$window_system" = "none"; then
2480   for feature in menubars scrollbars toolbars dialogs dragndrop
2481   do
2482     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2483        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
2484     fi
2485     eval "with_${feature}=no"
2486   done
2487 else
2488   test -z "$with_toolbars" && with_toolbars=yes
2489 fi
2490
2491 dnl ### Test for features that require mswindows support - currently none
2492 dnl ### MS-Windows folks: add code here..... (martin)
2493 if test "$with_msw" != "yes"; then
2494   for feature in   MARTIN_IS_CLUELESS_ABOUT_MSW_FEATURES
2495   do
2496     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2497        AC_MSG_WARN([--with-$feature ignored:  Not valid without MS-Windows support])
2498     fi
2499     eval "with_${feature}=no"
2500   done
2501 else
2502   :
2503 fi
2504
2505 dnl Test for features that require X11 support
2506 if test "$with_x11" != "yes"; then
2507   dnl It ought to be reasonable to have no output device at all, and only use
2508   dnl XEmacs in --batch mode.
2509   dnl if test "$with_tty" = "no" ; then
2510   dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
2511   dnl fi
2512   for feature in tooltalk cde offix session xim xmu \
2513                  xface
2514   do
2515     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2516        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
2517     fi
2518     eval "with_${feature}=no"
2519   done
2520 fi
2521
2522 dnl FSF 19.29 has some bitmapdir stuff here.
2523 bitmapdir=
2524
2525 case "$window_system" in
2526   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
2527   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
2528   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
2529 esac
2530
2531 case "$x_libraries" in *X11R4* )
2532   test "$opsys" = "hpux9"     && opsysfile="s/hpux9-x11r4.h"
2533   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
2534 esac
2535
2536 dnl Enable or disable proper session-management
2537 AC_CHECKING(for session-management option);
2538 dnl if test "$with_session" = "yes"; then
2539 if test "$with_session" != "no"; then
2540   AC_DEFINE(HAVE_SESSION)
2541 fi
2542
2543 dnl Autodetect Xauth
2544 dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
2545 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
2546 test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h,          ,with_xauth=no) }
2547 test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no) }
2548 test -z "$with_xauth" && with_xauth=yes
2549 if test "$with_xauth" = "yes"; then
2550   AC_DEFINE(HAVE_XAUTH)
2551   XE_SPACE(libs_xauth, $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
2552 fi
2553 AC_SUBST(libs_xauth)
2554
2555 dnl This one is for the static initializeds variables in
2556 dnl offix.c, so that the thing is dumped after lastfile.o
2557 AC_SUBST(dnd_objs)
2558
2559 dnl Autodetect tooltalk
2560 if test "$with_tooltalk" != "no" ; then
2561   dnl autodetect the location of tt_c.h
2562   dnl tt_c.h might be in Tt or desktop include directories
2563   for dir in "" "Tt/" "desktop/" ; do
2564     AC_CHECK_HEADER(${dir}tt_c.h, tt_c_h_path="${dir}tt_c.h"; break)
2565   done
2566   if test -z "$tt_c_h_path"; then
2567     if test "$with_tooltalk" = "yes"; then
2568       USAGE_ERROR("Unable to find required tooltalk header files.")
2569     fi
2570     with_tooltalk=no
2571   fi
2572 fi
2573 if test "$with_tooltalk" != "no" ; then
2574   for extra_libs in "" "-lI18N -lce" "-lcxx"; do
2575     AC_CHECK_LIB(tt, tt_message_create,
2576       tt_libs="-ltt $extra_libs"; break, [:],$extra_libs)
2577   done
2578   if test -z "$tt_libs"; then
2579     if test "$with_tooltalk" = "yes"; then
2580       USAGE_ERROR("Unable to find required tooltalk libraries.")
2581     fi
2582     with_tooltalk=no
2583   fi
2584 fi
2585 test -z "$with_tooltalk" && with_tooltalk=yes
2586 if test "$with_tooltalk" = "yes"; then
2587   AC_DEFINE(TOOLTALK)
2588   AC_DEFINE_UNQUOTED(TT_C_H_PATH, "$tt_c_h_path")
2589   XE_PREPEND($tt_libs, libs_x)
2590   XE_ADD_OBJS(tooltalk.o)
2591 fi
2592
2593 dnl Autodetect CDE
2594 test -z "$with_cde" && { AC_CHECK_HEADER(Dt/Dt.h,               , with_cde=no) }
2595 test -z "$with_cde" && { AC_CHECK_LIB(DtSvc, DtDndDragStart, [:], with_cde=no) }
2596 test -z "$with_cde" && with_cde=yes
2597 if test "$with_dragndrop" = no; then
2598   AC_MSG_WARN([No CDE without generic Drag'n'Drop support])
2599   with_cde=no
2600 fi
2601 if test "$with_cde" = "yes" ; then
2602   AC_DEFINE(HAVE_CDE)
2603   XE_PREPEND(-lDtSvc, libs_x)
2604   XE_APPEND(CDE, dragndrop_proto)
2605   with_tooltalk=yes # CDE requires Tooltalk
2606   need_motif=yes    # CDE requires Motif
2607 fi
2608
2609 dnl Always compile OffiX unless --without-offix is given, no
2610 dnl X11 support is compiled in, no standard Xmu is avaiable,
2611 dnl or dragndrop support is disabled
2612 dnl Because OffiX support currently loses when more than one display
2613 dnl is in use, we now disable it by default -slb 07/10/1998.
2614 test "$window_system" != "x11" && with_offix=no
2615 if test "$with_xmu" != yes -a "$with_x11" = yes; then
2616   AC_MSG_WARN([No OffiX without real Xmu support])
2617   with_offix=no
2618 fi
2619 if test "$with_dragndrop" = no; then
2620   AC_MSG_WARN([No OffiX without generic Drag'n'Drop support])
2621   with_offix=no
2622 fi
2623 if test "$with_cde" = yes; then
2624   AC_MSG_WARN([CDE already found, disabling OffiX support])
2625   with_offix=no
2626 fi
2627 test -z "$with_offix" && with_offix=no
2628 if test "$with_offix" = "yes"; then
2629   AC_DEFINE(HAVE_OFFIX_DND)
2630   XE_APPEND(offix.o, dnd_objs)
2631   XE_APPEND(OffiX, dragndrop_proto)
2632 fi
2633
2634 dnl Autodetect Drag'n'Drop support
2635 dnl always included if CDE, Offix, or MSWindows are defined
2636 AC_MSG_CHECKING(if drag and drop API is needed)
2637 if test "$with_dragndrop" != "no" ; then
2638   if test -n "$dragndrop_proto" ; then
2639     with_dragndrop=yes
2640     AC_MSG_RESULT([yes (${dragndrop_proto} )])
2641     AC_DEFINE(HAVE_DRAGNDROP)
2642     XE_APPEND(dragdrop.o, extra_objs)
2643   else
2644     with_dragndrop=no
2645     AC_MSG_RESULT(no)
2646   fi
2647 fi
2648
2649 dnl Autodetect LDAP
2650 AC_CHECKING(for LDAP)
2651 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
2652 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
2653 if test "$with_ldap" != "no"; then
2654   test -z "$with_umich_ldap" && { AC_CHECK_LIB(ldap, ldap_open, with_umich_ldap=yes, with_umich_ldap=no, -llber) }
2655   test "$with_umich_ldap" = "no" && { AC_CHECK_LIB(ldap10, ldap_set_option, with_ns_ldap=yes, with_ns_ldap=no) }
2656   test -z "$with_ldap" -a \( "$with_umich_ldap" = "yes" -o "$with_ns_ldap" = "yes" \) && with_ldap=yes
2657 fi
2658 if test "$with_ldap" = "yes"; then
2659   AC_DEFINE(HAVE_LDAP)
2660   XE_ADD_OBJS(eldap.o)
2661   if test "$with_umich_ldap" = "yes" ; then
2662     AC_DEFINE(HAVE_UMICH_LDAP)
2663     XE_PREPEND(-llber, LIBS)
2664     XE_PREPEND(-lldap, LIBS)
2665   elif test "$with_ldap" = "yes" -a "$with_ns_ldap" = "yes" ; then
2666     AC_DEFINE(HAVE_NS_LDAP)
2667     XE_PREPEND(-lldap10, LIBS)
2668   elif test "$with_ldap" = "yes" ; then
2669     XE_PREPEND(-lldap, LIBS)
2670   fi
2671 fi
2672
2673 dnl ----------------------
2674 dnl Graphics libraries
2675 dnl ----------------------
2676
2677 if test "$window_system" != "none"; then
2678   AC_CHECKING(for graphics libraries)
2679
2680   dnl Autodetect Xpm
2681   xpm_problem=""
2682   if test -z "$with_xpm"; then
2683     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
2684     xe_check_libs=-lXpm
2685     AC_TRY_RUN([#include <X11/xpm.h>
2686     int main(int c, char **v) {
2687     return c == 1 ? 0 :
2688       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
2689       XpmIncludeVersion < 30406 ? 2 : 0 ;}],
2690     [./conftest dummy_arg; xpm_status=$?;
2691       if test "$xpm_status" = "0"; then
2692         with_xpm=yes;
2693       else
2694         with_xpm=no;
2695         if test "$xpm_status" = "1"; then
2696           xpm_problem="Xpm library version and header file version don't match!"
2697         elif test "$xpm_status" = "2"; then
2698           xpm_problem="Xpm library version is too old!"
2699         else
2700           xpm_problem="Internal xpm detection logic error!"
2701         fi
2702         echo "
2703 *** WARNING *** $xpm_problem
2704   I'm not touching that with a 10-foot pole!
2705   If you really want to use the installed version of Xpm, rerun
2706   configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!"
2707     fi],
2708     [with_xpm=no])
2709     xe_check_libs=
2710     AC_MSG_RESULT($with_xpm)
2711   fi
2712   if test "$with_xpm" = "yes"; then
2713     AC_DEFINE(HAVE_XPM)
2714     XE_PREPEND(-lXpm, libs_x)
2715     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
2716     xe_check_libs=-lXpm
2717     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
2718     [xpm_for_msw=no],
2719     [xpm_for_msw=yes])
2720     xe_check_libs=
2721     AC_MSG_RESULT($xpm_for_msw)
2722     if test "$xpm_for_msw" = "yes"; then
2723       AC_DEFINE(FOR_MSW)
2724     fi
2725   fi
2726
2727   dnl For a brief period we had the GIF code split out into a separate library,
2728   dnl but patent problems, etc. sort of squashed that idea.
2729   dnl We default to building with builtin GIF decoding
2730   if test "$with_gif" != "no"; then
2731     with_gif="yes"
2732     AC_DEFINE(HAVE_GIF)
2733     XE_ADD_OBJS(dgif_lib.o gif_io.o)
2734   fi
2735
2736   dnl Too many stupid linkers can't detect cascaded lib dependencies until runtime
2737   dnl So we always search for libz compression support.
2738   if test "$with_png $with_tiff" != "no no"; then
2739     AC_CHECK_LIB(c,  inflate, [:], [
2740     AC_CHECK_LIB(z,  inflate, [XE_PREPEND(-lz,  libs_x)],[
2741     AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])])
2742   fi
2743
2744   dnl autodetect JPEG
2745   test -z "$with_jpeg" && { AC_CHECK_HEADER(jpeglib.h,                    ,with_jpeg=no) }
2746   test -z "$with_jpeg" && { AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,[:],with_jpeg=no) }
2747   test -z "$with_jpeg" && with_jpeg=yes
2748   if test "$with_jpeg" = "yes"; then
2749     AC_DEFINE(HAVE_JPEG)
2750     XE_PREPEND(-ljpeg, libs_x)
2751   fi
2752
2753   dnl autodetect PNG
2754   png_problem=""
2755   test -z "$with_png" && { AC_CHECK_FUNC(pow,                  ,with_png=no) }
2756   test -z "$with_png" && { AC_CHECK_HEADER(png.h,              ,with_png=no) }
2757   test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) }
2758   if test -z "$with_png"; then
2759     AC_MSG_CHECKING(for workable png version information)
2760     xe_check_libs="-lpng -lz"
2761     AC_TRY_RUN([#include <png.h>
2762     int main(int c, char **v) {
2763     if (c == 1) return 0;
2764     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
2765     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}],
2766     [./conftest dummy_arg; png_status=$?;
2767       if test "$png_status" = "0"; then
2768         with_png=yes;
2769       else
2770         with_png=no;
2771         if test "$png_status" = "1"; then
2772           png_problem="PNG library version and header file don't match!"
2773         elif test "$png_status" = "2"; then
2774           png_problem="PNG library version too old (pre 1.0.2)!"
2775         fi
2776         echo "
2777 *** WARNING *** $png_problem
2778   I'm not touching that with a 10-foot pole!
2779   If you really want to use the installed version of libPNG, rerun
2780   configure and add '--with-png=yes', but don't blame me if XEmacs crashes!"
2781     fi],
2782     [with_png=no])
2783     xe_check_libs=
2784     AC_MSG_RESULT($with_png)
2785   fi
2786   if test "$with_png" = "yes"; then
2787     AC_DEFINE(HAVE_PNG)
2788     XE_PREPEND(-lpng, libs_x)
2789   fi
2790
2791   dnl autodetect TIFF
2792   test -z "$with_tiff" && { AC_CHECK_HEADER(tiffio.h,            ,with_tiff=no) }
2793   test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no) }
2794   test -z "$with_tiff" && with_tiff=yes
2795   if test "$with_tiff" = "yes"; then
2796     AC_DEFINE(HAVE_TIFF)
2797     XE_PREPEND(-ltiff, libs_x)
2798   fi
2799 fi
2800
2801 dnl ----------------------
2802 dnl X-Specific Graphics libraries
2803 dnl ----------------------
2804
2805 if test "$with_x11" = "yes"; then
2806
2807   AC_CHECKING(for X11 graphics libraries)
2808
2809   dnl Autodetect XFACE
2810   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
2811   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
2812   test -z "$with_xface" && with_xface=yes
2813   if test "$with_xface" = "yes"; then
2814     AC_DEFINE(HAVE_XFACE)
2815     XE_PREPEND(-lcompface, libs_x)
2816   fi
2817
2818   dnl Autodetect -lXaw
2819   AC_CHECK_LIB(Xaw, XawScrollbarSetThumb, have_xaw=yes, have_xaw=no)
2820   dnl if test "$have_xaw" = "yes"; then
2821     dnl AC_CHECK_HEADER(X11/Xaw/Reports.h, [
2822       dnl XE_APPEND(pkg-src/tree-x, MAKE_SUBDIR)
2823       dnl XE_APPEND(pkg-src/tree-x, INSTALL_ARCH_DEP_SUBDIR)])
2824   dnl fi
2825
2826   dnl autodetect Motif - but only add to libs_x later (if necessary)
2827   AC_CHECK_HEADER(Xm/Xm.h,
2828    [AC_CHECK_LIB(Xm, XmStringFree, have_motif=yes, have_motif=no)],
2829    have_motif=no)
2830
2831   if test "$have_motif" = "yes"; then
2832     dnl autodetect lesstif
2833     AC_MSG_CHECKING(for Lesstif)
2834     AC_EGREP_CPP(yes,
2835 [#include <Xm/Xm.h>
2836 #ifdef LESSTIF_VERSION
2837 yes
2838 #endif
2839 ], have_lesstif=yes, have_lesstif=no)
2840   AC_MSG_RESULT($have_lesstif)
2841   fi
2842
2843 fi dnl "$with_x11" = "yes"
2844
2845 dnl Finish ensuring that we have values for the various toolkit items.
2846 dnl Not all toolkits support all widgets
2847 dnl if Motif is available we use it for the dialog boxes.
2848
2849 case "$with_menubars" in "" | "yes" | "athena" | "athena3d" )
2850   with_menubars="lucid" ;;
2851 esac
2852 case "$with_dialogs" in "" | "yes" | "lucid" )
2853   if   test "$have_motif" = "yes"; then with_dialogs="motif"
2854   elif test "$have_xaw"   = "yes"; then with_dialogs="athena"
2855   else with_dialogs=no
2856   fi ;;
2857 esac
2858 case "$with_scrollbars" in "" | "yes" )
2859   with_scrollbars="lucid" ;;
2860 esac
2861
2862 all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars"
2863
2864 case "$all_widgets" in *athena* )
2865   AC_DEFINE(LWLIB_USES_ATHENA)
2866   AC_DEFINE(NEED_ATHENA)
2867   XE_APPEND(lwlib-Xaw.o, lwlib_objs)
2868   XE_PREPEND(-lXaw, libs_x) ;;
2869 esac
2870
2871 case "$all_widgets" in *motif* )
2872   AC_DEFINE(LWLIB_USES_MOTIF)
2873   AC_DEFINE(NEED_MOTIF)
2874   XE_APPEND(lwlib-Xm.o, lwlib_objs)
2875   need_motif=yes ;;
2876 esac
2877
2878 test "$with_menubars"   = "lucid" && XE_APPEND(xlwmenu.o, lwlib_objs)
2879 test "$with_menubars"   = "motif" && XE_APPEND(xlwmenu.o, lwlib_objs)
2880 test "$with_scrollbars" = "lucid" && XE_APPEND(xlwscrollbar.o, lwlib_objs)
2881 case "$all_widgets" in *lucid* )
2882   AC_DEFINE(NEED_LUCID)
2883   XE_APPEND(lwlib-Xlw.o, lwlib_objs) ;;
2884 esac
2885
2886 AC_SUBST(lwlib_objs)
2887
2888 case "$with_scrollbars" in athena* ) AC_DEFINE(LWLIB_SCROLLBARS_ATHENA);; esac
2889 case "$with_dialogs"    in athena* ) AC_DEFINE(LWLIB_DIALOGS_ATHENA)   ;; esac
2890 test "$with_scrollbars" = "athena3d" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
2891 test "$with_dialogs"    = "athena3d" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
2892
2893 test "$with_menubars"   != "no"    && AC_DEFINE(HAVE_MENUBARS)
2894 test "$with_scrollbars" != "no"    && AC_DEFINE(HAVE_SCROLLBARS)
2895 test "$with_dialogs"    != "no"    && AC_DEFINE(HAVE_DIALOGS)
2896 test "$with_toolbars"   != "no"    && AC_DEFINE(HAVE_TOOLBARS)
2897
2898 test "$with_menubars"   = "lucid"  && AC_DEFINE(LWLIB_MENUBARS_LUCID)
2899 test "$with_scrollbars" = "lucid"  && AC_DEFINE(LWLIB_SCROLLBARS_LUCID)
2900
2901 test "$with_menubars"   = "motif"  && AC_DEFINE(LWLIB_MENUBARS_MOTIF)
2902 test "$with_scrollbars" = "motif"  && AC_DEFINE(LWLIB_SCROLLBARS_MOTIF)
2903 test "$with_dialogs"    = "motif"  && AC_DEFINE(LWLIB_DIALOGS_MOTIF)
2904
2905 test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar.o)
2906 test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar.o)
2907 test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog.o)
2908 test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar.o)
2909 test "$all_widgets" != "no no no no" && XE_ADD_OBJS(gui.o)
2910
2911 if test "$with_x11" = "yes"; then
2912   test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar-x.o)
2913   test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar-x.o)
2914   test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog-x.o)
2915   test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar-x.o)
2916   test "$all_widgets" != "no no no no" && XE_ADD_OBJS(gui-x.o)
2917 else
2918   if test \( "$with_sound" = "nas" \) -o \( "$with_sound" = "both" \); then
2919     echo "Attempt to Build NAS sound without X"
2920     echo "Please remove NAS configuration or build with X"
2921     exit 1
2922   fi
2923 fi
2924
2925 test "$use_minimal_tagbits" = "yes" && AC_DEFINE(USE_MINIMAL_TAGBITS)
2926 test "$use_indexed_lrecord_implementation" = "yes" && \
2927   AC_DEFINE(USE_INDEXED_LRECORD_IMPLEMENTATION)
2928
2929 dnl ----------------------
2930 dnl Mule-dependent options
2931 dnl ----------------------
2932
2933 test -z "$with_mule" && with_mule=no
2934 test -z "$with_file_coding" && with_file_coding=no
2935
2936 dnl if test "$with_mule" = "yes" && test ! -d "$srcdir/lisp/mule"; then
2937 dnl     echo "Attempt to Build with Mule without Mule/Lisp"
2938 dnl     echo "Please install the XEmacs/Mule tarball or"
2939 dnl     echo "rerun configure with --with-mule=no"
2940 dnl     exit 1
2941 dnl fi
2942
2943 if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then
2944   AC_DEFINE(FILE_CODING)
2945   XE_ADD_OBJS(file-coding.o)
2946 fi
2947
2948 if test "$with_mule" = "yes" ; then
2949   AC_CHECKING(for Mule-related features)
2950   AC_DEFINE(MULE)
2951   AC_DEFINE(FILE_CODING)
2952   XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o mule-coding.o file-coding.o)
2953
2954   dnl Use -lintl to get internationalized strerror for Mule
2955   AC_CHECK_HEADERS(libintl.h)
2956   AC_CHECK_LIB(intl, strerror)
2957
2958   AC_CHECKING(for Mule input methods)
2959   dnl Do we have the XmIm* routines?  And if so, do we want to use them?
2960   dnl XIM seems to be flaky except on Solaris...
2961   dnl test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no
2962   case "$with_xim" in "" | "yes" )
2963     AC_CHECKING(for XIM)
2964     dnl XIM + Lesstif is not (yet?) usable
2965     if test "$have_lesstif" = "yes"; then with_xim=xlib
2966     else AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif, with_xim=xlib)
2967     fi
2968   esac
2969   if test "$with_xim" != "no"; then
2970     AC_DEFINE(HAVE_XIM)
2971     if test "$with_xim" = "xlib"; then
2972       AC_DEFINE(XIM_XLIB)
2973       XE_ADD_OBJS(input-method-xlib.o)
2974     fi
2975     if test "$with_xim" = "motif"; then
2976       AC_DEFINE(XIM_MOTIF)
2977       need_motif=yes
2978       XE_ADD_OBJS(input-method-motif.o)
2979     fi
2980     if test "$with_xim" = "motif"; then
2981       with_xfs=no
2982     fi
2983   fi
2984
2985   dnl "with_xim" = "yes"
2986   if test "$with_xfs" = "yes" ; then
2987     AC_CHECKING(for XFontSet)
2988     AC_CHECK_LIB(X11, XmbDrawString, [:], with_xfs=no)
2989     if test "$with_xfs" = "yes" && test "$with_menubars" = "lucid"; then
2990       AC_DEFINE(USE_XFONTSET)
2991       if test "$with_xim" = "no" ; then
2992         XE_ADD_OBJS(input-method-xfs.o)
2993       fi
2994     fi
2995   fi dnl with_xim
2996
2997   dnl Autodetect WNN
2998   test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
2999   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/jllib.h, ,with_wnn=no) }
3000   dnl Detour to find crypt
3001   if test "$with_wnn" != "no"; then
3002     AC_CHECK_FUNCS(crypt)
3003     test "$ac_cv_func_crypt" != "yes" && { AC_CHECK_LIB(crypt, crypt) }
3004   fi
3005   dnl Back to our regularly scheduled wnn hunting
3006   test -z "$with_wnn" && { AC_CHECK_LIB(wnn,jl_dic_list_e,[:],with_wnn=no) }
3007   test -z "$with_wnn" && with_wnn=yes
3008   if test "$with_wnn" = "yes"; then
3009     AC_DEFINE(HAVE_WNN)
3010     XE_PREPEND(-lwnn, libs_x)
3011     XE_ADD_OBJS(mule-wnnfns.o)
3012     if test "$with_wnn6" != "no"; then
3013       AC_CHECK_LIB(wnn, jl_fi_dic_list, with_wnn6=yes)
3014       test "$with_wnn6" = "yes" && AC_DEFINE(WNN6)
3015     fi
3016   fi
3017
3018   dnl Autodetect canna
3019   canna_includes_found=no
3020   if test "$with_canna" != "no"; then
3021     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3022   fi
3023   if test "$canna_includes_found" = "no" -a "$with_canna" != "no" -a \
3024       -d "/usr/local/canna/include"; then
3025     save_c_switch_site="$c_switch_site"
3026     c_switch_site="$c_switch_site -I/usr/local/canna/include"
3027     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3028     if test "$canna_includes_found" != "yes"; then
3029       c_switch_site="$save_c_switch_site"
3030       with_canna="no"
3031     fi
3032   fi
3033
3034   test -z "$with_canna" && { AC_CHECK_HEADER(canna/RK.h,         , with_canna=no) }
3035   test -z "$with_canna" && { AC_CHECK_LIB(RKC, RkBgnBun,       [:],with_canna=no) }
3036   test -z "$with_canna" && { AC_CHECK_LIB(canna,jrKanjiControl,[:],with_canna=no) }
3037   test -z "$with_canna" && with_canna=yes
3038   if test "$with_canna" = "yes"; then
3039     AC_DEFINE(HAVE_CANNA)
3040     XE_PREPEND(-lcanna -lRKC, libs_x)
3041     XE_ADD_OBJS(mule-canna.o)
3042   fi
3043
3044 else dnl "$with_mule" = "no"
3045   for feature in xim canna wnn; do
3046     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3047       AC_MSG_WARN("--with-${feature} ignored:  Not valid without Mule support")
3048     fi
3049     eval "with_${feature}=no"
3050   done
3051 fi dnl with_mule
3052
3053
3054 dnl At this point, we know whether we need the motif lib or not.
3055 if test "$need_motif" = "yes" ; then
3056   XE_PREPEND(-lXm, libs_x)
3057   dnl AIX needs the following library for use with Motif
3058   AC_CHECK_LIB(i18n, layout_object_getvalue, [XE_PREPEND(-li18n, libs_x)])
3059   XE_COMPUTE_RUNPATH()
3060 fi
3061
3062 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)
3063
3064 dnl realpath is buggy on linux, decosf and aix4
3065
3066 dnl The realpath() in linux libc (4.6.27) sometimes fails with ELOOP.
3067 dnl The realpath in ELF linux libc's is O.K.
3068 dnl For example, call realpath on a file thirty-five or so directories deep
3069 dnl and you get ELOOP even if no symlinks at all are involved.
3070 dnl Reports as of 11/1997 indicate BSDi has problems too.
3071 case "$opsys" in
3072   linuxaout* | bsdos3* | freebsd* | decosf4-0* | aix4* ) XE_ADD_OBJS(realpath.o) ;;
3073   * )
3074     AC_CHECK_FUNCS(realpath)
3075     test "$ac_cv_func_realpath" != "yes" && XE_ADD_OBJS(realpath.o) ;;
3076 esac
3077
3078 dnl If netdb.h does not declare h_errno, we must declare it by hand.
3079 AC_MSG_CHECKING(whether netdb declares h_errno)
3080 AC_TRY_LINK([#include <netdb.h>],
3081   [return h_errno;],
3082   [AC_MSG_RESULT(yes)
3083    AC_DEFINE(HAVE_H_ERRNO)],
3084   [AC_MSG_RESULT(no)])
3085
3086 AC_MSG_CHECKING(for sigsetjmp)
3087 AC_TRY_COMPILE([#include <setjmp.h>],
3088         [sigjmp_buf bar; sigsetjmp (bar, 0);],
3089   [AC_MSG_RESULT(yes)
3090    AC_DEFINE(HAVE_SIGSETJMP)],
3091   [AC_MSG_RESULT(no)])
3092
3093 AC_MSG_CHECKING(whether localtime caches TZ)
3094 AC_CACHE_VAL(emacs_cv_localtime_cache,
3095 [if test "$ac_cv_func_tzset" = "yes"; then
3096 AC_TRY_RUN([#include <time.h>
3097 #if STDC_HEADERS
3098 # include <stdlib.h>
3099 #endif
3100 extern char **environ;
3101 unset_TZ ()
3102 {
3103   char **from, **to;
3104   for (to = from = environ; (*to = *from); from++)
3105     if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
3106       to++;
3107 }
3108 char TZ_GMT0[] = "TZ=GMT0";
3109 char TZ_PST8[] = "TZ=PST8";
3110 main()
3111 {
3112   time_t now = time ((time_t *) 0);
3113   int hour_GMT0, hour_unset;
3114   if (putenv (TZ_GMT0) != 0)
3115     exit (1);
3116   hour_GMT0 = localtime (&now)->tm_hour;
3117   unset_TZ ();
3118   hour_unset = localtime (&now)->tm_hour;
3119   if (putenv (TZ_PST8) != 0)
3120     exit (1);
3121   if (localtime (&now)->tm_hour == hour_GMT0)
3122     exit (1);
3123   unset_TZ ();
3124   if (localtime (&now)->tm_hour != hour_unset)
3125     exit (1);
3126   exit (0);
3127 }], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
3128 [# If we have tzset, assume the worst when cross-compiling.
3129 emacs_cv_localtime_cache=yes])
3130 else
3131         # If we lack tzset, report that localtime does not cache TZ,
3132         # since we can't invalidate the cache if we don't have tzset.
3133         emacs_cv_localtime_cache=no
3134 fi],[:])dnl
3135 AC_MSG_RESULT($emacs_cv_localtime_cache)
3136 if test $emacs_cv_localtime_cache = yes; then
3137   AC_DEFINE(LOCALTIME_CACHE)
3138 fi
3139
3140 if test "$HAVE_TIMEVAL" = "yes"; then
3141 AC_MSG_CHECKING(whether gettimeofday accepts one or two arguments)
3142 AC_TRY_LINK([
3143 #ifdef TIME_WITH_SYS_TIME
3144 #include <sys/time.h>
3145 #include <time.h>
3146 #else
3147 #ifdef HAVE_SYS_TIME_H
3148 #include <sys/time.h>
3149 #else
3150 #include <time.h>
3151 #endif
3152 #endif
3153   ],
3154   [
3155   struct timeval time;
3156   struct timezone dummy;
3157   gettimeofday (&time, &dummy);
3158 ],
3159   [AC_MSG_RESULT(two)],
3160   [AC_MSG_RESULT(one)
3161    AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)])
3162 fi
3163
3164
3165 AC_C_INLINE
3166 if test "$ac_cv_c_inline" != "no"; then
3167   AC_DEFINE(HAVE_INLINE)
3168   test "$GCC" = "yes" && XE_ADD_OBJS(inline.o)
3169 fi
3170
3171 dnl HP-UX has a working alloca in libPW.
3172 dnl case "${GCC}${opsys}" in hpux* )
3173 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
3174 dnl esac
3175
3176 AC_FUNC_ALLOCA
3177 test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
3178
3179 dnl Check whether vfork exists and works correctly. (This does more
3180 dnl than just check for its existence.) If so, it defines HAVE_VFORK_H.
3181 dnl If not, it defines vfork to be fork.
3182 AC_FUNC_VFORK
3183
3184 dnl Check whether strcoll exists and works correctly. (This does more
3185 dnl than just check for its existence.) If so, it defines HAVE_STRCOLL.
3186 AC_FUNC_STRCOLL
3187
3188 dnl If `getpgrp' takes no argument (the POSIX.1 version), define
3189 dnl `GETPGRP_VOID'.  Otherwise, it is the BSD version, which takes a
3190 dnl process ID as an argument.
3191 AC_CHECK_FUNCS(getpgrp)
3192 AC_FUNC_GETPGRP
3193
3194 dnl We used to call AC_FUNC_MMAP here
3195 dnl Instead we now use following, suggested by Neal Becker
3196 AC_MSG_CHECKING(for working mmap)
3197 case "$opsys" in ultrix* ) have_mmap=no ;; *)
3198 AC_TRY_RUN([#include <stdio.h>
3199 #include <unistd.h>
3200 #include <fcntl.h>
3201 #include <sys/mman.h>
3202
3203 #ifndef MAP_VARIABLE
3204 #define MAP_VARIABLE 0
3205 #endif
3206
3207 #ifndef MAP_FAILED
3208 #define MAP_FAILED -1
3209 #endif
3210
3211 int main (int argc, char *argv[])
3212 {
3213   int fd = -1;
3214   caddr_t p;
3215 #ifndef MAP_ANONYMOUS
3216   fd = open ("/dev/zero", O_RDWR);
3217   if (fd < 0)
3218     return 1;
3219 #define MAP_ANONYMOUS 0
3220 #endif
3221   if (mmap(0, 1024, PROT_READ | PROT_WRITE,
3222            MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS,
3223            fd, 0) != (void *) MAP_FAILED)
3224     return 0;
3225   perror ("conftest: mmap failed");
3226   return 1;
3227 }], have_mmap=yes, have_mmap=no) ;;
3228 esac
3229 AC_MSG_RESULT($have_mmap)
3230 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
3231 AC_FUNC_MMAP
3232
3233 dnl rel_alloc requires either GNU malloc or system malloc with mmap
3234 dnl We only turn rel_alloc on by default if mmap is available.
3235 test "$GNU_MALLOC" != "yes"   -a "$have_mmap" != "yes" && rel_alloc=no
3236 test "$rel_alloc" = "default" -a "$have_mmap"  = "yes" && rel_alloc=yes
3237 test "$rel_alloc" = "yes" && AC_DEFINE(REL_ALLOC)
3238
3239 dnl Check for terminal I/O variants
3240 dnl TERMIOS systems may have termio.h, but not vice-versa, I think.
3241 AC_CHECK_HEADER(termios.h,
3242   AC_DEFINE(HAVE_TERMIOS)
3243   AC_DEFINE(SIGNALS_VIA_CHARACTERS)
3244   AC_DEFINE(NO_TERMIO),
3245   [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])])
3246
3247
3248 dnl Check for Internet sockets.
3249 AC_CHECK_FUNC(socket,
3250  [AC_CHECK_HEADER(netinet/in.h,
3251    [AC_CHECK_HEADER(arpa/inet.h, [
3252   AC_DEFINE(HAVE_SOCKETS)
3253       AC_MSG_CHECKING("for sun_len member in struct sockaddr_un")
3254       AC_TRY_LINK([
3255 #include <sys/types.h>
3256 #include <sys/socket.h>
3257 #include <sys/un.h>
3258       ],
3259       [static struct sockaddr_un x; x.sun_len = 1;],
3260       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)],
3261       [AC_MSG_RESULT(no)])
3262       AC_MSG_CHECKING("for ip_mreq struct in netinet/in.h")
3263       AC_TRY_LINK([
3264 #include <sys/types.h>
3265 #include <netinet/in.h>
3266       ],
3267       [static struct ip_mreq x;],
3268       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MULTICAST)],
3269       [AC_MSG_RESULT(no)])])])])
3270
3271 dnl Check for SYS V IPC. (Inferior to sockets.)
3272 AC_CHECK_FUNC(msgget,
3273   [AC_CHECK_HEADER(sys/ipc.h,
3274     [AC_CHECK_HEADER(sys/msg.h,
3275       [AC_DEFINE(HAVE_SYSVIPC)])])])
3276
3277 dnl Check for directory variants
3278 AC_CHECK_HEADER(dirent.h, [AC_DEFINE(SYSV_SYSTEM_DIR)],
3279   [AC_CHECK_HEADER(sys/dir.h, , [AC_DEFINE(NONSYSTEM_DIR_LIBRARY)])])
3280
3281 dnl Check for nlist.h
3282 AC_CHECK_HEADER(nlist.h, AC_DEFINE(NLIST_STRUCT), )
3283
3284 dnl Check for sound of various sorts.
3285
3286 dnl Autodetect native sound
3287 AC_CHECKING("for sound support")
3288 case "$with_sound" in
3289   native | both ) with_native_sound=yes;;
3290   nas    | no   ) with_native_sound=no;;
3291 esac
3292 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
3293
3294 if test "$with_native_sound" != "no"; then
3295   dnl Maybe sound is already on include path...
3296   if test -n "$native_sound_lib"; then
3297     AC_CHECK_HEADER(multimedia/audio_device.h,
3298       [sound_found=yes sound_cflags=""
3299       XE_ADD_OBJS(sunplay.o)])
3300   fi
3301
3302   dnl Autodetect Sun native sound from SUNWaudmo package
3303   if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
3304     sound_found=yes
3305     XE_ADD_OBJS(sunplay.o)
3306     if test -d "/usr/demo/SOUND/include"
3307       then sound_cflags="-I/usr/demo/SOUND/include"
3308       else sound_cflags="-I/usr/demo/SOUND"
3309     fi
3310     if test -z "$native_sound_lib" ; then
3311       if test -r "/usr/demo/SOUND/lib/libaudio.a"
3312         then native_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
3313         else native_sound_lib="/usr/demo/SOUND/libaudio.a"
3314       fi
3315     fi
3316   fi
3317
3318   dnl Check for SGI and HP native sound libs
3319   if test -z "$sound_found"; then
3320     case "$canonical" in
3321     *-sgi-* )
3322       if test -z "$native_sound_lib"; then
3323         AC_CHECK_LIB(audio, ALopenport, native_sound_lib="-laudio")
3324       fi
3325       if test -n "$native_sound_lib"; then
3326         sound_found=yes sound_cflags=""
3327         XE_ADD_OBJS(sgiplay.o)
3328       fi ;;
3329     hppa*-hp-hpux* )
3330       if test -z "$native_sound_lib"; then
3331         AC_CHECK_LIB(Alib, AOpenAudio, native_sound_lib="-lAlib")
3332       fi
3333       if test -n "$native_sound_lib"; then
3334         sound_found=yes
3335         XE_ADD_OBJS(hpplay.o)
3336         if test "$GCC" = "yes" # Kludge city
3337           then sound_cflags="-Dconst= -Dvolatile= -I/usr/audio/examples"
3338           else sound_cflags="+e -I/usr/audio/examples"
3339         fi
3340       fi ;;
3341     esac
3342   fi
3343
3344   dnl Check for Linux/BSD native sound
3345   if test -z "$sound_found"; then
3346     for dir in "machine" "sys" "linux"; do
3347       AC_CHECK_HEADER(${dir}/soundcard.h,
3348         sound_found=yes
3349         XE_ADD_OBJS(linuxplay.o)
3350         [AC_DEFINE_UNQUOTED(SOUNDCARD_H_PATH, "${dir}/soundcard.h")]
3351         break)
3352     done
3353   fi
3354
3355   test "$sound_found" = "yes" && with_native_sound=yes
3356 fi
3357
3358 if test -z "$with_sound"; then
3359   if test "$with_native_sound" = "yes" -o -n "$native_sound_lib"; then
3360     with_sound=native
3361   fi
3362 fi
3363
3364 if test "$with_native_sound" = "yes"; then
3365   AC_DEFINE(HAVE_NATIVE_SOUND)
3366   test -n "$native_sound_lib" && XE_PREPEND($native_sound_lib, LIBS)
3367 fi
3368
3369 case "$with_sound" in both | nas )
3370   AC_DEFINE(HAVE_NAS_SOUND)
3371   XE_ADD_OBJS(nas.o)
3372   XE_PREPEND(-laudio, libs_x)
3373   dnl If the nas library does not contain the error jump point,
3374   dnl then we force safer behaviour.
3375   AC_EGREP_HEADER(AuXtErrorJump,audio/Xtutil.h,,[AC_DEFINE(NAS_NO_ERROR_JUMP)])
3376 esac
3377
3378 dnl ---------------------
3379 dnl TTY-dependent options
3380 dnl ---------------------
3381
3382 test -z "$with_tty" && with_tty=yes
3383
3384 if test "$with_tty" = "yes"  ; then
3385   AC_CHECKING(for TTY-related features)
3386   AC_DEFINE(HAVE_TTY)
3387   XE_ADD_OBJS(console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o)
3388
3389   dnl Autodetect ncurses.
3390   if test -z "$with_ncurses"; then
3391     AC_CHECK_LIB(ncurses, tgetent, with_ncurses=yes, with_ncurses=no)
3392   fi
3393   if test "$with_ncurses" = "yes"; then
3394     AC_DEFINE(HAVE_NCURSES)
3395     AC_CHECK_HEADER(ncurses/curses.h, curses_h_path=ncurses/curses.h)
3396     AC_CHECK_HEADER(ncurses/term.h, term_h_path=ncurses/term.h)
3397     XE_ADD_OBJS(terminfo.o)
3398     XE_PREPEND(-lncurses, LIBS)
3399
3400     if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then
3401       dnl Try again, and check for the bogus ncurses/ include bug.
3402       dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
3403       dnl <ncurses/unctrl.h>)
3404       save_c_switch_site="$c_switch_site"
3405       c_switch_site="$c_switch_site -I/usr/include/ncurses"
3406       AC_CHECK_HEADER(ncurses/curses.h, curses_h_path=ncurses/curses.h)
3407       if test "$ac_cv_header_ncurses_curses_h" = "yes"
3408         then AC_MSG_WARN("Your system has the bogus ncurses include bug.")
3409         else c_switch_site="$save_c_switch_site"
3410       fi
3411     fi
3412   else dnl "$with_ncurses" = "no"
3413     dnl Autodetect terminfo/-lcurses/-ltermlib/-ltermcap
3414     if test "$have_terminfo" = "yes"; then
3415       XE_ADD_OBJS(terminfo.o)
3416       if test -n "$libs_termcap"; then
3417         XE_PREPEND($libs_termcap, LIBS)
3418       else
3419         for lib in curses termlib termcap; do
3420           AC_CHECK_LIB($lib, tgetent, XE_PREPEND(-l${lib}, LIBS); break)
3421         done
3422       fi
3423     else dnl "$have_terminfo" = "no" && "with_ncurses" = "no"
3424       XE_ADD_OBJS(tparam.o)
3425       dnl The HP-UX curses library seems to have a badly broken version of select(2)
3426       dnl that makes "poll: interrupted system call" messages to appear and
3427       dnl Emacs suprocesses to hang (e.g. TeX compilation w/ AUCTeX) */
3428       case "$opsys" in *-hp-hpux* ) libs_termcap="-ltermcap" ;; esac
3429       if test -n "$libs_termcap"; then
3430         XE_PREPEND($libs_termcap, LIBS)
3431       else
3432         AC_CHECK_LIB(curses, tgetent, XE_PREPEND(-lcurses, LIBS),
3433           AC_CHECK_LIB(termcap, tgetent, XE_PREPEND(-ltermcap, LIBS),
3434             XE_ADD_OBJS(termcap.o)))
3435       fi
3436     fi
3437   fi
3438   AC_DEFINE_UNQUOTED(CURSES_H_PATH, "${curses_h_path-curses.h}")
3439   AC_DEFINE_UNQUOTED(TERM_H_PATH, "${term_h_path-term.h}")
3440
3441   dnl Autodetect gpm
3442   test -z "$with_gpm" && { AC_CHECK_HEADER(gpm.h, , with_gpm=no) }
3443   test -z "$with_gpm" && { AC_CHECK_LIB(gpm, Gpm_Open, with_gpm=yes, with_gpm=no) }
3444   if test "$with_gpm" = "yes"; then
3445     AC_DEFINE(HAVE_GPM)
3446     XE_ADD_OBJS(gpmevent.o)
3447     XE_PREPEND(-lgpm, LIBS)
3448   fi
3449
3450 else dnl "$with_tty" = "no"
3451   for feature in ncurses gpm; do
3452     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3453       AC_MSG_WARN("--with-${feature} ignored:  Not valid without TTY support")
3454     fi
3455     eval "with_${feature}=no"
3456   done
3457 fi dnl with_tty
3458
3459 dnl Do we need event-unixoid.o ?
3460 test "$with_x11" = "yes" -o "$with_tty" = "yes" && XE_ADD_OBJS(event-unixoid.o)
3461
3462 dnl Database support
3463 dnl <mdiers@logware.de>
3464 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
3465 dnl On FreeBSD, both DB and DBM are part of libc.
3466 dnl Note that unless support for DB/(G)DBM is explicitly disabled, we always
3467 dnl want to check for libdb/lib(g)dbm. Also note that libc will not be
3468 dnl checked if we have the libraries.
3469 dnl If support for DB/(G)DBM is requested, but we neither have libdb/lib(g)dbm,
3470 dnl nor does libc implement it, we are a bit lost :)
3471
3472 AC_CHECKING(for database support)
3473
3474 if test "$with_database_gnudbm" != "no"; then
3475   AC_CHECK_HEADERS(ndbm.h, have_ndbm_h=yes)
3476   if test "$have_ndbm_h" = "yes"; then
3477     AC_CHECK_LIB(gdbm, dbm_open, with_database_gnudbm=yes have_libgdbm=yes)
3478   fi
3479   if test "$with_database_gnudbm" != "yes"; then
3480     AC_CHECK_FUNC(dbm_open, with_database_gnudbm=yes)
3481       fi
3482   if test "$with_database_gnudbm" = "yes"; then
3483     AC_DEFINE(HAVE_DBM)
3484     test "$have_libgdbm" = "yes" && XE_PREPEND(-lgdbm, LIBS)
3485     with_database_dbm=no
3486   else with_database_gnudbm=no
3487   fi
3488 fi
3489
3490 if test "$with_database_dbm" != "no"; then
3491   AC_CHECK_FUNC(dbm_open, with_database_dbm=yes need_libdbm=no)
3492   if test "$need_libdbm" != "no"; then
3493     AC_CHECK_LIB(dbm, dbm_open, with_database_dbm=yes need_libdbm=yes)
3494   fi
3495   if test "$with_database_dbm" = "yes"; then
3496     AC_DEFINE(HAVE_DBM)
3497     test "$need_libdbm" = "yes" && XE_PREPEND(-ldbm, LIBS)
3498   else with_database_dbm=no
3499   fi
3500 fi
3501
3502 if test "$with_database_berkdb" != "no"; then
3503   AC_MSG_CHECKING(for Berkeley db.h)
3504   for path in "db/db.h" "db.h"; do
3505     AC_TRY_COMPILE([#ifdef HAVE_INTTYPES_H
3506 #define __BIT_TYPES_DEFINED__
3507 #include <inttypes.h>
3508 typedef uint8_t  u_int8_t;
3509 typedef uint16_t u_int16_t;
3510 typedef uint32_t u_int32_t;
3511 #ifdef WE_DONT_NEED_QUADS
3512 typedef uint64_t u_int64_t;
3513 #endif
3514 #endif
3515 #include <$path>
3516 ],[], db_h_path="$path"; break)
3517   done
3518   if test -z "$db_h_path"
3519   then AC_MSG_RESULT(no); with_database_berkdb=no
3520   else AC_MSG_RESULT($db_h_path)
3521   fi
3522
3523   if test "$with_database_berkdb" != "no"; then
3524     AC_MSG_CHECKING(for Berkeley DB version)
3525     AC_EGREP_CPP(yes,
3526 [#include <$db_h_path>
3527 #if DB_VERSION_MAJOR > 1
3528 yes
3529 #endif
3530 ], [AC_MSG_RESULT(2); dbfunc=db_open], [AC_MSG_RESULT(1); dbfunc=dbopen])
3531     AC_CHECK_FUNC($dbfunc,     with_database_berkdb=yes need_libdb=no, [
3532     AC_CHECK_LIB(db, $dbfunc,  with_database_berkdb=yes need_libdb=yes)])
3533   fi
3534
3535   if test "$with_database_berkdb" = "yes"; then
3536     AC_DEFINE_UNQUOTED(DB_H_PATH, "$db_h_path")
3537     AC_DEFINE(HAVE_BERKELEY_DB)
3538     test "$need_libdb" = "yes" && XE_PREPEND(-ldb, LIBS)
3539   else with_database_berkdb=no
3540   fi
3541 fi
3542
3543 if test "$with_database_gnudbm $with_database_dbm $with_database_berkdb" \
3544      != "no no no"; then
3545   AC_DEFINE(HAVE_DATABASE)
3546   XE_ADD_OBJS(database.o)
3547 fi
3548
3549 dnl Socks support
3550 if test "$with_socks" = "yes"; then
3551   AC_CHECK_LIB(socks, SOCKSinit)
3552   test -n "$ac_cv_lib_socks_SOCKSinit" && AC_DEFINE(HAVE_SOCKS)
3553 fi
3554
3555 dnl Usage tracking (undocumented and likely unused option)
3556 if test "$usage_tracking" = "yes"; then
3557   AC_DEFINE(USAGE_TRACKING)
3558   XE_PREPEND(-Bstatic -lut -Bdynamic, LIBS)
3559 fi
3560
3561 dnl cygwin can't cope with dlfcn at the moment
3562 test -z "$with_shlib" && test "$opsys $machine" = "cygwin32 intel386" && with_shlib=no
3563
3564 dnl autodetect dll support
3565 AC_CHECK_HEADERS(dlfcn.h, have_dlfcn=yes)
3566 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(dl,  dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=dl;  with_shlib=yes]) }
3567 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   _dlopen,  [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_shlib=yes]) }
3568 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_shlib=yes]) }
3569 test -z "$with_shlib" && { AC_CHECK_LIB(dld, shl_load, [ AC_DEFINE(HAVE_SHL_LOAD) DLL_LIB=dld; with_shlib=yes]) }
3570 test -z "$with_shlib" && { AC_CHECK_LIB(dld, dld_init, [ AC_DEFINE(HAVE_DLD_INIT) DLL_LIB=dld; with_shlib=yes]) }
3571 if test "$with_shlib" = "yes"; then
3572   AC_DEFINE(HAVE_SHLIB)
3573   XE_ADD_OBJS(sysdll.o)
3574   XE_ADD_OBJS(dll.o)
3575   test ! -z "$DLL_LIB" && XE_PREPEND(-l${DLL_LIB}, LIBS)
3576   XE_MAKE_SHAREDLIB
3577   AC_CHECK_FUNCS(dlerror)
3578   ld_dynamic_link_flags=
3579   dnl Fill this in with other values as this gets more testing
3580   case "$opsys" in
3581   hpux*)  ld_dynamic_link_flags="-Wl,-E" ;;
3582   linux*) ld_dynamic_link_flags="-rdynamic" ;;
3583   *) ;;
3584   esac
3585 fi
3586
3587 dnl Unfortunately, just because we can link doesn't mean we can run.
3588 dnl One of the above link tests may have succeeded but caused resulting
3589 dnl executables to fail to run.  Also any tests using AC_TRY_RUN will
3590 dnl have reported incorrect results.
3591 AC_TRY_RUN([int main(int c,char *v[]){return 0;}],[:],[
3592   echo ""
3593   echo "*** PANIC *** The C compiler can no longer build working executables."
3594   echo "*** PANIC *** Please examine the tail of config.log for runtime errors."
3595   echo "*** PANIC *** The most likely reason for this problem is that configure"
3596   echo "*** PANIC *** links with shared libraries, but those libraries cannot be"
3597   echo "*** PANIC *** found at run time."
3598   echo "*** PANIC ***"
3599   echo "*** PANIC *** On a Linux system, edit /etc/ld.so.conf and re-run ldconfig."
3600   echo "*** PANIC *** On other systems, try telling configure where to find the"
3601   echo "*** PANIC *** shared libraries using the --site-runtime-libraries option"
3602   echo "*** PANIC ***"
3603   echo "*** PANIC *** Another way to shoot yourself in the foot is to specify"
3604   echo "*** PANIC *** --with-FEATURE when FEATURE is not actually installed"
3605   echo "*** PANIC *** on your system.  Don't do that."
3606   exit 1])
3607
3608 dnl Process support (hardcoded)
3609 dnl every system that supports this runs configure, the others don't
3610
3611 dnl We're not ready for this yet.
3612 AC_DEFINE(HAVE_UNIX_PROCESSES)
3613 XE_ADD_OBJS(process-unix.o)
3614
3615 dnl --------------------------------
3616 dnl Compute SUBST-itutable variables
3617 dnl --------------------------------
3618
3619 dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM)
3620 dnl Use XE_SPACE instead of plain assignment statements to remove extraneous blanks
3621 XE_SPACE(CFLAGS, $CFLAGS)
3622 XE_SPACE(extra_objs, $extra_objs)
3623 XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system)
3624 XE_SPACE(c_switch_window_system, $c_switch_x_site $X_CFLAGS)
3625 XE_SPACE(c_switch_all, $c_switch_general $c_switch_window_system)
3626 XE_SPACE(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
3627 XE_SPACE(ld_switch_window_system, $ld_switch_x_site)
3628 XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system)
3629 XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
3630 XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $X_PRE_LIBS)
3631 XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general)
3632
3633 dnl Compute lists of Makefiles and subdirs
3634 AC_SUBST(SRC_SUBDIR_DEPS)
3635 XE_APPEND(src, MAKE_SUBDIR)
3636 internal_makefile_list="Makefile"
3637 SUBDIR_MAKEFILES=''
3638 test -d lock || mkdir lock
3639 for dir in $MAKE_SUBDIR; do
3640   case "$dir" in */* ) dnl Implement mkdir -p
3641     ( for d in `echo $dir | sed 's:/: :g'` ; do
3642         test -d "$d" || mkdir "$d"; cd "$d"
3643       done ) ;;
3644    * ) test -d "$dir" || mkdir "$dir" ;;
3645   esac
3646   XE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile)
3647   XE_SPACE(internal_makefile_list, $internal_makefile_list $dir/Makefile.in)
3648 done
3649 AC_SUBST(INSTALL_ARCH_DEP_SUBDIR)
3650 AC_SUBST(MAKE_SUBDIR)
3651 AC_SUBST(SUBDIR_MAKEFILES)
3652
3653 dnl Make s&m symlinks in the src directory, for config.h
3654 for dir in src/s src/m; do
3655   if test ! -d "$dir" ; then
3656     echo Making symbolic link to "$srcdir/$dir"
3657     ${LN_S} "$srcdir/$dir" "$dir"
3658   fi
3659 done
3660
3661 if test "$extra_verbose" = "yes"; then
3662   echo ""
3663   PRINT_VAR(extra_objs
3664    c_switch_general  c_switch_window_system  c_switch_all
3665   ld_switch_general ld_switch_window_system ld_switch_all
3666     ld_libs_general   ld_libs_window_system   ld_libs_all)
3667   echo ""
3668 fi
3669
3670 dnl Create some auxiliary files
3671 if test -f $srcdir/src/gdbinit -a ! -f src/gdbinit ; then
3672   echo "creating src/gdbinit"; echo ""
3673   echo "source $srcdir/src/gdbinit" > src/gdbinit
3674 fi
3675
3676 dnl Create top level .sbinit for Sun compilers
3677 if test "$__SUNPRO_C" = "yes"; then
3678   echo "creating .sbinit"; echo ""
3679   ( echo "# For use with Sun WorkShop's Source browser."
3680     echo "# See sbquery(1) and sbinit(4) for more information"
3681     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
3682   ) > .sbinit
3683 fi
3684
3685 dnl There are no more compile tests; remove the core they created.
3686 rm -f core
3687
3688 dnl ----------------------------------------------
3689 dnl Substitute into Makefile, config.h and paths.h
3690 dnl ----------------------------------------------
3691
3692 dnl what sort of things to edit into Makefile, config.h and paths.h
3693 dnl configuration here uncanonicalized to avoid exceeding size limits.
3694
3695 AC_SUBST(PROGNAME)
3696 AC_SUBST(version)
3697 AC_SUBST(configuration)
3698 AC_SUBST(canonical)
3699 AC_SUBST(srcdir)
3700 AC_SUBST(bindir)
3701 AC_SUBST(datadir)
3702 AC_SUBST(pkgdir)
3703 AC_SUBST(statedir)
3704 AC_SUBST(libdir)
3705 AC_SUBST(mandir)
3706
3707 AC_SUBST(prefix)
3708 dnl Yo, Stephen Bourne!  I want to marry you!
3709 PREFIX=$prefix
3710 while true; do
3711   case "$PREFIX" in
3712     *\$* ) eval "PREFIX=$PREFIX" ;;
3713     *) break ;;
3714   esac
3715 done
3716 AC_SUBST(PREFIX)
3717
3718 AC_SUBST(exec_prefix)
3719 EXEC_PREFIX=$exec_prefix
3720 while true; do
3721   case "$EXEC_PREFIX" in
3722     *\$* ) eval "EXEC_PREFIX=$EXEC_PREFIX" ;;
3723     *) break ;;
3724   esac
3725 done
3726 AC_SUBST(EXEC_PREFIX)
3727
3728 AC_SUBST(infodir)
3729 AC_SUBST(INFODIR_USER_DEFINED)
3730 INFODIR=$infodir
3731 while true; do
3732   case "$INFODIR" in
3733     *\$* ) eval "INFODIR=$INFODIR" ;;
3734     *) break ;;
3735   esac
3736 done
3737 AC_SUBST(INFODIR)
3738
3739 AC_SUBST(infopath)
3740 AC_SUBST(INFOPATH_USER_DEFINED)
3741 INFOPATH=$infopath
3742 while true; do
3743   case "$INFOPATH" in
3744     *\$* ) eval "INFOPATH=$INFOPATH" ;;
3745     *) break ;;
3746   esac
3747 done
3748 AC_SUBST(INFOPATH)
3749
3750 AC_SUBST(package_path)
3751 AC_SUBST(PACKAGE_PATH_USER_DEFINED)
3752 PACKAGE_PATH=$package_path
3753 while true; do
3754   case "$PACKAGE_PATH" in
3755     *\$* ) eval "PACKAGE_PATH=$PACKAGE_PATH" ;;
3756     *) break ;;
3757   esac
3758 done
3759 AC_SUBST(PACKAGE_PATH)
3760
3761 AC_SUBST(lispdir)
3762 AC_SUBST(LISPDIR_USER_DEFINED)
3763 LISPDIR=$lispdir
3764 while true; do
3765   case "$LISPDIR" in
3766     *\$* ) eval "LISPDIR=$LISPDIR" ;;
3767     *) break ;;
3768   esac
3769 done
3770 AC_SUBST(LISPDIR)
3771
3772 dnl AC_SUBST(sitelispdir)
3773 dnl AC_SUBST(SITELISPDIR_USER_DEFINED)
3774 dnl SITELISPDIR=$sitelispdir
3775 dnl while true; do
3776 dnl   case "$SITELISPDIR" in
3777 dnl     *\$* ) eval "SITELISPDIR=$SITELISPDIR" ;;
3778 dnl     *) break ;;
3779 dnl   esac
3780 dnl done
3781 dnl AC_SUBST(SITELISPDIR)
3782
3783 AC_SUBST(etcdir)
3784 AC_SUBST(ETCDIR_USER_DEFINED)
3785 ETCDIR=$etcdir
3786 while true; do
3787   case "$ETCDIR" in
3788     *\$* ) eval "ETCDIR=$ETCDIR" ;;
3789     *) break ;;
3790   esac
3791 done
3792 AC_SUBST(ETCDIR)
3793
3794 AC_SUBST(lockdir)
3795 AC_SUBST(LOCKDIR_USER_DEFINED)
3796 LOCKDIR=$lockdir
3797 while true; do
3798   case "$LOCKDIR" in
3799     *\$* ) eval "LOCKDIR=$LOCKDIR" ;;
3800     *) break ;;
3801   esac
3802 done
3803 AC_SUBST(LOCKDIR)
3804
3805 AC_SUBST(archlibdir)
3806 AC_SUBST(ARCHLIBDIR_USER_DEFINED)
3807 ARCHLIBDIR=$archlibdir
3808 while true; do
3809   case "$ARCHLIBDIR" in
3810     *\$* ) eval "ARCHLIBDIR=$ARCHLIBDIR" ;;
3811     *) break ;;
3812   esac
3813 done
3814 AC_SUBST(ARCHLIBDIR)
3815
3816 AC_SUBST(docdir)
3817 AC_SUBST(bitmapdir)
3818 AC_SUBST(extra_objs)
3819 AC_SUBST(ld_dynamic_link_flags)
3820
3821 dnl The following flags combine all the information from:
3822 dnl - command line options (user always gets priority)
3823 dnl - user environment variables
3824 dnl - determined by configure
3825 dnl - the s&m header files (deprecated)
3826 AC_SUBST(machfile)
3827 AC_SUBST(opsysfile)
3828 AC_SUBST(c_switch_general)
3829 AC_SUBST(c_switch_window_system)
3830 AC_SUBST(c_switch_all)
3831 AC_SUBST(ld_switch_general)
3832 AC_SUBST(ld_switch_window_system)
3833 AC_SUBST(ld_switch_all)
3834 AC_SUBST(ld_libs_general)
3835 AC_SUBST(ld_libs_window_system)
3836 AC_SUBST(ld_libs_all)
3837 AC_SUBST(CFLAGS)
3838 AC_SUBST(CPPFLAGS)
3839 AC_SUBST(LDFLAGS)
3840 RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
3841 AC_SUBST(RECURSIVE_MAKE)
3842
3843 AC_SUBST(native_sound_lib)
3844 AC_SUBST(sound_cflags)
3845 AC_SUBST(RANLIB)
3846 AC_SUBST(dynodump_arch)
3847
3848 # The default is yes
3849 if test "$with_site_lisp" = "no"; then
3850   AC_DEFINE(INHIBIT_SITE_LISP)
3851 fi
3852
3853 XE_SPACE(ac_configure_args, $ac_configure_args)
3854 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$canonical")
3855 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "$ac_configure_args")
3856 AC_DEFINE_UNQUOTED(config_machfile,  "$machfile")
3857 AC_DEFINE_UNQUOTED(config_opsysfile, "$opsysfile")
3858
3859 dnl Following are deprecated
3860
3861 null_string=""
3862 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE,     $null_string)
3863 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, $null_string)
3864 AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,      $null_string)
3865 AC_DEFINE_UNQUOTED(LD_SWITCH_SITE,       $null_string)
3866 AC_DEFINE_UNQUOTED(C_SWITCH_SITE,        $null_string)
3867
3868 dnl Note: as a general rule, *only* define things here that are not
3869 dnl autodetected.  For things that are autodetected, define them
3870 dnl at the point where the autodetection occurs or would occur,
3871 dnl so that the user gets immediate feedback on the results of the
3872 dnl autodetection.
3873
3874 test -n "$puresize" && AC_DEFINE_UNQUOTED(RAW_PURESIZE, $puresize)
3875
3876 if   test "$GNU_MALLOC"         = "yes"; then AC_DEFINE(GNU_MALLOC)
3877 elif test "$with_system_malloc" = "yes"; then AC_DEFINE(USE_SYSTEM_MALLOC)
3878 elif test "$with_debug_malloc"  = "yes"; then AC_DEFINE(USE_DEBUG_MALLOC)
3879                                               AC_DEFINE(USE_SYSTEM_MALLOC)
3880 fi
3881 test "$with_i18n3"         = "yes" && AC_DEFINE(I18N3)
3882 test "$GCC"                = "yes" && AC_DEFINE(USE_GCC)
3883 test "$external_widget"    = "yes" && AC_DEFINE(EXTERNAL_WIDGET)
3884 test "$with_gnu_make"      = "yes" && AC_DEFINE(USE_GNU_MAKE)
3885 test "$no_doc_file"        = "yes" && AC_DEFINE(NO_DOC_FILE)
3886 dnl test "$const_is_losing"    = "yes" && AC_DEFINE(CONST_IS_LOSING)
3887 test "$with_quantify"      = "yes" && AC_DEFINE(QUANTIFY)
3888 test "$with_pop"           = "yes" && AC_DEFINE(MAIL_USE_POP)
3889 test "$with_kerberos"      = "yes" && AC_DEFINE(KERBEROS)
3890 test "$with_hesiod"        = "yes" && AC_DEFINE(HESIOD)
3891 test "$use_union_type"     = "yes" && AC_DEFINE(USE_UNION_TYPE)
3892
3893 dnl -------------------------------
3894 dnl Report on what we decided to do
3895 dnl -------------------------------
3896
3897 (
3898 dnl /etc/osversion is on SONY NEWS-OS
3899 if test -f /etc/osversion; then dnl SONY NEWS-OS
3900   echo "osversion: `cat /etc/osversion`"
3901 else
3902   echo "uname -a: `uname -a`"
3903 fi
3904 echo ""
3905 echo "$0 $quoted_arguments"
3906 ) > Installation
3907
3908 xemacs_betaname=""
3909 test ! -z "${emacs_beta_version}" && xemacs_betaname="-b${emacs_beta_version}"
3910
3911 dnl Start stdout redirection to '| tee -a Installation'
3912 (
3913 echo "
3914
3915 XEmacs ${emacs_major_version}.${emacs_minor_version}${xemacs_betaname} \"$xemacs_codename\" configured for \`$canonical'.
3916
3917   Where should the build process find the source code?    $srcdir
3918   What installation prefix should install use?            $prefix
3919   What operating system and machine description files should XEmacs use?
3920         \`$opsysfile' and \`$machfile'
3921   What compiler should XEmacs be built with?              $CC $CFLAGS
3922   Should XEmacs use the GNU version of malloc?            ${GNU_MALLOC}${GNU_MALLOC_reason}
3923   Should XEmacs use the relocating allocator for buffers? $rel_alloc
3924   What window system should XEmacs use?                   ${window_system}"
3925 if test "$with_x11" = "yes"; then
3926   echo "  Where do we find X Windows header files?                $x_includes"
3927   echo "  Where do we find X Windows libraries?                   $x_libraries"
3928 fi
3929 if test -n "$site_includes"; then
3930   echo "  Additional header files:                                $site_includes"
3931 fi
3932 if test -n "$site_libraries"; then
3933   echo "  Additional libraries:                                   $site_libraries"
3934 fi
3935 if test -n "$site_prefixes"; then
3936   echo "  Additional prefixes:                                    $site_prefixes"
3937 fi
3938 if test -n "$runpath"; then
3939   echo "  Runtime library search path:                            $runpath"
3940 fi
3941 test "$with_dnet"  = yes && echo "  Compiling in support for DNET."
3942 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
3943 test "$with_xauth" = yes && echo "  Compiling in support for XAUTH."
3944 if test "$with_xmu" != yes -a "$with_x11" = yes; then
3945   echo "  No Xmu; substituting equivalent routines."
3946 fi
3947
3948 if test "$with_xpm" = yes; then
3949   echo "  Compiling in support for XPM images."
3950 elif test "$with_x11" = yes; then
3951   echo "  --------------------------------------------------------------------"
3952   echo "  WARNING: Compiling without XPM support."
3953   if test "$xpm_problem" != ""; then
3954     echo "  Reason: $xpm_problem"
3955   fi
3956   echo "  WARNING: You should strongly consider installing XPM."
3957   echo "  WARNING: Otherwise toolbars and other graphics will look suboptimal."
3958   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
3959   echo "  --------------------------------------------------------------------"
3960 fi
3961 if test "$with_png" = yes; then
3962   echo "  Compiling in support for PNG image handling."
3963 elif test "$window_system" != "none"; then
3964   echo "  --------------------------------------------------------------------"
3965   echo "  WARNING: Compiling without PNG image support."
3966   if test "$png_problem" != ""; then
3967     echo "  Reason: $png_problem"
3968   fi
3969   echo "  WARNING: You should strongly consider installing the PNG libraries."
3970   echo "  WARNING: Otherwise certain images and glyphs may not display."
3971   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
3972   echo "  --------------------------------------------------------------------"
3973 fi
3974 test "$with_gif"   = yes && echo "  Compiling in support for (builtin) GIF image handling."
3975 test "$with_jpeg"  = yes && echo "  Compiling in support for JPEG image handling."
3976 test "$with_tiff"  = yes && echo "  Compiling in support for TIFF image handling."
3977 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
3978 case "$with_sound" in
3979   nas    ) echo "  Compiling in network sound (NAS) support." ;;
3980   native ) echo "  Compiling in native sound support." ;;
3981   both   ) echo "  Compiling in both network and native sound support." ;;
3982 esac
3983 test "$old_nas" = yes && echo "        nas library lacks error trapping, will play synchronously"
3984
3985 test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley DB."
3986 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
3987 test "$with_database_gnudbm" = yes && echo "  Compiling in support for GNU DBM."
3988
3989 test "$with_umich_ldap"      = yes && echo "  Compiling in support for LDAP (UMich libs)."
3990 test "$with_ns_ldap"         = yes && echo "  Compiling in support for LDAP (Netscape SDK)."
3991 test "$with_ldap" = yes -a "$with_umich_ldap" = no -a "$with_ns_ldap" = no && echo "  Compiling in support for LDAP (Generic)."
3992
3993 test "$with_ncurses"  = yes && echo "  Compiling in support for ncurses."
3994 test "$with_gpm"      = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
3995
3996 test "$with_mule"     = yes && echo "  Compiling in Mule (multi-lingual) support."
3997 test "$with_file_coding"     = yes && echo "  Compiling in File coding support."
3998 test "$with_xim"      != no && echo "  Compiling in XIM (X11R5+ I18N input method) support."
3999 test "$with_xim" = motif    && echo "    Using Motif to provide XIM support."
4000 test "$with_xim" = xlib     && echo "    Using raw Xlib to provide XIM support."
4001 test "$with_xfs" = yes      && echo "    Using XFontSet to provide bilingual menubar."
4002 test "$with_canna"    = yes && echo "  Compiling in support for Canna on Mule."
4003 if test "$with_wnn" = yes; then
4004   echo "  Compiling in support for the WNN input method on Mule."
4005   test "$with_wnn6" = yes && echo "    Using WNN version 6."
4006 fi
4007 test "$with_i18n3"    = yes && echo "  Compiling in I18N support, level 3 (doesn't currently work)."
4008
4009 test "$with_cde"      = yes && echo "  Compiling in support for CDE."
4010 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
4011 test "$with_offix"    = yes && echo "  Compiling in support for OffiX."
4012 test "$with_dragndrop" = yes && echo "  Compiling in EXPERIMENTAL support for Drag'n'Drop ($dragndrop_proto )."
4013 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
4014 test "$with_session"  != no && echo "  Compiling in support for proper session-management."
4015 case "$with_menubars" in
4016   lucid ) echo "  Using Lucid menubars." ;;
4017   motif ) echo "  Using Motif menubars."
4018           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
4019           echo "             We recommend using the Lucid menubar instead."
4020           echo "             Re-run configure with --with-menubars='lucid'." ;;
4021 esac
4022 case "$with_scrollbars" in
4023   lucid    ) echo "  Using Lucid scrollbars."     ;;
4024   motif    ) echo "  Using Motif scrollbars."     ;;
4025   athena   ) echo "  Using Athena scrollbars."    ;;
4026   athena3d ) echo "  Using Athena-3d scrollbars." ;;
4027 esac
4028 case "$with_dialogs" in
4029   motif    ) echo "  Using Motif dialog boxes."     ;;
4030   athena   ) echo "  Using Athena dialog boxes."    ;;
4031   athena3d ) echo "  Using Athena-3d dialog boxes." ;;
4032 esac
4033 test "$with_shlib" = "yes" && echo "  Compiling in DLL support."
4034 test "$with_clash_detection" = yes && \
4035   echo "  Clash detection will use \"$lockdir\" for locking files."
4036 echo "  movemail will use \"$mail_locking\" for locking mail spool files."
4037 test "$with_pop"        = yes && echo "  Using POP for mail access"
4038 test "$with_kerberos"   = yes && echo "  Using Kerberos for POP authentication"
4039 test "$with_hesiod"     = yes && echo "  Using Hesiod to get POP server host"
4040 test "$use_union_type"  = yes && echo "  Using the union type for Lisp_Objects."
4041 test "$use_minimal_tagbits" = yes && echo "  Using Lisp_Objects with minimal tagbits."
4042 test "$use_indexed_lrecord_implementation" = yes && echo "  Using indexed lrecord implementation."
4043 test "$debug"              = yes && echo "  Compiling in extra code for debugging."
4044 test "$memory_usage_stats" = yes && echo "  Compiling in code for checking XEmacs memory usage."
4045 test "$usage_tracking"     = yes && echo "  Compiling with usage tracking active (Sun internal)."
4046 if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc" \
4047   != "no no no no no"; then
4048   echo "  WARNING: ---------------------------------------------------------"
4049   echo "  WARNING: Compiling in support for runtime error checking."
4050   echo "  WARNING: XEmacs will run noticeably more slowly as a result."
4051   echo "  WARNING: Error checking is on by default for XEmacs beta releases."
4052   echo "  WARNING: ---------------------------------------------------------"
4053 fi
4054 echo ""
4055 ) | tee -a Installation
4056 dnl echo "The above configure report is appended to \"Installation\" file."
4057 echo ""
4058
4059 dnl Generate Installation.el
4060 echo '(setq Installation-string "' > Installation.el
4061 sed 's/"/\\"/g' Installation >> Installation.el
4062 echo '")' >> Installation.el
4063
4064 dnl -----------------------------------
4065 dnl Now generate config.h and Makefiles
4066 dnl -----------------------------------
4067
4068 dnl This has to be called in order for this variable to get into config.status
4069 AC_SUBST(internal_makefile_list)
4070 # Remove any trailing slashes in these variables.
4071 test -n "$prefix" &&
4072   prefix=`echo '' "$prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4073 test -n "$exec_prefix" &&
4074   exec_prefix=`echo '' "$exec_prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4075
4076 dnl Build Makefile.in's from Makefile.in.in's
4077 dnl except ./Makefile from $srcdir/Makefile.in
4078
4079 for file in $internal_makefile_list; do
4080   test "$file" = src/Makefile.in && \
4081     file="src/Makefile.in:src/Makefile.in.in:src/depend"
4082   ac_output_files="${ac_output_files+$ac_output_files }$file"
4083 done
4084 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
4085
4086 AC_OUTPUT($ac_output_files,
4087 [for dir in $MAKE_SUBDIR; do
4088   echo creating $dir/Makefile
4089   (
4090 changequote(<<, >>)dnl
4091     cd $dir
4092     rm -f junk.c
4093     < Makefile.in \
4094       sed -e '/^# Generated/d' \
4095           -e 's%/\*\*/#.*%%' \
4096           -e 's/^ *# */#/' \
4097           -e '/^##/d' \
4098           -e '/^#/ {
4099 p
4100 d
4101 }'        -e '/./ {
4102 s/\([\"]\)/\\\1/g
4103 s/^/"/
4104 s/$/"/
4105 }'  > junk.c;
4106     $CPP -I. -I${top_srcdir}/src $CPPFLAGS junk.c > junk.cpp;
4107     < junk.cpp                          \
4108       sed -e 's/^#.*//'                 \
4109         -e 's/^[ TAB][ TAB]*$//'        \
4110         -e 's/^ /TAB/'                  \
4111         | sed -n -e '/^..*$/p'          \
4112         | sed '/^"/ {
4113 s/\\\([\"]\)/\1/g
4114 s/^[ TAB]*"//
4115 s/"[ TAB]*$//
4116 }'      > Makefile.new
4117     chmod 444 Makefile.new
4118     mv -f Makefile.new Makefile
4119     rm -f junk.c junk.cpp
4120 changequote([, ])dnl
4121 )
4122 done
4123
4124 dnl Append AC_DEFINE information to lib-src/config.values
4125 dnl (AC_SUBST information is already there (see config.values.sh).
4126 sed < config.status >> lib-src/config.values \
4127   -e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \
4128   -e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \
4129   -e 's/^\([[^ ]]*\) $/\1 ""/' \
4130   -e 's/ 1$/ t/'
4131
4132 ],
4133 [CPP="$CPP"
4134  CPPFLAGS="$CPPFLAGS"
4135  top_srcdir="$srcdir"
4136  MAKE_SUBDIR="$MAKE_SUBDIR"
4137 ])