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