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