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