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