30443658fac4b29271d3ec56862200ecd1283134
[chise/xemacs-chise.git.1] / configure.in
1 dnl Define our own header notice with own copyright
2 define([AC_INIT_NOTICE],
3 [#### Configuration script for XEmacs.  Largely divergent from FSF.
4 #### Guess values for system-dependent variables and create Makefiles.
5 #### Generated automatically using autoconf version] AC_ACVERSION [
6 #### Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
7 #### Copyright (C) 1993-1995 Board of Trustees, University of Illinois.
8 #### Copyright (C) 1996, 1997 Sun Microsystems, Inc.
9 #### Copyright (C) 1995, 1996 Ben Wing.
10
11 ### Don't edit this script!
12 ### This script was automatically generated by the `autoconf' program
13 ### from the file `./configure.in'.
14 ### To rebuild it, execute the command
15 ###     autoconf
16 ### in the this directory.  You must have autoconf version 2.12 or later.
17
18 ### This file is part of XEmacs.
19
20 ### XEmacs is free software; you can redistribute it and/or modify it
21 ### under the terms of the GNU General Public License as published by
22 ### the Free Software Foundation; either version 2, or (at your
23 ### option) any later version.
24
25 ### XEmacs is distributed in the hope that it will be useful, but
26 ### WITHOUT ANY WARRANTY; without even the implied warranty of
27 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
28 ### General Public License for more details.
29
30 ### You should have received a copy of the GNU General Public License
31 ### along with XEmacs; see the file COPYING.  If not, write to the Free
32 ### Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
33 ### 02111-1307, USA.
34
35 ### For usage, run `./configure --help'
36 ### For more detailed information on building and installing XEmacs,
37 ### read the file `INSTALL'.
38 ###
39 ### If configure succeeds, it leaves its status in config.status.
40 ### A log of configuration tests can be found in config.log.
41 ### If configure fails after disturbing the status quo,
42 ###     config.status is removed.
43 ])
44
45 dnl Since XEmacs has configuration requirements that autoconf cannot
46 dnl meet, this file is an unholy marriage of custom-baked
47 dnl configuration code and autoconf macros.
48
49 dnl We use the m4 quoting characters [ ] (as established by the
50 dnl autoconf system), so quote them like this: [[foo]]
51
52 AC_PREREQ(2.12)dnl
53 dnl Redefine some standard autoconf macros
54 dnl here is how XEmacs is different:
55 dnl - no cache file
56 dnl - non-standard options
57 dnl - suport for extra-verbosity
58 dnl - ordinary libs are handled separately from X libs (might be a mistake)
59 dnl - various random kludges (e.g. -with-dnet=no
60
61 dnl PRINT_VAR(var var ...)  prints values of shell variables
62 define([PRINT_VAR],[for var in patsubst([$1],[[
63 ]+],[ ]); do eval "echo \"$var = '\$$var'\""; done])
64
65 dnl Disable cache files:
66 dnl This is controversial, but I am convinced this is the right way to go,
67 dnl at least by default.  Otherwise there are too many surprises.
68 define([AC_CACHE_LOAD], )dnl
69 define([AC_CACHE_SAVE], )dnl
70 define([AC_CACHE_VAL], [
71 $2
72 ])dnl
73
74 dnl Redefine AC_TRY_RUN_NATIVE to not throw away stderr while running
75 dnl AC_TRY_RUN_NATIVE(PROGRAM, [ACTION-IF-TRUE [, ACTION-IF-FALSE]])
76 define([AC_TRY_RUN_NATIVE],
77 [cat > conftest.$ac_ext <<EOF
78 [#]line __oline__ "configure"
79 #include "confdefs.h"
80 [$1]
81 EOF
82 if AC_TRY_EVAL(ac_link) && test -s conftest && (./conftest; exit) 2>&AC_FD_CC
83 then
84 dnl Do not remove the temporary files here, so they can be examined.
85   ifelse([$2], , :, [$2])
86 else
87   echo "configure: failed program was:" >&AC_FD_CC
88   cat conftest.$ac_ext >&AC_FD_CC
89 ifelse([$3], , , [  rm -fr conftest*
90   $3
91 ])dnl
92 fi
93 rm -fr conftest*])dnl AC_TRY_RUN_NATIVE
94
95
96 dnl Avoid spurious cross-compiling warnings from AC_TRY_RUN
97 dnl XEmacs is unlikely to ever cross-compile
98 define([AC_TRY_RUN],[AC_TRY_RUN_NATIVE([$1], [$2], [$3])])dnl
99
100 dnl Redefine AC_DEFINE* to provide more output if extra_verbose
101 dnl Set VARIABLE to VALUE, verbatim, or 1.
102 dnl AC_DEFINE(VARIABLE [, VALUE])
103 define([AC_DEFINE],
104 [{ test "$extra_verbose" = "yes" && cat << \EOF
105     Defining $1[]ifelse($#, 2, [ = $2],)
106 EOF
107 cat >> confdefs.h <<\EOF
108 [#define] $1 ifelse($#, 2, [$2], 1)
109 EOF
110 }
111 ])dnl AC_DEFINE
112
113 define([AC_DEFINE_UNQUOTED],
114 [{ test "$extra_verbose" = "yes" && cat << EOF
115     Defining $1[]ifelse($#, 2, [ = $2],)
116 EOF
117 cat >> confdefs.h <<EOF
118 [#define] $1 ifelse($#, 2, [$2], 1)
119 EOF
120 }
121 ])dnl AC_DEFINE_UNQUOTED
122
123 dnl redefine AC_CHECK_LIB in accordance with our own value of ac_link
124 dnl Add in extra kludgy check to support with_dnet=no
125 dnl Add in extra LDFLAGS arg, which PRECEDE libs
126 dnl Support --with-dnet=no
127
128 dnl AC_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
129 dnl             [, OTHER-LIBRARIES] [, LDFLAGS]]]])
130 define([AC_CHECK_LIB],
131 [ifelse([$1],dnet, [if test "$with_dnet" = "no" ; then
132 ac_cv_lib_dnet_dnet_ntoa=no
133 ifelse([$4], , , [$4]
134 )dnl
135 else
136 ])]
137 AC_CHECK_LIB_ORIG_HACKED([$1],[$2],[$3],[$4],[$5], [$6])
138 [ifelse([$1],dnet,[fi
139 ])]dnl
140 )dnl AC_CHECK_LIB
141
142 define([AC_CHECK_LIB_ORIG_HACKED],
143 [ifelse([$5],,AC_MSG_CHECKING([for $2 in -l$1]),
144 xe_msg_checking="for [$2] in -l[$1]"
145 test -n "[$5]" && xe_msg_checking="$xe_msg_checking using extra libs [$5]"
146 AC_MSG_CHECKING("$xe_msg_checking"))
147 dnl Use a cache variable name containing both the library and function name,
148 dnl because the test really is for library $1 defining function $2, not
149 dnl just for library $1.  Separate tests with the same $1 and different $2s
150 dnl may have different results.
151 ac_lib_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
152 AC_CACHE_VAL(ac_cv_lib_$ac_lib_var,
153 [xe_check_libs="$6 -l$1 $5"
154 AC_TRY_LINK(dnl
155 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
156 [/* Override any gcc2 internal prototype to avoid an error.  */
157 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
158 extern "C"
159 #endif
160 ])dnl
161 [/* We use char because int might match the return type of a gcc2
162     builtin and then its argument prototype would still apply.  */
163 char $2();
164 ]),
165             [$2()],
166             eval "ac_cv_lib_$ac_lib_var=yes",
167             eval "ac_cv_lib_$ac_lib_var=no")
168 xe_check_libs=""
169 ])dnl
170 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
171   AC_MSG_RESULT(yes)
172   ifelse([$3], ,
173 [changequote(, )dnl
174   ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
175     -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
176 changequote([, ])dnl
177   AC_DEFINE_UNQUOTED($ac_tr_lib)
178   XE_PREPEND([-l$1], LIBS)
179 ], [$3])
180 else
181   AC_MSG_RESULT(no)
182 ifelse([$4], , , [$4
183 ])dnl
184 fi
185 ])dnl AC_CHECK_LIB_ORIG_HACKED
186
187
188 dnl AC_LANG_C()
189 define([AC_LANG_C],
190 [define([AC_LANG], [C])dnl
191 ac_ext=c
192 dnl CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
193 dnl ac_cpp='$CPP $CPPFLAGS'
194 dnl ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&AC_FD_CC'
195 dnl ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC'
196 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
197 xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run'
198 xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard'
199 ac_cpp='$CPP '"$xe_cppflags"
200 ac_compile='${CC-cc} -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext 1>&AC_FD_CC'
201 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&AC_FD_CC'
202 cross_compiling=no
203 ]) dnl AC_LANG_C
204
205 dnl The construct foo=`echo $w1 $w2 $w3` fails on some systems if $w1 = -e or -n
206 dnl So we use the following instead.
207 dnl XE_SPACE(var, words)
208 define([XE_SPACE],[
209 T=""
210 for W in $2; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done
211 $1="$T"
212 ])dnl XE_SPACE
213
214 dnl XE_ADD_OBJS(foo.o ...)
215 define([XE_ADD_OBJS],
216 [extra_objs="$extra_objs [$1]" && dnl
217  if test "$extra_verbose" = "yes"; then
218    echo "    xemacs will be linked with \"[$1]\""
219  fi])dnl XE_ADD_OBJS
220
221 dnl XE_APPEND(value, varname)
222 define([XE_APPEND],
223 [[$2]="$[$2] [$1]" && dnl
224  if test "$extra_verbose" = "yes"; then echo "    Appending \"[$1]\" to \$[$2]"; fi])
225
226 dnl XE_PREPEND(value, varname)
227 define([XE_PREPEND],
228 [[$2]="[$1] $[$2]" && dnl
229  if test "$extra_verbose" = "yes"; then echo "    Prepending \"[$1]\" to \$[$2]"; fi])
230
231
232 dnl Initialize some variables set by options.
233 dnl The variables have the same names as the options, with
234 dnl dashes changed to underlines.
235
236 define([AC_INIT_PARSE_ARGS],[
237
238 dnl Get sane consistent behavior from various shells
239 dnl Avoid losing with weird user CDPATHs
240
241 if test -n "$ZSH_VERSION"; then
242   dnl zsh's Bourne shell emulation options
243   setopt NO_BAD_PATTERN NO_BANG_HIST NO_BG_NICE NO_EQUALS NO_FUNCTION_ARGZERO
244   setopt GLOB_SUBST NO_HUP INTERACTIVE_COMMENTS KSH_ARRAYS NO_MULTIOS NO_NOMATCH
245   setopt RM_STAR_SILENT POSIX_BUILTINS SH_FILE_EXPANSION SH_GLOB SH_OPTION_LETTERS
246   setopt SH_WORD_SPLIT BSD_ECHO IGNORE_BRACES
247   dnl zsh-3.1-beta drops core on the following
248   dnl unset CDPATH
249   if test -n "$CDPATH"; then CDPATH="."; export CDPATH; fi
250 elif test -n "$BASH_VERSION"; then
251   dnl Use Posix mode with bash
252   set -o posix
253   unset CDPATH
254 else
255   if test -n "$CDPATH"; then CDPATH="."; export CDPATH; fi
256 fi
257
258 dnl Initialize some variables set by options.
259 dnl The variables have the same names as the options, with
260 dnl dashes changed to underlines.
261 exec_prefix=NONE
262 host=NONE
263 no_create=
264 nonopt=NONE
265 no_recursion=
266 prefix=NONE
267 program_prefix=NONE
268 program_suffix=NONE
269 program_transform_name=s,x,x,
270 silent=
271 site=
272 srcdir=
273 target=NONE
274 verbose=
275 x_includes=NONE
276 x_libraries=NONE
277
278 dnl Installation directory options.
279 dnl These are left unexpanded so users can "make install exec_prefix=/foo"
280 dnl and all the variables that are supposed to be based on exec_prefix
281 dnl by default will actually change.
282 dnl Use braces instead of parens because sh, perl, etc. also accept them.
283 dnl If you change these, you need to synchronize with the settings of the
284 dnl various ..._USER_DEFINED variables further down.
285 bindir='${exec_prefix}/bin'
286 sbindir='${exec_prefix}/sbin'
287 libexecdir='${exec_prefix}/libexec'
288 datadir='${prefix}/share'
289 sysconfdir='${prefix}/etc'
290 sharedstatedir='${prefix}/com'
291 localstatedir='${prefix}/var'
292 libdir='${{exec_prefix}}/lib'
293 includedir='${prefix}/include'
294 oldincludedir='/usr/include'
295 infodir='${prefix}/info'
296 mandir='${prefix}/man'
297
298 dnl Initialize some other variables.
299 subdirs=
300 MFLAGS= MAKEFLAGS=
301 dnl Maximum number of lines to put in a shell here document.
302 ac_max_here_lines=12
303 ])dnl AC_INIT_PARSE_ARGS
304
305 AC_INIT(src/lisp.h)dnl
306 AC_CONFIG_HEADER(src/config.h lwlib/config.h)
307 dnl Remove any more than one leading "." element from the path name.
308 dnl If we do not remove them, then another "./" will be prepended to
309 dnl the file name each time we use config.status, and the program name
310 dnl will get larger and larger.  This would not be a problem, except
311 dnl that since progname gets recorded in all the Makefiles this script
312 dnl produces, move-if-change thinks they're different when they're
313 dnl not.
314 dnl
315 dnl It would be nice if we could put the ./ in a \( \) group and then
316 dnl apply the * operator to that, so we remove as many leading './././'s
317 dnl as are present, but some seds (like Ultrix's sed) don't allow you to
318 dnl apply * to a \( \) group.  Bleah.
319 progname="`echo $0 | sed 's:^\./\./:\./:'`"
320
321 dnl -----------------------------
322 dnl Establish some default values
323 dnl -----------------------------
324
325 XE_APPEND(lib-src, MAKE_SUBDIR)
326 XE_APPEND(lib-src, INSTALL_ARCH_DEP_SUBDIR)
327
328 dnl run_in_place='no'
329 prefix='/usr/local'
330 exec_prefix='${prefix}'
331 bindir='${exec_prefix}/bin'
332 dnl FSF 19.29 changes to:
333 dnl datadir='${prefix}/share'
334 dnl sharedstatedir='${prefix}/com'
335 dnl libexecdir='${exec_prefix}/libexec'
336 datadir='${prefix}/lib'
337 statedir='${prefix}/lib'
338 libdir='${exec_prefix}/lib'
339 mandir='${prefix}/man/man1'
340 infodir='${datadir}/${PROGNAME}-${version}/info'
341 infopath=''
342 install_pp=''
343 lispdir='${datadir}/${PROGNAME}-${version}/lisp'
344 dnl sitelispdir='${datadir}/xemacs/site-lisp'
345 pkgdir='${datadir}/${PROGNAME}-${version}/lisp'
346 package_path=''
347 etcdir='${datadir}/${PROGNAME}-${version}/etc'
348 lockdir='${statedir}/${PROGNAME}/lock'
349 archlibdir='${libdir}/${PROGNAME}-${version}/${configuration}'
350 with_site_lisp='no'
351 with_menubars=''
352 with_scrollbars=''
353 with_dialogs=''
354 with_file_coding=''
355 dnl const_is_losing is removed - we rely on AC_C_CONST instead.
356 dnl We accept (and ignore) the --const-is-losing option for compatibility.
357 dnl const_is_losing='yes'
358 puresize=''
359 cpp='' cppflags='' libs='' ldflags=''
360 dynamic=''
361 with_x11=''
362 with_msw=''
363 rel_alloc='default'
364 with_system_malloc='default'
365 with_dlmalloc='default'
366 native_sound_lib=''
367 dnl use_assertions should be 'yes' by default.  Too many people in this
368 dnl world have core dumps turned off by default or \"cannot find where the
369 dnl core file went\".  At least we should get some useful output ...
370 use_assertions="yes"
371 dnl the following is set to yes or no later.
372 with_toolbars=""
373 with_tty=""
374 use_union_type="no"
375 with_dnet=""
376
377 dnl ------------------
378 dnl Options Processing
379 dnl ------------------
380
381 define([USAGE_ERROR],
382 [(echo "$progname: Usage error:"
383 echo " " $1
384 echo "  Use \`$progname --help' to show usage.") >&2 && exit 1])
385
386 dnl Record all the arguments, so we can save them in config.status.
387 arguments="$@"
388
389 dnl Shell Magic: Quote the quoted arguments in ARGUMENTS.  At a later date,
390 dnl in order to get the arguments back in $@, we have to do an
391 dnl 'eval set x "$quoted_arguments"; shift'
392 dnl # We use sed to turn embedded ' into '"'"'.  I truly hate sh quoting.
393 quoted_sed_magic=s/"'"/"'"'"'"'"'"'"'"/g
394 quoted_arguments=
395 for i in "$@"; do
396    case "$i" in
397    -no-create | --no-create | --no-creat | --no-crea | --no-cre \
398    | --no-cr | --no-c) ;;
399    -no-recursion | --no-recursion | --no-recursio | --no-recursi \
400    | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
401    *)
402    quoted_i="`echo '' $i | sed -e 's:^ ::' -e $quoted_sed_magic`"
403    quoted_arguments="$quoted_arguments '$quoted_i'" ;;
404    esac
405 done
406
407 dnl Do not use shift -- that destroys the argument list, which autoconf needs
408 dnl to produce config.status.  It turns out that "set - $arguments" does not
409 dnl work portably.
410 dnl However, it also turns out that many shells cannot expand ${10} at all.
411 dnl So using an index variable does not work either.  It is possible to use
412 dnl some shell magic to make 'set x "$arguments"; shift' work portably.
413 while test $# != 0; do
414   arg="$1"; shift
415   case "$arg" in
416     --no-create|--no-recursion) ;;
417     dnl Anything starting with a hyphen we assume is an option.
418     -* )
419       dnl Separate the switch name from the value it is being given.
420       case "$arg" in
421         -*=*)
422           opt=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*\([[^=]]*\)=.*$:\1:'`
423           val=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*[[^=]]*=\(.*\)$:\1:'`
424           valomitted=no
425         ;;
426            dnl special case these strings since echo may silently eat them:
427            dnl --help ) opt=help val=yes valomitted=yes ;;
428            dnl --version ) opt=version val=yes valomitted=yes ;;
429            dnl -e ) opt=e val=yes valomitted=yes ;;
430            dnl -E ) opt=E val=yes valomitted=yes ;;
431            dnl -n ) opt=n val=yes valomitted=yes ;;
432         -*)
433            dnl If FOO is a boolean argument, --FOO is equivalent to
434            dnl --FOO=yes.  Otherwise, the value comes from the next
435            dnl argument - see below.
436           opt=`echo '' $arg | sed -e 's:^ ::' -e 's:^-*\(.*\)$:\1:'`
437           val="yes" valomitted=yes
438         ;;
439       esac
440
441       dnl translate "-" in option string to "_"
442       optname="$opt"
443       opt="`echo '' $opt | sed -e 's:^ ::' | tr - _`"
444
445       dnl Support --without-FOO as a synonym for --with-FOO=no
446       case "${valomitted}-${opt}" in yes-without_* )
447         opt=`echo $opt | sed 's/without/with/'`
448         valomitted="no" val="no" ;;
449       esac
450
451       dnl Process the option.
452       case "$opt" in
453
454       dnl Process (many) boolean options
455         run_in_place    | \
456         with_site_lisp  | \
457         with_x          | \
458         with_x11        | \
459         with_msw        | \
460         with_gcc        | \
461         with_gnu_make   | \
462         dynamic         | \
463         with_ncurses    | \
464         with_dnet       | \
465         with_socks      | \
466         with_dragndrop  | \
467         with_cde        | \
468         with_offix      | \
469         with_gpm        | \
470         with_xpm        | \
471         with_xface      | \
472         with_gif        | \
473         with_jpeg       | \
474         with_png        | \
475         with_tiff       | \
476         with_session    | \
477         with_xmu        | \
478         with_quantify   | \
479         with_toolbars   | \
480         with_tty        | \
481         with_xfs        | \
482         with_i18n3      | \
483         with_mule       | \
484         with_file_coding        | \
485         with_canna      | \
486         with_wnn        | \
487         with_wnn6       | \
488         with_workshop   | \
489         with_sparcworks | \
490         with_tooltalk   | \
491         with_ldap       | \
492         with_pop        | \
493         with_kerberos   | \
494         with_hesiod     | \
495         with_dnet       | \
496         with_infodock   | \
497         external_widget | \
498         verbose         | \
499         extra_verbose   | \
500         const_is_losing | \
501         usage_tracking  | \
502         use_union_type  | \
503         debug           | \
504         use_assertions  | \
505         use_minimal_tagbits                     | \
506         use_indexed_lrecord_implementation      | \
507         gung_ho         | \
508         use_assertions  | \
509         memory_usage_stats | \
510         with_clash_detection | \
511         with_shlib | \
512         no_doc_file )
513           dnl Make sure the value given was either "yes" or "no".
514           case "$val" in
515             y | ye | yes )      val=yes ;;
516             n | no )            val=no  ;;
517             * ) USAGE_ERROR("The \`--$optname' option requires a boolean value: \`yes' or \`no'.") ;;
518           esac
519           eval "$opt=\"$val\"" ;;
520
521
522         dnl Options that take a user-supplied value, as in --puresize=8000000
523         dnl The cache-file option is ignored (for compatibility with other configures)
524         srcdir          | \
525         compiler        | \
526         cflags          | \
527         cpp             | \
528         cppflags        | \
529         libs            | \
530         ldflags         | \
531         puresize        | \
532         cache_file      | \
533         native_sound_lib | \
534         site_lisp       | \
535         x_includes      | \
536         x_libraries     | \
537         site_includes   | \
538         site_libraries  | \
539         site_prefixes   | \
540         site_runtime_libraries )
541           dnl If the value was omitted, get it from the next argument.
542           if test "$valomitted" = "yes" ; then
543             dnl Get the next argument from the argument list, if there is one.
544             if test "$#" = 0 ; then
545               USAGE_ERROR("The \`--$optname' option requires a value.");
546             fi
547             val="$1"; shift
548           fi
549           eval "$opt=\"$val\""
550         ;;
551
552         dnl Options that take "yes", "no", or "default" values
553         rel_alloc | \
554         with_dlmalloc | \
555         with_debug_malloc  | use_debug_malloc | \
556         with_system_malloc | use_system_malloc )
557           case "$val" in
558             y | ye | yes )      val=yes ;;
559             n | no )            val=no  ;;
560             d | de | def | defa | defau | defaul | default ) val=default ;;
561             * ) USAGE_ERROR(["The \`--$optname' option requires one of these values:
562   \`yes', \`no', or \`default'."]) ;;
563           esac
564           case "$opt" in use_* ) opt="`echo $opt | sed s/use/with/`" ;; esac
565           eval "$opt=\"$val\""
566         ;;
567
568         dnl Has the user requested database support?
569         "with_database" )
570           with_database_berkdb=no
571           with_database_dbm=no
572           with_database_gnudbm=no
573           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
574             case "$x" in
575                 no ) ;;
576                 b | be | ber | berk | berkd | berkdb )  with_database_berkdb=yes ;;
577                 d | db | dbm )                          with_database_dbm=yes    ;;
578                 g | gn | gnu | gnud | gnudb | gnudbm )  with_database_gnudbm=yes ;;
579                 * ) USAGE_ERROR(["The \`--$optname' option value
580   must be either \`no' or a comma-separated list
581   of one or more of \`berkdb', \`dbm', or \`gnudbm'."]) ;;
582             esac
583           done
584           if test "$with_database_dbm"    = "yes" -a \
585                   "$with_database_gnudbm" = "yes"; then
586           USAGE_ERROR("Only one of \`dbm' and \`gnudbm' may be specified
587   with the \`--$optname' option.")
588           fi
589         ;;
590
591         dnl Has the user requested sound support?
592         "with_sound" )
593           dnl value can be native, nas or both. yes is allowed
594           dnl as a backwards compatible synonym for native
595           case "$val" in
596             y | ye | yes )                      val=native ;;
597             n | no | non | none )               val=no;;
598             na | nat | nati | nativ | native )  val=native  ;;
599             ne | net | neta | netau | netaud | netaudi | netaudio | nas ) val=nas  ;;
600             b | bo | bot | both )               val=both;;
601             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
602   \`native', \`nas', \`both', or \`none'."]) ;;
603           esac
604           eval "$opt=\"$val\""
605         ;;
606
607         dnl Has the user requested XIM support?
608         "with_xim" )
609           case "$val" in
610             y | ye | yes )                val=yes   ;;
611             n | no | non | none )         val=no    ;;
612             x | xl | xli | xlib )         val=xlib  ;;
613             m | mo | mot | moti | motif ) val=motif ;;
614             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
615   \`motif', \`xlib', \`yes', or \`no'."]) ;;
616           esac
617           eval "$opt=\"$val\""
618         ;;
619
620         dnl XFontSet support?
621         "with_xfs" )
622           case "$val" in
623           y | ye | yes )                val=yes ;;
624           n | no | non | none )         val=no  ;;
625           * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
626  \`yes', or \`no'."]) ;;
627           esac
628           eval "$opt=\"$val\""
629         ;;
630
631         dnl Mail locking specification
632         "mail_locking" )
633           case "$val" in
634             lockf )     val=lockf ;;
635             flock )     val=flock ;;
636             file )      val=file  ;;
637             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
638   \`lockf', \`flock', or \`file'."]) ;;
639           esac
640           eval "$opt=\"$val\""
641         ;;
642
643         dnl Has the user requested error-checking?
644         "error_checking" )
645           dnl value can be all, none, and/or a list of categories to check.
646           dnl Example: --error-checking=all,noextents,nobufpos
647           dnl Example: --error-checking=none,malloc,gc
648
649           for x in `echo "$val" | sed -e 's/,/ /g'` ; do
650             case "$x" in
651               dnl all and none are only permitted as the first in the list.
652               n | no | non | none ) new_default=no ;;
653               a | al | all )        new_default=yes ;;
654
655               extents )       error_check_extents=yes ;;
656               noextents )     error_check_extents=no ;;
657
658               typecheck )     error_check_typecheck=yes ;;
659               notypecheck )   error_check_typecheck=no ;;
660
661               bufpos )        error_check_bufpos=yes ;;
662               nobufpos )      error_check_bufpos=no ;;
663
664               gc )            error_check_gc=yes ;;
665               nogc )          error_check_gc=no ;;
666
667               malloc )        error_check_malloc=yes ;;
668               nomalloc )      error_check_malloc=no ;;
669
670               * ) bogus_error_check=yes ;;
671             esac
672             if test "$bogus_error_check" -o \
673                  \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then
674                 if test "$error_check_default" = yes ; then
675                   types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', and \`nomalloc'."
676                 else
677                   types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', and \`malloc'."
678                 fi
679                 USAGE_ERROR(["Valid types for the \`--$optname' option are:
680   $types."])
681             elif test -n "$new_default" ; then
682                 error_check_extents=$new_default
683                 error_check_typecheck=$new_default
684                 error_check_bufpos=$new_default
685                 error_check_gc=$new_default
686                 error_check_malloc=$new_default
687                 new_default=    # reset this
688             fi
689             echeck_notfirst=true
690           done
691         ;;
692
693         dnl Has the user tried to tell us where the X files are?
694         dnl I think these are dopey, but no less than three alpha
695         dnl testers, at large sites, have said they have their X files
696         dnl installed in odd places.
697
698         dnl Has the user specified one of the path options?
699         prefix | exec_prefix | bindir | datadir | statedir | libdir | \
700         mandir | infodir | infopath | lispdir | etcdir | lockdir | pkgdir | \
701         archlibdir | docdir | package_path )    
702            dnl If the value was omitted, get it from the next argument.
703            if test "$valomitted" = "yes"; then
704              if test "$#" = 0; then
705                  USAGE_ERROR("The \`--$optname' option requires a value.");
706              fi
707              val="$1"; shift
708            fi
709            eval "$opt=\"$val\""
710
711            dnl You need to synchronize this with the way the
712            dnl default values are built.
713            case "$opt" in
714              lispdir ) AC_DEFINE(LISPDIR_USER_DEFINED) ;;
715 dnl             sitelispdir ) AC_DEFINE(SITELISPDIR_USER_DEFINED) ;;
716              etcdir  )  AC_DEFINE(ETCDIR_USER_DEFINED) ;;
717              infodir ) AC_DEFINE(INFODIR_USER_DEFINED) ;;
718              infopath ) AC_DEFINE(INFOPATH_USER_DEFINED) ;;
719              package_path ) AC_DEFINE(PACKAGE_PATH_USER_DEFINED) ;;
720              datadir )
721                 AC_DEFINE(INFODIR_USER_DEFINED)
722                 AC_DEFINE(LISPDIR_USER_DEFINED)
723                 AC_DEFINE(ETCDIR_USER_DEFINED) ;;
724              statedir | lockdir ) AC_DEFINE(LOCKDIR_USER_DEFINED) ;;
725              exec_prefix | libdir | archlibdir ) AC_DEFINE(ARCHLIBDIR_USER_DEFINED) ;;
726            esac
727         ;;
728
729         dnl --no-create added by autoconf for use by config.status
730         "no_create" ) ;;
731
732         dnl Has the user asked for some help?
733         "usage" | "help" ) ${PAGER-more} ${srcdir}/configure.usage; exit 0 ;;
734
735         dnl Has the user specified what toolkit to use for the menubars,
736         dnl scrollbar or dialogs?
737         "with_menubars" | "with_scrollbars" | "with_dialogs" )
738           case "$val" in
739             l | lu | luc | luci | lucid )               val=lucid  ;;
740             m | mo | mot | moti | motif )               val=motif  ;;
741             athena3d | athena-3d )                      val=athena3d ;;
742             a | at | ath | athe | athen | athena )      val=athena ;;
743             n | no | non | none )                       val=no ;;
744             * ) USAGE_ERROR(["The \`--$optname' option must have one of these values:
745   \`lucid', \`motif', \`athena', \`athena3d', or \`no'."]) ;;
746           esac
747           eval "$opt=\"$val\""
748         ;;
749
750         dnl Fail on unrecognized arguments.
751         * ) USAGE_ERROR("Unrecognized option: $arg") ;;
752
753       esac
754     ;;
755
756     dnl Assume anything with multiple hyphens is a configuration name.
757     *-*-*) configuration="$arg" ;;
758
759     dnl Anything else is an error
760     *) USAGE_ERROR("Unrecognized argument: $arg") ;;
761
762   esac
763 done
764
765 dnl -------------------------
766 dnl Finish options processing
767 dnl -------------------------
768
769 dnl Several options are equivalent to, and override, environment variables.
770 test -n "$cpp"      && CPP="$cpp"
771 test -n "$cppflags" && CPPFLAGS="$cppflags"
772 test -n "$libs"     && LIBS="$libs"
773 test -n "$ldflags"  && LDFLAGS="$ldflags"
774
775 dnl Get the arguments back.  See the diatribe on Shell Magic above.
776 eval set x "$quoted_arguments"; shift
777
778 dnl --extra-verbose implies --verbose
779 test "$extra_verbose" = "yes" && verbose=yes
780
781 dnl Allow use of either ":" or spaces for lists of directories
782 define(COLON_TO_SPACE,
783   [case "$[$1]" in *:* [)] [$1]="`echo '' $[$1] | sed -e 's/^ //' -e 's/:/ /g'`";; esac])dnl
784 COLON_TO_SPACE(site_includes)
785 COLON_TO_SPACE(site_libraries)
786 COLON_TO_SPACE(site_prefixes)
787 COLON_TO_SPACE(site_runtime_libraries)
788
789 dnl with_x is an obsolete synonym for with_x11
790 test -n "$with_x" && with_x11="$with_x"
791
792 dnl --gung-ho=val is a synonym for
793 dnl --use-minimal-tagbits=val --use-indexed-lrecord-implementation=val
794
795 if test -n "$gung_ho"; then
796   test -z "$use_minimal_tagbits" && use_minimal_tagbits="$gung_ho"
797   test -z "$use_indexed_lrecord_implementation" && \
798     use_indexed_lrecord_implementation="$gung_ho"
799 fi
800 if test "$use_minimal_tagbits" = "no"; then
801   test "$with_dlmalloc" = "yes" && \
802     USAGE_ERROR("--with-dlmalloc requires --use-minimal-tagbits")
803   with_dlmalloc=no
804 fi
805
806 dnl XE_CHECK_FEATURE_DEPENDENCY(feature1, feature2)
807 define([XE_CHECK_FEATURE_DEPENDENCY],
808 [if test "$with_$1 $with_$2" = "yes no"; then
809   USAGE_ERROR("--with-$1 requires --with-$2")
810 elif test "$with_$2" = "no" ; then with_$1=no
811 elif test "$with_$1" = "yes"; then with_$2=yes
812 fi
813 ])
814
815 dnl CDE requires tooltalk
816 XE_CHECK_FEATURE_DEPENDENCY(cde, tooltalk)
817
818 dnl Ignore useless run-in-place flag
819 if test "$run_in_place" = "yes"; then
820   AC_MSG_WARN("The --run-in-place option is ignored because it is unnecessary.")
821 fi
822
823 dnl Find the source directory.
824 case "$srcdir" in
825
826   dnl If srcdir is not specified, see if  "." or ".." might work.
827   "" )
828     for dir in "`echo $0 | sed 's|//|/|' | sed 's|/[[^/]]*$||'`" "." ".." ; do
829       if test -f "$dir/src/lisp.h" -a \
830               -f "$dir/lisp/version.el" ; then
831         srcdir="$dir"
832         break
833       fi
834     done
835     if test -z "$srcdir" ; then
836       USAGE_ERROR(["Neither the current directory nor its parent seem to
837   contain the XEmacs sources.  If you do not want to build XEmacs in its
838   source tree, you should run \`$progname' in the directory in which
839   you wish to build XEmacs, using the \`--srcdir' option to say where the
840   sources may be found."])
841     fi
842   ;;
843
844   dnl Otherwise, check if the directory they specified is okay.
845   * )
846     if test ! -f "$srcdir/src/lisp.h" -o \
847             ! -f "$srcdir/lisp/version.el" ; then
848       USAGE_ERROR(["The directory specified with the \`--srcdir' option,
849   \`$srcdir', doesn't seem to contain the XEmacs sources.  You should
850   either run the \`$progname' script at the top of the XEmacs source
851   tree, or use the \`--srcdir' option to specify the XEmacs source directory."])
852     fi
853   ;;
854 esac
855
856 dnl ###########################################################################
857 if test -z "$configuration"; then
858   AC_MSG_CHECKING("host system type")
859   dnl Guess the configuration and remove 4th name component, if present.
860   if configuration=`${CONFIG_SHELL-/bin/sh} $srcdir/config.guess | \
861     sed '[s/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/]'` ; then
862     AC_MSG_RESULT($configuration)
863   else
864     AC_MSG_RESULT(unknown)
865     USAGE_ERROR(["XEmacs has not been ported to this host type.
866 Try explicitly specifying the CONFIGURATION when rerunning configure."])
867   fi
868 fi
869
870 AC_PROG_LN_S
871
872 dnl Make symlinks for etc, lisp, and info directories while the path
873 dnl is still relative.  We do not symlink lock because someone may
874 dnl have stuck the source on a read-only partition.  Instead we
875 dnl create it as an actual directory later on if it does not already
876 dnl exist.
877 for dir in lisp etc man info; do
878   if test ! -d "$dir" ; then
879     echo Making symbolic link to "$srcdir/$dir"
880     ${LN_S} "$srcdir/$dir" "$dir"
881   fi
882 done
883
884 dnl Calculate canonical name for blddir (i.e. current directory).
885 dnl PWD may already be the preferable absolute name for ".",
886 dnl but we can't trust it - it is sometimes inaccurate.
887 absolute_pwd="`pwd`";
888 if test -n "$PWD" -a "`cd $PWD && pwd`" = "$absolute_pwd"
889 then blddir="$PWD"
890 else blddir="$absolute_pwd"
891 fi
892 AC_SUBST(blddir)
893
894 dnl Make srcdir absolute, if not already.  It is important to
895 dnl avoid running the path through pwd unnecessary, since pwd can
896 dnl give you automounter prefixes, which can go away.
897 case "$srcdir" in
898   /* ) ;;
899   .  ) srcdir="$blddir" ;;
900   *  ) srcdir="`cd $srcdir && pwd`" ;;
901 esac
902
903 dnl Check if the source directory already has a configured system in it.
904 if test `pwd` != `sh -c cd $srcdir && pwd`  \
905    && test -f "$srcdir/src/config.h"; then
906   (echo "$progname: WARNING: The directory tree \`$srcdir' is being used"
907    echo "   as a build directory right now; it has been configured in its own"
908    echo "   right.  To configure in another directory as well, you MUST"
909    echo "   use GNU make.  If you do not have GNU make, then you must"
910    echo "   now do \`make distclean' in $srcdir,"
911    echo "   and then run $progname again.") >&2
912   extrasub='/^VPATH[[    ]]*=/c\
913 vpath %.c $(srcdir)\
914 vpath %.h $(srcdir)\
915 vpath %.y $(srcdir)\
916 vpath %.l $(srcdir)\
917 vpath %.s $(srcdir)\
918 vpath %.in $(srcdir)'
919 fi
920
921 dnl ----------------------------------------
922 dnl Find out which version of XEmacs this is
923 dnl ----------------------------------------
924 . "$srcdir/version.sh" || exit 1;
925 dnl Must do the following first to determine verbosity for AC_DEFINE
926 if test -n "$emacs_beta_version"; then beta=yes; else beta=no; fi
927 : "${extra_verbose=$beta}"
928 version="${emacs_major_version}.${emacs_minor_version}"
929 AC_DEFINE_UNQUOTED(EMACS_MAJOR_VERSION, $emacs_major_version)
930 AC_DEFINE_UNQUOTED(EMACS_MINOR_VERSION, $emacs_minor_version)
931 if test -n "$emacs_beta_version"; then
932   version="${version}-b${emacs_beta_version}"
933   AC_DEFINE_UNQUOTED(EMACS_BETA_VERSION, $emacs_beta_version)
934 fi
935 AC_DEFINE_UNQUOTED(XEMACS_CODENAME, "$xemacs_codename")
936 AC_DEFINE_UNQUOTED(EMACS_VERSION, "$version")
937
938 if test "$with_infodock" = "yes"; then
939   if test ! -f ../ID-INSTALL; then
940     echo "Cannot build InfoDock without InfoDock sources"
941     with_infodock=no
942   fi
943 fi
944
945 if test "$with_infodock" = "yes"; then
946   dnl InfoDock version numbers.  XEmacs will use the same style of numbering
947   dnl after the release of XEmacs 21.0.
948   AC_DEFINE_UNQUOTED(INFODOCK_MAJOR_VERSION, $infodock_major_version)
949   AC_DEFINE_UNQUOTED(INFODOCK_MINOR_VERSION, $infodock_minor_version)
950   AC_DEFINE_UNQUOTED(INFODOCK_BUILD_VERSION, $infodock_build_version)
951   version=${infodock_major_version}.${infodock_minor_version}.${infodock_build_version}
952   PROGNAME=infodock
953   CPPFLAGS="$CPPFLAGS -DINFODOCK"
954 else
955   PROGNAME=xemacs
956 fi
957
958 dnl ----------------------------------
959 dnl Error checking and debugging flags
960 dnl ----------------------------------
961 dnl Error checking default to "yes" in beta versions, to "no" in releases.
962 dnl Same goes for --debug and --extra-verbosity.
963 if test -n "$emacs_beta_version"; then beta=yes; else beta=no; fi
964 test "${error_check_extents=$beta}"   = yes && AC_DEFINE(ERROR_CHECK_EXTENTS)
965 test "${error_check_typecheck=$beta}" = yes && AC_DEFINE(ERROR_CHECK_TYPECHECK)
966 test "${error_check_bufpos=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_BUFPOS)
967 test "${error_check_gc=$beta}"        = yes && AC_DEFINE(ERROR_CHECK_GC)
968 test "${error_check_malloc=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_MALLOC)
969 dnl debug=yes must be set when error checking is present.  This should be
970 dnl fixed up.
971 dnl debug implies other options
972 if test "${debug:=$beta}" = "yes"; then
973   use_assertions=yes memory_usage_stats=yes
974   XE_ADD_OBJS(debug.o)
975   AC_DEFINE(DEBUG_XEMACS)
976 fi
977 test "$use_assertions"     = "yes" && AC_DEFINE(USE_ASSERTIONS)
978 test "$memory_usage_stats" = "yes" && AC_DEFINE(MEMORY_USAGE_STATS)
979
980 dnl ------------------------------
981 dnl Determine the s&m files to use
982 dnl ------------------------------
983 dnl Given the configuration name, set machfile and opsysfile to the
984 dnl names of the m/*.h and s/*.h files we should use.
985
986 dnl Canonicalize the configuration name.
987 AC_CHECKING("the configuration name")
988 dnl allow -workshop suffix on configuration name
989 internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'`
990 if canonical=`$srcdir/config.sub "$internal_configuration"` ; then : ; else
991   exit $?
992 fi
993
994 dnl If you add support for a new configuration, add code to this
995 dnl switch statement to recognize your configuration name and select
996 dnl the appropriate operating system and machine description files.
997
998 dnl You would hope that you could choose an m/*.h file pretty much
999 dnl based on the machine portion of the configuration name, and an s-
1000 dnl file based on the operating system portion.  However, it turns out
1001 dnl that each m/*.h file is pretty manufacturer-specific - for
1002 dnl example, apollo.h, hp9000s300.h, mega68k, news.h, and tad68k are
1003 dnl all 68000 machines; mips.h, pmax.h, and news-risc are all MIPS
1004 dnl machines.  So we basically have to have a special case for each
1005 dnl configuration name.
1006
1007 dnl As far as handling version numbers on operating systems is
1008 dnl concerned, make sure things will fail in a fixable way.  If
1009 dnl /etc/MACHINES says nothing about version numbers, be
1010 dnl prepared to handle anything reasonably.  If version numbers
1011 dnl matter, be sure /etc/MACHINES says something about it.
1012
1013 dnl Eric Raymond says we should accept strings like "sysvr4" to mean
1014 dnl "System V Release 4"; he writes, "The old convention encouraged"
1015 dnl "confusion between `system' and `release' levels'."
1016
1017 machine='' opsys=''
1018
1019 dnl Straightforward machine determination
1020 case "$canonical" in
1021   sparc-*-*        ) machine=sparc ;;
1022   alpha-*-*        ) machine=alpha ;;
1023   vax-*-*          ) machine=vax ;;
1024   mips-dec-*       ) machine=pmax ;;
1025   mips-sgi-*       ) machine=iris4d ;;
1026   romp-ibm-*       ) machine=ibmrt ;;
1027   rs6000-ibm-aix*  ) machine=ibmrs6000 ;;
1028   powerpc-ibm-aix* ) machine=ibmrs6000 ;;
1029   powerpc*-*       ) machine=powerpc ;;
1030   hppa-*-*         ) machine=hp800 ;;
1031   m88k-dg-*        ) machine=aviion ;;
1032   m68*-sony-*      ) machine=news ;;
1033   mips-sony-*      ) machine=news-risc ;;
1034   clipper-*        ) machine=clipper ;;
1035 esac
1036
1037 dnl Straightforward OS determination
1038 case "$canonical" in
1039   *-*-linux*    ) opsys=linux ;;
1040   *-*-netbsd*   ) opsys=netbsd ;;
1041   *-*-openbsd*  ) opsys=openbsd ;;
1042   *-*-nextstep* ) opsys=nextstep ;;
1043   *-*-vms       ) opsys=vms ;;
1044
1045   dnl DEC OSF
1046   *-dec-osf1.3 | *-dec-osf2* ) opsys=decosf1-3 ;;
1047   *-dec-osf1.2 | *-dec-osf1* ) opsys=decosf1-2 ;;
1048   *-dec-osf3.[[2-9]]         ) opsys=decosf3-2 ;;
1049   *-dec-osf3*                ) opsys=decosf3-1 ;;
1050   *-dec-osf4*                ) opsys=decosf4-0 ;;
1051
1052   dnl DEC Ultrix
1053   *-*-ultrix[[0-3]].* | *-*-ultrix4.0* ) opsys=bsd4-2 ;;
1054   *-*-ultrix4.[[12]]* ) opsys=bsd4-3 ;;
1055   *-*-ultrix* )         opsys=ultrix4-3 ;;
1056
1057   dnl AIX
1058   *-*-aix3.1*  ) opsys=aix3-1   ;;
1059   *-*-aix3.2.5 ) opsys=aix3-2-5 ;;
1060   *-*-aix3*    ) opsys=aix3-2   ;;
1061   *-*-aix4.2*  ) opsys=aix4-2   ;;
1062   *-*-aix4.1*  ) opsys=aix4-1   ;;
1063   *-*-aix4*    ) opsys=aix4     ;;
1064
1065   dnl Other generic OSes
1066   *-gnu* )                      opsys=gnu    ;;
1067   *-*-bsd4.[[01]] )             opsys=bsd4-1 ;;
1068   *-*-bsd4.2 )                  opsys=bsd4-2 ;;
1069   *-*-bsd4.3 )                  opsys=bsd4-3 ;;
1070   *-*-aos4.2 )                  opsys=bsd4-2 ;;
1071   *-*-aos*   )                  opsys=bsd4-3 ;;
1072   *-*-sysv0    | *-*-sysvr0 )   opsys=usg5-0 ;;
1073   *-*-sysv2    | *-*-sysvr2 )   opsys=usg5-2 ;;
1074   *-*-sysv2.2  | *-*-sysvr2.2 ) opsys=usg5-2-2 ;;
1075   *-*-sysv3*   | *-*-sysvr3* )  opsys=usg5-3 ;;
1076   *-*-sysv4.1* | *-*-sysvr4.1* )opsys=usg5-4 NON_GNU_CPP=/usr/lib/cpp ;;
1077   *-*-sysv4.[[2-9]]* | *-sysvr4.[[2-9]]* )
1078         if test -z "$NON_GNU_CPP" ; then
1079           for prog in "/usr/ccs/lib/cpp" "/lib/cpp"; do
1080             if test -f "$prog"; then NON_GNU_CPP="$prog"; break; fi
1081           done
1082         fi
1083         opsys=usg5-4-2 ;;
1084     *-sysv4* | *-sysvr4* )      opsys=usg5-4 ;;
1085     *-*-mach_bsd4.3* )          opsys=mach-bsd4-3 ;;
1086 esac
1087
1088 case "$canonical" in
1089
1090   dnl NetBSD ports
1091   *-*-netbsd* )
1092     case "$canonical" in
1093       i[[3-9]]86-*-netbsd*) machine=intel386 ;;
1094       hp300-*-netbsd* | amiga-*-netbsd* | sun3-*-netbsd* | mac68k-*-netbsd* | da30-*-netbsd* | m68k-*-netbsd* )
1095                       dnl Yes, this is somewhat bogus.
1096                       machine=hp9000s300 ;;
1097       pc532-*-netbsd* | ns32k-*-netbsd* )  machine=ns32000 ;;
1098       pmax-*-netbsd*  | mips-*-netbsd*  )  machine=pmax ;;
1099     esac
1100   ;;
1101
1102   dnl OpenBSD ports
1103   *-*-openbsd* )
1104     case "${canonical}" in
1105       alpha*-*-openbsd*)        machine=alpha ;;
1106       i386-*-openbsd*)          machine=intel386 ;;
1107       m68k-*-openbsd*)          machine=hp9000s300 ;;
1108       mipsel-*-openbsd*)        machine=pmax ;;
1109       ns32k-*-openbsd*)         machine=ns32000 ;;
1110       sparc-*-openbsd*)         machine=sparc ;;
1111       vax-*-openbsd*)           machine=vax ;;
1112      esac
1113    ;;
1114
1115   dnl Acorn RISCiX:
1116   arm-acorn-riscix1.1* ) machine=acorn opsys=riscix1-1 ;;
1117   arm-acorn-riscix1.2* | arm-acorn-riscix ) machine=acorn opsys=riscix1-2 ;;
1118
1119   dnl Alliant machines
1120   fx80-alliant-* ) machine=alliant4     opsys=bsd4-2 ;;
1121   i860-alliant-* ) machine=alliant-2800 opsys=bsd4-3 ;;
1122
1123   dnl Altos 3068
1124   m68*-altos-sysv* ) machine=altos opsys=usg5-2 ;;
1125
1126   dnl Amdahl UTS
1127   580-amdahl-sysv* ) machine=amdahl opsys=usg5-2-2 ;;
1128
1129   dnl Apollo, Domain/OS
1130   m68*-apollo-* ) machine=apollo opsys=bsd4-3 ;;
1131
1132   dnl AT&T 3b2, 3b5, 3b15, 3b20
1133   we32k-att-sysv* ) machine=att3b opsys=usg5-2-2 ;;
1134
1135   dnl AT&T 3b1 - The Mighty Unix PC!
1136   m68*-att-sysv* ) machine=7300 opsys=usg5-2-2 ;;
1137
1138   dnl Bull machines
1139   rs6000-bull-bosx* ) machine=ibmrs6000 opsys=aix3-2 ;; # dpx20
1140   m68*-bull-sysv3*  ) machine=dpx2      opsys=usg5-3 ;; # dpx2
1141   m68*-bull-sysv2*  ) machine=sps7      opsys=usg5-2 ;; # sps7
1142
1143   dnl CCI 5/32, 6/32 -- see "Tahoe".
1144
1145   dnl Celerity
1146   celerity-celerity-bsd* ) machine=celerity opsys=bsd4-2 ;;
1147
1148   dnl Convex
1149   *-convex-bsd* | *-convex-convexos* )
1150     machine=convex opsys=bsd4-3
1151     NON_GNU_CPP="cc -E -P"
1152   ;;
1153
1154   dnl Cubix QBx/386
1155   i[[3-9]]86-cubix-sysv* ) machine=intel386 opsys=usg5-3 ;;
1156
1157   dnl Data General AViiON Machines
1158   i586-dg-dgux*R4*   | i586-dg-dgux5.4.4* ) machine=aviion opsys=dgux5-4r4 ;;
1159   m88k-dg-dgux5.4R3* | m88k-dg-dgux5.4.3* ) opsys=dgux5-4r3 ;;
1160   m88k-dg-dgux5.4R2* | m88k-dg-dgux5.4.2* ) opsys=dgux5-4r2 ;;
1161   m88k-dg-dgux*                           ) opsys=dgux     ;;
1162
1163   dnl Motorola Delta machines
1164   m68k-motorola-sysv* | m68000-motorola-sysv* ) machine=delta opsys=usg5-3 ;;
1165   m88k-motorola-sysv4* )
1166     dnl jbotte@bnr.ca says that UNIX_System_V <hostName> 4.0 R40V4.3 m88k mc88110
1167     dnl needs POSIX_SIGNALS and therefore needs usg5-4-2.
1168     dnl I hope there are not other 4.0 versions for this machine
1169     dnl which really need usg5-4 instead.
1170     machine=delta88k opsys=usg5-4-2
1171   ;;
1172   m88k-motorola-sysv* | m88k-motorola-m88kbcs* ) machine=delta88k opsys=usg5-3 ;;
1173
1174   dnl Dual machines
1175   m68*-dual-sysv*    ) machine=dual opsys=usg5-2   ;;
1176   m68*-dual-uniplus* ) machine=dual opsys=unipl5-2 ;;
1177
1178   dnl Encore machines
1179   ns16k-encore-bsd* ) machine=ns16000 opsys=umax ;;
1180
1181   dnl Gould Power Node and NP1
1182   pn-gould-bsd4.2* ) machine=gould     opsys=bsd4-2 ;;
1183   pn-gould-bsd4.3* ) machine=gould     opsys=bsd4-3 ;;
1184   np1-gould-bsd* )   machine=gould-np1 opsys=bsd4-3 ;;
1185
1186   dnl Harris Night Hawk machines running CX/UX (a 5000 looks just like a 4000
1187   dnl as far as XEmacs is concerned).
1188   m88k-harris-cxux* )
1189     dnl Build needs to be different on 7.0 and later releases
1190     case "`uname -r`" in
1191        [[56]].[[0-9]] ) machine=nh4000 opsys=cxux  ;;
1192        [[7]].[[0-9]]  ) machine=nh4000 opsys=cxux7 ;;
1193     esac
1194     NON_GNU_CPP="/lib/cpp"
1195   ;;
1196   dnl Harris ecx or gcx running CX/UX (Series 1200, Series 3000)
1197   m68k-harris-cxux* ) machine=nh3000 opsys=cxux ;;
1198   dnl Harris power pc NightHawk running Power UNIX (Series 6000)
1199   powerpc-harris-powerunix ) machine=nh6000 opsys=powerunix NON_GNU_CPP="cc -Xo -E -P" ;;
1200
1201   dnl Honeywell XPS100
1202   xps*-honeywell-sysv* ) machine=xps100 opsys=usg5-2 ;;
1203
1204   dnl HP 9000 series 200 or 300
1205   m68*-hp-bsd* ) machine=hp9000s300 opsys=bsd4-3 ;;
1206
1207   dnl HP-UX
1208   *-hp-hpux* )
1209     dnl Figure out machine and opsys orthogonally
1210     case "$canonical" in
1211       m68*  ) machine=hp9000s300 ;;
1212       hppa* ) machine=hp800      ;;
1213     esac
1214
1215     case "$canonical" in
1216       *-hp-hpux7*  )  opsys=hpux   ;;
1217       *-hp-hpux8*  )  opsys=hpux8  ;;
1218       *-hp-hpux9*  )  opsys=hpux9  ;;
1219       *-hp-hpux10* )  opsys=hpux10 ;;
1220       *-hp-hpux11* )  opsys=hpux11 ;;
1221       *            )  opsys=hpux   ;;
1222     esac
1223
1224     dnl HP has a broken "strcat"
1225     case "$opsys" in hpux9 | hpux10 ) XE_ADD_OBJS(strcat.o) ;; esac
1226
1227     if test "$opsys" = "hpux10" -o "$opsys" = "hpux11"; then \
1228         ansi_flag="-Ae"; else ansi_flag="-Aa"; fi
1229     NON_GNU_CC="cc $ansi_flag" NON_GNU_CPP="cc $ansi_flag -E"
1230
1231     case "$canonical" in *-hp-hpux*shr* ) opsys="${opsys}-shr" ;; esac
1232   ;;
1233
1234   dnl Orion machines
1235   orion-orion-bsd*   ) machine=orion    opsys=bsd4-2 ;;
1236   clipper-orion-bsd* ) machine=orion105 opsys=bsd4-2 ;;
1237
1238   dnl IBM machines
1239   i[[3-9]]86-ibm-aix1.1* ) machine=ibmps2-aix opsys=usg5-2-2 ;;
1240   i[[3-9]]86-ibm-aix1.[[23]]* | i[[3-9]]86-ibm-aix* ) machine=ibmps2-aix opsys=usg5-3 ;;
1241   i370-ibm-aix*) machine=ibm370aix opsys=usg5-3 ;;
1242   romp-ibm-aos*    ) opsys=bsd4-3 ;;
1243   romp-ibm-bsd*    ) opsys=bsd4-3 ;;
1244   romp-ibm-mach*   ) opsys=mach-bsd4-3 ;;
1245
1246   dnl Integrated Solutions "Optimum V"
1247   m68*-isi-bsd4.2* ) machine=isi-ov opsys=bsd4-2 ;;
1248   m68*-isi-bsd4.3* ) machine=isi-ov opsys=bsd4-3 ;;
1249
1250   dnl Intel 386 machines where we do care about the manufacturer
1251   i[[3-9]]86-intsys-sysv* ) machine=is386 opsys=usg5-2-2 ;;
1252
1253   dnl Prime EXL
1254   i[[3-9]]86-prime-sysv* ) machine=i386 opsys=usg5-3 ;;
1255
1256   dnl Sequent Symmetry running Dynix
1257   i[[3-9]]86-sequent-bsd* ) machine=symmetry opsys=bsd4-3 ;;
1258
1259   dnl Sequent Symmetry running DYNIX/ptx
1260   i[[3-9]]86-sequent-ptx* ) machine=sequent-ptx opsys=ptx NON_GNU_CPP="/lib/cpp" ;;
1261
1262   dnl Unspecified sysv on an ncr machine defaults to svr4.2.
1263   dnl (Plain usg5-4 does not turn on POSIX signals, which we need.)
1264   i[[3-9]]86-ncr-sysv* ) machine=ncr386 opsys=usg5-4-2 ;;
1265
1266   dnl Intel Paragon OSF/1
1267   i860-intel-osf1* ) machine=paragon opsys=osf1 NON_GNU_CPP=/usr/mach/lib/cpp ;;
1268
1269   dnl Intel 860
1270   i860-*-sysv4* ) machine=i860 opsys=usg5-4 NON_GNU_CC="/bin/cc" NON_GNU_CPP="/usr/ccs/lib/cpp" ;;
1271
1272   dnl Masscomp machines
1273   m68*-masscomp-rtu* ) machine=masscomp opsys=rtu ;;
1274
1275   dnl Megatest machines
1276   m68*-megatest-bsd* ) machine=mega68 opsys=bsd4-2 ;;
1277
1278   dnl Workstations sold by MIPS
1279   dnl This is not necessarily all workstations using the MIPS processor -
1280   dnl Irises are produced by SGI, and DECstations by DEC.
1281   mips-mips-usg* ) machine=mips4 ;;
1282   mips-mips-riscos4 )
1283     machine=mips4
1284     NON_GNU_CC="cc -systype bsd43"
1285     NON_GNU_CPP="cc -systype bsd43 -E"
1286     case "$canonical" in
1287       mips-mips-riscos4* ) opsys=bsd4-3  ;;
1288       mips-mips-riscos5* ) opsys=riscos5 ;;
1289     esac
1290   ;;
1291   mips-mips-bsd* ) machine=mips opsys=bsd4-3 ;;
1292   mips-mips-*    ) machine=mips opsys=usg5-2-2 ;;
1293
1294   dnl NeXT
1295   m68*-next-* | m68k-*-nextstep* ) machine=m68k opsys=nextstep ;;
1296
1297   dnl The complete machine from National Semiconductor
1298   ns32k-ns-genix* ) machine=ns32000 opsys=usg5-2 ;;
1299
1300   dnl NCR machines
1301   m68*-ncr-sysv2* | m68*-ncr-sysvr2* ) machine=tower32   opsys=usg5-2-2 ;;
1302   m68*-ncr-sysv3* | m68*-ncr-sysvr3* ) machine=tower32v3 opsys=usg5-3 ;;
1303
1304   dnl Nixdorf Targon 31
1305   m68*-nixdorf-sysv* ) machine=targon31 opsys=usg5-2-2 ;;
1306
1307   dnl Nu (TI or LMI)
1308   m68*-nu-sysv* ) machine=nu opsys=usg5-2 ;;
1309
1310   dnl Plexus
1311   m68*-plexus-sysv* ) machine=plexus opsys=usg5-2 ;;
1312
1313   dnl Pyramid machines
1314   pyramid-pyramid-bsd* ) machine=pyramid opsys=bsd4-2 ;;
1315
1316   dnl Sequent Balance
1317   ns32k-sequent-bsd4.2* ) machine=sequent opsys=bsd4-2 ;;
1318   ns32k-sequent-bsd4.3* ) machine=sequent opsys=bsd4-3 ;;
1319
1320   dnl Siemens Nixdorf
1321   mips-siemens-sysv* | mips-sni-sysv*)
1322     machine=mips-siemens opsys=usg5-4
1323     NON_GNU_CC=/usr/ccs/bin/cc
1324     NON_GNU_CPP=/usr/ccs/lib/cpp
1325   ;;
1326
1327   dnl Silicon Graphics machines
1328   dnl Iris 2500 and Iris 2500 Turbo (aka the Iris 3030)
1329   m68*-sgi-iris3.5* ) machine=irist opsys=iris3-5 ;;
1330   m68*-sgi-iris3.6* | m68*-sgi-iris*) machine=irist opsys=iris3-6 ;;
1331   dnl Iris 4D
1332   mips-sgi-irix3.*    ) opsys=irix3-3 ;;
1333   mips-sgi-irix4.*    ) opsys=irix4-0 ;;
1334   mips-sgi-irix6*     ) opsys=irix6-0 ;;
1335   mips-sgi-irix5.1*   ) opsys=irix5-1 ;;
1336   mips-sgi-irix5.2*   ) opsys=irix5-2 ;;
1337   mips-sgi-irix5.*    ) opsys=irix5-3 ;;
1338   mips-sgi-irix*      ) opsys=irix5-0 ;;
1339
1340   dnl SONY machines
1341   *-sony-newsos[[34]]* | *-sony-news[[34]]* ) opsys=bsd4-3 ;;
1342   *-sony-news* ) opsys=newsos5 ;;
1343
1344   dnl Stride
1345   m68*-stride-sysv* ) machine=stride opsys=usg5-2 ;;
1346
1347   dnl Suns
1348   *-*-solaris* | *-*-sunos* | *-sun-mach* | *-sun-bsd* )
1349     dnl Hardware type
1350     case "$canonical" in
1351       m68*-sunos1* )             machine=sun1     ;;
1352       m68*-sunos2* )             machine=sun2     ;;
1353       m68* )                     machine=sun3     ;;
1354       i*86*-sun-sunos[[34]]* )   machine=sun386   ;;
1355       i*86-*-* )                 machine=intel386 ;;
1356       rs6000* )                  machine=rs6000   ;;
1357     esac
1358
1359     dnl Make $canonical even more so.
1360     case "$canonical" in *-sunos5*)
1361       canonical=`echo $canonical | sed -e s/sunos5/solaris2/`;;
1362     esac
1363
1364     dnl On SunOS 4, use /usr/lib/cpp, sans dynodump, /bin/ranlib
1365     dnl On SunOS 5, use cc -E,        need dynodump, RANLIB not needed
1366     dnl But, SunOS 5.6 no longer needs dynodump because it has a similar
1367     dnl function integrated.
1368     case "$canonical" in
1369       *-sunos4* )
1370         #test -f /usr/lib/cpp     && NON_GNU_CPP=/usr/lib/cpp ;;
1371         : ;;
1372       *-solaris2* )
1373         #test -f /usr/ccs/lib/cpp && NON_GNU_CPP=/usr/ccs/lib/cpp
1374         RANLIB=':' ;;
1375     esac
1376
1377     case "$canonical" in
1378       *-solaris*          )
1379         opsys=sol2
1380         os_release=`uname -r | sed -e 's/^\([[0-9]]\)\.\([[0-9]]\).*/\1\2/'`
1381         AC_DEFINE_UNQUOTED(OS_RELEASE, $os_release) ;;
1382
1383       dnl The last Sun386 ran 4.0.
1384       i*86-*-sunos4*      ) opsys=sunos4-0      ;;
1385       *-sunos4.0*         ) opsys=sunos4-0      ;;
1386       *-sunos4.1.2*       ) opsys=sunos4-1-2    ;;
1387       *-sunos4.1.3*       ) opsys=sunos4-1-3    ;;
1388       *-sunos4.1.[[4-9]]* ) opsys=sunos4-1-4    ;;
1389       *-sunos4* | *-sunos ) opsys=sunos4-1      ;;
1390       *-mach*             ) opsys=mach-bsd4-3   ;;
1391       *                   ) opsys=bsd4-2        ;;
1392     esac
1393
1394     case "$canonical" in *-sunos4*shr* ) opsys="${opsys}-shr" ;; esac
1395
1396     dnl Watch out for a compiler guaranteed not to work.
1397     test "$opsys $CC" = "sol2 /usr/ucb/cc" && CC=""
1398   ;;
1399
1400   dnl Tadpole 68k
1401   m68*-tadpole-sysv* ) machine=tad68k opsys=usg5-3 ;;
1402
1403   dnl Tahoe machines
1404   tahoe-tahoe-bsd4.2* ) machine=tahoe opsys=bsd4-2 ;;
1405   tahoe-tahoe-bsd4.3* ) machine=tahoe opsys=bsd4-3 ;;
1406
1407   dnl Tandem Integrity S2
1408   mips-tandem-sysv* ) machine=tandem-s2 opsys=usg5-3 ;;
1409
1410   dnl Tektronix XD88
1411   m88k-tektronix-sysv3* ) machine=tekxd88 opsys=usg5-3 ;;
1412
1413   dnl Tektronix 16000 box (6130?)
1414   ns16k-tektronix-bsd* ) machine=ns16000 opsys=bsd4-2 ;;
1415   dnl Tektronix 4300
1416   dnl src/m/tek4300.h hints that this is a m68k machine.
1417   m68*-tektronix-bsd* ) machine=tek4300 opsys=bsd4-3 ;;
1418
1419   dnl Titan P2 or P3
1420   titan-titan-sysv* ) machine=titan opsys=usg5-3 ;;
1421
1422   dnl Ustation E30 (SS5E)
1423   m68*-unisys-uniplus* ) machine=ustation opsystem=unipl5-2 ;;
1424
1425   dnl Vaxen.
1426   vax-dec-* )
1427     case "$canonical" in
1428       *-sysv[[01]]* | *-sysvr[[01]]* )  opsys=usg5-0 ;;
1429       *-sysv2* | *-sysvr2* )            opsys=usg5-2 ;;
1430       *-mach* )                         opsys=mach-bsd4-3 ;;
1431     esac
1432   ;;
1433
1434   dnl Whitechapel MG1
1435   ns16k-whitechapel-* ) machine=mg1 ;;
1436
1437   dnl Wicat
1438   m68*-wicat-sysv* ) machine=wicat opsys=usg5-2 ;;
1439
1440   dnl Intel 386 machines where we do not care about the manufacturer
1441   i[[3-9]]86-*-* )
1442     machine=intel386
1443     case "$canonical" in
1444       *-isc1.* | *-isc2.[[01]]* ) opsys=386-ix ;;
1445       *-isc2.2* )               opsys=isc2-2 ;;
1446       *-isc4.0* )               opsys=isc4-0 ;;
1447       *-isc4.* )                opsys=isc4-1
1448                                 GCC_TEST_OPTIONS=-posix
1449                                 NON_GCC_TEST_OPTIONS=-Xp
1450                                 ;;
1451       *-isc* )                  opsys=isc3-0 ;;
1452       *-esix5* )                opsys=esix5r4 NON_GNU_CPP=/usr/lib/cpp ;;
1453       *-esix* )                 opsys=esix ;;
1454       *-mach* )                 opsys=mach-bsd4-3 ;;
1455       *-xenix* )                opsys=xenix ;;
1456       *-sco3.2v4* )             opsys=sco4 NON_GNU_CPP=/lib/cpp  ;;
1457       *-bsd386* | *-bsdi1* )    opsys=bsd386 ;;
1458       *-bsdi3* )                opsys=bsdos3 ;;
1459       *-bsdi2.1* )              opsys=bsdos2-1 ;;
1460       *-bsdi2* )                opsys=bsdos2 ;;
1461       *-sco3.2v5* )             opsys=sco5 ;
1462         dnl This is a pain.  Like the current USL cc, SCO cc -E
1463         dnl tokenizes as it preprocesses, making configure very
1464         dnl unhappy.  Unfortunately, /lib/cpp does not understand
1465         dnl flags like "-b elf", so we have to cheat in order to
1466         dnl pick up the right defines for UNEXEC from the s-file.
1467         dnl 01/05/95 robertl@dgii.com
1468         if test "$dynamic" = "yes" ; then
1469                 NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE -D_SCO_ELF"  ;
1470         else
1471                 NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE"  ;
1472         fi ;;
1473       *-386bsd* )               opsys=386bsd ;;
1474       *-freebsd* )              opsys=freebsd ;;
1475       *-nextstep* )             opsys=nextstep ;;
1476       *-pc-cygwin32 )           opsys=cygwin32 ;;
1477       dnl Otherwise, we fall through to the generic opsys code at the bottom.
1478     esac
1479   ;;
1480
1481   dnl Linux/68k
1482   m68k-*-linux* ) machine=m68k opsys=linux ;;
1483
1484 esac
1485
1486 if test -z "$machine" -o -z "$opsys"; then
1487   (echo "$progname: XEmacs hasn't been ported to \`$canonical' systems."
1488    echo "$progname: Check \`etc/MACHINES' for recognized configuration names."
1489   ) >&2
1490   exit 1
1491 fi
1492
1493 if test -z "$dynamic"; then
1494   case "$opsys" in
1495     hpux* | sunos4* | sco5 ) dynamic=no ;;
1496     *) dynamic=yes ;;
1497   esac
1498 fi
1499 if test "$dynamic" = "yes"; then
1500   case "$opsys" in
1501     hpux* | sunos4* | sco5 ) opsys="${opsys}-shr" ;;
1502     decosf* ) ld_call_shared="-call_shared" ;;
1503   esac
1504 else dnl "$dynamic" = "no"
1505   case "$opsys" in
1506     sol2 )
1507       echo "Static linking is not supported on Solaris 2."
1508       echo "Rerun configure without specifying --dynamic=no."
1509       exit 1 ;;
1510     linux   ) ld_call_shared="-Bstatic" ;;
1511     decosf* ) ld_call_shared="-non_shared" ;;
1512   esac
1513 fi
1514
1515 dnl Use xlc by default on AIX
1516 case "$opsys" in aix*) NON_GNU_CC=xlc ;; esac
1517
1518 stack_trace_eye_catcher=`echo ${PROGNAME}_${version}_${canonical} | sed 'y/.-/__/'`
1519 AC_DEFINE_UNQUOTED(STACK_TRACE_EYE_CATCHER, $stack_trace_eye_catcher)
1520
1521 machfile="m/${machine}.h"
1522 opsysfile="s/${opsys}.h"
1523
1524 dnl --------------------------------------------------
1525 dnl Determine the compiler, set up for feature testing
1526 dnl --------------------------------------------------
1527
1528 dnl Sun Development environment support
1529 test "$with_sparcworks" = "yes" && with_workshop=yes # compatibility alias
1530 XE_CHECK_FEATURE_DEPENDENCY(workshop, tooltalk)
1531 if test "$with_workshop" = "yes"; then
1532   AC_DEFINE(SUNPRO)
1533   XE_ADD_OBJS(sunpro.o)
1534 fi
1535
1536 if test "$with_clash_detection" = "yes"; then
1537   AC_DEFINE(CLASH_DETECTION)
1538   XE_ADD_OBJS(filelock.o)
1539 fi
1540
1541 dnl Choose a compiler from (in order)
1542 dnl --compiler, env var CC, with_gcc=no && ${NON_GNU_CC:-cc}, AC_PROG_CC
1543 test -n "$compiler" && CC="$compiler"
1544 if test "$with_gcc" = "no"; then dnl Try to find a non-gcc compiler
1545   case "$CC" in "" | *gcc* ) CC="${NON_GNU_CC-cc}" ;; esac
1546 fi
1547
1548 dnl If we don't set CFLAGS here, AC_PROG_CC will set it.
1549 dnl But we know better what's good for us, so we do our own
1550 dnl computation of real CFLAGS later.
1551 dnl --cflags overrides environment variable CFLAGS
1552 test "${cflags-unset}" != unset && CFLAGS="$cflags"
1553 if test "${CFLAGS-unset}" != unset
1554   then cflags_specified=yes;
1555   else cflags_specified=no;
1556 fi
1557
1558 xe_save_CFLAGS="$CFLAGS"
1559
1560 AC_PROG_CC dnl Autoconf has its own magic for compiler autodetection
1561
1562 dnl Retry using random guesswork if AC_PROG_CC got it wrong...
1563 if   test "$with_gcc" = "no"  -a "$GCC" = "yes"; then
1564   CC=${NON_GNU_CC-cc}
1565   AC_PROG_CC
1566 elif test "$with_gcc" = "yes" -a "$GCC" != "yes" ; then
1567   CC=gcc
1568   AC_PROG_CC
1569 fi
1570 CFLAGS="$xe_save_CFLAGS"
1571
1572 dnl Figure out what C preprocessor to use.
1573
1574 dnl On Sun systems, people sometimes set up the variable CPP
1575 dnl with a value that is a directory, not an executable at all.
1576 dnl Detect that case, and ignore that value.
1577 test -n "$CPP" -a -d "$CPP" && CPP=
1578
1579 test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
1580
1581 AC_PROG_CPP
1582
1583 AC_AIX
1584
1585 AC_MSG_CHECKING(for GNU libc)
1586 AC_TRY_COMPILE([#include <features.h>],[
1587 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
1588 #error Not a GNU libc system :-(
1589 ******* ======= ******** &&&&&&&&
1590 #endif
1591 ], have_glibc=yes, have_glibc=no)
1592 AC_MSG_RESULT($have_glibc)
1593 dnl I'm tired of pop being broken with GLIBC -slb
1594 dnl Well. then why not fix fucking pop?
1595 test "$have_glibc" = "yes" && AC_DEFINE(_GNU_SOURCE)
1596
1597 AC_MSG_CHECKING(whether we are using SunPro C)
1598 AC_TRY_COMPILE([],[#ifndef __SUNPRO_C
1599 #error Not a  SunPro compiler :-(
1600 ******* ======= ******** &&&&&&&&
1601 #endif
1602 ], __sunpro_c=yes, __sunpro_c=no)
1603 AC_MSG_RESULT($__sunpro_c)
1604
1605 dnl case "$canonical" in
1606 dnl   *-sun-sunos* ) test "$CPP" = "acc -E" && CPP="acc -E -Xs" ;;
1607 dnl esac
1608
1609 dnl --------------------------------------------------------------------
1610 dnl Extract some information from the operating system and machine files
1611 dnl --------------------------------------------------------------------
1612
1613 echo "Extracting information from the machine- and system-dependent headers..."
1614
1615 dnl It is not important that this name contain the PID; you cannot run
1616 dnl two configures in the same directory and have anything work
1617 dnl anyway.
1618 tempcname="conftest.c"
1619
1620 dnl CPP_to_sh(CPP_SYMBOL, SH_VAR, DEFAULT_VALUE)
1621 define([CPP_to_sh],
1622 [[#]ifndef [$1]
1623 [#]define [$1]ifelse([$3],,, [ "$3"])
1624 [#]endif
1625 configure___ [$2]=[$1]
1626 ])dnl CPP_to_sh
1627
1628 dnl CPP_boolean_to_sh(CPP_SYMBOL, SH_VAR)
1629 define([CPP_boolean_to_sh],
1630 [[#]ifdef [$1]
1631 configure___ [$2]=yes
1632 [#]else
1633 configure___ [$2]=no
1634 [#]endif
1635 ])dnl CPP_boolean_to_sh
1636
1637 cat > $tempcname <<EOF
1638 #define NOT_C_CODE
1639 #define C_SWITCH_SITE
1640 #define C_SWITCH_X_SITE
1641 #define LD_SWITCH_SITE
1642 #define LD_SWITCH_X_SITE
1643 #define LD_SWITCH_X_SITE_AUX
1644 #define OS_RELEASE $os_release
1645 #include "$srcdir/src/$opsysfile"
1646 #include "$srcdir/src/$machfile"
1647
1648 CPP_to_sh(LIBS_MACHINE, libs_machine)
1649 CPP_to_sh(LIBS_SYSTEM,  libs_system)
1650 CPP_to_sh(LIBS_TERMCAP, libs_termcap)
1651 CPP_to_sh(LIB_STANDARD, libs_standard)
1652
1653 CPP_to_sh(OBJECTS_MACHINE, objects_machine)
1654 CPP_to_sh(OBJECTS_SYSTEM,  objects_system)
1655
1656 CPP_to_sh(C_SWITCH_MACHINE,   c_switch_machine)
1657 CPP_to_sh(C_SWITCH_SYSTEM,    c_switch_system)
1658
1659 CPP_to_sh(LD_SWITCH_MACHINE,  ld_switch_machine)
1660 CPP_to_sh(LD_SWITCH_SYSTEM,   ld_switch_system)
1661
1662 CPP_to_sh(UNEXEC, unexec, unexec.o)
1663
1664 CPP_to_sh(LD_SWITCH_SHARED, ld_switch_shared, -c)
1665
1666 #ifdef ORDINARY_LINK
1667 #define LD "\$(CC) \$(CFLAGS)"
1668 #else /* no ORDINARY LINK */
1669 #ifdef COFF_ENCAPSULATE
1670 #define LD "\$(CC) -nostdlib"
1671 #else /* not COFF_ENCAPSULATE */
1672 #ifdef LINKER
1673 #define LD LINKER
1674 #else /* ! defined (LINKER) */
1675 #define LD "ld"
1676 #endif /* ! defined (LINKER) */
1677 #endif /* ! defined (COFF_ENCAPSULATE) */
1678 #endif /* not ORDINARY_LINK */
1679 configure___ ld=LD
1680
1681 CPP_to_sh(LIB_GCC, lib_gcc)
1682 CPP_to_sh(LD_TEXT_START_ADDR, ld_text_start_addr)
1683
1684 #if ! defined (ORDINARY_LINK) && !defined (START_FILES)
1685 #ifdef NO_REMAP
1686 #ifdef COFF_ENCAPSULATE
1687 #define START_FILES "pre-crt0.o /usr/local/lib/gcc-crt0.o"
1688 #else /* ! defined (COFF_ENCAPSULATE) */
1689 #define START_FILES "pre-crt0.o /lib/crt0.o"
1690 #endif /* ! defined (COFF_ENCAPSULATE) */
1691 #else /* ! defined (NO_REMAP) */
1692 #define START_FILES "ecrt0.o"
1693 #endif /* ! defined (NO_REMAP) */
1694 #endif /* no ORDINARY_LINK */
1695 #ifndef START_FILES
1696 #define START_FILES
1697 #endif
1698 configure___ start_files=START_FILES
1699
1700 CPP_boolean_to_sh(ORDINARY_LINK, ordinary_link)
1701 CPP_boolean_to_sh(SYSTEM_MALLOC, system_malloc)
1702 CPP_boolean_to_sh(TERMINFO, have_terminfo)
1703 CPP_boolean_to_sh(MAIL_USE_FLOCK, mail_use_flock)
1704 CPP_boolean_to_sh(MAIL_USE_LOCKF, mail_use_lockf)
1705 EOF
1706
1707 dnl The value of CPP is a quoted variable reference, so we need to do this
1708 dnl to get its actual value...
1709 CPP=`eval "echo $CPP"`
1710 define(TAB, [   ])dnl
1711 changequote(, )dnl
1712 eval `$CPP -Isrc $tempcname \
1713         | sed -n -e "s/[ TAB]*=[ TAB\"]*/='/" -e "s/[ TAB\"]*\$/'/" -e "s/^configure___//p"`
1714 changequote([, ])dnl
1715
1716 rm $tempcname
1717
1718 dnl For debugging...
1719 test "$extra_verbose" = "yes" && \
1720   PRINT_VAR(libs_machine libs_system libs_termcap libs_standard
1721   objects_machine objects_system c_switch_machine c_switch_system
1722   ld_switch_machine ld_switch_system unexec ld_switch_shared
1723   ld lib_gcc ld_text_start_addr start_files ordinary_link
1724   have_terminfo mail_use_flock mail_use_lockf) && echo ""
1725
1726 dnl Non-ordinary link usually requires -lc
1727 test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc"
1728
1729 dnl Calculalate value of CFLAGS:
1730 dnl Use either command line flag, environment var, or autodetection
1731 if test "$cflags_specified" = "no"; then
1732   dnl Following values of CFLAGS are known to work well.
1733   dnl Should we take debugging options into consideration?
1734   if   test "$GCC" = "yes"; then
1735     CFLAGS="-g -O3 -Wall -Wno-switch"
1736     dnl I'm not convinced this is a good idea any more. -sb
1737     dnl test "$opsys $machine" = "linux intel386" && \
1738     dnl CFLAGS="$CFLAGS -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2"
1739     dnl cygwin can't cope with -O3
1740     test "$opsys $machine" = "cygwin32 intel386" && \
1741       CFLAGS="-g -O2 -Wall -Wno-switch"
1742   elif test "$__sunpro_c" = "yes"; then
1743     case "$opsys" in
1744       sol2    ) CFLAGS="-v -xO4" ;;
1745       sunos4* ) CFLAGS="-xO2";;
1746     esac
1747   elif test "$CC" = "xlc"; then
1748     CFLAGS="-O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000"
1749   else
1750     dnl ### Add tests for other compilers here...
1751     CFLAGS="-O" ;dnl The only POSIX-approved flag
1752   fi
1753 fi
1754
1755 dnl Inform compiler that certain flags are meant for the linker
1756 dnl XE_PROTECT_LINKER_FLAGS(shell_var)
1757 define([XE_PROTECT_LINKER_FLAGS], [
1758 if test "$GCC" = "yes"; then
1759   set x $[$1]; shift; [$1]=""
1760   while test -n "[$]1"; do
1761     case [$]1 in
1762       -L  | -l  | -u         ) [$1]="$[$1] [$]1 [$]2"; shift ;;
1763       -L* | -l* | -u* | -Wl* ) [$1]="$[$1] [$]1" ;;
1764       -Xlinker* ) ;;
1765       * ) [$1]="$[$1] -Xlinker [$]1" ;;
1766     esac
1767     shift
1768   done
1769 fi])dnl
1770 XE_PROTECT_LINKER_FLAGS(ld_switch_system)
1771 XE_PROTECT_LINKER_FLAGS(ld_switch_machine)
1772 XE_PROTECT_LINKER_FLAGS(LDFLAGS)
1773 XE_PROTECT_LINKER_FLAGS(ld_call_shared)
1774
1775 dnl Add s&m-determined objects (including unexec) to link line
1776 test -n "$objects_machine" && XE_ADD_OBJS($objects_machine)
1777 test -n "$objects_system"  && XE_ADD_OBJS($objects_system)
1778 test -n "$unexec"          && XE_ADD_OBJS($unexec)
1779
1780 dnl Dynodump (Solaris 2.x, x<6)
1781 AC_MSG_CHECKING(for dynodump)
1782 if test "$unexec" != "unexsol2.o"; then
1783   AC_MSG_RESULT(no)
1784 else
1785   AC_MSG_RESULT(yes)
1786   AC_DEFINE(DYNODUMP)
1787   XE_APPEND(dynodump, MAKE_SUBDIR)
1788   XE_APPEND(dynodump, SRC_SUBDIR_DEPS)
1789   case "$machine" in
1790     sparc   ) dynodump_arch=sparc ;;
1791     *86*    ) dynodump_arch=i386  ;;
1792     powerpc ) dynodump_arch=ppc   ;;
1793   esac
1794   dnl Dynodump requires the system linker
1795   test "$GCC" = "yes" && XE_APPEND(-fno-gnu-linker, ld_switch_site)
1796 fi
1797
1798 dnl Feed s&m crud to src/Makefile
1799
1800 dnl Linux/powerpc needs the following magic for some reason
1801 test "$machine$opsys" = "powerpclinux" && start_flags="-T $srcdir/src/ppc.ldscript"
1802
1803 if test "$unexec" = "unexaix.o"; then
1804 dnl AIX needs various hacks to make static linking work.
1805   if   test "$dynamic" = "no"; then
1806   start_flags="-Wl,-bnso,-bnodelcsect"
1807   test "$GCC" = "yes" && start_flags="-B/bin/ ${start_flags}"
1808   for f in "/lib/syscalls.exp" "/lib/threads.exp"; do
1809     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; fi
1810   done
1811   for f in "/usr/lpp/X11/bin/smt.exp" "/usr/bin/X11/smt.exp"; do
1812     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; break; fi
1813   done
1814   AC_CHECK_LIB(C, terminateAndUnload, XE_APPEND(-lC, libs_system))
1815   fi
1816 elif test -n "$ld_text_start_addr"; then
1817   start_flags="-T $ld_text_start_addr -e __start"
1818 fi
1819 AC_SUBST(start_flags)
1820
1821 AC_SUBST(ld_switch_shared)
1822 AC_SUBST(start_files)
1823 if test "$ordinary_link" = "no" -a "$GCC" = "yes"; then
1824  test -z "$linker" &&  linker='$(CC) -nostdlib'
1825  test -z "$lib_gcc" && lib_gcc='`$(CC) -print-libgcc-file-name`'
1826 fi
1827 test "$GCC" != "yes" && lib_gcc=
1828 AC_SUBST(ld)
1829 AC_SUBST(lib_gcc)
1830
1831 dnl ---------------------------------------------------------------
1832 dnl Add site and system specific flags to compile and link commands
1833 dnl ---------------------------------------------------------------
1834
1835 dnl All dirs present in site-prefixes will be searched for include/ and lib/
1836 dnl subdirs. This can avoid specifying both site-includes and site-libraries.
1837 dnl Those dirs will take precedence over the standard places, but not over
1838 dnl site-includes and site-libraries.
1839
1840 dnl --site-prefixes (multiple dirs)
1841 if test -n "$site_prefixes"; then
1842   for arg in $site_prefixes; do
1843     case "$arg" in
1844         -* ) ;;
1845         * ) argi="-I${arg}/include" ; argl="-L${arg}/lib" ;;
1846     esac
1847     XE_APPEND($argi, c_switch_site)
1848     XE_APPEND($argl, ld_switch_site)
1849   done
1850 fi
1851
1852 dnl --site-libraries (multiple dirs)
1853 if test -n "$site_libraries"; then
1854   for arg in $site_libraries; do
1855     case "$arg" in -* ) ;; * ) arg="-L${arg}" ;; esac
1856     XE_APPEND($arg, ld_switch_site)
1857   done
1858 fi
1859
1860 dnl --site-includes (multiple dirs)
1861 if test -n "$site_includes"; then
1862   for arg in $site_includes; do
1863     case "$arg" in -* ) ;; * ) arg="-I${arg}" ;; esac
1864     XE_APPEND($arg, c_switch_site)
1865   done
1866 fi
1867
1868 dnl GNU software installs by default into /usr/local/{include,lib}
1869 dnl if test -d "/usr/local/include" -a -d "/usr/local/lib"; then
1870 dnl   XE_APPEND("-L/usr/local/lib",    ld_switch_site)
1871 dnl   XE_APPEND("-I/usr/local/include", c_switch_site)
1872 dnl fi
1873
1874 dnl Extra system-specific library directories - please add to list
1875 for dir in "/usr/ccs/lib"; do
1876   test -d "$dir" && XE_APPEND(-L${dir}, ld_switch_site)
1877 done
1878
1879 dnl --site-runtime-libraries (multiple dirs)
1880 if test -n "$site_runtime_libraries"; then
1881   LD_RUN_PATH="`echo $site_runtime_libraries | sed -e 's/  */:/g'`"
1882   export LD_RUN_PATH
1883 fi
1884
1885 dnl -------------------------------------
1886 dnl Compute runtime library path
1887 dnl -------------------------------------
1888
1889 if   test "$dynamic" = "no"; then add_runtime_path=no
1890 elif test -n "$LD_RUN_PATH"; then add_runtime_path=yes
1891 else case "$opsys" in
1892        sol2 | irix* | *bsd* ) add_runtime_path=yes ;;
1893        * ) add_runtime_path=no ;;
1894      esac
1895 fi
1896
1897 if test "$add_runtime_path" = "yes"; then
1898   dnl Try to autodetect runtime library flag (usually -R),
1899   dnl and whether it works (or at least does no harm)
1900   AC_MSG_CHECKING("for runtime libraries flag")
1901   dash_r=""
1902   for try_dash_r in "-R" "-R " "-rpath "; do
1903     xe_check_libs="${try_dash_r}/no/such/file-or-directory"
1904     XE_PROTECT_LINKER_FLAGS(xe_check_libs)
1905     AC_TRY_LINK(, , dash_r="$try_dash_r")
1906     xe_check_libs=""
1907     test -n "$dash_r" && break
1908   done
1909   if test -n "$dash_r";
1910     then AC_MSG_RESULT("\"${dash_r}\"")
1911     else AC_MSG_RESULT(NONE)
1912   fi
1913 fi
1914
1915 xe_add_unique_runpath_dir='
1916   xe_add_p=yes
1917   for xe_dir in $runpath_dirs; do   dnl Uniquify
1918     test "$xe_dir" = "$xe_runpath_dir" && xe_add_p=no
1919   done
1920   if test "$xe_add_p" = "yes"; then
1921     test -n "$runpath" && runpath="${runpath}:"
1922     runpath="${runpath}${xe_runpath_dir}"
1923     runpath_dirs="$runpath_dirs $xe_runpath_dir"
1924   fi'
1925
1926
1927 dnl XE_ADD_RUNPATH_DIR(directory)
1928 define([XE_ADD_RUNPATH_DIR],[{
1929 xe_runpath_dir=$1
1930 dnl PRINT_VAR(ld_switch_site ld_switch_x_site runpath xe_runpath_dir LD_RUN_PATH xe_ldflags)
1931   test "$xe_runpath_dir" != "/lib"     -a \
1932         "$xe_runpath_dir" != "/usr/lib" -a \
1933         -n "`ls ${xe_runpath_dir}/*.s[[ol]] 2>/dev/null`" && \
1934   eval "$xe_add_unique_runpath_dir"
1935 }])dnl
1936
1937 dnl XE_COMPUTE_RUNPATH()
1938 define([XE_COMPUTE_RUNPATH],[
1939 if test "$add_runtime_path" = "yes" -a -n "$dash_r"; then
1940   dnl Remove runtime paths from current ld switches
1941   ld_switch_site=`echo   '' $ld_switch_site   | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
1942   ld_switch_x_site=`echo '' $ld_switch_x_site | sed -e 's:^ ::' -e "s/$dash_r[[^ ]]*//g"`
1943   dnl PRINT_VAR(ld_switch_site ld_switch_x_site)
1944
1945   dnl Fix up Runtime path
1946   dnl If LD_RUN_PATH is set in environment, use that.
1947   dnl In this case, assume user has set the right value.
1948   runpath="" runpath_dirs=""
1949   if test -n "$LD_RUN_PATH"; then
1950     runpath="$LD_RUN_PATH"
1951   elif test "$GCC" = "yes"; then
1952     dnl Compute runpath from gcc's -v output
1953     ld_switch_run_save="$ld_switch_run"; ld_switch_run=""
1954     echo "int main(int argc, char *argv[[]]) {return 0;}" > conftest.c
1955     xe_runpath_link='${CC-cc} -o conftest -v $CFLAGS '"$xe_ldflags"' conftest.$ac_ext 2>&1 1>/dev/null'
1956     for arg in `eval "$xe_runpath_link" | grep ' -L'`; do
1957       case "$arg" in P,* | -L* | -R* )
1958         for dir in `echo '' "$arg" | sed -e 's:^ ::' -e 's/^..//' -e 'y/:/ /'`; do
1959           XE_ADD_RUNPATH_DIR("$dir")
1960         done ;;
1961       esac
1962     done
1963     ld_switch_run="$ld_switch_run_save"
1964     rm -f conftest*
1965   else
1966     dnl Add all directories with .so files to runpath
1967     for arg in $ld_switch_site $ld_switch_x_site; do
1968       case "$arg" in -L*) XE_ADD_RUNPATH_DIR(`echo '' "$arg" | sed -e 's:^ ::' -e 's/^-L//'`);; esac
1969     done
1970     dnl Sometimes /opt/SUNWdt/lib is the only installed Motif available
1971     if test "$opsys $need_motif" = "sol2 yes"; then
1972       xe_runpath_dir="/opt/SUNWdt/lib";
1973       eval "$xe_add_unique_runpath_dir";
1974     fi
1975   fi dnl Compute $runpath
1976
1977   if test -n "$runpath"; then
1978     ld_switch_run="${dash_r}${runpath}"
1979     XE_PROTECT_LINKER_FLAGS(ld_switch_run)
1980     test "$extra_verbose" = "yes" && echo "Setting runpath to $runpath"
1981   fi
1982 fi
1983 ])dnl
1984 XE_COMPUTE_RUNPATH()
1985
1986 dnl -----------------------------------
1987 dnl Do some misc autoconf-special tests
1988 dnl -----------------------------------
1989
1990 dnl Do the opsystem or machine files prohibit the use of the GNU malloc?
1991 dnl Assume not, until told otherwise.
1992 GNU_MALLOC=yes
1993 if test "$with_dlmalloc" != "no"; then
1994         doug_lea_malloc=yes
1995 else
1996         doug_lea_malloc=no
1997 fi
1998 after_morecore_hook_exists=yes
1999 AC_CHECK_FUNC(malloc_get_state, ,doug_lea_malloc=no)
2000 AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
2001 AC_MSG_CHECKING(whether __after_morecore_hook exists)
2002 AC_TRY_LINK([extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0],
2003   [AC_MSG_RESULT(yes)],
2004   [AC_MSG_RESULT(no)
2005    after_morecore_hook_exists=no])
2006 if test "$system_malloc" = "yes" ; then
2007   GNU_MALLOC=no
2008   GNU_MALLOC_reason="
2009   (The GNU allocators don't work with this system configuration)."
2010 elif test "$with_system_malloc" = "yes" ; then
2011   GNU_MALLOC=no
2012   GNU_MALLOC_reason="
2013   (User chose not to use GNU allocators)."
2014 elif test "$with_debug_malloc" = "yes" ; then
2015   GNU_MALLOC=no
2016   GNU_MALLOC_reason="
2017   (User chose to use Debugging Malloc)."
2018 fi
2019
2020 if test "$doug_lea_malloc" = "yes" ; then
2021   if test "$GNU_MALLOC" = yes ; then
2022     GNU_MALLOC_reason="
2023   (Using Doug Lea's new malloc from the GNU C Library.)"
2024   fi
2025   AC_DEFINE(DOUG_LEA_MALLOC)
2026   if test "$after_morecore_hook_exists" = "no" ; then
2027     GNU_MALLOC_reason="
2028   (Using Doug Lea's new malloc from the Linux C Library.)"
2029     AC_DEFINE(_NO_MALLOC_WARNING_)
2030   fi
2031   use_minimal_tagbits=yes
2032 fi
2033
2034 dnl #### mcheck is broken in all versions of Linux libc and glibc.
2035 dnl Try this again when 2.1 hits the streets.
2036 dnl Avoid using free-hook.c if support exists for malloc debugging in libc
2037 dnl have_libmcheck=no
2038 dnl if test "$error_check_malloc" = "yes" -a \
2039 dnl    "$have_glibc" = "yes" -a \
2040 dnl    "$doug_lea_malloc" = "yes"; then
2041 dnl   AC_CHECK_HEADERS(mcheck.h)
2042 dnl   AC_CHECK_LIB(mcheck, mcheck, have_libmcheck=yes, have_libmcheck=no)
2043 dnl fi
2044
2045 dnl if test "$have_libmcheck" = "yes"; then
2046 dnl   AC_DEFINE(HAVE_LIBMCHECK)
2047 dnl   libmcheck=-lmcheck
2048 dnl   AC_SUBST(libmcheck)
2049 dnl fi
2050
2051 dnl Some other nice autoconf tests.  If you add a test here which
2052 dnl should make an entry in src/config.h, do not forget to add an
2053 dnl #undef clause to src/config.h.in for autoconf to modify.
2054
2055 AC_PROG_RANLIB
2056 AC_PROG_INSTALL
2057 AC_PROG_YACC
2058
2059 dnl checks for header files
2060 AC_CHECK_HEADERS(mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h)
2061 AC_CHECK_HEADERS(utime.h locale.h libgen.h fcntl.h ulimit.h)
2062 AC_CHECK_HEADERS(linux/version.h kstat.h sys/pstat.h inttypes.h sys/un.h a.out.h)
2063 AC_HEADER_SYS_WAIT
2064 AC_HEADER_STDC
2065 AC_HEADER_TIME
2066 AC_DECL_SYS_SIGLIST
2067
2068 dnl Some systems have utime.h but do not declare the struct anyplace.
2069 AC_MSG_CHECKING(for struct utimbuf)
2070 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2071 #include <sys/time.h>
2072 #include <time.h>
2073 #else
2074 #ifdef HAVE_SYS_TIME_H
2075 #include <sys/time.h>
2076 #else
2077 #include <time.h>
2078 #endif
2079 #endif
2080 #ifdef HAVE_UTIME_H
2081 #include <utime.h>
2082 #endif], [static struct utimbuf x; x.actime = x.modtime;],
2083   [AC_MSG_RESULT(yes)
2084    AC_DEFINE(HAVE_STRUCT_UTIMBUF)],
2085   AC_MSG_RESULT(no))
2086
2087 dnl checks for typedefs
2088 AC_TYPE_SIGNAL
2089 AC_TYPE_SIZE_T
2090 AC_TYPE_PID_T
2091 AC_TYPE_UID_T
2092 AC_TYPE_MODE_T
2093 AC_TYPE_OFF_T
2094
2095 AC_MSG_CHECKING(for struct timeval)
2096 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
2097 #include <sys/time.h>
2098 #include <time.h>
2099 #else
2100 #ifdef HAVE_SYS_TIME_H
2101 #include <sys/time.h>
2102 #else
2103 #include <time.h>
2104 #endif
2105 #endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
2106   [AC_MSG_RESULT(yes)
2107   HAVE_TIMEVAL=yes
2108   AC_DEFINE(HAVE_TIMEVAL)],
2109   [AC_MSG_RESULT(no)
2110    HAVE_TIMEVAL=no])
2111
2112 dnl checks for structure members
2113 AC_STRUCT_TM
2114 AC_STRUCT_TIMEZONE
2115
2116 dnl checks for compiler characteristics
2117 AC_C_CONST
2118
2119 dnl check for Make feature
2120 AC_PROG_MAKE_SET
2121
2122 dnl check byte order
2123 AC_C_BIGENDIAN
2124
2125 dnl define SIZEOF_TYPE
2126 AC_CHECK_SIZEOF(short)
2127 if test "$ac_cv_sizeof_short" = 0; then
2128   echo ""
2129   echo "*** PANIC *** Configure tests are not working - compiler is broken."
2130   echo "*** PANIC *** Please examine config.log for compilation errors."
2131   exit 1
2132 fi
2133 AC_CHECK_SIZEOF(int)
2134 AC_CHECK_SIZEOF(long)
2135 AC_CHECK_SIZEOF(long long)
2136 AC_CHECK_SIZEOF(void *)
2137
2138 dnl check for long file names
2139 AC_SYS_LONG_FILE_NAMES
2140
2141 dnl -lm is required by LISP_FLOAT_TYPE, among other things
2142 AC_CHECK_LIB(m, sin)
2143
2144 dnl Floating operation support is now unconditional
2145 AC_DEFINE(LISP_FLOAT_TYPE)
2146
2147 AC_TRY_LINK([#include <math.h>],
2148   [return atanh(1.0) + asinh(1.0) + acosh(1.0); ],
2149   AC_DEFINE(HAVE_INVERSE_HYPERBOLIC))
2150
2151 dnl Determine type of mail locking from configure args and s&m headers
2152 AC_CHECKING(type of mail spool file locking)
2153 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
2154 test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
2155 if   test "$mail_locking" = "lockf"; then AC_DEFINE(REAL_MAIL_USE_LOCKF)
2156 elif test "$mail_locking" = "flock"; then AC_DEFINE(REAL_MAIL_USE_FLOCK)
2157 else mail_locking="dot-locking"
2158 fi
2159
2160 dnl Used by getloadavg() - does not require root priveleges
2161 AC_CHECK_LIB(kstat, kstat_open)
2162
2163 dnl Another way to get the load average
2164 AC_CHECK_LIB(kvm, kvm_read)
2165
2166 case "$opsys" in decosf*)
2167   AC_CHECK_LIB(pthreads, cma_open)
2168   test "$ac_cv_lib_pthreads_cma_open" = "yes" && \
2169     c_switch_site="$c_switch_site -threads" ;;
2170 esac
2171
2172 AC_MSG_CHECKING(whether the -xildoff compiler flag is required)
2173 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
2174   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
2175     then AC_MSG_RESULT(no);
2176     else AC_MSG_RESULT(yes); XE_APPEND(-xildoff, ld_switch_site)
2177   fi
2178   else AC_MSG_RESULT(no)
2179 fi
2180
2181 dnl Link with "-z ignore" on Solaris if supported
2182 if test "$opsys" = "sol2" && test "$OS_RELEASE" -ge 56; then
2183   AC_MSG_CHECKING(for \"-z ignore\" linker flag)
2184   case "`ld -h 2>&1`" in
2185     *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
2186       XE_PREPEND(-z ignore, ld_switch_site) ;;
2187     *) AC_MSG_RESULT(no) ;;
2188   esac
2189 fi
2190
2191 dnl ----------------------
2192 dnl Choose a window system
2193 dnl ----------------------
2194
2195 AC_CHECKING("for specified window system")
2196
2197 if test "$with_x11" != "no"; then
2198   dnl User-specified --x-includes or --x-libraries implies --with-x11.
2199   test "$x_includes $x_libraries" != "NONE NONE" && \
2200    window_system=x11 with_x11=yes
2201
2202   dnl Autodetection of X11 libraries and includes
2203   dnl -------------------------------------------
2204   dnl AC_PATH_XTRA thinks it can find our X headers and includes, but
2205   dnl it often gets it wrong, so we only use it as a last resort.
2206
2207   dnl $OPENWINHOME implies --x-includes and --x-libraries
2208   dnl Not (yet) handled by autoconf2
2209   if test "$x_includes $x_libraries" = "NONE NONE" \
2210     -a -n "$OPENWINHOME" \
2211     -a "$OPENWINHOME" != "/usr/openwin" \
2212     -a -d "$OPENWINHOME"; then
2213       test -d "$OPENWINHOME/lib"           && x_libraries="$OPENWINHOME/lib"
2214       test -d "$OPENWINHOME/include"       && x_includes="$OPENWINHOME/include"
2215       test -d "$OPENWINHOME/share/include" && x_includes="$OPENWINHOME/share/include"
2216   fi
2217
2218   if test "$x_includes" = "NONE"; then
2219     dnl AC_PATH_XTRA often guesses /usr/include, when some other
2220     dnl include directory is a MUCH better guess (Linux, HP-UX 10.20).
2221     dnl This is a workaround for idiot (esp. HP) system vendors, who
2222     dnl provide a /usr/include/X11, but DON'T FULLY POPULATE IT.
2223     for dir in "/usr/X11" "/usr/X11R6"; do
2224       if test -d "$dir/include/X11"; then x_includes="$dir/include"; break; fi
2225     done
2226   fi
2227
2228   if test "$x_libraries" = "NONE"; then
2229     for dir in "/usr/X11/lib" "/usr/X11R6/lib" "/usr/lib/X11R6"; do
2230       if test -r "$dir/libX11.a"; then x_libraries="$dir"; break; fi
2231     done
2232   fi
2233
2234   AC_PATH_XTRA # Autoconf claims to find X library and include dirs for us.
2235   if test "$no_x" = "yes"
2236   then with_x11=no  window_system=none HAVE_X_WINDOWS=no
2237   else with_x11=yes window_system=x11  HAVE_X_WINDOWS=yes
2238   fi
2239 fi
2240
2241 case "$with_x11" in
2242   yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
2243   no  ) window_system=none HAVE_X_WINDOWS=no  ;;
2244 esac
2245
2246 if test "$with_x11" = "yes"; then
2247   AC_DEFINE(HAVE_X_WINDOWS)
2248   XE_APPEND(lwlib, MAKE_SUBDIR)
2249   XE_APPEND(lwlib, SRC_SUBDIR_DEPS)
2250
2251   dnl Try to find Motif/CDE/Tooltalk dirs
2252   dnl These take precedence over other X libs/includes, so PRE-pend
2253   for lib_dir in "/usr/dt/lib" "/usr/lib/Motif2.1" "/usr/lib/Motif1.2" "/usr/lib/Motif1.1"; do
2254     inc_dir=`echo $lib_dir | sed -e 's/lib/include/'`
2255     if test -d "$lib_dir" -a -d "$inc_dir"; then
2256       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2257         x_libraries="$lib_dir $x_libraries"
2258         XE_PREPEND(-L${lib_dir}, X_LIBS) ;;
2259       esac
2260       case "$x_includes" in "$inc_dir"* ) ;; *)
2261         x_includes="$inc_dir $x_includes"
2262         XE_PREPEND(-I${inc_dir}, X_CFLAGS) ;;
2263       esac
2264       break; dnl only need ONE Motif implementation!
2265       fi
2266   done
2267
2268   dnl Contrib X libs/includes do NOT take precedence, so AP-pend
2269   for rel in "X11R6" "X11R5" "X11R4"; do
2270     lib_dir="/usr/contrib/$rel/lib" inc_dir="/usr/contrib/$rel/include"
2271     if test -d "$lib_dir" -a -d "$inc_dir"; then
2272       case "$x_libraries" in *"$lib_dir"* ) ;; *)
2273         x_libraries="$x_libraries $lib_dir"
2274         XE_APPEND(-L${lib_dir}, X_LIBS)
2275       esac
2276       case "$x_includes" in "$inc_dir"* ) ;; *)
2277         x_includes="$x_includes $inc_dir"
2278         XE_APPEND(-I${inc_dir}, X_CFLAGS)
2279       esac
2280       break; dnl Only need ONE X11 implementation !
2281     fi
2282   done
2283
2284   ld_switch_x_site="$X_LIBS"
2285
2286   XE_COMPUTE_RUNPATH()
2287
2288   if test "$extra_verbose" = "yes"; then
2289     echo; echo "X11 compilation variables:"
2290     PRINT_VAR(x_libraries x_includes X_CFLAGS X_LIBS X_PRE_LIBS X_EXTRA_LIBS)
2291     echo
2292   fi
2293
2294   dnl Set up bitmaps search path.
2295   dnl The original suggestion was to unconditionally to append X11/bitmaps
2296   dnl to each element of $x_includes, I'm pretty sure this is the wrong
2297   dnl thing to do.  We test for bitmaps and X11/bitmaps directories on each
2298   dnl element and add them to BITMAPDIR if they exist.
2299   bitmapdirs=
2300   if test "$x_includes" != NONE; then
2301     for i in $x_includes; do
2302       if test -d "$i/bitmaps"; then
2303         bitmapdirs="$i/bitmaps:$bitmapdirs"
2304       fi
2305       if test -d "$i/X11/bitmaps"; then
2306         bitmapdirs="$i/X11/bitmaps:$bitmapdirs"
2307       fi
2308     done
2309     bitmapdirs=`echo "$bitmapdirs" | sed s/.$//`
2310   fi
2311   test ! -z "$bitmapdirs" && AC_DEFINE_UNQUOTED(BITMAPDIR, "$bitmapdirs")
2312
2313   dnl Autodetect defines extracted from X config by xmkmf, e.g. NARROWPROTO
2314   AC_CHECKING(for X defines extracted by xmkmf)
2315   rm -fr conftestdir
2316   if mkdir conftestdir; then
2317     cd conftestdir
2318     cat > Imakefile <<'EOF'
2319 xetest:
2320         @echo ${PROTO_DEFINES} ${STD_DEFINES}
2321 EOF
2322     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2323       # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2324       xmkmf_defines=`${MAKE-make} xetest 2>/dev/null | grep -v make`
2325     fi
2326     cd ..
2327     rm -fr conftestdir
2328     for word in $xmkmf_defines; do
2329       case "$word" in
2330         -D*=* ) ;;
2331         -D* ) word=`echo '' $word | sed -e 's:^ *-D::'`
2332               AC_DEFINE_UNQUOTED($word) ;;
2333       esac
2334     done
2335   fi
2336
2337   dnl make sure we can find Intrinsic.h
2338   AC_CHECK_HEADER(X11/Intrinsic.h, ,
2339    [AC_MSG_ERROR("Unable to find X11 header files.")])
2340
2341   dnl -lXt and -lX11 are required
2342   dnl Some broken systems require the magic "-b i486-linuxaout" flag
2343   AC_CHECK_LIB(X11, XOpenDisplay, have_lib_x11=yes)
2344   if test "$have_lib_x11" != "yes"; then
2345     AC_CHECK_LIB(X11, XGetFontProperty,
2346       ld_switch_x_site="-b i486-linuxaout $ld_switch_x_site",
2347       [AC_MSG_ERROR("Unable to find X11 libraries.")],
2348       -b i486-linuxaout)
2349   fi
2350   libs_x="-lX11"
2351   test "$extra_verbose" = "yes" && echo "    Setting libs_x to \"-lX11\""
2352
2353   dnl Autodetect -lXext
2354   AC_CHECK_LIB(Xext, XShapeSelectInput, XE_PREPEND(-lXext, libs_x))
2355
2356   dnl Require -lXt
2357   AC_CHECK_LIB(Xt, XtOpenDisplay, XE_PREPEND(-lXt, libs_x),
2358     AC_MSG_ERROR("Unable to find X11 libraries."))
2359
2360   AC_MSG_CHECKING(the version of X11 being used)
2361   AC_TRY_RUN([#include <X11/Intrinsic.h>
2362     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }],
2363     [./conftest foobar; x11_release=$?],[x11_release=4],[x11_release=4])
2364   AC_MSG_RESULT(R${x11_release})
2365   AC_DEFINE_UNQUOTED(THIS_IS_X11R${x11_release})
2366
2367   AC_CHECK_HEADERS(X11/Xlocale.h)
2368
2369   dnl remove this - we should avoid checking for specific OS
2370   AC_MSG_CHECKING(for XFree86)
2371   if test -d "/usr/X386/include" -o \
2372           -f "/etc/XF86Config"    -o \
2373           -f "/etc/X11/XF86Config" -o \
2374           -f "/usr/X11R6/lib/X11/XF86Config"; then
2375     AC_MSG_RESULT(yes)
2376     AC_DEFINE(HAVE_XFREE386)
2377   else
2378     AC_MSG_RESULT(no)
2379   fi
2380
2381   dnl autodetect -lXmu
2382   test -z "$with_xmu" && { AC_CHECK_LIB(Xmu, XmuReadBitmapDataFromFile,
2383                            with_xmu=yes, with_xmu=no) }
2384   if test "$with_xmu" = "no"; then
2385     XE_ADD_OBJS(xmu.o)
2386   else
2387     XE_PREPEND(-lXmu, libs_x)
2388     AC_DEFINE(HAVE_XMU)
2389   fi
2390
2391   dnl Autodetect -lXbsd
2392   dnl #### Someone, please add a better function than main
2393   AC_CHECK_LIB(Xbsd, main, XE_PREPEND(-lXbsd, libs_x))
2394
2395   dnl Problem with the MIT distribution of X on AIX
2396   if test "$unexec" = "unexaix.o" -a "$x11_release" = "6"; then
2397     dnl X11R6 requires thread-safe code on AIX for some reason
2398     if test "$GCC" = "yes"; then
2399       XE_PREPEND(-mthreads, X_CFLAGS)
2400       XE_PREPEND(-mthreads, libs_x)
2401     else
2402       case "$CC" in
2403         "xlc" ) CC="xlc_r" ;;
2404         "xlC" ) CC="xlC_r" ;;
2405         "cc"  ) CC="cc_r" ;;
2406       esac
2407     fi
2408   fi
2409
2410 fi dnl $with_x11 = yes
2411
2412 if test "$with_msw" != "no"; then
2413   AC_CHECKING(for MS-Windows)
2414   AC_CHECK_LIB(gdi32,main,with_msw=yes)
2415   if test "$with_msw" = "yes"; then
2416     AC_DEFINE(HAVE_MS_WINDOWS)
2417     install_pp="$blddir/lib-src/installexe.sh"
2418     XE_APPEND(-lshell32 -lgdi32 -luser32 -lcomctl32, libs_system)
2419     if test "$window_system" != x11; then
2420         window_system=msw
2421         test "$with_scrollbars" != "no" && with_scrollbars=msw \
2422             && XE_ADD_OBJS(scrollbar-msw.o)
2423         test "$with_menubars"   != "no" && with_menubars=msw \
2424             && XE_ADD_OBJS(menubar-msw.o)
2425         test "$with_toolbars"   != "no" && with_toolbars=msw \
2426             && XE_ADD_OBJS(toolbar-msw.o)
2427         test "$with_dialogs"   != "no" && with_dialogs=msw \
2428             && XE_ADD_OBJS(dialog-msw.o)
2429     else
2430         test "$with_scrollbars"   != "no" && XE_ADD_OBJS(scrollbar-msw.o)
2431         test "$with_menubars"   != "no" && XE_ADD_OBJS(menubar-msw.o)
2432         test "$with_toolbars"   != "no" && XE_ADD_OBJS(toolbar-msw.o)
2433         test "$with_dialogs"   != "no" && XE_ADD_OBJS(dialog-msw.o)
2434     fi
2435     dnl check for our special version of select         
2436     AC_TRY_RUN([#include <fcntl.h>
2437     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }],
2438     [AC_DEFINE(HAVE_MSG_SELECT)])
2439     const_is_losing=no
2440     with_file_coding=yes
2441     use_minimal_tagbits=yes
2442     use_indexed_lrecord_implementation=yes
2443     XE_ADD_OBJS(console-msw.o device-msw.o event-msw.o frame-msw.o objects-msw.o select-msw.o redisplay-msw.o glyphs-msw.o)
2444   fi
2445 fi
2446
2447 AC_SUBST(install_pp)
2448
2449 test -z "$window_system" && window_system="none"
2450
2451 dnl Test for features that require a window system - ANY window system
2452 if test "$window_system" = "none"; then
2453   for feature in menubars scrollbars toolbars dialogs dragndrop
2454   do
2455     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2456        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
2457     fi
2458     eval "with_${feature}=no"
2459   done
2460 else
2461   test -z "$with_toolbars" && with_toolbars=yes
2462 fi
2463
2464 dnl ### Test for features that require mswindows support - currently none
2465 dnl ### MS-Windows folks: add code here..... (martin)
2466 if test "$with_msw" != "yes"; then
2467   for feature in   MARTIN_IS_CLUELESS_ABOUT_MSW_FEATURES
2468   do
2469     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2470        AC_MSG_WARN([--with-$feature ignored:  Not valid without MS-Windows support])
2471     fi
2472     eval "with_${feature}=no"
2473   done
2474 else
2475   :
2476 fi
2477
2478 dnl Test for features that require X11 support
2479 if test "$with_x11" != "yes"; then
2480   dnl It ought to be reasonable to have no output device at all, and only use
2481   dnl XEmacs in --batch mode.
2482   dnl if test "$with_tty" = "no" ; then
2483   dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
2484   dnl fi
2485   for feature in tooltalk cde offix session xim xmu \
2486                  xface
2487   do
2488     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2489        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
2490     fi
2491     eval "with_${feature}=no"
2492   done
2493 fi
2494
2495 dnl FSF 19.29 has some bitmapdir stuff here.
2496 bitmapdir=
2497
2498 case "$window_system" in
2499   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
2500   msw  ) HAVE_X_WINDOWS=no ; echo "  Using MS-Windows." ;;
2501   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
2502 esac
2503
2504 case "$x_libraries" in *X11R4* )
2505   test "$opsys" = "hpux9"     && opsysfile="s/hpux9-x11r4.h"
2506   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
2507 esac
2508
2509 dnl Enable or disable proper session-management
2510 AC_CHECKING(for session-management option);
2511 dnl if test "$with_session" = "yes"; then
2512 if test "$with_session" != "no"; then
2513   AC_DEFINE(HAVE_SESSION)
2514 fi
2515
2516 dnl Autodetect Xauth
2517 dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
2518 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
2519 test -z "$with_xauth" && { AC_CHECK_HEADER(X11/Xauth.h,          ,with_xauth=no) }
2520 test -z "$with_xauth" && { AC_CHECK_LIB(Xau, XauGetAuthByAddr,[:],with_xauth=no) }
2521 test -z "$with_xauth" && with_xauth=yes
2522 if test "$with_xauth" = "yes"; then
2523   AC_DEFINE(HAVE_XAUTH)
2524   XE_SPACE(libs_xauth, $X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS)
2525 fi
2526 AC_SUBST(libs_xauth)
2527
2528 dnl This one is for the static initializeds variables in
2529 dnl offix.c, so that the thing is dumped after lastfile.o
2530 AC_SUBST(dnd_objs)
2531
2532 dnl Autodetect tooltalk
2533 if test "$with_tooltalk" != "no" ; then
2534   dnl autodetect the location of tt_c.h
2535   dnl tt_c.h might be in Tt or desktop include directories
2536   for dir in "" "Tt/" "desktop/" ; do
2537     AC_CHECK_HEADER(${dir}tt_c.h, tt_c_h_path="${dir}tt_c.h"; break)
2538   done
2539   if test -z "$tt_c_h_path"; then
2540     if test "$with_tooltalk" = "yes"; then
2541       USAGE_ERROR("Unable to find required tooltalk header files.")
2542     fi
2543     with_tooltalk=no
2544   fi
2545 fi
2546 if test "$with_tooltalk" != "no" ; then
2547   for extra_libs in "" "-lI18N -lce" "-lcxx"; do
2548     AC_CHECK_LIB(tt, tt_message_create,
2549       tt_libs="-ltt $extra_libs"; break, [:],$extra_libs)
2550   done
2551   if test -z "$tt_libs"; then
2552     if test "$with_tooltalk" = "yes"; then
2553       USAGE_ERROR("Unable to find required tooltalk libraries.")
2554     fi
2555     with_tooltalk=no
2556   fi
2557 fi
2558 test -z "$with_tooltalk" && with_tooltalk=yes
2559 if test "$with_tooltalk" = "yes"; then
2560   AC_DEFINE(TOOLTALK)
2561   AC_DEFINE_UNQUOTED(TT_C_H_PATH, "$tt_c_h_path")
2562   XE_PREPEND($tt_libs, libs_x)
2563   XE_ADD_OBJS(tooltalk.o)
2564 fi
2565
2566 dnl Autodetect CDE
2567 test -z "$with_cde" && { AC_CHECK_HEADER(Dt/Dt.h,               , with_cde=no) }
2568 test -z "$with_cde" && { AC_CHECK_LIB(DtSvc, DtDndDragStart, [:], with_cde=no) }
2569 test -z "$with_cde" && with_cde=yes
2570 if test "$with_dragndrop" = no; then
2571   AC_MSG_WARN([No CDE without generic Drag'n'Drop support])
2572   with_cde=no
2573 fi
2574 if test "$with_cde" = "yes" ; then
2575   AC_DEFINE(HAVE_CDE)
2576   XE_PREPEND(-lDtSvc, libs_x)
2577   XE_APPEND(CDE, dragndrop_proto)
2578   with_tooltalk=yes # CDE requires Tooltalk
2579   need_motif=yes    # CDE requires Motif
2580 fi
2581
2582 dnl Always compile OffiX unless --without-offix is given, no
2583 dnl X11 support is compiled in, no standard Xmu is avaiable,
2584 dnl or dragndrop support is disabled
2585 dnl Because OffiX support currently loses when more than one display
2586 dnl is in use, we now disable it by default -slb 07/10/1998.
2587 test "$window_system" != "x11" && with_offix=no
2588 if test "$with_xmu" != yes -a "$with_x11" = yes; then
2589   AC_MSG_WARN([No OffiX without real Xmu support])
2590   with_offix=no
2591 fi
2592 if test "$with_dragndrop" = no; then
2593   AC_MSG_WARN([No OffiX without generic Drag'n'Drop support])
2594   with_offix=no
2595 fi
2596 if test "$with_cde" = yes; then
2597   AC_MSG_WARN([CDE already found, disabling OffiX support])
2598   with_offix=no
2599 fi
2600 test -z "$with_offix" && with_offix=no
2601 if test "$with_offix" = "yes"; then
2602   AC_DEFINE(HAVE_OFFIX_DND)
2603   XE_APPEND(offix.o, dnd_objs)
2604   XE_APPEND(OffiX, dragndrop_proto)
2605 fi
2606
2607 dnl Autodetect Drag'n'Drop support
2608 dnl always included if CDE, Offix, or MSWindows are defined
2609 AC_MSG_CHECKING(if drag and drop API is needed)
2610 if test "$with_dragndrop" != "no" ; then
2611   if test -n "$dragndrop_proto" ; then
2612     with_dragndrop=yes
2613     AC_MSG_RESULT([yes (${dragndrop_proto} )])
2614     AC_DEFINE(HAVE_DRAGNDROP)
2615     XE_APPEND(dragdrop.o, extra_objs)
2616   else
2617     with_dragndrop=no
2618     AC_MSG_RESULT(no)
2619   fi
2620 fi
2621
2622 dnl Autodetect LDAP
2623 AC_CHECKING(for LDAP)
2624 test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) }
2625 test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) }
2626 if test "$with_ldap" != "no"; then
2627   test -z "$with_umich_ldap" && { AC_CHECK_LIB(ldap, ldap_open, with_umich_ldap=yes, with_umich_ldap=no, -llber) }
2628   test "$with_umich_ldap" = "no" && { AC_CHECK_LIB(ldap10, ldap_set_option, with_ns_ldap=yes, with_ns_ldap=no) }
2629   test -z "$with_ldap" -a \( "$with_umich_ldap" = "yes" -o "$with_ns_ldap" = "yes" \) && with_ldap=yes
2630 fi
2631 if test "$with_ldap" = "yes"; then
2632   AC_DEFINE(HAVE_LDAP)
2633   XE_ADD_OBJS(eldap.o)
2634   if test "$with_umich_ldap" = "yes" ; then
2635     AC_DEFINE(HAVE_UMICH_LDAP)
2636     XE_PREPEND(-llber, LIBS)
2637     XE_PREPEND(-lldap, LIBS)
2638   elif test "$with_ldap" = "yes" -a "$with_ns_ldap" = "yes" ; then
2639     AC_DEFINE(HAVE_NS_LDAP)
2640     XE_PREPEND(-lldap10, LIBS)
2641   elif test "$with_ldap" = "yes" ; then
2642     XE_PREPEND(-lldap, LIBS)
2643   fi
2644 fi
2645
2646 dnl ----------------------
2647 dnl Graphics libraries
2648 dnl ----------------------
2649
2650 if test "$window_system" != "none"; then
2651   AC_CHECKING(for graphics libraries)
2652
2653   dnl Autodetect Xpm
2654   if test -z "$with_xpm"; then
2655     AC_MSG_CHECKING(for Xpm - no older than 3.4f)
2656     xe_check_libs=-lXpm
2657     AC_TRY_RUN([#include <X11/xpm.h>
2658     int main(int c, char **v) {
2659     return c == 1 ? 0 :
2660       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
2661       XpmIncludeVersion < 30406 ? 2 : 0 ;}],
2662     [./conftest dummy_arg; xpm_status=$?;
2663       if test "$?" = "0"; then
2664         with_xpm=yes;
2665       else
2666         with_xpm=no;
2667         if test "$?" = "1"; then
2668           xpm_problem="Xpm library version and header file version don't match!"
2669         elif test "$?" = "2"; then
2670           xpm_problem="Xpm library version is too old!"
2671         else
2672           xpm_problem="Internal xpm detection logic error!"
2673         fi
2674         echo "
2675 *** WARNING *** $problem
2676   I'm not touching that with a 10-foot pole!
2677   If you really want to use the installed version of Xpm, rerun
2678   configure --with-xpm=yes, but don't blame me if XEmacs crashes!"
2679     fi],
2680     [with_xpm=no])
2681     xe_check_libs=
2682     AC_MSG_RESULT($with_xpm)
2683   fi
2684   if test "$with_xpm" = "yes"; then
2685     AC_DEFINE(HAVE_XPM)
2686     XE_PREPEND(-lXpm, libs_x)
2687     AC_MSG_CHECKING(for \"FOR_MSW\" xpm)
2688     xe_check_libs=-lXpm
2689     AC_TRY_LINK(, [XpmCreatePixmapFromData()],
2690     [xpm_for_msw=no],
2691     [xpm_for_msw=yes])
2692     xe_check_libs=
2693     AC_MSG_RESULT($xpm_for_msw)
2694     if test "$xpm_for_msw" = "yes"; then
2695       AC_DEFINE(FOR_MSW)
2696     fi
2697   fi
2698
2699   dnl Too many stupid linkers can't detect cascaded lib dependencies until runtime
2700   dnl So we always search for libz compression support.
2701   if test "$with_png $with_tiff" != "no no"; then
2702     AC_CHECK_LIB(c,  inflate, [:], [
2703     AC_CHECK_LIB(z,  inflate, [XE_PREPEND(-lz,  libs_x)],[
2704     AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])])
2705   fi
2706
2707   dnl Autodetect GIFlib
2708   AC_MSG_CHECKING(for gifreader)
2709   test -z "$with_gif" && { AC_CHECK_HEADER(gifrlib.h,        ,with_gif=no) }
2710   test -z "$with_gif" && { AC_CHECK_LIB(gifreader, GetGifError,[:] ,with_gif=no) }
2711   test -z "$with_gif" && with_gif=yes
2712   if test "$with_gif" = "yes"; then
2713     AC_DEFINE(HAVE_GIF)
2714     XE_PREPEND(-lgifreader, libs_x)
2715   fi
2716
2717   dnl autodetect JPEG
2718   test -z "$with_jpeg" && { AC_CHECK_HEADER(jpeglib.h,                    ,with_jpeg=no) }
2719   test -z "$with_jpeg" && { AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,[:],with_jpeg=no) }
2720   test -z "$with_jpeg" && with_jpeg=yes
2721   if test "$with_jpeg" = "yes"; then
2722     AC_DEFINE(HAVE_JPEG)
2723     XE_PREPEND(-ljpeg, libs_x)
2724   fi
2725
2726   dnl autodetect PNG
2727   if test -z "$with_png"; then
2728     AC_MSG_CHECKING(for png.h - no older than 0.96)
2729     AC_EGREP_CPP(yes,
2730 [#include <png.h>
2731 #if PNG_LIBPNG_VER >= 96
2732 yes
2733 #endif
2734 ], [AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no); with_png=no])
2735   fi
2736   test -z "$with_png" && { AC_CHECK_FUNC(pow,                  ,with_png=no) }
2737   test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) }
2738   test -z "$with_png" && with_png=yes
2739   if test "$with_png" = "yes"; then
2740     AC_DEFINE(HAVE_PNG)
2741     XE_PREPEND(-lpng, libs_x)
2742   fi
2743
2744   dnl autodetect TIFF
2745   test -z "$with_tiff" && { AC_CHECK_HEADER(tiffio.h,            ,with_tiff=no) }
2746   test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no) }
2747   test -z "$with_tiff" && with_tiff=yes
2748   if test "$with_tiff" = "yes"; then
2749     AC_DEFINE(HAVE_TIFF)
2750     XE_PREPEND(-ltiff, libs_x)
2751   fi
2752 fi
2753
2754 dnl ----------------------
2755 dnl Graphics libraries
2756 dnl ----------------------
2757
2758 if test "$with_x11" = "yes"; then
2759
2760   AC_CHECKING(for X11 graphics libraries)
2761
2762   dnl Autodetect XFACE
2763   test -z "$with_xface" && { AC_CHECK_HEADER(compface.h,          ,with_xface=no) }
2764   test -z "$with_xface" && { AC_CHECK_LIB(compface, UnGenFace,[:] ,with_xface=no) }
2765   test -z "$with_xface" && with_xface=yes
2766   if test "$with_xface" = "yes"; then
2767     AC_DEFINE(HAVE_XFACE)
2768     XE_PREPEND(-lcompface, libs_x)
2769   fi
2770
2771   dnl Autodetect -lXaw
2772   AC_CHECK_LIB(Xaw, XawScrollbarSetThumb, have_xaw=yes, have_xaw=no)
2773   dnl if test "$have_xaw" = "yes"; then
2774     dnl AC_CHECK_HEADER(X11/Xaw/Reports.h, [
2775       dnl XE_APPEND(pkg-src/tree-x, MAKE_SUBDIR)
2776       dnl XE_APPEND(pkg-src/tree-x, INSTALL_ARCH_DEP_SUBDIR)])
2777   dnl fi
2778
2779   dnl autodetect Motif - but only add to libs_x later (if necessary)
2780   AC_CHECK_HEADER(Xm/Xm.h,
2781    [AC_CHECK_LIB(Xm, XmStringFree, have_motif=yes, have_motif=no)],
2782    have_motif=no)
2783
2784   if test "$have_motif" = "yes"; then
2785     dnl autodetect lesstif
2786     AC_MSG_CHECKING(for Lesstif)
2787     AC_EGREP_CPP(yes,
2788 [#include <Xm/Xm.h>
2789 #ifdef LESSTIF_VERSION
2790 yes
2791 #endif
2792 ], have_lesstif=yes, have_lesstif=no)
2793   AC_MSG_RESULT($have_lesstif)
2794   fi
2795
2796 fi dnl "$with_x11" = "yes"
2797
2798 dnl Finish ensuring that we have values for the various toolkit items.
2799 dnl Not all toolkits support all widgets
2800 dnl if Motif is available we use it for the dialog boxes.
2801
2802 case "$with_menubars" in "" | "yes" | "athena" | "athena3d" )
2803   with_menubars="lucid" ;;
2804 esac
2805 case "$with_dialogs" in "" | "yes" | "lucid" )
2806   if   test "$have_motif" = "yes"; then with_dialogs="motif"
2807   elif test "$have_xaw"   = "yes"; then with_dialogs="athena"
2808   else with_dialogs=no
2809   fi ;;
2810 esac
2811 case "$with_scrollbars" in "" | "yes" )
2812   with_scrollbars="lucid" ;;
2813 esac
2814
2815 all_widgets="$with_menubars $with_scrollbars $with_dialogs $with_toolbars"
2816
2817 case "$all_widgets" in *athena* )
2818   AC_DEFINE(LWLIB_USES_ATHENA)
2819   AC_DEFINE(NEED_ATHENA)
2820   XE_APPEND(lwlib-Xaw.o, lwlib_objs)
2821   XE_PREPEND(-lXaw, libs_x) ;;
2822 esac
2823
2824 case "$all_widgets" in *motif* )
2825   AC_DEFINE(LWLIB_USES_MOTIF)
2826   AC_DEFINE(NEED_MOTIF)
2827   XE_APPEND(lwlib-Xm.o, lwlib_objs)
2828   need_motif=yes ;;
2829 esac
2830
2831 test "$with_menubars"   = "lucid" && XE_APPEND(xlwmenu.o, lwlib_objs)
2832 test "$with_menubars"   = "motif" && XE_APPEND(xlwmenu.o, lwlib_objs)
2833 test "$with_scrollbars" = "lucid" && XE_APPEND(xlwscrollbar.o, lwlib_objs)
2834 case "$all_widgets" in *lucid* )
2835   AC_DEFINE(NEED_LUCID)
2836   XE_APPEND(lwlib-Xlw.o, lwlib_objs) ;;
2837 esac
2838
2839 AC_SUBST(lwlib_objs)
2840
2841 case "$with_scrollbars" in athena* ) AC_DEFINE(LWLIB_SCROLLBARS_ATHENA);; esac
2842 case "$with_dialogs"    in athena* ) AC_DEFINE(LWLIB_DIALOGS_ATHENA)   ;; esac
2843 test "$with_scrollbars" = "athena3d" && AC_DEFINE(LWLIB_SCROLLBARS_ATHENA3D)
2844 test "$with_dialogs"    = "athena3d" && AC_DEFINE(LWLIB_DIALOGS_ATHENA3D)
2845
2846 test "$with_menubars"   != "no"    && AC_DEFINE(HAVE_MENUBARS)
2847 test "$with_scrollbars" != "no"    && AC_DEFINE(HAVE_SCROLLBARS)
2848 test "$with_dialogs"    != "no"    && AC_DEFINE(HAVE_DIALOGS)
2849 test "$with_toolbars"   != "no"    && AC_DEFINE(HAVE_TOOLBARS)
2850
2851 test "$with_menubars"   = "lucid"  && AC_DEFINE(LWLIB_MENUBARS_LUCID)
2852 test "$with_scrollbars" = "lucid"  && AC_DEFINE(LWLIB_SCROLLBARS_LUCID)
2853
2854 test "$with_menubars"   = "motif"  && AC_DEFINE(LWLIB_MENUBARS_MOTIF)
2855 test "$with_scrollbars" = "motif"  && AC_DEFINE(LWLIB_SCROLLBARS_MOTIF)
2856 test "$with_dialogs"    = "motif"  && AC_DEFINE(LWLIB_DIALOGS_MOTIF)
2857
2858 test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar.o)
2859 test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar.o)
2860 test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog.o)
2861 test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar.o)
2862 test "$all_widgets" != "no no no no" && XE_ADD_OBJS(gui.o)
2863
2864 if test "$with_x11" = "yes"; then
2865   test "$with_menubars"   != "no"      && XE_ADD_OBJS(menubar-x.o)
2866   test "$with_scrollbars" != "no"      && XE_ADD_OBJS(scrollbar-x.o)
2867   test "$with_dialogs"    != "no"      && XE_ADD_OBJS(dialog-x.o)
2868   test "$with_toolbars"   != "no"      && XE_ADD_OBJS(toolbar-x.o)
2869   test "$all_widgets" != "no no no no" && XE_ADD_OBJS(gui-x.o)
2870 else
2871   if test \( "$with_sound" = "nas" \) -o \( "$with_sound" = "both" \); then
2872     echo "Attempt to Build NAS sound without X"
2873     echo "Please remove NAS configuration or build with X"
2874     exit 1
2875   fi
2876 fi
2877
2878 test "$use_minimal_tagbits" = "yes" && AC_DEFINE(USE_MINIMAL_TAGBITS)
2879 test "$use_indexed_lrecord_implementation" = "yes" && \
2880   AC_DEFINE(USE_INDEXED_LRECORD_IMPLEMENTATION)
2881
2882 dnl ----------------------
2883 dnl Mule-dependent options
2884 dnl ----------------------
2885
2886 test -z "$with_mule" && with_mule=no
2887 test -z "$with_file_coding" && with_file_coding=no
2888
2889 dnl if test "$with_mule" = "yes" && test ! -d "$srcdir/lisp/mule"; then
2890 dnl     echo "Attempt to Build with Mule without Mule/Lisp"
2891 dnl     echo "Please install the XEmacs/Mule tarball or"
2892 dnl     echo "rerun configure with --with-mule=no"
2893 dnl     exit 1
2894 dnl fi
2895
2896 if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then
2897   AC_DEFINE(FILE_CODING)
2898   XE_ADD_OBJS(file-coding.o)
2899 fi
2900
2901 if test "$with_mule" = "yes" ; then
2902   AC_CHECKING(for Mule-related features)
2903   AC_DEFINE(MULE)
2904   AC_DEFINE(FILE_CODING)
2905   XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o mule-coding.o file-coding.o)
2906
2907   dnl Use -lintl to get internationalized strerror for Mule
2908   AC_CHECK_HEADERS(libintl.h)
2909   AC_CHECK_LIB(intl, strerror)
2910
2911   AC_CHECKING(for Mule input methods)
2912   dnl Do we have the XmIm* routines?  And if so, do we want to use them?
2913   dnl XIM seems to be flaky except on Solaris...
2914   dnl test -z "$with_xim" -a "$opsys" != "sol2" && with_xim=no
2915   case "$with_xim" in "" | "yes" )
2916     AC_CHECKING(for XIM)
2917     dnl XIM + Lesstif is not (yet?) usable
2918     if test "$have_lesstif" = "yes"; then with_xim=xlib
2919     else AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=motif, with_xim=xlib)
2920     fi
2921   esac
2922   if test "$with_xim" != "no"; then
2923     AC_DEFINE(HAVE_XIM)
2924     if test "$with_xim" = "xlib"; then
2925       AC_DEFINE(XIM_XLIB)
2926       XE_ADD_OBJS(input-method-xlib.o)
2927     fi
2928     if test "$with_xim" = "motif"; then
2929       AC_DEFINE(XIM_MOTIF)
2930       need_motif=yes
2931       XE_ADD_OBJS(input-method-motif.o)
2932     fi
2933     if test "$with_xim" = "motif"; then
2934       with_xfs=no
2935     fi
2936   fi
2937
2938   dnl "with_xim" = "yes"
2939   if test "$with_xfs" = "yes" ; then
2940     AC_CHECKING(for XFontSet)
2941     AC_CHECK_LIB(X11, XmbDrawString, [:], with_xfs=no)
2942     if test "$with_xfs" = "yes" && test "$with_menubars" = "lucid"; then
2943       AC_DEFINE(USE_XFONTSET)
2944       if test "$with_xim" = "no" ; then
2945         XE_ADD_OBJS(input-method-xfs.o)
2946       fi
2947     fi
2948   fi dnl with_xim
2949
2950   dnl Autodetect WNN
2951   test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
2952   test -z "$with_wnn" && { AC_CHECK_HEADER(wnn/jllib.h, ,with_wnn=no) }
2953   dnl Detour to find crypt
2954   if test "$with_wnn" != "no"; then
2955     AC_CHECK_FUNCS(crypt)
2956     test "$ac_cv_func_crypt" != "yes" && { AC_CHECK_LIB(crypt, crypt) }
2957   fi
2958   dnl Back to our regularly scheduled wnn hunting
2959   test -z "$with_wnn" && { AC_CHECK_LIB(wnn,jl_dic_list_e,[:],with_wnn=no) }
2960   test -z "$with_wnn" && with_wnn=yes
2961   if test "$with_wnn" = "yes"; then
2962     AC_DEFINE(HAVE_WNN)
2963     XE_PREPEND(-lwnn, libs_x)
2964     XE_ADD_OBJS(mule-wnnfns.o)
2965     if test "$with_wnn6" != "no"; then
2966       AC_CHECK_LIB(wnn, jl_fi_dic_list, with_wnn6=yes)
2967       test "$with_wnn6" = "yes" && AC_DEFINE(WNN6)
2968     fi
2969   fi
2970
2971   dnl Autodetect canna
2972   canna_includes_found=no
2973   if test "$with_canna" != "no"; then
2974     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
2975   fi
2976   if test "$canna_includes_found" = "no" -a "$with_canna" != "no" -a \
2977       -d "/usr/local/canna/include"; then
2978     save_c_switch_site="$c_switch_site"
2979     c_switch_site="$c_switch_site -I/usr/local/canna/include"
2980     AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=yes)
2981     if test "$canna_includes_found" != "yes"; then
2982       c_switch_site="$save_c_switch_site"
2983       with_canna="no"
2984     fi
2985   fi
2986
2987   test -z "$with_canna" && { AC_CHECK_HEADER(canna/RK.h,         , with_canna=no) }
2988   test -z "$with_canna" && { AC_CHECK_LIB(RKC, RkBgnBun,       [:],with_canna=no) }
2989   test -z "$with_canna" && { AC_CHECK_LIB(canna,jrKanjiControl,[:],with_canna=no) }
2990   test -z "$with_canna" && with_canna=yes
2991   if test "$with_canna" = "yes"; then
2992     AC_DEFINE(HAVE_CANNA)
2993     XE_PREPEND(-lcanna -lRKC, libs_x)
2994     XE_ADD_OBJS(mule-canna.o)
2995   fi
2996
2997 else dnl "$with_mule" = "no"
2998   for feature in xim canna wnn; do
2999     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3000       AC_MSG_WARN("--with-${feature} ignored:  Not valid without Mule support")
3001     fi
3002     eval "with_${feature}=no"
3003   done
3004 fi dnl with_mule
3005
3006
3007 dnl At this point, we know whether we need the motif lib or not.
3008 if test "$need_motif" = "yes" ; then
3009   XE_PREPEND(-lXm, libs_x)
3010   dnl AIX needs the following library for use with Motif
3011   AC_CHECK_LIB(i18n, layout_object_getvalue, [XE_PREPEND(-li18n, libs_x)])
3012   XE_COMPUTE_RUNPATH()
3013 fi
3014
3015 AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf)
3016
3017 dnl realpath is buggy on linux, decosf and aix4
3018
3019 dnl The realpath() in linux libc (4.6.27) sometimes fails with ELOOP.
3020 dnl The realpath in ELF linux libc's is O.K.
3021 dnl For example, call realpath on a file thirty-five or so directories deep
3022 dnl and you get ELOOP even if no symlinks at all are involved.
3023 dnl Reports as of 11/1997 indicate BSDi has problems too.
3024 case "$opsys" in
3025   linuxaout* | bsdos3* | freebsd* | decosf4-0* | aix4* ) XE_ADD_OBJS(realpath.o) ;;
3026   * )
3027     AC_CHECK_FUNCS(realpath)
3028     test "$ac_cv_func_realpath" != "yes" && XE_ADD_OBJS(realpath.o) ;;
3029 esac
3030
3031 dnl If netdb.h does not declare h_errno, we must declare it by hand.
3032 AC_MSG_CHECKING(whether netdb declares h_errno)
3033 AC_TRY_LINK([#include <netdb.h>],
3034   [return h_errno;],
3035   [AC_MSG_RESULT(yes)
3036    AC_DEFINE(HAVE_H_ERRNO)],
3037   [AC_MSG_RESULT(no)])
3038
3039 AC_MSG_CHECKING(for sigsetjmp)
3040 AC_TRY_COMPILE([#include <setjmp.h>],
3041         [sigjmp_buf bar; sigsetjmp (bar, 0);],
3042   [AC_MSG_RESULT(yes)
3043    AC_DEFINE(HAVE_SIGSETJMP)],
3044   [AC_MSG_RESULT(no)])
3045
3046 AC_MSG_CHECKING(whether localtime caches TZ)
3047 AC_CACHE_VAL(emacs_cv_localtime_cache,
3048 [if test "$ac_cv_func_tzset" = "yes"; then
3049 AC_TRY_RUN([#include <time.h>
3050 #if STDC_HEADERS
3051 # include <stdlib.h>
3052 #endif
3053 extern char **environ;
3054 unset_TZ ()
3055 {
3056   char **from, **to;
3057   for (to = from = environ; (*to = *from); from++)
3058     if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
3059       to++;
3060 }
3061 char TZ_GMT0[] = "TZ=GMT0";
3062 char TZ_PST8[] = "TZ=PST8";
3063 main()
3064 {
3065   time_t now = time ((time_t *) 0);
3066   int hour_GMT0, hour_unset;
3067   if (putenv (TZ_GMT0) != 0)
3068     exit (1);
3069   hour_GMT0 = localtime (&now)->tm_hour;
3070   unset_TZ ();
3071   hour_unset = localtime (&now)->tm_hour;
3072   if (putenv (TZ_PST8) != 0)
3073     exit (1);
3074   if (localtime (&now)->tm_hour == hour_GMT0)
3075     exit (1);
3076   unset_TZ ();
3077   if (localtime (&now)->tm_hour != hour_unset)
3078     exit (1);
3079   exit (0);
3080 }], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
3081 [# If we have tzset, assume the worst when cross-compiling.
3082 emacs_cv_localtime_cache=yes])
3083 else
3084         # If we lack tzset, report that localtime does not cache TZ,
3085         # since we can't invalidate the cache if we don't have tzset.
3086         emacs_cv_localtime_cache=no
3087 fi],[:])dnl
3088 AC_MSG_RESULT($emacs_cv_localtime_cache)
3089 if test $emacs_cv_localtime_cache = yes; then
3090   AC_DEFINE(LOCALTIME_CACHE)
3091 fi
3092
3093 if test "$HAVE_TIMEVAL" = "yes"; then
3094 AC_MSG_CHECKING(whether gettimeofday accepts one or two arguments)
3095 AC_TRY_LINK([
3096 #ifdef TIME_WITH_SYS_TIME
3097 #include <sys/time.h>
3098 #include <time.h>
3099 #else
3100 #ifdef HAVE_SYS_TIME_H
3101 #include <sys/time.h>
3102 #else
3103 #include <time.h>
3104 #endif
3105 #endif
3106   ],
3107   [
3108   struct timeval time;
3109   struct timezone dummy;
3110   gettimeofday (&time, &dummy);
3111 ],
3112   [AC_MSG_RESULT(two)],
3113   [AC_MSG_RESULT(one)
3114    AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)])
3115 fi
3116
3117
3118 AC_C_INLINE
3119 if test "$ac_cv_c_inline" != "no"; then
3120   AC_DEFINE(HAVE_INLINE)
3121   test "$GCC" = "yes" && XE_ADD_OBJS(inline.o)
3122 fi
3123
3124 dnl HP-UX has a working alloca in libPW.
3125 dnl case "${GCC}${opsys}" in hpux* )
3126 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
3127 dnl esac
3128
3129 AC_FUNC_ALLOCA
3130 test -n "$ALLOCA" && XE_ADD_OBJS($ALLOCA)
3131
3132 dnl Check whether vfork exists and works correctly. (This does more
3133 dnl than just check for its existence.) If so, it defines HAVE_VFORK_H.
3134 dnl If not, it defines vfork to be fork.
3135 AC_FUNC_VFORK
3136
3137 dnl Check whether strcoll exists and works correctly. (This does more
3138 dnl than just check for its existence.) If so, it defines HAVE_STRCOLL.
3139 AC_FUNC_STRCOLL
3140
3141 dnl If `getpgrp' takes no argument (the POSIX.1 version), define
3142 dnl `GETPGRP_VOID'.  Otherwise, it is the BSD version, which takes a
3143 dnl process ID as an argument.
3144 AC_CHECK_FUNCS(getpgrp)
3145 AC_FUNC_GETPGRP
3146
3147 dnl We used to call AC_FUNC_MMAP here
3148 dnl Instead we now use following, suggested by Neal Becker
3149 AC_MSG_CHECKING(for working mmap)
3150 case "$opsys" in ultrix* ) have_mmap=no ;; *)
3151 AC_TRY_RUN([#include <stdio.h>
3152 #include <unistd.h>
3153 #include <fcntl.h>
3154 #include <sys/mman.h>
3155
3156 #ifndef MAP_VARIABLE
3157 #define MAP_VARIABLE 0
3158 #endif
3159
3160 #ifndef MAP_FAILED
3161 #define MAP_FAILED -1
3162 #endif
3163
3164 int main (int argc, char *argv[])
3165 {
3166   int fd = -1;
3167   caddr_t p;
3168 #ifndef MAP_ANONYMOUS
3169   fd = open ("/dev/zero", O_RDWR);
3170   if (fd < 0)
3171     return 1;
3172 #define MAP_ANONYMOUS 0
3173 #endif
3174   if (mmap(0, 1024, PROT_READ | PROT_WRITE,
3175            MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS,
3176            fd, 0) != (void *) MAP_FAILED)
3177     return 0;
3178   perror ("conftest: mmap failed");
3179   return 1;
3180 }], have_mmap=yes, have_mmap=no) ;;
3181 esac
3182 AC_MSG_RESULT($have_mmap)
3183 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
3184
3185 dnl rel_alloc requires either GNU malloc or system malloc with mmap
3186 dnl We only turn rel_alloc on by default if mmap is available.
3187 test "$GNU_MALLOC" != "yes"   -a "$have_mmap" != "yes" && rel_alloc=no
3188 test "$rel_alloc" = "default" -a "$have_mmap"  = "yes" && rel_alloc=yes
3189 test "$rel_alloc" = "yes" && AC_DEFINE(REL_ALLOC)
3190
3191 dnl Check for terminal I/O variants
3192 dnl TERMIOS systems may have termio.h, but not vice-versa, I think.
3193 AC_CHECK_HEADER(termios.h,
3194   AC_DEFINE(HAVE_TERMIOS)
3195   AC_DEFINE(SIGNALS_VIA_CHARACTERS)
3196   AC_DEFINE(NO_TERMIO),
3197   [AC_CHECK_HEADER(termio.h, [AC_DEFINE(HAVE_TERMIO)])])
3198
3199
3200 dnl Check for Internet sockets.
3201 AC_CHECK_FUNC(socket,
3202  [AC_CHECK_HEADER(netinet/in.h,
3203    [AC_CHECK_HEADER(arpa/inet.h, [
3204   AC_DEFINE(HAVE_SOCKETS)
3205       AC_MSG_CHECKING("for sun_len member in struct sockaddr_un")
3206       AC_TRY_LINK([
3207 #include <sys/types.h>
3208 #include <sys/socket.h>
3209 #include <sys/un.h>
3210       ],
3211       [static struct sockaddr_un x; x.sun_len = 1;],
3212       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOCKADDR_SUN_LEN)],
3213       [AC_MSG_RESULT(no)])
3214       AC_MSG_CHECKING("for ip_mreq struct in netinet/in.h")
3215       AC_TRY_LINK([
3216 #include <sys/types.h>
3217 #include <netinet/in.h>
3218       ],
3219       [static struct ip_mreq x;],
3220       [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MULTICAST)],
3221       [AC_MSG_RESULT(no)])])])])
3222
3223 dnl Check for SYS V IPC. (Inferior to sockets.)
3224 AC_CHECK_FUNC(msgget,
3225   [AC_CHECK_HEADER(sys/ipc.h,
3226     [AC_CHECK_HEADER(sys/msg.h,
3227       [AC_DEFINE(HAVE_SYSVIPC)])])])
3228
3229 dnl Check for directory variants
3230 AC_CHECK_HEADER(dirent.h, [AC_DEFINE(SYSV_SYSTEM_DIR)],
3231   [AC_CHECK_HEADER(sys/dir.h, , [AC_DEFINE(NONSYSTEM_DIR_LIBRARY)])])
3232
3233 dnl Check for nlist.h
3234 AC_CHECK_HEADER(nlist.h, AC_DEFINE(NLIST_STRUCT), )
3235
3236 dnl Check for sound of various sorts.
3237
3238 dnl Autodetect native sound
3239 AC_CHECKING("for sound support")
3240 case "$with_sound" in
3241   native | both ) with_native_sound=yes;;
3242   nas    | no   ) with_native_sound=no;;
3243 esac
3244 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
3245
3246 if test "$with_native_sound" != "no"; then
3247   dnl Maybe sound is already on include path...
3248   if test -n "$native_sound_lib"; then
3249     AC_CHECK_HEADER(multimedia/audio_device.h,
3250       [sound_found=yes sound_cflags=""
3251       XE_ADD_OBJS(sunplay.o)])
3252   fi
3253
3254   dnl Autodetect Sun native sound from SUNWaudmo package
3255   if test -z "$sound_found" -a -d "/usr/demo/SOUND"; then
3256     sound_found=yes
3257     XE_ADD_OBJS(sunplay.o)
3258     if test -d "/usr/demo/SOUND/include"
3259       then sound_cflags="-I/usr/demo/SOUND/include"
3260       else sound_cflags="-I/usr/demo/SOUND"
3261     fi
3262     if test -z "$native_sound_lib" ; then
3263       if test -r "/usr/demo/SOUND/lib/libaudio.a"
3264         then native_sound_lib="/usr/demo/SOUND/lib/libaudio.a"
3265         else native_sound_lib="/usr/demo/SOUND/libaudio.a"
3266       fi
3267     fi
3268   fi
3269
3270   dnl Check for SGI and HP native sound libs
3271   if test -z "$sound_found"; then
3272     case "$canonical" in
3273     *-sgi-* )
3274       if test -z "$native_sound_lib"; then
3275         AC_CHECK_LIB(audio, ALopenport, native_sound_lib="-laudio")
3276       fi
3277       if test -n "$native_sound_lib"; then
3278         sound_found=yes sound_cflags=""
3279         XE_ADD_OBJS(sgiplay.o)
3280       fi ;;
3281     hppa*-hp-hpux* )
3282       if test -z "$native_sound_lib"; then
3283         AC_CHECK_LIB(Alib, AOpenAudio, native_sound_lib="-lAlib")
3284       fi
3285       if test -n "$native_sound_lib"; then
3286         sound_found=yes
3287         XE_ADD_OBJS(hpplay.o)
3288         if test "$GCC" = "yes" # Kludge city
3289           then sound_cflags="-Dconst= -Dvolatile= -I/usr/audio/examples"
3290           else sound_cflags="+e -I/usr/audio/examples"
3291         fi
3292       fi ;;
3293     esac
3294   fi
3295
3296   dnl Check for Linux/BSD native sound
3297   if test -z "$sound_found"; then
3298     for dir in "machine" "sys" "linux"; do
3299       AC_CHECK_HEADER(${dir}/soundcard.h,
3300         sound_found=yes
3301         XE_ADD_OBJS(linuxplay.o)
3302         [AC_DEFINE_UNQUOTED(SOUNDCARD_H_PATH, "${dir}/soundcard.h")]
3303         break)
3304     done
3305   fi
3306
3307   test "$sound_found" = "yes" && with_native_sound=yes
3308 fi
3309
3310 if test -z "$with_sound"; then
3311   if test "$with_native_sound" = "yes" -o -n "$native_sound_lib"; then
3312     with_sound=native
3313   fi
3314 fi
3315
3316 if test "$with_native_sound" = "yes"; then
3317   AC_DEFINE(HAVE_NATIVE_SOUND)
3318   test -n "$native_sound_lib" && XE_PREPEND($native_sound_lib, LIBS)
3319 fi
3320
3321 case "$with_sound" in both | nas )
3322   AC_DEFINE(HAVE_NAS_SOUND)
3323   XE_ADD_OBJS(nas.o)
3324   XE_PREPEND(-laudio, libs_x)
3325   dnl If the nas library does not contain the error jump point,
3326   dnl then we force safer behaviour.
3327   AC_EGREP_HEADER(AuXtErrorJump,audio/Xtutil.h,,[AC_DEFINE(NAS_NO_ERROR_JUMP)])
3328 esac
3329
3330 dnl ---------------------
3331 dnl TTY-dependent options
3332 dnl ---------------------
3333
3334 test -z "$with_tty" && with_tty=yes
3335
3336 if test "$with_tty" = "yes"  ; then
3337   AC_CHECKING(for TTY-related features)
3338   AC_DEFINE(HAVE_TTY)
3339   XE_ADD_OBJS(console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o)
3340
3341   dnl Autodetect ncurses.
3342   if test -z "$with_ncurses"; then
3343     AC_CHECK_LIB(ncurses, tgetent, with_ncurses=yes, with_ncurses=no)
3344   fi
3345   if test "$with_ncurses" = "yes"; then
3346     AC_DEFINE(HAVE_NCURSES)
3347     AC_CHECK_HEADER(ncurses/curses.h, curses_h_path=ncurses/curses.h)
3348     AC_CHECK_HEADER(ncurses/term.h, term_h_path=ncurses/term.h)
3349     XE_ADD_OBJS(terminfo.o)
3350     XE_PREPEND(-lncurses, LIBS)
3351
3352     if test "$ac_cv_header_ncurses_curses_h" != "yes" ; then
3353       dnl Try again, and check for the bogus ncurses/ include bug.
3354       dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
3355       dnl <ncurses/unctrl.h>)
3356       save_c_switch_site="$c_switch_site"
3357       c_switch_site="$c_switch_site -I/usr/include/ncurses"
3358       AC_CHECK_HEADER(ncurses/curses.h, curses_h_path=ncurses/curses.h)
3359       if test "$ac_cv_header_ncurses_curses_h" = "yes"
3360         then AC_MSG_WARN("Your system has the bogus ncurses include bug.")
3361         else c_switch_site="$save_c_switch_site"
3362       fi
3363     fi
3364   else dnl "$with_ncurses" = "no"
3365     dnl Autodetect terminfo/-lcurses/-ltermlib/-ltermcap
3366     if test "$have_terminfo" = "yes"; then
3367       XE_ADD_OBJS(terminfo.o)
3368       if test -n "$libs_termcap"; then
3369         XE_PREPEND($libs_termcap, LIBS)
3370       else
3371         for lib in curses termlib termcap; do
3372           AC_CHECK_LIB($lib, tgetent, XE_PREPEND(-l${lib}, LIBS); break)
3373         done
3374       fi
3375     else dnl "$have_terminfo" = "no" && "with_ncurses" = "no"
3376       XE_ADD_OBJS(tparam.o)
3377       dnl The HP-UX curses library seems to have a badly broken version of select(2)
3378       dnl that makes "poll: interrupted system call" messages to appear and
3379       dnl Emacs suprocesses to hang (e.g. TeX compilation w/ AUCTeX) */
3380       case "$opsys" in *-hp-hpux* ) libs_termcap="-ltermcap" ;; esac
3381       if test -n "$libs_termcap"; then
3382         XE_PREPEND($libs_termcap, LIBS)
3383       else
3384         AC_CHECK_LIB(curses, tgetent, XE_PREPEND(-lcurses, LIBS),
3385           AC_CHECK_LIB(termcap, tgetent, XE_PREPEND(-ltermcap, LIBS),
3386             XE_ADD_OBJS(termcap.o)))
3387       fi
3388     fi
3389   fi
3390   AC_DEFINE_UNQUOTED(CURSES_H_PATH, "${curses_h_path-curses.h}")
3391   AC_DEFINE_UNQUOTED(TERM_H_PATH, "${term_h_path-term.h}")
3392
3393   dnl Autodetect gpm
3394   test -z "$with_gpm" && { AC_CHECK_HEADER(gpm.h, , with_gpm=no) }
3395   test -z "$with_gpm" && { AC_CHECK_LIB(gpm, Gpm_Open, with_gpm=yes, with_gpm=no) }
3396   if test "$with_gpm" = "yes"; then
3397     AC_DEFINE(HAVE_GPM)
3398     XE_ADD_OBJS(gpmevent.o)
3399     XE_PREPEND(-lgpm, LIBS)
3400   fi
3401
3402 else dnl "$with_tty" = "no"
3403   for feature in ncurses gpm; do
3404     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
3405       AC_MSG_WARN("--with-${feature} ignored:  Not valid without TTY support")
3406     fi
3407     eval "with_${feature}=no"
3408   done
3409 fi dnl with_tty
3410
3411 dnl Do we need event-unixoid.o ?
3412 test "$with_x11" = "yes" -o "$with_tty" = "yes" && XE_ADD_OBJS(event-unixoid.o)
3413
3414 dnl Database support
3415 dnl <mdiers@logware.de>
3416 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
3417 dnl On FreeBSD, both DB and DBM are part of libc.
3418 dnl Note that unless support for DB/(G)DBM is explicitly disabled, we always
3419 dnl want to check for libdb/lib(g)dbm. Also note that libc will not be
3420 dnl checked if we have the libraries.
3421 dnl If support for DB/(G)DBM is requested, but we neither have libdb/lib(g)dbm,
3422 dnl nor does libc implement it, we are a bit lost :)
3423
3424 AC_CHECKING(for database support)
3425
3426 if test "$with_database_gnudbm" != "no"; then
3427   AC_CHECK_HEADERS(ndbm.h, have_ndbm_h=yes)
3428   if test "$have_ndbm_h" = "yes"; then
3429     AC_CHECK_LIB(gdbm, dbm_open, with_database_gnudbm=yes have_libgdbm=yes)
3430   fi
3431   if test "$with_database_gnudbm" != "yes"; then
3432     AC_CHECK_FUNC(dbm_open, with_database_gnudbm=yes)
3433       fi
3434   if test "$with_database_gnudbm" = "yes"; then
3435     AC_DEFINE(HAVE_DBM)
3436     test "$have_libgdbm" = "yes" && XE_PREPEND(-lgdbm, LIBS)
3437     with_database_dbm=no
3438   else with_database_gnudbm=no
3439   fi
3440 fi
3441
3442 if test "$with_database_dbm" != "no"; then
3443   AC_CHECK_FUNC(dbm_open, with_database_dbm=yes need_libdbm=no)
3444   if test "$need_libdbm" != "no"; then
3445     AC_CHECK_LIB(dbm, dbm_open, with_database_dbm=yes need_libdbm=yes)
3446   fi
3447   if test "$with_database_dbm" = "yes"; then
3448     AC_DEFINE(HAVE_DBM)
3449     test "$need_libdbm" = "yes" && XE_PREPEND(-ldbm, LIBS)
3450   else with_database_dbm=no
3451   fi
3452 fi
3453
3454 if test "$with_database_berkdb" != "no"; then
3455   AC_MSG_CHECKING(for Berkeley db.h)
3456   for path in "db/db.h" "db.h"; do
3457     AC_TRY_COMPILE([#ifdef HAVE_INTTYPES_H
3458 #define __BIT_TYPES_DEFINED__
3459 #include <inttypes.h>
3460 typedef uint8_t  u_int8_t;
3461 typedef uint16_t u_int16_t;
3462 typedef uint32_t u_int32_t;
3463 #ifdef WE_DONT_NEED_QUADS
3464 typedef uint64_t u_int64_t;
3465 #endif
3466 #endif
3467 #include <$path>
3468 ],[], db_h_path="$path"; break)
3469   done
3470   if test -z "$db_h_path" 
3471   then AC_MSG_RESULT(no); with_database_berkdb=no
3472   else AC_MSG_RESULT($db_h_path)
3473   fi
3474
3475   if test "$with_database_berkdb" != "no"; then
3476     AC_MSG_CHECKING(for Berkeley DB version)
3477     AC_EGREP_CPP(yes,
3478 [#include <$db_h_path>
3479 #if DB_VERSION_MAJOR > 1
3480 yes
3481 #endif
3482 ], [AC_MSG_RESULT(2); dbfunc=db_open], [AC_MSG_RESULT(1); dbfunc=dbopen])
3483     AC_CHECK_FUNC($dbfunc,     with_database_berkdb=yes need_libdb=no, [
3484     AC_CHECK_LIB(db, $dbfunc,  with_database_berkdb=yes need_libdb=yes)])
3485   fi
3486
3487   if test "$with_database_berkdb" = "yes"; then
3488     AC_DEFINE_UNQUOTED(DB_H_PATH, "$db_h_path")
3489     AC_DEFINE(HAVE_BERKELEY_DB)
3490     test "$need_libdb" = "yes" && XE_PREPEND(-ldb, LIBS)
3491   else with_database_berkdb=no
3492   fi
3493 fi
3494
3495 if test "$with_database_gnudbm $with_database_dbm $with_database_berkdb" \
3496      != "no no no"; then
3497   AC_DEFINE(HAVE_DATABASE)
3498   XE_ADD_OBJS(database.o)
3499 fi
3500
3501 dnl Socks support
3502 if test "$with_socks" = "yes"; then
3503   AC_CHECK_LIB(socks, SOCKSinit)
3504   test -n "$ac_cv_lib_socks_SOCKSinit" && AC_DEFINE(HAVE_SOCKS)
3505 fi
3506
3507 dnl Usage tracking (undocumented and likely unused option)
3508 if test "$usage_tracking" = "yes"; then
3509   AC_DEFINE(USAGE_TRACKING)
3510   XE_PREPEND(-Bstatic -lut -Bdynamic, LIBS)
3511 fi
3512
3513 dnl autodetect dll support
3514 AC_CHECK_HEADERS(dlfcn.h, have_dlfcn=yes)
3515 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(dl,  dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=dl;  with_shlib=yes]) }
3516 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   _dlopen,  [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_shlib=yes]) }
3517 test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_shlib=yes]) }
3518 test -z "$with_shlib" && { AC_CHECK_LIB(dld, shl_load, [ AC_DEFINE(HAVE_SHL_LOAD) DLL_LIB=dld; with_shlib=yes]) }
3519 test -z "$with_shlib" && { AC_CHECK_LIB(dld, dld_init, [ AC_DEFINE(HAVE_DLD_INIT) DLL_LIB=dld; with_shlib=yes]) }
3520 if test "$with_shlib" = "yes"; then
3521   AC_DEFINE(HAVE_SHLIB)
3522   XE_ADD_OBJS(sysdll.o)
3523   XE_ADD_OBJS(dll.o)
3524   test ! -z "$DLL_LIB" && XE_PREPEND(-l${DLL_LIB}, LIBS)
3525   XE_MAKE_SHAREDLIB
3526   AC_CHECK_FUNCS(dlerror)
3527   ld_dynamic_link_flags=
3528   dnl Fill this in with other values as this gets more testing
3529   case "$opsys" in
3530   hpux*)  ld_dynamic_link_flags="-Wl,-E" ;;
3531   linux*) ld_dynamic_link_flags="-rdynamic" ;;
3532   *) ;;
3533   esac
3534 fi
3535
3536 dnl Unfortunately, just because we can link doesn't mean we can run.
3537 dnl One of the above link tests may have succeeded but caused resulting
3538 dnl executables to fail to run.  Also any tests using AC_TRY_RUN will
3539 dnl have reported incorrect results.
3540 AC_TRY_RUN([int main(int c,char *v[]){return 0;}],[:],[
3541   echo ""
3542   echo "*** PANIC *** The C compiler can no longer build working executables."
3543   echo "*** PANIC *** Please examine the tail of config.log for runtime errors."
3544   echo "*** PANIC *** The most likely reason for this problem is that configure"
3545   echo "*** PANIC *** links with shared libraries, but those libraries cannot be"
3546   echo "*** PANIC *** found at run time."
3547   echo "*** PANIC ***"
3548   echo "*** PANIC *** On a Linux system, edit /etc/ld.so.conf and re-run ldconfig."
3549   echo "*** PANIC *** On other systems, try telling configure where to find the"
3550   echo "*** PANIC *** shared libraries using the --site-runtime-libraries option"
3551   echo "*** PANIC ***"
3552   echo "*** PANIC *** Another way to shoot yourself in the foot is to specify"
3553   echo "*** PANIC *** --with-FEATURE when FEATURE is not actually installed"
3554   echo "*** PANIC *** on your system.  Don't do that."
3555   exit 1])
3556
3557 dnl Process support (hardcoded)
3558 dnl every system that supports this runs configure, the others don't
3559
3560 dnl We're not ready for this yet.
3561 AC_DEFINE(HAVE_UNIX_PROCESSES)
3562 XE_ADD_OBJS(process-unix.o)
3563
3564 dnl --------------------------------
3565 dnl Compute SUBST-itutable variables
3566 dnl --------------------------------
3567
3568 dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM)
3569 dnl Use XE_SPACE instead of plain assignment statements to remove extraneous blanks
3570 XE_SPACE(CFLAGS, $CFLAGS)
3571 XE_SPACE(extra_objs, $extra_objs)
3572 XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system)
3573 XE_SPACE(c_switch_window_system, $c_switch_x_site $X_CFLAGS)
3574 XE_SPACE(c_switch_all, $c_switch_general $c_switch_window_system)
3575 XE_SPACE(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
3576 XE_SPACE(ld_switch_window_system, $ld_switch_x_site)
3577 XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system)
3578 XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
3579 XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $X_PRE_LIBS)
3580 XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general)
3581
3582 dnl Compute lists of Makefiles and subdirs
3583 AC_SUBST(SRC_SUBDIR_DEPS)
3584 XE_APPEND(src, MAKE_SUBDIR)
3585 internal_makefile_list="Makefile"
3586 SUBDIR_MAKEFILES=''
3587 test -d lock || mkdir lock
3588 for dir in $MAKE_SUBDIR; do
3589   case "$dir" in */* ) dnl Implement mkdir -p
3590     ( for d in `echo $dir | sed 's:/: :g'` ; do
3591         test -d "$d" || mkdir "$d"; cd "$d"
3592       done ) ;;
3593    * ) test -d "$dir" || mkdir "$dir" ;;
3594   esac
3595   XE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile)
3596   XE_SPACE(internal_makefile_list, $internal_makefile_list $dir/Makefile.in)
3597 done
3598 AC_SUBST(INSTALL_ARCH_DEP_SUBDIR)
3599 AC_SUBST(MAKE_SUBDIR)
3600 AC_SUBST(SUBDIR_MAKEFILES)
3601
3602 dnl Make s&m symlinks in the src directory, for config.h
3603 for dir in src/s src/m; do
3604   if test ! -d "$dir" ; then
3605     echo Making symbolic link to "$srcdir/$dir"
3606     ${LN_S} "$srcdir/$dir" "$dir"
3607   fi
3608 done
3609
3610 if test "$extra_verbose" = "yes"; then
3611   echo ""
3612   PRINT_VAR(extra_objs
3613    c_switch_general  c_switch_window_system  c_switch_all
3614   ld_switch_general ld_switch_window_system ld_switch_all
3615     ld_libs_general   ld_libs_window_system   ld_libs_all)
3616   echo ""
3617 fi
3618
3619 dnl Create some auxiliary files
3620 if test -f $srcdir/src/gdbinit -a ! -f src/gdbinit ; then
3621   echo "creating src/gdbinit"; echo ""
3622   echo "source $srcdir/src/gdbinit" > src/gdbinit
3623 fi
3624
3625 dnl Create top level .sbinit for Sun compilers
3626 if test "$__sunpro_c" = "yes"; then
3627   echo "creating .sbinit"; echo ""
3628   ( echo "# For use with Sun WorkShop's Source browser."
3629     echo "# See sbquery(1) and sbinit(4) for more information"
3630     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
3631   ) > .sbinit
3632 fi
3633
3634 dnl There are no more compile tests; remove the core they created.
3635 rm -f core
3636
3637 dnl ----------------------------------------------
3638 dnl Substitute into Makefile, config.h and paths.h
3639 dnl ----------------------------------------------
3640
3641 dnl what sort of things to edit into Makefile, config.h and paths.h
3642 dnl configuration here uncanonicalized to avoid exceeding size limits.
3643
3644 AC_SUBST(PROGNAME)
3645 AC_SUBST(version)
3646 AC_SUBST(configuration)
3647 AC_SUBST(canonical)
3648 AC_SUBST(srcdir)
3649 AC_SUBST(bindir)
3650 AC_SUBST(datadir)
3651 AC_SUBST(pkgdir)
3652 AC_SUBST(statedir)
3653 AC_SUBST(libdir)
3654 AC_SUBST(mandir)
3655
3656 AC_SUBST(prefix)
3657 dnl Yo, Stephen Bourne!  I want to marry you!
3658 PREFIX=$prefix
3659 while true; do
3660   case "$PREFIX" in
3661     *\$* ) eval "PREFIX=$PREFIX" ;;
3662     *) break ;;
3663   esac
3664 done
3665 AC_SUBST(PREFIX)
3666
3667 AC_SUBST(exec_prefix)
3668 EXEC_PREFIX=$exec_prefix
3669 while true; do
3670   case "$EXEC_PREFIX" in
3671     *\$* ) eval "EXEC_PREFIX=$EXEC_PREFIX" ;;
3672     *) break ;;
3673   esac
3674 done
3675 AC_SUBST(EXEC_PREFIX)
3676
3677 AC_SUBST(infodir)
3678 AC_SUBST(INFODIR_USER_DEFINED)
3679 INFODIR=$infodir
3680 while true; do
3681   case "$INFODIR" in
3682     *\$* ) eval "INFODIR=$INFODIR" ;;
3683     *) break ;;
3684   esac
3685 done
3686 AC_SUBST(INFODIR)
3687
3688 AC_SUBST(infopath)
3689 AC_SUBST(INFOPATH_USER_DEFINED)
3690 INFOPATH=$infopath
3691 while true; do
3692   case "$INFOPATH" in
3693     *\$* ) eval "INFOPATH=$INFOPATH" ;;
3694     *) break ;;
3695   esac
3696 done
3697 AC_SUBST(INFOPATH)
3698
3699 AC_SUBST(package_path)
3700 AC_SUBST(PACKAGE_PATH_USER_DEFINED)
3701 PACKAGE_PATH=$package_path
3702 while true; do
3703   case "$PACKAGE_PATH" in
3704     *\$* ) eval "PACKAGE_PATH=$PACKAGE_PATH" ;;
3705     *) break ;;
3706   esac
3707 done
3708 AC_SUBST(PACKAGE_PATH)
3709
3710 AC_SUBST(lispdir)
3711 AC_SUBST(LISPDIR_USER_DEFINED)
3712 LISPDIR=$lispdir
3713 while true; do
3714   case "$LISPDIR" in
3715     *\$* ) eval "LISPDIR=$LISPDIR" ;;
3716     *) break ;;
3717   esac
3718 done
3719 AC_SUBST(LISPDIR)
3720
3721 dnl AC_SUBST(sitelispdir)
3722 dnl AC_SUBST(SITELISPDIR_USER_DEFINED)
3723 dnl SITELISPDIR=$sitelispdir
3724 dnl while true; do
3725 dnl   case "$SITELISPDIR" in
3726 dnl     *\$* ) eval "SITELISPDIR=$SITELISPDIR" ;;
3727 dnl     *) break ;;
3728 dnl   esac
3729 dnl done
3730 dnl AC_SUBST(SITELISPDIR)
3731
3732 AC_SUBST(etcdir)
3733 AC_SUBST(ETCDIR_USER_DEFINED)
3734 ETCDIR=$etcdir
3735 while true; do
3736   case "$ETCDIR" in
3737     *\$* ) eval "ETCDIR=$ETCDIR" ;;
3738     *) break ;;
3739   esac
3740 done
3741 AC_SUBST(ETCDIR)
3742
3743 AC_SUBST(lockdir)
3744 AC_SUBST(LOCKDIR_USER_DEFINED)
3745 LOCKDIR=$lockdir
3746 while true; do
3747   case "$LOCKDIR" in
3748     *\$* ) eval "LOCKDIR=$LOCKDIR" ;;
3749     *) break ;;
3750   esac
3751 done
3752 AC_SUBST(LOCKDIR)
3753
3754 AC_SUBST(archlibdir)
3755 AC_SUBST(ARCHLIBDIR_USER_DEFINED)
3756 ARCHLIBDIR=$archlibdir
3757 while true; do
3758   case "$ARCHLIBDIR" in
3759     *\$* ) eval "ARCHLIBDIR=$ARCHLIBDIR" ;;
3760     *) break ;;
3761   esac
3762 done
3763 AC_SUBST(ARCHLIBDIR)
3764
3765 AC_SUBST(docdir)
3766 AC_SUBST(bitmapdir)
3767 AC_SUBST(extra_objs)
3768 AC_SUBST(ld_dynamic_link_flags)
3769
3770 dnl The following flags combine all the information from:
3771 dnl - command line options (user always gets priority)
3772 dnl - user environment variables
3773 dnl - determined by configure
3774 dnl - the s&m header files (deprecated)
3775 AC_SUBST(machfile)
3776 AC_SUBST(opsysfile)
3777 AC_SUBST(c_switch_general)
3778 AC_SUBST(c_switch_window_system)
3779 AC_SUBST(c_switch_all)
3780 AC_SUBST(ld_switch_general)
3781 AC_SUBST(ld_switch_window_system)
3782 AC_SUBST(ld_switch_all)
3783 AC_SUBST(ld_libs_general)
3784 AC_SUBST(ld_libs_window_system)
3785 AC_SUBST(ld_libs_all)
3786 AC_SUBST(CFLAGS)
3787 AC_SUBST(CPPFLAGS)
3788 AC_SUBST(LDFLAGS)
3789 RECURSIVE_MAKE="\$(MAKE) \$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
3790 AC_SUBST(RECURSIVE_MAKE)
3791
3792 AC_SUBST(native_sound_lib)
3793 AC_SUBST(sound_cflags)
3794 AC_SUBST(RANLIB)
3795 AC_SUBST(dynodump_arch)
3796
3797 # The default is yes
3798 if test "$with_site_lisp" = "no"; then
3799   AC_DEFINE(INHIBIT_SITE_LISP)
3800 fi
3801
3802 XE_SPACE(ac_configure_args, $ac_configure_args)
3803 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "$canonical")
3804 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "$ac_configure_args")
3805 AC_DEFINE_UNQUOTED(config_machfile,  "$machfile")
3806 AC_DEFINE_UNQUOTED(config_opsysfile, "$opsysfile")
3807
3808 dnl Following are deprecated
3809
3810 null_string=""
3811 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE,     $null_string)
3812 AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, $null_string)
3813 AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE,      $null_string)
3814 AC_DEFINE_UNQUOTED(LD_SWITCH_SITE,       $null_string)
3815 AC_DEFINE_UNQUOTED(C_SWITCH_SITE,        $null_string)
3816
3817 dnl Note: as a general rule, *only* define things here that are not
3818 dnl autodetected.  For things that are autodetected, define them
3819 dnl at the point where the autodetection occurs or would occur,
3820 dnl so that the user gets immediate feedback on the results of the
3821 dnl autodetection.
3822
3823 test -n "$puresize" && AC_DEFINE_UNQUOTED(RAW_PURESIZE, $puresize)
3824
3825 if   test "$GNU_MALLOC"         = "yes"; then AC_DEFINE(GNU_MALLOC)
3826 elif test "$with_system_malloc" = "yes"; then AC_DEFINE(USE_SYSTEM_MALLOC)
3827 elif test "$with_debug_malloc"  = "yes"; then AC_DEFINE(USE_DEBUG_MALLOC)
3828                                               AC_DEFINE(USE_SYSTEM_MALLOC)
3829 fi
3830 test "$with_i18n3"         = "yes" && AC_DEFINE(I18N3)
3831 test "$GCC"                = "yes" && AC_DEFINE(USE_GCC)
3832 test "$external_widget"    = "yes" && AC_DEFINE(EXTERNAL_WIDGET)
3833 test "$with_gnu_make"      = "yes" && AC_DEFINE(USE_GNU_MAKE)
3834 test "$no_doc_file"        = "yes" && AC_DEFINE(NO_DOC_FILE)
3835 dnl test "$const_is_losing"    = "yes" && AC_DEFINE(CONST_IS_LOSING)
3836 test "$with_quantify"      = "yes" && AC_DEFINE(QUANTIFY)
3837 test "$with_pop"           = "yes" && AC_DEFINE(MAIL_USE_POP)
3838 test "$with_kerberos"      = "yes" && AC_DEFINE(KERBEROS)
3839 test "$with_hesiod"        = "yes" && AC_DEFINE(HESIOD)
3840 test "$use_union_type"     = "yes" && AC_DEFINE(USE_UNION_TYPE)
3841
3842 dnl -------------------------------
3843 dnl Report on what we decided to do
3844 dnl -------------------------------
3845
3846 (
3847 dnl /etc/osversion is on SONY NEWS-OS
3848 if test -f /etc/osversion; then dnl SONY NEWS-OS
3849   echo "osversion: `cat /etc/osversion`"
3850 else
3851   echo "uname -a: `uname -a`"
3852 fi
3853 echo ""
3854 echo "$0 $quoted_arguments"
3855 ) > Installation
3856
3857 xemacs_betaname=""
3858 test ! -z "${emacs_beta_version}" && xemacs_betaname="-b${emacs_beta_version}"
3859
3860 dnl Start stdout redirection to '| tee -a Installation'
3861 (
3862 echo "
3863
3864 XEmacs ${emacs_major_version}.${emacs_minor_version}${xemacs_betaname} \"$xemacs_codename\" configured for \`$canonical'.
3865
3866   Where should the build process find the source code?    $srcdir
3867   What installation prefix should install use?            $prefix
3868   What operating system and machine description files should XEmacs use?
3869         \`$opsysfile' and \`$machfile'
3870   What compiler should XEmacs be built with?              $CC $CFLAGS
3871   Should XEmacs use the GNU version of malloc?            ${GNU_MALLOC}${GNU_MALLOC_reason}
3872   Should XEmacs use the relocating allocator for buffers? $rel_alloc
3873   What window system should XEmacs use?                   ${window_system}"
3874 if test "$with_x11" = "yes"; then
3875   echo "  Where do we find X Windows header files?                $x_includes"
3876   echo "  Where do we find X Windows libraries?                   $x_libraries"
3877 fi
3878 if test -n "$site_includes"; then
3879   echo "  Additional header files:                                $site_includes"
3880 fi
3881 if test -n "$site_libraries"; then
3882   echo "  Additional libraries:                                   $site_libraries"
3883 fi
3884 if test -n "$site_prefixes"; then
3885   echo "  Additional prefixes:                                    $site_prefixes"
3886 fi
3887 if test -n "$runpath"; then
3888   echo "  Runtime library search path:                            $runpath"
3889 fi
3890 test "$with_dnet"  = yes && echo "  Compiling in support for DNET."
3891 test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
3892 test "$with_xauth" = yes && echo "  Compiling in support for XAUTH."
3893 if test "$with_xmu" != yes -a "$with_x11" = yes; then
3894   echo "  No Xmu; substituting equivalent routines."
3895 fi
3896
3897 if test "$with_xpm" = yes; then
3898   echo "  Compiling in support for XPM images."
3899 elif test "$with_x11" = yes; then
3900   echo "  --------------------------------------------------------------------"
3901   echo "  WARNING: Compiling without XPM support."
3902   echo "  WARNING: You should strongly considering installing XPM."
3903   echo "  WARNING: Otherwise toolbars and other graphics will look suboptimal."
3904   echo "  --------------------------------------------------------------------"
3905 fi
3906 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
3907 test "$with_gif"   = yes && echo "  Compiling in support for GIF image conversion."
3908 test "$with_jpeg"  = yes && echo "  Compiling in support for JPEG image conversion."
3909 test "$with_png"   = yes && echo "  Compiling in support for PNG image conversion."
3910 test "$with_tiff"  = yes && echo "  Compiling in support for TIFF image conversion."
3911 case "$with_sound" in
3912   nas    ) echo "  Compiling in network sound (NAS) support." ;;
3913   native ) echo "  Compiling in native sound support." ;;
3914   both   ) echo "  Compiling in both network and native sound support." ;;
3915 esac
3916 test "$old_nas" = yes && echo "        nas library lacks error trapping, will play synchronously"
3917
3918 test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley DB."
3919 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
3920 test "$with_database_gnudbm" = yes && echo "  Compiling in support for GNU DBM."
3921
3922 test "$with_umich_ldap"      = yes && echo "  Compiling in support for LDAP (UMich libs)."
3923 test "$with_ns_ldap"         = yes && echo "  Compiling in support for LDAP (Netscape SDK)."
3924 test "$with_ldap" = yes -a "$with_umich_ldap" = no -a "$with_ns_ldap" = no && echo "  Compiling in support for LDAP (Generic)."
3925
3926 test "$with_ncurses"  = yes && echo "  Compiling in support for ncurses."
3927 test "$with_gpm"      = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
3928
3929 test "$with_mule"     = yes && echo "  Compiling in Mule (multi-lingual) support."
3930 test "$with_file_coding"     = yes && echo "  Compiling in File coding support."
3931 test "$with_xim"      != no && echo "  Compiling in XIM (X11R5+ I18N input method) support."
3932 test "$with_xim" = motif    && echo "    Using Motif to provide XIM support."
3933 test "$with_xim" = xlib     && echo "    Using raw Xlib to provide XIM support."
3934 test "$with_xfs" = yes      && echo "    Using XFontSet to provide bilingual menubar."
3935 test "$with_canna"    = yes && echo "  Compiling in support for Canna on Mule."
3936 if test "$with_wnn" = yes; then
3937   echo "  Compiling in support for the WNN input method on Mule."
3938   test "$with_wnn6" = yes && echo "    Using WNN version 6."
3939 fi
3940 test "$with_i18n3"    = yes && echo "  Compiling in I18N support, level 3 (doesn't currently work)."
3941
3942 test "$with_cde"      = yes && echo "  Compiling in support for CDE."
3943 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
3944 test "$with_offix"    = yes && echo "  Compiling in support for OffiX."
3945 test "$with_dragndrop" = yes && echo "  Compiling in EXPERIMENTAL support for Drag'n'Drop ($dragndrop_proto )."
3946 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
3947 test "$with_session"  != no && echo "  Compiling in support for proper session-management."
3948 case "$with_menubars" in
3949   lucid ) echo "  Using Lucid menubars." ;;
3950   motif ) echo "  Using Motif menubars."
3951           echo "  *WARNING*  The Motif menubar implementation is currently buggy."
3952           echo "             We recommend using the Lucid menubar instead."
3953           echo "             Re-run configure with --with-menubars='lucid'." ;;
3954 esac
3955 case "$with_scrollbars" in
3956   lucid    ) echo "  Using Lucid scrollbars."     ;;
3957   motif    ) echo "  Using Motif scrollbars."     ;;
3958   athena   ) echo "  Using Athena scrollbars."    ;;
3959   athena3d ) echo "  Using Athena-3d scrollbars." ;;
3960 esac
3961 case "$with_dialogs" in
3962   motif    ) echo "  Using Motif dialog boxes."     ;;
3963   athena   ) echo "  Using Athena dialog boxes."    ;;
3964   athena3d ) echo "  Using Athena-3d dialog boxes." ;;
3965 esac
3966 test "$with_shlib" = "yes" && echo "  Compiling in DLL support."
3967 test "$with_clash_detection" = yes && \
3968   echo "  Clash detection will use \"$lockdir\" for locking files."
3969 echo "  movemail will use \"$mail_locking\" for locking mail spool files."
3970 test "$with_pop"        = yes && echo "  Using POP for mail access"
3971 test "$with_kerberos"   = yes && echo "  Using Kerberos for POP authentication"
3972 test "$with_hesiod"     = yes && echo "  Using Hesiod to get POP server host"
3973 test "$use_union_type"  = yes && echo "  Using the union type for Lisp_Objects."
3974 test "$use_minimal_tagbits" = yes && echo "  Using Lisp_Objects with minimal tagbits."
3975 test "$use_indexed_lrecord_implementation" = yes && echo "  Using indexed lrecord implementation."
3976 test "$debug"              = yes && echo "  Compiling in extra code for debugging."
3977 test "$memory_usage_stats" = yes && echo "  Compiling in code for checking XEmacs memory usage."
3978 test "$usage_tracking"     = yes && echo "  Compiling with usage tracking active (Sun internal)."
3979 if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc" \
3980   != "no no no no no"; then
3981   echo "  WARNING: ---------------------------------------------------------"
3982   echo "  WARNING: Compiling in support for runtime error checking."
3983   echo "  WARNING: XEmacs will run noticeably more slowly as a result."
3984   echo "  WARNING: Error checking is on by default for XEmacs beta releases."
3985   echo "  WARNING: ---------------------------------------------------------"
3986 fi
3987 echo ""
3988 ) | tee -a Installation
3989 dnl echo "The above configure report is appended to \"Installation\" file."
3990 echo ""
3991
3992 dnl Generate Installation.el
3993 echo '(setq Installation-string "' > Installation.el
3994 sed 's/"/\\"/g' Installation >> Installation.el
3995 echo '")' >> Installation.el
3996
3997 dnl -----------------------------------
3998 dnl Now generate config.h and Makefiles
3999 dnl -----------------------------------
4000
4001 dnl This has to be called in order for this variable to get into config.status
4002 AC_SUBST(internal_makefile_list)
4003 # Remove any trailing slashes in these variables.
4004 test -n "$prefix" &&
4005   prefix=`echo '' "$prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4006 test -n "$exec_prefix" &&
4007   exec_prefix=`echo '' "$exec_prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4008
4009 dnl Build Makefile.in's from Makefile.in.in's
4010 dnl except ./Makefile from $srcdir/Makefile.in
4011
4012 for file in $internal_makefile_list; do
4013   test "$file" = src/Makefile.in && \
4014     file="src/Makefile.in:src/Makefile.in.in:src/depend"
4015   ac_output_files="${ac_output_files+$ac_output_files }$file"
4016 done
4017 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
4018
4019 AC_OUTPUT($ac_output_files,
4020 [for dir in $MAKE_SUBDIR; do
4021   echo creating $dir/Makefile
4022   (
4023 changequote(<<, >>)dnl
4024     cd $dir
4025     rm -f junk.c
4026     < Makefile.in \
4027       sed -e '/^# Generated/d' \
4028           -e 's%/\*\*/#.*%%' \
4029           -e 's/^ *# */#/' \
4030           -e '/^##/d' \
4031           -e '/^#/ {
4032 p
4033 d
4034 }'        -e '/./ {
4035 s/\([\"]\)/\\\1/g
4036 s/^/"/
4037 s/$/"/
4038 }'  > junk.c;
4039     $CPP -I. -I${top_srcdir}/src $CPPFLAGS junk.c > junk.cpp;
4040     < junk.cpp                          \
4041       sed -e 's/^#.*//'                 \
4042         -e 's/^[ TAB][ TAB]*$//'        \
4043         -e 's/^ /TAB/'                  \
4044         | sed -n -e '/^..*$/p'          \
4045         | sed '/^"/ {
4046 s/\\\([\"]\)/\1/g
4047 s/^[ TAB]*"//
4048 s/"[ TAB]*$//
4049 }'      > Makefile.new
4050     chmod 444 Makefile.new
4051     mv -f Makefile.new Makefile
4052     rm -f junk.c junk.cpp
4053 changequote([, ])dnl
4054 )
4055 done
4056
4057 dnl Append AC_DEFINE information to lib-src/config.values
4058 dnl (AC_SUBST information is already there (see config.values.sh).
4059 sed < config.status >> lib-src/config.values \
4060   -e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \
4061   -e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \
4062   -e 's/^\([[^ ]]*\) $/\1 ""/' \
4063   -e 's/ 1$/ t/'
4064
4065 ],
4066 [CPP="$CPP"
4067  CPPFLAGS="$CPPFLAGS"
4068  top_srcdir="$srcdir"
4069  MAKE_SUBDIR="$MAKE_SUBDIR"
4070 ])