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