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