XEmacs 21.2-b4
[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 NEC
1329   mips-nec-sysv*)
1330     machine=mips-nec
1331     NON_GNU_CC=/usr/ccs/bin/cc
1332     NON_GNU_CPP=/usr/ccs/lib/cpp
1333   ;;
1334
1335   dnl Silicon Graphics machines
1336   dnl Iris 2500 and Iris 2500 Turbo (aka the Iris 3030)
1337   m68*-sgi-iris3.5* ) machine=irist opsys=iris3-5 ;;
1338   m68*-sgi-iris3.6* | m68*-sgi-iris*) machine=irist opsys=iris3-6 ;;
1339   dnl Iris 4D
1340   mips-sgi-irix3.*    ) opsys=irix3-3 ;;
1341   mips-sgi-irix4.*    ) opsys=irix4-0 ;;
1342   mips-sgi-irix6*     ) opsys=irix6-0 ;;
1343   mips-sgi-irix5.1*   ) opsys=irix5-1 ;;
1344   mips-sgi-irix5.2*   ) opsys=irix5-2 ;;
1345   mips-sgi-irix5.*    ) opsys=irix5-3 ;;
1346   mips-sgi-irix*      ) opsys=irix5-0 ;;
1347
1348   dnl SONY machines
1349   *-sony-newsos[[34]]* | *-sony-news[[34]]* ) opsys=bsd4-3 ;;
1350   *-sony-news* ) opsys=newsos5 ;;
1351
1352   dnl Stride
1353   m68*-stride-sysv* ) machine=stride opsys=usg5-2 ;;
1354
1355   dnl Suns
1356   *-*-solaris* | *-*-sunos* | *-sun-mach* | *-sun-bsd* )
1357     dnl Hardware type
1358     case "$canonical" in
1359       m68*-sunos1* )             machine=sun1     ;;
1360       m68*-sunos2* )             machine=sun2     ;;
1361       m68* )                     machine=sun3     ;;
1362       i*86*-sun-sunos[[34]]* )   machine=sun386   ;;
1363       i*86-*-* )                 machine=intel386 ;;
1364       rs6000* )                  machine=rs6000   ;;
1365     esac
1366
1367     dnl Make $canonical even more so.
1368     case "$canonical" in *-sunos5*)
1369       canonical=`echo $canonical | sed -e s/sunos5/solaris2/`;;
1370     esac
1371
1372     dnl On SunOS 4, use /usr/lib/cpp, sans dynodump, /bin/ranlib
1373     dnl On SunOS 5, use cc -E,        need dynodump, RANLIB not needed
1374     dnl But, SunOS 5.6 no longer needs dynodump because it has a similar
1375     dnl function integrated.
1376     case "$canonical" in
1377       *-sunos4* )
1378         #test -f /usr/lib/cpp     && NON_GNU_CPP=/usr/lib/cpp ;;
1379         : ;;
1380       *-solaris2* )
1381         #test -f /usr/ccs/lib/cpp && NON_GNU_CPP=/usr/ccs/lib/cpp
1382         RANLIB=':' ;;
1383     esac
1384
1385     case "$canonical" in
1386       *-solaris*          )
1387         opsys=sol2
1388         os_release=`uname -r | sed -e 's/^\([[0-9]]\)\.\([[0-9]]\).*/\1\2/'`
1389         AC_DEFINE_UNQUOTED(OS_RELEASE, $os_release) ;;
1390
1391       dnl The last Sun386 ran 4.0.
1392       i*86-*-sunos4*      ) opsys=sunos4-0      ;;
1393       *-sunos4.0*         ) opsys=sunos4-0      ;;
1394       *-sunos4.1.2*       ) opsys=sunos4-1-2    ;;
1395       *-sunos4.1.3*       ) opsys=sunos4-1-3    ;;
1396       *-sunos4.1.[[4-9]]* ) opsys=sunos4-1-4    ;;
1397       *-sunos4* | *-sunos ) opsys=sunos4-1      ;;
1398       *-mach*             ) opsys=mach-bsd4-3   ;;
1399       *                   ) opsys=bsd4-2        ;;
1400     esac
1401
1402     case "$canonical" in *-sunos4*shr* ) opsys="${opsys}-shr" ;; esac
1403
1404     dnl Watch out for a compiler guaranteed not to work.
1405     test "$opsys $CC" = "sol2 /usr/ucb/cc" && CC=""
1406   ;;
1407
1408   dnl Tadpole 68k
1409   m68*-tadpole-sysv* ) machine=tad68k opsys=usg5-3 ;;
1410
1411   dnl Tahoe machines
1412   tahoe-tahoe-bsd4.2* ) machine=tahoe opsys=bsd4-2 ;;
1413   tahoe-tahoe-bsd4.3* ) machine=tahoe opsys=bsd4-3 ;;
1414
1415   dnl Tandem Integrity S2
1416   mips-tandem-sysv* ) machine=tandem-s2 opsys=usg5-3 ;;
1417
1418   dnl Tektronix XD88
1419   m88k-tektronix-sysv3* ) machine=tekxd88 opsys=usg5-3 ;;
1420
1421   dnl Tektronix 16000 box (6130?)
1422   ns16k-tektronix-bsd* ) machine=ns16000 opsys=bsd4-2 ;;
1423   dnl Tektronix 4300
1424   dnl src/m/tek4300.h hints that this is a m68k machine.
1425   m68*-tektronix-bsd* ) machine=tek4300 opsys=bsd4-3 ;;
1426
1427   dnl Titan P2 or P3
1428   titan-titan-sysv* ) machine=titan opsys=usg5-3 ;;
1429
1430   dnl Ustation E30 (SS5E)
1431   m68*-unisys-uniplus* ) machine=ustation opsystem=unipl5-2 ;;
1432
1433   dnl Vaxen.
1434   vax-dec-* )
1435     case "$canonical" in
1436       *-sysv[[01]]* | *-sysvr[[01]]* )  opsys=usg5-0 ;;
1437       *-sysv2* | *-sysvr2* )            opsys=usg5-2 ;;
1438       *-mach* )                         opsys=mach-bsd4-3 ;;
1439     esac
1440   ;;
1441
1442   dnl Whitechapel MG1
1443   ns16k-whitechapel-* ) machine=mg1 ;;
1444
1445   dnl Wicat
1446   m68*-wicat-sysv* ) machine=wicat opsys=usg5-2 ;;
1447
1448   dnl Intel 386 machines where we do not care about the manufacturer
1449   i[[3-9]]86-*-* )
1450     machine=intel386
1451     case "$canonical" in
1452       *-isc1.* | *-isc2.[[01]]* ) opsys=386-ix ;;
1453       *-isc2.2* )               opsys=isc2-2 ;;
1454       *-isc4.0* )               opsys=isc4-0 ;;
1455       *-isc4.* )                opsys=isc4-1
1456                                 GCC_TEST_OPTIONS=-posix
1457                                 NON_GCC_TEST_OPTIONS=-Xp
1458                                 ;;
1459       *-isc* )                  opsys=isc3-0 ;;
1460       *-esix5* )                opsys=esix5r4 NON_GNU_CPP=/usr/lib/cpp ;;
1461       *-esix* )                 opsys=esix ;;
1462       *-mach* )                 opsys=mach-bsd4-3 ;;
1463       *-xenix* )                opsys=xenix ;;
1464       *-sco3.2v4* )             opsys=sco4 NON_GNU_CPP=/lib/cpp  ;;
1465       *-bsd386* | *-bsdi1* )    opsys=bsd386 ;;
1466       *-bsdi3* )                opsys=bsdos3 ;;
1467       *-bsdi2.1* )              opsys=bsdos2-1 ;;
1468       *-bsdi2* )                opsys=bsdos2 ;;
1469       *-sco3.2v5* )             opsys=sco5 ;
1470         dnl This is a pain.  Like the current USL cc, SCO cc -E
1471         dnl tokenizes as it preprocesses, making configure very
1472         dnl unhappy.  Unfortunately, /lib/cpp does not understand
1473         dnl flags like "-b elf", so we have to cheat in order to
1474         dnl pick up the right defines for UNEXEC from the s-file.
1475         dnl 01/05/95 robertl@dgii.com
1476         if test "$dynamic" = "yes" ; then
1477                 NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE -D_SCO_ELF"  ;
1478         else
1479                 NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE"  ;
1480         fi ;;
1481       *-386bsd* )               opsys=386bsd ;;
1482       *-freebsd* )              opsys=freebsd ;;
1483       *-nextstep* )             opsys=nextstep ;;
1484       *-pc-cygwin32 )           opsys=cygwin32 ;;
1485       dnl Otherwise, we fall through to the generic opsys code at the bottom.
1486     esac
1487   ;;
1488
1489   dnl Linux/68k
1490   m68k-*-linux* ) machine=m68k opsys=linux ;;
1491
1492   dnl Linux/arm
1493   arm-*-linux* ) machine=arm opsys=linux ;;
1494
1495 esac
1496
1497 if test -z "$machine" -o -z "$opsys"; then
1498   (echo "$progname: XEmacs hasn't been ported to \`$canonical' systems."
1499    echo "$progname: Check \`etc/MACHINES' for recognized configuration names."
1500   ) >&2
1501   exit 1
1502 fi
1503
1504 if test -z "$dynamic"; then
1505   case "$opsys" in
1506     hpux* | sunos4* | sco5 ) dynamic=no ;;
1507     *) dynamic=yes ;;
1508   esac
1509 fi
1510 if test "$dynamic" = "yes"; then
1511   case "$opsys" in
1512     hpux* | sunos4* | sco5 ) opsys="${opsys}-shr" ;;
1513     decosf* ) ld_call_shared="-call_shared" ;;
1514   esac
1515 else dnl "$dynamic" = "no"
1516   case "$opsys" in
1517     sol2 )
1518       echo "Static linking is not supported on Solaris 2."
1519       echo "Rerun configure without specifying --dynamic=no."
1520       exit 1 ;;
1521     linux   ) ld_call_shared="-Bstatic" ;;
1522     decosf* ) ld_call_shared="-non_shared" ;;
1523   esac
1524 fi
1525
1526 dnl Use xlc by default on AIX
1527 case "$opsys" in aix*) NON_GNU_CC=xlc ;; esac
1528
1529 stack_trace_eye_catcher=`echo ${PROGNAME}_${version}_${canonical} | sed 'y/.-/__/'`
1530 AC_DEFINE_UNQUOTED(STACK_TRACE_EYE_CATCHER, $stack_trace_eye_catcher)
1531
1532 machfile="m/${machine}.h"
1533 opsysfile="s/${opsys}.h"
1534
1535 dnl --------------------------------------------------
1536 dnl Determine the compiler, set up for feature testing
1537 dnl --------------------------------------------------
1538
1539 dnl Sun Development environment support
1540 test "$with_sparcworks" = "yes" && with_workshop=yes # compatibility alias
1541 XE_CHECK_FEATURE_DEPENDENCY(workshop, tooltalk)
1542 if test "$with_workshop" = "yes"; then
1543   AC_DEFINE(SUNPRO)
1544   XE_ADD_OBJS(sunpro.o)
1545 fi
1546
1547 if test "$with_clash_detection" = "yes"; then
1548   AC_DEFINE(CLASH_DETECTION)
1549   XE_ADD_OBJS(filelock.o)
1550 fi
1551
1552 dnl Choose a compiler from (in order)
1553 dnl --compiler, env var CC, with_gcc=no && ${NON_GNU_CC:-cc}, AC_PROG_CC
1554 test -n "$compiler" && CC="$compiler"
1555 if test "$with_gcc" = "no"; then dnl Try to find a non-gcc compiler
1556   case "$CC" in "" | *gcc* ) CC="${NON_GNU_CC-cc}" ;; esac
1557 fi
1558
1559 dnl If we don't set CFLAGS here, AC_PROG_CC will set it.
1560 dnl But we know better what's good for us, so we do our own
1561 dnl computation of real CFLAGS later.
1562 dnl --cflags overrides environment variable CFLAGS
1563 test "${cflags-unset}" != unset && CFLAGS="$cflags"
1564 if test "${CFLAGS-unset}" != unset
1565   then cflags_specified=yes;
1566   else cflags_specified=no;
1567 fi
1568
1569 xe_save_CFLAGS="$CFLAGS"
1570
1571 AC_PROG_CC dnl Autoconf has its own magic for compiler autodetection
1572
1573 dnl Retry using random guesswork if AC_PROG_CC got it wrong...
1574 if   test "$with_gcc" = "no"  -a "$GCC" = "yes"; then
1575   CC=${NON_GNU_CC-cc}
1576   AC_PROG_CC
1577 elif test "$with_gcc" = "yes" -a "$GCC" != "yes" ; then
1578   CC=gcc
1579   AC_PROG_CC
1580 fi
1581 CFLAGS="$xe_save_CFLAGS"
1582
1583 dnl Figure out what C preprocessor to use.
1584
1585 dnl On Sun systems, people sometimes set up the variable CPP
1586 dnl with a value that is a directory, not an executable at all.
1587 dnl Detect that case, and ignore that value.
1588 test -n "$CPP" -a -d "$CPP" && CPP=
1589
1590 test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
1591
1592 AC_PROG_CPP
1593
1594 AC_AIX
1595
1596 AC_MSG_CHECKING(for GNU libc)
1597 AC_TRY_COMPILE([#include <features.h>],[
1598 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
1599 #error Not a GNU libc system :-(
1600 ******* ======= ******** &&&&&&&&
1601 #endif
1602 ], have_glibc=yes, have_glibc=no)
1603 AC_MSG_RESULT($have_glibc)
1604 dnl I'm tired of pop being broken with GLIBC -slb
1605 dnl Well. then why not fix fucking pop?
1606 test "$have_glibc" = "yes" && AC_DEFINE(_GNU_SOURCE)
1607
1608
1609 dnl Identify compilers to enable compiler-specific hacks.
1610 dnl Add support for other compilers HERE!
1611 dnl GCC is already identified elsewhere.
1612 AC_TRY_RUN([int main () {
1613 #if defined __SUNPRO_C
1614 return 11;
1615 #elif defined __DECC
1616 return 12;
1617 #else
1618 return 0;
1619 #endif
1620 }], [],
1621 [case "$conftest_rc" in
1622   11) echo "You appear to be using the SunPro C compiler."; __SUNPRO_C=yes ;;
1623   12) echo "You appear to be using the DEC C compiler."   ; __DECC=yes ;;
1624 esac])
1625
1626
1627 dnl case "$canonical" in
1628 dnl   *-sun-sunos* ) test "$CPP" = "acc -E" && CPP="acc -E -Xs" ;;
1629 dnl esac
1630
1631 dnl --------------------------------------------------------------------
1632 dnl Extract some information from the operating system and machine files
1633 dnl --------------------------------------------------------------------
1634
1635 echo "Extracting information from the machine- and system-dependent headers..."
1636
1637 dnl It is not important that this name contain the PID; you cannot run
1638 dnl two configures in the same directory and have anything work
1639 dnl anyway.
1640 tempcname="conftest.c"
1641
1642 dnl CPP_to_sh(CPP_SYMBOL, SH_VAR, DEFAULT_VALUE)
1643 define([CPP_to_sh],
1644 [[#]ifndef [$1]
1645 [#]define [$1]ifelse([$3],,, [ "$3"])
1646 [#]endif
1647 configure___ [$2]=[$1]
1648 ])dnl CPP_to_sh
1649
1650 dnl CPP_boolean_to_sh(CPP_SYMBOL, SH_VAR)
1651 define([CPP_boolean_to_sh],
1652 [[#]ifdef [$1]
1653 configure___ [$2]=yes
1654 [#]else
1655 configure___ [$2]=no
1656 [#]endif
1657 ])dnl CPP_boolean_to_sh
1658
1659 cat > $tempcname <<EOF
1660 #define NOT_C_CODE
1661 #define C_SWITCH_SITE
1662 #define C_SWITCH_X_SITE
1663 #define LD_SWITCH_SITE
1664 #define LD_SWITCH_X_SITE
1665 #define LD_SWITCH_X_SITE_AUX
1666 #define OS_RELEASE $os_release
1667 #include "$srcdir/src/$opsysfile"
1668 #include "$srcdir/src/$machfile"
1669
1670 CPP_to_sh(LIBS_MACHINE, libs_machine)
1671 CPP_to_sh(LIBS_SYSTEM,  libs_system)
1672 CPP_to_sh(LIBS_TERMCAP, libs_termcap)
1673 CPP_to_sh(LIB_STANDARD, libs_standard)
1674
1675 CPP_to_sh(OBJECTS_MACHINE, objects_machine)
1676 CPP_to_sh(OBJECTS_SYSTEM,  objects_system)
1677
1678 CPP_to_sh(C_SWITCH_MACHINE,   c_switch_machine)
1679 CPP_to_sh(C_SWITCH_SYSTEM,    c_switch_system)
1680
1681 CPP_to_sh(LD_SWITCH_MACHINE,  ld_switch_machine)
1682 CPP_to_sh(LD_SWITCH_SYSTEM,   ld_switch_system)
1683
1684 CPP_to_sh(UNEXEC, unexec, unexec.o)
1685
1686 CPP_to_sh(LD_SWITCH_SHARED, ld_switch_shared, -c)
1687
1688 #ifdef ORDINARY_LINK
1689 #define LD "\$(CC) \$(CFLAGS)"
1690 #else /* no ORDINARY LINK */
1691 #ifdef COFF_ENCAPSULATE
1692 #define LD "\$(CC) -nostdlib"
1693 #else /* not COFF_ENCAPSULATE */
1694 #ifdef LINKER
1695 #define LD LINKER
1696 #else /* ! defined (LINKER) */
1697 #define LD "ld"
1698 #endif /* ! defined (LINKER) */
1699 #endif /* ! defined (COFF_ENCAPSULATE) */
1700 #endif /* not ORDINARY_LINK */
1701 configure___ ld=LD
1702
1703 CPP_to_sh(LIB_GCC, lib_gcc)
1704 CPP_to_sh(LD_TEXT_START_ADDR, ld_text_start_addr)
1705
1706 #if ! defined (ORDINARY_LINK) && !defined (START_FILES)
1707 #ifdef NO_REMAP
1708 #ifdef COFF_ENCAPSULATE
1709 #define START_FILES "pre-crt0.o /usr/local/lib/gcc-crt0.o"
1710 #else /* ! defined (COFF_ENCAPSULATE) */
1711 #define START_FILES "pre-crt0.o /lib/crt0.o"
1712 #endif /* ! defined (COFF_ENCAPSULATE) */
1713 #else /* ! defined (NO_REMAP) */
1714 #define START_FILES "ecrt0.o"
1715 #endif /* ! defined (NO_REMAP) */
1716 #endif /* no ORDINARY_LINK */
1717 #ifndef START_FILES
1718 #define START_FILES
1719 #endif
1720 configure___ start_files=START_FILES
1721
1722 CPP_boolean_to_sh(ORDINARY_LINK, ordinary_link)
1723 CPP_boolean_to_sh(SYSTEM_MALLOC, system_malloc)
1724 CPP_boolean_to_sh(TERMINFO, have_terminfo)
1725 CPP_boolean_to_sh(MAIL_USE_FLOCK, mail_use_flock)
1726 CPP_boolean_to_sh(MAIL_USE_LOCKF, mail_use_lockf)
1727 EOF
1728
1729 dnl The value of CPP is a quoted variable reference, so we need to do this
1730 dnl to get its actual value...
1731 CPP=`eval "echo $CPP"`
1732 define(TAB, [   ])dnl
1733 changequote(, )dnl
1734 eval `$CPP -Isrc $tempcname \
1735         | sed -n -e "s/[ TAB]*=[ TAB\"]*/='/" -e "s/[ TAB\"]*\$/'/" -e "s/^configure___//p"`
1736 changequote([, ])dnl
1737
1738 rm $tempcname
1739
1740 dnl For debugging...
1741 test "$extra_verbose" = "yes" && \
1742   PRINT_VAR(libs_machine libs_system libs_termcap libs_standard
1743   objects_machine objects_system c_switch_machine c_switch_system
1744   ld_switch_machine ld_switch_system unexec ld_switch_shared
1745   ld lib_gcc ld_text_start_addr start_files ordinary_link
1746   have_terminfo mail_use_flock mail_use_lockf) && echo ""
1747
1748 dnl Non-ordinary link usually requires -lc
1749 test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc"
1750
1751 dnl Compiler-specific hacks
1752 dnl DEC C requires -std
1753 test "$__DECC" = "yes" && XE_APPEND(-std, c_switch_site)
1754
1755 dnl Calculalate value of CFLAGS:
1756 dnl Use either command line flag, environment var, or autodetection
1757 if test "$cflags_specified" = "no"; then
1758   dnl Following values of CFLAGS are known to work well.
1759   dnl Should we take debugging options into consideration?
1760   if   test "$GCC" = "yes"; then
1761     CFLAGS="-g -O3 -Wall -Wno-switch"
1762     dnl I'm not convinced this is a good idea any more. -sb
1763     dnl test "$opsys $machine" = "linux intel386" && \
1764     dnl CFLAGS="$CFLAGS -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2"
1765     dnl cygwin can't cope with -O3
1766     test "$opsys $machine" = "cygwin32 intel386" && \
1767       CFLAGS="-g -O2 -Wall -Wno-switch"
1768   elif test "$__SUNPRO_C" = "yes"; then
1769     case "$opsys" in
1770       sol2    ) CFLAGS="-v -xO4" ;;
1771       sunos4* ) CFLAGS="-xO2";;
1772     esac
1773   elif test "$__DECC" = "yes"; then
1774     CFLAGS="-O3"
1775   elif test "$CC" = "xlc"; then
1776     CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000"
1777   dnl ### Add optimal CFLAGS support for other compilers HERE!
1778   else
1779     CFLAGS="-O" ;dnl The only POSIX-approved flag
1780   fi
1781 fi
1782
1783 dnl Inform compiler that certain flags are meant for the linker
1784 dnl XE_PROTECT_LINKER_FLAGS(shell_var)
1785 define([XE_PROTECT_LINKER_FLAGS], [
1786 if test "$GCC" = "yes"; then
1787   set x $[$1]; shift; [$1]=""
1788   while test -n "[$]1"; do
1789     case [$]1 in
1790       -L  | -l  | -u         ) [$1]="$[$1] [$]1 [$]2"; shift ;;
1791       -L* | -l* | -u* | -Wl* ) [$1]="$[$1] [$]1" ;;
1792       -Xlinker* ) ;;
1793       * ) [$1]="$[$1] -Xlinker [$]1" ;;
1794     esac
1795     shift
1796   done
1797 fi])dnl
1798 XE_PROTECT_LINKER_FLAGS(ld_switch_system)
1799 XE_PROTECT_LINKER_FLAGS(ld_switch_machine)
1800 XE_PROTECT_LINKER_FLAGS(LDFLAGS)
1801 XE_PROTECT_LINKER_FLAGS(ld_call_shared)
1802
1803 dnl Add s&m-determined objects (including unexec) to link line
1804 test -n "$objects_machine" && XE_ADD_OBJS($objects_machine)
1805 test -n "$objects_system"  && XE_ADD_OBJS($objects_system)
1806 test -n "$unexec"          && XE_ADD_OBJS($unexec)
1807
1808 dnl Dynodump (Solaris 2.x, x<6)
1809 AC_MSG_CHECKING(for dynodump)
1810 if test "$unexec" != "unexsol2.o"; then
1811   AC_MSG_RESULT(no)
1812 else
1813   AC_MSG_RESULT(yes)
1814   AC_DEFINE(DYNODUMP)
1815   XE_APPEND(dynodump, MAKE_SUBDIR)
1816   XE_APPEND(dynodump, SRC_SUBDIR_DEPS)
1817   case "$machine" in
1818     sparc   ) dynodump_arch=sparc ;;
1819     *86*    ) dynodump_arch=i386  ;;
1820     powerpc ) dynodump_arch=ppc   ;;
1821   esac
1822   dnl Dynodump requires the system linker
1823   test "$GCC" = "yes" && XE_APPEND(-fno-gnu-linker, ld_switch_site)
1824 fi
1825
1826 dnl Feed s&m crud to src/Makefile
1827
1828 dnl Linux/powerpc needs the following magic for some reason
1829 test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript"
1830
1831 if test "$unexec" = "unexaix.o"; then
1832 dnl AIX needs various hacks to make static linking work.
1833   if   test "$dynamic" = "no"; then
1834   start_flags="-Wl,-bnso,-bnodelcsect"
1835   test "$GCC" = "yes" && start_flags="-B/bin/ ${start_flags}"
1836   for f in "/lib/syscalls.exp" "/lib/threads.exp"; do
1837     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; fi
1838   done
1839   for f in "/usr/lpp/X11/bin/smt.exp" "/usr/bin/X11/smt.exp"; do
1840     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; break; fi
1841   done
1842   AC_CHECK_LIB(C, terminateAndUnload, XE_APPEND(-lC, libs_system))
1843   fi
1844 elif test -n "$ld_text_start_addr"; then
1845   start_flags="-T $ld_text_start_addr -e __start"
1846 fi
1847 AC_SUBST(start_flags)
1848
1849 AC_SUBST(ld_switch_shared)
1850 AC_SUBST(start_files)
1851 if test "$ordinary_link" = "no" -a "$GCC" = "yes"; then
1852  test -z "$linker" &&  linker='$(CC) -nostdlib'
1853  test -z "$lib_gcc" && lib_gcc='`$(CC) -print-libgcc-file-name`'
1854 fi
1855 test "$GCC" != "yes" && lib_gcc=
1856 AC_SUBST(ld)
1857 AC_SUBST(lib_gcc)
1858
1859 dnl ---------------------------------------------------------------
1860 dnl Add site and system specific flags to compile and link commands
1861 dnl ---------------------------------------------------------------
1862
1863 dnl All dirs present in site-prefixes will be searched for include/ and lib/
1864 dnl subdirs. This can avoid specifying both site-includes and site-libraries.
1865 dnl Those dirs will take precedence over the standard places, but not over
1866 dnl site-includes and site-libraries.
1867
1868 dnl --site-prefixes (multiple dirs)
1869 if test -n "$site_prefixes"; then
1870   for arg in $site_prefixes; do
1871     case "$arg" in
1872         -* ) ;;
1873         * ) argi="-I${arg}/include" ; argl="-L${arg}/lib" ;;
1874     esac
1875     XE_APPEND($argi, c_switch_site)
1876     XE_APPEND($argl, ld_switch_site)
1877   done
1878 fi
1879
1880 dnl --site-libraries (multiple dirs)
1881 if test -n "$site_libraries"; then
1882   for arg in $site_libraries; do
1883     case "$arg" in -* ) ;; * ) arg="-L${arg}" ;; esac
1884     XE_APPEND($arg, ld_switch_site)
1885   done
1886 fi
1887
1888 dnl --site-includes (multiple dirs)
1889 if test -n "$site_includes"; then
1890   for arg in $site_includes; do
1891     case "$arg" in -* ) ;; * ) arg="-I${arg}" ;; esac
1892     XE_APPEND($arg, c_switch_site)
1893   done
1894 fi
1895
1896 dnl GNU software installs by default into /usr/local/{include,lib}
1897 dnl if test -d "/usr/local/include" -a -d "/usr/local/lib"; then
1898 dnl   XE_APPEND("-L/usr/local/lib",    ld_switch_site)
1899 dnl   XE_APPEND("-I/usr/local/include", c_switch_site)
1900 dnl fi
1901
1902 dnl Extra system-specific library directories - please add to list
1903 for dir in "/usr/ccs/lib"; do
1904   test -d "$dir" && XE_APPEND(-L${dir}, ld_switch_site)
1905 done
1906
1907 dnl --site-runtime-libraries (multiple dirs)
1908 if test -n "$site_runtime_libraries"; then
1909   LD_RUN_PATH="`echo $site_runtime_libraries | sed -e 's/  */:/g'`"
1910   export LD_RUN_PATH
1911 fi
1912
1913 dnl -------------------------------------
1914 dnl Compute runtime library path
1915 dnl -------------------------------------
1916
1917 if   test "$dynamic" = "no"; then add_runtime_path=no
1918 elif test -n "$LD_RUN_PATH"; then add_runtime_path=yes
1919 else case "$opsys" in
1920        sol2 | irix* | *bsd* | decosf* ) add_runtime_path=yes ;;
1921        * ) add_runtime_path=no ;;
1922      esac
1923 fi
1924
1925 if test "$add_runtime_path" = "yes"; then
1926   dnl Try to autodetect runtime library flag (usually -R),
1927   dnl and whether it works (or at least does no harm)
1928   AC_MSG_CHECKING("for runtime libraries flag")
1929   case "$opsys" in
1930     sol2 ) dash_r="-R" ;;
1931     decosf* | linux* ) dash_r="-rpath " ;;
1932     *)
1933       dash_r=""
1934       for try_dash_r in "-R" "-R " "-rpath "; do
1935         xe_check_libs="${try_dash_r}/no/such/file-or-directory"
1936         XE_PROTECT_LINKER_FLAGS(xe_check_libs)
1937         AC_TRY_LINK(, , dash_r="$try_dash_r")
1938         xe_check_libs=""
1939         test -n "$dash_r" && break
1940       done ;;
1941   esac
1942   if test -n "$dash_r";
1943     then AC_MSG_RESULT("\"${dash_r}\"")
1944     else AC_MSG_RESULT(NONE)
1945   fi
1946 fi
1947
1948 xe_add_unique_runpath_dir='
1949   xe_add_p=yes
1950   for xe_dir in $runpath_dirs; do   dnl Uniquify
1951     test "$xe_dir" = "$xe_runpath_dir" && xe_add_p=no
1952   done
1953   if test "$xe_add_p" = "yes"; then
1954     test -n "$runpath" && runpath="${runpath}:"
1955     runpath="${runpath}${xe_runpath_dir}"
1956     runpath_dirs="$runpath_dirs $xe_runpath_dir"
1957   fi'
1958
1959
1960 dnl XE_ADD_RUNPATH_DIR(directory)
1961 define([XE_ADD_RUNPATH_DIR],[{
1962 xe_runpath_dir=$1
1963 dnl PRINT_VAR(ld_switch_site ld_switch_x_site runpath xe_runpath_dir LD_RUN_PATH xe_ldflags)
1964   test "$xe_runpath_dir" != "/lib"     -a \
1965         "$xe_runpath_dir" != "/usr/lib" -a \
1966         -n "`ls ${xe_runpath_dir}/*.s[[ol]] 2>/dev/null`" && \
1967   eval "$xe_add_unique_runpath_dir"
1968 }])dnl
1969
1970 dnl XE_COMPUTE_RUNPATH()
1971 define([XE_COMPUTE_RUNPATH],[
1972 if test "$add_runtime_path" = "yes" -a -n "$dash_r"; then
1973   dnl Remove runtime paths from current ld switches
1974   ld_switch_site=`echo   '' $ld_switch_site   | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
1975   ld_switch_x_site=`echo '' $ld_switch_x_site | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
1976   dnl PRINT_VAR(ld_switch_site ld_switch_x_site)
1977
1978   dnl Fix up Runtime path
1979   dnl If LD_RUN_PATH is set in environment, use that.
1980   dnl In this case, assume user has set the right value.
1981   runpath="" runpath_dirs=""
1982   if test -n "$LD_RUN_PATH"; then
1983     runpath="$LD_RUN_PATH"
1984   elif test "$GCC" = "yes"; then
1985     dnl Compute runpath from gcc's -v output
1986     ld_switch_run_save="$ld_switch_run"; ld_switch_run=""
1987     echo "int main(int argc, char *argv[[]]) {return 0;}" > conftest.c
1988     xe_runpath_link='${CC-cc} -o conftest -v $CFLAGS '"$xe_ldflags"' conftest.$ac_ext 2>&1 1>/dev/null'
1989     for arg in `eval "$xe_runpath_link" | grep ' -L'`; do
1990       case "$arg" in P,* | -L* | -R* )
1991         for dir in `echo '' "$arg" | sed -e 's:^ ::' -e 's/^..//' -e 'y/:/ /'`; do
1992           XE_ADD_RUNPATH_DIR("$dir")
1993         done ;;
1994       esac
1995     done
1996     ld_switch_run="$ld_switch_run_save"
1997     rm -f conftest*
1998   else
1999     dnl Add all directories with .so files to runpath
2000     for arg in $ld_switch_site $ld_switch_x_site; do
2001       case "$arg" in -L*) XE_ADD_RUNPATH_DIR(`echo '' "$arg" | sed -e 's:^ ::' -e 's/^-L//'`);; esac
2002     done
2003     dnl Sometimes /opt/SUNWdt/lib is the only installed Motif available
2004     if test "$opsys $need_motif" = "sol2 yes"; then
2005       xe_runpath_dir="/opt/SUNWdt/lib";
2006       eval "$xe_add_unique_runpath_dir";
2007     fi
2008   fi dnl Compute $runpath
2009
2010   if test -n "$runpath"; then
2011     ld_switch_run="${dash_r}${runpath}"
2012     XE_PROTECT_LINKER_FLAGS(ld_switch_run)
2013     test "$extra_verbose" = "yes" && echo "Setting runpath to $runpath"
2014   fi
2015 fi
2016 ])dnl
2017 XE_COMPUTE_RUNPATH()
2018
2019 dnl -----------------------------------
2020 dnl Do some misc autoconf-special tests
2021 dnl -----------------------------------
2022
2023 dnl Do the opsystem or machine files prohibit the use of the GNU malloc?
2024 dnl Assume not, until told otherwise.
2025 GNU_MALLOC=yes
2026 if test "$with_dlmalloc" != "no"; then
2027         doug_lea_malloc=yes
2028 else
2029         doug_lea_malloc=no
2030 fi
2031 after_morecore_hook_exists=yes
2032 AC_CHECK_FUNC(malloc_get_state, ,doug_lea_malloc=no)
2033 AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
2034 AC_MSG_CHECKING(whether __after_morecore_hook exists)
2035 AC_TRY_LINK([extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0],
2036   [AC_MSG_RESULT(yes)],
2037   [AC_MSG_RESULT(no)
2038    after_morecore_hook_exists=no])
2039 if test "$system_malloc" = "yes" ; then
2040   GNU_MALLOC=no
2041   GNU_MALLOC_reason="
2042   (The GNU allocators don't work with this system configuration)."
2043 elif test "$with_system_malloc" = "yes" ; then
2044   GNU_MALLOC=no
2045   GNU_MALLOC_reason="
2046   (User chose not to use GNU allocators)."
2047 elif test "$with_debug_malloc" = "yes" ; then
2048   GNU_MALLOC=no
2049   GNU_MALLOC_reason="
2050   (User chose to use Debugging Malloc)."
2051 fi
2052
2053 if test "$doug_lea_malloc" = "yes" ; then
2054   if test "$GNU_MALLOC" = yes ; then
2055     GNU_MALLOC_reason="
2056   (Using Doug Lea's new malloc from the GNU C Library.)"
2057   fi
2058   AC_DEFINE(DOUG_LEA_MALLOC)
2059   if test "$after_morecore_hook_exists" = "no" ; then
2060     GNU_MALLOC_reason="
2061   (Using Doug Lea's new malloc from the Linux C Library.)"
2062     AC_DEFINE(_NO_MALLOC_WARNING_)
2063   fi
2064   use_minimal_tagbits=yes
2065 fi
2066
2067 dnl #### mcheck is broken in all versions of Linux libc and glibc.
2068 dnl Try this again when 2.1 hits the streets.
2069 dnl Avoid using free-hook.c if support exists for malloc debugging in libc
2070 dnl have_libmcheck=no
2071 dnl if test "$error_check_malloc" = "yes" -a \
2072 dnl    "$have_glibc" = "yes" -a \
2073 dnl    "$doug_lea_malloc" = "yes"; then
2074 dnl   AC_CHECK_HEADERS(mcheck.h)
2075 dnl   AC_CHECK_LIB(mcheck, mcheck, have_libmcheck=yes, have_libmcheck=no)
2076 dnl fi
2077
2078 dnl if test "$have_libmcheck" = "yes"; then
2079 dnl   AC_DEFINE(HAVE_LIBMCHECK)
2080 dnl   libmcheck=-lmcheck
2081 dnl   AC_SUBST(libmcheck)
2082 dnl fi
2083
2084 dnl Some other nice autoconf tests.  If you add a test here which
2085 dnl should make an entry in src/config.h, do not forget to add an
2086 dnl #undef clause to src/config.h.in for autoconf to modify.
2087
2088 AC_PROG_RANLIB
2089 AC_PROG_INSTALL
2090 AC_PROG_YACC
2091
2092 dnl checks for header files
2093 AC_CHECK_HEADERS(mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h)
2094 AC_CHECK_HEADERS(utime.h locale.h libgen.h fcntl.h ulimit.h cygwin/version.h)
2095 AC_CHECK_HEADERS(linux/version.h kstat.h sys/pstat.h inttypes.h sys/un.h a.out.h)
2096 AC_HEADER_SYS_WAIT
2097 AC_HEADER_STDC
2098 AC_HEADER_TIME
2099 AC_DECL_SYS_SIGLIST
2100
2101 dnl Some systems have utime.h but do not declare the struct anyplace.
2102 AC_MSG_CHECKING(for struct utimbuf)
2103 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2104 #include <sys/time.h>
2105 #include <time.h>
2106 #else
2107 #ifdef HAVE_SYS_TIME_H
2108 #include <sys/time.h>
2109 #else
2110 #include <time.h>
2111 #endif
2112 #endif
2113 #ifdef HAVE_UTIME_H
2114 #include <utime.h>
2115 #endif], [static struct utimbuf x; x.actime = x.modtime;],
2116   [AC_MSG_RESULT(yes)
2117    AC_DEFINE(HAVE_STRUCT_UTIMBUF)],
2118   AC_MSG_RESULT(no))
2119
2120 dnl checks for typedefs
2121 AC_TYPE_SIGNAL
2122 AC_TYPE_SIZE_T
2123 AC_TYPE_PID_T
2124 AC_TYPE_UID_T
2125 AC_TYPE_MODE_T
2126 AC_TYPE_OFF_T
2127
2128 AC_MSG_CHECKING(for struct timeval)
2129 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2130 #include <sys/time.h>
2131 #include <time.h>
2132 #else
2133 #ifdef HAVE_SYS_TIME_H
2134 #include <sys/time.h>
2135 #else
2136 #include <time.h>
2137 #endif
2138 #endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
2139   [AC_MSG_RESULT(yes)
2140   HAVE_TIMEVAL=yes
2141   AC_DEFINE(HAVE_TIMEVAL)],
2142   [AC_MSG_RESULT(no)
2143    HAVE_TIMEVAL=no])
2144
2145 dnl checks for structure members
2146 AC_STRUCT_TM
2147 AC_STRUCT_TIMEZONE
2148
2149 dnl checks for compiler characteristics
2150 AC_C_CONST
2151
2152 dnl check for Make feature
2153 AC_PROG_MAKE_SET
2154
2155 dnl check byte order
2156 AC_C_BIGENDIAN
2157
2158 dnl define SIZEOF_TYPE
2159 AC_CHECK_SIZEOF(short)
2160 if test "$ac_cv_sizeof_short" = 0; then
2161   echo ""
2162   echo "*** PANIC *** Configure tests are not working - compiler is broken."
2163   echo "*** PANIC *** Please examine config.log for compilation errors."
2164   exit 1
2165 fi
2166 AC_CHECK_SIZEOF(int)
2167 AC_CHECK_SIZEOF(long)
2168 AC_CHECK_SIZEOF(long long)
2169 AC_CHECK_SIZEOF(void *)
2170
2171 dnl check for long file names
2172 AC_SYS_LONG_FILE_NAMES
2173
2174 dnl -lm is required by LISP_FLOAT_TYPE, among other things
2175 AC_CHECK_LIB(m, sin)
2176
2177 dnl Floating operation support is now unconditional
2178 AC_DEFINE(LISP_FLOAT_TYPE)
2179
2180 AC_TRY_LINK([#include <math.h>],
2181   [return atanh(1.0) + asinh(1.0) + acosh(1.0); ],
2182   AC_DEFINE(HAVE_INVERSE_HYPERBOLIC))
2183
2184 dnl Determine type of mail locking from configure args and s&m headers
2185 AC_CHECKING(type of mail spool file locking)
2186 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
2187 test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
2188 if   test "$mail_locking" = "lockf"; then AC_DEFINE(REAL_MAIL_USE_LOCKF)
2189 elif test "$mail_locking" = "flock"; then AC_DEFINE(REAL_MAIL_USE_FLOCK)
2190 else mail_locking="dot-locking"
2191 fi
2192
2193 dnl Used by getloadavg() - does not require root priveleges
2194 AC_CHECK_LIB(kstat, kstat_open)
2195
2196 dnl Another way to get the load average
2197 AC_CHECK_LIB(kvm, kvm_read)
2198
2199 case "$opsys" in decosf*)
2200   AC_CHECK_LIB(pthreads, cma_open)
2201   test "$ac_cv_lib_pthreads_cma_open" = "yes" && \
2202     c_switch_site="$c_switch_site -threads" ;;
2203 esac
2204
2205 AC_MSG_CHECKING(whether the -xildoff compiler flag is required)
2206 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
2207   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
2208     then AC_MSG_RESULT(no);
2209     else AC_MSG_RESULT(yes); XE_APPEND(-xildoff, ld_switch_site)
2210   fi
2211   else AC_MSG_RESULT(no)
2212 fi
2213
2214 dnl Link with "-z ignore" on Solaris if supported
2215 if test "$opsys" = "sol2" && test "$OS_RELEASE" -ge 56; then
2216   AC_MSG_CHECKING(for \"-z ignore\" linker flag)
2217   case "`ld -h 2>&1`" in
2218     *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
2219       XE_PREPEND(-z ignore, ld_switch_site) ;;
2220     *) AC_MSG_RESULT(no) ;;
2221   esac
2222 fi
2223
2224 dnl ----------------------
2225 dnl Choose a window system
2226 dnl ----------------------
2227
2228 AC_CHECKING("for specified window system")
2229
2230 if test "$with_x11" != "no"; then
2231   dnl User-specified --x-includes or --x-libraries implies --with-x11.
2232   test "$x_includes $x_libraries" != "NONE NONE" && \
2233    window_system=x11 with_x11=yes
2234
2235   dnl Autodetection of X11 libraries and includes
2236   dnl -------------------------------------------
2237   dnl AC_PATH_XTRA thinks it can find our X headers and includes, but
2238   dnl it often gets it wrong, so we only use it as a last resort.
2239
2240   dnl $OPENWINHOME implies --x-includes and --x-libraries
2241   dnl Not (yet) handled by autoconf2
2242   if test "$x_includes $x_libraries" = "NONE NONE" \
2243     -a -n "$OPENWINHOME" \
2244     -a "$OPENWINHOME" != "/usr/openwin" \
2245     -a -d "$OPENWINHOME"; then
2246       test -d "$OPENWINHOME/lib"           && x_libraries="$OPENWINHOME/lib"
2247       test -d "$OPENWINHOME/include"       && x_includes="$OPENWINHOME/include"
2248       test -d "$OPENWINHOME/share/include" && x_includes="$OPENWINHOME/share/include"
2249   fi
2250
2251   if test "$x_includes" = "NONE"; then
2252     dnl AC_PATH_XTRA often guesses /usr/include, when some other
2253     dnl include directory is a MUCH better guess (Linux, HP-UX 10.20).
2254     dnl This is a workaround for idiot (esp. HP) system vendors, who
2255     dnl provide a /usr/include/X11, but DON'T FULLY POPULATE IT.
2256     for dir in "/usr/X11" "/usr/X11R6"; do
2257       if test -d "$dir/include/X11"; then x_includes="$dir/include"; break; fi
2258     done
2259   fi
2260
2261   if test "$x_libraries" = "NONE"; then
2262     for dir in "/usr/X11/lib" "/usr/X11R6/lib" "/usr/lib/X11R6"; do
2263       if test -r "$dir/libX11.a"; then x_libraries="$dir"; break; fi
2264     done
2265   fi
2266
2267   AC_PATH_XTRA # Autoconf claims to find X library and include dirs for us.
2268   if test "$no_x" = "yes"
2269   then with_x11=no  window_system=none HAVE_X_WINDOWS=no
2270   else with_x11=yes window_system=x11  HAVE_X_WINDOWS=yes
2271   fi
2272 fi
2273
2274 case "$with_x11" in
2275   yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
2276   no  ) window_system=none HAVE_X_WINDOWS=no  ;;
2277 esac
2278
2279 if test "$with_x11" = "yes"; then
2280   AC_DEFINE(HAVE_X_WINDOWS)
2281   XE_APPEND(lwlib, MAKE_SUBDIR)
2282   XE_APPEND(lwlib, SRC_SUBDIR_DEPS)
2283
2284   dnl Try to find Motif/CDE/Tooltalk dirs
2285   dnl These take precedence over other X libs/includes, so PRE-pend
2286   for lib_dir in "/usr/dt/lib" "/usr/lib/Motif2.1" "/usr/lib/Motif1.2" "/usr/lib/Motif1.1"; do
2287     inc_dir=`echo $lib_dir | sed -e 's/lib/include/'`
2288     if test -d "$lib_dir" -a -d "$inc_dir"; then
2289       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2290         x_libraries="$lib_dir $x_libraries"
2291         XE_PREPEND(-L${lib_dir}, X_LIBS) ;;
2292       esac
2293       case "$x_includes" in "$inc_dir"* ) ;; *)
2294         x_includes="$inc_dir $x_includes"
2295         XE_PREPEND(-I${inc_dir}, X_CFLAGS) ;;
2296       esac
2297       break; dnl only need ONE Motif implementation!
2298       fi
2299   done
2300
2301   dnl Contrib X libs/includes do NOT take precedence, so AP-pend
2302   for rel in "X11R6" "X11R5" "X11R4"; do
2303     lib_dir="/usr/contrib/$rel/lib" inc_dir="/usr/contrib/$rel/include"
2304     if test -d "$lib_dir" -a -d "$inc_dir"; then
2305       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2306         x_libraries="$x_libraries $lib_dir"
2307         XE_APPEND(-L${lib_dir}, X_LIBS)
2308       esac
2309       case "$x_includes" in "$inc_dir"* ) ;; *)
2310         x_includes="$x_includes $inc_dir"
2311         XE_APPEND(-I${inc_dir}, X_CFLAGS)
2312       esac
2313       break; dnl Only need ONE X11 implementation !
2314     fi
2315   done
2316
2317   dnl Avoid version mismatch for shared library libXm.so on osf4
2318   if test "$GCC" = yes -a -d /usr/shlib; then XE_APPEND(-L/usr/shlib, X_LIBS); fi
2319
2320   ld_switch_x_site="$X_LIBS"
2321
2322   XE_COMPUTE_RUNPATH()
2323
2324   if test "$extra_verbose" = "yes"; then
2325     echo; echo "X11 compilation variables:"
2326     PRINT_VAR(x_libraries x_includes X_CFLAGS X_LIBS X_PRE_LIBS X_EXTRA_LIBS)
2327     echo
2328   fi
2329
2330   dnl Set up bitmaps search path.
2331   dnl The original suggestion was to unconditionally to append X11/bitmaps
2332   dnl to each element of $x_includes, I'm pretty sure this is the wrong
2333   dnl thing to do.  We test for bitmaps and X11/bitmaps directories on each
2334   dnl element and add them to BITMAPDIR if they exist.
2335   bitmapdirs=
2336   if test "$x_includes" != NONE; then
2337     for i in $x_includes; do
2338       if test -d "$i/bitmaps"; then
2339         bitmapdirs="$i/bitmaps:$bitmapdirs"
2340       fi
2341       if test -d "$i/X11/bitmaps"; then
2342         bitmapdirs="$i/X11/bitmaps:$bitmapdirs"
2343       fi
2344     done
2345     bitmapdirs=`echo "$bitmapdirs" | sed s/.$//`
2346   fi
2347   test ! -z "$bitmapdirs" && AC_DEFINE_UNQUOTED(BITMAPDIR, "$bitmapdirs")
2348
2349   dnl Autodetect defines extracted from X config by xmkmf, e.g. NARROWPROTO
2350   AC_CHECKING(for X defines extracted by xmkmf)
2351   rm -fr conftestdir
2352   if mkdir conftestdir; then
2353     cd conftestdir
2354     cat > Imakefile <<'EOF'
2355 xetest:
2356         @echo ${PROTO_DEFINES} ${STD_DEFINES}
2357 EOF
2358     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2359       # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2360       xmkmf_defines=`${MAKE-make} xetest 2>/dev/null | grep -v make`
2361     fi
2362     cd ..
2363     rm -fr conftestdir
2364     for word in $xmkmf_defines; do
2365       case "$word" in
2366         -D*=* ) ;;
2367         -D* ) word=`echo '' $word | sed -e 's:^ *-D::'`
2368               AC_DEFINE_UNQUOTED($word) ;;
2369       esac
2370     done
2371   fi
2372
2373   dnl make sure we can find Intrinsic.h
2374   AC_CHECK_HEADER(X11/Intrinsic.h, ,
2375    [AC_MSG_ERROR("Unable to find X11 header files.")])
2376
2377   dnl -lXt and -lX11 are required
2378   dnl Some broken systems require the magic "-b i486-linuxaout" flag
2379   AC_CHECK_LIB(X11, XOpenDisplay, have_lib_x11=yes)
2380   if test "$have_lib_x11" != "yes"; then
2381     AC_CHECK_LIB(X11, XGetFontProperty,
2382       ld_switch_x_site="-b i486-linuxaout $ld_switch_x_site",
2383       [AC_MSG_ERROR("Unable to find X11 libraries.")],
2384       -b i486-linuxaout)
2385   fi
2386   libs_x="-lX11"
2387   test "$extra_verbose" = "yes" && echo "    Setting libs_x to \"-lX11\""
2388
2389   dnl Autodetect -lXext
2390   AC_CHECK_LIB(Xext, XShapeSelectInput, XE_PREPEND(-lXext, libs_x))
2391
2392   dnl Require -lXt
2393   AC_CHECK_LIB(Xt, XtOpenDisplay, XE_PREPEND(-lXt, libs_x),
2394     AC_MSG_ERROR("Unable to find X11 libraries."))
2395
2396   AC_MSG_CHECKING(the version of X11 being used)
2397   AC_TRY_RUN([#include <X11/Intrinsic.h>
2398     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }],
2399     [./conftest foobar; x11_release=$?],[x11_release=4],[x11_release=4])
2400   AC_MSG_RESULT(R${x11_release})
2401   AC_DEFINE_UNQUOTED(THIS_IS_X11R${x11_release})
2402
2403   AC_CHECK_HEADERS(X11/Xlocale.h)
2404
2405   dnl remove this - we should avoid checking for specific OS
2406   AC_MSG_CHECKING(for XFree86)
2407   if test -d "/usr/X386/include" -o \
2408           -f "/etc/XF86Config"    -o \
2409           -f "/etc/X11/XF86Config" -o \
2410           -f "/usr/X11R6/lib/X11/XF86Config"; then
2411     AC_MSG_RESULT(yes)
2412     AC_DEFINE(HAVE_XFREE386)
2413   else
2414     AC_MSG_RESULT(no)
2415   fi
2416
2417   dnl autodetect -lXmu
2418   test -z "$with_xmu" && { AC_CHECK_LIB(Xmu, XmuReadBitmapDataFromFile,
2419                            with_xmu=yes, with_xmu=no) }
2420   if test "$with_xmu" = "no"; then
2421     XE_ADD_OBJS(xmu.o)
2422   else
2423     XE_PREPEND(-lXmu, libs_x)
2424     AC_DEFINE(HAVE_XMU)
2425   fi
2426
2427   dnl Autodetect -lXbsd
2428   dnl #### Someone, please add a better function than main
2429   AC_CHECK_LIB(Xbsd, main, XE_PREPEND(-lXbsd, libs_x))
2430
2431   dnl Problem with the MIT distribution of X on AIX
2432   if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then
2433     dnl X11R6 requires thread-safe code on AIX for some reason
2434     if test "$GCC" = "yes"; then
2435       XE_PREPEND(-mthreads, X_CFLAGS)
2436       XE_PREPEND(-mthreads, libs_x)
2437     else
2438       case "$CC" in
2439         "xlc" ) CC="xlc_r" ;;
2440         "xlC" ) CC="xlC_r" ;;
2441         "cc"  ) CC="cc_r" ;;
2442       esac
2443     fi
2444   fi
2445
2446 fi dnl $with_x11 = yes
2447
2448 if test "$with_msw" != "no"; then
2449   AC_CHECKING(for MS-Windows)
2450   AC_CHECK_LIB(gdi32,main,with_msw=yes)
2451   if test "$with_msw" = "yes"; then
2452     AC_DEFINE(HAVE_MS_WINDOWS)
2453     install_pp="$blddir/lib-src/installexe.sh"
2454     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomctl32, libs_system)
2455     test "$with_dragndrop" != no && XE_APPEND(msw, dragndrop_proto)
2456     if test "$window_system" != x11; then
2457         window_system=msw
2458         test "$with_scrollbars" != "no" && with_scrollbars=msw \
2459             && XE_ADD_OBJS(scrollbar-msw.o)
2460         test "$with_menubars"   != "no" && with_menubars=msw \
2461             && XE_ADD_OBJS(menubar-msw.o)
2462         test "$with_toolbars"   != "no" && with_toolbars=msw \
2463             && XE_ADD_OBJS(toolbar-msw.o)
2464         test "$with_dialogs"   != "no" && with_dialogs=msw \
2465             && XE_ADD_OBJS(dialog-msw.o)
2466     else
2467         test "$with_scrollbars"   != "no" && XE_ADD_OBJS(scrollbar-msw.o)
2468         test "$with_menubars"   != "no" && XE_ADD_OBJS(menubar-msw.o)
2469         test "$with_toolbars"   != "no" && XE_ADD_OBJS(toolbar-msw.o)
2470         test "$with_dialogs"   != "no" && XE_ADD_OBJS(dialog-msw.o)
2471     fi
2472     dnl check for our special version of select         
2473     AC_TRY_RUN([#include <fcntl.h>
2474     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }],
2475     [AC_DEFINE(HAVE_MSG_SELECT)])
2476     const_is_losing=no
2477     with_file_coding=yes
2478     use_minimal_tagbits=yes
2479     use_indexed_lrecord_implementation=yes
2480     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)
2481   fi
2482 fi
2483
2484 AC_SUBST(install_pp)
2485
2486 test -z "$window_system" && window_system="none"
2487
2488 dnl Test for features that require a window system - ANY window system
2489 if test "$window_system" = "none"; then
2490   for feature in menubars scrollbars toolbars dialogs dragndrop
2491   do
2492     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2493        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
2494     fi
2495     eval "with_${feature}=no"
2496   done
2497 else
2498   test -z "$with_toolbars" && with_toolbars=yes
2499 fi
2500
2501 dnl ### Test for features that require mswindows support - currently none
2502 dnl ### MS-Windows folks: add code here..... (martin)
2503 if test "$with_msw" != "yes"; then
2504   for feature in   MARTIN_IS_CLUELESS_ABOUT_MSW_FEATURES
2505   do
2506     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2507        AC_MSG_WARN([--with-$feature ignored:  Not valid without MS-Windows support])
2508     fi
2509     eval "with_${feature}=no"
2510   done
2511 else
2512   :
2513 fi
2514
2515 dnl Test for features that require X11 support
2516 if test "$with_x11" != "yes"; then
2517   dnl It ought to be reasonable to have no output device at all, and only use
2518   dnl XEmacs in --batch mode.
2519   dnl if test "$with_tty" = "no" ; then
2520   dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
2521   dnl fi
2522   for feature in tooltalk cde offix session xim xmu \
2523                  xface
2524   do
2525     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2526        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
2527     fi
2528     eval "with_${feature}=no"
2529   done
2530 fi
2531
2532 dnl FSF 19.29 has some bitmapdir stuff here.
2533 bitmapdir=
2534
2535 case "$window_system" in
2536   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
2537   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
2538   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
2539 esac
2540
2541 case "$x_libraries" in *X11R4* )
2542   test "$opsys" = "hpux9"     && opsysfile="s/hpux9-x11r4.h"
2543   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
2544 esac
2545
2546 dnl Enable or disable proper session-management
2547 AC_CHECKING(for session-management option);
2548 dnl if test "$with_session" = "yes"; then
2549 if test "$with_session" != "no"; then
2550   AC_DEFINE(HAVE_SESSION)
2551 fi
2552
2553 dnl Autodetect Xauth
2554 dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
2555 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
2556 test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h,          ,with_xauth=no) }
2557 test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no) }
2558 test -z "$with_xauth" && with_xauth=yes
2559 if test "$with_xauth" = "yes"; then
2560   AC_DEFINE(HAVE_XAUTH)
2561   XE_SPACE(libs_xauth, $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
2562 fi
2563 AC_SUBST(libs_xauth)
2564
2565 dnl This one is for the static initializeds variables in
2566 dnl offix.c, so that the thing is dumped after lastfile.o
2567 AC_SUBST(dnd_objs)
2568
2569 dnl Autodetect tooltalk
2570 if test "$with_tooltalk" != "no" ; then
2571   dnl autodetect the location of tt_c.h
2572   dnl tt_c.h might be in Tt or desktop include directories
2573   for dir in "" "Tt/" "desktop/" ; do
2574     AC_CHECK_HEADER(${dir}tt_c.h, tt_c_h_path="${dir}tt_c.h"; break)
2575   done
2576   if test -z "$tt_c_h_path"; then
2577     if test "$with_tooltalk" = "yes"; then
2578       USAGE_ERROR("Unable to find required tooltalk header files.")
2579     fi
2580     with_tooltalk=no
2581   fi
2582 fi
2583 if test "$with_tooltalk" != "no" ; then
2584   for extra_libs in "" "-lI18N -lce" "-lcxx"; do
2585     AC_CHECK_LIB(tt, tt_message_create,
2586       tt_libs="-ltt $extra_libs"; break, [:],$extra_libs)
2587   done
2588   if test -z "$tt_libs"; then
2589     if test "$with_tooltalk" = "yes"; then
2590       USAGE_ERROR("Unable to find required tooltalk libraries.")
2591     fi
2592     with_tooltalk=no
2593   fi
2594 fi
2595 test -z "$with_tooltalk" && with_tooltalk=yes
2596 if test "$with_tooltalk" = "yes"; then
2597   AC_DEFINE(TOOLTALK)
2598   AC_DEFINE_UNQUOTED(TT_C_H_PATH, "$tt_c_h_path")
2599   XE_PREPEND($tt_libs, libs_x)
2600   XE_ADD_OBJS(tooltalk.o)
2601 fi
2602
2603 dnl Autodetect CDE
2604 test -z "$with_cde" && { AC_CHECK_HEADER(Dt/Dt.h,               , with_cde=no) }
2605 test -z "$with_cde" && { AC_CHECK_LIB(DtSvc, DtDndDragStart, [:], with_cde=no) }
2606 test -z "$with_cde" && with_cde=yes
2607 if test "$with_dragndrop" = no; then
2608   AC_MSG_WARN([No CDE without generic Drag'n'Drop support])
2609   with_cde=no
2610 fi
2611 if test "$with_cde" = "yes" ; then
2612   AC_DEFINE(HAVE_CDE)
2613   XE_PREPEND(-lDtSvc, libs_x)
2614   XE_APPEND(CDE, dragndrop_proto)
2615   with_tooltalk=yes # CDE requires Tooltalk
2616   need_motif=yes    # CDE requires Motif
2617 fi
2618
2619 dnl Always compile OffiX unless --without-offix is given, no
2620 dnl X11 support is compiled in, no standard Xmu is avaiable,
2621 dnl or dragndrop support is disabled
2622 dnl Because OffiX support currently loses when more than one display
2623 dnl is in use, we now disable it by default -slb 07/10/1998.
2624 test "$window_system" != "x11" && with_offix=no
2625 if test "$with_xmu" != yes -a "$with_x11" = yes; then
2626   AC_MSG_WARN([No OffiX without real Xmu support])
2627   with_offix=no
2628 fi
2629 if test "$with_dragndrop" = no; then
2630   AC_MSG_WARN([No OffiX without generic Drag'n'Drop support])
2631   with_offix=no
2632 fi
2633 if test "$with_cde" = yes; then
2634   AC_MSG_WARN([CDE already found, disabling OffiX support])
2635   with_offix=no
2636 fi
2637 test -z "$with_offix" && with_offix=no
2638 if test "$with_offix" = "yes"; then
2639   AC_DEFINE(HAVE_OFFIX_DND)
2640   XE_APPEND(offix.o, dnd_objs)
2641   XE_APPEND(OffiX, dragndrop_proto)
2642 fi
2643
2644 dnl Autodetect Drag'n'Drop support
2645 dnl always included if CDE, Offix, or MSWindows are defined
2646 AC_MSG_CHECKING(if drag and drop API is needed)
2647 if test "$with_dragndrop" != "no" ; then
2648   if test -n "$dragndrop_proto" ; then
2649     with_dragndrop=yes
2650     AC_MSG_RESULT([yes (${dragndrop_proto} )])
2651     AC_DEFINE(HAVE_DRAGNDROP)
2652     XE_APPEND(dragdrop.o, extra_objs)
2653   else
2654     with_dragndrop=no
2655     AC_MSG_RESULT(no)
2656   fi
2657 fi
2658
2659 dnl Autodetect LDAP
2660 AC_CHECKING(for LDAP)
2661 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
2662 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
2663 if test "$with_ldap" != "no"; then
2664   test -z "$with_umich_ldap" && { AC_CHECK_LIB(ldap, ldap_open, with_umich_ldap=yes, with_umich_ldap=no, -llber) }
2665   test "$with_umich_ldap" = "no" && { AC_CHECK_LIB(ldap10, ldap_set_option, with_ns_ldap=yes, with_ns_ldap=no) }
2666   test -z "$with_ldap" -a \( "$with_umich_ldap" = "yes" -o "$with_ns_ldap" = "yes" \) && with_ldap=yes
2667 fi
2668 if test "$with_ldap" = "yes"; then
2669   AC_DEFINE(HAVE_LDAP)
2670   XE_ADD_OBJS(eldap.o)
2671   if test "$with_umich_ldap" = "yes" ; then
2672     AC_DEFINE(HAVE_UMICH_LDAP)
2673     XE_PREPEND(-llber, LIBS)
2674     XE_PREPEND(-lldap, LIBS)
2675   elif test "$with_ldap" = "yes" -a "$with_ns_ldap" = "yes" ; then
2676     AC_DEFINE(HAVE_NS_LDAP)
2677     XE_PREPEND(-lldap10, LIBS)
2678   elif test "$with_ldap" = "yes" ; then
2679     XE_PREPEND(-lldap, LIBS)
2680   fi
2681 fi
2682
2683 dnl ----------------------
2684 dnl Graphics libraries
2685 dnl ----------------------
2686
2687 if test "$window_system" != "none"; then
2688   AC_CHECKING(for graphics libraries)
2689
2690   dnl Autodetect Xpm
2691   xpm_problem=""
2692   if test -z "$with_xpm"; then
2693     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
2694     xe_check_libs=-lXpm
2695     AC_TRY_RUN([#include <X11/xpm.h>
2696     int main(int c, char **v) {
2697     return c == 1 ? 0 :
2698       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
2699       XpmIncludeVersion < 30406 ? 2 : 0 ;}],
2700     [./conftest dummy_arg; xpm_status=$?;
2701       if test "$xpm_status" = "0"; then
2702         with_xpm=yes;
2703       else
2704         with_xpm=no;
2705         if test "$xpm_status" = "1"; then
2706           xpm_problem="Xpm library version and header file version don't match!"
2707         elif test "$xpm_status" = "2"; then
2708           xpm_problem="Xpm library version is too old!"
2709         else
2710           xpm_problem="Internal xpm detection logic error!"
2711         fi
2712         echo "
2713 *** WARNING *** $xpm_problem
2714   I'm not touching that with a 10-foot pole!
2715   If you really want to use the installed version of Xpm, rerun
2716   configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!"
2717     fi],
2718     [with_xpm=no])
2719     xe_check_libs=
2720     AC_MSG_RESULT($with_xpm)
2721   fi
2722   if test "$with_xpm" = "yes"; then
2723     AC_DEFINE(HAVE_XPM)
2724     XE_PREPEND(-lXpm, libs_x)
2725     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
2726     xe_check_libs=-lXpm
2727     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
2728     [xpm_for_msw=no],
2729     [xpm_for_msw=yes])
2730     xe_check_libs=
2731     AC_MSG_RESULT($xpm_for_msw)
2732     if test "$xpm_for_msw" = "yes"; then
2733       AC_DEFINE(FOR_MSW)
2734     fi
2735   fi
2736
2737   dnl For a brief period we had the GIF code split out into a separate library,
2738   dnl but patent problems, etc. sort of squashed that idea.
2739   dnl We default to building with builtin GIF decoding
2740   if test "$with_gif" != "no"; then
2741     with_gif="yes"
2742     AC_DEFINE(HAVE_GIF)
2743     XE_ADD_OBJS(dgif_lib.o gif_io.o)
2744   fi
2745
2746   dnl Too many stupid linkers can't detect cascaded lib dependencies until runtime
2747   dnl So we always search for libz compression support.
2748   if test "$with_png $with_tiff" != "no no"; then
2749     AC_CHECK_LIB(c,  inflate, [:], [
2750     AC_CHECK_LIB(z,  inflate, [XE_PREPEND(-lz,  libs_x)],[
2751     AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])])
2752   fi
2753
2754   dnl autodetect JPEG
2755   test -z "$with_jpeg" && { AC_CHECK_HEADER(jpeglib.h,                    ,with_jpeg=no) }
2756   test -z "$with_jpeg" && { AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,[:],with_jpeg=no) }
2757   test -z "$with_jpeg" && with_jpeg=yes
2758   if test "$with_jpeg" = "yes"; then
2759     AC_DEFINE(HAVE_JPEG)
2760     XE_PREPEND(-ljpeg, libs_x)
2761   fi
2762
2763   dnl autodetect PNG
2764   png_problem=""
2765   test -z "$with_png" && { AC_CHECK_FUNC(pow,                  ,with_png=no) }
2766   test -z "$with_png" && { AC_CHECK_HEADER(png.h,              ,with_png=no) }
2767   test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) }
2768   if test -z "$with_png"; then
2769     AC_MSG_CHECKING(for workable png version information)
2770     xe_check_libs="-lpng -lz"
2771     AC_TRY_RUN([#include <png.h>
2772     int main(int c, char **v) {
2773     if (c == 1) return 0;
2774     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
2775     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}],
2776     [./conftest dummy_arg; png_status=$?;
2777       if test "$png_status" = "0"; then
2778         with_png=yes;
2779       else
2780         with_png=no;
2781         if test "$png_status" = "1"; then
2782           png_problem="PNG library version and header file don't match!"
2783         elif test "$png_status" = "2"; then
2784           png_problem="PNG library version too old (pre 1.0.2)!"
2785         fi
2786         echo "
2787 *** WARNING *** $png_problem
2788   I'm not touching that with a 10-foot pole!
2789   If you really want to use the installed version of libPNG, rerun
2790   configure and add '--with-png=yes', but don't blame me if XEmacs crashes!"
2791     fi],
2792     [with_png=no])
2793     xe_check_libs=
2794     AC_MSG_RESULT($with_png)
2795   fi
2796   if test "$with_png" = "yes"; then
2797     AC_DEFINE(HAVE_PNG)
2798     XE_PREPEND(-lpng, libs_x)
2799   fi
2800
2801   dnl autodetect TIFF
2802   test -z "$with_tiff" && { AC_CHECK_HEADER(tiffio.h,            ,with_tiff=no) }
2803   test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no) }
2804   test -z "$with_tiff" && with_tiff=yes
2805   if test "$with_tiff" = "yes"; then
2806     AC_DEFINE(HAVE_TIFF)
2807     XE_PREPEND(-ltiff, libs_x)
2808   fi
2809 fi
2810
2811 dnl ----------------------
2812 dnl X-Specific Graphics libraries
2813 dnl ----------------------
2814
2815 if test "$with_x11" = "yes"; then
2816
2817   AC_CHECKING(for X11 graphics libraries)
2818
2819   dnl Autodetect XFACE
2820   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
2821   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
2822   test -z "$with_xface" && with_xface=yes
2823   if test "$with_xface" = "yes"; then
2824     AC_DEFINE(HAVE_XFACE)
2825     XE_PREPEND(-lcompface, libs_x)
2826   fi
2827
2828   dnl Autodetect -lXaw
2829   AC_CHECK_LIB(Xaw, XawScrollbarSetThumb, have_xaw=yes, have_xaw=no)
2830   dnl if test "$have_xaw" = "yes"; then
2831     dnl AC_CHECK_HEADER(X11/Xaw/Reports.h, [
2832       dnl XE_APPEND(pkg-src/tree-x, MAKE_SUBDIR)
2833       dnl XE_APPEND(pkg-src/tree-x, INSTALL_ARCH_DEP_SUBDIR)])
2834   dnl fi
2835
2836   dnl autodetect Motif - but only add to libs_x later (if necessary)
2837   AC_CHECK_HEADER(Xm/Xm.h,
2838    [AC_CHECK_LIB(Xm, XmStringFree, have_motif=yes, have_motif=no)],
2839    have_motif=no)
2840
2841   if test "$have_motif" = "yes"; then
2842     dnl autodetect lesstif
2843     AC_MSG_CHECKING(for Lesstif)
2844     AC_EGREP_CPP(yes,
2845 [#include <Xm/Xm.h>
2846 #ifdef LESSTIF_VERSION
2847 yes
2848 #endif
2849 ], have_lesstif=yes, have_lesstif=no)
2850   AC_MSG_RESULT($have_lesstif)
2851   fi
2852
2853 fi dnl "$with_x11" = "yes"
2854
2855 dnl Finish ensuring that we have values for the various toolkit items.
2856 dnl Not all toolkits support all widgets
2857 dnl if Motif is available we use it for the dialog boxes.
2858
2859 case "$with_menubars" in "" | "yes" | "athena" | "athena3d" )
2860   with_menubars="lucid" ;;
2861 esac
2862 case "$with_dialogs" in "" | "yes" | "lucid" )
2863   if   test "$have_motif" = "yes"; then with_dialogs="motif"
2864   elif test "$have_xaw"   = "yes"; then with_dialogs="athena"
2865   else with_dialogs=no
2866   fi ;;
2867 esac
2868 case "$with_scrollbars" in "" | "yes" )
2869   with_scrollbars="lucid" ;;
2870 esac
2871
2872 all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars"
2873
2874 case "$all_widgets" in *athena* )
2875   AC_DEFINE(LWLIB_USES_ATHENA)
2876   AC_DEFINE(NEED_ATHENA)
2877   XE_APPEND(lwlib-Xaw.o, lwlib_objs)
2878   XE_PREPEND(-lXaw, libs_x) ;;
2879 esac
2880
2881 case "$all_widgets" in *motif* )
2882   AC_DEFINE(LWLIB_USES_MOTIF)
2883   AC_DEFINE(NEED_MOTIF)
2884   XE_APPEND(lwlib-Xm.o, lwlib_objs)
2885   need_motif=yes ;;
2886 esac
2887
2888 test "$with_menubars"   = "lucid" && XE_APPEND(xlwmenu.o, lwlib_objs)
2889 test "$with_menubars"   = "motif" && XE_APPEND(xlwmenu.o, lwlib_objs)
2890 test "$with_scrollbars" = "lucid" && XE_APPEND(xlwscrollbar.o, lwlib_objs)
2891 case "$all_widgets" in *lucid* )
2892   AC_DEFINE(NEED_LUCID)
2893   XE_APPEND(lwlib-Xlw.o, lwlib_objs) ;;
2894 esac
2895
2896 AC_SUBST(lwlib_objs)
2897
2898 case "$with_scrollbars" in athena* ) AC_DEFINE(LWLIB_SCROLLBARS_ATHENA);; esac
2899 case "$with_dialogs"    in athena* ) AC_DEFINE(LWLIB_DIALOGS_ATHENA)   ;; esac
2900 test "$with_scrollbars" = "athena3d" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
2901 test "$with_dialogs"    = "athena3d" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
2902
2903 test "$with_menubars"   != "no"    && AC_DEFINE(HAVE_MENUBARS)
2904 test "$with_scrollbars" != "no"    && AC_DEFINE(HAVE_SCROLLBARS)
2905 test "$with_dialogs"    != "no"    && AC_DEFINE(HAVE_DIALOGS)
2906 test "$with_toolbars"   != "no"    && AC_DEFINE(HAVE_TOOLBARS)
2907
2908 test "$with_menubars"   = "lucid"  && AC_DEFINE(LWLIB_MENUBARS_LUCID)
2909 test "$with_scrollbars" = "lucid"  && AC_DEFINE(LWLIB_SCROLLBARS_LUCID)
2910
2911 test "$with_menubars"   = "motif"  && AC_DEFINE(LWLIB_MENUBARS_MOTIF)
2912 test "$with_scrollbars" = "motif"  && AC_DEFINE(LWLIB_SCROLLBARS_MOTIF)
2913 test "$with_dialogs"    = "motif"  && AC_DEFINE(LWLIB_DIALOGS_MOTIF)
2914
2915 test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar.o)
2916 test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar.o)
2917 test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog.o)
2918 test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar.o)
2919 test "$all_widgets" != "no no no no" && XE_ADD_OBJS(gui.o)
2920
2921 if test "$with_x11" = "yes"; then
2922   test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar-x.o)
2923   test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar-x.o)
2924   test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog-x.o)
2925   test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar-x.o)
2926   test "$all_widgets" != "no no no no" && XE_ADD_OBJS(gui-x.o)
2927 else
2928   if test \( "$with_sound" = "nas" \) -o \( "$with_sound" = "both" \); then
2929     echo "Attempt to Build NAS sound without X"
2930     echo "Please remove NAS configuration or build with X"
2931     exit 1
2932   fi
2933 fi
2934
2935 test "$use_minimal_tagbits" = "yes" && AC_DEFINE(USE_MINIMAL_TAGBITS)
2936 test "$use_indexed_lrecord_implementation" = "yes" && \
2937   AC_DEFINE(USE_INDEXED_LRECORD_IMPLEMENTATION)
2938
2939 dnl ----------------------
2940 dnl Mule-dependent options
2941 dnl ----------------------
2942
2943 test -z "$with_mule" && with_mule=no
2944 test -z "$with_file_coding" && with_file_coding=no
2945
2946 dnl if test "$with_mule" = "yes" && test ! -d "$srcdir/lisp/mule"; then
2947 dnl     echo "Attempt to Build with Mule without Mule/Lisp"
2948 dnl     echo "Please install the XEmacs/Mule tarball or"
2949 dnl     echo "rerun configure with --with-mule=no"
2950 dnl     exit 1
2951 dnl fi
2952
2953 if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then
2954   AC_DEFINE(FILE_CODING)
2955   XE_ADD_OBJS(file-coding.o)
2956 fi
2957
2958 if test "$with_mule" = "yes" ; then
2959   AC_CHECKING(for Mule-related features)
2960   AC_DEFINE(MULE)
2961   AC_DEFINE(FILE_CODING)
2962   XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o mule-coding.o file-coding.o)
2963
2964   dnl Use -lintl to get internationalized strerror for Mule
2965   AC_CHECK_HEADERS(libintl.h)
2966   AC_CHECK_LIB(intl, strerror)
2967
2968   AC_CHECKING(for Mule input methods)
2969   dnl Do we have the XmIm* routines?  And if so, do we want to use them?
2970   dnl XIM seems to be flaky except on Solaris...
2971   dnl test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no
2972   case "$with_xim" in "" | "yes" )
2973     AC_CHECKING(for XIM)
2974     dnl XIM + Lesstif is not (yet?) usable
2975     if test "$have_lesstif" = "yes"; then with_xim=xlib
2976     else AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif, with_xim=xlib)
2977     fi
2978   esac
2979   if test "$with_xim" != "no"; then
2980     AC_DEFINE(HAVE_XIM)
2981     if test "$with_xim" = "xlib"; then
2982       AC_DEFINE(XIM_XLIB)
2983       XE_ADD_OBJS(input-method-xlib.o)
2984     fi
2985     if test "$with_xim" = "motif"; then
2986       AC_DEFINE(XIM_MOTIF)
2987       need_motif=yes
2988       XE_ADD_OBJS(input-method-motif.o)
2989     fi
2990     if test "$with_xim" = "motif"; then
2991       with_xfs=no
2992     fi
2993   fi
2994
2995   dnl "with_xim" = "yes"
2996   if test "$with_xfs" = "yes" ; then
2997     AC_CHECKING(for XFontSet)
2998     AC_CHECK_LIB(X11, XmbDrawString, [:], with_xfs=no)
2999     if test "$with_xfs" = "yes" && test "$with_menubars" = "lucid"; then
3000       AC_DEFINE(USE_XFONTSET)
3001       if test "$with_xim" = "no" ; then
3002         XE_ADD_OBJS(input-method-xfs.o)
3003       fi
3004     fi
3005   fi dnl with_xim
3006
3007   dnl Autodetect WNN
3008   test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
3009   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/jllib.h, ,with_wnn=no) }
3010   dnl Detour to find crypt
3011   if test "$with_wnn" != "no"; then
3012     AC_CHECK_FUNCS(crypt)
3013     test "$ac_cv_func_crypt" != "yes" && { AC_CHECK_LIB(crypt, crypt) }
3014   fi
3015   dnl Back to our regularly scheduled wnn hunting
3016   if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
3017     AC_CHECK_LIB(wnn,jl_dic_list_e,libwnn=wnn,
3018       AC_CHECK_LIB(wnn4,jl_dic_list_e,libwnn=wnn4,
3019         AC_CHECK_LIB(wnn6,jl_dic_list_e,libwnn=wnn6,
3020           AC_CHECK_LIB(wnn6_fromsrc,dic_list_e,libwnn=wnn6_fromsrc,with_wnn=no))))
3021   fi
3022   test -z "$with_wnn" && with_wnn=yes
3023   if test "$with_wnn" = "yes"; then
3024     AC_DEFINE(HAVE_WNN)
3025     XE_PREPEND(-l$libwnn, libs_x)
3026     XE_ADD_OBJS(mule-wnnfns.o)
3027     if test "$with_wnn6" != "no"; then
3028       AC_CHECK_LIB($libwnn, jl_fi_dic_list, with_wnn6=yes)
3029       test "$with_wnn6" = "yes" && AC_DEFINE(WNN6)
3030     fi
3031   fi
3032
3033   dnl Autodetect canna
3034   canna_includes_found=no
3035   if test "$with_canna" != "no"; then
3036     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3037   fi
3038   if test "$canna_includes_found" = "no" -a "$with_canna" != "no" -a \
3039       -d "/usr/local/canna/include"; then
3040     save_c_switch_site="$c_switch_site"
3041     c_switch_site="$c_switch_site -I/usr/local/canna/include"
3042     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
3043     if test "$canna_includes_found" != "yes"; then
3044       c_switch_site="$save_c_switch_site"
3045       with_canna="no"
3046     fi
3047   fi
3048
3049   test -z "$with_canna" && { AC_CHECK_HEADER(canna/RK.h,         , with_canna=no) }
3050   test -z "$with_canna" && { AC_CHECK_LIB(RKC, RkBgnBun,       [:],with_canna=no) }
3051   test -z "$with_canna" && { AC_CHECK_LIB(canna,jrKanjiControl,[:],with_canna=no) }
3052   test -z "$with_canna" && with_canna=yes
3053   if test "$with_canna" = "yes"; then
3054     AC_DEFINE(HAVE_CANNA)
3055     XE_PREPEND(-lcanna -lRKC, libs_x)
3056     XE_ADD_OBJS(mule-canna.o)
3057   fi
3058
3059 else dnl "$with_mule" = "no"
3060   for feature in xim canna wnn; do
3061     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3062       AC_MSG_WARN("--with-${feature} ignored:  Not valid without Mule support")
3063     fi
3064     eval "with_${feature}=no"
3065   done
3066 fi dnl with_mule
3067
3068
3069 dnl At this point, we know whether we need the motif lib or not.
3070 if test "$need_motif" = "yes" ; then
3071   XE_PREPEND(-lXm, libs_x)
3072   dnl AIX needs the following library for use with Motif
3073   AC_CHECK_LIB(i18n, layout_object_getvalue, [XE_PREPEND(-li18n, libs_x)])
3074   XE_COMPUTE_RUNPATH()
3075 fi
3076
3077 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)
3078
3079 dnl realpath is buggy on linux, decosf and aix4
3080
3081 dnl The realpath() in linux libc (4.6.27) sometimes fails with ELOOP.
3082 dnl The realpath in ELF linux libc's is O.K.
3083 dnl For example, call realpath on a file thirty-five or so directories deep
3084 dnl and you get ELOOP even if no symlinks at all are involved.
3085 dnl Reports as of 11/1997 indicate BSDi has problems too.
3086 dnl The realpath() in UnixWare2.1.3 could not get any pathname fragment in error condition.
3087 case "$opsys" in
3088   linuxaout* | bsdos3* | freebsd* | decosf4-0* | aix4* ) XE_ADD_OBJS(realpath.o) ;;
3089   * )
3090     case "$canonical" in
3091       *-*-sysv4.2uw2* ) XE_ADD_OBJS(realpath.o) ;;
3092       * ) AC_CHECK_FUNCS(realpath)
3093           test "$ac_cv_func_realpath" != "yes" && XE_ADD_OBJS(realpath.o) ;;
3094     esac ;;
3095 esac
3096
3097 dnl If netdb.h does not declare h_errno, we must declare it by hand.
3098 AC_MSG_CHECKING(whether netdb declares h_errno)
3099 AC_TRY_LINK([#include <netdb.h>],
3100   [return h_errno;],
3101   [AC_MSG_RESULT(yes)
3102    AC_DEFINE(HAVE_H_ERRNO)],
3103   [AC_MSG_RESULT(no)])
3104
3105 AC_MSG_CHECKING(for sigsetjmp)
3106 AC_TRY_COMPILE([#include <setjmp.h>],
3107         [sigjmp_buf bar; sigsetjmp (bar, 0);],
3108   [AC_MSG_RESULT(yes)
3109    AC_DEFINE(HAVE_SIGSETJMP)],
3110   [AC_MSG_RESULT(no)])
3111
3112 AC_MSG_CHECKING(whether localtime caches TZ)
3113 AC_CACHE_VAL(emacs_cv_localtime_cache,
3114 [if test "$ac_cv_func_tzset" = "yes"; then
3115 AC_TRY_RUN([#include <time.h>
3116 #if STDC_HEADERS
3117 # include <stdlib.h>
3118 #endif
3119 extern char **environ;
3120 unset_TZ ()
3121 {
3122   char **from, **to;
3123   for (to = from = environ; (*to = *from); from++)
3124     if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
3125       to++;
3126 }
3127 char TZ_GMT0[] = "TZ=GMT0";
3128 char TZ_PST8[] = "TZ=PST8";
3129 main()
3130 {
3131   time_t now = time ((time_t *) 0);
3132   int hour_GMT0, hour_unset;
3133   if (putenv (TZ_GMT0) != 0)
3134     exit (1);
3135   hour_GMT0 = localtime (&now)->tm_hour;
3136   unset_TZ ();
3137   hour_unset = localtime (&now)->tm_hour;
3138   if (putenv (TZ_PST8) != 0)
3139     exit (1);
3140   if (localtime (&now)->tm_hour == hour_GMT0)
3141     exit (1);
3142   unset_TZ ();
3143   if (localtime (&now)->tm_hour != hour_unset)
3144     exit (1);
3145   exit (0);
3146 }], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
3147 [# If we have tzset, assume the worst when cross-compiling.
3148 emacs_cv_localtime_cache=yes])
3149 else
3150         # If we lack tzset, report that localtime does not cache TZ,
3151         # since we can't invalidate the cache if we don't have tzset.
3152         emacs_cv_localtime_cache=no
3153 fi],[:])dnl
3154 AC_MSG_RESULT($emacs_cv_localtime_cache)
3155 if test $emacs_cv_localtime_cache = yes; then
3156   AC_DEFINE(LOCALTIME_CACHE)
3157 fi
3158
3159 if test "$HAVE_TIMEVAL" = "yes"; then
3160 AC_MSG_CHECKING(whether gettimeofday accepts one or two arguments)
3161 AC_TRY_LINK([
3162 #ifdef TIME_WITH_SYS_TIME
3163 #include <sys/time.h>
3164 #include <time.h>
3165 #else
3166 #ifdef HAVE_SYS_TIME_H
3167 #include <sys/time.h>
3168 #else
3169 #include <time.h>
3170 #endif
3171 #endif
3172   ],
3173   [
3174   struct timeval time;
3175   struct timezone dummy;
3176   gettimeofday (&time, &dummy);
3177 ],
3178   [AC_MSG_RESULT(two)],
3179   [AC_MSG_RESULT(one)
3180    AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)])
3181 fi
3182
3183
3184 AC_C_INLINE
3185 if test "$ac_cv_c_inline" != "no"; then
3186   AC_DEFINE(HAVE_INLINE)
3187   test "$GCC" = "yes" && XE_ADD_OBJS(inline.o)
3188 fi
3189
3190 dnl HP-UX has a working alloca in libPW.
3191 dnl case "${GCC}${opsys}" in hpux* )
3192 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
3193 dnl esac
3194
3195 AC_FUNC_ALLOCA
3196 test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
3197
3198 dnl Check whether vfork exists and works correctly. (This does more
3199 dnl than just check for its existence.) If so, it defines HAVE_VFORK_H.
3200 dnl If not, it defines vfork to be fork.
3201 AC_FUNC_VFORK
3202
3203 dnl Check whether strcoll exists and works correctly. (This does more
3204 dnl than just check for its existence.) If so, it defines HAVE_STRCOLL.
3205 AC_FUNC_STRCOLL
3206
3207 dnl If `getpgrp' takes no argument (the POSIX.1 version), define
3208 dnl `GETPGRP_VOID'.  Otherwise, it is the BSD version, which takes a
3209 dnl process ID as an argument.
3210 AC_CHECK_FUNCS(getpgrp)
3211 AC_FUNC_GETPGRP
3212
3213 dnl We used to call AC_FUNC_MMAP here
3214 dnl Instead we now use following, suggested by Neal Becker
3215 AC_MSG_CHECKING(for working mmap)
3216 case "$opsys" in ultrix* ) have_mmap=no ;; *)
3217 AC_TRY_RUN([#include <stdio.h>
3218 #include <unistd.h>
3219 #include <fcntl.h>
3220 #include <sys/mman.h>
3221
3222 #ifndef MAP_VARIABLE
3223 #define MAP_VARIABLE 0
3224 #endif
3225
3226 #ifndef MAP_FAILED
3227 #define MAP_FAILED -1
3228 #endif
3229
3230 int main (int argc, char *argv[])
3231 {
3232   int fd = -1;
3233   caddr_t p;
3234 #ifndef MAP_ANONYMOUS
3235   fd = open ("/dev/zero", O_RDWR);
3236   if (fd < 0)
3237     return 1;
3238 #define MAP_ANONYMOUS 0
3239 #endif
3240   if (mmap(0, 1024, PROT_READ | PROT_WRITE,
3241            MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS,
3242            fd, 0) != (void *) MAP_FAILED)
3243     return 0;
3244   perror ("conftest: mmap failed");
3245   return 1;
3246 }], have_mmap=yes, have_mmap=no) ;;
3247 esac
3248 AC_MSG_RESULT($have_mmap)
3249 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
3250 AC_FUNC_MMAP
3251
3252 dnl rel_alloc requires either GNU malloc or system malloc with mmap
3253 dnl We only turn rel_alloc on by default if mmap is available.
3254 test "$GNU_MALLOC" != "yes"   -a "$have_mmap" != "yes" && rel_alloc=no
3255 test "$rel_alloc" = "default" -a "$have_mmap"  = "yes" && rel_alloc=yes
3256 test "$rel_alloc" = "yes" && AC_DEFINE(REL_ALLOC)
3257
3258 dnl Check for terminal I/O variants
3259 dnl TERMIOS systems may have termio.h, but not vice-versa, I think.
3260 AC_CHECK_HEADER(termios.h,
3261   AC_DEFINE(HAVE_TERMIOS)
3262   AC_DEFINE(SIGNALS_VIA_CHARACTERS)
3263   AC_DEFINE(NO_TERMIO),
3264   [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])])
3265
3266
3267 dnl Check for Internet sockets.
3268 AC_CHECK_FUNC(socket,
3269  [AC_CHECK_HEADER(netinet/in.h,
3270    [AC_CHECK_HEADER(arpa/inet.h, [
3271   AC_DEFINE(HAVE_SOCKETS)
3272       AC_MSG_CHECKING("for sun_len member in struct sockaddr_un")
3273       AC_TRY_LINK([
3274 #include <sys/types.h>
3275 #include <sys/socket.h>
3276 #include <sys/un.h>
3277       ],
3278       [static struct sockaddr_un x; x.sun_len = 1;],
3279       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)],
3280       [AC_MSG_RESULT(no)])
3281       AC_MSG_CHECKING("for ip_mreq struct in netinet/in.h")
3282       AC_TRY_LINK([
3283 #include <sys/types.h>
3284 #include <netinet/in.h>
3285       ],
3286       [static struct ip_mreq x;],
3287       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MULTICAST)],
3288       [AC_MSG_RESULT(no)])])])])
3289
3290 dnl Check for SYS V IPC. (Inferior to sockets.)
3291 AC_CHECK_FUNC(msgget,
3292   [AC_CHECK_HEADER(sys/ipc.h,
3293     [AC_CHECK_HEADER(sys/msg.h,
3294       [AC_DEFINE(HAVE_SYSVIPC)])])])
3295
3296 dnl Check for directory variants
3297 AC_CHECK_HEADER(dirent.h, [AC_DEFINE(SYSV_SYSTEM_DIR)],
3298   [AC_CHECK_HEADER(sys/dir.h, , [AC_DEFINE(NONSYSTEM_DIR_LIBRARY)])])
3299
3300 dnl Check for nlist.h
3301 AC_CHECK_HEADER(nlist.h, AC_DEFINE(NLIST_STRUCT), )
3302
3303 dnl Check for sound of various sorts.
3304
3305 dnl Autodetect native sound
3306 AC_CHECKING("for sound support")
3307 case "$with_sound" in
3308   native | both ) with_native_sound=yes;;
3309   nas    | no   ) with_native_sound=no;;
3310 esac
3311 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
3312
3313 if test "$with_native_sound" != "no"; then
3314   dnl Maybe sound is already on include path...
3315   if test -n "$native_sound_lib"; then
3316     AC_CHECK_HEADER(multimedia/audio_device.h,
3317       [sound_found=yes sound_cflags=""
3318       XE_ADD_OBJS(sunplay.o)])
3319   fi
3320
3321   dnl Autodetect Sun native sound from SUNWaudmo package
3322   if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
3323     sound_found=yes
3324     XE_ADD_OBJS(sunplay.o)
3325     if test -d "/usr/demo/SOUND/include"
3326       then sound_cflags="-I/usr/demo/SOUND/include"
3327       else sound_cflags="-I/usr/demo/SOUND"
3328     fi
3329     if test -z "$native_sound_lib" ; then
3330       if test -r "/usr/demo/SOUND/lib/libaudio.a"
3331         then native_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
3332         else native_sound_lib="/usr/demo/SOUND/libaudio.a"
3333       fi
3334     fi
3335   fi
3336
3337   dnl Check for SGI and HP native sound libs
3338   if test -z "$sound_found"; then
3339     case "$canonical" in
3340     *-sgi-* )
3341       if test -z "$native_sound_lib"; then
3342         AC_CHECK_LIB(audio, ALopenport, native_sound_lib="-laudio")
3343       fi
3344       if test -n "$native_sound_lib"; then
3345         sound_found=yes sound_cflags=""
3346         XE_ADD_OBJS(sgiplay.o)
3347       fi ;;
3348     hppa*-hp-hpux* )
3349       if test -z "$native_sound_lib"; then
3350         AC_CHECK_LIB(Alib, AOpenAudio, native_sound_lib="-lAlib")
3351       fi
3352       if test -n "$native_sound_lib"; then
3353         sound_found=yes
3354         XE_ADD_OBJS(hpplay.o)
3355         if test "$GCC" = "yes" # Kludge city
3356           then sound_cflags="-Dconst= -Dvolatile= -I/usr/audio/examples"
3357           else sound_cflags="+e -I/usr/audio/examples"
3358         fi
3359       fi ;;
3360     esac
3361   fi
3362
3363   dnl Check for Linux/BSD native sound
3364   if test -z "$sound_found"; then
3365     for dir in "machine" "sys" "linux"; do
3366       AC_CHECK_HEADER(${dir}/soundcard.h,
3367         sound_found=yes
3368         XE_ADD_OBJS(linuxplay.o)
3369         [AC_DEFINE_UNQUOTED(SOUNDCARD_H_PATH, "${dir}/soundcard.h")]
3370         break)
3371     done
3372   fi
3373
3374   test "$sound_found" = "yes" && with_native_sound=yes
3375 fi
3376
3377 if test -z "$with_sound"; then
3378   if test "$with_native_sound" = "yes" -o -n "$native_sound_lib"; then
3379     with_sound=native
3380   fi
3381 fi
3382
3383 if test "$with_native_sound" = "yes"; then
3384   AC_DEFINE(HAVE_NATIVE_SOUND)
3385   test -n "$native_sound_lib" && XE_PREPEND($native_sound_lib, LIBS)
3386 fi
3387
3388 case "$with_sound" in both | nas )
3389   AC_DEFINE(HAVE_NAS_SOUND)
3390   XE_ADD_OBJS(nas.o)
3391   XE_PREPEND(-laudio, libs_x)
3392   dnl If the nas library does not contain the error jump point,
3393   dnl then we force safer behaviour.
3394   AC_EGREP_HEADER(AuXtErrorJump,audio/Xtutil.h,,[AC_DEFINE(NAS_NO_ERROR_JUMP)])
3395 esac
3396
3397 dnl ---------------------
3398 dnl TTY-dependent options
3399 dnl ---------------------
3400
3401 test -z "$with_tty" && with_tty=yes
3402
3403 if test "$with_tty" = "yes"  ; then
3404   AC_CHECKING(for TTY-related features)
3405   AC_DEFINE(HAVE_TTY)
3406   XE_ADD_OBJS(console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o)
3407
3408   dnl Autodetect ncurses.
3409   if test -z "$with_ncurses"; then
3410     AC_CHECK_LIB(ncurses, tgetent, with_ncurses=yes, with_ncurses=no)
3411   fi
3412   if test "$with_ncurses" = "yes"; then
3413     AC_DEFINE(HAVE_NCURSES)
3414     AC_CHECK_HEADER(ncurses/curses.h, curses_h_path=ncurses/curses.h)
3415     AC_CHECK_HEADER(ncurses/term.h, term_h_path=ncurses/term.h)
3416     XE_ADD_OBJS(terminfo.o)
3417     XE_PREPEND(-lncurses, LIBS)
3418
3419     if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then
3420       dnl Try again, and check for the bogus ncurses/ include bug.
3421       dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
3422       dnl <ncurses/unctrl.h>)
3423       save_c_switch_site="$c_switch_site"
3424       c_switch_site="$c_switch_site -I/usr/include/ncurses"
3425       AC_CHECK_HEADER(ncurses/curses.h, curses_h_path=ncurses/curses.h)
3426       if test "$ac_cv_header_ncurses_curses_h" = "yes"
3427         then AC_MSG_WARN("Your system has the bogus ncurses include bug.")
3428         else c_switch_site="$save_c_switch_site"
3429       fi
3430     fi
3431   else dnl "$with_ncurses" = "no"
3432     dnl Autodetect terminfo/-lcurses/-ltermlib/-ltermcap
3433     if test "$have_terminfo" = "yes"; then
3434       XE_ADD_OBJS(terminfo.o)
3435       if test -n "$libs_termcap"; then
3436         XE_PREPEND($libs_termcap, LIBS)
3437       else
3438         for lib in curses termlib termcap; do
3439           AC_CHECK_LIB($lib, tgetent, XE_PREPEND(-l${lib}, LIBS); break)
3440         done
3441       fi
3442     else dnl "$have_terminfo" = "no" && "with_ncurses" = "no"
3443       XE_ADD_OBJS(tparam.o)
3444       dnl The HP-UX curses library seems to have a badly broken version of select(2)
3445       dnl that makes "poll: interrupted system call" messages to appear and
3446       dnl Emacs suprocesses to hang (e.g. TeX compilation w/ AUCTeX) */
3447       case "$opsys" in *-hp-hpux* ) libs_termcap="-ltermcap" ;; esac
3448       if test -n "$libs_termcap"; then
3449         XE_PREPEND($libs_termcap, LIBS)
3450       else
3451         AC_CHECK_LIB(curses, tgetent, XE_PREPEND(-lcurses, LIBS),
3452           AC_CHECK_LIB(termcap, tgetent, XE_PREPEND(-ltermcap, LIBS),
3453             XE_ADD_OBJS(termcap.o)))
3454       fi
3455     fi
3456   fi
3457   AC_DEFINE_UNQUOTED(CURSES_H_PATH, "${curses_h_path-curses.h}")
3458   AC_DEFINE_UNQUOTED(TERM_H_PATH, "${term_h_path-term.h}")
3459
3460   dnl Autodetect gpm
3461   test -z "$with_gpm" && { AC_CHECK_HEADER(gpm.h, , with_gpm=no) }
3462   test -z "$with_gpm" && { AC_CHECK_LIB(gpm, Gpm_Open, with_gpm=yes, with_gpm=no) }
3463   if test "$with_gpm" = "yes"; then
3464     AC_DEFINE(HAVE_GPM)
3465     XE_ADD_OBJS(gpmevent.o)
3466     XE_PREPEND(-lgpm, LIBS)
3467   fi
3468
3469 else dnl "$with_tty" = "no"
3470   for feature in ncurses gpm; do
3471     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3472       AC_MSG_WARN("--with-${feature} ignored:  Not valid without TTY support")
3473     fi
3474     eval "with_${feature}=no"
3475   done
3476 fi dnl with_tty
3477
3478 dnl Do we need event-unixoid.o ?
3479 test "$with_x11" = "yes" -o "$with_tty" = "yes" && XE_ADD_OBJS(event-unixoid.o)
3480
3481 dnl Database support
3482 dnl <mdiers@logware.de>
3483 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
3484 dnl On FreeBSD, both DB and DBM are part of libc.
3485 dnl Note that unless support for DB/(G)DBM is explicitly disabled, we always
3486 dnl want to check for libdb/lib(g)dbm. Also note that libc will not be
3487 dnl checked if we have the libraries.
3488 dnl If support for DB/(G)DBM is requested, but we neither have libdb/lib(g)dbm,
3489 dnl nor does libc implement it, we are a bit lost :)
3490
3491 AC_CHECKING(for database support)
3492
3493 if test "$with_database_gnudbm" != "no"; then
3494   AC_CHECK_HEADERS(ndbm.h, have_ndbm_h=yes)
3495   if test "$have_ndbm_h" = "yes"; then
3496     AC_CHECK_LIB(gdbm, dbm_open, with_database_gnudbm=yes have_libgdbm=yes)
3497   fi
3498   if test "$with_database_gnudbm" != "yes"; then
3499     AC_CHECK_FUNC(dbm_open, with_database_gnudbm=yes)
3500       fi
3501   if test "$with_database_gnudbm" = "yes"; then
3502     AC_DEFINE(HAVE_DBM)
3503     test "$have_libgdbm" = "yes" && XE_PREPEND(-lgdbm, LIBS)
3504     with_database_dbm=no
3505   else with_database_gnudbm=no
3506   fi
3507 fi
3508
3509 if test "$with_database_dbm" != "no"; then
3510   AC_CHECK_FUNC(dbm_open, with_database_dbm=yes need_libdbm=no)
3511   if test "$need_libdbm" != "no"; then
3512     AC_CHECK_LIB(dbm, dbm_open, with_database_dbm=yes need_libdbm=yes)
3513   fi
3514   if test "$with_database_dbm" = "yes"; then
3515     AC_DEFINE(HAVE_DBM)
3516     test "$need_libdbm" = "yes" && XE_PREPEND(-ldbm, LIBS)
3517   else with_database_dbm=no
3518   fi
3519 fi
3520
3521 if test "$with_database_berkdb" != "no"; then
3522   AC_MSG_CHECKING(for Berkeley db.h)
3523   for path in "db/db.h" "db.h"; do
3524     AC_TRY_COMPILE([#ifdef HAVE_INTTYPES_H
3525 #define __BIT_TYPES_DEFINED__
3526 #include <inttypes.h>
3527 typedef uint8_t  u_int8_t;
3528 typedef uint16_t u_int16_t;
3529 typedef uint32_t u_int32_t;
3530 #ifdef WE_DONT_NEED_QUADS
3531 typedef uint64_t u_int64_t;
3532 #endif
3533 #endif
3534 #include <$path>
3535 ],[], db_h_path="$path"; break)
3536   done
3537   if test -z "$db_h_path"
3538   then AC_MSG_RESULT(no); with_database_berkdb=no
3539   else AC_MSG_RESULT($db_h_path)
3540   fi
3541
3542   if test "$with_database_berkdb" != "no"; then
3543     AC_MSG_CHECKING(for Berkeley DB version)
3544     AC_EGREP_CPP(yes,
3545 [#include <$db_h_path>
3546 #if DB_VERSION_MAJOR > 1
3547 yes
3548 #endif
3549 ], [AC_MSG_RESULT(2); dbfunc=db_open], [AC_MSG_RESULT(1); dbfunc=dbopen])
3550     AC_CHECK_FUNC($dbfunc,     with_database_berkdb=yes need_libdb=no, [
3551     AC_CHECK_LIB(db, $dbfunc,  with_database_berkdb=yes need_libdb=yes)])
3552   fi
3553
3554   if test "$with_database_berkdb" = "yes"; then
3555     AC_DEFINE_UNQUOTED(DB_H_PATH, "$db_h_path")
3556     AC_DEFINE(HAVE_BERKELEY_DB)
3557     test "$need_libdb" = "yes" && XE_PREPEND(-ldb, LIBS)
3558   else with_database_berkdb=no
3559   fi
3560 fi
3561
3562 if test "$with_database_gnudbm $with_database_dbm $with_database_berkdb" \
3563      != "no no no"; then
3564   AC_DEFINE(HAVE_DATABASE)
3565   XE_ADD_OBJS(database.o)
3566 fi
3567
3568 dnl Socks support
3569 if test "$with_socks" = "yes"; then
3570   AC_CHECK_LIB(socks, SOCKSinit)
3571   test -n "$ac_cv_lib_socks_SOCKSinit" && AC_DEFINE(HAVE_SOCKS)
3572 fi
3573
3574 dnl Usage tracking (undocumented and likely unused option)
3575 if test "$usage_tracking" = "yes"; then
3576   AC_DEFINE(USAGE_TRACKING)
3577   XE_PREPEND(-Bstatic -lut -Bdynamic, LIBS)
3578 fi
3579
3580 dnl cygwin can't cope with dlfcn at the moment
3581 test -z "$with_shlib" && test "$opsys $machine" = "cygwin32 intel386" && with_shlib=no
3582
3583 dnl autodetect dll support
3584 AC_CHECK_HEADERS(dlfcn.h, have_dlfcn=yes)
3585 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(dl,  dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=dl;  with_shlib=yes]) }
3586 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   _dlopen,  [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_shlib=yes]) }
3587 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_shlib=yes]) }
3588 test -z "$with_shlib" && { AC_CHECK_LIB(dld, shl_load, [ AC_DEFINE(HAVE_SHL_LOAD) DLL_LIB=dld; with_shlib=yes]) }
3589 test -z "$with_shlib" && { AC_CHECK_LIB(dld, dld_init, [ AC_DEFINE(HAVE_DLD_INIT) DLL_LIB=dld; with_shlib=yes]) }
3590 if test "$with_shlib" = "yes"; then
3591   AC_DEFINE(HAVE_SHLIB)
3592   XE_ADD_OBJS(sysdll.o)
3593   XE_ADD_OBJS(dll.o)
3594   test ! -z "$DLL_LIB" && XE_PREPEND(-l${DLL_LIB}, LIBS)
3595   XE_MAKE_SHAREDLIB
3596   AC_CHECK_FUNCS(dlerror)
3597   ld_dynamic_link_flags=
3598   dnl Fill this in with other values as this gets more testing
3599   case "$opsys" in
3600   hpux*)  ld_dynamic_link_flags="-Wl,-E" ;;
3601   linux*) ld_dynamic_link_flags="-rdynamic" ;;
3602   *) ;;
3603   esac
3604 fi
3605
3606 dnl Unfortunately, just because we can link doesn't mean we can run.
3607 dnl One of the above link tests may have succeeded but caused resulting
3608 dnl executables to fail to run.  Also any tests using AC_TRY_RUN will
3609 dnl have reported incorrect results.
3610 AC_TRY_RUN([int main(int c,char *v[]){return 0;}],[:],[
3611   echo ""
3612   echo "*** PANIC *** The C compiler can no longer build working executables."
3613   echo "*** PANIC *** Please examine the tail of config.log for runtime errors."
3614   echo "*** PANIC *** The most likely reason for this problem is that configure"
3615   echo "*** PANIC *** links with shared libraries, but those libraries cannot be"
3616   echo "*** PANIC *** found at run time."
3617   echo "*** PANIC ***"
3618   echo "*** PANIC *** On a Linux system, edit /etc/ld.so.conf and re-run ldconfig."
3619   echo "*** PANIC *** On other systems, try telling configure where to find the"
3620   echo "*** PANIC *** shared libraries using the --site-runtime-libraries option"
3621   echo "*** PANIC ***"
3622   echo "*** PANIC *** Another way to shoot yourself in the foot is to specify"
3623   echo "*** PANIC *** --with-FEATURE when FEATURE is not actually installed"
3624   echo "*** PANIC *** on your system.  Don't do that."
3625   exit 1])
3626
3627 dnl Process support (hardcoded)
3628 dnl every system that supports this runs configure, the others don't
3629
3630 dnl We're not ready for this yet.
3631 AC_DEFINE(HAVE_UNIX_PROCESSES)
3632 XE_ADD_OBJS(process-unix.o)
3633
3634 dnl --------------------------------
3635 dnl Compute SUBST-itutable variables
3636 dnl --------------------------------
3637
3638 dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM)
3639 dnl Use XE_SPACE instead of plain assignment statements to remove extraneous blanks
3640 XE_SPACE(CFLAGS, $CFLAGS)
3641 XE_SPACE(extra_objs, $extra_objs)
3642 XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system)
3643 XE_SPACE(c_switch_window_system, $c_switch_x_site $X_CFLAGS)
3644 XE_SPACE(c_switch_all, $c_switch_general $c_switch_window_system)
3645 XE_SPACE(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
3646 XE_SPACE(ld_switch_window_system, $ld_switch_x_site)
3647 XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system)
3648 XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
3649 XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $X_PRE_LIBS)
3650 XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general)
3651
3652 dnl Compute lists of Makefiles and subdirs
3653 AC_SUBST(SRC_SUBDIR_DEPS)
3654 XE_APPEND(src, MAKE_SUBDIR)
3655 internal_makefile_list="Makefile"
3656 SUBDIR_MAKEFILES=''
3657 test -d lock || mkdir lock
3658 for dir in $MAKE_SUBDIR; do
3659   case "$dir" in */* ) dnl Implement mkdir -p
3660     ( for d in `echo $dir | sed 's:/: :g'` ; do
3661         test -d "$d" || mkdir "$d"; cd "$d"
3662       done ) ;;
3663    * ) test -d "$dir" || mkdir "$dir" ;;
3664   esac
3665   XE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile)
3666   XE_SPACE(internal_makefile_list, $internal_makefile_list $dir/Makefile.in)
3667 done
3668 AC_SUBST(INSTALL_ARCH_DEP_SUBDIR)
3669 AC_SUBST(MAKE_SUBDIR)
3670 AC_SUBST(SUBDIR_MAKEFILES)
3671
3672 dnl Make s&m symlinks in the src directory, for config.h
3673 for dir in src/s src/m; do
3674   if test ! -d "$dir" ; then
3675     echo Making symbolic link to "$srcdir/$dir"
3676     ${LN_S} "$srcdir/$dir" "$dir"
3677   fi
3678 done
3679
3680 if test "$extra_verbose" = "yes"; then
3681   echo ""
3682   PRINT_VAR(extra_objs
3683    c_switch_general  c_switch_window_system  c_switch_all
3684   ld_switch_general ld_switch_window_system ld_switch_all
3685     ld_libs_general   ld_libs_window_system   ld_libs_all)
3686   echo ""
3687 fi
3688
3689 dnl Create some auxiliary files
3690 if test -f $srcdir/src/gdbinit -a ! -f src/gdbinit ; then
3691   echo "creating src/gdbinit"; echo ""
3692   echo "source $srcdir/src/gdbinit" > src/gdbinit
3693 fi
3694
3695 dnl Create top level .sbinit for Sun compilers
3696 if test "$__SUNPRO_C" = "yes"; then
3697   echo "creating .sbinit"; echo ""
3698   ( echo "# For use with Sun WorkShop's Source browser."
3699     echo "# See sbquery(1) and sbinit(4) for more information"
3700     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
3701   ) > .sbinit
3702 fi
3703
3704 dnl There are no more compile tests; remove the core they created.
3705 rm -f core
3706
3707 dnl ----------------------------------------------
3708 dnl Substitute into Makefile, config.h and paths.h
3709 dnl ----------------------------------------------
3710
3711 dnl what sort of things to edit into Makefile, config.h and paths.h
3712 dnl configuration here uncanonicalized to avoid exceeding size limits.
3713
3714 AC_SUBST(PROGNAME)
3715 AC_SUBST(version)
3716 AC_SUBST(configuration)
3717 AC_SUBST(canonical)
3718 AC_SUBST(srcdir)
3719 AC_SUBST(bindir)
3720 AC_SUBST(datadir)
3721 AC_SUBST(pkgdir)
3722 AC_SUBST(statedir)
3723 AC_SUBST(libdir)
3724 AC_SUBST(mandir)
3725
3726 AC_SUBST(prefix)
3727 dnl Yo, Stephen Bourne!  I want to marry you!
3728 PREFIX=$prefix
3729 while true; do
3730   case "$PREFIX" in
3731     *\$* ) eval "PREFIX=$PREFIX" ;;
3732     *) break ;;
3733   esac
3734 done
3735 AC_SUBST(PREFIX)
3736
3737 AC_SUBST(exec_prefix)
3738 EXEC_PREFIX=$exec_prefix
3739 while true; do
3740   case "$EXEC_PREFIX" in
3741     *\$* ) eval "EXEC_PREFIX=$EXEC_PREFIX" ;;
3742     *) break ;;
3743   esac
3744 done
3745 AC_SUBST(EXEC_PREFIX)
3746
3747 AC_SUBST(infodir)
3748 AC_SUBST(INFODIR_USER_DEFINED)
3749 INFODIR=$infodir
3750 while true; do
3751   case "$INFODIR" in
3752     *\$* ) eval "INFODIR=$INFODIR" ;;
3753     *) break ;;
3754   esac
3755 done
3756 AC_SUBST(INFODIR)
3757
3758 AC_SUBST(infopath)
3759 AC_SUBST(INFOPATH_USER_DEFINED)
3760 INFOPATH=$infopath
3761 while true; do
3762   case "$INFOPATH" in
3763     *\$* ) eval "INFOPATH=$INFOPATH" ;;
3764     *) break ;;
3765   esac
3766 done
3767 AC_SUBST(INFOPATH)
3768
3769 AC_SUBST(package_path)
3770 AC_SUBST(PACKAGE_PATH_USER_DEFINED)
3771 PACKAGE_PATH=$package_path
3772 while true; do
3773   case "$PACKAGE_PATH" in
3774     *\$* ) eval "PACKAGE_PATH=$PACKAGE_PATH" ;;
3775     *) break ;;
3776   esac
3777 done
3778 AC_SUBST(PACKAGE_PATH)
3779
3780 AC_SUBST(lispdir)
3781 AC_SUBST(LISPDIR_USER_DEFINED)
3782 LISPDIR=$lispdir
3783 while true; do
3784   case "$LISPDIR" in
3785     *\$* ) eval "LISPDIR=$LISPDIR" ;;
3786     *) break ;;
3787   esac
3788 done
3789 AC_SUBST(LISPDIR)
3790
3791 dnl AC_SUBST(sitelispdir)
3792 dnl AC_SUBST(SITELISPDIR_USER_DEFINED)
3793 dnl SITELISPDIR=$sitelispdir
3794 dnl while true; do
3795 dnl   case "$SITELISPDIR" in
3796 dnl     *\$* ) eval "SITELISPDIR=$SITELISPDIR" ;;
3797 dnl     *) break ;;
3798 dnl   esac
3799 dnl done
3800 dnl AC_SUBST(SITELISPDIR)
3801
3802 AC_SUBST(etcdir)
3803 AC_SUBST(ETCDIR_USER_DEFINED)
3804 ETCDIR=$etcdir
3805 while true; do
3806   case "$ETCDIR" in
3807     *\$* ) eval "ETCDIR=$ETCDIR" ;;
3808     *) break ;;
3809   esac
3810 done
3811 AC_SUBST(ETCDIR)
3812
3813 AC_SUBST(lockdir)
3814 AC_SUBST(LOCKDIR_USER_DEFINED)
3815 LOCKDIR=$lockdir
3816 while true; do
3817   case "$LOCKDIR" in
3818     *\$* ) eval "LOCKDIR=$LOCKDIR" ;;
3819     *) break ;;
3820   esac
3821 done
3822 AC_SUBST(LOCKDIR)
3823
3824 AC_SUBST(archlibdir)
3825 AC_SUBST(ARCHLIBDIR_USER_DEFINED)
3826 ARCHLIBDIR=$archlibdir
3827 while true; do
3828   case "$ARCHLIBDIR" in
3829     *\$* ) eval "ARCHLIBDIR=$ARCHLIBDIR" ;;
3830     *) break ;;
3831   esac
3832 done
3833 AC_SUBST(ARCHLIBDIR)
3834
3835 AC_SUBST(docdir)
3836 AC_SUBST(bitmapdir)
3837 AC_SUBST(extra_objs)
3838 AC_SUBST(ld_dynamic_link_flags)
3839
3840 dnl The following flags combine all the information from:
3841 dnl - command line options (user always gets priority)
3842 dnl - user environment variables
3843 dnl - determined by configure
3844 dnl - the s&m header files (deprecated)
3845 AC_SUBST(machfile)
3846 AC_SUBST(opsysfile)
3847 AC_SUBST(c_switch_general)
3848 AC_SUBST(c_switch_window_system)
3849 AC_SUBST(c_switch_all)
3850 AC_SUBST(ld_switch_general)
3851 AC_SUBST(ld_switch_window_system)
3852 AC_SUBST(ld_switch_all)
3853 AC_SUBST(ld_libs_general)
3854 AC_SUBST(ld_libs_window_system)
3855 AC_SUBST(ld_libs_all)
3856 AC_SUBST(CFLAGS)
3857 AC_SUBST(CPPFLAGS)
3858 AC_SUBST(LDFLAGS)
3859 RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
3860 AC_SUBST(RECURSIVE_MAKE)
3861
3862 AC_SUBST(native_sound_lib)
3863 AC_SUBST(sound_cflags)
3864 AC_SUBST(RANLIB)
3865 AC_SUBST(dynodump_arch)
3866
3867 # The default is yes
3868 if test "$with_site_lisp" = "no"; then
3869   AC_DEFINE(INHIBIT_SITE_LISP)
3870 fi
3871
3872 XE_SPACE(ac_configure_args, $ac_configure_args)
3873 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$canonical")
3874 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "$ac_configure_args")
3875 AC_DEFINE_UNQUOTED(config_machfile,  "$machfile")
3876 AC_DEFINE_UNQUOTED(config_opsysfile, "$opsysfile")
3877
3878 dnl Following are deprecated
3879
3880 null_string=""
3881 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE,     $null_string)
3882 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, $null_string)
3883 AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,      $null_string)
3884 AC_DEFINE_UNQUOTED(LD_SWITCH_SITE,       $null_string)
3885 AC_DEFINE_UNQUOTED(C_SWITCH_SITE,        $null_string)
3886
3887 dnl Note: as a general rule, *only* define things here that are not
3888 dnl autodetected.  For things that are autodetected, define them
3889 dnl at the point where the autodetection occurs or would occur,
3890 dnl so that the user gets immediate feedback on the results of the
3891 dnl autodetection.
3892
3893 test -n "$puresize" && AC_DEFINE_UNQUOTED(RAW_PURESIZE, $puresize)
3894
3895 if   test "$GNU_MALLOC"         = "yes"; then AC_DEFINE(GNU_MALLOC)
3896 elif test "$with_system_malloc" = "yes"; then AC_DEFINE(USE_SYSTEM_MALLOC)
3897 elif test "$with_debug_malloc"  = "yes"; then AC_DEFINE(USE_DEBUG_MALLOC)
3898                                               AC_DEFINE(USE_SYSTEM_MALLOC)
3899 fi
3900 test "$with_i18n3"         = "yes" && AC_DEFINE(I18N3)
3901 test "$GCC"                = "yes" && AC_DEFINE(USE_GCC)
3902 test "$external_widget"    = "yes" && AC_DEFINE(EXTERNAL_WIDGET)
3903 test "$with_gnu_make"      = "yes" && AC_DEFINE(USE_GNU_MAKE)
3904 test "$no_doc_file"        = "yes" && AC_DEFINE(NO_DOC_FILE)
3905 dnl test "$const_is_losing"    = "yes" && AC_DEFINE(CONST_IS_LOSING)
3906 test "$with_quantify"      = "yes" && AC_DEFINE(QUANTIFY)
3907 test "$with_pop"           = "yes" && AC_DEFINE(MAIL_USE_POP)
3908 test "$with_kerberos"      = "yes" && AC_DEFINE(KERBEROS)
3909 test "$with_hesiod"        = "yes" && AC_DEFINE(HESIOD)
3910 test "$use_union_type"     = "yes" && AC_DEFINE(USE_UNION_TYPE)
3911
3912 dnl -------------------------------
3913 dnl Report on what we decided to do
3914 dnl -------------------------------
3915
3916 (
3917 dnl /etc/osversion is on SONY NEWS-OS
3918 if test -f /etc/osversion; then dnl SONY NEWS-OS
3919   echo "osversion: `cat /etc/osversion`"
3920 else
3921   echo "uname -a: `uname -a`"
3922 fi
3923 echo ""
3924 echo "$0 $quoted_arguments"
3925 ) > Installation
3926
3927 xemacs_betaname=""
3928 test ! -z "${emacs_beta_version}" && xemacs_betaname="-b${emacs_beta_version}"
3929
3930 dnl Start stdout redirection to '| tee -a Installation'
3931 (
3932 echo "
3933
3934 XEmacs ${emacs_major_version}.${emacs_minor_version}${xemacs_betaname} \"$xemacs_codename\" configured for \`$canonical'.
3935
3936   Where should the build process find the source code?    $srcdir
3937   What installation prefix should install use?            $prefix
3938   What operating system and machine description files should XEmacs use?
3939         \`$opsysfile' and \`$machfile'
3940   What compiler should XEmacs be built with?              $CC $CFLAGS
3941   Should XEmacs use the GNU version of malloc?            ${GNU_MALLOC}${GNU_MALLOC_reason}
3942   Should XEmacs use the relocating allocator for buffers? $rel_alloc
3943   What window system should XEmacs use?                   ${window_system}"
3944 if test "$with_x11" = "yes"; then
3945   echo "  Where do we find X Windows header files?                $x_includes"
3946   echo "  Where do we find X Windows libraries?                   $x_libraries"
3947 fi
3948 if test -n "$site_includes"; then
3949   echo "  Additional header files:                                $site_includes"
3950 fi
3951 if test -n "$site_libraries"; then
3952   echo "  Additional libraries:                                   $site_libraries"
3953 fi
3954 if test -n "$site_prefixes"; then
3955   echo "  Additional prefixes:                                    $site_prefixes"
3956 fi
3957 if test -n "$runpath"; then
3958   echo "  Runtime library search path:                            $runpath"
3959 fi
3960 test "$with_dnet"  = yes && echo "  Compiling in support for DNET."
3961 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
3962 test "$with_xauth" = yes && echo "  Compiling in support for XAUTH."
3963 if test "$with_xmu" != yes -a "$with_x11" = yes; then
3964   echo "  No Xmu; substituting equivalent routines."
3965 fi
3966
3967 if test "$with_xpm" = yes; then
3968   echo "  Compiling in support for XPM images."
3969 elif test "$with_x11" = yes; then
3970   echo "  --------------------------------------------------------------------"
3971   echo "  WARNING: Compiling without XPM support."
3972   if test "$xpm_problem" != ""; then
3973     echo "  Reason: $xpm_problem"
3974   fi
3975   echo "  WARNING: You should strongly consider installing XPM."
3976   echo "  WARNING: Otherwise toolbars and other graphics will look suboptimal."
3977   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
3978   echo "  --------------------------------------------------------------------"
3979 fi
3980 if test "$with_png" = yes; then
3981   echo "  Compiling in support for PNG image handling."
3982 elif test "$window_system" != "none"; then
3983   echo "  --------------------------------------------------------------------"
3984   echo "  WARNING: Compiling without PNG image support."
3985   if test "$png_problem" != ""; then
3986     echo "  Reason: $png_problem"
3987   fi
3988   echo "  WARNING: You should strongly consider installing the PNG libraries."
3989   echo "  WARNING: Otherwise certain images and glyphs may not display."
3990   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
3991   echo "  --------------------------------------------------------------------"
3992 fi
3993 test "$with_gif"   = yes && echo "  Compiling in support for (builtin) GIF image handling."
3994 test "$with_jpeg"  = yes && echo "  Compiling in support for JPEG image handling."
3995 test "$with_tiff"  = yes && echo "  Compiling in support for TIFF image handling."
3996 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
3997 case "$with_sound" in
3998   nas    ) echo "  Compiling in network sound (NAS) support." ;;
3999   native ) echo "  Compiling in native sound support." ;;
4000   both   ) echo "  Compiling in both network and native sound support." ;;
4001 esac
4002 test "$old_nas" = yes && echo "        nas library lacks error trapping, will play synchronously"
4003
4004 test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley DB."
4005 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
4006 test "$with_database_gnudbm" = yes && echo "  Compiling in support for GNU DBM."
4007
4008 test "$with_umich_ldap"      = yes && echo "  Compiling in support for LDAP (UMich libs)."
4009 test "$with_ns_ldap"         = yes && echo "  Compiling in support for LDAP (Netscape SDK)."
4010 test "$with_ldap" = yes -a "$with_umich_ldap" = no -a "$with_ns_ldap" = no && echo "  Compiling in support for LDAP (Generic)."
4011
4012 test "$with_ncurses"  = yes && echo "  Compiling in support for ncurses."
4013 test "$with_gpm"      = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
4014
4015 test "$with_mule"     = yes && echo "  Compiling in Mule (multi-lingual) support."
4016 test "$with_file_coding"     = yes && echo "  Compiling in File coding support."
4017 test "$with_xim"      != no && echo "  Compiling in XIM (X11R5+ I18N input method) support."
4018 test "$with_xim" = motif    && echo "    Using Motif to provide XIM support."
4019 test "$with_xim" = xlib     && echo "    Using raw Xlib to provide XIM support."
4020 test "$with_xfs" = yes      && echo "    Using XFontSet to provide bilingual menubar."
4021 test "$with_canna"    = yes && echo "  Compiling in support for Canna on Mule."
4022 if test "$with_wnn" = yes; then
4023   echo "  Compiling in support for the WNN input method on Mule."
4024   test "$with_wnn6" = yes && echo "    Using WNN version 6."
4025 fi
4026 test "$with_i18n3"    = yes && echo "  Compiling in I18N support, level 3 (doesn't currently work)."
4027
4028 test "$with_cde"      = yes && echo "  Compiling in support for CDE."
4029 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
4030 test "$with_offix"    = yes && echo "  Compiling in support for OffiX."
4031 test "$with_dragndrop" = yes && echo "  Compiling in EXPERIMENTAL support for Drag'n'Drop ($dragndrop_proto )."
4032 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
4033 test "$with_session"  != no && echo "  Compiling in support for proper session-management."
4034 case "$with_menubars" in
4035   lucid ) echo "  Using Lucid menubars." ;;
4036   motif ) echo "  Using Motif menubars."
4037           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
4038           echo "             We recommend using the Lucid menubar instead."
4039           echo "             Re-run configure with --with-menubars='lucid'." ;;
4040 esac
4041 case "$with_scrollbars" in
4042   lucid    ) echo "  Using Lucid scrollbars."     ;;
4043   motif    ) echo "  Using Motif scrollbars."     ;;
4044   athena   ) echo "  Using Athena scrollbars."    ;;
4045   athena3d ) echo "  Using Athena-3d scrollbars." ;;
4046 esac
4047 case "$with_dialogs" in
4048   motif    ) echo "  Using Motif dialog boxes."     ;;
4049   athena   ) echo "  Using Athena dialog boxes."    ;;
4050   athena3d ) echo "  Using Athena-3d dialog boxes." ;;
4051 esac
4052 test "$with_shlib" = "yes" && echo "  Compiling in DLL support."
4053 test "$with_clash_detection" = yes && \
4054   echo "  Clash detection will use \"$lockdir\" for locking files."
4055 echo "  movemail will use \"$mail_locking\" for locking mail spool files."
4056 test "$with_pop"        = yes && echo "  Using POP for mail access"
4057 test "$with_kerberos"   = yes && echo "  Using Kerberos for POP authentication"
4058 test "$with_hesiod"     = yes && echo "  Using Hesiod to get POP server host"
4059 test "$use_union_type"  = yes && echo "  Using the union type for Lisp_Objects."
4060 test "$use_minimal_tagbits" = yes && echo "  Using Lisp_Objects with minimal tagbits."
4061 test "$use_indexed_lrecord_implementation" = yes && echo "  Using indexed lrecord implementation."
4062 test "$debug"              = yes && echo "  Compiling in extra code for debugging."
4063 test "$memory_usage_stats" = yes && echo "  Compiling in code for checking XEmacs memory usage."
4064 test "$usage_tracking"     = yes && echo "  Compiling with usage tracking active (Sun internal)."
4065 if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc" \
4066   != "no no no no no"; then
4067   echo "  WARNING: ---------------------------------------------------------"
4068   echo "  WARNING: Compiling in support for runtime error checking."
4069   echo "  WARNING: XEmacs will run noticeably more slowly as a result."
4070   echo "  WARNING: Error checking is on by default for XEmacs beta releases."
4071   echo "  WARNING: ---------------------------------------------------------"
4072 fi
4073 echo ""
4074 ) | tee -a Installation
4075 dnl echo "The above configure report is appended to \"Installation\" file."
4076 echo ""
4077
4078 dnl Generate Installation.el
4079 echo '(setq Installation-string "' > Installation.el
4080 sed 's/"/\\"/g' Installation >> Installation.el
4081 echo '")' >> Installation.el
4082
4083 dnl -----------------------------------
4084 dnl Now generate config.h and Makefiles
4085 dnl -----------------------------------
4086
4087 dnl This has to be called in order for this variable to get into config.status
4088 AC_SUBST(internal_makefile_list)
4089 # Remove any trailing slashes in these variables.
4090 test -n "$prefix" &&
4091   prefix=`echo '' "$prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4092 test -n "$exec_prefix" &&
4093   exec_prefix=`echo '' "$exec_prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4094
4095 dnl Build Makefile.in's from Makefile.in.in's
4096 dnl except ./Makefile from $srcdir/Makefile.in
4097
4098 for file in $internal_makefile_list; do
4099   test "$file" = src/Makefile.in && \
4100     file="src/Makefile.in:src/Makefile.in.in:src/depend"
4101   ac_output_files="${ac_output_files+$ac_output_files }$file"
4102 done
4103 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
4104
4105 AC_OUTPUT($ac_output_files,
4106 [for dir in $MAKE_SUBDIR; do
4107   echo creating $dir/Makefile
4108   (
4109 changequote(<<, >>)dnl
4110     cd $dir
4111     rm -f junk.c
4112     < Makefile.in \
4113       sed -e '/^# Generated/d' \
4114           -e 's%/\*\*/#.*%%' \
4115           -e 's/^ *# */#/' \
4116           -e '/^##/d' \
4117           -e '/^#/ {
4118 p
4119 d
4120 }'        -e '/./ {
4121 s/\([\"]\)/\\\1/g
4122 s/^/"/
4123 s/$/"/
4124 }'  > junk.c;
4125     $CPP -I. -I${top_srcdir}/src $CPPFLAGS junk.c > junk.cpp;
4126     < junk.cpp                          \
4127       sed -e 's/^#.*//'                 \
4128         -e 's/^[ TAB][ TAB]*$//'        \
4129         -e 's/^ /TAB/'                  \
4130         | sed -n -e '/^..*$/p'          \
4131         | sed '/^"/ {
4132 s/\\\([\"]\)/\1/g
4133 s/^[ TAB]*"//
4134 s/"[ TAB]*$//
4135 }'      > Makefile.new
4136     chmod 444 Makefile.new
4137     mv -f Makefile.new Makefile
4138     rm -f junk.c junk.cpp
4139 changequote([, ])dnl
4140 )
4141 done
4142
4143 dnl Append AC_DEFINE information to lib-src/config.values
4144 dnl (AC_SUBST information is already there (see config.values.sh).
4145 sed < config.status >> lib-src/config.values \
4146   -e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \
4147   -e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \
4148   -e 's/^\([[^ ]]*\) $/\1 ""/' \
4149   -e 's/ 1$/ t/'
4150
4151 ],
4152 [CPP="$CPP"
4153  CPPFLAGS="$CPPFLAGS"
4154  top_srcdir="$srcdir"
4155  MAKE_SUBDIR="$MAKE_SUBDIR"
4156 ])