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