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