comparison configure.in @ 2938:ff857b8541b7

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