update.
[chise/xemacs-chise.git.1] / configure.in
1 dnl Define our own header notice with own copyright
2 define([AC_INIT_NOTICE],
3 [#### Configuration script for XEmacs.  Largely divergent from FSF.
4 #### Guess values for system-dependent variables and create Makefiles.
5 #### Generated automatically using autoconf version] AC_ACVERSION [
6 #### Copyright (C) 1992, 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, 2005 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 - support 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 PRECEDES 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 dnl can't turn off widgets here because of systems where they are demanded
352 with_widgets=''
353 with_dialogs=''
354 with_file_coding=''
355 cpp='' cppflags='' libs='' ldflags=''
356 extra_includes=''
357 dynamic=''
358 with_x11=''
359 with_msw=''
360 rel_alloc='default'
361 with_system_malloc='default'
362 with_dlmalloc='default'
363 use_regex_malloc='yes'
364 dnl ESD is associated with crashes and lockups due to incorrect signal use.
365 with_esd_sound='no'
366 native_sound_lib=''
367 dnl These should be set to the empty string when we want gtk / gnome to
368 dnl be auto-detected instead of manually specified.
369 with_gtk='no'
370 with_gnome='no'
371 dnl use_assertions should be 'yes' by default.  Too many people in this
372 dnl world have core dumps turned off by default or \"cannot find where the
373 dnl core file went\".  At least we should get some useful output ...
374 use_assertions="yes"
375 dnl the following is set to yes or no later.
376 with_toolbars=""
377 with_tty=""
378 use_union_type="no"
379 with_dnet=""
380 dnl pdump now defaults by opsys
381 pdump=''
382 dnl dragndrop is still experimental.  When it is stable, comment out the following line:
383 with_dragndrop="no"
384 dnl Too annoying, even if mandated by IPv6 (and I'm not even sure of that)
385 with_ipv6_cname="no"
386
387 dnl ------------------
388 dnl Options Processing
389 dnl ------------------
390
391 define([USAGE_ERROR],
392 [(echo "$progname: Usage error:"
393 echo " " $1
394 echo "  Use \`$progname --help' to show usage.") >&2 && exit 1])
395
396 dnl Record all the arguments, so we can save them in config.status.
397 arguments="$@"
398
399 dnl Shell Magic: Quote the quoted arguments in ARGUMENTS.  At a later date,
400 dnl in order to get the arguments back in $@, we have to do an
401 dnl 'eval set x "$quoted_arguments"; shift'
402 dnl # We use sed to turn embedded ' into '"'"'.  I truly hate sh quoting.
403 quoted_sed_magic=s/"'"/"'"'"'"'"'"'"'"/g
404 quoted_arguments=
405 for i in "$@"; do
406    case "$i" in
407    -no-create | --no-create | --no-creat | --no-crea | --no-cre \
408    | --no-cr | --no-c) ;;
409    -no-recursion | --no-recursion | --no-recursio | --no-recursi \
410    | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
411    *)
412    quoted_i="`echo '' $i | sed -e 's:^ ::' -e $quoted_sed_magic`"
413    quoted_arguments="$quoted_arguments '$quoted_i'" ;;
414    esac
415 done
416
417 dnl Do not use shift -- that destroys the argument list, which autoconf needs
418 dnl to produce config.status.  It turns out that "set - $arguments" does not
419 dnl work portably.
420 dnl However, it also turns out that many shells cannot expand ${10} at all.
421 dnl So using an index variable does not work either.  It is possible to use
422 dnl some shell magic to make 'set x "$arguments"; shift' work portably.
423 while test $# != 0; do
424   arg="$1"; shift
425   case "$arg" in
426     --no-create|--no-recursion) ;;
427     dnl Anything starting with a hyphen we assume is an option.
428     -* )
429       dnl Separate the switch name from the value it is being given.
430       case "$arg" in
431         -*=*)
432           opt=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*\([[^=]]*\)=.*$:\1:'`
433           val=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*[[^=]]*=\(.*\)$:\1:'`
434           valomitted=no
435         ;;
436            dnl special case these strings since echo may silently eat them:
437            dnl --help ) opt=help val=yes valomitted=yes ;;
438            dnl --version ) opt=version val=yes valomitted=yes ;;
439            dnl -e ) opt=e val=yes valomitted=yes ;;
440            dnl -E ) opt=E val=yes valomitted=yes ;;
441            dnl -n ) opt=n val=yes valomitted=yes ;;
442         -*)
443            dnl If FOO is a boolean argument, --FOO is equivalent to
444            dnl --FOO=yes.  Otherwise, the value comes from the next
445            dnl argument - see below.
446           opt=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*\(.*\)$:\1:'`
447           val="yes" valomitted=yes
448         ;;
449       esac
450
451       dnl translate "-" in option string to "_"
452       optname="$opt"
453       opt="`echo '' $opt | sed -e 's:^ ::' | tr - _`"
454
455       dnl Support --without-FOO as a synonym for --with-FOO=no
456       case "${valomitted}-${opt}" in yes-without_* )
457         opt=`echo $opt | sed 's/without/with/'`
458         valomitted="no" val="no" ;;
459       esac
460
461       dnl Process the option.
462       case "$opt" in
463
464       dnl Process (many) boolean options
465         with_site_lisp  | \
466         with_prefix     | \
467         with_site_modules | \
468         with_x          | \
469         with_x11        | \
470         with_gtk        | \
471         with_gnome      | \
472         with_msw        | \
473         with_gcc        | \
474         dynamic         | \
475         with_ncurses    | \
476         with_dnet       | \
477         with_socks      | \
478         with_dragndrop  | \
479         with_cde        | \
480         with_offix      | \
481         with_gpm        | \
482         with_xpm        | \
483         with_xface      | \
484         with_gif        | \
485         with_jpeg       | \
486         with_png        | \
487         with_tiff       | \
488         with_wmcommand  | \
489         with_xmu        | \
490         with_purify     | \
491         with_quantify   | \
492         with_toolbars   | \
493         with_tty        | \
494         with_xfs        | \
495         with_i18n3      | \
496         with_mule       | \
497         with_utf_2000   | \
498         with_chise      | \
499         with_text_coding| \
500         with_file_coding| \
501         with_canna      | \
502         with_wnn        | \
503         with_wnn6       | \
504         with_workshop   | \
505         with_sparcworks | \
506         with_tooltalk   | \
507         with_concord    | \
508         with_ldap       | \
509         with_postgresql | \
510         with_pop        | \
511         with_kerberos   | \
512         with_hesiod     | \
513         with_dnet       | \
514         with_infodock   | \
515         with_netinstall | \
516         with_ipv6_cname | \
517         external_widget | \
518         verbose         | \
519         extra_verbose   | \
520         usage_tracking  | \
521         use_union_type  | \
522         pdump           | \
523         debug           | \
524         use_assertions  | \
525         use_regex_malloc | \
526         memory_usage_stats | \
527         with_clash_detection | \
528         with_modules    | \
529         quick_build )
530           dnl Make sure the value given was either "yes" or "no".
531           case "$val" in
532             y | ye | yes )      val=yes ;;
533             n | no )            val=no  ;;
534             * ) USAGE_ERROR("The \`--$optname' option requires a boolean value: \`yes' or \`no'.") ;;
535           esac
536           eval "$opt=\"$val\"" ;;
537
538
539         dnl Options that take a user-supplied value, as in --x-includes=/usr/X11R6/include
540         dnl The cache-file option is ignored (for compatibility with other configures)
541         srcdir          | \
542         compiler        | \
543         cflags          | \
544         cpp             | \
545         cppflags        | \
546         libs            | \
547         ldflags         | \
548         cache_file      | \
549         native_sound_lib| \
550         site_lisp       | \
551         x_includes      | \
552         x_libraries     | \
553         site_includes   | \
554         site_libraries  | \
555         site_prefixes   | \
556         site_runtime_libraries )
557           dnl If the value was omitted, get it from the next argument.
558           if test "$valomitted" = "yes" ; then
559             dnl Get the next argument from the argument list, if there is one.
560             if test "$#" = 0 ; then
561               USAGE_ERROR("The \`--$optname' option requires a value.");
562             fi
563             val="$1"; shift
564           fi
565           eval "$opt=\"$val\""
566         ;;
567
568         dnl Options that take "yes", "no", or "default" values
569         rel_alloc | \
570         with_dlmalloc | \
571         with_debug_malloc  | use_debug_malloc | \
572         with_system_malloc | use_system_malloc )
573           case "$val" in
574             y | ye | yes )      val=yes ;;
575             n | no )            val=no  ;;
576             d | de | def | defa | defau | defaul | default ) val=default ;;
577             * ) USAGE_ERROR(["The \`--$optname' option requires one of these values:
578   \`yes', \`no', or \`default'."]) ;;
579           esac
580           case "$opt" in use_* ) opt="`echo $opt | sed s/use/with/`" ;; esac
581           eval "$opt=\"$val\""
582         ;;
583
584         dnl Has the user requested database support?
585         "with_database" )
586           with_database_berkdb=no
587           with_database_dbm=no
588           with_database_gdbm=no
589           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
590             case "$x" in
591               no ) ;;
592               b | be | ber | berk | berkd | berkdb )       with_database_berkdb=yes ;;
593               d | db | dbm )                               with_database_dbm=yes    ;;
594               g | gn | gnu | gnud | gnudb | gnudbm | gdbm) with_database_gdbm=yes   ;;
595               * ) USAGE_ERROR(["The \`--$optname' option value
596   must be either \`no' or a comma-separated list
597   of one or more of \`berkdb' and either \`dbm' or \`gnudbm'."]) ;;
598             esac
599           done
600           if test "$with_database_dbm"  = "yes" -a \
601                   "$with_database_gdbm" = "yes"; then
602           USAGE_ERROR("Only one of \`dbm' and \`gnudbm' may be specified
603   with the \`--$optname' option.")
604           fi
605         ;;
606
607         dnl Has the user requested sound support?
608         "with_sound" )
609         dnl values is a subset of all,native,nas,esd
610         dnl or their negatives: none,nonative,nonas,noesd
611           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
612             case "$x" in
613               dnl all and none are only permitted as the first in the list.
614               n | no | non | none ) new_sdefault=no ;;
615               a | al | all | both ) new_sdefault=yes ;;
616
617               native )       with_native_sound=yes ;;
618               nonative )     with_native_sound=no ;;
619
620               nas )          with_nas_sound=yes ;;
621               nonas )        with_nas_sound=no ;;
622
623               esd )          with_esd_sound=yes ;;
624               noesd )        with_esd_sound=no ;;
625
626               * ) bogus_sound=yes ;;
627             esac
628             if test "$bogus_sound" -o \
629                  \( -n "$new_sdefault" -a -n "$sound_notfirst" \) ; then
630                 types="\`all', \`none', \`(no)native', \`no(nas)', \`(no)esd'."
631                 USAGE_ERROR(["Valid types for the \`--$optname' option are:
632   $types.
633 Option \`all' or \`none' must be first in the list.
634 The default is to autodetect native and NAS sound support."])
635             elif test -n "$new_sdefault" ; then
636                 with_native_sound=$new_sdefault
637                 with_nas_sound=$new_sdefault
638                 with_esd_sound=$new_sdefault
639                 new_sdefault=   # reset this
640             fi
641             sound_notfirst=true
642           done
643         ;;
644
645         dnl Has the user specified a preferred Athena widget set?
646         dnl This bit expands any alias names out for us...
647         "with_athena" )
648           case "$val" in
649             xa | xaw )                    val=xaw    ;;
650             3 | 3d | xaw3d )              val=3d     ;;
651             dnl No `n' for next, someone may try `no'
652             ne | nex | next | naxtaw)     val=next   ;;
653             dnl Have not tested the next two...
654             9 | 95 | xaw95 )              val=95     ;;
655             xp | xpm | xawxpm )           val=xpm    ;;
656             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
657   \`xaw', \`3d', \`next', \`95', or \`xpm'."]) ;;
658           esac
659           eval "$opt=\"$val\""
660         ;;
661
662         dnl Has the user requested XIM support?
663         "with_xim" )
664           case "$val" in
665             y | ye | yes )                val=yes   ;;
666             n | no | non | none )         val=no    ;;
667             x | xl | xli | xlib )         val=xlib  ;;
668             m | mo | mot | moti | motif ) val=motif ;;
669             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
670   \`motif', \`xlib', \`yes', or \`no'."]) ;;
671           esac
672           eval "$opt=\"$val\""
673         ;;
674
675         dnl Mail locking specification
676         "mail_locking" )
677           case "$val" in
678             lockf )     val=lockf ;;
679             flock )     val=flock ;;
680             file | dot ) val=file  ;;
681             locking )   val=locking  ;;
682             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
683   \`lockf', \`flock', \`file', \`locking', or \`mmdf'."]) ;;
684           esac
685           eval "$opt=\"$val\""
686         ;;
687
688         dnl Has the user requested error-checking?
689         "error_checking" )
690           dnl value can be all, none, and/or a list of categories to check.
691           dnl Example: --error-checking=all,noextents,nobufpos
692           dnl Example: --error-checking=none,malloc,gc
693
694           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
695             case "$x" in
696               dnl all and none are only permitted as the first in the list.
697               n | no | non | none ) new_default=no ;;
698               a | al | all )        new_default=yes ;;
699
700               extents )       error_check_extents=yes ;;
701               noextents )     error_check_extents=no ;;
702
703               typecheck )     error_check_typecheck=yes ;;
704               notypecheck )   error_check_typecheck=no ;;
705
706               bufpos )        error_check_bufpos=yes ;;
707               nobufpos )      error_check_bufpos=no ;;
708
709               gc )            error_check_gc=yes ;;
710               nogc )          error_check_gc=no ;;
711
712               malloc )        error_check_malloc=yes ;;
713               nomalloc )      error_check_malloc=no ;;
714
715               byte_code )     error_check_byte_code=yes ;;
716               nobyte_code )   error_check_byte_code=no ;;
717
718               glyphs )     error_check_glyphs=yes ;;
719               noglyphs )   error_check_glyphs=no ;;
720
721               * ) bogus_error_check=yes ;;
722             esac
723             if test "$bogus_error_check" -o \
724                  \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then
725                 if test "$error_check_default" = yes ; then
726                   types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', \`nomalloc', \`noglyphs' and \`nobyte-code'."
727                 else
728                   types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', \`malloc', \`glyphs' and \`byte-code'."
729                 fi
730                 USAGE_ERROR(["Valid types for the \`--$optname' option are:
731   $types."])
732             elif test -n "$new_default" ; then
733                 error_check_extents=$new_default
734                 error_check_typecheck=$new_default
735                 error_check_bufpos=$new_default
736                 error_check_gc=$new_default
737                 error_check_malloc=$new_default
738                 error_check_byte_code=$new_default
739                 error_check_glyphs=$new_default
740                 new_default=    # reset this
741             fi
742             echeck_notfirst=true
743           done
744         ;;
745
746         dnl Has the user tried to tell us where the X files are?
747         dnl I think these are dopey, but no less than three alpha
748         dnl testers, at large sites, have said they have their X files
749         dnl installed in odd places.
750
751         dnl Has the user specified one of the path options?
752         prefix | exec_prefix | bindir | datadir | statedir | libdir | \
753         mandir | infodir | infopath | lispdir | etcdir | pkgdir | \
754         archlibdir | docdir | package_path | moduledir )
755            dnl If the value was omitted, get it from the next argument.
756            if test "$valomitted" = "yes"; then
757              if test "$#" = 0; then
758                  USAGE_ERROR("The \`--$optname' option requires a value.");
759              fi
760              val="$1"; shift
761            fi
762            eval "$opt=\"$val\""
763
764            dnl You need to synchronize this with the way the
765            dnl default values are built.
766            case "$opt" in
767              dnl prefix is taken care of by --with-prefix
768              exec_prefix ) AC_DEFINE(EXEC_PREFIX_USER_DEFINED) ;;
769              lispdir ) AC_DEFINE(LISPDIR_USER_DEFINED) ;;
770              sitelispdir ) AC_DEFINE(SITELISPDIR_USER_DEFINED) ;;
771              moduledir ) AC_DEFINE(MODULEDIR_USER_DEFINED) ;;
772              etcdir  )  AC_DEFINE(ETCDIR_USER_DEFINED) ;;
773              infodir ) AC_DEFINE(INFODIR_USER_DEFINED) ;;
774              infopath ) AC_DEFINE(INFOPATH_USER_DEFINED) ;;
775              package_path ) AC_DEFINE(PACKAGE_PATH_USER_DEFINED) ;;
776              datadir )
777                 AC_DEFINE(INFODIR_USER_DEFINED)
778                 AC_DEFINE(LISPDIR_USER_DEFINED)
779                 AC_DEFINE(MODULEDIR_USER_DEFINED)
780                 AC_DEFINE(ETCDIR_USER_DEFINED)
781                 AC_DEFINE(DOCDIR_USER_DEFINED)
782                 AC_DEFINE(ARCHLIBDIR_USER_DEFINED) ;;
783              docdir ) AC_DEFINE(DOCDIR_USER_DEFINED) ;;
784              exec_prefix | libdir | archlibdir ) AC_DEFINE(ARCHLIBDIR_USER_DEFINED) ;;
785            esac
786         ;;
787
788         dnl --no-create added by autoconf for use by config.status
789         "no_create" ) ;;
790
791         dnl Has the user asked for some help?
792         "usage" | "help" ) ${PAGER-more} ${srcdir}/configure.usage; exit 0 ;;
793
794         dnl Has the user specified the toolkit(s) to use for GUI elements?
795         "with_menubars"   | \
796         "with_scrollbars" | \
797         "with_dialogs"    | \
798         "with_widgets" )
799           case "$val" in
800             l | lu | luc | luci | lucid )               val=lucid  ;;
801             mo | mot | moti | motif )                   val=motif  ;;
802             a | at | ath | athe | athen | athena )      val=athena ;;
803             n | no | non | none )                       val=no     ;;
804             y | ye | yes )                              val=yes    ;;
805             dnl Explicit --with-widgets on command line means yes.
806             "")                                         val=yes    ;;
807             g | gt | gtk )                              val=gtk    ;;
808             ms | msw )                                  val=msw    ;;
809             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
810   \`gtk', \`lucid', \`motif', \`athena', \`yes', or \`no'."]) ;;
811           esac
812           eval "$opt=\"$val\""
813         ;;
814
815         dnl Obsolete legacy argument?  Warn, but otherwise ignore.
816         "use_minimal_tagbits" | \
817         "use_indexed_lrecord_implementation" | \
818         "run_in_place"  | \
819         "const_is_losing" | \
820         "with_gnu_make" )
821           AC_MSG_WARN([Obsolete option \`--$optname' ignored.])
822         ;;
823
824         dnl Unrecognized option?  No mercy for user errors.
825         * ) USAGE_ERROR("Unrecognized option: $arg") ;;
826
827       esac
828     ;;
829
830     dnl Assume anything with multiple hyphens is a configuration name.
831     *-*-*) configuration="$arg" ;;
832
833     dnl Unrecognized argument?  No mercy for user errors.
834     *) USAGE_ERROR("Unrecognized argument: $arg") ;;
835
836   esac
837 done
838
839 dnl -------------------------
840 dnl Finish options processing
841 dnl -------------------------
842
843 dnl Several options are equivalent to, and override, environment variables.
844 test -n "$cpp"      && CPP="$cpp"
845 test -n "$cppflags" && CPPFLAGS="$cppflags"
846 test -n "$libs"     && LIBS="$libs"
847 test -n "$ldflags"  && LDFLAGS="$ldflags"
848
849 dnl Get the arguments back.  See the diatribe on Shell Magic above.
850 eval set x "$quoted_arguments"; shift
851
852 dnl --extra-verbose implies --verbose
853 test "$extra_verbose" = "yes" && verbose=yes
854
855 dnl with_x is an obsolete synonym for with_x11
856 test -n "$with_x" && with_x11="$with_x"
857
858 dnl --with-quantify or --with-purify imply --use-system-malloc
859 if test "$with_purify" = "yes" -o "$with_quantify" = "yes"; then
860   test "$with_system_malloc" = "default" && with_system_malloc=yes
861 fi
862
863 dnl XE_CHECK_FEATURE_DEPENDENCY(feature1, feature2)
864 define([XE_CHECK_FEATURE_DEPENDENCY],
865 [if test "$with_$1 $with_$2" = "yes no"; then
866   USAGE_ERROR("--with-$1 requires --with-$2")
867 elif test "$with_$2" = "no" ; then with_$1=no
868 elif test "$with_$1" = "yes"; then with_$2=yes
869 fi
870 ])
871
872 dnl CDE requires tooltalk
873 XE_CHECK_FEATURE_DEPENDENCY(cde, tooltalk)
874
875 dnl Find the source directory.
876 case "$srcdir" in
877
878   dnl If srcdir is not specified, see if  "." or ".." might work.
879   "" )
880     for dir in "`echo $0 | sed 's|//|/|' | sed 's|/[[^/]]*$||'`" "." ".." ; do
881       if test -f "$dir/src/lisp.h" -a \
882               -f "$dir/lisp/version.el" ; then
883         srcdir="$dir"
884         break
885       fi
886     done
887     if test -z "$srcdir" ; then
888       USAGE_ERROR(["Neither the current directory nor its parent seem to
889   contain the XEmacs sources.  If you do not want to build XEmacs in its
890   source tree, you should run \`$progname' in the directory in which
891   you wish to build XEmacs, using the \`--srcdir' option to say where the
892   sources may be found."])
893     fi
894   ;;
895
896   dnl Otherwise, check if the directory they specified is okay.
897   * )
898     if test ! -f "$srcdir/src/lisp.h" -o \
899             ! -f "$srcdir/lisp/version.el" ; then
900       USAGE_ERROR(["The directory specified with the \`--srcdir' option,
901   \`$srcdir', doesn't seem to contain the XEmacs sources.  You should
902   either run the \`$progname' script at the top of the XEmacs source
903   tree, or use the \`--srcdir' option to specify the XEmacs source directory."])
904     fi
905   ;;
906 esac
907
908 dnl ###########################################################################
909 if test -z "$configuration"; then
910   dnl Guess the configuration
911   configuration=`${CONFIG_SHELL-/bin/sh} $srcdir/config.guess`
912   if test -z "$configuration"; then
913     USAGE_ERROR(["XEmacs has not been ported to this host type.
914 Try explicitly specifying the CONFIGURATION when rerunning configure."])
915   fi
916 fi
917
918 AC_PROG_LN_S
919
920 dnl Make symlinks for etc, lisp, and info directories while the path
921 dnl is still relative.  We do not symlink lock because someone may
922 dnl have stuck the source on a read-only partition.  Instead we
923 dnl create it as an actual directory later on if it does not already
924 dnl exist.
925 for dir in lisp etc man info tests; do
926   if test ! -d "$dir" ; then
927     echo Making symbolic link to "$srcdir/$dir"
928     ${LN_S} "$srcdir/$dir" "$dir"
929   fi
930 done
931
932 dnl Do our best to deal with automounter brokenness
933 dnl CANONICALIZE_PATH(varname)
934 define([CANONICALIZE_PATH],
935 [if test -d "/net"; then
936   if test -d "/tmp_mnt/net"; then tdir="tmp_mnt/net"; else tdir="tmp_mnt"; fi
937   $1=`echo "[$]$1" | \
938    sed -e "s|^${tdir}/|/net/|" -e "s|^/a/|/net/|" -e "s|^/amd/|/net/|"`
939 fi])dnl
940
941 dnl Calculate canonical name for blddir (i.e. current directory).
942 dnl PWD may already be the preferable absolute name for ".",
943 dnl but we can't trust it - it is sometimes inaccurate.
944 absolute_pwd="`pwd`";
945 if test -n "$PWD" -a "`cd $PWD && pwd`" = "$absolute_pwd"
946 then blddir="$PWD"
947 else blddir="$absolute_pwd"; CANONICALIZE_PATH(blddir)
948 fi
949 AC_SUBST(blddir)
950
951 dnl Make srcdir absolute, if not already.  It is important to
952 dnl avoid running the path through pwd unnecessary, since pwd can
953 dnl give you automounter prefixes, which can go away.
954 case "$srcdir" in
955   /* ) ;;
956   .  ) srcdir="$blddir" ;;
957   *  ) srcdir="`cd $srcdir && pwd`"; CANONICALIZE_PATH(srcdir) ;;
958 esac
959
960 dnl Check if the source directory already has a configured system in it.
961 if test `pwd` != `sh -c cd $srcdir && pwd`  \
962    && test -f "$srcdir/src/config.h"; then
963   (echo "$progname: WARNING: The directory tree \`$srcdir' is being used"
964    echo "   as a build directory right now; it has been configured in its own"
965    echo "   right.  To configure in another directory as well, you MUST"
966    echo "   use GNU make.  If you do not have GNU make, then you must"
967    echo "   now do \`make distclean' in $srcdir,"
968    echo "   and then run $progname again.") >&2
969   extrasub='/^VPATH[[    ]]*=/c\
970 vpath %.c $(srcdir)\
971 vpath %.h $(srcdir)\
972 vpath %.y $(srcdir)\
973 vpath %.l $(srcdir)\
974 vpath %.s $(srcdir)\
975 vpath %.in $(srcdir)'
976 fi
977
978 dnl ----------------------------------------
979 dnl Find out which version of XEmacs this is
980 dnl ----------------------------------------
981 . "$srcdir/version.sh" || exit 1;
982 dnl Must do the following first to determine verbosity for AC_DEFINE
983 if test -n "$emacs_is_beta"; then beta=yes; else beta=no; fi
984 : "${extra_verbose=$beta}"
985 version="${emacs_major_version}.${emacs_minor_version}"
986 AC_DEFINE_UNQUOTED(EMACS_MAJOR_VERSION, $emacs_major_version)
987 AC_DEFINE_UNQUOTED(EMACS_MINOR_VERSION, $emacs_minor_version)
988 if test -n "$emacs_beta_version" ; then
989   if test "$beta" = "yes"; then
990         version="${version}-b${emacs_beta_version}"
991         AC_DEFINE_UNQUOTED(EMACS_BETA_VERSION, $emacs_beta_version)
992   else
993         version="${version}.${emacs_beta_version}"
994         AC_DEFINE_UNQUOTED(EMACS_PATCH_LEVEL, $emacs_beta_version)
995   fi
996 fi
997 AC_DEFINE_UNQUOTED(XEMACS_CODENAME, "$xemacs_codename")
998 AC_DEFINE_UNQUOTED(EMACS_VERSION, "$version")
999
1000 if test "$with_infodock" = "yes"; then
1001   if test ! -f ../../ID-INSTALL; then
1002     echo "Cannot build InfoDock without InfoDock sources"
1003     with_infodock=no
1004   fi
1005 fi
1006
1007 if test "$with_infodock" = "yes"; then
1008   dnl InfoDock version numbers.  XEmacs will use the same style of numbering
1009   dnl after the release of XEmacs 21.0.
1010   AC_DEFINE_UNQUOTED(INFODOCK_MAJOR_VERSION, $infodock_major_version)
1011   AC_DEFINE_UNQUOTED(INFODOCK_MINOR_VERSION, $infodock_minor_version)
1012   AC_DEFINE_UNQUOTED(INFODOCK_BUILD_VERSION, $infodock_build_version)
1013   version=${infodock_major_version}.${infodock_minor_version}.${infodock_build_version}
1014   PROGNAME=infodock
1015   CPPFLAGS="$CPPFLAGS -DINFODOCK"
1016 else
1017   PROGNAME=xemacs
1018 fi
1019
1020 AC_DEFINE_UNQUOTED(EMACS_PROGNAME, "$PROGNAME")
1021
1022 dnl ----------------------------------
1023 dnl Error checking and debugging flags
1024 dnl ----------------------------------
1025 dnl Error checking default to "yes" in beta versions, to "no" in releases.
1026 dnl Same goes for --debug and --extra-verbosity.
1027 if test -n "$emacs_is_beta"; then beta=yes; else beta=no; fi
1028 test "${error_check_extents=$beta}"   = yes && AC_DEFINE(ERROR_CHECK_EXTENTS)
1029 test "${error_check_typecheck=$beta}" = yes && AC_DEFINE(ERROR_CHECK_TYPECHECK)
1030 test "${error_check_bufpos=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_BUFPOS)
1031 test "${error_check_gc=$beta}"        = yes && AC_DEFINE(ERROR_CHECK_GC)
1032 test "${error_check_malloc=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_MALLOC)
1033 test "${error_check_byte_code=$beta}" = yes && AC_DEFINE(ERROR_CHECK_BYTE_CODE)
1034 test "${error_check_glyphs=$beta}" = yes && AC_DEFINE(ERROR_CHECK_GLYPHS)
1035 dnl debug=yes must be set when error checking is present.  This should be
1036 dnl fixed up.
1037 dnl debug implies other options
1038 if test "${debug:=$beta}" = "yes"; then
1039   use_assertions=yes memory_usage_stats=yes
1040   XE_ADD_OBJS(debug.o)
1041   XE_ADD_OBJS(tests.o)
1042   AC_DEFINE(DEBUG_XEMACS)
1043 fi
1044 test "$use_assertions"     = "yes" && AC_DEFINE(USE_ASSERTIONS)
1045 test "$memory_usage_stats" = "yes" && AC_DEFINE(MEMORY_USAGE_STATS)
1046
1047 dnl ------------------------------
1048 dnl Determine the s&m files to use
1049 dnl ------------------------------
1050 dnl Given the configuration name, set machfile and opsysfile to the
1051 dnl names of the m/*.h and s/*.h files we should use.
1052
1053 dnl Canonicalize the configuration name.
1054 AC_MSG_CHECKING("host system type")
1055 dnl allow -workshop suffix on configuration name
1056 internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'`
1057 canonical=`${CONFIG_SHELL-/bin/sh} $srcdir/config.sub "$internal_configuration"`
1058 XE_STRIP_4TH_COMPONENT(configuration)
1059 XE_STRIP_4TH_COMPONENT(canonical)
1060 AC_MSG_RESULT($configuration)
1061
1062 dnl If you add support for a new configuration, add code to this
1063 dnl switch statement to recognize your configuration name and select
1064 dnl the appropriate operating system and machine description files.
1065
1066 dnl You would hope that you could choose an m/*.h file pretty much
1067 dnl based on the machine portion of the configuration name, and an s-
1068 dnl file based on the operating system portion.  However, it turns out
1069 dnl that each m/*.h file is pretty manufacturer-specific - for
1070 dnl example, apollo.h, hp9000s300.h, mega68k, news.h, and tad68k are
1071 dnl all 68000 machines; mips.h, pmax.h, and news-risc are all MIPS
1072 dnl machines.  So we basically have to have a special case for each
1073 dnl configuration name.
1074
1075 dnl As far as handling version numbers on operating systems is
1076 dnl concerned, make sure things will fail in a fixable way.  If
1077 dnl /etc/MACHINES says nothing about version numbers, be
1078 dnl prepared to handle anything reasonably.  If version numbers
1079 dnl matter, be sure /etc/MACHINES says something about it.
1080
1081 dnl Eric Raymond says we should accept strings like "sysvr4" to mean
1082 dnl "System V Release 4"; he writes, "The old convention encouraged"
1083 dnl "confusion between `system' and `release' levels'."
1084
1085 machine='' opsys=''
1086
1087 dnl Straightforward machine determination
1088 case "$canonical" in
1089   sparc-*-*        ) machine=sparc ;;
1090   alpha*-*-*       ) machine=alpha ;;
1091   vax-*-*          ) machine=vax ;;
1092   mips-dec-*       ) machine=pmax ;;
1093   mips-sgi-irix6*  ) machine=iris6d ;;
1094   mips-sgi-*       ) machine=iris4d ;;
1095   mips*-linux      ) machine=mips ;;
1096   romp-ibm-*       ) machine=ibmrt ;;
1097   rs6000-ibm-aix*  ) machine=ibmrs6000 ;;
1098   powerpc-ibm-aix* ) machine=ibmrs6000 ;;
1099   powerpc*-*       ) machine=powerpc ;;
1100   hppa-*-*         ) machine=hp800 ;;
1101   m88k-dg-*        ) machine=aviion ;;
1102   m68*-sony-*      ) machine=news ;;
1103   mips-sony-*      ) machine=news-risc ;;
1104   clipper-*        ) machine=clipper ;;
1105   arm*             ) machine=arm ;;
1106   ns32k-*          ) machine=ns32000 ;;
1107 esac
1108
1109 dnl Straightforward OS determination
1110 case "$canonical" in
1111   *-*-linux*    ) opsys=linux ;;
1112   *-*-netbsd*   ) opsys=netbsd ;;
1113   *-*-openbsd*  ) opsys=openbsd ;;
1114   *-*-nextstep* ) opsys=nextstep ;;
1115   *-*-vms       ) opsys=vms ;;
1116
1117   dnl DEC OSF
1118   *-dec-osf1.3 | *-dec-osf2* ) opsys=decosf1-3 ;;
1119   *-dec-osf1.2 | *-dec-osf1* ) opsys=decosf1-2 ;;
1120   *-dec-osf3.[[2-9]]         ) opsys=decosf3-2 ;;
1121   *-dec-osf3*                ) opsys=decosf3-1 ;;
1122   *-dec-osf[[4-9]]*          ) opsys=decosf4-0 ;;
1123
1124   dnl DEC Ultrix
1125   *-*-ultrix[[0-3]].* | *-*-ultrix4.0* ) opsys=bsd4-2 ;;
1126   *-*-ultrix4.[[12]]* ) opsys=bsd4-3 ;;
1127   *-*-ultrix* )         opsys=ultrix4-3 ;;
1128
1129   dnl AIX
1130   *-*-aix3.1*     ) opsys=aix3-1   ;;
1131   *-*-aix3.2.5    ) opsys=aix3-2-5 ;;
1132   *-*-aix3*       ) opsys=aix3-2   ;;
1133   *-*-aix4.0*     ) opsys=aix4     ;;
1134   *-*-aix4.1*     ) opsys=aix4-1   ;;
1135   *-*-aix[[4-9]]* ) opsys=aix4-2   ;;
1136
1137   dnl Other generic OSes
1138   *-gnu* )                      opsys=gnu    ;;
1139   *-*-bsd4.[[01]] )             opsys=bsd4-1 ;;
1140   *-*-bsd4.2 )                  opsys=bsd4-2 ;;
1141   *-*-bsd4.3 )                  opsys=bsd4-3 ;;
1142   *-*-aos4.2 )                  opsys=bsd4-2 ;;
1143   *-*-aos*   )                  opsys=bsd4-3 ;;
1144   *-*-sysv0    | *-*-sysvr0 )   opsys=usg5-0 ;;
1145   *-*-sysv2    | *-*-sysvr2 )   opsys=usg5-2 ;;
1146   *-*-sysv2.2  | *-*-sysvr2.2 ) opsys=usg5-2-2 ;;
1147   *-*-sysv3*   | *-*-sysvr3* )  opsys=usg5-3 ;;
1148   *-*-sysv4.1* | *-*-sysvr4.1* )opsys=usg5-4 NON_GNU_CPP=/usr/lib/cpp ;;
1149   *-*-sysv4.[[2-9]]* | *-sysvr4.[[2-9]]* )
1150         if test -z "$NON_GNU_CPP" ; then
1151           for prog in "/usr/ccs/lib/cpp" "/lib/cpp"; do
1152             if test -f "$prog"; then NON_GNU_CPP="$prog"; break; fi
1153           done
1154         fi
1155         opsys=usg5-4-2 ;;
1156     *-sysv4* | *-sysvr4* )      opsys=usg5-4 ;;
1157     *-*-mach_bsd4.3* )          opsys=mach-bsd4-3 ;;
1158 esac
1159
1160 case "$canonical" in
1161
1162   dnl NetBSD ports
1163   *-*-netbsd* )
1164     case "$canonical" in
1165       i[[3-9]]86-*-netbsd*) machine=intel386 ;;
1166       hp300-*-netbsd* | amiga-*-netbsd* | sun3-*-netbsd* | mac68k-*-netbsd* | da30-*-netbsd* | m68k-*-netbsd* )
1167                       dnl Yes, this is somewhat bogus.
1168                       machine=hp9000s300 ;;
1169       pc532-*-netbsd* | ns32k-*-netbsd* )  machine=ns32000 ;;
1170       pmax-*-netbsd*  | mips-*-netbsd*  )  machine=pmax ;;
1171     esac
1172   ;;
1173
1174   dnl OpenBSD ports
1175   *-*-openbsd* )
1176     case "${canonical}" in
1177       i386-*-openbsd*)          machine=intel386 ;;
1178       m68k-*-openbsd*)          machine=hp9000s300 ;;
1179       mipsel-*-openbsd*)        machine=pmax ;;
1180      esac
1181    ;;
1182
1183   dnl Acorn RISCiX:
1184   arm-acorn-riscix1.1* ) machine=acorn opsys=riscix1-1 ;;
1185   arm-acorn-riscix1.2* | arm-acorn-riscix ) machine=acorn opsys=riscix1-2 ;;
1186
1187   dnl Alliant machines
1188   fx80-alliant-* ) machine=alliant4     opsys=bsd4-2 ;;
1189   i860-alliant-* ) machine=alliant-2800 opsys=bsd4-3 ;;
1190
1191   dnl Altos 3068
1192   m68*-altos-sysv* ) machine=altos opsys=usg5-2 ;;
1193
1194   dnl Amdahl UTS
1195   580-amdahl-sysv* ) machine=amdahl opsys=usg5-2-2 ;;
1196
1197   dnl Apollo, Domain/OS
1198   m68*-apollo-* ) machine=apollo opsys=bsd4-3 ;;
1199
1200   dnl AT&T 3b2, 3b5, 3b15, 3b20
1201   we32k-att-sysv* ) machine=att3b opsys=usg5-2-2 ;;
1202
1203   dnl AT&T 3b1 - The Mighty Unix PC!
1204   m68*-att-sysv* ) machine=7300 opsys=usg5-2-2 ;;
1205
1206   dnl Bull machines
1207   rs6000-bull-bosx* ) machine=ibmrs6000 opsys=aix3-2 ;; # dpx20
1208   m68*-bull-sysv3*  ) machine=dpx2      opsys=usg5-3 ;; # dpx2
1209   m68*-bull-sysv2*  ) machine=sps7      opsys=usg5-2 ;; # sps7
1210
1211   dnl CCI 5/32, 6/32 -- see "Tahoe".
1212
1213   dnl Celerity
1214   celerity-celerity-bsd* ) machine=celerity opsys=bsd4-2 ;;
1215
1216   dnl Convex
1217   *-convex-bsd* | *-convex-convexos* )
1218     machine=convex opsys=bsd4-3
1219     NON_GNU_CPP="cc -E -P"
1220   ;;
1221
1222   dnl Cubix QBx/386
1223   i[[3-9]]86-cubix-sysv* ) machine=intel386 opsys=usg5-3 ;;
1224
1225   dnl Darwin, a.k.a. MacOS X (based on Mach and Freebsd)
1226   *-*-darwin*)
1227     opsys=darwin
1228     RANLIB="ranlib -c" dnl Avoids a link error with lwlib-config.c
1229     ;;
1230
1231   dnl Data General AViiON Machines
1232   i586-dg-dgux*R4*   | i586-dg-dgux5.4.4* ) machine=aviion opsys=dgux5-4r4 ;;
1233   m88k-dg-dgux5.4R3* | m88k-dg-dgux5.4.3* ) opsys=dgux5-4r3 ;;
1234   m88k-dg-dgux5.4R2* | m88k-dg-dgux5.4.2* ) opsys=dgux5-4r2 ;;
1235   m88k-dg-dgux*                           ) opsys=dgux     ;;
1236
1237   dnl Motorola Delta machines
1238   m68k-motorola-sysv* | m68000-motorola-sysv* ) machine=delta opsys=usg5-3 ;;
1239   m88k-motorola-sysv4* )
1240     dnl jbotte@bnr.ca says that UNIX_System_V <hostName> 4.0 R40V4.3 m88k mc88110
1241     dnl needs POSIX_SIGNALS and therefore needs usg5-4-2.
1242     dnl I hope there are not other 4.0 versions for this machine
1243     dnl which really need usg5-4 instead.
1244     machine=delta88k opsys=usg5-4-2
1245   ;;
1246   m88k-motorola-sysv* | m88k-motorola-m88kbcs* ) machine=delta88k opsys=usg5-3 ;;
1247
1248   dnl Dual machines
1249   m68*-dual-sysv*    ) machine=dual opsys=usg5-2   ;;
1250   m68*-dual-uniplus* ) machine=dual opsys=unipl5-2 ;;
1251
1252   dnl Encore machines
1253   ns16k-encore-bsd* ) machine=ns16000 opsys=umax ;;
1254
1255   dnl Gould Power Node and NP1
1256   pn-gould-bsd4.2* ) machine=gould     opsys=bsd4-2 ;;
1257   pn-gould-bsd4.3* ) machine=gould     opsys=bsd4-3 ;;
1258   np1-gould-bsd* )   machine=gould-np1 opsys=bsd4-3 ;;
1259
1260   dnl Harris Night Hawk machines running CX/UX (a 5000 looks just like a 4000
1261   dnl as far as XEmacs is concerned).
1262   m88k-harris-cxux* )
1263     dnl Build needs to be different on 7.0 and later releases
1264     case "`uname -r`" in
1265        [[56]].[[0-9]] ) machine=nh4000 opsys=cxux  ;;
1266        [[7]].[[0-9]]  ) machine=nh4000 opsys=cxux7 ;;
1267     esac
1268     NON_GNU_CPP="/lib/cpp"
1269   ;;
1270   dnl Harris ecx or gcx running CX/UX (Series 1200, Series 3000)
1271   m68k-harris-cxux* ) machine=nh3000 opsys=cxux ;;
1272   dnl Harris power pc NightHawk running Power UNIX (Series 6000)
1273   powerpc-harris-powerunix ) machine=nh6000 opsys=powerunix NON_GNU_CPP="cc -Xo -E -P" ;;
1274
1275   dnl Honeywell XPS100
1276   xps*-honeywell-sysv* ) machine=xps100 opsys=usg5-2 ;;
1277
1278   dnl HP 9000 series 200 or 300
1279   m68*-hp-bsd* ) machine=hp9000s300 opsys=bsd4-3 ;;
1280
1281   dnl HP-UX
1282   *-hp-hpux* )
1283     dnl Figure out machine and opsys orthogonally
1284     case "$canonical" in
1285       m68*  ) machine=hp9000s300 ;;
1286       hppa* ) machine=hp800      ;;
1287     esac
1288
1289     case "$canonical" in
1290       *-hp-hpux7*  )  opsys=hpux   ;;
1291       *-hp-hpux8*  )  opsys=hpux8  ;;
1292       *-hp-hpux9*  )  opsys=hpux9  ;;
1293       *-hp-hpux10* )  opsys=hpux10 ;;
1294       *-hp-hpux11* )  opsys=hpux11 ;;
1295       *            )  opsys=hpux   ;;
1296     esac
1297
1298     dnl HP has a broken "strcat"
1299     case "$opsys" in hpux9 | hpux10 ) XE_ADD_OBJS(strcat.o) ;; esac
1300
1301     if test "$opsys" = "hpux10" -o "$opsys" = "hpux11"; then \
1302         ansi_flag="-Ae"; else ansi_flag="-Aa"; fi
1303     NON_GNU_CC="cc $ansi_flag" NON_GNU_CPP="cc $ansi_flag -E"
1304
1305     case "$canonical" in *-hp-hpux*shr* ) opsys="${opsys}-shr" ;; esac
1306   ;;
1307
1308   dnl Orion machines
1309   orion-orion-bsd*   ) machine=orion    opsys=bsd4-2 ;;
1310   clipper-orion-bsd* ) machine=orion105 opsys=bsd4-2 ;;
1311
1312   dnl IBM machines
1313   i[[3-9]]86-ibm-aix1.1* ) machine=ibmps2-aix opsys=usg5-2-2 ;;
1314   i[[3-9]]86-ibm-aix1.[[23]]* | i[[3-9]]86-ibm-aix* ) machine=ibmps2-aix opsys=usg5-3 ;;
1315   i370-ibm-aix*) machine=ibm370aix opsys=usg5-3 ;;
1316   romp-ibm-aos*    ) opsys=bsd4-3 ;;
1317   romp-ibm-bsd*    ) opsys=bsd4-3 ;;
1318   romp-ibm-mach*   ) opsys=mach-bsd4-3 ;;
1319
1320   dnl Integrated Solutions "Optimum V"
1321   m68*-isi-bsd4.2* ) machine=isi-ov opsys=bsd4-2 ;;
1322   m68*-isi-bsd4.3* ) machine=isi-ov opsys=bsd4-3 ;;
1323
1324   dnl Intel 386 machines where we do care about the manufacturer
1325   i[[3-9]]86-intsys-sysv* ) machine=is386 opsys=usg5-2-2 ;;
1326
1327   dnl Prime EXL
1328   i[[3-9]]86-prime-sysv* ) machine=i386 opsys=usg5-3 ;;
1329
1330   dnl Sequent Symmetry running Dynix
1331   i[[3-9]]86-sequent-bsd* ) machine=symmetry opsys=bsd4-3 ;;
1332
1333   dnl Sequent Symmetry running DYNIX/ptx
1334   i[[3-9]]86-sequent-ptx* ) machine=sequent-ptx opsys=ptx NON_GNU_CPP="/lib/cpp" ;;
1335
1336   dnl Unspecified sysv on an ncr machine defaults to svr4.2.
1337   dnl (Plain usg5-4 does not turn on POSIX signals, which we need.)
1338   i[[3-9]]86-ncr-sysv* ) machine=ncr386 opsys=usg5-4-2 ;;
1339
1340   dnl Intel Paragon OSF/1
1341   i860-intel-osf1* ) machine=paragon opsys=osf1 NON_GNU_CPP=/usr/mach/lib/cpp ;;
1342
1343   dnl Intel 860
1344   i860-*-sysv4* ) machine=i860 opsys=usg5-4 NON_GNU_CC="/bin/cc" NON_GNU_CPP="/usr/ccs/lib/cpp" ;;
1345
1346   dnl Masscomp machines
1347   m68*-masscomp-rtu* ) machine=masscomp opsys=rtu ;;
1348
1349   dnl Megatest machines
1350   m68*-megatest-bsd* ) machine=mega68 opsys=bsd4-2 ;;
1351
1352   dnl Workstations sold by MIPS
1353   dnl This is not necessarily all workstations using the MIPS processor -
1354   dnl Irises are produced by SGI, and DECstations by DEC.
1355   mips-mips-usg* ) machine=mips4 ;;
1356   mips-mips-riscos4 )
1357     machine=mips4
1358     NON_GNU_CC="cc -systype bsd43"
1359     NON_GNU_CPP="cc -systype bsd43 -E"
1360     case "$canonical" in
1361       mips-mips-riscos4* ) opsys=bsd4-3  ;;
1362       mips-mips-riscos5* ) opsys=riscos5 ;;
1363     esac
1364   ;;
1365   mips-mips-bsd* ) machine=mips opsys=bsd4-3 ;;
1366   mips-mips-*    ) machine=mips opsys=usg5-2-2 ;;
1367
1368   dnl NeXT
1369   m68*-next-* | m68k-*-nextstep* ) machine=m68k opsys=nextstep ;;
1370
1371   dnl The complete machine from National Semiconductor
1372   ns32k-ns-genix* ) machine=ns32000 opsys=usg5-2 ;;
1373
1374   dnl NCR machines
1375   m68*-ncr-sysv2* | m68*-ncr-sysvr2* ) machine=tower32   opsys=usg5-2-2 ;;
1376   m68*-ncr-sysv3* | m68*-ncr-sysvr3* ) machine=tower32v3 opsys=usg5-3 ;;
1377
1378   dnl Nixdorf Targon 31
1379   m68*-nixdorf-sysv* ) machine=targon31 opsys=usg5-2-2 ;;
1380
1381   dnl Nu (TI or LMI)
1382   m68*-nu-sysv* ) machine=nu opsys=usg5-2 ;;
1383
1384   dnl Plexus
1385   m68*-plexus-sysv* ) machine=plexus opsys=usg5-2 ;;
1386
1387   dnl Pyramid machines
1388   pyramid-pyramid-bsd* ) machine=pyramid opsys=bsd4-2 ;;
1389
1390   dnl Sequent Balance
1391   ns32k-sequent-bsd4.2* ) machine=sequent opsys=bsd4-2 ;;
1392   ns32k-sequent-bsd4.3* ) machine=sequent opsys=bsd4-3 ;;
1393
1394   dnl Siemens Nixdorf
1395   mips-siemens-sysv* | mips-sni-sysv*)
1396     machine=mips-siemens opsys=usg5-4
1397     NON_GNU_CC=/usr/ccs/bin/cc
1398     NON_GNU_CPP=/usr/ccs/lib/cpp
1399   ;;
1400
1401   dnl NEC
1402   mips-nec-sysv*)
1403     machine=mips-nec
1404     NON_GNU_CC=/usr/ccs/bin/cc
1405     NON_GNU_CPP=/usr/ccs/lib/cpp
1406   ;;
1407
1408   dnl Silicon Graphics machines
1409   dnl Iris 2500 and Iris 2500 Turbo (aka the Iris 3030)
1410   m68*-sgi-iris3.5* ) machine=irist opsys=iris3-5 ;;
1411   m68*-sgi-iris3.6* | m68*-sgi-iris*) machine=irist opsys=iris3-6 ;;
1412   dnl Iris 4D
1413   mips-sgi-irix3.*    ) opsys=irix3-3 ;;
1414   mips-sgi-irix4.*    ) opsys=irix4-0 ;;
1415   mips-sgi-irix6*     ) opsys=irix6-0 ;;
1416   mips-sgi-irix5.1*   ) opsys=irix5-1 ;;
1417   mips-sgi-irix5.2*   ) opsys=irix5-2 ;;
1418   mips-sgi-irix5.*    ) opsys=irix5-3 ;;
1419   mips-sgi-irix*      ) opsys=irix5-0 ;;
1420
1421   dnl SONY machines
1422   *-sony-newsos[[34]]* | *-sony-news[[34]]* ) opsys=bsd4-3 ;;
1423   *-sony-news* ) opsys=newsos5 ;;
1424
1425   dnl Stride
1426   m68*-stride-sysv* ) machine=stride opsys=usg5-2 ;;
1427
1428   dnl Suns
1429   *-*-solaris* | *-*-sunos* | *-sun-mach* | *-sun-bsd* )
1430     dnl Hardware type
1431     case "$canonical" in
1432       m68*-sunos1* )             machine=sun1     ;;
1433       m68*-sunos2* )             machine=sun2     ;;
1434       m68* )                     machine=sun3     ;;
1435       i*86*-sun-sunos[[34]]* )   machine=sun386   ;;
1436       i*86-*-* )                 machine=intel386 ;;
1437       rs6000* )                  machine=rs6000   ;;
1438     esac
1439
1440     dnl Make $canonical even more so.
1441     case "$canonical" in *-sunos5*)
1442       canonical=`echo $canonical | sed -e s/sunos5/solaris2/`;;
1443     esac
1444
1445     dnl On SunOS 4, use /usr/lib/cpp, sans dynodump, /bin/ranlib
1446     dnl On SunOS 5, use cc -E,        need dynodump, RANLIB not needed
1447     dnl But, SunOS 5.6 no longer needs dynodump because it has a similar
1448     dnl function integrated.
1449     case "$canonical" in
1450       *-sunos4* )
1451         #test -f /usr/lib/cpp     && NON_GNU_CPP=/usr/lib/cpp ;;
1452         : ;;
1453       *-solaris2* )
1454         #test -f /usr/ccs/lib/cpp && NON_GNU_CPP=/usr/ccs/lib/cpp
1455         RANLIB=':' ;;
1456     esac
1457
1458     case "$canonical" in
1459       *-solaris* )
1460         opsys=sol2
1461         os_release_major=`uname -r | sed -e 's/^\([[0-9]]\{1,\}\)\.\([[0-9]]\{1,\}\).*/\1/'`
1462         os_release_minor=`uname -r | sed -e 's/^\([[0-9]]\{1,\}\)\.\([[0-9]]\{1,\}\).*/\2/'`
1463         case "$os_release_minor" in [[0-9]])
1464           os_release_minor="0${os_release_minor}";;
1465         esac
1466         os_release="${os_release_major}${os_release_minor}"
1467         AC_DEFINE_UNQUOTED(OS_RELEASE, $os_release) ;;
1468
1469       dnl The last Sun386 ran 4.0.
1470       i*86-*-sunos4*      ) opsys=sunos4-0      ;;
1471       *-sunos4.0*         ) opsys=sunos4-0      ;;
1472       *-sunos4.1.2*       ) opsys=sunos4-1-2    ;;
1473       *-sunos4.1.3*       ) opsys=sunos4-1-3    ;;
1474       *-sunos4.1.[[4-9]]* ) opsys=sunos4-1-4    ;;
1475       *-sunos4* | *-sunos ) opsys=sunos4-1      ;;
1476       *-mach*             ) opsys=mach-bsd4-3   ;;
1477       *                   ) opsys=bsd4-2        ;;
1478     esac
1479
1480     case "$canonical" in *-sunos4*shr* ) opsys="${opsys}-shr" ;; esac
1481
1482     dnl Watch out for a compiler guaranteed not to work.
1483     test "$opsys $CC" = "sol2 /usr/ucb/cc" && CC=""
1484   ;;
1485
1486   dnl Tadpole 68k
1487   m68*-tadpole-sysv* ) machine=tad68k opsys=usg5-3 ;;
1488
1489   dnl Tahoe machines
1490   tahoe-tahoe-bsd4.2* ) machine=tahoe opsys=bsd4-2 ;;
1491   tahoe-tahoe-bsd4.3* ) machine=tahoe opsys=bsd4-3 ;;
1492
1493   dnl Tandem Integrity S2
1494   mips-tandem-sysv* ) machine=tandem-s2 opsys=usg5-3 ;;
1495
1496   dnl Tektronix XD88
1497   m88k-tektronix-sysv3* ) machine=tekxd88 opsys=usg5-3 ;;
1498
1499   dnl Tektronix 16000 box (6130?)
1500   ns16k-tektronix-bsd* ) machine=ns16000 opsys=bsd4-2 ;;
1501   dnl Tektronix 4300
1502   dnl src/m/tek4300.h hints that this is a m68k machine.
1503   m68*-tektronix-bsd* ) machine=tek4300 opsys=bsd4-3 ;;
1504
1505   dnl Titan P2 or P3
1506   titan-titan-sysv* ) machine=titan opsys=usg5-3 ;;
1507
1508   dnl Ustation E30 (SS5E)
1509   m68*-unisys-uniplus* ) machine=ustation opsystem=unipl5-2 ;;
1510
1511   dnl Vaxen.
1512   vax-dec-* )
1513     case "$canonical" in
1514       *-sysv[[01]]* | *-sysvr[[01]]* )  opsys=usg5-0 ;;
1515       *-sysv2* | *-sysvr2* )            opsys=usg5-2 ;;
1516       *-mach* )                         opsys=mach-bsd4-3 ;;
1517     esac
1518   ;;
1519
1520   dnl Whitechapel MG1
1521   ns16k-whitechapel-* ) machine=mg1 ;;
1522
1523   dnl Wicat
1524   m68*-wicat-sysv* ) machine=wicat opsys=usg5-2 ;;
1525
1526   dnl Intel 386 machines where we do not care about the manufacturer
1527   i[[3-9]]86-*-* )
1528     machine=intel386
1529     case "$canonical" in
1530       *-isc1.* | *-isc2.[[01]]* ) opsys=386-ix ;;
1531       *-isc2.2* )               opsys=isc2-2 ;;
1532       *-isc4.0* )               opsys=isc4-0 ;;
1533       *-isc4.* )                opsys=isc4-1
1534                                 GCC_TEST_OPTIONS=-posix
1535                                 NON_GCC_TEST_OPTIONS=-Xp
1536                                 ;;
1537       *-isc* )                  opsys=isc3-0 ;;
1538       *-esix5* )                opsys=esix5r4 NON_GNU_CPP=/usr/lib/cpp ;;
1539       *-esix* )                 opsys=esix ;;
1540       *-mach* )                 opsys=mach-bsd4-3 ;;
1541       *-xenix* )                opsys=xenix ;;
1542       *-sco3.2v4* )             opsys=sco4 NON_GNU_CPP=/lib/cpp  ;;
1543       *-bsd386* | *-bsdi1* )    opsys=bsd386 ;;
1544       *-bsdi4* )                opsys=bsdos4 ;;
1545       *-bsdi3* )                opsys=bsdos3 ;;
1546       *-bsdi2.1* )              opsys=bsdos2-1 ;;
1547       *-bsdi2* )                opsys=bsdos2 ;;
1548       *-sco3.2v5* )             opsys=sco5 ;;
1549       *-sysv5* )                opsys=sco7 ;;
1550       *-386bsd* )               opsys=386bsd ;;
1551       *-freebsd* )              opsys=freebsd ;;
1552       *-nextstep* )             opsys=nextstep ;;
1553       *-pc-cygwin* )            opsys=cygwin32 ;;
1554       *-pc-mingw* )             opsys=mingw32 ;
1555                                 test -z "$with_tty" && with_tty="no";;
1556       dnl Otherwise, we fall through to the generic opsys code at the bottom.
1557     esac
1558   ;;
1559
1560   dnl Linux/68k
1561   m68k-*-linux* ) machine=m68k opsys=linux ;;
1562
1563 esac
1564
1565 dnl Initialize machine from $canonical if not in our database above.
1566 test -z "$machine" && machine=`echo $canonical | sed 's/-.*$//'`
1567
1568 dnl Initialize opsys from `uname -s` if not in our database above.
1569 test -z "$opsys"   && opsys=`uname -s | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
1570
1571 dnl Use configure-time autodetection if s&m not available
1572 if test -r "${srcdir}/src/m/${machine}.h"; then
1573   machfile="m/${machine}.h"
1574   AC_DEFINE_UNQUOTED(config_machfile, "$machfile")
1575 else
1576   echo "XEmacs has no builtin knowledge of \`$machine' machines."
1577   echo "Using configure-time autodetection only."
1578 fi
1579
1580 if test -r "${srcdir}/src/s/${opsys}.h"; then
1581   opsysfile="s/${opsys}.h"
1582   AC_DEFINE_UNQUOTED(config_opsysfile, "$opsysfile")
1583 else
1584   echo "XEmacs has no builtin knowledge of \`$opsys' operating systems."
1585   echo "Using configure-time autodetection only."
1586 fi
1587
1588 dnl --------------------------------------------------------------
1589 dnl $opsys detection complete; defaults depending on $opsys follow
1590 dnl --------------------------------------------------------------
1591
1592 if test -z "$pdump"; then
1593   case "$opsys" in
1594     linux* )  pdump=yes ;;    dnl glibc 2.3.1 seems to hose unexec
1595     darwin )  pdump=yes ;;    dnl No "native" working dumper available
1596     cygwin* ) pdump=yes ;;    dnl unexec is broken
1597     *)        pdump=no ;;
1598   esac
1599 fi
1600
1601 if test -z "$dynamic"; then
1602   case "$opsys" in
1603     hpux* | sunos4* ) dynamic=no ;;
1604     *) dynamic=yes ;;
1605   esac
1606 fi
1607 if test "$dynamic" = "yes"; then
1608   case "$opsys" in
1609     hpux* | sunos4* | sco5 ) opsys="${opsys}-shr" ;;
1610     decosf* ) ld_call_shared="-call_shared" ;;
1611     darwin ) AC_DEFINE(DLSYM_NEEDS_UNDERSCORE) ;;
1612   esac
1613 else dnl "$dynamic" = "no"
1614   case "$opsys" in
1615     sol2 )
1616       echo "Static linking is not supported on Solaris 2."
1617       echo "Rerun configure without specifying --dynamic=no."
1618       exit 1 ;;
1619     linux   ) ld_call_shared="-Bstatic" ;;
1620     decosf* ) ld_call_shared="-non_shared" ;;
1621   esac
1622 fi
1623
1624 dnl Use xlc by default on AIX
1625 case "$opsys" in aix*) NON_GNU_CC=xlc ;; esac
1626
1627 stack_trace_eye_catcher=`echo ${PROGNAME}_${version}_${canonical} | sed 'y/.-/__/'`
1628 AC_DEFINE_UNQUOTED(STACK_TRACE_EYE_CATCHER, $stack_trace_eye_catcher)
1629
1630 dnl --------------------------------------------------
1631 dnl Determine the compiler, set up for feature testing
1632 dnl --------------------------------------------------
1633
1634 dnl Sun Development environment support
1635 test "$with_sparcworks" = "yes" && with_workshop=yes # compatibility alias
1636 XE_CHECK_FEATURE_DEPENDENCY(workshop, tooltalk)
1637 if test "$with_workshop" = "yes"; then
1638   AC_DEFINE(SUNPRO)
1639   XE_ADD_OBJS(sunpro.o)
1640 fi
1641
1642 if test "$with_clash_detection" != "no"; then
1643   AC_DEFINE(CLASH_DETECTION)
1644   XE_ADD_OBJS(filelock.o)
1645 fi
1646
1647 dnl Choose a compiler from (in order)
1648 dnl --compiler, env var CC, with_gcc=no && ${NON_GNU_CC:-cc}, AC_PROG_CC
1649 test -n "$compiler" && CC="$compiler"
1650 if test "$with_gcc" = "no"; then dnl Try to find a non-gcc compiler
1651   case "$CC" in "" | *gcc* ) CC="${NON_GNU_CC-cc}" ;; esac
1652 fi
1653
1654 dnl If we don't set CFLAGS here, AC_PROG_CC will set it.
1655 dnl But we know better what's good for us, so we do our own
1656 dnl computation of real CFLAGS later.
1657 dnl --cflags overrides environment variable CFLAGS
1658 test "${cflags-unset}" != unset && CFLAGS="$cflags"
1659 if test "${CFLAGS-unset}" != unset
1660   then cflags_specified=yes;
1661   else cflags_specified=no;
1662 fi
1663
1664 xe_save_CFLAGS="$CFLAGS"
1665
1666 AC_PROG_CC dnl Autoconf has its own magic for compiler autodetection
1667
1668 dnl Retry using random guesswork if AC_PROG_CC got it wrong...
1669 if   test "$with_gcc" = "no"  -a "$GCC" = "yes"; then
1670   CC=${NON_GNU_CC-cc}
1671   AC_PROG_CC
1672 elif test "$with_gcc" = "yes" -a "$GCC" != "yes" ; then
1673   CC=gcc
1674   AC_PROG_CC
1675 fi
1676 CFLAGS="$xe_save_CFLAGS"
1677
1678 dnl Figure out what C preprocessor to use.
1679
1680 dnl On Sun systems, people sometimes set up the variable CPP
1681 dnl with a value that is a directory, not an executable at all.
1682 dnl Detect that case, and ignore that value.
1683 test -n "$CPP" -a -d "$CPP" && CPP=
1684
1685 test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
1686
1687 AC_PROG_CPP
1688
1689 dnl --------------------------------------------------------------------
1690 dnl Compiler feature macros
1691 dnl --------------------------------------------------------------------
1692
1693 AC_AIX dnl Defines _ALL_SOURCE on AIX.
1694
1695 dnl We want feature macros defined here *and* in config.h.in, so that
1696 dnl the compilation environment at configure time and compile time agree.
1697
1698 AC_MSG_CHECKING(for GNU libc)
1699 AC_TRY_COMPILE([#include <features.h>],[
1700 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
1701 #error Not a GNU libc system :-(
1702 ******* ======= ******** &&&&&&&&
1703 #endif
1704 ], have_glibc=yes, have_glibc=no)
1705 AC_MSG_RESULT($have_glibc)
1706 dnl I'm tired of pop being broken with GLIBC -slb
1707 dnl Well. then why not fix fucking pop?
1708 test "$have_glibc" = "yes" && AC_DEFINE(_GNU_SOURCE)
1709
1710 dnl We'd like to use vendor extensions, where available.
1711 dnl We'd like to use functions from the latest Unix98 standards.
1712 dnl See http://www.opengroup.org/onlinepubs/007908799/xsh/compilation.html
1713 case "$opsys" in
1714   sol2)
1715    AC_DEFINE(__EXTENSIONS__)
1716    dnl Solaris 2 before 2.5 had some bugs with feature test macro interaction.
1717    if test "$os_release" -ge 505; then
1718      AC_DEFINE(_XOPEN_SOURCE,500)
1719      AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
1720    fi ;;
1721   linux)
1722     AC_DEFINE(_POSIX_C_SOURCE,199506L)
1723     AC_DEFINE(_XOPEN_SOURCE,500)
1724     AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
1725     ;;
1726 esac
1727
1728 dnl Identify compilers to enable compiler-specific hacks.
1729 dnl Add support for other compilers HERE!
1730 dnl GCC is already identified elsewhere.
1731 AC_TRY_RUN([int main () {
1732 #if defined __SUNPRO_C
1733 return 11;
1734 #elif defined __DECC
1735 return 12;
1736 #elif defined __USLC__ && defined __SCO_VERSION__
1737 return 13;
1738 #elif defined __INTEL_COMPILER
1739 return 14;
1740 #else
1741 return 0;
1742 #endif
1743 }], [],
1744 [case "$conftest_rc" in
1745   11) echo "You appear to be using the SunPro C compiler." ; __SUNPRO_C=yes ;;
1746   12) echo "You appear to be using the DEC C compiler."    ; __DECC=yes ;;
1747   13) echo "You appear to be using the SCO C compiler."    ; __USLC__=yes ;;
1748   14) echo "You appear to be using the Intel C++ compiler."; __ICC=yes
1749       dnl Newer versions of icc claim to be GCC
1750       GCC=no ;;
1751 esac])
1752
1753
1754 dnl case "$canonical" in
1755 dnl   *-sun-sunos* ) test "$CPP" = "acc -E" && CPP="acc -E -Xs" ;;
1756 dnl esac
1757
1758 dnl --------------------------------------------------------------------
1759 dnl Extract some information from the operating system and machine files
1760 dnl --------------------------------------------------------------------
1761
1762 echo "Extracting information from the machine- and system-dependent headers..."
1763
1764 dnl It is not important that this name contain the PID; you cannot run
1765 dnl two configures in the same directory and have anything work
1766 dnl anyway.
1767 tempcname="conftest.c"
1768
1769 dnl CPP_to_sh(CPP_SYMBOL, SH_VAR, DEFAULT_VALUE)
1770 define([CPP_to_sh],
1771 [[#]ifndef [$1]
1772 [#]define [$1]ifelse([$3],,, [ "$3"])
1773 [#]endif
1774 configure___ [$2]=[$1]
1775 ])dnl CPP_to_sh
1776
1777 dnl CPP_boolean_to_sh(CPP_SYMBOL, SH_VAR)
1778 define([CPP_boolean_to_sh],
1779 [[#]ifdef [$1]
1780 configure___ [$2]=yes
1781 [#]else
1782 configure___ [$2]=no
1783 [#]endif
1784 ])dnl CPP_boolean_to_sh
1785
1786 cat > $tempcname < confdefs.h
1787 cat >> $tempcname <<EOF
1788 #define NOT_C_CODE
1789 #define C_SWITCH_SITE
1790 #define C_SWITCH_X_SITE
1791 #define LD_SWITCH_SITE
1792 #define LD_SWITCH_X_SITE
1793 #define LD_SWITCH_X_SITE_AUX
1794 #define OS_RELEASE $os_release
1795
1796 #ifdef config_opsysfile
1797 #include "$srcdir/src/$opsysfile"
1798 #endif
1799
1800 #ifdef config_machfile
1801 #include "$srcdir/src/$machfile"
1802 #endif
1803
1804 CPP_to_sh(LIBS_MACHINE, libs_machine)
1805 CPP_to_sh(LIBS_SYSTEM,  libs_system)
1806 CPP_to_sh(LIBS_TERMCAP, libs_termcap)
1807 CPP_to_sh(LIB_STANDARD, libs_standard)
1808
1809 CPP_to_sh(OBJECTS_MACHINE, objects_machine)
1810 CPP_to_sh(OBJECTS_SYSTEM,  objects_system)
1811
1812 CPP_to_sh(C_SWITCH_MACHINE,   c_switch_machine)
1813 CPP_to_sh(C_SWITCH_SYSTEM,    c_switch_system)
1814
1815 CPP_to_sh(LD_SWITCH_MACHINE,  ld_switch_machine)
1816 CPP_to_sh(LD_SWITCH_SYSTEM,   ld_switch_system)
1817
1818 CPP_to_sh(UNEXEC, unexec, unexec.o)
1819
1820 CPP_to_sh(LD_SWITCH_SHARED, ld_switch_shared, -c)
1821
1822 #define ORDINARY_LD "\$(CC) \$(CFLAGS)"
1823 configure___ ordinary_ld=ORDINARY_LD
1824
1825 #ifdef ORDINARY_LINK
1826 #define LD ORDINARY_LD
1827 #else /* no ORDINARY LINK */
1828 #ifdef COFF_ENCAPSULATE
1829 #define LD "\$(CC) -nostdlib"
1830 #else /* not COFF_ENCAPSULATE */
1831 #ifdef LINKER
1832 #define LD LINKER
1833 #else /* ! defined (LINKER) */
1834 #define LD "ld"
1835 #endif /* ! defined (LINKER) */
1836 #endif /* ! defined (COFF_ENCAPSULATE) */
1837 #endif /* not ORDINARY_LINK */
1838 configure___ ld=LD
1839
1840 CPP_to_sh(LIB_GCC, lib_gcc)
1841 CPP_to_sh(LD_TEXT_START_ADDR, ld_text_start_addr)
1842
1843 #if ! defined (ORDINARY_LINK) && !defined (START_FILES)
1844 #ifdef NO_REMAP
1845 #ifdef COFF_ENCAPSULATE
1846 #define START_FILES "pre-crt0.o /usr/local/lib/gcc-crt0.o"
1847 #else /* ! defined (COFF_ENCAPSULATE) */
1848 #define START_FILES "pre-crt0.o /lib/crt0.o"
1849 #endif /* ! defined (COFF_ENCAPSULATE) */
1850 #else /* ! defined (NO_REMAP) */
1851 #define START_FILES "ecrt0.o"
1852 #endif /* ! defined (NO_REMAP) */
1853 #endif /* no ORDINARY_LINK */
1854 #ifndef START_FILES
1855 #define START_FILES
1856 #endif
1857 configure___ start_files=START_FILES
1858
1859 CPP_boolean_to_sh(ORDINARY_LINK, ordinary_link)
1860 CPP_boolean_to_sh(SYSTEM_MALLOC, system_malloc)
1861 CPP_boolean_to_sh(TERMINFO, have_terminfo)
1862 dnl The MAIL_USE_xxx variables come from the s&m headers
1863 CPP_boolean_to_sh(MAIL_USE_FLOCK, mail_use_flock)
1864 CPP_boolean_to_sh(MAIL_USE_LOCKF, mail_use_lockf)
1865 CPP_boolean_to_sh(MAIL_USE_LOCKING, mail_use_locking)
1866 CPP_boolean_to_sh(HAVE_WIN32_PROCESSES, win32_processes)
1867 EOF
1868
1869 dnl The value of CPP is a quoted variable reference, so we need to do this
1870 dnl to get its actual value...
1871 CPP=`eval "echo $CPP $CPPFLAGS"`
1872 define(TAB, [   ])dnl
1873 changequote(, )dnl
1874 eval `$CPP -Isrc $tempcname \
1875         | sed -n -e "s/[ TAB]*=[ TAB\"]*/='/" -e "s/[ TAB\"]*\$/'/" -e "s/^configure___//p"`
1876 changequote([, ])dnl
1877
1878 rm $tempcname
1879
1880 if test "$pdump" = "yes"; then
1881   ordinary_link="yes"
1882   ld="${ordinary_ld}"
1883   start_files=
1884   libs_standard=
1885   unexec=
1886   lib_gcc=
1887 fi
1888
1889 dnl For debugging...
1890 test "$extra_verbose" = "yes" && \
1891   PRINT_VAR(libs_machine libs_system libs_termcap libs_standard
1892   objects_machine objects_system c_switch_machine c_switch_system
1893   ld_switch_machine ld_switch_system unexec ld_switch_shared
1894   ld lib_gcc ld_text_start_addr start_files ordinary_link
1895   have_terminfo mail_use_flock mail_use_lockf) && echo ""
1896
1897 dnl Pick up mingw include path
1898 dnl We only cope with headers in mingw, not mingw32: no previous version of
1899 dnl XEmacs supported mingw and cygnus have made this incompatible change
1900 dnl so we just go with the flow.
1901 case "$opsys" in mingw* | cygwin*)
1902   cygwin_include=`eval gcc -print-search-dirs | sed -ne s'/install: //p'`
1903   cygwin_include=`eval "cd $cygwin_include/../../../..; pwd"`
1904   cygwin_include="-I$cygwin_include/include" ;
1905   extra_includes="$cygwin_include/mingw $cygwin_include" ;
1906   case "$opsys" in mingw*)
1907     XE_APPEND($extra_includes, c_switch_system) ;;
1908   esac
1909   ;;
1910 esac
1911
1912 dnl Non-ordinary link usually requires -lc
1913 test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc"
1914
1915 dnl -----------------------
1916 dnl Compiler-specific hacks
1917 dnl -----------------------
1918
1919 dnl DEC C `-std1' means ANSI C mode
1920 test "$__DECC" = "yes" && XE_APPEND(-std1, c_switch_site)
1921
1922 dnl Some versions of SCO native compiler need -Kalloca
1923 if test "$__USLC__" = yes; then
1924   AC_MSG_CHECKING(for whether the -Kalloca compiler flag is needed)
1925   need_kalloca=no
1926   AC_TRY_LINK([], [void *x = alloca(4);], [:], [
1927     xe_save_c_switch_system="$c_switch_system"
1928     c_switch_system="$c_switch_system -Kalloca"
1929     AC_TRY_LINK([], [void *x = alloca(4);], [ need_kalloca=yes ])
1930     c_switch_system="$xe_save_c_switch_system"])
1931   AC_MSG_RESULT($need_kalloca)
1932   test "$need_kalloca" = "yes" && XE_APPEND(-Kalloca,c_switch_system)
1933 fi
1934
1935 dnl Calculate value of CFLAGS:
1936 dnl Use either command line flag, environment var, or autodetection
1937 if test "$cflags_specified" = "no"; then
1938   dnl Following values of CFLAGS are known to work well.
1939   dnl Should we take debugging options into consideration?
1940   if   test "$GCC" = "yes"; then
1941     CFLAGS="-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes"
1942     dnl Yuck, bad compares have been worth at least 3 crashes!
1943     CFLAGS="$CFLAGS -Wsign-compare"
1944     dnl XEmacs is known not to be strict-aliasing-safe.
1945     case "`gcc -v --help 2>&1`" in
1946       *-fstrict-aliasing* ) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
1947     esac
1948     dnl You get five zillion shadowing warnings with g++.
1949     dnl Even with gcc, -Wshadow is questionable because of its complaints
1950     dnl about parameters with the same names as global functions.
1951     if test "$xemacs_compiler" != "g++"; then
1952       CFLAGS="$CFLAGS -Wshadow"
1953     fi
1954     dnl glibc is intentionally not `-Wpointer-arith'-clean.
1955     dnl Ulrich Drepper has rejected patches to fix the glibc header files.
1956     test "$have_glibc" != "yes" && CFLAGS="$CFLAGS -Wpointer-arith"
1957     dnl I'm not convinced this is a good idea any more. -sb
1958     dnl test "$opsys $machine" = "linux intel386" && \
1959     dnl CFLAGS="$CFLAGS -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2"
1960   elif test "$__SUNPRO_C" = "yes"; then
1961     case "$opsys" in
1962       sol2    ) CFLAGS="-v -xO4" ;;
1963       sunos4* ) CFLAGS="-xO2";;
1964     esac
1965   elif test "$__DECC" = "yes"; then
1966     CFLAGS="-O3"
1967   elif test "$CC" = "xlc"; then
1968     CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000"
1969   elif test "$__ICC" = "yes"; then
1970     CFLAGS="-g -O3 -Ob2 -Wall -W1"
1971   dnl ### Add optimal CFLAGS support for other compilers HERE!
1972   else
1973     CFLAGS="-O" ;dnl The only POSIX-approved flag
1974   fi
1975 fi
1976
1977 dnl Search for GCC specific build problems we know about
1978 if test "$GCC" = "yes"; then
1979 AC_MSG_CHECKING(for buggy gcc versions)
1980 GCC_VERSION=`$CC --version`
1981 case `uname -s`:`uname -m`:$GCC_VERSION in
1982         dnl egcs 2.90.21 (egcs-1.00 release)
1983         dnl egcs 2.90.29 (egcs-1.0.3 release)
1984     *:sun4*:2.8.1|*:sun4*:egcs-2.90.*)
1985         dnl Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures
1986         dnl without also using `-fno-schedule-insns'.
1987         case "$CFLAGS" in
1988             *-O2*|*-O3*)
1989                 case "$CFLAGS" in
1990                     *-fno-schedule-insns*) ;;
1991                     *)
1992                         AC_MSG_RESULT(yes)
1993                         AC_MSG_WARN(Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures)
1994                         AC_MSG_WARN(without also using -fno-schedule-insns.)
1995                         AC_MSG_ERROR(Aborting due to known problem)
1996                         ;;
1997                 esac
1998                 ;;
1999         esac
2000         ;;
2001         dnl egcs-2.91.57 (egcs-1.1 release)
2002         dnl egcs-2.91.66 (egcs-1.1.2 release)
2003     Linux:alpha:egcs-2.91.*)
2004         AC_MSG_RESULT(yes)
2005         AC_MSG_WARN(There have been reports of egcs-1.1 not compiling XEmacs correctly on)
2006         AC_MSG_WARN(Alpha Linux.  There have also been reports that egcs-1.0.3a is O.K.)
2007         AC_MSG_ERROR(Aborting due to known problem)
2008         ;;
2009     *:i*86*:2.7.2*)
2010         case "$CFLAGS" in
2011             *-O2*|*-O3*)
2012                 case "$GCC_VERSION" in
2013                     2.7.2)
2014                         case "$CFLAGS" in
2015                             *-fno-strength-reduce*) ;;
2016                             *)
2017                                 AC_MSG_RESULT(yes)
2018                                 AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using)
2019                                 AC_MSG_WARN(-fno-strength-reduce.)
2020                                 AC_MSG_ERROR(Aborting due to known problem)
2021                                 ;;
2022                         esac
2023                         ;;
2024                 esac
2025                 case "$CFLAGS" in
2026                  *-fno-caller-saves*) ;;
2027                  *)
2028                     AC_MSG_RESULT(yes)
2029                     AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using)
2030                     AC_MSG_WARN(-fno-caller-saves.)
2031                     AC_MSG_ERROR(Aborting due to known problem)
2032                     ;;
2033                 esac
2034                 ;;
2035         esac
2036         ;;
2037 esac
2038 AC_MSG_RESULT(no)
2039 fi
2040
2041 dnl GNU ld now defaults to combreloc, which screws up unexec, but not pdump.
2042 dnl Note that it's OK if the GNU style long option causes non-GNU ld to barf
2043 dnl a usage message, that's often good enough.  Please report it, though.
2044 dnl #### Should make this Solaris-friendly.
2045 dnl Link with -z nocombreloc for now.
2046 if test "$pdump" != "yes"; then
2047   AC_MSG_CHECKING(for \"-z nocombreloc\" linker flag)
2048   case "`ld --help 2>&1`" in
2049     *-z\ nocombreloc* ) AC_MSG_RESULT(yes)
2050       XE_PREPEND(-z nocombreloc, ld_switch_site) ;;
2051     *) AC_MSG_RESULT(no) ;;
2052   esac
2053 fi
2054
2055
2056 dnl Inform compiler that certain flags are meant for the linker
2057 dnl XE_PROTECT_LINKER_FLAGS(shell_var)
2058 define([XE_PROTECT_LINKER_FLAGS], [
2059 if test "$GCC" = "yes"; then
2060   set x $[$1]; shift; [$1]=""
2061   while test -n "[$]1"; do
2062     case [$]1 in
2063       -L  | -l  | -u               ) [$1]="$[$1] [$]1 [$]2"; shift ;;
2064       -L* | -l* | -u* | -Wl* | -pg ) [$1]="$[$1] [$]1" ;;
2065       -Xlinker* ) ;;
2066       * ) [$1]="$[$1] -Xlinker [$]1" ;;
2067     esac
2068     shift
2069   done
2070 fi])dnl
2071 XE_PROTECT_LINKER_FLAGS(ld_switch_system)
2072 XE_PROTECT_LINKER_FLAGS(ld_switch_machine)
2073 XE_PROTECT_LINKER_FLAGS(ld_switch_site)
2074 XE_PROTECT_LINKER_FLAGS(LDFLAGS)
2075 XE_PROTECT_LINKER_FLAGS(ld_call_shared)
2076
2077 dnl Add s&m-determined objects (including unexec) to link line
2078 test -n "$objects_machine" && XE_ADD_OBJS($objects_machine)
2079 test -n "$objects_system"  && XE_ADD_OBJS($objects_system)
2080 test -n "$unexec"          && test ! "$pdump" = "yes" && XE_ADD_OBJS($unexec)
2081 test "$pdump" = "yes" && XE_ADD_OBJS(dumper.o)
2082
2083 dnl Dynodump (Solaris 2.x, x<6)
2084 AC_MSG_CHECKING(for dynodump)
2085 if test "$unexec" != "unexsol2.o"; then
2086   AC_MSG_RESULT(no)
2087 else
2088   AC_MSG_RESULT(yes)
2089   AC_DEFINE(DYNODUMP)
2090   XE_APPEND(dynodump, MAKE_SUBDIR)
2091   XE_APPEND(dynodump, SRC_SUBDIR_DEPS)
2092   case "$machine" in
2093     sparc   ) dynodump_arch=sparc ;;
2094     *86*    ) dynodump_arch=i386  ;;
2095     powerpc ) dynodump_arch=ppc   ;;
2096   esac
2097 fi
2098
2099 dnl Feed s&m crud to src/Makefile
2100
2101 dnl Linux/powerpc needs the following magic for some reason
2102 dnl [Not needed with YellowDog 2.3 and causes link problems with YellowDog 3.0,
2103 dnl the two most popular PowerPC distributions.]
2104 dnl test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript"
2105
2106 if test "$unexec" = "unexaix.o"; then
2107 dnl AIX needs various hacks to make static linking work.
2108   if   test "$dynamic" = "no"; then
2109   start_flags="-Wl,-bnso,-bnodelcsect"
2110   test "$GCC" = "yes" && start_flags="-B/bin/ ${start_flags}"
2111   for f in "/lib/syscalls.exp" "/lib/threads.exp"; do
2112     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; fi
2113   done
2114   for f in "/usr/lpp/X11/bin/smt.exp" "/usr/bin/X11/smt.exp"; do
2115     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; break; fi
2116   done
2117   AC_CHECK_LIB(C, terminateAndUnload, XE_APPEND(-lC, libs_system))
2118   fi
2119 elif test -n "$ld_text_start_addr"; then
2120   start_flags="-T $ld_text_start_addr -e __start"
2121 fi
2122 AC_SUBST(start_flags)
2123
2124 AC_SUBST(ld_switch_shared)
2125 AC_SUBST(start_files)
2126 if test "$ordinary_link" = "no" -a "$GCC" = "yes"; then
2127  test -z "$linker" &&  linker='$(CC) -nostdlib'
2128  test -z "$lib_gcc" && lib_gcc='`$(CC) -print-libgcc-file-name`'
2129 fi
2130 test "$GCC" != "yes" && lib_gcc=
2131 AC_SUBST(ld)
2132 AC_SUBST(lib_gcc)
2133
2134 dnl ---------------------------------------------------------------
2135 dnl Add site and system specific flags to compile and link commands
2136 dnl ---------------------------------------------------------------
2137
2138 dnl Allow use of either ":" or spaces for lists of directories
2139 define(COLON_TO_SPACE,
2140   [case "$[$1]" in *:* [)] [$1]="`echo '' $[$1] | sed -e 's/^ //' -e 's/:/ /g'`";; esac])dnl
2141
2142 dnl --site-libraries (multiple dirs)
2143 COLON_TO_SPACE(site_libraries)
2144 if test -n "$site_libraries"; then
2145   for arg in $site_libraries; do
2146     case "$arg" in
2147      -* ) ;;
2148      * ) test -d "$arg" || \
2149            XE_DIE("Invalid site library \`$arg': no such directory")
2150        arg="-L${arg}" ;;
2151     esac
2152     XE_APPEND($arg, ld_switch_site)
2153   done
2154 fi
2155
2156 dnl --site-includes (multiple dirs)
2157 COLON_TO_SPACE(site_includes)
2158 if test -n "$site_includes"; then
2159   for arg in $site_includes; do
2160     case "$arg" in
2161       -* ) ;;
2162       * ) test -d "$arg" || \
2163            XE_DIE("Invalid site include \`$arg': no such directory")
2164       arg="-I${arg}" ;;
2165     esac
2166     XE_APPEND($arg, c_switch_site)
2167   done
2168 fi
2169
2170 dnl --site-prefixes (multiple dirs)
2171 dnl --site-prefixes=dir1:dir2 is a convenient shorthand for
2172 dnl --site-libraries=dir1/lib:dir2/lib --site-includes=dir1/include:dir2/include
2173 dnl Site prefixes take precedence over the standard places, but not over
2174 dnl site-includes and site-libraries.
2175 COLON_TO_SPACE(site_prefixes)
2176 if test -n "$site_prefixes"; then
2177   for dir in $site_prefixes; do
2178     lib_dir="${dir}/lib"
2179     inc_dir="${dir}/include"
2180     if test ! -d "$dir"; then
2181       XE_DIE("Invalid site prefix \`$dir': no such directory")
2182     elif test ! -d "$lib_dir"; then
2183       XE_DIE("Invalid site prefix \`$dir': no such directory \`$lib_dir'")
2184     else
2185       if test -d "$inc_dir"; then
2186         XE_APPEND("-I$inc_dir", c_switch_site)
2187       fi
2188       XE_APPEND("-L$lib_dir", ld_switch_site)
2189     fi
2190   done
2191 fi
2192
2193 dnl GNU software installs by default into /usr/local/{include,lib}
2194 dnl if test -d "/usr/local/include" -a -d "/usr/local/lib"; then
2195 dnl   XE_APPEND("-L/usr/local/lib",    ld_switch_site)
2196 dnl   XE_APPEND("-I/usr/local/include", c_switch_site)
2197 dnl fi
2198
2199 dnl Extra system-specific library directories - please add to list
2200 for dir in "/usr/ccs/lib"; do
2201   test -d "$dir" && XE_APPEND(-L${dir}, ld_switch_system)
2202 done
2203
2204 dnl --site-runtime-libraries (multiple dirs)
2205 COLON_TO_SPACE(site_runtime_libraries)
2206 if test -n "$site_runtime_libraries"; then
2207   LD_RUN_PATH="`echo $site_runtime_libraries | sed -e 's/  */:/g'`"
2208   export LD_RUN_PATH
2209 fi
2210
2211 dnl Linux systems have dynamic runtime library directories listed in
2212 dnl /etc/ld.so.conf.  Since those are used at run time, it seems pretty
2213 dnl safe to use them at link time, and less controversial than forcing
2214 dnl the run-time to use the link-time libraries.  This also helps avoid
2215 dnl mismatches between the link-time and run-time libraries.
2216
2217 dnl #### Unfortunately, there are horrible libc4 and libc5 libraries
2218 dnl listed in /etc/ld.so.conf on some systems, and including them on
2219 dnl the link path leads to linking in utterly broken libc's.
2220 dnl There are many clever ways of approaching this problem,
2221 dnl but finding one that actually works...
2222
2223 dnl if test -z "$LD_RUN_PATH" -a -r "/etc/ld.so.conf"; then
2224 dnl   for dir in `cat /etc/ld.so.conf`; do
2225 dnl     test -d "$dir" && XE_APPEND(-L${dir}, ld_switch_system)
2226 dnl   done
2227 dnl   add_runtime_path=no
2228 dnl fi
2229
2230 dnl -------------------------------------
2231 dnl Compute runtime library path
2232 dnl -------------------------------------
2233
2234 if test -n "$add_runtime_path"; then :;
2235 elif test "$dynamic" = "no"; then add_runtime_path=no
2236 elif test -n "$LD_RUN_PATH"; then add_runtime_path=yes
2237 else case "$opsys" in
2238        sol2 | irix* | *bsd* | decosf* ) add_runtime_path=yes ;;
2239        * ) add_runtime_path=no ;;
2240      esac
2241 fi
2242
2243 if test "$add_runtime_path" = "yes"; then
2244   dnl Try to autodetect runtime library flag (usually -R),
2245   dnl and whether it works (or at least does no harm)
2246   AC_MSG_CHECKING("for runtime libraries flag")
2247   case "$opsys" in
2248     sol2 ) dash_r="-R" ;;
2249     decosf* | linux* | irix*) dash_r="-rpath " ;;
2250     *)
2251       dash_r=""
2252       for try_dash_r in "-R" "-R " "-rpath "; do
2253         xe_check_libs="${try_dash_r}/no/such/file-or-directory"
2254         XE_PROTECT_LINKER_FLAGS(xe_check_libs)
2255         AC_TRY_LINK(, , dash_r="$try_dash_r")
2256         xe_check_libs=""
2257         test -n "$dash_r" && break
2258       done ;;
2259   esac
2260   if test -n "$dash_r";
2261     then AC_MSG_RESULT("\"${dash_r}\"")
2262     else AC_MSG_RESULT(NONE)
2263   fi
2264 fi
2265
2266 xe_add_unique_runpath_dir='
2267   xe_add_p=yes
2268   for xe_dir in $runpath_dirs; do   dnl Uniquify
2269     test "$xe_dir" = "$xe_runpath_dir" && xe_add_p=no
2270   done
2271   if test "$xe_add_p" = "yes"; then
2272     test -n "$runpath" && runpath="${runpath}:"
2273     runpath="${runpath}${xe_runpath_dir}"
2274     runpath_dirs="$runpath_dirs $xe_runpath_dir"
2275   fi'
2276
2277
2278 dnl XE_ADD_RUNPATH_DIR(directory)
2279 define([XE_ADD_RUNPATH_DIR],[{
2280 xe_runpath_dir=$1
2281 dnl PRINT_VAR(ld_switch_site ld_switch_x_site runpath xe_runpath_dir LD_RUN_PATH xe_ldflags)
2282   test "$xe_runpath_dir" != "/lib"     -a \
2283         "$xe_runpath_dir" != "/usr/lib" -a \
2284         -n "`ls ${xe_runpath_dir}/*.s[[ol]] 2>/dev/null`" && \
2285   eval "$xe_add_unique_runpath_dir"
2286 }])dnl
2287
2288 dnl XE_COMPUTE_RUNPATH()
2289 define([XE_COMPUTE_RUNPATH],[
2290 if test "$add_runtime_path" = "yes" -a -n "$dash_r"; then
2291   dnl Remove runtime paths from current ld switches
2292   ld_switch_site=`echo   '' $ld_switch_site   | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
2293   ld_switch_x_site=`echo '' $ld_switch_x_site | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
2294   dnl PRINT_VAR(ld_switch_site ld_switch_x_site)
2295
2296   dnl Fix up Runtime path
2297   dnl If LD_RUN_PATH is set in environment, use that.
2298   dnl In this case, assume user has set the right value.
2299   runpath="" runpath_dirs=""
2300   if test -n "$LD_RUN_PATH"; then
2301     runpath="$LD_RUN_PATH"
2302   elif test "$GCC" = "yes"; then
2303     dnl Compute runpath from gcc's -v output
2304     ld_switch_run_save="$ld_switch_run"; ld_switch_run=""
2305     echo "int main(int argc, char *argv[[]]) {return 0;}" > conftest.c
2306     xe_runpath_link='${CC-cc} -o conftest -v $CFLAGS '"$xe_ldflags"' conftest.$ac_ext 2>&1 1>/dev/null'
2307     for arg in `eval "$xe_runpath_link" | grep ' -L'`; do
2308       case "$arg" in P,* | -L* | -R* )
2309         for dir in `echo '' "$arg" | sed -e 's:^ ::' -e 's/^..//' -e 'y/:/ /'`; do
2310           XE_ADD_RUNPATH_DIR("$dir")
2311         done ;;
2312       esac
2313     done
2314     ld_switch_run="$ld_switch_run_save"
2315     rm -f conftest*
2316   else
2317     dnl Add all directories with .so files to runpath
2318     for arg in $ld_switch_site $ld_switch_x_site; do
2319       case "$arg" in -L*) XE_ADD_RUNPATH_DIR(`echo '' "$arg" | sed -e 's:^ ::' -e 's/^-L//'`);; esac
2320     done
2321     dnl Sometimes /opt/SUNWdt/lib is the only installed Motif available
2322     dnl #### this test always fails here as need_motif is null
2323     if test "$opsys $need_motif" = "sol2 yes"; then
2324       xe_runpath_dir="/opt/SUNWdt/lib";
2325       eval "$xe_add_unique_runpath_dir";
2326     fi
2327   fi dnl Compute $runpath
2328
2329   if test -n "$runpath"; then
2330     ld_switch_run="${dash_r}${runpath}"
2331     XE_PROTECT_LINKER_FLAGS(ld_switch_run)
2332     test "$extra_verbose" = "yes" && echo "Setting runpath to $runpath"
2333   fi
2334 fi
2335 ])dnl
2336 XE_COMPUTE_RUNPATH()
2337
2338 dnl -----------------------------------
2339 dnl Do some misc autoconf-special tests
2340 dnl -----------------------------------
2341
2342 dnl Do the opsystem or machine files prohibit the use of the GNU malloc?
2343 dnl Assume not, until told otherwise.
2344 GNU_MALLOC=yes
2345 if test "$with_dlmalloc" != "no"; then
2346         doug_lea_malloc=yes
2347 else
2348         doug_lea_malloc=no
2349 fi
2350 after_morecore_hook_exists=yes
2351 AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
2352 AC_MSG_CHECKING(whether __after_morecore_hook exists)
2353 AC_TRY_LINK([extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0],
2354   [AC_MSG_RESULT(yes)],
2355   [AC_MSG_RESULT(no)
2356    after_morecore_hook_exists=no])
2357 if test "$system_malloc" = "yes" ; then
2358   GNU_MALLOC=no
2359   GNU_MALLOC_reason="
2360     - The GNU allocators don't work with this system configuration."
2361 elif test "$with_system_malloc" = "yes" ; then
2362   GNU_MALLOC=no
2363   GNU_MALLOC_reason="
2364     - User chose not to use GNU allocators."
2365 elif test "$with_debug_malloc" = "yes" ; then
2366   GNU_MALLOC=no
2367   GNU_MALLOC_reason="
2368     - User chose to use Debugging Malloc."
2369 fi
2370
2371 if test "$doug_lea_malloc" = "yes" -a "$GNU_MALLOC" = "yes" ; then
2372   GNU_MALLOC_reason="
2373     - Using Doug Lea's new malloc from the GNU C Library."
2374   AC_DEFINE(DOUG_LEA_MALLOC)
2375   if test "$after_morecore_hook_exists" = "no" ; then
2376     GNU_MALLOC_reason="
2377     - Using Doug Lea's new malloc from the Linux C Library."
2378     AC_DEFINE(_NO_MALLOC_WARNING_)
2379   fi
2380 fi
2381
2382 dnl #### mcheck is broken in all versions of Linux libc and glibc.
2383 dnl Try this again when 2.1 hits the streets.
2384 dnl Avoid using free-hook.c if support exists for malloc debugging in libc
2385 dnl have_libmcheck=no
2386 dnl if test "$error_check_malloc" = "yes" -a \
2387 dnl    "$have_glibc" = "yes" -a \
2388 dnl    "$doug_lea_malloc" = "yes"; then
2389 dnl   AC_CHECK_HEADERS(mcheck.h)
2390 dnl   AC_CHECK_LIB(mcheck, mcheck, have_libmcheck=yes, have_libmcheck=no)
2391 dnl fi
2392
2393 dnl if test "$have_libmcheck" = "yes"; then
2394 dnl   AC_DEFINE(HAVE_LIBMCHECK)
2395 dnl   libmcheck=-lmcheck
2396 dnl   AC_SUBST(libmcheck)
2397 dnl fi
2398
2399 dnl Some other nice autoconf tests.  If you add a test here which
2400 dnl should make an entry in src/config.h, do not forget to add an
2401 dnl #undef clause to src/config.h.in for autoconf to modify.
2402
2403 AC_PROG_RANLIB
2404 AC_PROG_INSTALL
2405 AC_PROG_YACC
2406
2407 dnl checks for header files
2408 AC_CHECK_HEADERS(dnl
2409   a.out.h dnl
2410   elf.h dnl
2411   cygwin/version.h dnl
2412   fcntl.h dnl
2413   inttypes.h dnl
2414   libgen.h dnl
2415   locale.h dnl
2416   mach/mach.h dnl
2417   sys/param.h dnl
2418   sys/pstat.h dnl
2419   sys/time.h dnl
2420   sys/timeb.h dnl
2421   sys/un.h dnl
2422   ulimit.h dnl
2423   unistd.h dnl
2424 )
2425 AC_HEADER_SYS_WAIT
2426 AC_HEADER_STDC
2427 AC_HEADER_TIME
2428 AC_DECL_SYS_SIGLIST
2429
2430
2431 dnl ----------------------------------------------------------------
2432 dnl Checking for utime() or utimes().
2433 dnl We prefer utime, since it is more standard.
2434 dnl Some systems have utime.h but do not declare the struct anyplace,
2435 dnl so we use a more sophisticated test for utime than AC_CHECK_FUNCS.
2436 dnl ----------------------------------------------------------------
2437 AC_MSG_CHECKING(for utime)
2438 AC_TRY_COMPILE([#include <sys/types.h>
2439 #include <utime.h>],
2440 [struct utimbuf x; x.actime = x.modtime = 0; utime ("/", &x);],
2441   [AC_MSG_RESULT(yes)
2442    AC_DEFINE(HAVE_UTIME)],
2443   [AC_MSG_RESULT(no)
2444    dnl We don't have utime(); how about utimes()?
2445    AC_CHECK_FUNCS(utimes)])
2446
2447
2448 dnl checks for typedefs
2449 AC_TYPE_SIGNAL
2450 AC_TYPE_SIZE_T
2451 AC_TYPE_PID_T
2452 AC_TYPE_UID_T
2453 AC_TYPE_MODE_T
2454 AC_TYPE_OFF_T
2455 AC_CHECK_TYPE(ssize_t, int)
2456
2457 dnl check for Unix98 socklen_t
2458 AC_MSG_CHECKING(for socklen_t)
2459 AC_TRY_COMPILE([#include <sys/types.h>
2460 #include <sys/socket.h>
2461 socklen_t x;
2462 ],[],[AC_MSG_RESULT(yes)],[
2463 AC_TRY_COMPILE([#include <sys/types.h>
2464 #include <sys/socket.h>
2465 int accept (int, struct sockaddr *, size_t *);
2466 ],[],[
2467 AC_MSG_RESULT(size_t)
2468 AC_DEFINE(socklen_t,size_t)], [
2469 AC_MSG_RESULT(int)
2470 AC_DEFINE(socklen_t,int)])])
2471
2472 AC_MSG_CHECKING(for struct timeval)
2473 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2474 #include <sys/time.h>
2475 #include <time.h>
2476 #else
2477 #ifdef HAVE_SYS_TIME_H
2478 #include <sys/time.h>
2479 #else
2480 #include <time.h>
2481 #endif
2482 #endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
2483   [AC_MSG_RESULT(yes)
2484   HAVE_TIMEVAL=yes
2485   AC_DEFINE(HAVE_TIMEVAL)],
2486   [AC_MSG_RESULT(no)
2487    HAVE_TIMEVAL=no])
2488
2489 dnl checks for structure members
2490 AC_STRUCT_TM
2491 AC_STRUCT_TIMEZONE
2492
2493 dnl checks for compiler characteristics
2494 AC_C_CONST
2495
2496 dnl check for Make feature
2497 AC_PROG_MAKE_SET
2498
2499 dnl check byte order
2500 AC_C_BIGENDIAN
2501
2502 dnl define SIZEOF_TYPE
2503 AC_CHECK_SIZEOF(short)
2504 if test "$ac_cv_sizeof_short" = 0; then
2505   echo ""
2506   echo "*** PANIC *** Configure tests are not working - compiler is broken."
2507   echo "*** PANIC *** Please examine config.log for compilation errors."
2508   exit 1
2509 fi
2510 AC_CHECK_SIZEOF(int)
2511 AC_CHECK_SIZEOF(long)
2512 AC_CHECK_SIZEOF(long long)
2513 AC_CHECK_SIZEOF(void *)
2514
2515 dnl Cygwin from 1003022 has intptr_t, uintptr_t in <cygwin/types.h>
2516 case $opsys in
2517   cygwin* ) AC_EGREP_HEADER([typedef.*intptr_t;], [cygwin/types.h],
2518                             [AC_MSG_RESULT(yes)
2519                              AC_DEFINE(INTPTR_T_IN_CYGWIN_TYPES_H,1)],
2520                             [AC_MSG_RESULT(no)]) ;;
2521 esac
2522
2523 dnl check for long file names
2524 AC_SYS_LONG_FILE_NAMES
2525
2526 dnl -lm is required by LISP_FLOAT_TYPE, among other things
2527 AC_CHECK_FUNC(sin, ,AC_CHECK_LIB(m, sin))
2528
2529 dnl Floating operation support is now unconditional
2530 AC_DEFINE(LISP_FLOAT_TYPE)
2531
2532 AC_TRY_LINK([#include <math.h>],
2533   [return atanh(1.0) + asinh(1.0) + acosh(1.0); ],
2534   AC_DEFINE(HAVE_INVERSE_HYPERBOLIC))
2535
2536 dnl Determine type of mail locking from configure args and s&m headers
2537 AC_CHECKING(type of mail spool file locking)
2538 AC_CHECK_FUNCS(lockf flock)
2539 dnl The mail_use_xxx variables are set according to the s&m headers.
2540 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
2541 test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
2542 test -z "$mail_locking" -a "$mail_use_locking" = "yes" && mail_locking=locking
2543 if   test -z "$mail_locking"; then
2544   case "$opsys" in cygwin* | mingw*)
2545     mail_locking=pop ;;
2546   esac
2547 fi
2548
2549 if   test "$mail_locking" = "lockf"; then AC_DEFINE(MAIL_LOCK_LOCKF)
2550 elif test "$mail_locking" = "flock"; then AC_DEFINE(MAIL_LOCK_FLOCK)
2551 elif test "$mail_locking" = "locking"; then AC_DEFINE(MAIL_LOCK_LOCKING)
2552 elif test "$mail_locking" = "pop"; then
2553   with_pop=yes
2554   mail_locking=
2555 else mail_locking="dot-locking"; AC_DEFINE(MAIL_LOCK_DOT)
2556 fi
2557 test "$mail_locking" = "lockf" -a "$ac_cv_func_lockf" != "yes" && \
2558   XE_DIE("lockf mail locking requested but not available.")
2559 test "$mail_locking" = "flock" -a "$ac_cv_func_flock" != "yes" && \
2560   XE_DIE("flock mail locking requested but not available.")
2561 test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \
2562   XE_DIE("locking mail locking requested but not available.")
2563
2564 case "$opsys" in decosf*)
2565   AC_CHECK_LIB(pthreads, cma_open)
2566   test "$ac_cv_lib_pthreads_cma_open" = "yes" && \
2567     c_switch_site="$c_switch_site -threads" ;;
2568 esac
2569
2570 dnl ----------------------------------------------------------------
2571 dnl Miscellaneous flags
2572 dnl ----------------------------------------------------------------
2573
2574 AC_MSG_CHECKING(whether the -xildoff compiler flag is required)
2575 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
2576   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
2577     then AC_MSG_RESULT(no);
2578     else AC_MSG_RESULT(yes); XE_APPEND(-xildoff, ld_switch_site)
2579   fi
2580   else AC_MSG_RESULT(no)
2581 fi
2582
2583 dnl Link with "-z ignore" on Solaris if supported
2584 if test "$opsys" = "sol2"; then
2585   if test "$os_release" -ge 506; then
2586     AC_MSG_CHECKING(for \"-z ignore\" linker flag)
2587     case "`ld -h 2>&1`" in
2588       *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
2589         XE_PREPEND(-z ignore, ld_switch_site) ;;
2590       *) AC_MSG_RESULT(no) ;;
2591     esac
2592   fi
2593 fi
2594
2595 dnl ----------------------
2596 dnl Choose a window system
2597 dnl ----------------------
2598
2599 AC_CHECKING("for specified window system")
2600
2601 dnl Autodetection of Gdk libraries and includes
2602 dnl -------------------------------------------
2603 dnl On some systems (FreeBSD springs to mind), they use
2604 dnl versions on the utility routines, so instead of gtk-config
2605 dnl you must use gtk12-config, etc, etc.
2606
2607 GNOME_CONFIG=no
2608 GTK_CONFIG=no
2609
2610 if test "$with_gnome" != "no"; then
2611    AC_MSG_CHECKING(for GNOME configuration script)
2612    for possible in gnome-config
2613    do
2614       possible_version=`${possible} --version 2> /dev/null`
2615       if test "x${possible_version}" != "x"; then
2616               GNOME_CONFIG="${possible}"
2617               with_gnome=yes
2618               with_gtk=yes
2619               break
2620       fi
2621    done
2622    AC_MSG_RESULT([${GNOME_CONFIG}])
2623 fi
2624
2625 if test "${GNOME_CONFIG}" != "no"; then
2626       GNOME_LIBS=`${GNOME_CONFIG} --libs gnomeui`
2627       GNOME_CFLAGS=`${GNOME_CONFIG} --cflags gnomeui`
2628       AC_DEFINE(HAVE_GNOME)
2629       XE_APPEND(${GNOME_LIBS}, libs_gtk)
2630       XE_APPEND(${GNOME_CFLAGS}, c_switch_gtk)
2631 fi
2632
2633 if test "$with_gtk" != "no";then
2634    AC_MSG_CHECKING(for GTK configuration script)
2635    for possible in gtk12-config gtk14-config gtk-config
2636    do
2637       possible_version=`${possible} --version 2> /dev/null`
2638       if test "x${possible_version}" != "x"; then
2639               GTK_CONFIG="${possible}"
2640               case "${possible_version}" in
2641                 1.0.*) AC_MSG_WARN([GTK 1.2 is required, please upgrade your version of GTK.]); with_gtk=no;;
2642                 1.3.*) AC_MSG_WARN([GTK 1.3 is not supported right now]); with_gtk=no;;
2643                 1.2.*)
2644                         with_gtk=yes
2645                         break
2646                         ;;
2647                 *)     AC_MSG_WARN([Found unsupported version of GTK: $possible_version]);;
2648               esac
2649       fi
2650    done
2651    AC_MSG_RESULT([${GTK_CONFIG}])
2652 fi
2653
2654 if test "${GTK_CONFIG}" != "no"; then
2655       AC_MSG_CHECKING(gtk version)
2656       GTK_VERSION=`${GTK_CONFIG} --version`
2657       AC_MSG_RESULT(${GTK_VERSION})
2658
2659       AC_MSG_CHECKING(gtk libs)
2660       GTK_LIBS=`${GTK_CONFIG} --libs`
2661       XE_APPEND(${GTK_LIBS}, libs_gtk)
2662       AC_MSG_RESULT(${GTK_LIBS})
2663
2664       AC_MSG_CHECKING(gtk cflags)
2665       GTK_CFLAGS=`${GTK_CONFIG} --cflags`
2666       if test "$GCC" = "yes"; then
2667         GTK_CFLAGS="${GTK_CFLAGS} -Wno-shadow"
2668       fi
2669       XE_APPEND(${GTK_CFLAGS}, c_switch_gtk)
2670       AC_MSG_RESULT(${GTK_CFLAGS})
2671
2672       AC_CHECK_LIB(gdk_imlib, main, XE_PREPEND(-lgdk_imlib, libs_gtk))
2673       AC_CHECK_LIB(Imlib, Imlib_init, XE_APPEND(-lImlib, libs_gtk))
2674       AC_CHECK_FUNCS(gdk_imlib_init)
2675
2676       AC_DEFINE(HAVE_XPM)
2677       AC_DEFINE(HAVE_GTK)
2678       AC_SUBST(GTK_CONFIG)
2679
2680       window_system=gtk
2681       with_gtk=yes
2682       with_x11=no
2683
2684       test "${with_scrollbars}" != "no" && with_scrollbars=gtk
2685       test "${with_toolbars}" != no && with_toolbars=gtk
2686       test "${with_menubars}" != "no" && with_menubars=gtk
2687       test "${with_dialogs}" != "no" && with_dialogs=gtk
2688       test "${with_widgets}" != "no" && with_widgets=gtk
2689
2690       XE_ADD_OBJS(console-gtk.o device-gtk.o event-gtk.o frame-gtk.o)
2691       XE_ADD_OBJS(objects-gtk.o redisplay-gtk.o glyphs-gtk.o)
2692       XE_ADD_OBJS(select-gtk.o gccache-gtk.o)
2693       XE_ADD_OBJS(gtk-xemacs.o ui-gtk.o)
2694
2695       dnl Check for libglade support (it rocks)
2696       OLD_CFLAGS="${CFLAGS}"
2697       OLD_CPPFLAGS="${CPPFLAGS}"
2698       OLD_LDFLAGS="${LDFLAGS}"
2699       CFLAGS="${GTK_CFLAGS} ${CFLAGS}"
2700       CPPFLAGS="${GTK_CFLAGS} ${CFLAGS}"
2701       LDFLAGS="${LDFLAGS} ${GTK_LIBS}"
2702       AC_CHECK_HEADERS(glade/glade.h glade.h)
2703       AC_CHECK_LIB(xml, main, XE_PREPEND(-lxml, libs_gtk))
2704       AC_CHECK_LIB(glade, main, XE_PREPEND(-lglade, libs_gtk))
2705       AC_CHECK_LIB(glade-gnome, main, XE_PREPEND(-lglade-gnome, libs_gtk))
2706       AC_EGREP_HEADER([char \*txtdomain;], [glade/glade-xml.h],
2707                       [AC_MSG_RESULT(yes)
2708                        AC_DEFINE(LIBGLADE_XML_TXTDOMAIN,1)],
2709                       [AC_MSG_RESULT(no)])
2710       CFLAGS="${OLD_CFLAGS}"
2711       CPPFLAGS="${OLD_CPPFLAGS}"
2712       LDFLAGS="${OLD_LDFLAGS}"
2713 fi
2714
2715 dnl We may eventually prefer gtk/gdk over vanilla X11...
2716
2717 if test "$with_x11" != "no"; then
2718   dnl User-specified --x-includes or --x-libraries implies --with-x11.
2719   test "$x_includes $x_libraries" != "NONE NONE" && \
2720    window_system=x11 with_x11=yes
2721
2722   dnl Autodetection of X11 libraries and includes
2723   dnl -------------------------------------------
2724   dnl AC_PATH_XTRA thinks it can find our X headers and includes, but
2725   dnl it often gets it wrong, so we only use it as a last resort.
2726
2727   dnl $OPENWINHOME implies --x-includes and --x-libraries
2728   dnl Not (yet) handled by autoconf2
2729   if test "$x_includes $x_libraries" = "NONE NONE" \
2730     -a -n "$OPENWINHOME" \
2731     -a "$OPENWINHOME" != "/usr/openwin" \
2732     -a -d "$OPENWINHOME"; then
2733       test -d "$OPENWINHOME/lib"           && x_libraries="$OPENWINHOME/lib"
2734       test -d "$OPENWINHOME/include"       && x_includes="$OPENWINHOME/include"
2735       test -d "$OPENWINHOME/share/include" && x_includes="$OPENWINHOME/share/include"
2736   fi
2737
2738   if test "$x_includes" = "NONE"; then
2739     dnl AC_PATH_XTRA often guesses /usr/include, when some other
2740     dnl include directory is a MUCH better guess (Linux, HP-UX 10.20).
2741     dnl This is a workaround for idiot (esp. HP) system vendors, who
2742     dnl provide a /usr/include/X11, but DON'T FULLY POPULATE IT.
2743     for dir in "/usr/X11" "/usr/X11R6"; do
2744       if test -d "$dir/include/X11"; then x_includes="$dir/include"; break; fi
2745     done
2746   fi
2747
2748   if test "$x_libraries" = "NONE"; then
2749     for dir in "/usr/X11/lib" "/usr/X11R6/lib" "/usr/lib/X11R6"; do
2750       if test -r "$dir/libX11.a" -o -r "$dir/libX11.dylib"; then x_libraries="$dir"; break; fi
2751     done
2752   fi
2753
2754   AC_PATH_XTRA # Autoconf claims to find X library and include dirs for us.
2755   if test "$no_x" = "yes"
2756   then with_x11=no  window_system=none HAVE_X_WINDOWS=no
2757   else with_x11=yes window_system=x11  HAVE_X_WINDOWS=yes
2758   fi
2759 fi
2760
2761 dnl #### wmperry:: !x11 != NONE
2762 dnl case "$with_x11" in
2763 dnl  yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
2764 dnl  no  ) window_system=none HAVE_X_WINDOWS=no  ;;
2765 dnl esac
2766
2767 if test "$with_x11" = "yes"; then
2768   AC_DEFINE(HAVE_X_WINDOWS)
2769   XE_APPEND(lwlib, MAKE_SUBDIR)
2770   XE_APPEND(lwlib, SRC_SUBDIR_DEPS)
2771
2772
2773   dnl Look for Motif, but only if not found in $x_includes and $x_libraries
2774   AC_CHECK_HEADER(Xm/Xm.h, [AC_CHECK_LIB(Xm, XmStringFree, got_motif=yes)])
2775
2776   if test "$got_motif" != "yes"; then
2777     dnl Try to find Motif/CDE/Tooltalk dirs
2778     dnl These take precedence over other X libs/includes, so PRE-pend
2779     for lib_dir in "/usr/dt/lib" "/usr/lib/Motif2.1" \
2780                    "/usr/lib/Motif1.2" "/usr/lib/Motif1.1"; do
2781       inc_dir=`echo $lib_dir | sed -e 's/lib/include/'`
2782       if test -d "$lib_dir" -a -d "$inc_dir"; then
2783         case "$x_libraries" in *"$lib_dir"* ) ;; *)
2784           x_libraries="$lib_dir $x_libraries"
2785           XE_PREPEND(-L${lib_dir}, X_LIBS) ;;
2786         esac
2787         case "$x_includes" in "$inc_dir"* ) ;; *)
2788           x_includes="$inc_dir $x_includes"
2789           XE_PREPEND(-I${inc_dir}, X_CFLAGS) ;;
2790         esac
2791         break; dnl only need ONE Motif implementation!
2792         fi
2793     done
2794   fi
2795
2796   dnl Contrib X libs/includes do NOT take precedence, so AP-pend
2797   for rel in "X11R6" "X11R5" "X11R4"; do
2798     lib_dir="/usr/contrib/$rel/lib" inc_dir="/usr/contrib/$rel/include"
2799     if test -d "$lib_dir" -a -d "$inc_dir"; then
2800       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2801         x_libraries="$x_libraries $lib_dir"
2802         XE_APPEND(-L${lib_dir}, X_LIBS)
2803       esac
2804       case "$x_includes" in "$inc_dir"* ) ;; *)
2805         x_includes="$x_includes $inc_dir"
2806         XE_APPEND(-I${inc_dir}, X_CFLAGS)
2807       esac
2808       break; dnl Only need ONE X11 implementation !
2809     fi
2810   done
2811
2812   dnl Avoid version mismatch for shared library libXm.so on osf4
2813   case "$opsys" in
2814   decosf*) if test "$GCC" = yes -a -d /usr/shlib; then XE_APPEND(-L/usr/shlib, X_LIBS); fi ;;
2815   esac
2816
2817   ld_switch_x_site="$X_LIBS"
2818
2819   XE_COMPUTE_RUNPATH()
2820
2821   if test "$extra_verbose" = "yes"; then
2822     echo; echo "X11 compilation variables:"
2823     PRINT_VAR(x_libraries x_includes X_CFLAGS X_LIBS X_PRE_LIBS X_EXTRA_LIBS)
2824     echo
2825   fi
2826
2827   dnl Set up bitmaps search path.
2828   dnl The original suggestion was to unconditionally to append X11/bitmaps
2829   dnl to each element of $x_includes, I'm pretty sure this is the wrong
2830   dnl thing to do.  We test for bitmaps and X11/bitmaps directories on each
2831   dnl element and add them to BITMAPDIR if they exist.
2832   bitmapdirs=
2833   if test "$x_includes" != NONE; then
2834     for i in $x_includes; do
2835       if test -d "$i/bitmaps"; then
2836         bitmapdirs="$i/bitmaps:$bitmapdirs"
2837       fi
2838       if test -d "$i/X11/bitmaps"; then
2839         bitmapdirs="$i/X11/bitmaps:$bitmapdirs"
2840       fi
2841     done
2842     bitmapdirs=`echo "$bitmapdirs" | sed s/.$//`
2843   fi
2844   test ! -z "$bitmapdirs" && AC_DEFINE_UNQUOTED(BITMAPDIR, "$bitmapdirs")
2845
2846   dnl Autodetect defines extracted from X config by xmkmf, e.g. NARROWPROTO
2847   AC_CHECKING(for X defines extracted by xmkmf)
2848   rm -fr conftestdir
2849   if mkdir conftestdir; then
2850     cd conftestdir
2851     cat > Imakefile <<'EOF'
2852 xetest:
2853         @echo ${PROTO_DEFINES} ${STD_DEFINES}
2854 EOF
2855     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2856       # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2857       xmkmf_defines=`${MAKE-make} xetest 2>/dev/null | grep -v make`
2858     fi
2859     cd ..
2860     rm -fr conftestdir
2861     for word in $xmkmf_defines; do
2862       case "$word" in 
2863       -D__STDC__*) ;;
2864       -D* )
2865         sym=`echo '' $word | sed -e 's:^ *-D::' -e 's:=.*::'`
2866         case "$word" in
2867           -D*=* ) val=`echo '' $word | sed -e 's:^.*=::'` ;;
2868           *     ) val=1 ;;
2869         esac
2870 dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above.
2871         if grep "^#define $sym " confdefs.h >/dev/null; then :; else
2872           if test "$val" = "1"
2873             then AC_DEFINE_UNQUOTED($sym)
2874             else AC_DEFINE_UNQUOTED($sym,$val)
2875           fi
2876         fi  ;;
2877       esac
2878     done
2879   fi
2880
2881   dnl make sure we can find Intrinsic.h
2882   AC_CHECK_HEADER(X11/Intrinsic.h, ,
2883    [AC_MSG_ERROR("Unable to find X11 header files.")])
2884
2885   dnl -lXt and -lX11 are required
2886   dnl Some broken systems require the magic "-b i486-linuxaout" flag
2887   AC_CHECK_LIB(X11, XOpenDisplay, have_lib_x11=yes)
2888   if test "$have_lib_x11" != "yes"; then
2889     AC_CHECK_LIB(X11, XGetFontProperty,
2890       ld_switch_x_site="-b i486-linuxaout $ld_switch_x_site",
2891       [AC_MSG_ERROR("Unable to find X11 libraries.")],
2892       -b i486-linuxaout)
2893   fi
2894   libs_x="-lX11"
2895   test "$extra_verbose" = "yes" && echo "    Setting libs_x to \"-lX11\""
2896
2897   dnl Autodetect -lXext
2898   AC_CHECK_LIB(Xext, XShapeSelectInput, XE_PREPEND(-lXext, libs_x))
2899
2900   dnl Require -lXt
2901   AC_CHECK_LIB(Xt, XtOpenDisplay, XE_PREPEND(-lXt, libs_x),
2902     AC_MSG_ERROR("Unable to find X11 libraries."))
2903
2904   AC_MSG_CHECKING(the version of X11 being used)
2905   AC_TRY_RUN([#include <X11/Intrinsic.h>
2906     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }],
2907     [./conftest foobar; x11_release=$?],[x11_release=4],[x11_release=4])
2908   AC_MSG_RESULT(R${x11_release})
2909   AC_DEFINE_UNQUOTED(THIS_IS_X11R${x11_release})
2910
2911   if test "${x11_release}" = "4"; then
2912     case "$with_widgets" in
2913       "" | "no") with_widgets=no ;;
2914       *) XE_DIE("Widget support requires X11R5 or greater") ;;
2915     esac
2916   fi
2917
2918   AC_CHECK_FUNCS(XConvertCase XtRegisterDrawable)
2919
2920   AC_CHECK_HEADERS(X11/Xlocale.h)
2921
2922   dnl XFree86 has a non-standard prototype for this X11R6 function
2923   AC_CHECK_FUNCS(XRegisterIMInstantiateCallback)
2924   AC_MSG_CHECKING(for standard XRegisterIMInstantiateCallback prototype)
2925   AC_TRY_COMPILE([
2926 #define NeedFunctionPrototypes 1
2927 #include <X11/Xlib.h>
2928 extern Bool XRegisterIMInstantiateCallback(
2929    Display*, struct _XrmHashBucketRec*, char*, char*, XIMProc, XPointer*);
2930 ], [], 
2931   [AC_MSG_RESULT(yes)],
2932   [AC_MSG_RESULT(no)
2933    AC_DEFINE(XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE)])
2934
2935   dnl autodetect -lXmu
2936   test -z "$with_xmu" && { AC_CHECK_LIB(Xmu, XmuReadBitmapDataFromFile,
2937                            with_xmu=yes, with_xmu=no) }
2938   if test "$with_xmu" = "no"; then
2939     XE_ADD_OBJS(xmu.o)
2940   else
2941     XE_PREPEND(-lXmu, libs_x)
2942     AC_DEFINE(HAVE_XMU)
2943   fi
2944
2945   dnl Autodetect -lXbsd
2946   dnl #### Someone, please add a better function than main
2947   AC_CHECK_LIB(Xbsd, main, XE_PREPEND(-lXbsd, libs_x))
2948
2949   dnl Problem with the MIT distribution of X on AIX
2950   if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then
2951     dnl X11R6 requires thread-safe code on AIX for some reason
2952     if test "$GCC" = "yes"; then
2953       dnl gcc changed the name of the `-mthreads' option to `-pthread'
2954       dnl on 2000-06-12
2955       AC_MSG_CHECKING(for name of AIX gcc threads option)
2956       case `$CC -v --help 2>&1` in
2957         *-mthreads*) aix_threads=-mthreads ;;
2958                   *) aix_threads=-pthread  ;;
2959       esac
2960       AC_MSG_RESULT($aix_threads)
2961       XE_PREPEND($aix_threads, X_CFLAGS)
2962       XE_PREPEND($aix_threads, libs_x)
2963     else
2964       dnl Try to use the thread-safe "_r" versions of xlc
2965       case "$CC" in *_r) : ;;
2966         *)
2967          xe_save_CC="$CC"
2968          CC="${CC}_r"
2969          AC_CHECK_SIZEOF(short)
2970          test "$ac_cv_sizeof_short" = 0 && CC="$xe_save_CC" ;;
2971       esac
2972     fi
2973   fi
2974
2975 fi dnl $with_x11 = yes
2976
2977 if test "$with_msw" != "no"; then
2978   AC_CHECKING(for MS-Windows)
2979   AC_CHECK_LIB(gdi32,main,with_msw=yes)
2980   if test "$with_msw" = "yes"; then
2981     AC_DEFINE(HAVE_MS_WINDOWS)
2982
2983     dnl The net installer only works with MS-Windows currently
2984     if test "$with_netinstall" = "yes"; then
2985       XE_APPEND(netinstall, MAKE_SUBDIR)
2986       XE_APPEND(netinstall, SRC_SUBDIR_DEPS)
2987       XE_APPEND(netinstall, INSTALL_ARCH_DEP_SUBDIR)
2988     fi
2989
2990     install_pp="$srcdir/lib-src/installexe.sh"
2991     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lkernel32 -lwinspool, libs_system)
2992     test "$with_dragndrop" != no && XE_APPEND(msw, dragndrop_proto)
2993     if test "$window_system" != x11; then
2994         window_system=msw
2995         test "$with_scrollbars" != "no" && with_scrollbars=msw \
2996             && XE_ADD_OBJS(scrollbar-msw.o)
2997         test "$with_menubars"   != "no" && with_menubars=msw \
2998             && XE_ADD_OBJS(menubar-msw.o)
2999         test "$with_toolbars"   != "no" && with_toolbars=msw \
3000             && XE_ADD_OBJS(toolbar-msw.o)
3001         test "$with_dialogs"   != "no" && with_dialogs=msw \
3002             && XE_ADD_OBJS(dialog-msw.o)
3003         test "$with_widgets"   != "no" && with_widgets=msw
3004     else
3005         test "$with_scrollbars" != "no" && XE_ADD_OBJS(scrollbar-msw.o)
3006         test "$with_menubars"   != "no" && XE_ADD_OBJS(menubar-msw.o)
3007         test "$with_toolbars"   != "no" && XE_ADD_OBJS(toolbar-msw.o)
3008         test "$with_dialogs"    != "no" && XE_ADD_OBJS(dialog-msw.o)
3009     fi
3010     dnl check for our special version of select
3011     AC_TRY_RUN([#include <fcntl.h>
3012     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }],
3013     [need_event_unixoid=yes; AC_DEFINE(HAVE_MSG_SELECT)])
3014     with_file_coding=yes
3015     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)
3016   fi
3017 fi
3018
3019 AC_SUBST(install_pp)
3020
3021 test -z "$window_system" && window_system="none"
3022
3023 dnl Test for features that require a window system - ANY window system
3024 if test "$window_system" = "none"; then
3025   for feature in menubars scrollbars toolbars dialogs dragndrop xface
3026   do
3027     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3028        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
3029     fi
3030     eval "with_${feature}=no"
3031   done
3032 else
3033   test -z "$with_toolbars" && with_toolbars=yes
3034 fi
3035
3036 dnl ### Test for features that require mswindows support - currently none
3037 dnl ### MS-Windows folks: add code here..... (martin)
3038 if test "$with_msw" != "yes"; then
3039   for feature in   MARTIN_IS_CLUELESS_ABOUT_MSW_FEATURES
3040   do
3041     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3042        AC_MSG_WARN([--with-$feature ignored:  Not valid without MS-Windows support])
3043     fi
3044     eval "with_${feature}=no"
3045   done
3046 else
3047   :
3048 fi
3049
3050 dnl Test for features that require X11 support
3051 if test "$with_x11" != "yes"; then
3052   dnl It ought to be reasonable to have no output device at all, and only use
3053   dnl XEmacs in --batch mode.
3054   dnl if test "$with_tty" = "no" ; then
3055   dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
3056   dnl fi
3057   for feature in tooltalk cde offix wmcommand xim xmu nas_sound
3058   do
3059     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3060        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
3061     fi
3062     eval "with_${feature}=no"
3063   done
3064 fi
3065
3066 dnl Balloon Help requires the Shape extension, not available everywhere,
3067 dnl for example not on AIX 4.3.
3068 if test "$with_x11" = "yes"; then
3069   AC_CHECK_HEADER(X11/extensions/shape.h, [
3070    AC_DEFINE(HAVE_BALLOON_HELP)
3071    XE_ADD_OBJS(balloon_help.o balloon-x.o)])
3072 fi
3073
3074 dnl FSF 19.29 has some bitmapdir stuff here.
3075 bitmapdir=
3076
3077 case "$window_system" in
3078   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
3079   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
3080   gtk  )
3081        HAVE_X_WINDOWS=no
3082        test "$with_gnome" = "yes" && echo "  Using GNOME."
3083        test "$with_gnome" = "no" && echo "  Using GTK."
3084        ;;
3085   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
3086 esac
3087
3088 case "$x_libraries" in *X11R4* )
3089   test "$opsys" = "hpux9"     && opsysfile="s/hpux9-x11r4.h"
3090   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
3091 esac
3092
3093 dnl Enable or disable proper handling of WM_COMMAND
3094 AC_CHECKING(for WM_COMMAND option);
3095 dnl if test "$with_wmcommand" = "yes"; then
3096 if test "$with_wmcommand" != "no"; then
3097   AC_DEFINE(HAVE_WMCOMMAND)
3098 fi
3099
3100 dnl Autodetect Xauth
3101 dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
3102 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
3103 test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h,          ,with_xauth=no) }
3104 test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no) }
3105 test -z "$with_xauth" && with_xauth=yes
3106 if test "$with_xauth" = "yes"; then
3107   AC_DEFINE(HAVE_XAUTH)
3108   XE_SPACE(libs_xauth, $GTK_LIBS $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
3109 fi
3110 AC_SUBST(libs_xauth)
3111
3112 dnl This one is for the static initializeds variables in
3113 dnl offix.c, so that the thing is dumped after lastfile.o
3114 AC_SUBST(dnd_objs)
3115
3116 dnl Autodetect tooltalk
3117 if test "$with_tooltalk" != "no" ; then
3118   dnl autodetect the location of tt_c.h
3119   dnl tt_c.h might be in Tt or desktop include directories
3120   for dir in "" "Tt/" "desktop/" ; do
3121     AC_CHECK_HEADER(${dir}tt_c.h, tt_c_h_file="${dir}tt_c.h"; break)
3122   done
3123   if test -z "$tt_c_h_file"; then
3124     if test "$with_tooltalk" = "yes"; then
3125       USAGE_ERROR("Unable to find required tooltalk header files.")
3126     fi
3127     with_tooltalk=no
3128   fi
3129 fi
3130 if test "$with_tooltalk" != "no" ; then
3131   for extra_libs in "" "-lI18N -lce" "-lcxx"; do
3132     AC_CHECK_LIB(tt, tt_message_create,
3133       tt_libs="-ltt $extra_libs"; break, [:],$extra_libs)
3134   done
3135   if test -z "$tt_libs"; then
3136     if test "$with_tooltalk" = "yes"; then
3137       USAGE_ERROR("Unable to find required tooltalk libraries.")
3138     fi
3139     with_tooltalk=no
3140   fi
3141 fi
3142 test -z "$with_tooltalk" && with_tooltalk=yes
3143 if test "$with_tooltalk" = "yes"; then
3144   AC_DEFINE(TOOLTALK)
3145   AC_DEFINE_UNQUOTED(TT_C_H_FILE, "$tt_c_h_file")
3146   XE_PREPEND($tt_libs, libs_x)
3147   XE_ADD_OBJS(tooltalk.o)
3148 fi
3149
3150 dnl Autodetect CDE
3151 test -z "$with_cde" && { AC_CHECK_HEADER(Dt/Dt.h,               , with_cde=no) }
3152 test -z "$with_cde" && { AC_CHECK_LIB(DtSvc, DtDndDragStart, [:], with_cde=no) }
3153 test -z "$with_cde" && with_cde=yes
3154 if test "$with_dragndrop" = no; then
3155   AC_MSG_WARN([No CDE without generic Drag'n'Drop support])
3156   with_cde=no
3157 fi
3158 if test "$with_cde" = "yes" ; then
3159   AC_DEFINE(HAVE_CDE)
3160   XE_PREPEND(-lDtSvc, libs_x)
3161   XE_APPEND(CDE, dragndrop_proto)
3162   with_tooltalk=yes # CDE requires Tooltalk
3163   need_motif=yes    # CDE requires Motif
3164 fi
3165
3166 dnl Always compile OffiX unless --without-offix is given, no
3167 dnl X11 support is compiled in, no standard Xmu is available,
3168 dnl or dragndrop support is disabled
3169 dnl Because OffiX support currently loses when more than one display
3170 dnl is in use, we now disable it by default -slb 07/10/1998.
3171 test "$window_system" != "x11" && with_offix=no
3172 if test "$with_xmu" != yes -a "$with_x11" = yes; then
3173   AC_MSG_WARN([No OffiX without real Xmu support])
3174   with_offix=no
3175 fi
3176 if test "$with_dragndrop" = no; then
3177   AC_MSG_WARN([No OffiX without generic Drag'n'Drop support])
3178   with_offix=no
3179 fi
3180 if test "$with_cde" = yes; then
3181   AC_MSG_WARN([CDE already found, disabling OffiX support])
3182   with_offix=no
3183 fi
3184 test -z "$with_offix" && with_offix=no
3185 if test "$with_offix" = "yes"; then
3186   AC_DEFINE(HAVE_OFFIX_DND)
3187   XE_APPEND(offix.o, dnd_objs)
3188   XE_APPEND(OffiX, dragndrop_proto)
3189 fi
3190 if test "$with_gtk" = "yes"; then
3191    XE_APPEND(GTK, dragndrop_proto)
3192 fi
3193
3194 dnl Autodetect Drag'n'Drop support
3195 dnl always included if CDE, Offix, or MSWindows are defined
3196 if test "$with_dragndrop" != "no" ; then
3197   AC_MSG_CHECKING(if drag and drop API is needed)
3198   if test -n "$dragndrop_proto" ; then
3199     with_dragndrop=yes
3200     AC_MSG_RESULT([yes (${dragndrop_proto} )])
3201     AC_DEFINE(HAVE_DRAGNDROP)
3202     XE_APPEND(dragdrop.o, extra_objs)
3203   else
3204     with_dragndrop=no
3205     AC_MSG_RESULT(no)
3206   fi
3207 fi
3208
3209 dnl Autodetect LDAP
3210 AC_CHECKING(for LDAP)
3211 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
3212 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
3213 if test no != "$with_ldap";then
3214   if test . != "${ldap_libs+.}";then
3215     ldap_libs=
3216     AC_CHECK_FUNC(ldap_open,dnl Allow it to be in generic "$LIBS"
3217       [with_ldap=yes
3218       test yes = "$extra_verbose" &&
3219         echo "Setting ldap_libs to $ldap_libs"],dnl
3220       [AC_CHECK_LIB(ldap, ldap_open,dnl
3221         [with_ldap=yes],dnl
3222 dnl If logic of setting these vars change, change it the same way below.
3223         [ldap_needs_lber=yes ldap_other_libs=-llber
3224 dnl This requires `AC_CACHE_VAL' (which is called by `AC_CHECK_LIB')
3225 dnl to be redefined to ignore cached (shell variable) value, as it is
3226 dnl done above, because the same variable is used in all
3227 dnl `AC_CHECK_LIB' expansions in macro invocation below.  Worse, if it
3228 dnl is not done, there is no portable way to compensate for this
3229 dnl locally since `unset' command is not supported by all shells.  The
3230 dnl other solution would be changing `AC_CHECK_LIB' so that cache
3231 dnl variable name depends on the macro OTHER-LIBRARIES argument.
3232         AC_CHECK_LIB(ldap, ldap_open,dnl
3233           [with_ldap=yes],dnl
3234           [ldap_needs_krb=yes ldap_other_libs="$ldap_other_libs -lkrb"
3235           AC_CHECK_LIB(ldap, ldap_open,dnl
3236             [with_ldap=yes],dnl
3237             [ldap_needs_des=yes ldap_other_libs="$ldap_other_libs -ldes"
3238             AC_CHECK_LIB(ldap, ldap_open,dnl
3239               [with_ldap=yes],dnl
3240               [with_ldap=no],dnl
3241               $ldap_other_libs)],dnl
3242             $ldap_other_libs)],dnl
3243           $ldap_other_libs)])
3244       if test yes = "$with_ldap" -a yes != "$ldap_needs_lber";then
3245 dnl Need this check since `LDAP_OPT_ON' is (currently) used only with
3246 dnl `ldap_set_option', and the latter may not exist at all, for which
3247 dnl is testing later.  So `LDAP_OPT_ON' is not necessarily defined.
3248         AC_CACHE_CHECK([for LDAP_OPT_ON definition],xe_cv_have_LDAP_OPT_ON,
3249           [AC_TRY_COMPILE(
3250 [#include <lber.h>
3251 #include <ldap.h>
3252 #ifdef LDAP_OPT_ON
3253 /* Relying on const defined by ac_c_const (upper case). */
3254 const void *const v = LDAP_OPT_ON;
3255 #else /* !defined (LDAP_OPT_ON) */
3256 choke me
3257 #endif /* !defined (LDAP_OPT_ON) */],[],
3258             [xe_cv_have_LDAP_OPT_ON=yes],
3259             [xe_cv_have_LDAP_OPT_ON=no])])
3260         if test yes = "$xe_cv_have_LDAP_OPT_ON";then
3261           AC_CACHE_CHECK([LDAP_OPT_ON linking],
3262             xe_cv_LDAP_OPT_ON_links,
3263             [xe_save_LIBS="$LIBS"
3264             LIBS="-lldap $LIBS"
3265 AC_TRY_LINK(
3266 [#include <lber.h>
3267 #include <ldap.h>
3268 const void *const v = LDAP_OPT_ON;],[],
3269               xe_cv_LDAP_OPT_ON_links=yes,
3270               xe_cv_LDAP_OPT_ON_links=no)
3271             LIBS="$xe_save_LIBS"])
3272 dnl In some openldap installations other `ldap_*' functions link with
3273 dnl `-lldap' alone, but `LDAP_OPT_ON' requires `-llber'.
3274           if test yes != "$xe_cv_LDAP_OPT_ON_links";then
3275             ldap_needs_lber=yes ldap_other_libs=-llber
3276             AC_CACHE_CHECK([LDAP_OPT_ON linking with -llber],
3277               xe_cv_LDAP_OPT_ON_links_w_lber,
3278               [xe_save_LIBS="$LIBS"
3279               LIBS="-lldap $ldap_other_libs $LIBS"
3280 AC_TRY_LINK(
3281 [#include <lber.h>
3282 #include <ldap.h>
3283 const void *const v = LDAP_OPT_ON;],[],
3284               xe_cv_LDAP_OPT_ON_links_w_lber=yes,
3285               xe_cv_LDAP_OPT_ON_links_w_lber=no)
3286               LIBS="$xe_save_LIBS"])
3287             if test yes != "$xe_cv_LDAP_OPT_ON_links_w_lber";then
3288               with_ldap=no
3289             fi
3290           fi
3291         fi
3292       fi
3293       if test yes = "$with_ldap";then
3294         if test yes = "$ldap_needs_des";then
3295           XE_PREPEND(-ldes, ldap_libs)
3296         fi
3297         if test yes = "$ldap_needs_krb";then
3298           XE_PREPEND(-lkrb, ldap_libs)
3299         fi
3300         if test yes = "$ldap_needs_lber";then
3301           XE_PREPEND(-llber, ldap_libs)
3302         fi
3303         XE_PREPEND(-lldap, ldap_libs)
3304       fi])
3305   else
3306 dnl Allow builder to override "$ldap_libs".
3307     save_LIBS="$LIBS" LIBS="$ldap_libs $LIBS"
3308     AC_CHECK_FUNC(ldap_open,dnl
3309       [with_ldap=yes
3310       test yes = "$extra_verbose" &&
3311         echo "Setting ldap_libs to $ldap_libs"],dnl
3312       [with_ldap=no])
3313     LIBS="$save_LIBS"
3314   fi
3315 fi
3316 if test "$with_ldap" = "yes"; then
3317   AC_DEFINE(HAVE_LDAP)
3318   XE_ADD_OBJS(eldap.o)
3319   LIBS="$ldap_libs $LIBS"
3320   AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result)
3321 fi
3322
3323 dnl Autodetect PostgreSQL
3324 dnl On many Linux systems, PostgreSQL is packaged to be installed in /usr;
3325 dnl in this case, configure will easily detect it there.
3326 dnl
3327 dnl If PostgreSQL is installed into a different prefix,
3328 dnl (such as the default /usr/local/pgsql when building from source),
3329 dnl that prefix must be specified using the --site-prefixes flag.
3330 if test "$with_postgresql" != "no"; then
3331   AC_CHECKING(for PostgreSQL)
3332
3333 dnl Look for these standard header file locations, known to be used on Linux
3334   for header_dir in "" "pgsql/" "postgresql/"; do
3335     AC_CHECK_HEADER(${header_dir}libpq-fe.h,
3336                     libpq_fe_h_file=${header_dir}libpq-fe.h; break)
3337   done
3338
3339   test -n "$libpq_fe_h_file" && { AC_CHECK_LIB(pq,PQconnectdb,have_libpq=yes) }
3340
3341   if test -n "$libpq_fe_h_file" -a "$have_libpq" = "yes"; then
3342     with_postgresql=yes
3343     AC_DEFINE(HAVE_POSTGRESQL)
3344     AC_CHECK_LIB(pq,PQconnectStart, [
3345                  with_postgresqlv7=yes;
3346                  AC_DEFINE(HAVE_POSTGRESQLV7)])
3347     AC_DEFINE_UNQUOTED(LIBPQ_FE_H_FILE, "$libpq_fe_h_file")
3348     XE_PREPEND(-lpq, LIBS)
3349     XE_ADD_OBJS(postgresql.o)
3350   elif test "$with_postgresql" = "yes"; then
3351     XE_DIE("Required PostgreSQL support cannot be provided.  Check --site-prefixes.")
3352   fi
3353 fi
3354
3355 dnl ----------------------
3356 dnl Graphics libraries
3357 dnl ----------------------
3358
3359 if test "$window_system" != "none"; then
3360   AC_CHECKING(for graphics libraries)
3361
3362   dnl add special code to handle xpm-nox on Cygwin (csw)
3363   dnl   -- should only happen if CYGWIN && WITH_XPM && WITH_MSW && !WITH_X
3364   libpath_xpm=
3365   incpath_xpm=
3366   libname_xpm="-lXpm"
3367   case "$opsys" in 
3368     cygwin*)
3369       cygwin_top=`eval gcc -print-search-dirs | sed -ne s'/install: //p'`
3370       cygwin_top=`eval "cd $cygwin_top/../../../..; pwd"`
3371       case "$window_system" in
3372         dnl use "standard" search pattern
3373         x11)  ;;
3374         dnl hardcode "standard" non-X11 xpm lib/inc dirs
3375         msw) libpath_xpm="-L${cygwin_top}/lib/noX"
3376              incpath_xpm="-I${cygwin_top}/include/noX"
3377              libname_xpm="-lXpm-noX"
3378               ;;
3379         dnl not supported on cygwin (yet?)
3380         gtk)  ;;
3381         dnl probably not reached...
3382         none) ;;
3383         dnl ditto
3384         *)    ;;
3385       esac
3386       ;;
3387     dnl use "standard" search pattern for all other OS's
3388     *) ;;
3389   esac
3390   dnl Autodetect Xpm
3391   xpm_problem=""
3392   if test -z "$with_xpm"; then
3393     XE_PREPEND("$incpath_xpm", CFLAGS)
3394     XE_PREPEND("$libpath_xpm", LDFLAGS)
3395     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
3396     xe_check_libs="$libname_xpm"
3397     AC_TRY_RUN([#define XPM_NUMBERS
3398 #include <X11/xpm.h>
3399     int main(int c, char **v) {
3400     return c == 1 ? 0 :
3401       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
3402       XpmIncludeVersion < 30406 ? 2 : 0 ;}],
3403     [./conftest dummy_arg; xpm_status=$?;
3404       if test "$xpm_status" = "0"; then
3405         with_xpm=yes;
3406       else
3407         with_xpm=no;
3408         if test "$xpm_status" = "1"; then
3409           xpm_problem="Xpm library version and header file version don't match!"
3410         elif test "$xpm_status" = "2"; then
3411           xpm_problem="Xpm library version is too old!"
3412         else
3413           xpm_problem="Internal xpm detection logic error!"
3414         fi
3415         echo "
3416 *** WARNING *** $xpm_problem
3417   I'm not touching that with a 10-foot pole!
3418   If you really want to use the installed version of Xpm, rerun
3419   configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!"
3420     fi],
3421     [with_xpm=no])
3422     xe_check_libs=
3423     AC_MSG_RESULT($with_xpm)
3424   fi
3425   if test "$with_xpm" = "yes"; then
3426     dnl #### This code assumes that if AC_CHECK_LIB fails,
3427     dnl #### then it will succeed if FOR_MSW is defined,
3428     dnl #### but doesn't actually verify this assumption.
3429     AC_DEFINE(HAVE_XPM)
3430     XE_PREPEND("$libpath_xpm", LDFLAGS)
3431     XE_PREPEND("$libname_xpm", libs_x)
3432     XE_PREPEND("$incpath_xpm", CFLAGS)
3433     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
3434     xe_check_libs="$libname_xpm"
3435     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
3436     [xpm_for_msw=no],
3437     [xpm_for_msw=yes])
3438     xe_check_libs=
3439     AC_MSG_RESULT($xpm_for_msw)
3440     if test "$xpm_for_msw" = "yes"; then
3441       AC_DEFINE(FOR_MSW)
3442     fi
3443   fi
3444
3445   dnl Autodetect XFACE
3446   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
3447   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
3448   test -z "$with_xface" && with_xface=yes
3449   if test "$with_xface" = "yes"; then
3450     AC_DEFINE(HAVE_XFACE)
3451     XE_PREPEND(-lcompface, libs_x)
3452   fi
3453
3454   dnl For a brief period we had the GIF code split out into a separate library,
3455   dnl but patent problems, etc. sort of squashed that idea.
3456   dnl We default to building with builtin GIF decoding
3457   if test "$with_gif" != "no"; then
3458     with_gif="yes"
3459     AC_DEFINE(HAVE_GIF)
3460     XE_ADD_OBJS(dgif_lib.o gif_io.o)
3461   fi
3462
3463   dnl Too many stupid linkers can't detect cascaded lib dependencies until runtime
3464   dnl So we always search for libz compression support.
3465   if test "$with_png $with_tiff" != "no no"; then
3466     AC_CHECK_LIB(c,  inflate, [:], [
3467     AC_CHECK_LIB(z,  inflate, [XE_PREPEND(-lz,  libs_x)],[
3468     AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])])
3469   fi
3470
3471   dnl autodetect JPEG
3472   test -z "$with_jpeg" && { AC_CHECK_HEADER(jpeglib.h,                    ,with_jpeg=no) }
3473   test -z "$with_jpeg" && { AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,[:],with_jpeg=no) }
3474   test -z "$with_jpeg" && with_jpeg=yes
3475   if test "$with_jpeg" = "yes"; then
3476     AC_DEFINE(HAVE_JPEG)
3477     XE_PREPEND(-ljpeg, libs_x)
3478   fi
3479
3480   dnl autodetect PNG
3481   png_problem=""
3482   test -z "$with_png" && { AC_CHECK_FUNC(pow,                  ,with_png=no) }
3483   test -z "$with_png" && { AC_CHECK_HEADER(png.h,              ,with_png=no) }
3484   test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) }
3485   if test -z "$with_png"; then
3486     AC_MSG_CHECKING(for workable png version information)
3487     xe_check_libs="-lpng -lz"
3488     AC_TRY_RUN([#include <png.h>
3489     int main(int c, char **v) {
3490     if (c == 1) return 0;
3491     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
3492     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}],
3493     [./conftest dummy_arg; png_status=$?;
3494       if test "$png_status" = "0"; then
3495         with_png=yes;
3496       else
3497         with_png=no;
3498         if test "$png_status" = "1"; then
3499           png_problem="PNG library version and header file don't match!"
3500         elif test "$png_status" = "2"; then
3501           png_problem="PNG library version too old (pre 1.0.2)!"
3502         fi
3503         echo "
3504 *** WARNING *** $png_problem
3505   I'm not touching that with a 10-foot pole!
3506   If you really want to use the installed version of libPNG, rerun
3507   configure and add '--with-png=yes', but don't blame me if XEmacs crashes!"
3508     fi],
3509     [with_png=no])
3510     xe_check_libs=
3511     AC_MSG_RESULT($with_png)
3512   fi
3513   if test "$with_png" = "yes"; then
3514     AC_DEFINE(HAVE_PNG)
3515     XE_PREPEND(-lpng, libs_x)
3516   fi
3517
3518   dnl autodetect TIFF
3519   test -z "$with_tiff" && { AC_CHECK_HEADER(tiffio.h,            ,with_tiff=no) }
3520   test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no) }
3521   test -z "$with_tiff" && with_tiff=yes
3522   if test "$with_tiff" = "yes"; then
3523     AC_DEFINE(HAVE_TIFF)
3524     XE_PREPEND(-ltiff, libs_x)
3525   fi
3526 fi
3527
3528 dnl ----------------------
3529 dnl GTK-Specific Graphics libraries
3530 dnl ----------------------
3531
3532 if test "$with_gtk" = "yes"; then
3533   dnl Autodetect XFACE
3534   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
3535   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
3536   test -z "$with_xface" && with_xface=yes
3537   if test "$with_xface" = "yes"; then
3538     AC_DEFINE(HAVE_XFACE)
3539     XE_PREPEND(-lcompface, libs_gtk)
3540   fi
3541 fi
3542
3543
3544 dnl ----------------------
3545 dnl X-Specific Graphics libraries
3546 dnl ----------------------
3547
3548 if test "$with_x11" = "yes"; then
3549   AC_CHECKING(for X11 graphics libraries)
3550 fi
3551
3552 if test "$with_x11" = "yes"; then
3553   AC_CHECKING(for the Athena widgets)
3554
3555   dnl What in heck did the user actually want?
3556   case "$with_athena" in
3557     dnl This is the default, old fashioned flat Athena.
3558     "xaw" | "") athena_variant=Xaw      athena_3d=no  ;;
3559     "3d")       athena_variant=Xaw3d    athena_3d=yes ;;
3560     "next")     athena_variant=neXtaw   athena_3d=yes ;;
3561     "95")       athena_variant=Xaw95    athena_3d=yes ;;
3562     "xpm")      athena_variant=XawXpm   athena_3d=yes ;;
3563     *)          XE_DIE("Unknown Athena widget set \`$with_athena'. This should not happen.") ;;
3564   esac
3565
3566   athena_3d_function=Xaw3dComputeBottomShadowRGB
3567
3568   dnl Search for the Athena library...
3569   if test "$athena_3d" = "no"; then
3570     AC_CHECK_LIB($athena_variant, XawScrollbarSetThumb,
3571       [
3572         dnl Must not be a 3d library...
3573         AC_CHECK_LIB($athena_variant, $athena_3d_function,
3574           AC_MSG_WARN("Could not find a non-3d Athena widget library."),
3575           athena_lib=$athena_variant)
3576       ],
3577       AC_MSG_WARN("Could not find an Athena widget library."))