Update copyright, remove unused ent arguments
[sxemacs] / configure.ac
1 dnl SXEmacs config script for autoconf >=2.60
2 dnl -------------------------------------------------------------------------
3 dnl Overrides of standard autoconf macros.
4
5 m4_include([sxemacs_version.m4])
6
7 dnl -------------------------------------------------------------------------
8 dnl Autoconf startup.
9 dnl -------------------------------------------------------------------------
10
11 AC_PREREQ([2.62])
12 AC_INIT([SXEmacs], [SXEM4CS_VERSION], [http://issues.sxemacs.org/])
13 AC_CONFIG_HEADER([src/config.h])
14 AC_CONFIG_SRCDIR([src/lisp.h])
15 AC_CONFIG_AUX_DIR([.])
16 AC_CONFIG_MACRO_DIR([m4])
17
18 dnl -------------------------------------------------------------------------
19 dnl Local copyright notices.
20 dnl -------------------------------------------------------------------------
21
22 AC_COPYRIGHT(
23 [#### Configuration script for SXEmacs.  Largely divergent from FSF.
24 #### Guess values for system-dependent variables and create Makefiles.
25 #### Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
26 #### Copyright (C) 1993-1995 Board of Trustees, University of Illinois.
27 #### Copyright (C) 1996, 1997 Sun Microsystems, Inc.
28 #### Copyright (C) 1995, 1996, 2002, 2003, 2004 Ben Wing.
29 #### Copyright (C) 2000, 2001 Martin Buchholz.
30 #### Copyright (C) 1998, 1999 J. Kean Johnston.
31 #### Copyright (C) 2005 Malcolm Purvis.
32 #### Copyright (C) 2005, 2006, 2007 Steve Youngs.
33 #### Copyright (C) 2006, 2007, 2008 Sebastian Freundt.
34 #### Copyright (C) 2007, 2010, 2011, 2012 Nelson Ferreira
35
36 ### Don't edit this script!
37 ### This script was automatically generated by the `autoconf' program
38 ### from the file `./configure.ac'.
39 ### To rebuild it, execute the command
40 ###     autoconf
41 ### in the this directory.
42
43 ### This file is part of SXEmacs.
44
45 ### SXEmacs is free software: you can redistribute it and/or modify
46 ### it under the terms of the GNU General Public License as published by
47 ### the Free Software Foundation, either version 3 of the License, or
48 ### (at your option) any later version.
49
50 ### SXEmacs is distributed in the hope that it will be useful,
51 ### but WITHOUT ANY WARRANTY; without even the implied warranty of
52 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
53 ### GNU General Public License for more details.
54
55 ### You should have received a copy of the GNU General Public License
56 ### along with this program.  If not, see <http://www.gnu.org/licenses/>.
57
58 ### Parts of SXEmacs are also distributed under a BSD-like licence.
59 ### Check file headers for more information.
60
61 ### For usage, run `./configure --help'
62 ### For more detailed information on building and installing SXEmacs,
63 ### read the file `INSTALL'.
64 ###
65 ### If configure succeeds, it leaves its status in config.status.
66 ### A log of configuration tests can be found in config.log.
67 ### If configure fails after disturbing the status quo,
68 ###     config.status is removed.
69 ])
70
71 AC_REVISION([SXEM4CS_GIT_VERSION])
72
73
74 dnl Build Options
75 dnl =============
76 OG_OPTION_GROUP(Build Options)
77
78 OG_ARG_WITH([prefix],
79         AS_HELP_STRING([--with-prefix@<:@=ARG@:>@],
80                 [Whether to compile the value of --prefix into the executable.]),
81         [yes], [YES (DO compile prefix into the executable)])
82
83 OG_ARG_WITH([sitemoduledir],
84         AS_HELP_STRING([--with-sitemoduledir=DIR],
85                 [Directory for loadable modules that are not part of
86                 the SXEmacs core distribution (3rd party emodules).]),
87         [none], [$prefix/lib/sxemacs/$build/site-modules], [og_any],
88         [AC_DEFINE([SITEMODULEDIR_USER_DEFINED], [1],
89                 [sitemoduledir has been specified on the configure line.])],
90         [with_sitemoduledir='${libdir}/${PROGNAME}/${configuration}/site-modules'])
91
92 OG_ARG_WITH([site-includes],
93         AS_HELP_STRING([--with-site-includes=PATH],
94                 [Colon separated list of _extra_ include directories
95                 to search for headers.]),
96         [none], [None], [og_any])
97
98 OG_ARG_WITH([site-libraries],
99         AS_HELP_STRING([--with-site-libraries=PATH],
100                 [Colon separated list of extra lib directories to
101                 search for libraries. (Default: None)]),
102         [none], [None], [og_any])
103
104 OG_ARG_WITH([site-prefixes],
105         AS_HELP_STRING([--with-site-prefixes=PATH],
106                 [Colon separated list of extra prefix directories to
107                 search for headers and libraries.  Sometimes this can
108                 be used instead of specifying both
109                 --with-site-includes and
110                 --with-site-libraries.]),
111         [none], [None], [og_any])
112
113 OG_ARG_WITH([lispdir],
114         AS_HELP_STRING([--with-lispdir=DIR],
115                 [Where to install core lisp files.]),
116         [none], [$prefix/lib/sxemacs-$version/lisp], [og_any],
117         [AC_DEFINE([LISPDIR_USER_DEFINED], [1],
118                 [lispdir has been specified on the configure line.])],
119         [with_lispdir='${datadir}/${instvardir}/lisp'])
120
121 OG_ARG_WITH([archlibdir],
122         AS_HELP_STRING([--with-archlibdir=DIR],
123                 [Directory for arch-dependent files.]),
124         [none], [$prefix/lib/sxemacs-$version/$build], [og_any],
125         [AC_DEFINE([ARCHLIBDIR_USER_DEFINED], [1],
126                 [archlibdir has been specified on the configure line.])],
127         [with_archlibdir='${libdir}/${instvardir}/${configuration}'])
128
129 OG_ARG_WITH([moduledir],
130         AS_HELP_STRING([--with-moduledir=DIR],
131                 [Directory for loadable modules.]),
132         [none], [$prefix/lib/sxemacs-$version/$build/modules], [og_any],
133         [AC_DEFINE([MODULEDIR_USER_DEFINED], [1],
134                 [moduledir has been specified on the configure line.])],
135         [with_moduledir='${libdir}/${instvardir}/${configuration}/modules'])
136
137 OG_ARG_WITH([etcdir],
138         AS_HELP_STRING([--with-etcdir=DIR],
139                 []),
140         [none], [$prefix/lib/sxemacs-$version/etc], [og_any],
141         [AC_DEFINE([ETCDIR_USER_DEFINED], [1],
142                 [etcdir has been specified on the configure line.])],
143         [with_etcdir='${datadir}/${instvardir}/etc'])
144
145 OG_ARG_WITH([infopath],
146         AS_HELP_STRING([--with-infopath=PATH],
147                 [Colon separated list of directories to use as
148                 the info search path. This is not normally needed.]),
149         [none], [None], [og_any],
150         [AC_DEFINE([INFOPATH_USER_DEFINED], [1],
151                 [inforpath has been specified on the configure line.])], [])
152
153 OG_ARG_WITH([docdir],
154         AS_HELP_STRING([--with-docdir=DIR],
155                 [Where it store certain doc files (not info or man).]),
156         [none], [$prefix/lib/sxemacs-$version/$build], [og_any],
157         [AC_DEFINE([DOCDIR_USER_DEFINED], [1],
158                 [docdir has been specified on the configure line.])],
159         [with_docdir='${archlibdir}'])
160
161 OG_ARG_WITH([site-runtime-libraries],
162         AS_HELP_STRING([--with-site-runtime-libraries=PATH],
163                 [Colon separated list of directories to search for
164                 libraries at run time.  This isn't normally needed.]),
165         [none], [None], [og_any])
166
167 OG_ARG_WITH([module-path],
168         AS_HELP_STRING([--with-module-path=PATH],
169                 [Search path to the emodules directories.
170                 A colon separated list of directories. Normally, there is
171                 no need to set this.]),
172         [none], [None], [og_any],
173         [AC_DEFINE([MODULE_PATH_USER_DEFINED], [1],
174                 [module-path has been specified on the configure line.])],
175         [])
176
177 OG_ARG_WITH([package-prefix],
178         AS_HELP_STRING([--with-package-prefix=PATH],
179                 [What to use as a prefix to the system-wide package
180                 directories.  It doesn't affect the package directories
181                 under ~/.sxemacs, and is totally ignored if
182                 --with-package-path is set.
183                 Normally, you would not need to set this.]),
184         [none], [None], [og_any],
185         [AC_DEFINE([PACKAGE_PREFIX_USER_DEFINED], [1],
186                 [package-prefix has been specified on the configure line.])],
187         [])
188
189 OG_ARG_WITH([package-path],
190         AS_HELP_STRING([--with-package-path=PATH],
191                 [Search path to the package directories.
192                 This path is made up of 3 separate "path elements",
193                 each element is a colon separated list of directories,
194                 with the boundary between elements being a double
195                 colon.  The 3 path elements are for "early", "late",
196                 and "last" package directories.  If only a single
197                 element is specified it is "late".  Example:
198                 early1:early2::late1:late2::last1:last2.  Setting this
199                 overrides --with-package-prefix.  Normally, there is
200                 no need to set this.]),
201         [none], [None], [og_any],
202         [AC_DEFINE([PACKAGE_PATH_USER_DEFINED], [1],
203                 [package-path has been specified on the configure line.])],
204         [])
205
206 dnl stupid option, innit?
207 OG_ARG_WITH([quick-build],
208         AS_HELP_STRING([--with-quick-build],
209                 [Speed up the build cycle by leaving out steps where
210                 SXEmacs will still work (more or less) without them.
211                 Potentially dangerous if you don't know what you're
212                 doing. This (1) doesn't garbage-collect after loading
213                 each file during dumping, (2) doesn't automatically
214                 rebuild the DOC file (remove it by hand to get it
215                 rebuilt), (3) Removes config.h lisp.h and associated
216                 files from the dependency lists so changes to these
217                 files don't automatically cause all .c files
218                 to be rebuilt.]),
219         [no], [No], [])
220
221 OG_ARG_WITH([compiler],
222         AS_HELP_STRING([--with-compiler=COMPILER],
223                 [Do not use me! Use CC=<your-compiler> instead!
224                 C compiler to use.
225                 Note: SXEmacs _CANNOT_ be built with a C++ compiler.]),
226         [none], [None], [og_any], [
227                 OG_WARN_OBSOLETE_OPTION([--with-compiler], [CC=<your-cc>])])
228
229 OG_ARG_WITH([cflags],
230         AS_HELP_STRING([--with-cflags],
231                 [Do not use me! Use CFLAGS=<your flags> instead!
232                 Compiler flags (such as -O); setting this overrides
233                 all default compiler flags except those that control
234                 warnings. Most people wouldn't need to set
235                 this.]),
236         [none], [None], [og_any], [
237                 OG_WARN_OBSOLETE_OPTION([--with-cflags], [CFLAGS=<your flags>])])
238
239 OG_ARG_WITH([cflags-warning],
240         AS_HELP_STRING([--with-cflags-warning],
241                 [Do not use me! I will disappear soon!]),
242         [none], [None], [og_any])
243
244 OG_ARG_WITH([cpp],
245         AS_HELP_STRING([--with-cpp],
246                 [Do not use me! Use CPP=<your-cpp> instead!]),
247         [none], [None], [og_any], [
248                 OG_WARN_OBSOLETE_OPTION([--with-cpp], [CPP=<your-cpp>])
249                 CPP="$with_cpp"])
250
251 OG_ARG_WITH([cppflags],
252         AS_HELP_STRING([--with-cppflags],
253                 [Do not use me! Use CPPFLAGS=<your flags> instead!]),
254         [none], [None], [og_any], [
255                 OG_WARN_OBSOLETE_OPTION([--with-cppflags], [CPPFLAGS=<your flags>])
256                 CPPFLAGS="$with_cppflags"])
257
258 OG_ARG_WITH([libs],
259         AS_HELP_STRING([--with-libs],
260                 [Do not use me! Use LIBS=<your libs> instead!]),
261         [none], [None], [og_any], [
262                 OG_WARN_OBSOLETE_OPTION([--with-libs], [LIBS=<your libs>])
263                 LIBS="$with_libs"])
264
265 OG_ARG_WITH([ldflags],
266         AS_HELP_STRING([--with-ldflags],
267                 [Do not use me! Use LDFLAGS=<your flags> instead!]),
268         [none], [None], [og_any], [
269                 OG_WARN_OBSOLETE_OPTION([--with-ldflags], [LDFLAGS=<your flags>])
270                 LDFLAGS="$with_ldflags"])
271
272 OG_ARG_WITH([ridiculously-aggressive-optimisations],
273         AS_HELP_STRING([--with-ridiculously-aggressive-optimisations],
274                 [Whether to try all possible optimisations]),
275         [no], [No])
276
277 OG_ARG_WITH([maximum-warning-output],
278         AS_HELP_STRING([--with-maximum-warning-output],
279                 [Whether to output as many warnings as possible]),
280         [no], [No])
281
282
283 dnl Internal Options
284 dnl ================
285 OG_OPTION_GROUP(Internal Options)
286
287 OG_ARG_WITH([dynamic],
288         AS_HELP_STRING([--with-dynamic],
289                 [Link dynamically if supported by system.
290                 'NO' forces static linking.]),
291         [auto], [Autodetect])
292
293 OG_ARG_WITH([rel-alloc],
294         AS_HELP_STRING([--with-rel-alloc],
295                 [Relocating allocator for buffers.]),
296         [default], [Autodetect])
297
298 OG_ARG_WITH([dlmalloc],
299         AS_HELP_STRING([--with-dlmalloc],
300                 [Use Doug Lea's malloc.]),
301         [default], [Autodetect])
302
303 OG_ARG_WITH([debug-malloc],
304         AS_HELP_STRING([--with-debug-malloc],
305                 [Use a debugging malloc.]),
306         [no], [NO])
307
308 OG_ARG_WITH([system-malloc],
309         AS_HELP_STRING([--with-system-malloc],
310                 [Use a system malloc instead of GNU.]),
311         [default], [YES if using quantify or purify; NO otherwise])
312
313 OG_ARG_WITH([regex-malloc],
314         AS_HELP_STRING([--with-regex-malloc],
315                 [Use malloc for regex failure stack.]),
316         [yes], [YES])
317
318 OG_ARG_WITH([ffi],
319         AS_HELP_STRING([--with-ffi],
320                 [Compile in experimental support for
321                 Foreign Function Interface.]),
322         [yes], [YES])
323
324 OG_ARG_WITH([module-support],
325         AS_HELP_STRING([--with-module-support],
326                 [Compile in experimental support for dynamically
327                 loaded libraries (Dynamic Shared Objects).]),
328         [yes], [YES if shared libraries are supported])
329
330 OG_MULTIARG_WITH([modules], [dnl
331         AS_HELP_STRING([--with-modules], [
332                 Which modules to compile and install.])],
333         [all], [all], [dnl
334         OG_MULTIARG_ITEM([ase], [ase], [algebraic structures])
335         OG_MULTIARG_ITEM([cl], [cl], [fast Common Lisp implementation])
336 ])
337
338 OG_MULTIARG_WITH([static-modules], [dnl
339         AS_HELP_STRING([--with-static-modules], [
340                 Which modules to compile as archives to link their
341                 functionality statically into the SXEmacs binary.])
342         AS_HELP_STRING([], [
343                 You should regard this as a proof of concept.])],
344         [none], [NONE], [dnl
345         OG_MULTIARG_ITEM([ase], [ase], [algebraic structures])
346         OG_MULTIARG_ITEM([cl], [cl], [fast Common Lisp implementation])
347 ])
348
349 OG_MULTIARG_WITH([ent], [dnl
350         AS_HELP_STRING([--with-ent], [
351                 Compile in support for enhanced number types,
352                 using internal and external libraries.])],
353         [none int fpfloat indef gmp], [int fpfloat indef gmp], [dnl
354         OG_MULTIARG_ITEM([int], [int], [native integer arithmetics])
355         OG_MULTIARG_ITEM([fpfloat], [fpfloat], [native fixed precision floats])
356         OG_MULTIARG_ITEM([indef], [indef], [native abstract indefinites])
357         OG_MULTIARG_ITEM([gmp], [GMP], [GNU multiprecision library])
358         OG_MULTIARG_ITEM([mpfr], [MPFR], [Multiprecision Floats with correct Rounding])
359         OG_MULTIARG_ITEM([mpc], [MPC], [Multiprecision Complex numbers (C/R)])
360         OG_MULTIARG_ITEM([pseug], [pseudoG], [native Gaussian Numbers (Z+Z)])
361         OG_MULTIARG_ITEM([pseuc], [pseudoC], [native Complex Numbers (C/R)])
362         OG_MULTIARG_ITEM([quatern], [Quaternions], [native Quaternions (Z+Z+Z+Z)])
363         OG_MULTIARG_ITEM([ecm], [ECM], [factorisations per Elliptic Curve Method])
364         OG_MULTIARG_MUTEX([mpz], [Arbitrary precision integers], [gmp mp])
365         OG_MULTIARG_MUTEX([complex], [Complex numbers as in C/R], [mpc pseuc])
366 ])
367
368 OG_MULTIARG_WITH([ase], [dnl
369         AS_HELP_STRING([--with-ase], [
370                 Compile in support for algebraic structures based on ENT,
371                 using internal and external libraries.])],
372         [none], [none], [dnl
373         OG_MULTIARG_ITEM([cart], [cartesian], [Cartesian Products of ENT and ASE objects])
374         OG_MULTIARG_ITEM([dig], [digraph], [Directed 2-ary Graphs with Colours])
375         OG_MULTIARG_ITEM([intv], [interval], [Intervals of comparable or normed ENT and ASE objects])
376         OG_MULTIARG_ITEM([metric], [metric], [Metric Spaces])
377         OG_MULTIARG_ITEM([nbhood], [neighbourhood], [Neighbourhoods of comparable or normed ENT and ASE objects])
378         OG_MULTIARG_ITEM([perm], [permutation], [Permutations])
379         OG_MULTIARG_ITEM([resclass], [resclass], [Residue Class Rings and Classes])
380 ])
381
382 OG_ARG_WITH([compre],
383         AS_HELP_STRING([--with-compre],[
384                 Provide exhaustive caching of compiled regexps. This will
385                 mean that frequently used regexps will be faster to use
386                 since the compile step will not be needed after first use.]),
387         [yes], [By default do cache compiled regexps.])
388
389 OG_MULTIARG_WITH([experimental-features], [dnl
390         AS_HELP_STRING([--with-experimental-features], [
391                 Activate experimental code, that is code which is
392                 considered useful but whose effects in conjunction with
393                 the variety of elisp projects cannot be foreseen.])
394         AS_HELP_STRING([], [
395                 During the beta phase of SXEmacs all experimental code
396                 will be unconditionally enabled.  However, if you plan
397                 to use this SXEmacs in a production environment you
398                 can switch off some portions.])],
399         [all nobdwgc], [ALL but bdwgc], [dnl
400         OG_MULTIARG_ITEM([bdwgc], [bdwgc], [the Boehm-Demers-Weiser collector])
401         OG_MULTIARG_ITEM([asyneq], [asyneq], [asynchronous event queues])
402 ])
403         dnl stop that pom stuff
404         dnl OG_MULTIARG_ITEM([pom], [pom], [thread-safe objects])
405
406 OG_ARG_WITH([event-driver],
407         AS_HELP_STRING([--with-event-driver], [
408                 Which event routines to use.
409                 Events control the way how external `sources' are
410                 incorporated into SXEmacs.  Sources hereby are user inputs,
411                 such as key strokes, mouse moves, pedalling, slapping the
412                 monitor, etc.; but there are manifold further sources, such as
413                 process signals, data on a socket, focussing an X window,
414                 lapsing a timeout, and so forth.])
415 AS_HELP_STRING([], [
416                 An event driver can cope with all (or most) of these in a
417                 uniform and abstract way.  SXEmacs can either be driven
418                 using its built-in event handlers, or using one of the
419                 external systems.]),
420         [auto], [Autodetect], [auto built-in libevent liboop glib])
421
422
423 dnl Debugging Options
424 dnl ================
425 OG_OPTION_GROUP(Debugging Options)
426
427 OG_ARG_WITH([debug],
428         AS_HELP_STRING([--with-debug],
429                 [Compile with extra debugging code.
430                 This will turn on: --with-assertions
431                 and --with-memory-usage-stats.]),
432         [yes], [YES for beta; NO for release])
433
434 OG_ARG_WITH([memory-usage-stats],
435         AS_HELP_STRING([--with-memory-usage-stats],
436                 [Compile with support for statistics about memory usage at runtime.]),
437         [yes], [YES for beta])
438
439 OG_MULTIARG_WITH([error-checking], [dnl
440         AS_HELP_STRING([--with-error-checking=TYPE], [
441                 Compile with internal error-checking added.])
442         AS_HELP_STRING([], [
443                 WARNING: Causes noticeable loss of speed!])],
444         [all], [ALL for beta; NONE otherwise], [dnl
445         OG_MULTIARG_ITEM([extents], [extents], [checks on extents])
446         OG_MULTIARG_ITEM([types], [types], [checks on types])
447         OG_MULTIARG_ITEM([gc], [gc], [checks on garbage collection])
448         OG_MULTIARG_ITEM([malloc], [malloc], [checks on memory allocation])
449         OG_MULTIARG_ITEM([byte_code], [byte_code], [checks on byte compiled code])
450         OG_MULTIARG_ITEM([bufpos], [bufpos], [checks on buffer position])
451         OG_MULTIARG_ITEM([glyphs], [glyphs], [checks on glyph data])
452         OG_MULTIARG_ITEM([stack], [stack], [checks on stack barriers])
453         OG_MULTIARG_ITEM([malldbg], [malldbg], [malloc debugging code])
454 ])
455
456 OG_ARG_WITH([purify],
457         AS_HELP_STRING([--with-purify],
458                 [Add support for memory debugging using Purify.]),
459         [no], [NO])
460
461 OG_ARG_WITH([quantify],
462         AS_HELP_STRING([--with-quantify],
463                 [Add support for performance debugging using Quantify.]),
464         [no], [NO])
465
466
467 dnl Window System Features
468 dnl ======================
469 OG_OPTION_GROUP(Window System Features)
470
471 OG_ARG_WITH([toolbars],
472         AS_HELP_STRING([--with-toolbars],
473                 [Compile in toolbar support.]),
474         [yes], [YES])
475
476 OG_ARG_WITH([external-widget],
477         AS_HELP_STRING([--with-external-widget],
478                 [Enable the "external widget" interface,
479                 which allows a SXEmacs frame to appear as a widget in
480                 another application.
481                 To date, we haven't heard of anyone who has actually done this.
482                 Consider this EXPERIMENTAL.]),
483         [no], [NO])
484
485 OG_ARG_WITH([menubars],
486         AS_HELP_STRING([--with-menubars=TYPE],
487                 [Type of menubars to use.  The Lucid menubars emulate
488                 Motif (mostly) but are faster.]),
489         [lucid], [Lucid], [lucid no])
490
491 OG_ARG_WITH([scrollbars],
492         AS_HELP_STRING([--with-scrollbars=TYPE],
493                 [Type of scrollbars to use.
494                 *WARNING*  The Motif scrollbars are currently broken.]),
495         [lucid], [Lucid], [lucid motif athena no])
496
497 OG_ARG_WITH([dialogs],
498         AS_HELP_STRING([--with-dialogs=TYPE],
499                 [Type of dialog boxes to use.  Athena dialogs will
500                  be used if Athena can be found.]),
501         [athena], [], [athena motif no])
502
503 OG_ARG_WITH([widgets],
504         AS_HELP_STRING([--with-widgets=TYPE],
505                 [Type of native widgets to use.  Athena widgets will
506                 be used if Athena can be found.]),
507         [athena], [], [athena motif no])
508
509 OG_ARG_WITH([athena],
510         AS_HELP_STRING([--with-athena=TYPE],
511                 [Type of Athena widgets to use.]),
512         [auto], [Autodetect], [auto xaw 3d next 95 xpm no])
513
514 OG_ARG_WITH([xim],
515         AS_HELP_STRING([--with-xim],
516                 [Type of Mule input method to use.]),
517         [auto], [Autodetect], [yes no xlib motif])
518
519 OG_ARG_WITH([wmcommand],
520         AS_HELP_STRING([--with-wmcommand],
521                 [Compile with realized leader window which will
522                 keep the WM_COMMAND property.]),
523         [yes], [YES])
524
525 OG_ARG_WITH([xmu],
526         AS_HELP_STRING([--with-xmu],
527                 [For those unfortunates whose vendors don't ship Xmu.]),
528         [auto], [Autodetect])
529
530 OG_ARG_WITH([xfs],
531         AS_HELP_STRING([--with-xfs],
532                 [Compile with XFontSet support for internationalized
533                 menubar.  Incompatible with `--with-xim=motif'.
534                 `--with-menubars=lucid' (the default) is desirable.]),
535         [no], [NO])
536
537 dnl TTY Options
538 dnl ================
539 OG_OPTION_GROUP(TTY options)
540
541 OG_ARG_WITH([tty],
542         AS_HELP_STRING([--with-tty],
543                 [Add support for ttys.]),
544         [auto], [Autodetect])
545
546 OG_ARG_WITH([ncurses],
547         AS_HELP_STRING([--with-ncurses],
548                 [Use the ncurses library for tty support.]),
549         [auto], [Autodetect])
550
551 OG_ARG_WITH([curses],
552         AS_HELP_STRING([--with-curses],
553                 [Use the curses library for tty support.]),
554         [auto], [Autodetect])
555
556 OG_ARG_WITH([terminfo],
557         AS_HELP_STRING([--with-terminfo],
558                 [Use the terminfo library for tty support.]),
559         [auto], [Autodetect])
560
561 OG_ARG_WITH([termlib],
562         AS_HELP_STRING([--with-termlib],
563                 [Use the termlib library for tty support.]),
564         [auto], [Autodetect])
565
566 OG_ARG_WITH([termcap],
567         AS_HELP_STRING([--with-termcap],
568                 [Use the termcap library for tty support.]),
569         [auto], [Autodetect])
570
571
572 OG_ARG_WITH([gpm],
573         AS_HELP_STRING([--with-gpm],
574                 [Compile in GPM mouse support for ttys.]),
575         [auto], [Autodetect])
576
577
578 dnl Database Options
579 dnl ================
580 OG_OPTION_GROUP(Database options)
581
582 OG_MULTIARG_WITH([database], [dnl
583         AS_HELP_STRING([--with-database=TYPE],
584                 [Compile with database support.])],
585         [auto], [Autodetect], [dnl
586         OG_MULTIARG_ITEM([berkdb], [berkdb], [Berkeley DB support])
587         OG_MULTIARG_ITEM([dbm], [dbm], [DBM database support])
588         OG_MULTIARG_ITEM([gdbm], [gdbm], [GNU DBM support])
589 ])
590
591 OG_ARG_WITH([ldap],
592         AS_HELP_STRING([--with-ldap],
593                 [Compile with support for the LDAP protocol.]),
594         [no], [NO])
595
596 OG_ARG_WITH([postgresql],
597         AS_HELP_STRING([--with-postgresql],
598                 [Compile with support for the PostgreSQL RDBMS.]),
599         [yes], [Autodetect])
600
601
602 dnl Multimedia Options
603 dnl ==================
604 OG_OPTION_GROUP(Multimedia options)
605
606 OG_MULTIARG_WITH([image], [dnl
607         AS_HELP_STRING([--with-image=TYPE],
608                 [Compile with image support.])],
609         [auto], [Autodetect all image support], [dnl
610         OG_MULTIARG_ITEM([gif], [GIF], [GIF image format])
611         OG_MULTIARG_ITEM([xpm], [XPM], [X PixMap image format])
612         OG_MULTIARG_ITEM([png], [PNG], [Portable Network Graphic format])
613         OG_MULTIARG_ITEM([jpeg], [JPEG], [jpeg image format])
614         OG_MULTIARG_ITEM([tiff], [TIFF], [TIFF image format])
615         OG_MULTIARG_ITEM([xface], [xface], [base64 encoded xbm])
616 ])
617
618 OG_MULTIARG_WITH([sound], [dnl
619         AS_HELP_STRING([--with-sound=TYPE],
620                 [Compile with sound support.])],
621         [auto], [Autodetect all sound support (except Pulse)], [dnl
622         OG_MULTIARG_ITEM([alsa], [ALSA], [kernel-based linux sound standard])
623         OG_MULTIARG_ITEM([ao], [ao], [generic audio output layer])
624         OG_MULTIARG_ITEM([esd], [ESD], [Enlightenment Sound Daemon])
625         OG_MULTIARG_ITEM([jack], [Jack], [a low-latency audio server])
626         OG_MULTIARG_ITEM([nas], [NAS], [Network Audio System])
627         OG_MULTIARG_ITEM([oss], [OSS], [Open Sound System])
628 ])
629
630 OG_ARG_WITH([pulseaudio],
631         AS_HELP_STRING([--with-pulseaudio],
632                 [Compile with support for the PulseAudio audio server.
633                 This has been turned off by default because of too many
634                 bugs in recent versions of PA.  Use at your own risk,
635                 YMMV, and all that.]),
636         [no], [NO])
637
638 OG_MULTIARG_WITH([media], [dnl
639         AS_HELP_STRING([--with-media=TYPE],
640                 [Compile with media stream support.])],
641         [auto], [Autodetect all media stream support libraries], [dnl
642         OG_MULTIARG_ITEM([ffmpeg], [FFmpeg], [media streams handled by ffmpeg])
643         OG_MULTIARG_ITEM([internal], [internal], [media streams handled internally])
644         OG_MULTIARG_ITEM([mad], [Mad], [media streams handled by mad])
645         OG_MULTIARG_ITEM([sndfile], [sndfile], [media streams handled by sndfile])
646         OG_MULTIARG_ITEM([sox], [SoX], [media streams handled by sox])
647         OG_MULTIARG_ITEM([magic], [magic], [file/libmagic support])
648 ])
649
650
651 dnl Cryptography Options
652 dnl ====================
653 OG_OPTION_GROUP(Cryptography options)
654
655 OG_ARG_WITH([openssl],
656         AS_HELP_STRING([--with-openssl],
657                 [Compile in experimental support for
658                 OpenSSL libcrypto and libssl.]),
659         [yes], [YES])
660
661 OG_ARG_WITH([gnutls],
662         AS_HELP_STRING([--with-gnutls],
663                 [Compile in experimental support for
664                 GnuTLS transport security.]),
665         [no], [NO])
666
667
668 dnl Networking Options
669 dnl ==================
670 OG_OPTION_GROUP(Networking options)
671
672 OG_ARG_WITH([dnet],
673         AS_HELP_STRING([--with-dnet],
674                 [Compile with support for DECnet.]),
675         [no], [NO])
676
677 OG_ARG_WITH([socks],
678         AS_HELP_STRING([--with-socks],
679                 [Compile with support for SOCKS (an Internet proxy).]),
680         [auto], [Autodetect])
681
682 OG_ARG_WITH([ipv6-cname],
683         AS_HELP_STRING([--with-ipv6-cname],
684                 [Try IPv6 information first when canonicalizing host names.
685                 This option has no effect unless system supports
686                 getaddrinfo(3) and getnameinfo(3).]),
687         [no], [NO])
688
689 OG_ARG_WITH([pop],
690         AS_HELP_STRING([--with-pop],
691                 [Support POP for mail retrieval.]),
692         [no], [NO])
693
694 OG_ARG_WITH([kerberos],
695         AS_HELP_STRING([--with-kerberos],
696                 [Support Kerberos-authenticated POP.]),
697         [no], [NO])
698
699 OG_ARG_WITH([hesiod],
700         AS_HELP_STRING([--with-hesiod],
701                 [Support Hesiod to get the POP server host.]),
702         [no], [NO])
703
704
705 dnl File-related Options
706 dnl ====================
707 OG_OPTION_GROUP(File-related options)
708
709 OG_ARG_WITH([clash-detection],
710         AS_HELP_STRING([--with-clash-detection],
711                 [Use lock files to detect multiple edits
712                 of the same file.]),
713         [no], [NO])
714
715 OG_ARG_WITH([mail-locking],
716         AS_HELP_STRING([--with-mail-locking=TYPE],
717                 [Specify the locking to be used by movemail to prevent
718                 concurrent updates of mail spool files. Valid types
719                 are `lockf'  `flock'  `file'  `locking'  `pop' or `mmdf'.]),
720         [auto], [Autodetect], [lockf flock file locking mmdf pop no])
721
722
723 dnl Internationalisation Options
724 dnl ============================
725 OG_OPTION_GROUP(Internationalisation options)
726
727 OG_ARG_WITH([mule],
728         AS_HELP_STRING([--with-mule],
729                 [Compile with Mule (MUlti-Lingual Emacs) support
730                 needed to support non-Latin-1 (including Asian)
731                 languages.]),
732         [yes], [YES])
733
734 OG_ARG_WITH([canna],
735         AS_HELP_STRING([--with-canna],
736                 [Compile with support for Canna (a Japanese input method
737                 used in conjunction with Mule support).]),
738         [auto], [Autodetect when Mule is enabled])
739
740 OG_ARG_WITH([wnn],
741         AS_HELP_STRING([--with-wnn],
742                 [Compile with support for Wnn (a multi-language input
743                 method used in conjunction with Mule support).]),
744         [auto], [Autodetect when Mule is enabled])
745
746 OG_ARG_WITH([wnn6],
747         AS_HELP_STRING([--with-wnn6],
748                 [Compile with support for the commercial package Wnn6.]),
749         [auto], [Autodetect when Mule is enabled])
750
751
752
753 dnl dnl Other Options
754 dnl dnl =============
755 dnl OG_OPTION_GROUP(Other options)
756 dnl
757
758 ## -------------------------------------------------------------------------
759 ## Check for users who regularly forget about running autoconf
760 ## -------------------------------------------------------------------------
761 if test -f $0.ac -a $0.ac -nt $0; then
762         AC_MSG_ERROR([What are you doing? RUN autoreconf NOW!!!])
763 fi
764
765 #
766 # Turn off core generation. We are already verifying the program fails, no need
767 # poluting the workspace. Of course if you are a SXEmacs developer you may want
768 # to comemnt this on occasion :-)
769 ulimit -c 0
770
771 ## initialise our nestable msg funs
772 SXE_INIT_MSG_LEVEL
773
774 dnl Small snippet to make echo -n work on solaris
775 ECHO_N= ECHO_C=
776 case `echo -n x` in
777 -n*)
778         case `echo 'x\c'` in
779         *c*)
780                 ;;
781         *)
782                 ECHO_C='\c'
783                 ;;
784         esac
785         ;;
786 *)
787         ECHO_N='-n'
788         ;;
789 esac
790
791
792 echo
793 echo "Preparing the build chain"
794 echo "========================="
795
796 ## We should brag about ourselves, no?
797 AC_DEFINE([XEMACS], [1], [Pretend to be an XEmacs])
798 AC_DEFINE([SXEMACS], [1], [Why not? It's the truth!])
799
800 dnl -------------------------------------------------------------------------
801 dnl Command line argument processing.
802 dnl -------------------------------------------------------------------------
803 dnl Check for bogus options
804 dnl -------------------------------------------------------------------------
805 SXE_CHECK_COMMAND_LINE
806
807 AM_INIT_AUTOMAKE([foreign -Wall])
808 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
809 SXE_CHECK_BUILDCHAIN
810 AC_SUBST(EGREP)
811
812 progname=$0
813 progbasename=$(basename $progname)
814 progdirname=$(dirname $progname)
815
816 ## Build Options
817 ## =============
818
819 echo
820 echo "Build and System Specific Options"
821 echo "================================="
822
823 SXE_EXPLORE_BUILD_ENVIRONMENT
824
825 dnl ----------------------------------------
826 dnl Find out which version of SXEmacs this is
827 dnl ----------------------------------------
828 AC_CHECK_PROG([have_git], [git], [yes], [no])
829 AC_MSG_CHECKING([for SXEmacs version])
830 AC_MSG_RESULT([SXEmacs SXEM4CS_VERSION])
831 dnl Must do the following first to determine verbosity for AC_DEFINE
832 if test -n "[]SXEM4CS_BETA_P[]"; then
833         beta=yes
834 else
835         beta=no
836 fi
837 : "${extra_verbose=$beta}"
838
839 AC_MSG_CHECKING([for SXEmacs patchlevel])
840 CURDIR=$(pwd)
841 cd "$sxe_srcdir"
842 if test "$have_git" = "yes"; then
843         sxemacs_git_version="$(git describe | head -1)"
844 fi
845 if test -z "$sxemacs_git_version" ; then
846         sxemacs_git_version="[]SXEM4CS_GIT_VERSION[]"
847 fi
848 AC_MSG_RESULT([$sxemacs_git_version])
849 version="$sxemacs_git_version"
850 cd "$CURDIR"
851 main_version="$sxemacs_git_version"
852 AC_DEFINE_UNQUOTED([EMACS_MAJOR_VERSION], [SXEM4CS_MAJOR_VERSION], [Description here!])
853 AC_DEFINE_UNQUOTED([EMACS_MINOR_VERSION], [SXEM4CS_MINOR_VERSION], [Description here!])
854 old_version=[]SXEM4CS_VERSION[]
855 if test -n "[]SXEM4CS_BETA_VERSION[]"; then
856         AC_MSG_CHECKING([if we are a beta version])
857         if test "$beta" = "yes"; then
858                 AC_MSG_RESULT([yes])
859                 AC_DEFINE_UNQUOTED([EMACS_BETA_VERSION], [SXEM4CS_BETA_VERSION],
860                         [Description here!])
861         else
862                 AC_MSG_RESULT([no])
863                 AC_DEFINE_UNQUOTED([EMACS_PATCH_LEVEL], [SXEM4CS_BETA_VERSION],
864                         [Description here!])
865         fi
866 fi
867 AC_DEFINE_UNQUOTED([SXEMACS_CODENAME], ["[]SXEM4CS_CODENAME[]"], [Description here!])
868 AC_DEFINE_UNQUOTED([EMACS_VERSION], ["$version"], [Description here!])
869 AC_DEFINE_UNQUOTED([SXEMACS_GIT_VERSION], ["$sxemacs_git_version"],
870         [Description here!])
871
872 PROGNAME=sxemacs
873
874 AC_DEFINE_UNQUOTED([EMACS_PROGNAME], ["$PROGNAME"], [Description here!])
875
876 ## build stuff in lib-src unconditionally
877 SXE_APPEND([lib-src], [MAKE_SUBDIR])
878 SXE_APPEND([lib-src], [INSTALL_ARCH_DEP_SUBDIR])
879
880 ## C compiler build chain
881 AC_USE_SYSTEM_EXTENSIONS
882 AC_LANG([C])
883 AS_MESSAGE([Let's look for the entire C build chain])
884 SXE_CHECK_CC
885 SXE_CHECK_CFLAGS
886
887 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
888
889 ## check machine chars
890 AS_MESSAGE([Let's have a detailed glance at your machine])
891 SXE_PROC_CPUID
892 SXE_PROC_VENDORID
893 SXE_NPROCESSORS
894 SXE_CHECK_PROC_GOODNESS
895
896
897 ## Debugging Options
898 ## =================
899 ## echo
900 ## echo "Debugging Options"
901 ## echo "================="
902
903 dnl ----------------------------------
904 dnl Error checking and debugging flags
905 dnl ----------------------------------
906 dnl Error checking default to "yes" in beta versions, to "no" in releases.
907 dnl Same goes for --enable-debug and --extra-verbosity.
908 if test "$with_error_checking_extents" = yes; then
909         have_error_checking_extents="yes"
910         AC_DEFINE([ERROR_CHECK_EXTENTS], [1], [Description here!])
911         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
912 fi
913 if test "$with_error_checking_types" = yes; then
914         have_error_checking_types="yes"
915         AC_DEFINE([ERROR_CHECK_TYPECHECK], [1], [Description here!])
916         AC_DEFINE_UNQUOTED([type_checking_assert(assertion)],
917                 [assert (assertion)], [
918                 Make sure that all X... macros are dereferencing the correct type,
919                 and that all XSET... macros (as much as possible) are setting the
920                 correct type of structure.  Highly recommended for all
921                 development work.])
922         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
923 else
924         AC_DEFINE_UNQUOTED([type_checking_assert(assertion)], [], [])
925 fi
926 if test "$with_error_checking_bufpos" = yes; then
927         have_error_checking_bufpos="yes"
928         AC_DEFINE([ERROR_CHECK_BUFPOS], [1], [Description here!])
929         AC_DEFINE_UNQUOTED([bufpos_checking_assert(assertion)],
930                 [assert (assertion)], [dnl
931                 Make sure valid buffer positions are passed to BUF_* macros])
932         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
933 else
934         AC_DEFINE_UNQUOTED([bufpos_checking_assert(assertion)], [], [])
935 fi
936 if test "$with_error_checking_gc" = yes; then
937         have_error_checking_gc="yes"
938         AC_DEFINE([ERROR_CHECK_GC], [1], [Description here!])
939         AC_DEFINE_UNQUOTED([gc_checking_assert(assertion)],
940                 [assert (assertion)], [dnl
941                 Attempt to catch bugs related to garbage collection
942                 (e.g. not GCPRO'ing)])
943         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
944 else
945         AC_DEFINE_UNQUOTED([gc_checking_assert(assertion)], [], [])
946 fi
947 if test "$with_error_checking_malloc" = yes; then
948         have_error_checking_malloc="yes"
949         AC_DEFINE([ERROR_CHECK_MALLOC], [1], [Description here!])
950         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
951 fi
952 if test "$with_error_checking_byte_code"  = yes; then
953         have_error_checking_byte_code="yes"
954         AC_DEFINE([ERROR_CHECK_BYTE_CODE], [1], [Description here!])
955         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
956 fi
957 if test "$with_error_checking_glyphs" = yes; then
958         have_error_checking_glyphs="yes"
959         AC_DEFINE([ERROR_CHECK_GLYPHS], [1], [Description here!])
960         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
961 fi
962
963 dnl enable_debug=yes must be set when error checking is present.  This should be
964 dnl fixed up.
965 dnl with_debug implies other options
966 if test "${with_debug:=$beta}" = "yes"; then
967         with_memory_usage_stats=yes
968         SXE_ADD_CRUFT_OBJS([debug.o])
969         SXE_ADD_CRUFT_OBJS([tests.o])
970         AC_DEFINE([DEBUG_SXEMACS], [1], [Description here!])
971 fi
972 if test "$with_memory_usage_stats" = "yes"; then
973         AC_DEFINE([MEMORY_USAGE_STATS], [1], [Description here!])
974 fi
975
976
977
978 dnl --------------------------------------------------------------
979 dnl $opsys detection complete; defaults depending on $opsys follow
980 dnl --------------------------------------------------------------
981
982
983 dnl --------------------------------------------------------------
984 dnl WooHoo! pdump is ON always and everywhere! --SY.
985 dnl --------------------------------------------------------------
986 with_pdump=yes
987
988 if test "$with_dynamic" != "no"; then
989         case "$opsys" in
990         hpux* | sunos4* )
991                 with_dynamic=no
992                 ;;
993         *)
994                 with_dynamic=yes
995                 ;;
996         esac
997 fi
998 if test "$with_dynamic" = "yes"; then
999         case "$opsys" in
1000         hpux* | sunos4* | sco5 )
1001                 opsys="${opsys}-shr"
1002                 ;;
1003         decosf* )
1004                 ld_call_shared="-call_shared"
1005                 ;;
1006         darwin* )
1007                 AC_DEFINE([DLSYM_NEEDS_UNDERSCORE], [1], [Description here!])
1008                 if test "x$have_ld_no_pie" != "x"; then
1009                         SXE_PREPEND_LINKER_FLAG([-no_pie], [ld_switch_site])
1010                 fi
1011                 ;;
1012         esac
1013 else dnl "$with_dynamic" = "no"
1014         case "$opsys" in
1015         sol2 )
1016                 echo "Static linking is not supported on Solaris 2."
1017                 echo "Rerun configure without specifying --without-dynamic."
1018                 exit 1
1019                 ;;
1020         linux )
1021                 ld_call_shared="-Bstatic"
1022                 ;;
1023         decosf* )
1024                 ld_call_shared="-non_shared"
1025                 ;;
1026         darwin* )
1027                 AC_DEFINE([DLSYM_NEEDS_UNDERSCORE], [1], [Description here!])
1028                 if test "x$have_ld_no_pie" != "x"; then
1029                         SXE_PREPEND_LINKER_FLAG([-no_pie], [ld_switch_site])
1030                 fi
1031                 ;;
1032         esac
1033 fi
1034
1035 dnl Tools configuration
1036 case "$opsys" in
1037 aix* )
1038         NON_GNU_CC=xlc
1039         ;;      dnl Use xlc by default on AIX
1040 darwin )
1041         RANLIB="ranlib -c"
1042         ;;  dnl Avoid link error in lwlib-config.c
1043         ## this needs rework I think because RANLIB is provided by LT_INIT anyway
1044 esac
1045
1046 stack_trace_eye_catcher=\
1047 `echo ${PROGNAME}_${version}_${ac_cv_build} | sed 'y!@/.-!____!'`
1048 AC_DEFINE_UNQUOTED([STACK_TRACE_EYE_CATCHER], [$stack_trace_eye_catcher],
1049         [Just a very looong string to make traces more readable.])
1050
1051 dnl --------------------------------------------------
1052 dnl Determine the compiler, set up for feature testing
1053 dnl --------------------------------------------------
1054
1055 if test "$with_clash_detection" != "no"; then
1056         AC_DEFINE([CLASH_DETECTION], [1], [Description here!])
1057         SXE_ADD_CRUFT_OBJS([filelock.o])
1058 fi
1059
1060
1061 dnl what exactly do we determine here? and where is it used?
1062 dnl dnl Determine GCC version.
1063 dnl if test "$GCC" = "yes"; then
1064 dnl     AC_RUN_IFELSE([AC_LANG_SOURCE([[
1065 dnl int main ()
1066 dnl {
1067 dnl #if __GNUC__ >= 3
1068 dnl     return 11;
1069 dnl #else
1070 dnl     return 0;
1071 dnl #endif
1072 dnl }]])], [:], [dnl
1073 dnl case "$?" in
1074 dnl 11)
1075 dnl     echo "You appear to be using GCC version 3 or above."
1076 dnl     __GCC3=yes
1077 dnl     ;;
1078 dnl esac], [__GCC3=no])
1079 dnl fi
1080
1081 dnl We don't do AC_PROG_CC for SXEMACS_CC; if we can't trust these people....
1082 : ${SXEMACS_CC:="$CC"}
1083
1084 dnl Figure out what C preprocessor to use.
1085
1086 dnl On Sun systems, people sometimes set up the variable CPP
1087 dnl with a value that is a directory, not an executable at all.
1088 dnl Detect that case, and ignore that value.
1089 test -n "$CPP" -a -d "$CPP" && CPP=
1090
1091 test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
1092
1093 dnl --------------------------------------------------------------------
1094 dnl Compiler feature macros
1095 dnl --------------------------------------------------------------------
1096
1097
1098 dnl --------------------------------------------------------------------
1099 dnl Extract some information from the operating system and machine files
1100 dnl --------------------------------------------------------------------
1101
1102 echo "Extracting information from the machine- and system-dependent headers..."
1103
1104 SXE_CHECK_MACHARCH
1105 SXE_EXTRACT_MACHARCH_INFO
1106
1107 dnl s&m files shouldn't be required to define anything, or even to exist.
1108 dnl So we default SYSTEM_TYPE to the obvious documented standard, `uname -s`,
1109 dnl appropriately emacsulated.
1110 if test -z "$system_type"; then
1111         AC_DEFINE_UNQUOTED([SYSTEM_TYPE],
1112                 ["`uname -s | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"],
1113                 [Description here!])
1114 fi
1115
1116 dnl If the s&m files don't define a system-specific dumper, simply use pdump.
1117 dnl Sometime in the future, we'll remove all definitions of UNEXEC
1118 dnl from all the s&m files.
1119 test -z "$unexec" && with_pdump=yes
1120
1121 if test "$with_pdump" = "yes"; then
1122         ordinary_link="yes"
1123         ld="${ordinary_ld}"
1124         start_files=
1125         libs_standard=
1126         unexec=
1127         lib_gcc=
1128 fi
1129
1130 dnl dnl For debugging...
1131 dnl SXE_PRINT_VAR([libs_machine libs_system libs_termcap libs_standard
1132 dnl     objects_machine objects_system c_switch_machine c_switch_system
1133 dnl     ld_switch_machine ld_switch_system unexec ld_switch_shared
1134 dnl     ld lib_gcc ld_text_start_addr start_files ordinary_link
1135 dnl     have_terminfo mail_use_flock mail_use_lockf]) && echo ""
1136
1137 dnl bitch at build attempt on win32 machines
1138 case "$opsys" in mingw* | cygwin*)
1139         SXE_DIE("Invalid operation system. Cannot build on win32 machines.")
1140 esac
1141
1142 dnl Non-ordinary link usually requires -lc
1143 test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc"
1144
1145 ## perform compiler specific things
1146 SXE_DO_CC_HACKS
1147 ## machine specific extensions
1148 SXE_CHECK_SIMD_EXTENSIONS
1149
1150 ## some linker flags that might come in handy
1151 SXE_CHECK_LDFLAGS
1152
1153 ## suffices to be defined late, for instance here
1154 SXE_CHECK_PARSER_LEXER
1155
1156 if test "$with_pdump" != "yes"; then
1157         ## GNU ld now defaults to combreloc, which screws up unexec,
1158         ## but not pdump.
1159         ## Note that it's OK if the GNU style long option causes
1160         ## non-GNU ld to barf a usage message, that's often good
1161         ## enough.  Please report it, though.
1162         ## #### Should make this Solaris-friendly.
1163         ## Link with -z nocombreloc for now.
1164         SXE_CHECK_LD_ZFLAG([nocombreloc])
1165         if test "$sxe_cv_ld__z_nocombreloc" = "yes"; then
1166                 SXE_PREPEND_LINKER_FLAG([-z nocombreloc], [ld_switch_site])
1167         fi
1168 fi
1169
1170 dnl Inform compiler that certain flags are meant for the linker
1171 SXE_PROTECT_LINKER_FLAGS(ld_switch_system)
1172 SXE_PROTECT_LINKER_FLAGS(ld_switch_machine)
1173 SXE_PROTECT_LINKER_FLAGS(ld_switch_site)
1174 SXE_PROTECT_LINKER_FLAGS(LDFLAGS)
1175 SXE_PROTECT_LINKER_FLAGS(ld_call_shared)
1176
1177 dnl Add s&m-determined objects to link line
1178 test -n "$objects_machine" && SXE_ADD_CORE_OBJS($objects_machine)
1179 test -n "$objects_system"  && SXE_ADD_CORE_OBJS($objects_system)
1180 test "$with_pdump" = "yes" && SXE_ADD_CORE_OBJS(dumper.o)
1181
1182
1183 dnl Feed s&m crud to src/Makefile
1184
1185 dnl Linux/powerpc needs the following magic for some reason
1186 dnl [Not needed with YellowDog 2.3 and causes link problems with YellowDog 3.0,
1187 dnl the two most popular PowerPC distributions.]
1188 dnl test "$machine$opsys" = "powerpclinux" && start_flags="-T $sxe_srcdir/src/ppc.ldscript"
1189
1190 AC_LANG(C)
1191 if test "$unexec" = "unexaix.o"; then
1192 dnl AIX needs various hacks to make static linking work.
1193   if   test "$with_dynamic" = "no"; then
1194   start_flags="-Wl,-bnso,-bnodelcsect"
1195   test "$GCC" = "yes" && start_flags="-B/bin/ ${start_flags}"
1196   for f in "/lib/syscalls.exp" "/lib/threads.exp"; do
1197     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; fi
1198   done
1199   for f in "/usr/lpp/X11/bin/smt.exp" "/usr/bin/X11/smt.exp"; do
1200     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; break; fi
1201   done
1202   AC_CHECK_LIB([c], [terminateAndUnload], [SXE_APPEND(-lC, libs_system)])
1203   fi
1204 elif test -n "$ld_text_start_addr"; then
1205   start_flags="-T $ld_text_start_addr -e __start"
1206 fi
1207 AC_SUBST(start_flags)
1208
1209 AC_SUBST(ld_switch_shared)
1210 AC_SUBST(start_files)
1211 if test "$ordinary_link" = "no" -a "$GCC" = "yes"; then
1212         if test -z "$linker"; then
1213                 linker='$(CC) -nostdlib'
1214                 SXE_APPEND([-nostdlib], [start_flags])
1215         fi
1216         test -z "$lib_gcc" && lib_gcc='`$(CC) -print-libgcc-file-name`'
1217 fi
1218 test "$GCC" != "yes" && lib_gcc=
1219 AC_SUBST(ld)
1220 AC_SUBST(lib_gcc)
1221
1222
1223
1224 ## ---------------------------------------------------------------
1225 ## Add site and system specific flags to compile and link commands
1226 ## ---------------------------------------------------------------
1227
1228 ## compute those site prefixes
1229 SXE_COMPUTE_SITE_PREFIXES
1230 ## compute a LD_RUN_PATH
1231 SXE_COMPUTE_LD_RUN_PATH
1232
1233
1234 ## some header checks
1235 SXE_CHECK_BASIC_HEADERS
1236 ## the very basic c types
1237 SXE_CHECK_BASIC_TYPES
1238
1239 ## for signalling
1240 SXE_CHECK_SIGNALS
1241
1242 AC_CHECK_MEMBERS([struct stat.st_rdev])
1243 AC_CHECK_TYPES([ptrdiff_t])
1244
1245 ## check whether intptr_t is definied in sys/types.h
1246 SXE_CHECK_INTPTR_T
1247
1248 dnl -lm is required for floating point support, among other things
1249 AC_CHECK_FUNC([sin], [], [AC_CHECK_LIB([m], [sin])])
1250
1251
1252 dnl check for Make feature
1253 AC_PROG_MAKE_SET
1254
1255
1256 dnl check for long file names
1257 AC_SYS_LONG_FILE_NAMES
1258 AC_SYS_LARGEFILE
1259 AC_SYS_INTERPRETER
1260 AC_SYS_POSIX_TERMIOS
1261
1262 AC_FUNC_MALLOC
1263 AC_FUNC_MKTIME
1264
1265 dnl See if mkstemp is available
1266 AC_CHECK_FUNCS([mkstemp])
1267
1268 SXE_CHECK_FILE_LOCK
1269
1270 case "$opsys" in decosf*)
1271         AC_CHECK_LIB([pthreads], [cma_open])
1272         if test "$ac_cv_lib_pthreads_cma_open" = "yes"; then
1273                 c_switch_site="$c_switch_site -threads"
1274         fi
1275         ;;
1276 esac
1277
1278
1279 dnl ----------------------------------------------------------------
1280 dnl Miscellaneous flags
1281 dnl ----------------------------------------------------------------
1282
1283 AC_MSG_CHECKING(whether the -xildoff compiler flag is required)
1284 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
1285   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
1286     then AC_MSG_RESULT(no);
1287     else AC_MSG_RESULT(yes); SXE_APPEND_UNDUP(-xildoff, ld_switch_site)
1288   fi
1289   else AC_MSG_RESULT(no)
1290 fi
1291
1292 dnl Link with "-z ignore" on Solaris if supported
1293 if test "$opsys" = "sol2"; then
1294   if test "$os_release" -ge 506; then
1295     AC_MSG_CHECKING(for "-z ignore" linker flag)
1296     case "`ld -h 2>&1`" in
1297       *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
1298         SXE_PREPEND_UNDUP(-z ignore, ld_switch_site) ;;
1299       *) AC_MSG_RESULT(no) ;;
1300     esac
1301   fi
1302 fi
1303
1304 dnl ----------------------------------------------------------------
1305 dnl Check for Unixoid pty/process support.
1306 dnl ----------------------------------------------------------------
1307
1308 dnl There is no "standard" pty allocation method.  Every system is different.
1309 dnl  getpt()  is the preferred pty allocation method on glibc systems.
1310 dnl _getpty() is the preferred pty allocation method on SGI systems.
1311 dnl grantpt(), unlockpt(), ptsname() are defined by Unix98.
1312 AC_CHECK_FUNCS([getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp])
1313
1314 dnl openpty() is the preferred pty allocation method on BSD and Tru64 systems.
1315 dnl openpty() might be declared in:
1316 dnl - pty.h (Tru64 or Linux)
1317 dnl - libutil.h (FreeBSD)
1318 dnl - util.h (NetBSD)
1319 AC_CHECK_FUNC(openpty, have_openpty=yes, [
1320   AC_CHECK_LIB(util, openpty, have_openpty=yes need_libutil=yes)])
1321 if test "$have_openpty" = "yes"; then
1322   AC_DEFINE([HAVE_OPENPTY], [1], [Description here!])
1323   AC_CHECK_HEADERS(libutil.h util.h, break)
1324   test "$need_libutil" = "yes" && SXE_APPEND(-lutil, libs_system)
1325 fi
1326
1327 dnl Check for system-specific pty header files
1328 dnl Often the TIOCSIG* symbols are hiding there.
1329 case "$opsys" in
1330   dnl HPUX pty.h #defines TRUE and FALSE, so just use ptyio.h there.
1331   hpux*) AC_CHECK_HEADERS(sys/ptyio.h) ;;
1332   *) AC_CHECK_HEADERS(pty.h)
1333      test "$ac_cv_header_pty_h" = "no" && AC_CHECK_HEADERS(sys/pty.h)
1334      ;;
1335 esac
1336
1337 dnl Check for STREAM support functions.
1338 dnl Confusingly, "str" means both "string" and "SysV Streams".
1339 AC_CHECK_HEADERS(stropts.h)
1340 if test "$ac_cv_header_stropts_h" = "yes"; then
1341   AC_CHECK_FUNCS(isastream)
1342   AC_CHECK_HEADERS(strtio.h) dnl TIOCSIGNAL
1343 fi
1344
1345 dnl Check whether the system provides getloadavg().
1346 AC_CHECK_FUNCS(getloadavg)
1347
1348 if test "$ac_cv_func_getloadavg" = "yes"; then
1349   dnl Solaris 8 declares getloadavg() in <sys/loadavg.h>.
1350   dnl glibc 2.2 declares getloadavg() in <stdlib.h>...
1351   dnl   ...if we #define _GNU_SOURCE, which we do.
1352   AC_CHECK_HEADERS(sys/loadavg.h)
1353 else
1354   dnl We define our own getloadavg() using lower level functions.
1355   SXE_ADD_CRUFT_OBJS([getloadavg.o])
1356
1357   dnl Used by getloadavg() - does not require root priveleges
1358   AC_CHECK_LIB(kstat, kstat_open)
1359   AC_CHECK_HEADERS(kstat.h)
1360
1361   dnl Another way to get the load average
1362   AC_CHECK_LIB(kvm, kvm_read)
1363 fi
1364
1365 dnl If netdb.h does not declare h_errno, we must declare it by hand.
1366 AC_MSG_CHECKING(whether netdb declares h_errno)
1367 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
1368   [[return h_errno;]])],
1369   [AC_MSG_RESULT(yes)
1370    AC_DEFINE([HAVE_H_ERRNO], [1], [Description here!])],
1371   [AC_MSG_RESULT(no)])
1372
1373 AC_MSG_CHECKING([for sigsetjmp])
1374 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1375 #include <setjmp.h>
1376         ]], [[
1377 sigjmp_buf bar;
1378 sigsetjmp (bar, 0);
1379         ]])],
1380         [sxe_cv_c_func_sigsetjmp="yes"],
1381         [sxe_cv_c_func_sigsetjmp="no"])
1382 AC_MSG_RESULT([$sxe_cv_c_func_sigsetjmp])
1383 if test "$sxe_cv_c_func_sigsetjmp" = "yes"; then
1384         AC_DEFINE([HAVE_SIGSETJMP], [1], [Description here!])
1385         AC_DEFINE_UNQUOTED([SETJMP(x)], [sigsetjmp (x, 0)], [dnl
1386                 We want to avoid saving the signal mask if possible, because
1387                 that necessitates a system call.])
1388         AC_DEFINE_UNQUOTED([LONGJMP(x, y)], [siglongjmp(x, y)], [dnl
1389                 Description here!])
1390         AC_DEFINE_UNQUOTED([JMP_BUF], [sigjmp_buf], [dnl
1391                 Description here!])
1392 else
1393         AC_DEFINE_UNQUOTED([SETJMP(x)], [setjmp(x)], [dnl
1394                 We want to avoid saving the signal mask if possible, because
1395                 that necessitates a system call.])
1396         AC_DEFINE_UNQUOTED([LONGJMP(x, y)], [longjmp(x, y)], [Description here!])
1397         AC_DEFINE_UNQUOTED([JMP_BUF], [jmp_buf], [Description here!])
1398 fi
1399
1400
1401 AC_MSG_CHECKING(whether localtime caches TZ)
1402 AC_CACHE_VAL(emacs_cv_localtime_cache,
1403 [if test "$ac_cv_func_tzset" = "yes"; then
1404 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <time.h>
1405 #if STDC_HEADERS
1406 # include <stdlib.h>
1407 #endif
1408 extern char **environ;
1409 unset_TZ ()
1410 {
1411   char **from, **to;
1412   for (to = from = environ; (*to = *from); from++)
1413     if (! (to[[0]][[0]] == 'T' && to[[0]][[1]] == 'Z' && to[[0]][[2]] == '='))
1414       to++;
1415 }
1416 char TZ_GMT0[[]] = "TZ=GMT0";
1417 char TZ_PST8[[]] = "TZ=PST8";
1418 main()
1419 {
1420   time_t now = time ((time_t *) 0);
1421   int hour_GMT0, hour_unset;
1422   if (putenv (TZ_GMT0) != 0)
1423     exit (1);
1424   hour_GMT0 = localtime (&now)->tm_hour;
1425   unset_TZ ();
1426   hour_unset = localtime (&now)->tm_hour;
1427   if (putenv (TZ_PST8) != 0)
1428     exit (1);
1429   if (localtime (&now)->tm_hour == hour_GMT0)
1430     exit (1);
1431   unset_TZ ();
1432   if (localtime (&now)->tm_hour != hour_unset)
1433     exit (1);
1434   exit (0);
1435 }]])], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
1436 [# If we have tzset, assume the worst when cross-compiling.
1437 emacs_cv_localtime_cache=yes])
1438 else
1439         # If we lack tzset, report that localtime does not cache TZ,
1440         # since we can't invalidate the cache if we don't have tzset.
1441         emacs_cv_localtime_cache=no
1442 fi],[:])dnl
1443 AC_MSG_RESULT($emacs_cv_localtime_cache)
1444 if test $emacs_cv_localtime_cache = yes; then
1445   AC_DEFINE([LOCALTIME_CACHE], [1], [Description here!])
1446 fi
1447
1448
1449 need_alloca_c=no
1450 dnl HP-UX has a working alloca in libPW.
1451 dnl case "${GCC}${opsys}" in hpux* )
1452 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
1453 dnl esac
1454
1455 dnl AC_FUNC_ALLOCA doesn't know about DEC C's #pragma intrinsic(alloca)
1456 if test "$__DECC" != "yes"; then
1457         AC_FUNC_ALLOCA
1458         if test -n "$ALLOCA"; then
1459                 SXE_ADD_CRUFT_OBJS([$ALLOCA])
1460                 need_alloca_c=yes
1461         fi
1462 fi
1463
1464 AC_MSG_CHECKING(for working alloca in function calls)
1465 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1466 #if defined (__GNUC__)
1467 #define alloca __builtin_alloca
1468 #elif defined (__DECC)
1469 #include <alloca.h>
1470 #pragma intrinsic(alloca)
1471 #elif defined (HAVE_ALLOCA_H)
1472 #include <alloca.h>
1473 #elif defined (_AIX)
1474 #pragma alloca
1475 #elif ! defined (alloca)
1476 #ifdef C_ALLOCA
1477 #define alloca xemacs_c_alloca
1478 #else
1479 void *alloca ();
1480 #endif /* C_ALLOCA */
1481 #endif /* !defined (alloca) */
1482
1483 void
1484 f1 (double a, void *ptr, int b)
1485 {
1486   unsigned char *ptr2 = (unsigned char *) ptr;
1487   if (ptr2[[0]] != 0xBF || ptr2[[1]] != 0xBF || ptr2[[3000]] != 0xBF)
1488     exit (1);
1489   if (a != 3.1415 || b != -5490)
1490     exit (1);
1491 }
1492
1493 int
1494 f2 (short c, void *ptr, long e)
1495 {
1496   unsigned char *ptr2 = (unsigned char *) ptr;
1497   if (ptr2[[0]] != 0xFB || ptr2[[1]] != 0xFB || ptr2[[1000]] != 0xFB)
1498     exit (1);
1499   if (c != 665 || e != 776776776)
1500     exit (1);
1501   f1 (3.1415, memset (alloca (3001), 0xBF, 3001), -5490);
1502   return 42;
1503 }
1504
1505 int
1506 main (int argc, char *argv[])
1507 {
1508   if (f2 (665, memset (alloca (1001), 0xFB, 1001), 776776776) != 42)
1509     return 1;
1510   return 0;
1511 }
1512 ]])], working_alloca_in_function_calls=yes, working_alloca_in_function_calls=no,
1513 working_alloca_in_function_calls=no)
1514 AC_MSG_RESULT($working_alloca_in_function_calls)
1515 test "$working_alloca_in_function_calls" != "yes" && \
1516   AC_DEFINE([BROKEN_ALLOCA_IN_FUNCTION_CALLS], [1], [Description here!])
1517
1518 AM_CONDITIONAL([NEED_ALLOCA_C], [
1519         test "$working_alloca_in_function_calls" = "yes" && \
1520         test "$need_alloca_c" = "yes"])
1521
1522 dnl Check whether strcoll exists and works correctly. (This does more
1523 dnl than just check for its existence.) If so, it defines HAVE_STRCOLL.
1524 AC_FUNC_STRCOLL
1525
1526 dnl If `getpgrp' takes no argument (the POSIX.1 version), define
1527 dnl `GETPGRP_VOID'.  Otherwise, it is the BSD version, which takes a
1528 dnl process ID as an argument.
1529 AC_CHECK_FUNCS(getpgrp)
1530 AC_FUNC_GETPGRP
1531
1532 dnl We used to call AC_FUNC_MMAP here
1533 dnl Instead we now use following, suggested by Neal Becker
1534 AC_MSG_CHECKING(for working mmap)
1535 case "$opsys" in ultrix* ) have_mmap=no ;; *)
1536 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
1537 #include <unistd.h>
1538 #include <fcntl.h>
1539 #include <sys/mman.h>
1540
1541 #ifndef MAP_VARIABLE
1542 #define MAP_VARIABLE 0
1543 #endif
1544
1545 #ifndef MAP_FAILED
1546 #define MAP_FAILED -1
1547 #endif
1548
1549 int main (int argc, char *argv[])
1550 {
1551   int fd = -1;
1552   caddr_t p;
1553 #ifndef MAP_ANONYMOUS
1554   fd = open ("/dev/zero", O_RDWR);
1555   if (fd < 0)
1556     return 1;
1557 #define MAP_ANONYMOUS 0
1558 #endif
1559   if (mmap(0, 1024, PROT_READ | PROT_WRITE,
1560            MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS,
1561            fd, 0) != (void *) MAP_FAILED)
1562     return 0;
1563   perror ("conftest: mmap failed");
1564   return 1;
1565 }]])], have_mmap=yes, have_mmap=no, have_mmap=no) ;;
1566 esac
1567 AC_MSG_RESULT($have_mmap)
1568 test "$have_mmap" = "yes" && AC_DEFINE([HAVE_MMAP], [1], [Description here!])
1569
1570 dnl rel_alloc requires either GNU malloc or system malloc with mmap
1571 dnl We only turn rel_alloc on by default if mmap is available.
1572 test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && with_rel_alloc=no
1573 if test "$with_rel_alloc $have_mmap" = "default yes"; then
1574         if test "$doug_lea_malloc" = "yes"; then
1575                 dnl Check if malloc() calls mmap(), making rel_alloc pointless.
1576                 AC_MSG_CHECKING(for M_MMAP_THRESHOLD)
1577                 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],[[
1578 #ifndef M_MMAP_THRESHOLD
1579 #error No M_MMAP_THRESHOLD :-(
1580 !@+$%^&*_)(_ - unlikely to compile...
1581 #endif
1582                         ]])], [
1583                         with_rel_alloc=no
1584                         AC_MSG_RESULT(yes)], [
1585                         with_rel_alloc=yes
1586                         AC_MSG_RESULT(no)])
1587         else
1588                 with_rel_alloc=yes
1589         fi
1590 fi
1591 if test "$with_rel_alloc" = "yes"; then
1592         AC_DEFINE([REL_ALLOC], [1], [Description here!])
1593         SXE_ADD_MEMALLOC_OBJS(ralloc.o)
1594 fi
1595
1596 dnl Check for tests/rminal I/O variants
1597 dnl TERMIOS systems may have termio.h, but not vice-versa, I think.
1598 AC_CHECK_HEADER(termios.h,
1599   AC_DEFINE([HAVE_TERMIOS], [1], [Description here!])
1600   AC_DEFINE([SIGNALS_VIA_CHARACTERS], [1], [Description here!])
1601   AC_DEFINE([NO_TERMIO], [1], [Description here!]),
1602   [AC_CHECK_HEADER(termio.h, [AC_DEFINE([HAVE_TERMIO], [1], [Description here!])])])
1603
1604
1605 dnl Check for directory variants
1606 AC_CHECK_HEADER(dirent.h, [AC_DEFINE([SYSV_SYSTEM_DIR], [1], [Description here!])],
1607   [AC_CHECK_HEADER(sys/dir.h, , [AC_DEFINE([NONSYSTEM_DIR_LIBRARY], [1], [Description here!])])])
1608
1609 dnl check for readdir64_r (the reentrant version of readdir64)
1610 AC_CHECK_FUNC(readdir64_r, [AC_DEFINE([HAVE_LARGEFILE], [1], [Description here!])])
1611
1612 dnl Check for nlist.h
1613 AC_CHECK_HEADER([nlist.h], [AC_DEFINE([NLIST_STRUCT], [1], [Description here!])], [])
1614
1615 dnl firstly check for pthread support so that we can use the
1616 dnl asynchronous playing routines
1617
1618 dnl special pthread handling
1619 dnl AIX uses pthreads instead of pthread, and HP/UX uses cma
1620 dnl FreeBSD uses -pthread
1621 AC_CHECK_LIB(pthread, pthread_create)
1622 if test "${ac_cv_lib_pthread_pthread_create}" = "yes"; then
1623         have_threads=yes
1624
1625         SXE_CHECK_COMPILER_FLAGS([-pthreads])
1626         SXE_CHECK_COMPILER_FLAGS([-pthread])
1627         if test "${sxe_cv_c_flags__pthreads}" = "yes"; then
1628                 SXE_PREPEND_UNDUP([-pthreads], [c_switch_site])
1629         fi
1630         if test "${sxe_cv_c_flags__pthread}" = "yes"; then
1631                 SXE_PREPEND_UNDUP([-pthread], [c_switch_site])
1632         fi
1633         SXE_PREPEND([-lpthread], [MM_LIBS])
1634 fi
1635
1636 dnl test for AIX pthreads
1637 AC_CHECK_LIB(pthreads, pthread_create)
1638 if test $ac_cv_lib_pthreads_pthread_create = yes; then
1639   have_threads=yes
1640   SXE_PREPEND(-lpthreads, MM_LIBS)
1641 fi
1642
1643 dnl test for HPUX cma threads.
1644 AC_CHECK_LIB(cma, pthread_create)
1645 if test $ac_cv_lib_cma_pthread_create = yes; then
1646   have_threads=yes
1647   SXE_PREPEND(-lcma, MM_LIBS)
1648 fi
1649
1650 dnl FreeBSD -pthread check
1651 AC_DEFUN([AC_PTHREAD_FREEBSD],
1652 [AC_MSG_CHECKING([if we need -pthread for threads])
1653 AC_CACHE_VAL(ac_cv_ldflag_pthread,
1654         [ac_save_ld_switch_site="$ld_switch_site"
1655         ld_switch_site="-pthread $ld_switch_site"
1656         AC_LINK_IFELSE([AC_LANG_PROGRAM([[char pthread_create();]],
1657         [[char pthread_create();]])],
1658         eval "ac_cv_ldflag_pthread=yes",
1659         eval "ac_cv_ldflag_pthread=no"),
1660         ld_switch_site="$ac_save_ld_switch_site"
1661 ])
1662 if eval "test \"`echo $ac_cv_ldflag_pthread`\" = yes"; then
1663         AC_MSG_RESULT(yes)
1664         have_threads=yes
1665         SXE_PREPEND_UNDUP("-pthread", ld_switch_site)
1666         SXE_PREPEND_UNDUP("-D_THREAD_SAFE", c_switch_site)
1667 else
1668         AC_MSG_RESULT(no)
1669 fi])
1670
1671 dnl If all other thread tests fail, try BSD's -pthread
1672 if test "$have_threads" != yes; then
1673   AC_PTHREAD_FREEBSD
1674 fi
1675
1676 if test "$have_threads" = yes; then
1677   AC_DEFINE([HAVE_THREADS], [1], [Description here!])
1678 fi
1679
1680
1681 ## Internal Options
1682 ## ================
1683
1684 echo
1685 echo "Internal Options"
1686 echo "================"
1687
1688 SXE_CHECK_LIBTOOL
1689 SXE_CHECK_LIBLTDL
1690
1691 dnl ----------------------------------------------------------------
1692 dnl Check for POSIX functions.
1693 dnl ----------------------------------------------------------------
1694
1695 SXE_CHECK_BASIC_FUNS
1696 AC_CHECK_FUNCS([alarm cbrt closedir dup2 eaccess endpwent floor fmod fpathconf frexp fsync ftime ftruncate getaddrinfo getcwd gethostbyname gethostname getnameinfo getpagesize getrlimit gettimeofday getwd isascii link logb lrand48 matherr memchr memmove memset mkdir mktime munmap perror poll pow putenv random re_comp readlink regcomp rename res_init rint rmdir select setitimer setlocale setpgid setsid sigblock sighold sigprocmask snprintf socket sqrt stpcpy strcasecmp strchr strdup strerror strlwr strrchr strspn strtol strupr symlink tzset ulimit umask uname usleep utime vlimit vsnprintf waitpid wcscmp wcslen])
1697
1698
1699 ## combines all these time structures and funs
1700 SXE_CHECK_METRONOME
1701 SXE_CHECK_SUFFICIENCY([metronome], [metronome])
1702
1703 ## check for a sane dirname/realpath
1704 SXE_CHECK_DIRNAME
1705 SXE_CHECK_REALPATH
1706
1707 dnl -----------------------------------
1708 dnl Do some misc autoconf-special tests
1709 dnl -----------------------------------
1710
1711 dnl Do the opsystem or machine files prohibit the use of the GNU malloc?
1712 dnl Assume not, until told otherwise.
1713 GNU_MALLOC=yes
1714 if test "$with_dlmalloc" != "no"; then
1715         doug_lea_malloc=yes
1716 else
1717         doug_lea_malloc=no
1718 fi
1719 after_morecore_hook_exists=yes
1720 AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
1721 AC_MSG_CHECKING(whether __after_morecore_hook exists)
1722 AC_LINK_IFELSE([AC_LANG_SOURCE([[extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0]])],
1723   [AC_MSG_RESULT(yes)],
1724   [AC_MSG_RESULT(no)
1725    after_morecore_hook_exists=no])
1726 if test "$system_malloc" = "yes" ; then
1727   GNU_MALLOC=no
1728   GNU_MALLOC_reason="
1729     - The GNU allocators don't work with this system configuration."
1730 elif test "$with_system_malloc" = "yes" ; then
1731   GNU_MALLOC=no
1732   GNU_MALLOC_reason="
1733     - User chose not to use GNU allocators."
1734 elif test "$with_debug_malloc" = "yes" ; then
1735   GNU_MALLOC=no
1736   GNU_MALLOC_reason="
1737     - User chose to use Debugging Malloc."
1738 fi
1739
1740 if test "$doug_lea_malloc" = "yes" -a "$GNU_MALLOC" = "yes" ; then
1741         GNU_MALLOC_reason="
1742     - Using Doug Lea's new malloc from the GNU C Library."
1743         AC_DEFINE([DOUG_LEA_MALLOC], [1], [Description here!])
1744         if test "$after_morecore_hook_exists" = "no" ; then
1745                 GNU_MALLOC_reason="
1746     - Using Doug Lea's new malloc from the Linux C Library."
1747         AC_DEFINE([_NO_MALLOC_WARNING_], [1], [Description here!])
1748         fi
1749 fi
1750 AM_CONDITIONAL([USE_MEMALLOC], [test -n "${libmemalloc_objs}"])
1751
1752 dnl #### mcheck is broken in all versions of Linux libc and glibc.
1753 dnl Try this again when 2.1 hits the streets.
1754 dnl Avoid using free-hook.c if support exists for malloc debugging in libc
1755 have_libmcheck=no
1756 if test "$with_error_checking_malloc" = "yes" -a \
1757    "$have_glibc" = "yes" -a \
1758    "$doug_lea_malloc" = "yes"; then
1759         AC_CHECK_HEADERS(mcheck.h)
1760         AC_CHECK_LIB(mcheck, mcheck, [have_libmcheck=yes], [have_libmcheck=no])
1761 fi
1762
1763 if test "$with_module_support" != "no"; then
1764         AS_MESSAGE([checking for module support])
1765         if test "$sxe_cv_feat_libltdl" = "yes"; then
1766                 have_module_support="yes"
1767                 with_module_support="yes"
1768                 SXE_ADD_CRUFT_OBJS([emodules-ng.o])
1769                 AC_DEFINE([HAVE_EMODULES], [1], [Whether emods would be available])
1770                 AC_DEFINE([WITH_EMODULES], [1], [Whether emods shall be available])
1771         else
1772                 have_module_support="no"
1773                 AC_DEFINE([WITH_EMODULES], [1], [Whether emods shall be available])
1774         fi
1775 fi
1776
1777 AM_CONDITIONAL([DESCEND_MODULES],
1778         [test "$with_module_support $have_module_support" = "yes yes"])
1779 if test "$with_module_support $have_module_support" = "yes"; then
1780         SXE_APPEND([src], [MAKE_SUBDIR])
1781         SXE_APPEND([src], [INSTALL_ARCH_DEP_SUBDIR])
1782         SXE_APPEND([modules], [MAKE_AM_SUBDIR])
1783         SXE_APPEND([modules], [SRC_SUBDIR_DEPS])
1784 dnl else
1785 dnl     MOD_CC="$SXEMACS_CC"
1786 dnl     MODCFLAGS="\$(SXE_CFLAGS) -I../../src -I\$(sxe_srcdir)/../../src"
1787 dnl     INSTALLPATH=""
1788 dnl     MOD_INSTALL_PROGRAM="true"
1789 dnl     OBJECT_TO_BUILD="\$(MODNAME).o"
1790 fi
1791
1792 if test "$with_modules_ase" = "yes"; then
1793         have_modules_ase=yes
1794 fi
1795 if test "$with_static_modules_ase" = "yes"; then
1796         have_static_modules_ase=yes
1797 fi
1798 SXE_EMOD_STATMOD([ase])
1799 if test "$have_modules_ase $have_static_modules_ase" != " "; then
1800         have_ase_cart="yes"
1801         have_ase_dig="yes"
1802         have_ase_intv="yes"
1803         have_ase_metric="yes"
1804         have_ase_nbhood="yes"
1805         have_ase_perm="yes"
1806         have_ase_resclass="yes"
1807 fi
1808 if test "$have_bison" = "yes"; then
1809         if test "$with_modules_cl" = "yes" ; then
1810                 have_modules_cl="yes"
1811         fi
1812         if test "$with_static_modules_cl" = "yes"; then
1813                 have_static_modules_cl="yes"
1814         fi
1815 else
1816         if test "$with_modules_cl" = "yes" -o "$with_static_modules_cl" = "yes"; then
1817                 AC_MSG_WARN([Sorry no bison means no cl module for you.])
1818         fi
1819 fi
1820 SXE_EMOD_STATMOD([cl])
1821
1822 AM_CONDITIONAL([AUTARKIC], [test "0" = "1"])
1823 MODARCHDIR=
1824 MAKE_DOCFILE="$sxe_blddir/lib-src/make-docfile"
1825 ELLMAKEDOC=$MAKE_DOCFILE
1826 ELLCC=$MOD_CC
1827 AC_SUBST(ELLCC)
1828 AC_SUBST(ELLMAKEDOC)
1829 AC_SUBST(with_modules, $with_modules)
1830 AC_SUBST(MOD_CC)
1831 AC_SUBST(MODARCHDIR)
1832 AC_SUBST(MAKE_DOCFILE)
1833 AC_SUBST(MODCFLAGS)
1834 AC_SUBST(INSTALLPATH)
1835 AC_SUBST(MOD_INSTALL_PROGRAM)
1836 AC_SUBST(OBJECT_TO_BUILD)
1837 SXE_SUBST_STATMOD_A
1838
1839 ## FFI support
1840 SXE_CHECK_FFI
1841 SXE_CHECK_SUFFICIENCY([ffi], [FFI support], [
1842         ## additional actions
1843         AC_DEFINE([HAVE_LIBFFI], [1], [Description here!])
1844         HAVE_LIBFFI=yes
1845         FFI_LIBS="-lffi"
1846         SXE_ADD_CRUFT_OBJS([effi.o])
1847 ])
1848
1849 ## ENT support
1850 SXE_CHECK_ENT
1851
1852 ## check for pseudo gaussian numbers
1853 AC_MSG_CHECKING([for pseug (gaussian numbers)])
1854 if test "$sxe_cv_feat_gmp" = "yes"; then
1855         ## the good case
1856         AC_DEFINE([HAVE_PSEUG], [1], [Whether we COULD do gaussian numbers!])
1857         sxe_cv_feat_pseug="yes"
1858 else
1859         sxe_cv_feat_pseug="no"
1860 fi
1861 AC_MSG_RESULT([$sxe_cv_feat_pseug])
1862
1863 ## check for pseudo complex numbers
1864 AC_MSG_CHECKING([for pseuc (pseudo complex numbers)])
1865 if test "$sxe_cv_feat_mpfr" = "yes"; then
1866         ## the good case
1867         AC_DEFINE([HAVE_PSEUC], [1], [Whether we COULD do complex numbers!])
1868         sxe_cv_feat_pseuc="yes"
1869 else
1870         sxe_cv_feat_pseuc="no"
1871 fi
1872 AC_MSG_RESULT([$sxe_cv_feat_pseuc])
1873
1874 ## check for pseudo quaternions
1875 AC_MSG_CHECKING([for quatern (quaternion numbers)])
1876 if test "$sxe_cv_feat_gmp" = "yes"; then
1877         ## the good case
1878         AC_DEFINE([HAVE_QUATERN], [1], [Whether we COULD do quaternions!])
1879         sxe_cv_feat_quatern="yes"
1880 else
1881         sxe_cv_feat_quatern="no"
1882 fi
1883 AC_MSG_RESULT([$sxe_cv_feat_quatern])
1884
1885
1886 ## go through what the PH^Wuser has specified
1887 ## it's a wee bit more complex, so let's go for it
1888 ## we use a dijkstra-if
1889 ent_dijkstra="$with_ent_gmp $sxe_cv_feat_gmp"
1890 if test "$ent_dijkstra" = "yes yes"; then
1891         AC_DEFINE([WITH_GMP], [1], [Whether GMP support was desired!])
1892         SXE_PREPEND([$GMP_LIBS], [ENT_LIBS])
1893         SXE_ADD_ENT_OBJS([ent-gmp.o])
1894         have_ent_gmp="yes"
1895 elif test "$ent_dijkstra" = "yes no"; then
1896         ## pity, we wanted GMP but we dont have it
1897         AC_DEFINE([WITH_GMP], [1], [Whether GMP support was desired!])
1898         have_ent_gmp="no"
1899 elif test "$ent_dijkstra" = "no yes"; then
1900         ## we didn't want GMP but we have it
1901         ## do nothing in that case
1902         have_ent_gmp="no"
1903 elif test "$ent_dijkstra" = "no no"; then
1904         ## great, we didnt opt for GMP and we're lucky, it's not there either
1905         have_ent_gmp="no"
1906 fi
1907
1908 ## evaluate mpfr results
1909 ent_dijkstra="$with_ent_mpfr $sxe_cv_feat_mpfr"
1910 if test "$ent_dijkstra" = "yes yes"; then
1911         ## the good case
1912         AC_DEFINE([WITH_MPFR], [1], [Description here!])
1913         SXE_PREPEND([$MPFR_LIBS], [ENT_LIBS])
1914         SXE_ADD_ENT_OBJS([ent-mpfr.o])
1915         have_ent_mpfr="yes"
1916 elif test "$ent_dijkstra" = "yes no"; then
1917         ## we want but can't have
1918         AC_DEFINE([WITH_MPFR], [1], [Description here!])
1919         have_ent_mpfr="no"
1920 elif test "$ent_dijkstra" = "no yes"; then
1921         have_ent_mpfr="no"
1922 elif test "$ent_dijkstra" = "no no"; then
1923         have_ent_mpfr="no"
1924 fi
1925
1926
1927 ## whether to enable gaussian numbers
1928 ent_dijkstra="$with_ent_pseug $sxe_cv_feat_pseug"
1929 if test "$ent_dijkstra" = "yes yes"; then
1930         ## perfick
1931         AC_DEFINE([WITH_PSEUG], [1], [Description here!])
1932         SXE_PREPEND([$GMP_LIBS], [ENT_LIBS])
1933         SXE_ADD_ENT_OBJS([ent-gaussian.o])
1934         have_ent_pseug="yes"
1935 elif test "$ent_dijkstra" = "yes no"; then
1936         ## grrrr
1937         AC_DEFINE([WITH_PSEUG], [1], [Description here!])
1938         have_ent_pseug="no"
1939 elif test "$ent_dijkstra" = "no yes"; then
1940         have_ent_pseug="no"
1941 elif test "$ent_dijkstra" = "no no"; then
1942         have_ent_pseug="no"
1943 fi
1944
1945 ## whether to enable emulated complex numbers
1946 ent_dijkstra="$with_ent_pseuc $sxe_cv_feat_pseuc $with_ent_mpc $sxe_cv_feat_mpc"
1947 if test "$ent_dijkstra" = "yes yes yes yes"; then
1948         ## skip pseuc usage
1949         have_ent_pseuc="veto"
1950         AC_DEFINE([WITH_PSEUC], [1], [Description here!])
1951         AS_MESSAGE([ENT: Built-in support for complex numbers available, dnl
1952 but omitted in favour of MPC.])
1953         omit_ent_pseuc_in_favour_of="mpc"
1954         ## set up to use plain mpc
1955         AC_DEFINE([WITH_MPC], [1], [Description here!])
1956         SXE_PREPEND([$MPC_LIBS], [ENT_LIBS])
1957         SXE_ADD_ENT_OBJS([ent-mpc.o])
1958         have_ent_mpc="yes"
1959 elif test "$ent_dijkstra" = "yes yes yes no"; then
1960         ## user planned to use mpc, hasnt got it though
1961         ## now he's cursed with pseudo complex numbers :)
1962         AC_DEFINE([WITH_PSEUC], [1], [Description here!])
1963         have_ent_pseuc="yes"
1964         SXE_PREPEND([$MPFR_LIBS], [ENT_LIBS])
1965         SXE_ADD_ENT_OBJS([ent-pseumpc.o])
1966         ## we want mpc but can't have, set up that
1967         AC_DEFINE([WITH_MPC], [1], [Description here!])
1968         have_ent_mpc="no"
1969 elif test "$ent_dijkstra" = "yes yes no yes"; then
1970         ## user coulda used mpc but disabled it for whatever reasons ... Wait!
1971         ## Horst, is that you?!
1972         AC_DEFINE([WITH_PSEUC], [1], [Description here!])
1973         AS_MESSAGE([ENT: dnl
1974 MPC support for complex numbers IS possible, however YOU think you want dnl
1975 the built-in emulated stuff?  Seriously?  Good, so be it!])
1976         SXE_PREPEND([$MPFR_LIBS], [ENT_LIBS])
1977         SXE_ADD_ENT_OBJS([ent-pseumpc.o])
1978         have_ent_pseuc="yes"
1979         omit_ent_mpc_in_favour_of="pseuc"
1980         ## however brag that we have mpc
1981         have_ent_mpc="yes"
1982 elif test "$ent_dijkstra" = "yes yes no no"; then
1983         AC_DEFINE([WITH_PSEUC], [1], [Description here!])
1984         have_ent_pseuc="yes"
1985         SXE_PREPEND([$MPFR_LIBS], [ENT_LIBS])
1986         SXE_ADD_ENT_OBJS([ent-pseumpc.o])
1987         have_ent_mpc="no"
1988 elif test "$with_ent_pseuc $sxe_cv_feat_pseuc" = "yes no"; then
1989         AC_DEFINE([WITH_PSEUC], [1], [Description here!])
1990         have_ent_pseuc="no"
1991 elif test "$with_ent_pseuc $sxe_cv_feat_pseuc" = "no yes"; then
1992         have_ent_pseuc="no"
1993 elif test "$with_ent_pseuc $sxe_cv_feat_pseuc" = "no no"; then
1994         have_ent_pseuc="no"
1995 fi
1996
1997 ## whether to enable gaussian numbers
1998 ent_dijkstra="$with_ent_quatern $sxe_cv_feat_quatern"
1999 if test "$ent_dijkstra" = "yes yes"; then
2000         ## perfick
2001         AC_DEFINE([WITH_QUATERN], [1], [Description here!])
2002         SXE_PREPEND([$GMP_LIBS], [ENT_LIBS])
2003         SXE_ADD_ENT_OBJS([ent-quatern.o])
2004         have_ent_quatern="yes"
2005 elif test "$ent_dijkstra" = "yes no"; then
2006         ## grrrr
2007         AC_DEFINE([WITH_QUATERN], [1], [Description here!])
2008         have_ent_quatern="no"
2009 elif test "$ent_dijkstra" = "no yes"; then
2010         have_ent_quatern="no"
2011 elif test "$ent_dijkstra" = "no no"; then
2012         have_ent_quatern="no"
2013 fi
2014
2015 ## elliptic curve support
2016 ent_dijkstra="$with_ent_ecm $sxe_cv_feat_ecm"
2017 if test "$ent_dijkstra" = "yes yes"; then
2018         ## perfick case
2019         AC_DEFINE([WITH_ECM], [1], [Description here!])
2020         SXE_PREPEND([$ECM_LIBS], [ENT_LIBS])
2021         SXE_ADD_ENT_OBJS([ent-ecm.o])
2022         have_ent_ecm="yes"
2023 elif test "$ent_dijkstra" = "no yes"; then
2024         have_ent_ecm="no"
2025 elif test "$ent_dijkstra" = "yes no"; then
2026         AC_DEFINE([WITH_ECM], [1], [Description here!])
2027         have_ent_ecm="no"
2028 elif test "$ent_dijkstra" = "no no"; then
2029         have_ent_ecm="no"
2030 fi
2031
2032
2033 ## Floating operation support is now unconditional
2034 SXE_CHECK_MATHS_VALUES
2035 if test "$ac_cv_sizeof_long_double" != 0; then
2036         ##AC_DEFINE_UNQUOTED([fpfloat], [long double], [Description here!])
2037         ##AC_DEFINE([fpfloat_long_double_p], [1], [Description here!])
2038         fpfloat="long double"
2039         fpfloat_long_double_p=1
2040         have_fpfloat=yes
2041 elif test "$ac_cv_sizeof_double" != 0; then
2042         ##AC_DEFINE_UNQUOTED([fpfloat], [double], [Description here!])
2043         ##AC_DEFINE([fpfloat_double_p], [1], [Description here!])
2044         fpfloat="double"
2045         fpfloat_double_p=1
2046         have_fpfloat=yes
2047 else
2048         AS_MESSAGE([Uh oh, no float type is bad news.])
2049         have_fpfloat=no
2050 fi
2051
2052 AC_MSG_CHECKING([if need to add -lm])
2053 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2054 #include <math.h>
2055 ]],[[
2056 return sin(0.0);
2057 ]])], [AC_MSG_RESULT([no])], [
2058         AC_MSG_RESULT([maybe])
2059         save_LIBS=$LIBS
2060         SXE_APPEND([-lm], [LIBS])
2061         AC_MSG_CHECKING([if can add -lm])
2062         AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2063 #include <math.h>
2064 ]],[[
2065 return sin(0.0);
2066 ]])], [AC_MSG_RESULT([yes])], [
2067         AC_MSG_RESULT([no])
2068         AC_MSG_WARN([No way to use math functions found. Reverting option append.])
2069         LIBS=$save_LIBS])])
2070
2071
2072
2073 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2074 #include <math.h>
2075 ]],[[
2076 return atanh(1.0) + asinh(1.0) + acosh(1.0);
2077 ]])], [AC_DEFINE([HAVE_INVERSE_HYPERBOLIC], [1], [Description here!])])
2078
2079 if test "$have_fpfloat" = "yes"; then
2080         AC_DEFINE([HAVE_FPFLOAT], [1], [Description here!])
2081
2082         SXE_CHECK_CLEAN_FLOATOPS(
2083                 [have_clean_floatops="yes"], [have_clean_floatops="no"])
2084
2085         ## it would seem odd to define the destiny of our float arithmetic here
2086         if test "$have_clean_floatops" = "yes"; then
2087                 AC_DEFINE_UNQUOTED([fpfloat], [$fpfloat], [Description here!])
2088                 AC_DEFINE_UNQUOTED([fpfloat_long_double_p],
2089                         [${fpfloat_long_double_p:-0}], [Description here!])
2090                 AC_DEFINE_UNQUOTED([fpfloat_double_p],
2091                         [${fpfloat_double_p:-0}], [Description here!])
2092         else
2093                 AS_MESSAGE([downgrading to `double' floats])
2094                 AC_DEFINE_UNQUOTED([fpfloat], [double], [Description here!])
2095                 AC_DEFINE_UNQUOTED([fpfloat_long_double_p],
2096                         [0], [Description here!])
2097                 AC_DEFINE([fpfloat_double_p],
2098                         [1], [Description here!])
2099         fi
2100 fi
2101
2102 ## trivial checks, you cannot (yet) turn off internal arithmetic entirely
2103 ## so we always `have' it
2104 dnl with_ent_int=yes
2105 have_ent_int=yes
2106 dnl with_ent_indef=yes
2107 have_ent_indef=yes
2108 dnl with_ent_fpfloat=yes
2109 have_ent_fpfloat=yes
2110 dnl we attempt to always use ent.o
2111 AC_DEFINE([WITH_NUMBER_TYPES], [1], [Description here!])
2112 SXE_SUBST_ENT_OBJS
2113
2114 dnl experimental code support
2115 if test "$with_compre" != "no"; then
2116         AC_MSG_CHECKING([if compre prerequisites are met])
2117         AC_MSG_RESULT([yes])
2118         AC_DEFINE([EF_USE_COMPRE], [1],
2119                 [Whether to provide compiled regular expression!])
2120         have_compre=yes
2121 fi
2122 if test "$with_experimental_features_pom" = "yes"; then
2123         AC_MSG_CHECKING([if pom prerequisites are met])
2124         if test "$have_threads" = "yes"; then
2125                 AC_MSG_RESULT([yes])
2126                 AC_DEFINE([EF_USE_POM], [1],
2127                         [Whether to protect all lisp objects with mutexes!])
2128                 have_experimental_features_pom=yes
2129         else
2130                 AC_MSG_RESULT([no])
2131         fi
2132 fi
2133 if test "$with_experimental_features_asyneq" = "yes"; then
2134         AC_MSG_CHECKING([if asyneq prerequisites are met])
2135         if test "$have_threads" = "yes"; then
2136                 AC_MSG_RESULT([yes])
2137                 AC_DEFINE([EF_USE_ASYNEQ], [1],
2138                         [Whether to setup asynchronous event queues!])
2139                 have_experimental_features_asyneq=yes
2140                 SXE_ADD_EVENTS_OBJS([event-queue.o workers.o worker-asyneq.o])
2141         else
2142                 AC_MSG_RESULT([no])
2143         fi
2144 fi
2145 SXE_SUBST_EVENTS_OBJS
2146
2147 SXE_CHECK_EVENTS
2148 SXE_CHECK_SUFFICIENCY([events], [event system])
2149
2150 ## check asm helpers
2151 SXE_CHECK_ASM_HELPERS
2152
2153 ## compression titbits
2154 SXE_CHECK_ZLIB
2155 SXE_CHECK_BZLIB
2156 SXE_CHECK_LZMA
2157
2158
2159 ## Cryptography Options
2160 ## ====================
2161 echo
2162 echo "Cryptography Options"
2163 echo "===================="
2164
2165 ## in case someone else (ldap, pgsql, etc.) needs it
2166 SXE_CHECK_OPENSSL
2167 SXE_CHECK_SUFFICIENCY([openssl], [OpenSSL support])
2168
2169 dnl OpenSSL
2170 if test "$with_openssl" != "no" -a "$have_openssl" = "yes"; then
2171         SXE_ADD_CRUFT_OBJS([openssl.o])
2172 elif test "$with_openssl" != "no"; then
2173         AC_MSG_WARN([Required OpenSSL support cannot be provided.])
2174         AC_MSG_WARN([Check --with-site-prefixes.])
2175 fi
2176 if test "$have_openssl" = "no" -o "$with_openssl" = "no"; then
2177         OPENSSL_CPPFLAGS=""
2178         OPENSSL_LDFLAGS=""
2179         OPENSSL_LIBS=""
2180 fi
2181 AC_SUBST([OPENSSL_CPPFLAGS])
2182 AC_SUBST([OPENSSL_LDFLAGS])
2183 AC_SUBST([OPENSSL_LIBS])
2184
2185 SXE_CHECK_KERBEROS
2186 SXE_CHECK_KERBEROS5
2187 if test "$with_kerberos" = "yes"; then
2188         AC_DEFINE([WITH_KERBEROS], [1], [Whether kerberos support was requested])
2189         if test "$sxe_cv_feat_kerberos" = "yes"; then
2190                 SXE_PREPEND([$KERBEROS_LIBS], [ld_libs_general])
2191         fi
2192 fi
2193
2194
2195 ## Networking Options
2196 ## ==================
2197 echo
2198 echo "Networking Options"
2199 echo "=================="
2200
2201 SXE_CHECK_SOCKETS
2202 SXE_CHECK_SUFFICIENCY([unix], [unix domain sockets])
2203 SXE_CHECK_SUFFICIENCY([sysvipc], [SysV IPC message])
2204 SXE_CHECK_SUFFICIENCY([sockets], [tcp/udp sockets])
2205 SXE_CHECK_SUFFICIENCY([tcpudp], [tcp/udp sockets])
2206 SXE_CHECK_SUFFICIENCY([multicast], [multicast])
2207
2208 dnl Decnet
2209 if test "$with_dnet" = "yes"; then
2210   AC_CHECK_LIB(dnet, main,
2211     [AC_DEFINE([HAVE_LIBDNET], [1], [Description here!])],
2212     [SXE_DIE("DECnet requested but can't find libdnet")])
2213 fi
2214
2215 dnl Socks support
2216 if test "$with_socks" = "yes"; then
2217   AC_CHECK_LIB(socks, SOCKSinit)
2218   test -n "$ac_cv_lib_socks_SOCKSinit" && AC_DEFINE([HAVE_SOCKS], [1], [Description here!])
2219 fi
2220
2221
2222 ## Window System Features
2223 ## ======================
2224 echo
2225 echo "Window System Features"
2226 echo "======================"
2227
2228 dnl ----------------------
2229 dnl Choose a window system
2230 dnl ----------------------
2231
2232 AS_MESSAGE([checking for specified window system])
2233
2234 if test "$with_x" != "no"; then
2235         if test "$with_x11" != "no"; then
2236                 dnl User-specified --x-includes or --x-libraries implies --with-x11.
2237                 test "$x_includes $x_libraries" != "NONE NONE" && \
2238                         window_system=x11
2239                         with_x11=yes
2240         fi
2241
2242         dnl Autodetection of X11 libraries and includes
2243         dnl -------------------------------------------
2244         dnl AC_PATH_XTRA thinks it can find our X headers and includes, but
2245         dnl it often gets it wrong, so we only use it as a last resort.
2246
2247         dnl $OPENWINHOME implies --x-includes and --x-libraries
2248         dnl Not (yet) handled by autoconf2
2249         if test "$x_includes $x_libraries" = "NONE NONE" \
2250                 -a -n "$OPENWINHOME" \
2251                 -a "$OPENWINHOME" != "/usr/openwin" \
2252                 -a -d "$OPENWINHOME"; then
2253                 test -d "$OPENWINHOME/lib"           && \
2254                         x_libraries="$OPENWINHOME/lib"
2255                 test -d "$OPENWINHOME/include"       && \
2256                         x_includes="$OPENWINHOME/include"
2257                 test -d "$OPENWINHOME/share/include" && \
2258                         x_includes="$OPENWINHOME/share/include"
2259         fi
2260
2261         if test -z "$x_includes" -o \
2262            "$x_includes" = "NONE" -o \
2263            ! -d "$x_includes"; then
2264                 dnl AC_PATH_XTRA often guesses /usr/include, when some other
2265                 dnl include directory is a MUCH better guess (Linux, HP-UX 10.20).
2266                 dnl This is a workaround for idiot (esp. HP) system vendors, who
2267                 dnl provide a /usr/include/X11, but DON'T FULLY POPULATE IT.
2268                 for dir in "/usr/X11" "/usr/X11R7" "/usr/X11R6" \
2269                         "/usr/local" "/usr"; do
2270                         if test -d "$dir/include/X11"; then
2271                                 x_includes="$dir/include"
2272                                 break
2273                         fi
2274                 done
2275         fi
2276
2277         if test -z "$x_libraries" -o \
2278            "$x_libraries" = "NONE" -o \
2279            ! -d "$x_libraries"; then
2280                 for dir in \
2281                         "/usr/X11/lib" \
2282                         "/usr/X11R7/lib" "/usr/lib/X11R7" \
2283                         "/usr/X11R6/lib" "/usr/lib/X11R6" \
2284                         "/usr/local/lib" "/usr/local/lib/X11" \
2285                         "/usr/lib" "/usr/lib/X11"; do
2286                         if test -r "$dir/libX11.a"; then
2287                                 x_libraries="$dir"
2288                                 break
2289                         fi
2290                 done
2291         fi
2292
2293         AC_PATH_XTRA
2294         if test "$with_x11" != "no"; then
2295                 if test "$no_x" = "yes"; then
2296                         with_x11=no
2297                         window_system=none
2298                         HAVE_X_WINDOWS=no
2299                 else
2300                         with_x11=yes
2301                         window_system=x11
2302                         HAVE_X_WINDOWS=yes
2303                 fi
2304         fi
2305 fi
2306
2307 dnl #### wmperry:: !x11 != NONE
2308 dnl case "$with_x11" in
2309 dnl  yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
2310 dnl  no  ) window_system=none HAVE_X_WINDOWS=no  ;;
2311 dnl esac
2312
2313 AM_CONDITIONAL([DESCEND_LWLIB], [test "$with_x11" = "yes"])
2314 if test "$with_x11" = "yes"; then
2315         AC_DEFINE([HAVE_X_WINDOWS], [1], [Description here!])
2316         AC_DEFINE([NeedFunctionPrototypes], [1], [Description here!])
2317         AC_DEFINE([FUNCPROTO], [15], [Whatever this is.])
2318         AC_DEFINE([HAVE_UNIXOID_EVENT_LOOP], [1], [Description here!])
2319         SXE_APPEND([lwlib], [MAKE_SUBDIR])
2320         SXE_APPEND([lwlib], [SRC_SUBDIR_DEPS])
2321
2322         SXE_ADD_SXEUIX11_OBJS([console-x.o device-x.o event-Xt.o frame-x.o])
2323         SXE_ADD_SXEUIX11_OBJS([glyphs-x.o objects-x.o redisplay-x.o select-x.o])
2324         SXE_ADD_SXEUIX11_OBJS([xgccache.o])
2325
2326         SXE_DUMP_LIBS
2327         ## some debian systems are trying to fool us ... now fool them back!
2328         if test -d "$x_includes"; then
2329                 CPPFLAGS="$CPPFLAGS -I$x_includes"
2330         fi
2331         if test -d "$x_libraries"; then
2332                 LDFLAGS="$LDFLAGS -L$x_libraries"
2333         fi
2334
2335         dnl Look for Motif, but only if not found in $x_includes and $x_libraries
2336         AC_CHECK_HEADERS([Xm/Xm.h])
2337         if test "$ac_cv_header_Xm_Xm_h" = "yes"; then
2338                 AC_CHECK_LIB([Xm], [XmStringFree], [got_motif=yes])
2339         fi
2340
2341         if test "$got_motif" != "yes"; then
2342                 dnl Try to find Motif dirs
2343                 dnl These take precedence over other X libs/includes, so PRE-pend
2344                 for lib_dir in \
2345                         "/usr/dt/lib" "/usr/lib/Motif2.1" \
2346                         "/usr/lib/Motif1.2" "/usr/lib/Motif1.1"; do
2347                         inc_dir=`echo $lib_dir | sed -e 's/lib/include/'`
2348                         if test -d "$lib_dir" -a -d "$inc_dir"; then
2349                                 case "$x_libraries" in
2350                                 *"$lib_dir"* )
2351                                         ;;
2352                                 *)
2353                                         x_libraries="$lib_dir $x_libraries"
2354                                         SXE_PREPEND(["-L${lib_dir}"], [X_LIBS])
2355                                         ;;
2356                                 esac
2357                                 case "$x_includes" in
2358                                 "$inc_dir"* )
2359                                         ;;
2360                                 *)
2361                                         x_includes="$inc_dir $x_includes"
2362                                         SXE_PREPEND_UNDUP(["-I${inc_dir}"], [X_CFLAGS])
2363                                         ;;
2364                                 esac
2365                                 break; dnl only need ONE Motif implementation!
2366                         fi
2367                 done
2368         fi
2369
2370         dnl Contrib X libs/includes do NOT take precedence, so AP-pend
2371         for rel in "X11R7" "X11R6" "X11R5" "X11R4"; do
2372                 lib_dir="/usr/contrib/$rel/lib" inc_dir="/usr/contrib/$rel/include"
2373                 if test -d "$lib_dir" -a -d "$inc_dir"; then
2374                         case "$x_libraries" in
2375                         *"$lib_dir"* )
2376                                 ;;
2377                         *)
2378                                 x_libraries="$x_libraries $lib_dir"
2379                                 SXE_APPEND(["-L${lib_dir}"], [X_LIBS])
2380                                 ;;
2381                         esac
2382                         case "$x_includes" in
2383                         "$inc_dir"* )
2384                                 ;;
2385                         *)
2386                                 x_includes="$x_includes $inc_dir"
2387                                 SXE_APPEND_UNDUP(["-I${inc_dir}"], [X_CFLAGS])
2388                                 ;;
2389                         esac
2390                         break; dnl Only need ONE X11 implementation !
2391                 fi
2392         done
2393
2394         dnl Avoid version mismatch for shared library libXm.so on osf4
2395         case "$opsys" in
2396         decosf*)
2397                 if test "$GCC" = yes -a -d "/usr/shlib"; then
2398                         SXE_APPEND([-L/usr/shlib], [X_LIBS]);
2399                 fi
2400                 ;;
2401         esac
2402
2403         LDFLAGS="$LDFLAGS $X_LIBS"
2404
2405         if test "$extra_verbose" = "yes"; then
2406                 echo
2407                 echo "X11 compilation variables:"
2408                 SXE_PRINT_VAR(x_libraries x_includes
2409                         X_CFLAGS X_LIBS X_PRE_LIBS X_EXTRA_LIBS)
2410                 echo
2411         fi
2412
2413         dnl Set up bitmaps search path.
2414         dnl The original suggestion was to unconditionally to append X11/bitmaps
2415         dnl to each element of $x_includes, I'm pretty sure this is the wrong
2416         dnl thing to do.  We test for bitmaps and X11/bitmaps directories on each
2417         dnl element and add them to BITMAPDIR if they exist.
2418         bitmapdirs=
2419         if test "$x_includes" != NONE; then
2420                 for i in $x_includes; do
2421                         if test -d "$i/bitmaps"; then
2422                                 bitmapdirs="$i/bitmaps:$bitmapdirs"
2423                         fi
2424                         if test -d "$i/X11/bitmaps"; then
2425                                 bitmapdirs="$i/X11/bitmaps:$bitmapdirs"
2426                         fi
2427                 done
2428                 bitmapdirs=`echo "$bitmapdirs" | sed s/.$//`
2429         fi
2430         if test ! -z "$bitmapdirs"; then
2431                 AC_DEFINE_UNQUOTED([BITMAPDIR], ["$bitmapdirs"], [Description here!])
2432         fi
2433
2434 dnl   dnl Autodetect defines extracted from X config by xmkmf, e.g. NARROWPROTO
2435 dnl   AS_MESSAGE(checking for X defines extracted by xmkmf)
2436 dnl   rm -fr conftestdir
2437 dnl   if mkdir conftestdir; then
2438 dnl     cd conftestdir
2439 dnl     cat > Imakefile <<'EOF'
2440 dnl xetest:
2441 dnl     @echo ${PROTO_DEFINES} ${STD_DEFINES}
2442 dnl EOF
2443 dnl     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2444 dnl       # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2445 dnl       xmkmf_defines=`${MAKE-make} xetest 2>/dev/null | grep -v make`
2446 dnl     fi
2447 dnl     cd ..
2448 dnl     rm -fr conftestdir
2449 dnl     for word in $xmkmf_defines; do
2450 dnl       case "$word" in
2451 dnl       -D__STDC__*) ;;
2452 dnl       -D* )
2453 dnl     sym=`echo '' $word | sed -e 's:^ *-D::' -e 's:=.*::'`
2454 dnl     case "$word" in
2455 dnl       -D*=* ) val=`echo '' $word | sed -e 's:^.*=::'` ;;
2456 dnl       *     ) val=1 ;;
2457 dnl     esac
2458 dnl dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above.
2459 dnl     if grep "^#define $sym " confdefs.h >/dev/null; then :; else
2460 dnl       if test "$val" = "1"
2461 dnl         then AC_DEFINE_UNQUOTED([$sym], [], [Description here!])
2462 dnl         else AC_DEFINE_UNQUOTED([$sym], [$val], [Description here!])
2463 dnl       fi
2464 dnl     fi  ;;
2465 dnl       esac
2466 dnl     done
2467 dnl   fi
2468
2469         dnl make sure we can find Intrinsic.h
2470         AC_CHECK_HEADER([X11/Intrinsic.h], [],
2471                 [AC_MSG_ERROR([Unable to find X11 header files. Try using --x-includes=<path> if you know the path, or --with-x=no to disable X11 support.])])
2472
2473         dnl Check some more headers
2474         AC_CHECK_HEADERS([X11/Intrinsic.h X11/StringDefs.h X11/Shell.h X11/ShellP.h],
2475                 [],[],
2476                 [[#if HAVE_X11_INTRINSIC_H
2477                   # include <X11/Intrinsic.h>
2478                   # include <X11/IntrinsicP.h>
2479                   # include <X11/CoreP.h>
2480                   #endif]])
2481
2482         dnl -lXt and -lX11 are required
2483         dnl Some broken systems require the magic "-b i486-linuxaout" flag
2484
2485         dnl Other broken systems will not pass these tests unless the pre and
2486         dnl extra libs are passed on...
2487         LIBS="$LIBS $X_PRE_LIBS $X_EXTRA_LIBS"
2488         AC_CHECK_LIB(X11, XOpenDisplay, have_lib_x11=yes)
2489         if test "$have_lib_x11" != "yes"; then
2490                 AC_CHECK_LIB([X11], [XGetFontProperty],
2491                         [],
2492                         [AC_MSG_ERROR([Unable to find X11 libraries. Try using --x-libraries=<path> if you know the path, or --with-x=no to disable X11 support.])])
2493         fi
2494         SXE_PREPEND([-lX11], [libs_x])
2495         LIBS="$LIBS -lX11"
2496         if test "$extra_verbose" = "yes"; then
2497                 echo "    Setting libs_x to \"-lX11\""
2498         fi
2499         dnl Autodetect -lXext
2500         AC_CHECK_LIB([Xext], [XShapeSelectInput], [SXE_PREPEND([-lXext], [libs_x])])
2501
2502         dnl Require -lXt
2503         AC_CHECK_LIB([Xt], [XtOpenDisplay], [SXE_PREPEND([-lXt], [libs_x])], [
2504                 AC_MSG_ERROR([Unable to find X11 libraries. Try using --x-libraries=<path> if you know the path, or --with-x=no to disable X11 support.])])
2505
2506         AC_MSG_CHECKING([the version of X11 being used])
2507         AC_RUN_IFELSE([AC_LANG_SOURCE([[
2508 #include <X11/Intrinsic.h>
2509 int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }]])],
2510                 [./conftest foobar; x11_release=$?],[x11_release=4],[x11_release=4])
2511         AC_MSG_RESULT(R${x11_release})
2512         AC_DEFINE_UNQUOTED([X11_RELEASE], [${x11_release}], [Description here!])
2513
2514         AC_CHECK_FUNCS([XConvertCase])
2515         AC_CHECK_LIB([Xt], [XtRegisterDrawable])
2516         if test "$ac_cv_lib_Xt_XtRegisterDrawable" = "yes"; then
2517                 AC_DEFINE([HAVE_XTREGISTERDRAWABLE], [1], [Description])
2518         fi
2519
2520         AC_CHECK_HEADERS(X11/Xlocale.h)
2521
2522         dnl XFree86 has a non-standard prototype for this X11R6 function
2523         AC_CHECK_FUNCS(XRegisterIMInstantiateCallback)
2524         AC_MSG_CHECKING(for standard XRegisterIMInstantiateCallback prototype)
2525         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
2526 #ifndef NeedFunctionPrototypes
2527 #define NeedFunctionPrototypes 1
2528 #endif
2529 #include <X11/Xlib.h>
2530 extern Bool XRegisterIMInstantiateCallback(
2531         Display*, struct _XrmHashBucketRec*, char*, char*, XIMProc, XPointer*);
2532 ]])],
2533         [AC_MSG_RESULT(yes)],
2534         [AC_MSG_RESULT(no)
2535                 AC_DEFINE([XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE],
2536                         [], [Description here!])])
2537
2538         dnl autodetect -lXmu
2539         AC_CHECK_LIB([Xmu], [XmuReadBitmapDataFromFile],
2540                 [with_xmu=yes], [with_xmu=no])
2541         if test "$with_xmu" = "no"; then
2542                 SXE_ADD_SXEUIX11_OBJS([xmu.o])
2543         else
2544                 SXE_PREPEND([-lXmu], [libs_x])
2545                 AC_DEFINE([HAVE_XMU], [1], [Description here!])
2546         fi
2547
2548         dnl Autodetect -lXbsd
2549         dnl #### Someone, please add a better function than main
2550         AC_CHECK_LIB([Xbsd], [main], SXE_PREPEND([-lXbsd], [libs_x]))
2551
2552         dnl restore old values
2553         SXE_RESTORE_LIBS
2554 fi dnl $with_x11 = yes
2555
2556 AC_SUBST([install_pp])
2557
2558 dnl test "$with_dragndrop" != "no" && with_dragndrop="$with_dragndrop_default"
2559 dnl test -z "$window_system" && window_system="none"
2560 with_dragndrop="no"
2561
2562 dnl Test for features that require a window system - ANY window system
2563 if test "$window_system" = "none"; then
2564   for feature in menubars scrollbars toolbars dialogs dragndrop xface
2565   do
2566     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2567        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
2568     fi
2569     eval "with_${feature}=no"
2570   done
2571 else
2572   test -z "with_toolbars" && with_toolbars=yes
2573 fi
2574
2575 dnl Test for features that require X11 support
2576 if test "$with_x11" != "yes"; then
2577   for feature in offix wmcommand xim xmu nas_sound
2578   do
2579     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2580        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
2581     fi
2582     eval "with_${feature}=no"
2583   done
2584 fi
2585
2586 dnl Balloon Help requires the Shape extension, not available everywhere,
2587 dnl for example not on AIX 4.3.
2588 if test "$with_x11" = "yes"; then
2589   AC_CHECK_HEADER(X11/extensions/shape.h, [
2590    AC_DEFINE([HAVE_BALLOON_HELP], [1], [Description here!])
2591    SXE_ADD_SXEUIX11_OBJS(balloon_help.o balloon-x.o)
2592    ])
2593 fi
2594
2595 dnl FSF 19.29 has some bitmapdir stuff here.
2596 bitmapdir=
2597
2598 case "$window_system" in
2599   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
2600   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
2601 esac
2602
2603 if test -n "$window_system" -a "$window_system" != "none"; then
2604         AC_DEFINE_UNQUOTED([HAVE_WINDOW_SYSTEM], [1], [Description here!])
2605 else
2606     dnl It ought to be reasonable to have no output device at all, and only use
2607     dnl SXEmacs in --batch mode.
2608     if test "$with_tty" = "no" ; then
2609        AC_MSG_WARN([No window system support and no TTY support - You will only be able to use --batch mode.])
2610     fi
2611 fi
2612
2613 case "$x_libraries" in *X11R4* )
2614   test "$opsys" = "hpux9"     && opsysfile="s/hpux9-x11r4.h"
2615   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
2616 esac
2617
2618 dnl Enable or disable proper handling of WM_COMMAND
2619 AS_MESSAGE(checking for WM_COMMAND option);
2620 dnl if test "$with_wmcommand" = "yes"; then
2621 if test "$with_wmcommand" != "no"; then
2622   AC_DEFINE([HAVE_WMCOMMAND], [1], [Description here!])
2623 fi
2624
2625 dnl Autodetect Xauth
2626 dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
2627 test "$with_xauth" != "no" && test "$window_system" = "none" && with_xauth=no
2628 SXE_DUMP_LIBS
2629 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2630 LDFLAGS="$LDFLAGS $X_LIBS"
2631 AC_CHECK_HEADER([X11/Xauth.h], [:], [with_xauth=no])
2632 AC_CHECK_LIB([Xau], [XauGetAuthByAddr], [:], [with_xauth=no])
2633 if test "$with_xauth" = "yes"; then
2634   AC_DEFINE([HAVE_XAUTH], [1], [Description here!])
2635   SXE_CONSECUTIVE_UNDUP([libs_xauth], [$X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS])
2636 fi
2637 SXE_RESTORE_LIBS
2638 AC_SUBST(libs_xauth)
2639
2640 dnl ----------------------
2641 dnl X-Specific Graphics libraries
2642 dnl ----------------------
2643
2644 ## Oki, now that we really need a more exhaustive way to autodetect
2645 ## athena and other widgets we construct a chain.  The elements of
2646 ## that chain are simple atomic tests (provided by AC_DEFUNs).
2647 ## The chain is defined to be:
2648 ##
2649 ## neXtaw -> Xaw3d -> XawXpm -> Xaw95  ->  Xaw  ->  Motif  ->  Nirvana
2650 ## ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^^^
2651 ##         3d sets                       non-3d   non-athena
2652 ##
2653 ## Now if the user passes a --with-athena=foo option, we jump
2654 ## directly to the according test-suite and in case this fails we jump
2655 ## off the cliff.
2656 ##
2657 ## Attention:
2658 ## We shall perform every test-suite twice, once the correct way, and
2659 ## once with #include'ing the Xfuncproto header.
2660 ## Thanks to the many, many distributions which treat their users
2661 ## like braindead zombies!
2662 ## Especially, I would like to thank Fedora/RedHat for bringing
2663 ## this up. Go on guys, you rock!
2664
2665 ## and now the test chain
2666 if test "$with_x11" = "yes" -a "$with_x" != "no"; then
2667         SXE_CHECK_XTOOLKITS
2668         SXE_CHECK_XT_DEPENDENCIES
2669 else
2670         with_menubars=no
2671         with_scrollbars=no
2672         with_dialogs=no
2673         with_toolbars=no
2674         with_widgets=no
2675 fi
2676
2677 dnl Always compile OffiX unless --without-offix is given, no
2678 dnl X11 support is compiled in, no standard Xmu is available,
2679 dnl or dragndrop support is disabled
2680 dnl Because OffiX support currently loses when more than one display
2681 dnl is in use, we now disable it by default -slb 07/10/1998.
2682 test "$window_system" != "x11" && with_offix=no
2683 if test "$with_xmu" != yes -a "$with_x11" = yes; then
2684   if test "$with_offix" = "yes" ; then
2685     AC_MSG_WARN([--with-offix forced to `no'; no real Xmu support])
2686   fi
2687   with_offix=no
2688 fi
2689 if test "$with_dragndrop" = "no" ; then
2690   if test "$with_offix" = "yes" ; then
2691     AC_MSG_WARN([--with-offix forced to `no'; no generic Drag'n'Drop support])
2692   fi
2693   with_offix=no
2694 fi
2695 if test "$with_offix" = "yes"; then
2696   AC_DEFINE([HAVE_OFFIX_DND], [1], [Description here!])
2697   SXE_APPEND(offix.o, dnd_objs)
2698   SXE_APPEND(OffiX, dragndrop_proto)
2699 fi
2700
2701
2702 ## TTY Options
2703 ## ===========
2704 echo
2705 echo "TTY Options"
2706 echo "==========="
2707
2708
2709 dnl ---------------------
2710 dnl TTY-dependent options
2711 dnl ---------------------
2712
2713 dnl checks for header files
2714 AC_CHECK_HEADERS([libintl.h nlist.h sgtty.h termio.h termios.h])
2715
2716 if test "$with_tty" != "no"  ; then
2717        AS_MESSAGE(checking for TTY-related features)
2718         AC_DEFINE([HAVE_TTY], [1], [Description here!])
2719         AC_DEFINE([HAVE_UNIXOID_EVENT_LOOP], [1], [Description here!])
2720         SXE_ADD_SXEUITTY_OBJS([console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o])
2721
2722   dnl Autodetect ncurses.
2723   AC_CHECK_LIB(ncurses, tgetent, , with_ncurses=no)
2724   AC_CHECK_LIB(ncurses, tgetstr, , with_ncurses=no)
2725   AC_CHECK_LIB(ncurses, tparm, , with_ncurses=no)
2726   if test "$with_ncurses" != "no"; then
2727     AC_DEFINE([HAVE_NCURSES], [1], [Description here!])
2728     with_ncurses=yes
2729     AC_CHECK_HEADER(ncurses/ncurses.h, curses_h_file=ncurses/ncurses.h)
2730     if test -z "$curses_h_file"; then
2731             AC_CHECK_HEADER(ncurses/curses.h,  curses_h_file=ncurses/curses.h)
2732     fi
2733     if test -n "$curses_h_file"; then
2734             AC_CHECK_HEADER(ncurses/termcap.h, termcap_h_file=ncurses/termcap.h)
2735             AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
2736     else
2737             AC_CHECK_HEADER(ncurses.h, curses_h_file=ncurses.h)
2738             AC_CHECK_HEADER(termcap.h, termcap_h_file=termcap.h)
2739             AC_CHECK_HEADER(term.h,    term_h_file=term.h)
2740     fi
2741     SXE_ADD_SXEUITTY_OBJS(terminfo.o)
2742     SXE_PREPEND(-lncurses, LIBS)
2743
2744     if test -z "$curses_h_file" ; then
2745       dnl Try again, and check for the bogus ncurses/ include bug.
2746       dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
2747       dnl <ncurses/unctrl.h>)
2748       save_c_switch_site="$c_switch_site"
2749       c_switch_site="$c_switch_site -I/usr/include/ncurses"
2750       AC_CHECK_HEADER(ncurses/ncurses.h, curses_h_file=ncurses/ncurses.h)
2751       if test -z "$curses_h_file"; then
2752             AC_CHECK_HEADER(ncurses/curses.h,  curses_h_file=ncurses/curses.h)
2753       fi
2754       if test -n "$curses_h_file"; then
2755             AC_CHECK_HEADER(ncurses/termcap.h, termcap_h_file=ncurses/termcap.h)
2756             AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
2757       else
2758             AC_CHECK_HEADER(ncurses.h, curses_h_file=ncurses.h)
2759             AC_CHECK_HEADER(termcap.h, curses_h_file=termcap.h)
2760             AC_CHECK_HEADER(term.h,    curses_h_file=term.h)
2761       fi
2762       if test -n "$curses_h_file"
2763         then AC_MSG_WARN([Your system has the bogus ncurses include bug.])
2764         else c_switch_site="$save_c_switch_site"
2765       fi
2766     fi
2767   fi
2768   if test "$with_ncurses" = "no" -o -z "$curses_h_file" ; then
2769
2770     # Check alternate library includes
2771     for lib in curses term terminfo termcap; do
2772         AC_CHECK_HEADER(${lib}.h, [
2773                 eval ${lib}_h_file=${lib}.h
2774                 AC_CHECK_LIB($lib, tgetent, eval have_${lib}=yes, eval have_${lib}=no)
2775                 AC_CHECK_LIB($lib, tgetstr, , eval have_${lib}=no)])
2776     done
2777
2778     for lib in curses terminfo termlib termcap; do
2779           have_lib_eval=`eval echo \\$have_$lib`
2780           if test "$have_lib_eval" = "yes"; then
2781                 AC_CHECK_LIB($lib, tparm,
2782                           SXE_ADD_SXEUITTY_OBJS(terminfo.o),
2783                           SXE_ADD_SXEUITTY_OBJS(tparam.o))
2784                 SXE_PREPEND(-l${lib}, LIBS)
2785                 break
2786           fi
2787     done
2788   fi
2789   if test -n "$curses_h_file"; then
2790         AC_DEFINE_UNQUOTED([HAVE_CURSES_H], [1], [There is a curses.h header file available])
2791   fi
2792   if test -n "$termcap_h_file"; then
2793         AC_DEFINE_UNQUOTED([HAVE_TERMCAP_H], [1], [There is a termcap.h header available])
2794   fi
2795   if test -n "$term_h_file"; then
2796         AC_DEFINE_UNQUOTED([HAVE_TERM_H], [1], [There is a term.h header available])
2797   fi
2798   AC_DEFINE_UNQUOTED([CURSES_H_FILE], ["${curses_h_file-curses.h}"], [The curses.h header file])
2799   AC_DEFINE_UNQUOTED([TERMCAP_H_FILE], ["${termcap_h_file-termcap.h}"], [The termcap.h header file])
2800   AC_DEFINE_UNQUOTED([TERM_H_FILE], ["${term_h_file-term.h}"], [The term.h header file])
2801
2802   dnl General Purpose Mouse (libgpm) support
2803   if test "$with_gpm" != "no"; then
2804     AC_CHECK_HEADER(gpm.h, [
2805       AC_CHECK_LIB(gpm, Gpm_Open, have_gpm=yes)])
2806     if test "$have_gpm" = "yes"; then
2807       with_gpm=yes
2808       AC_DEFINE([HAVE_GPM], [1], [General Purpose Mouse (libgpm) is available])
2809       SXE_ADD_SXEUITTY_OBJS(gpmevent.o)
2810       SXE_PREPEND(-lgpm, LIBS)
2811     else
2812       with_gpm=no
2813     fi
2814   fi
2815
2816 else dnl "$with_tty" = "no"
2817   for feature in ncurses curses termcap terminfo termlib gpm; do
2818     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2819       AC_MSG_WARN([--with-${feature} ignored:  Not valid without TTY support])
2820     fi
2821     eval "with_${feature}=no"
2822   done
2823 fi dnl with_tty
2824
2825 SXE_CHECK_UI_SUFFICIENCY
2826
2827 ## Uncertain options
2828 ## =================
2829 echo
2830 echo "Uncertain options"
2831 echo "================="
2832
2833 ## for native xml support one day
2834 SXE_LANG_CHECK_XML
2835 SXE_CHECK_SUFFICIENCY([libxml2], [xml language])
2836 ## for BoehmGC support one day
2837 SXE_CHECK_BDWGC
2838 SXE_CHECK_SUFFICIENCY([bdwgc], [Boehm-Demers-Weiser GC])
2839
2840 if test "$with_experimental_features_bdwgc" = "yes"; then
2841         AC_MSG_CHECKING([if bdwgc prerequisites are met])
2842         AC_MSG_RESULT([${have_bdwgc}])
2843         have_experimental_features_bdwgc=${have_bdwgc}
2844         if test "${have_bdwgc}" = "yes"; then
2845                 AC_DEFINE([EF_USE_BDWGC], [1],
2846                         [Whether to actually use the BDWGC!])
2847         fi
2848 fi
2849
2850
2851 dnl This one is for the static initializeds variables in
2852 dnl offix.c, so that the thing is dumped after lastfile.o
2853 AC_SUBST(dnd_objs)
2854
2855 dnl Autodetect dll support
2856
2857 LIBSTDCPP=
2858 AC_SUBST(LIBSTDCPP)
2859
2860
2861 ## Multimedia Options
2862 ## ==================
2863 echo
2864 echo "Multimedia Options"
2865 echo "=================="
2866
2867 dnl ----------------------
2868 dnl Graphics libraries
2869 dnl ----------------------
2870
2871 if test "$with_image_xpm" = "yes"; then
2872         SXE_MM_CHECK_XPM([have_image_xpm=yes], [have_image_xpm=no])
2873
2874         AC_MSG_CHECKING([for sufficient xpm support])
2875         if test "$have_image_xpm" = "yes"; then
2876                 AC_MSG_RESULT([yes])
2877                 AC_DEFINE([HAVE_XPM], [1], [Description here!])
2878                 SXE_PREPEND([-lXpm], [MM_LIBS])
2879         else
2880                 AC_MSG_RESULT([no])
2881                 have_image_xpm=no
2882         fi
2883 fi
2884 AM_CONDITIONAL([WITH_BDWGC],
2885         [test "$with_experimental_features_bdwgc" = "yes" -a \
2886               "$have_bdwgc" = "yes"])
2887
2888 if test "$with_image_xface" = "yes"; then
2889         SXE_MM_CHECK_XFACE([have_image_xface=yes], [have_image_xface=no])
2890
2891         AC_MSG_CHECKING([for sufficient xface support])
2892         if test "$have_image_xface" = "yes"; then
2893                 AC_MSG_RESULT([yes])
2894                 AC_DEFINE([HAVE_XFACE], [1], [dnl
2895                         Both compface.h and libcompface have been found.])
2896                 SXE_PREPEND([-lcompface], [MM_LIBS])
2897         else
2898                 AC_MSG_RESULT([no])
2899                 have_image_xface=no
2900         fi
2901 fi
2902
2903 if test "$with_image_gif" = "yes"; then
2904         SXE_MM_CHECK_GIF([have_image_gif=yes], [have_image_gif=no])
2905
2906         AC_MSG_CHECKING([for sufficient gif support])
2907         if test "$have_image_gif" = "yes"; then
2908                 AC_MSG_RESULT([yes])
2909                 AC_DEFINE([HAVE_GIF], [1], [Enable internal GIF decoding])
2910                 SXE_ADD_MM_OBJS(dgif_lib.o gif_io.o)
2911         else
2912                 AC_MSG_RESULT([no])
2913         fi
2914 fi
2915
2916 SXE_MM_SEARCH_INFLATE
2917
2918 if test "$with_image_jpeg" = "yes"; then
2919         SXE_MM_CHECK_JPEG([have_image_jpeg=yes], [have_image_jpeg=no])
2920
2921         AC_MSG_CHECKING([for sufficient jpeg support])
2922         if test "$have_image_jpeg" = "yes"; then
2923                 AC_MSG_RESULT([yes])
2924                 AC_DEFINE([HAVE_JPEG], [1], [
2925                         Both jpeglib.h and libjpeg have been found.])
2926                 SXE_PREPEND([-ljpeg], [MM_LIBS])
2927         else
2928                 AC_MSG_RESULT([no])
2929         fi
2930 fi
2931
2932 if test "$with_image_png" = "yes"; then
2933         AC_DEFINE([WITH_PNG], [1], [Define to 1 if png support is desired.])
2934         SXE_MM_CHECK_PNG([have_image_png="yes"], [have_image_png="no"])
2935
2936         SXE_MSG_CHECKING([for sufficient PNG support])
2937         SXE_MSG_RESULT([${sxe_cv_feat_png}])
2938         if test "$sxe_cv_feat_png" = "yes"; then
2939                 SXE_PREPEND_UNDUP([$PNG_CPPFLAGS], [MM_CPPFLAGS])
2940                 SXE_PREPEND_UNDUP([$PNG_LDFLAGS], [MM_LDFLAGS])
2941                 SXE_PREPEND([$PNG_LIBS], [MM_LIBS])
2942         fi
2943 fi
2944
2945 if test "$with_image_tiff" = "yes"; then
2946         SXE_MM_CHECK_TIFF([have_image_tiff=yes], [have_image_tiff=no])
2947
2948         AC_MSG_CHECKING([for sufficient TIFF support])
2949         if test "$have_image_tiff" = "yes"; then
2950                 AC_MSG_RESULT([yes])
2951                 AC_DEFINE([HAVE_TIFF], [1], [
2952                         Both tiffio.h and libtiff have been found.])
2953                 SXE_PREPEND([-ltiff], [MM_LIBS])
2954         else
2955                 AC_MSG_RESULT([no])
2956         fi
2957 fi
2958
2959 dnl Check for audio output and media stream libraries.
2960
2961 dnl internal media stream analysis support
2962 if test "$with_media_internal" != "no"; then
2963         need_media_internal=yes
2964         have_media_internal=yes
2965 fi
2966
2967 ## Since almost any of the below tests uses pkgconfig we make a
2968 ## once-for-all-times check now
2969 SXE_SEARCH_CONFIG_PROG([pkg-config])
2970
2971 dnl libsndfile support
2972 if test "$with_media_sndfile" != "no"; then
2973         SXE_MM_CHECK_SNDFILE([have_media_sndfile=yes], [have_media_sndfile=no])
2974
2975         AC_MSG_CHECKING([for sufficient sndfile support])
2976         if test "$have_media_sndfile" = "yes"; then
2977                 AC_MSG_RESULT([yes])
2978                 SNDFILE_LIBS=`$PKG_CONFIG --libs sndfile`
2979                 SNDFILE_CPPFLAGS=`$PKG_CONFIG --cflags sndfile`
2980                 SNDFILE_VERSION=`$PKG_CONFIG --modversion sndfile`
2981                 SXE_PREPEND([$SNDFILE_LIBS], [MM_LIBS])
2982                 SXE_PREPEND_UNDUP([$SNDFILE_CPPFLAGS], [MM_CPPFLAGS])
2983                 SXE_ADD_MM_OBJS([media-sndfile.o])
2984                 AC_DEFINE([HAVE_SNDFILE], [1],
2985                         [Whether we appear to have support for the sndfile library!])
2986                 AC_DEFINE_UNQUOTED([SNDFILE_VERSION], [$SNDFILE_VERSION],
2987                         [Version of the sndfile library!])
2988         else
2989                 AC_MSG_RESULT([no])
2990                 have_media_sndfile=no
2991         fi
2992 fi
2993
2994 dnl libavcodec/libavformat/ffmpeg support
2995 if test "$with_media_ffmpeg" != "no"; then
2996         SXE_MM_CHECK_FFMPEG([have_media_ffmpeg=yes], [have_media_ffmpeg=no])
2997
2998         AC_MSG_CHECKING([for sufficient FFmpeg support])
2999
3000         if test "$have_media_ffmpeg" = "yes"; then
3001                 AC_MSG_RESULT([yes])
3002                 FFMPEG_LIBS=`$PKG_CONFIG --libs libavformat`
3003                 FFMPEG_CPPFLAGS=`$PKG_CONFIG --cflags libavformat`
3004                 SXE_PREPEND($FFMPEG_LIBS, MM_LIBS)
3005                 SXE_PREPEND_UNDUP($FFMPEG_CPPFLAGS, MM_CPPFLAGS)
3006                 SXE_ADD_MM_OBJS([media-ffmpeg.o])
3007                 AC_DEFINE([HAVE_FFMPEG], [1], [Description here!])
3008         else
3009                 AC_MSG_RESULT([no])
3010                 have_media_ffmpeg=no
3011         fi
3012 fi
3013
3014 dnl sox support
3015 if test "$with_media_sox" != "no"; then
3016         ## defines $LIBST_CONFIG
3017         SXE_MM_CHECK_SOX([have_media_sox=yes], [have_media_sox=no])
3018
3019         AC_MSG_CHECKING([for sufficient SoX support])
3020         if test "$sxe_cv_feat_sox" = "yes"; then
3021                 AC_MSG_RESULT([yes])
3022                 SXE_ADD_MM_OBJS([media-sox.o])
3023                 SXE_PREPEND_UNDUP([$sox_cppflags], [MM_CPPFLAGS])
3024                 SXE_PREPEND_UNDUP([$sox_ldflags], [MM_LDFLAGS])
3025                 SXE_PREPEND([$sox_libs], [MM_LIBS])
3026                 AC_DEFINE([HAVE_SOX], [1], [Description here!])
3027         else
3028                 AC_MSG_RESULT(no)
3029                 have_media_sox=no
3030         fi
3031 fi
3032
3033 dnl mad support
3034 if test "$with_media_mad" != "no"; then
3035         SXE_MM_CHECK_MAD([have_media_mad=yes], [have_media_mad=no])
3036
3037         AC_MSG_CHECKING([for sufficient mad support])
3038         if test "$have_media_mad" = "yes"; then
3039                 AC_MSG_RESULT([yes])
3040                 SXE_ADD_MM_OBJS([media-mad.o])
3041                 SXE_PREPEND([-lmad], [MM_LIBS])
3042                 AC_DEFINE([HAVE_MAD], [1], [Description here!])
3043         else
3044                 AC_MSG_RESULT(no)
3045                 have_media_mad=no
3046         fi
3047 fi
3048
3049 ## file/libmagic support
3050 if test "$with_media_magic" != "no"; then
3051         SXE_MM_CHECK_MAGIC([have_media_magic=yes], [have_media_magic=no])
3052
3053         AC_MSG_CHECKING([for sufficient magic support])
3054         if test "$have_media_magic" = "yes"; then
3055                 AC_MSG_RESULT([yes])
3056                 SXE_ADD_MM_OBJS([media-magic.o])
3057                 SXE_PREPEND([-lmagic], [MM_LIBS])
3058                 AC_DEFINE([HAVE_MAGIC], [1], [Whether libmagic is available])
3059         else
3060                 AC_MSG_RESULT([no])
3061                 have_media_magic=no
3062         fi
3063 fi
3064
3065
3066 dnl Autodetect OSS sound
3067 AS_MESSAGE([checking for OSS sound support])
3068 dnl test -z "$with_sound_oss" -a -n "$with_oss_sound_lib" && with_sound_oss=yes
3069
3070 dnl Check for Linux/BSD sound (called OSS)
3071 if test "$with_sound_oss" != "no"; then
3072         SXE_MM_CHECK_OSS([have_sound_oss=yes], [have_sound_oss=no])
3073
3074         AC_MSG_CHECKING([for sufficient OSS support])
3075         if test "$have_sound_oss" = "yes"; then
3076                 AC_MSG_RESULT([yes])
3077                 SXE_ADD_MM_OBJS([sound-oss.o])
3078                 AC_DEFINE([HAVE_INTERNAL_SOUND], [1], [Description here!])
3079                 AC_DEFINE([HAVE_OSS_SOUND], [1], [Description here!])
3080         else
3081                 AC_MSG_RESULT([no])
3082                 have_sound_oss=yes
3083         fi
3084 fi
3085
3086 dnl NAS Sound support
3087 if test "$with_sound_nas" != "no"; then
3088         SXE_MM_CHECK_NAS([have_sound_nas=yes], [have_sound_nas=no])
3089
3090         AC_MSG_CHECKING([for sufficient NAS support])
3091         if test "$have_sound_nas" = "yes"; then
3092                 AC_MSG_RESULT([yes])
3093                 AC_DEFINE([HAVE_NAS_SOUND], [1], [Description here!])
3094                 SXE_ADD_MM_OBJS([sound-nas.o])
3095                 SXE_PREPEND([-laudio], [MM_LIBS])
3096         else
3097                 AC_MSG_RESULT([no])
3098                 have_nas_sound=no
3099         fi
3100 fi
3101
3102 dnl ESD Sound support
3103 if test "$with_sound_esd" != "no"; then
3104         SXE_MM_CHECK_ESD([have_sound_esd=yes], [have_sound_esd=no])
3105
3106         AC_MSG_CHECKING([for sufficient ESD support])
3107         if test "$have_sound_esd" = "yes"; then
3108                 AC_MSG_RESULT([yes])
3109                 need_internal_media=yes
3110                 SXE_ADD_MM_OBJS([sound-esd.o])
3111                 ESD_LIBS=$("${ESD_CONFIG}" --libs)
3112                 SXE_PREPEND(["${ESD_LIBS}"], [MM_LIBS])
3113                 AC_DEFINE([HAVE_ESD_SOUND], [1], [Description here!])
3114         else
3115                 AC_MSG_RESULT([no])
3116                 have_esd_sound=no
3117         fi
3118 fi
3119
3120 dnl PulseAudio Sound support
3121 if test "$with_pulseaudio" != "no"; then
3122         SXE_MM_CHECK_PULSE([have_sound_pulse=yes], [have_sound_pulse=no])
3123
3124         AC_MSG_CHECKING([for sufficient PulseAudio support])
3125         if test "$have_sound_pulse" = "yes"; then
3126                 AC_MSG_RESULT([yes])
3127                 PULSEAUDIO_LIBS=`$PKG_CONFIG --libs libpulse`
3128                 pulse_version=`$PKG_CONFIG --modversion libpulse`
3129                 pulse_major_version=0
3130                 pulse_minor_version=`echo $pulse_version | \
3131                         sed -e "s/0\.\([[0-9]]*\).*/\1/"`
3132                 need_internal_media=yes
3133                 SXE_ADD_MM_OBJS([sound-pulse.o])
3134                 SXE_PREPEND($PULSEAUDIO_LIBS, MM_LIBS)
3135                 AC_DEFINE([HAVE_PULSE_SOUND], [1],
3136                         [Whether to put in support for PulseAudio.])
3137                 AC_DEFINE_UNQUOTED([PULSE_VERSION], [$pulse_minor_version],
3138                         [Version of the underlying pulse lib.])
3139         else
3140                 AC_MSG_RESULT(no)
3141                 have_sound_pulse=no
3142         fi
3143 fi
3144
3145 dnl Jack Sound support
3146 if test "$with_sound_jack" != "no"; then
3147         SXE_MM_CHECK_JACK([have_sound_jack=yes], [have_sound_jack=no])
3148
3149         AC_MSG_CHECKING([for sufficient Jack support])
3150         if test "$have_sound_jack" = "yes"; then
3151                 AC_MSG_RESULT([yes])
3152                 dnl okay, we have Jack on the system, but we have no working
3153                 dnl interface to it :(
3154                 JACK_LIBS=`$PKG_CONFIG --libs jack`
3155                 JACK_VERSION=`$PKG_CONFIG --modversion jack`
3156                 need_internal_media=yes
3157                 SXE_ADD_MM_OBJS([sound-jack.o])
3158                 SXE_PREPEND([$JACK_LIBS], [MM_LIBS])
3159                 AC_DEFINE([HAVE_JACK_SOUND], [1], [Description here!])
3160                 AC_DEFINE_UNQUOTED([JACK_VERSION], [$JACK_VERSION],
3161                         [Description here!])
3162         else
3163                 AC_MSG_RESULT(no)
3164         fi
3165 fi
3166
3167 dnl alsa sound support
3168 if test "$with_sound_alsa" != "no"; then
3169         SXE_MM_CHECK_ALSA([have_sound_alsa=yes], [have_sound_alsa=no])
3170
3171         AC_MSG_CHECKING([for sufficient ALSA support])
3172         if test "$have_sound_alsa" = "yes"; then
3173                 AC_MSG_RESULT([yes])
3174                 SXE_ADD_MM_OBJS([sound-alsa.o])
3175                 SXE_PREPEND([-lasound], [MM_LIBS])
3176         else
3177                 AC_MSG_RESULT(no)
3178                 have_sound_alsa=no
3179         fi
3180 fi
3181
3182 dnl libao sound support
3183 if test "$with_sound_ao" != "no"; then
3184         SXE_MM_CHECK_AO([have_sound_ao=yes], [have_sound_ao=no])
3185
3186         AC_MSG_CHECKING([for sufficient AO support])
3187         if test "$have_sound_ao" = "yes"; then
3188                 AC_MSG_RESULT([yes])
3189                 AO_LIBS=`$PKG_CONFIG --libs ao`
3190                 ao_version=`$PKG_CONFIG --modversion ao`
3191                 SXE_ADD_MM_OBJS([sound-ao.o])
3192                 SXE_PREPEND($AO_LIBS, MM_LIBS)
3193                 AC_DEFINE([HAVE_AO_SOUND], [1], [Description here!])
3194                 AC_DEFINE_UNQUOTED([AO_VERSION], [$ao_version], [Description here!])
3195         else
3196                 AC_MSG_RESULT(no)
3197                 have_sound_ao=no
3198         fi
3199 fi
3200
3201 if test \
3202    "$have_sound_alsa \
3203     $have_sound_ao \
3204     $have_sound_esd \
3205     $have_sound_jack \
3206     $have_sound_nas \
3207     $have_sound_pulse" != "no no no no no no"; then
3208         AC_DEFINE([HAVE_AUDIO], [1], [Description here!])
3209 fi
3210 if test "$need_internal_media" = "yes"; then
3211         with_internal_media=yes
3212         AC_DEFINE([HAVE_INTERNAL_MEDIA], [1], [Description here!])
3213         SXE_ADD_MM_OBJS([media-internal.o])
3214 fi
3215 AC_SUBST([MM_LIBS])
3216 AC_SUBST([MM_CPPFLAGS])
3217 AC_SUBST([MM_LDFLAGS])
3218 SXE_SUBST_MM_OBJS
3219
3220
3221 ## Internationalisation Options
3222 ## ============================
3223 echo
3224 echo "Internationalisation Options"
3225 echo "============================"
3226
3227 dnl ----------------------
3228 dnl Mule-dependent options
3229 dnl ----------------------
3230
3231 dnl if test "$with_mule" = "yes" && test ! -d "$sxe_srcdir/lisp/mule"; then
3232 dnl     echo "Attempt to Build with Mule without Mule/Lisp"
3233 dnl     echo "Please install the SXEmacs/Mule tarball or"
3234 dnl     echo "rerun configure with --with-mule=no"
3235 dnl     exit 1
3236 dnl fi
3237
3238 if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then
3239   AC_DEFINE([FILE_CODING], [1], [Description here!])
3240   SXE_ADD_MULE_OBJS(file-coding.o)
3241 fi
3242
3243 if test "$with_mule" = "yes" ; then
3244         SXE_CHECK_MULE
3245
3246 else dnl "$with_mule" = "no"
3247         for feature in xim canna wnn; do
3248                 if eval "test -n \"\$with_${feature}\" -a \
3249                         \"\$with_${feature}\" != no" ; then
3250                         AC_MSG_WARN([--with-${feature} ignored:  Not valid without Mule support])
3251                 fi
3252                 eval "with_${feature}=no"
3253         done
3254 fi dnl with_mule
3255 SXE_SUBST_MULE_OBJS
3256 AM_CONDITIONAL([WITH_MULE], [test "$with_mule" = "yes"])
3257
3258
3259 dnl At this point, we know whether we need the motif lib or not.
3260 if test "$need_motif" = "yes" ; then
3261         SXE_PREPEND([-lXm], [libs_x])
3262         dnl AIX needs the following library for use with Motif
3263         AC_CHECK_LIB([i18n], [layout_object_getvalue])
3264         if test "$ac_cv_lib_i18n_layout_object_getvalue" = "yes"; then
3265                 SXE_PREPEND([-li18n], [libs_x])
3266         fi
3267 fi
3268
3269 dnl getaddrinfo() is borked under hpux11
3270 if test "$ac_cv_func_getaddrinfo" != "no" ; then
3271   case "$opsys" in
3272     hpux11 )
3273       AC_MSG_WARN([Use of getaddrinfo is disabled for HP-UX 11.XX.])
3274       ac_cv_func_getaddrinfo=no
3275       ;;
3276   esac
3277 fi
3278
3279
3280 ## Database Options
3281 ## ================
3282 echo
3283 echo "Database Options"
3284 echo "================"
3285
3286 dnl Database support
3287 dnl We do not necessarily have to have libdb/lib(g)dbm for DB/(G)DBM support.
3288 dnl On FreeBSD, both DB and DBM are part of libc.
3289 dnl By default, we check for DBM support in libgdbm, then libc, then libdbm.
3290
3291 ## initialise values
3292 have_database_berkdb=no
3293 have_database_gdbm=no
3294 have_database_dbm=no
3295
3296 if test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
3297    != "no no no"; then
3298         AS_MESSAGE(checking for database support)
3299 fi
3300
3301 dnl Check for ndbm.h, required for either kind of DBM support.
3302 if test "$with_database_gdbm $with_database_dbm" != "no no"; then
3303         SXE_CHECK_NDBM
3304         if test "$sxe_cv_feat_ndbm" = "no"; then
3305                 have_database_gdbm="no"
3306                 have_database_dbm="no"
3307         fi
3308 fi
3309
3310 dnl Check for DBM support in libgdbm or libgdbm_compat.
3311 if test "$with_database_gdbm" != "no"; then
3312         SXE_CHECK_GDBM
3313
3314         if test "$sxe_cv_feat_gdbm" = "yes"; then
3315                 have_database_gdbm="yes"
3316         else
3317                 have_database_gdbm="no"
3318         fi
3319 fi
3320
3321 dnl Check for DBM support in libc and libdbm.
3322 if test "$with_database_dbm" != "no"; then
3323         SXE_CHECK_DBM
3324
3325         if test "$sxe_cv_feat_gdbm" != "yes" -a \
3326                 "$sxe_cv_feat_dbm" = "yes"; then
3327                 have_database_dbm="yes"
3328         else
3329                 have_database_dbm="no"
3330         fi
3331 fi
3332
3333 dnl Check for Berkeley DB.
3334 if test "$with_database_berkdb" != "no"; then
3335         SXE_CHECK_BERKDB
3336
3337         if test "$sxe_cv_feat_berkdb" = "yes"; then
3338                 have_database_berkdb="yes"
3339         else
3340                 have_database_berkdb="no"
3341         fi
3342 fi
3343
3344 if test "$have_database_gdbm $have_database_dbm $have_database_berkdb" \
3345      != "no no no"; then
3346         AC_DEFINE([HAVE_DATABASE], [1], [Description here!])
3347         SXE_ADD_DB_OBJS([database.o])
3348
3349         SXE_CHECK_NDBM_BERKDB_CONFLICT
3350         if test "$sxe_cv_db_ndbm_berkdb_conflict" = "yes"; then
3351                 ## can't do nothing because the way we designed it
3352                 ## is going to conflict at compile time
3353                 have_database_gdbm="no"
3354                 have_database_dbm="no"
3355
3356         elif test "$have_database_gdbm $have_database_dbm" != "no no"; then
3357                 AC_DEFINE([HAVE_DBM], [1], [Description here!])
3358
3359                 ## Also, tell make about the DBM support we detected.
3360                 if test -n "$libdbm"; then
3361                         SXE_PREPEND([$libdbm], [DB_LIBS])
3362                 fi
3363         fi
3364 fi
3365
3366
3367 dnl Autodetect LDAP
3368 if test "$with_ldap" != "no"; then
3369         SXE_CHECK_LDAP
3370 fi
3371 if test "$have_ldap" = "yes"; then
3372         AC_DEFINE([HAVE_LDAP], [1], [Description here!])
3373         SXE_ADD_DB_OBJS(eldap.o)
3374         if test "$have_ldap_des" = "yes" ; then
3375                 SXE_PREPEND(-ldes, DB_LIBS)
3376         fi
3377         if test "$have_ldap_krb" = "yes" ; then
3378                 SXE_PREPEND(-lkrb, DB_LIBS)
3379         fi
3380         if test "$have_ldap_lber" = "yes" ; then
3381                 SXE_PREPEND(-llber, DB_LIBS)
3382         fi
3383         SXE_PREPEND(-lldap, DB_LIBS)
3384
3385         dnl save our values until here
3386         save_LIBS="$LIBS"
3387         LIBS="$DB_LIBS $LIBS"
3388         AC_CHECK_FUNCS(
3389                 [ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result])
3390         dnl and restore
3391         LIBS="$save_LIBS"
3392 fi
3393
3394 dnl Autodetect PostgreSQL
3395 if test "x$with_postgresql" != "xno"; then
3396         SXE_CHECK_POSTGRESQL
3397 fi
3398 SXE_SUBST_DB_OBJS
3399
3400
3401 dnl Usage tracking (undocumented and likely unused option)
3402 if test "$usage_tracking" = "yes"; then
3403   AC_DEFINE([USAGE_TRACKING], [1], [Description here!])
3404   SXE_PREPEND(-Bstatic -lut -Bdynamic, LIBS)
3405 fi
3406
3407 dnl Unfortunately, just because we can link doesn't mean we can run.
3408 dnl One of the above link tests may have succeeded but caused resulting
3409 dnl executables to fail to run.  Also any tests using AC_RUN_IFELSE will
3410 dnl have reported incorrect results.
3411 AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(int c,char *v[]){return 0;}]])],[:],[
3412   echo ""
3413   echo "*** PANIC *** The C compiler can no longer build working executables."
3414   echo "*** PANIC *** Please examine the tail of config.log for runtime errors."
3415   echo "*** PANIC *** The most likely reason for this problem is that configure"
3416   echo "*** PANIC *** links with shared libraries, but those libraries cannot be"
3417   echo "*** PANIC *** found at run time."
3418   echo "*** PANIC ***"
3419   echo "*** PANIC *** On a Linux system, edit /etc/ld.so.conf and re-run ldconfig."
3420   echo "*** PANIC *** On other systems, try telling configure where to find the"
3421   echo "*** PANIC *** shared libraries using the --with-site-runtime-libraries option"
3422   echo "*** PANIC ***"
3423   echo "*** PANIC *** Another way to shoot yourself in the foot is to specify"
3424   echo "*** PANIC *** --with-FEATURE when FEATURE is not actually installed"
3425   echo "*** PANIC *** on your system.  Don't do that."
3426   exit 1], [AS_MESSAGE(cannot cross-compile)])
3427
3428 dnl Process support
3429 AC_DEFINE([HAVE_UNIX_PROCESSES], [1], [Description here!])
3430
3431 dnl --------------------------------
3432 dnl Compute SUBST-itutable variables
3433 dnl --------------------------------
3434
3435 dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM)
3436 dnl Use SXE_CONSECUTIVE_UNDUP instead of plain assignment statements to remove extraneous blanks
3437 if test "$with_module_support" = "yes"; then
3438         ld_libs_module=
3439 else
3440         SXE_CONSECUTIVE_UNDUP(ld_libs_module, $ldap_libs $postgresql_libs)
3441 fi
3442
3443 SXE_UNDUP(CFLAGS, $CFLAGS)
3444 SXE_UNDUP(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system $CFLAGS $CPPFLAGS)
3445 SXE_UNDUP(c_switch_window_system, $c_switch_x_site $X_CFLAGS)
3446 SXE_UNDUP(c_switch_all, $c_switch_general $c_switch_window_system)
3447 SXE_UNDUP(ld_switch_general, $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_run)
3448 SXE_UNDUP(ld_switch_window_system, $ld_switch_x_site)
3449 SXE_UNDUP(ld_switch_all, $ld_switch_general $ld_switch_window_system)
3450 dnl Since some systems need libs to be restated later, we can't just dedup, we can only safely dedup
3451 dnl consecutive occurrences
3452 SXE_CONSECUTIVE_UNDUP(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard)
3453 SXE_CONSECUTIVE_UNDUP(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $X_PRE_LIBS)
3454 SXE_CONSECUTIVE_UNDUP(ld_libs_all, $OPENSSL_LIBS $DB_LIBS $ENT_LIBS $MM_LIBS $ld_libs_window_system $ld_libs_general $ld_libs_module)
3455
3456 dnl For no-module builds, make the src dir last
3457 if test "$with_module_support" = "no"; then
3458         SXE_APPEND(src, MAKE_SUBDIR)    dnl is that still important?
3459 fi
3460
3461 EMACS=$sxe_blddir/src/$PROGNAME
3462 AC_SUBST(EMACS)
3463
3464 dnl Compute lists of Makefiles and subdirs
3465 AC_SUBST(SRC_SUBDIR_DEPS)
3466 internal_makefile_list="Makefile.in"
3467 SUBDIR_MAKEFILES=''
3468 test -d lock || mkdir lock
3469 for dir in $MAKE_SUBDIR; do
3470   case "$dir" in */* ) dnl Implement mkdir -p
3471     ( for d in `echo $dir | sed 's:/: :g'` ; do
3472         test -d "$d" || mkdir "$d"; cd "$d"
3473       done ) ;;
3474    * ) test -d "$dir" || mkdir "$dir" ;;
3475   esac
3476   SXE_SPACE(SUBDIR_MAKEFILES, $SUBDIR_MAKEFILES $dir/Makefile $dir/Makefile)
3477   SXE_SPACE(internal_makefile_list, $internal_makefile_list $dir/Makefile.in)
3478 done
3479
3480 AC_SUBST(INSTALL_ARCH_DEP_SUBDIR)
3481 AC_SUBST(MAKE_SUBDIR)
3482 AC_SUBST(MAKE_AM_SUBDIR)
3483 AC_SUBST(SUBDIR_MAKEFILES)
3484
3485 dnl ----------------------------------------------
3486 dnl Create some auxiliary files for developers.
3487 dnl ----------------------------------------------
3488
3489 dnl Create a useful TAGS file
3490 if test -f "$sxe_srcdir/TAGS" -a ! -f "TAGS"; then
3491   test "$extra_verbose" = "yes" && echo "creating TAGS"
3492   echo "\f
3493 $sxe_srcdir/TAGS,include" > "TAGS"
3494 fi
3495
3496 dnl Create top level .sbinit for Sun compilers
3497 if test "$__SUNPRO_C" = "yes"; then
3498   test "$extra_verbose" = "yes" && echo "creating .sbinit"
3499   ( echo "# For use with Sun WorkShop's Source browser."
3500     echo "# See sbquery(1) and sbinit(4) for more information"
3501     for dir in $MAKE_SUBDIR; do echo "import $dir"; done
3502   ) > .sbinit
3503 fi
3504
3505 ### whether to build with profile.o
3506 AC_RUN_IFELSE([AC_LANG_SOURCE([[
3507 int main(int c, char *v[])
3508 {
3509 #ifdef HAVE_SETITIMER
3510         return 1;
3511 #else
3512         return 0;
3513 #endif
3514 }]])], [./conftest; have_setitimer=$?],
3515         [have_setitimer=$?],[have_setitimer=0])
3516 AM_CONDITIONAL([HAVE_SETITIMER], [test "$have_setitimer" = "1"])
3517
3518 ## whether to build with sheap.o
3519 AC_RUN_IFELSE([AC_LANG_SOURCE([[
3520 int main(int c, char *v[])
3521 {
3522 #if defined(HEAP_IN_DATA) && !defined(PDUMP)
3523         return 1;
3524 #else
3525         return 0;
3526 #endif
3527 }]])], [./conftest; build_sheap=$?],
3528         [build_sheap=$?],[build_sheap=0])
3529 AM_CONDITIONAL([BUILD_SHEAP], [test "$build_sheap" = "1"])
3530
3531
3532 dnl There are no more compile tests; remove the core they created.
3533 rm -f core
3534
3535 dnl --------------------------------------------------
3536 dnl Substitute into Makefile, config.h and sxe-paths.h
3537 dnl --------------------------------------------------
3538
3539 dnl what sort of things to edit into Makefile, config.h and sxe-paths.h
3540 dnl configuration here uncanonicalized to avoid exceeding size limits.
3541
3542 AC_SUBST(PROGNAME)
3543 AC_SUBST(MULE)
3544 AC_SUBST(HAVE_LIBFFI)
3545 AC_SUBST(version)
3546 AC_SUBST(VERSION)
3547 AC_SUBST(old_version)
3548 AC_SUBST(inststaticdir)
3549 AC_SUBST(instvardir)
3550 AC_SUBST(instvarsepdir)
3551 AC_SUBST(sxe_srcdir)
3552 AC_SUBST(emodsrcdir)
3553 AC_SUBST(sxe_blddir)
3554 AC_SUBST(emodblddir)
3555 AC_SUBST(bindir)
3556 AC_SUBST(datarootdir)
3557 AC_SUBST(datadir)
3558 AC_SUBST(statedir)
3559 AC_SUBST(libdir)
3560 AC_SUBST(mandir)
3561 AC_SUBST(extra_includes)
3562
3563 AC_SUBST(prefix)
3564 AC_SUBST(PREFIX_USER_DEFINED)
3565 dnl Yo, Stephen Bourne!  I want to marry you!
3566 PREFIX=$prefix
3567 while true; do
3568   case "$PREFIX" in
3569     *\$* ) eval "PREFIX=\"${PREFIX}\"" ;;
3570     *) break ;;
3571   esac
3572 done
3573 AC_SUBST(PREFIX)
3574
3575 AC_SUBST(exec_prefix)
3576 AC_SUBST(EXEC_PREFIX_USER_DEFINED)
3577 EXEC_PREFIX=$exec_prefix
3578 while true; do
3579   case "$EXEC_PREFIX" in
3580     *\$* ) eval "EXEC_PREFIX=\"${EXEC_PREFIX}\"" ;;
3581     *) break ;;
3582   esac
3583 done
3584 AC_SUBST(EXEC_PREFIX)
3585
3586 AC_SUBST(infodir)
3587 AC_SUBST(INFODIR_USER_DEFINED)
3588 INFODIR=$infodir
3589 while true; do
3590   case "$INFODIR" in
3591     *\$* ) eval "INFODIR=\"${INFODIR}\"" ;;
3592     *) break ;;
3593   esac
3594 done
3595 AC_SUBST(INFODIR)
3596
3597 AC_SUBST(infopath,$with_infopath)
3598 AC_SUBST(INFOPATH_USER_DEFINED)
3599 INFOPATH=$with_infopath
3600 while true; do
3601   case "$INFOPATH" in
3602     *\$* ) eval "INFOPATH=\"${INFOPATH}\"" ;;
3603     *) break ;;
3604   esac
3605 done
3606 AC_SUBST(INFOPATH)
3607
3608 if test -z "$with_module_path"; then
3609     with_module_path="~/.sxemacs/${configuration}/modules:${libdir}/${PROGNAME}/${configuration}/site-modules:${libdir}/${instvardir}/${configuration}/modules"
3610 fi
3611
3612 AC_SUBST(module_path,$with_module_path)
3613 AC_SUBST(MODULE_PATH_USER_DEFINED)
3614 MODULE_PATH=$with_module_path
3615 while true; do
3616   case "$MODULE_PATH" in
3617     *\$* ) eval "MODULE_PATH=\"${MODULE_PATH}\"" ;;
3618     *) break ;;
3619   esac
3620 done
3621 AC_SUBST(MODULE_PATH)
3622
3623 if test -z "$with_package_prefix" ; then
3624   with_package_prefix=${prefix}/share/sxemacs
3625 fi
3626
3627 if test -z "$with_package_path" && test -n "$with_package_prefix" ; then
3628   if test "$with_mule" = "yes" ; then
3629     with_package_path="~/.sxemacs/site-packages:~/.sxemacs/sxemacs-packages:~/.sxemacs/xemacs-packages:~/.sxemacs/mule-packages"
3630     with_package_path="${with_package_path}:${with_package_prefix}/site-packages:${with_package_prefix}/sxemacs-packages:${with_package_prefix}/xemacs-packages:${with_package_prefix}/mule-packages"
3631   else
3632     with_package_path="~/.sxemacs/site-packages:~/.sxemacs/sxemacs-packages:~/.sxemacs/xemacs-packages"
3633     with_package_path="${with_package_path}:${with_package_prefix}/site-packages:${with_package_prefix}/sxemacs-packages:${with_package_prefix}/xemacs-packages"
3634   fi
3635 fi
3636
3637 AC_SUBST(package_path,$with_package_path)
3638 AC_SUBST(PACKAGE_PATH_USER_DEFINED)
3639 PACKAGE_PATH=$with_package_path
3640 while true; do
3641   case "$PACKAGE_PATH" in
3642     *\$* ) eval "PACKAGE_PATH=\"${PACKAGE_PATH}\"" ;;
3643     *) break ;;
3644   esac
3645 done
3646 AC_SUBST(PACKAGE_PATH)
3647
3648 AC_SUBST(lispdir, $with_lispdir)
3649 AC_SUBST(LISPDIR_USER_DEFINED)
3650 LISPDIR=$with_lispdir
3651 while true; do
3652   case "$LISPDIR" in
3653     *\$* ) eval "LISPDIR=\"${LISPDIR}\"" ;;
3654     *) break ;;
3655   esac
3656 done
3657 AC_SUBST(LISPDIR)
3658
3659 AC_SUBST(moduledir,$with_moduledir)
3660 AC_SUBST(MODULEDIR_USER_DEFINED)
3661 MODULEDIR=$with_moduledir
3662 while true; do
3663   case "$MODULEDIR" in
3664     *\$* ) eval "MODULEDIR=\"${MODULEDIR}\"" ;;
3665     *) break ;;
3666   esac
3667 done
3668 AC_SUBST(MODULEDIR)
3669
3670 AC_SUBST([sitelispdir], [$with_sitelispdir])
3671 AC_SUBST([SITELISPDIR_USER_DEFINED])
3672 SITELISPDIR=$sitelispdir
3673 while true; do
3674   case "$SITELISPDIR" in
3675     *\$* ) eval "SITELISPDIR=\"${SITELISPDIR}\"" ;;
3676     *) break ;;
3677   esac
3678 done
3679 AC_SUBST(SITELISPDIR)
3680
3681 AC_SUBST(sitemoduledir,$with_sitemoduledir)
3682 AC_SUBST(SITEMODULEDIR_USER_DEFINED)
3683 SITEMODULEDIR=$with_sitemoduledir
3684 while true; do
3685   case "$SITEMODULEDIR" in
3686     *\$* ) eval "SITEMODULEDIR=\"${SITEMODULEDIR}\"" ;;
3687     *) break ;;
3688   esac
3689 done
3690 AC_SUBST(SITEMODULEDIR)
3691
3692 AC_SUBST(etcdir,$with_etcdir)
3693 AC_SUBST(ETCDIR_USER_DEFINED)
3694 ETCDIR=$with_etcdir
3695 while true; do
3696   case "$ETCDIR" in
3697     *\$* ) eval "ETCDIR=\"${ETCDIR}\"" ;;
3698     *) break ;;
3699   esac
3700 done
3701 AC_SUBST(ETCDIR)
3702
3703 AC_SUBST(archlibdir,$with_archlibdir)
3704 AC_SUBST(ARCHLIBDIR_USER_DEFINED)
3705 ARCHLIBDIR=$with_archlibdir
3706 while true; do
3707   case "$ARCHLIBDIR" in
3708     *\$* ) eval "ARCHLIBDIR=\"${ARCHLIBDIR}\"" ;;
3709     *) break ;;
3710   esac
3711 done
3712 AC_SUBST(ARCHLIBDIR)
3713
3714 AC_SUBST(docdir,$with_docdir)
3715 AC_SUBST(DOCDIR_USER_DEFINED)
3716 DOCDIR=$with_docdir
3717 while true; do
3718   case "$DOCDIR" in
3719     *\$* ) eval "DOCDIR=\"${DOCDIR}\"" ;;
3720     *) break ;;
3721   esac
3722 done
3723 AC_SUBST(DOCDIR)
3724
3725 AC_SUBST(docdir)
3726 AC_SUBST(bitmapdir)
3727
3728 dnl The following flags combine all the information from:
3729 dnl - command line options (user always gets priority)
3730 dnl - user environment variables
3731 dnl - determined by configure
3732 dnl - the s&m header files (required for ellcc)
3733 AC_SUBST(machfile)
3734 AC_SUBST(opsysfile)
3735 AC_SUBST(c_switch_general)
3736 AC_SUBST(c_switch_window_system)
3737 AC_SUBST(c_switch_all)
3738 AC_SUBST(ld_switch_general)
3739 AC_SUBST(ld_switch_window_system)
3740 AC_SUBST(ld_switch_all)
3741 AC_SUBST(ld_libs_general)
3742 AC_SUBST(ld_libs_window_system)
3743 AC_SUBST(ld_libs_all)
3744 AC_SUBST(CFLAGS)
3745 AC_SUBST(CPPFLAGS)
3746 AC_SUBST(LDFLAGS)
3747 RECURSIVE_MAKE_ARGS="\$(MFLAGS) CC='\$(CC)' CFLAGS='\$(CFLAGS)' LDFLAGS='\$(LDFLAGS)' CPPFLAGS='\$(CPPFLAGS)'"
3748 if test -z "$MAKE"; then
3749         MAKE=make
3750 fi
3751 case `$MAKE --version 2>/dev/null` in
3752    GNU\ Make*)
3753         AM_MAKEFLAGS="-w $AM_MAKEFLAGS"
3754         RECURSIVE_MAKE_ARGS="-w $RECURSIVE_MAKE_ARGS"
3755    ;;
3756    *)
3757         echo ===================================
3758         echo $MAKE does not seem to be GNU Make
3759         echo If you find makefile errors please try using GNU Make as some
3760         echo autoconf constructs may not be proper for your make variant
3761         echo ===================================
3762    ;;
3763 esac
3764 AC_SUBST(RECURSIVE_MAKE_ARGS)
3765 AC_SUBST(AM_MAKEFLAGS)
3766
3767 AC_SUBST(sound_cflags)
3768 AC_SUBST(AR)
3769 AC_SUBST(RANLIB)
3770
3771 AC_SUBST(SXEMACS_CC)
3772 AC_SUBST(SXE_CFLAGS)
3773
3774 SXE_SUBST_CORE_OBJS()
3775
3776 SXE_SUBST_CRUFT_OBJS
3777
3778 dnl The default is yes
3779 if test "$with_prefix" = "yes"; then
3780   AC_DEFINE([PREFIX_USER_DEFINED], [1], [Description here!])
3781 fi
3782
3783 dnl Should this stay even though --with-site-modules is no longer an
3784 dnl option?  It is used in emacs.c for when the -no-site-modules cmd line
3785 dnl opt is used.  That cmd line opt definitely has usefullness.  Sebastian?
3786 dnl --SY.
3787 dnl The default is yes
3788 if test "$with_site_modules" = "no"; then
3789   AC_DEFINE([INHIBIT_SITE_MODULES], [1], [Description here!])
3790 fi
3791
3792 dnl SXE_SPACE(ac_configure_args, $ac_configure_args)
3793 AC_DEFINE_UNQUOTED([EMACS_CONFIGURATION], ["$ac_cv_build"], [Description here!])
3794 AC_DEFINE_UNQUOTED([EMACS_CONFIG_OPTIONS], ["$ac_configure_args"], [Description here!])
3795
3796 AC_SUBST([srcdir_equals_blddir_p])
3797
3798 dnl Following are deprecated
3799 null_string=""
3800 AC_DEFINE_UNQUOTED([LD_SWITCH_X_SITE], [$null_string], [Description here!])
3801 AC_DEFINE_UNQUOTED([LD_SWITCH_X_SITE_AUX], [$null_string], [Description here!])
3802 AC_DEFINE_UNQUOTED([C_SWITCH_X_SITE], [$null_string], [Description here!])
3803 AC_DEFINE_UNQUOTED([LD_SWITCH_SITE], [$null_string], [Description here!])
3804 AC_DEFINE_UNQUOTED([C_SWITCH_SITE], [$null_string], [Description here!])
3805
3806 dnl Note: as a general rule, *only* define things here that are not
3807 dnl autodetected.  For things that are autodetected, define them
3808 dnl at the point where the autodetection occurs or would occur,
3809 dnl so that the user gets immediate feedback on the results of the
3810 dnl autodetection.
3811
3812 if test "$GNU_MALLOC" = "yes"; then
3813         AC_DEFINE([GNU_MALLOC], [1], [Description here!])
3814         SXE_ADD_MEMALLOC_OBJS(vm-limit.o)
3815         if test "$doug_lea_malloc" != "yes"; then
3816                 SXE_ADD_MEMALLOC_OBJS(gmalloc.o)
3817         fi
3818         if test "$with_error_checking_malloc" = "yes"; then
3819                 dnl SXE_ADD_MEMALLOC_OBJS(free-hook.o)
3820                 :
3821         fi
3822 elif test "$with_system_malloc" = "yes" -o "$system_malloc" = "yes"; then
3823         AC_DEFINE([USE_SYSTEM_MALLOC], [1], [Description here!])
3824         AC_DEFINE([SYSTEM_MALLOC], [1], [Description here!])
3825 elif test "$with_debug_malloc"  = "yes"; then
3826         AC_DEFINE([USE_DEBUG_MALLOC], [1], [Description here!])
3827         AC_DEFINE([USE_SYSTEM_MALLOC], [1], [Description here!])
3828         AC_DEFINE([SYSTEM_MALLOC], [1], [Description here!])
3829         SXE_APPEND(-ldmalloc, MEMALLOC_LIBS)
3830 else
3831         SXE_ADD_MEMALLOC_OBJS([malloc.o])
3832 fi
3833 test "$GCC" = "yes" && \
3834         AC_DEFINE([USE_GCC], [1], [Description here!])
3835 test "$with_external_widget" = "yes" && \
3836         AC_DEFINE([EXTERNAL_WIDGET], [1], [Description here!])
3837 test "$with_quick_build" = "yes" && \
3838         AC_DEFINE([QUICK_BUILD], [1], [Description here!])
3839 if test "$with_purify" = "yes"; then
3840         AC_DEFINE([PURIFY], [1], [Description here!])
3841         AC_DEFINE([XLIB_ILLEGAL_ACCESS], [1], [Description here!])
3842 fi
3843 if test "$with_quantify" = "yes"; then
3844         AC_DEFINE([QUANTIFY], [1], [Description here!])
3845         AC_DEFINE([XLIB_ILLEGAL_ACCESS], [1], [Description here!])
3846 fi
3847 test "$with_pop" = "yes" && \
3848         AC_DEFINE([MAIL_USE_POP], [1], [Description here!])
3849 test "$with_hesiod" = "yes" && \
3850         AC_DEFINE([HESIOD], [1], [Description here!])
3851 test "$with_regex_malloc" = "yes" && \
3852         AC_DEFINE([REGEX_MALLOC], [1], [Description here!])
3853 test "$with_ipv6_cname" = "yes" && \
3854         AC_DEFINE([IPV6_CANONICALIZE], [1], [Description here!])
3855 if test "$with_pdump" = "yes"; then
3856         AC_DEFINE([PDUMP], [1], [Description here!])    dnl deprecated!
3857         AC_DEFINE([WITH_PDUMP], [1], [Description here!])
3858 fi
3859
3860 AM_CONDITIONAL([WITH_EXTW], [test "$with_external_widget" = "yes"])
3861 AM_CONDITIONAL([WITH_PDUMP], [test "$with_pdump" = "yes"])
3862 AC_SUBST([MEMALLOC_LIBS])
3863 SXE_SUBST_MEMALLOC_OBJS
3864
3865
3866 AC_DEFINE_UNQUOTED([USER_FULL_NAME], [pw->pw_gecos], [dnl
3867         USER_FULL_NAME returns a string that is the user's full name.
3868         It can assume that the variable `pw' points to the password file
3869         entry for this user.
3870
3871         At some sites, the pw_gecos field contains the user's full name.
3872         If neither this nor any other field contains the right thing, use
3873         pw_name, giving the user's login name, since that is better than
3874         nothing.])
3875
3876 AC_DEFINE([SIGTYPE], [RETSIGTYPE], [SIGTYPE is the macro we actually use])
3877 AC_DEFINE([SIGRETURN], [return], [SIGTYPE is the macro we actually use])
3878
3879 ## finally, redefine VERSION; this has to be done after all tests on C sources
3880 ## were run because otherwise the symbol VERSION would be defined twice and
3881 ## the C compiler would warn, sigh, and due to this stupid -Werror flag we ...
3882 ## tadadada ... will fail to run _any_ C test successfully
3883 AC_DEFINE_UNQUOTED([VERSION], ["$version"], [Version of SXEmacs.])
3884
3885 AH_TOP([
3886 #ifndef INCLUDED_sxe_config_h_
3887 #define INCLUDED_sxe_config_h_
3888
3889 #ifndef NOT_C_CODE
3890 #if defined (__GNUC__)
3891 #define alloca __builtin_alloca
3892 #elif defined __DECC
3893 #include <alloca.h>
3894 #pragma intrinsic(alloca)
3895 #elif defined __INTEL_COMPILER && defined HAVE_ALLOCA_H
3896 /* defer #include to end of file */
3897 #elif defined HAVE_ALLOCA_H
3898 #include <alloca.h>
3899 #elif defined(_AIX)
3900 #pragma alloca
3901 #elif ! defined (alloca)
3902 void *alloca();
3903 #endif
3904 #endif  /* C code */
3905 ])
3906
3907 AH_BOTTOM([
3908 /* The configuration script may define `opsysfile' to be the name of
3909    the s/...h file that describes your operating system.
3910    The file name is chosen based on the configuration name. */
3911
3912 #ifdef config_opsysfile
3913 #include config_opsysfile
3914 #endif
3915
3916 /* The configuration script may define `machfile' to be the name of
3917    the m/...h file that describes the machine you are using.
3918    The file name is chosen based on the configuration name. */
3919
3920 #ifdef config_machfile
3921 #include config_machfile
3922 #endif
3923
3924 /* basic system calls */
3925 #if defined (INTERRUPTIBLE_IO) || defined (DEBUG_ENCAPSULATION)
3926 # define ENCAPSULATE_READ
3927 # define ENCAPSULATE_WRITE
3928 #endif
3929 #if defined (INTERRUPTIBLE_OPEN) || defined (MULE) || defined (DEBUG_ENCAPSULATION)
3930 # define ENCAPSULATE_OPEN
3931 #endif
3932 #if defined (INTERRUPTIBLE_CLOSE) || defined (DEBUG_ENCAPSULATION)
3933 # define ENCAPSULATE_CLOSE
3934 #endif
3935 /* stdio calls */
3936 #if defined (INTERRUPTIBLE_IO) || defined (DEBUG_ENCAPSULATION)
3937 # define ENCAPSULATE_FREAD
3938 # define ENCAPSULATE_FWRITE
3939 #endif
3940 #if defined (INTERRUPTIBLE_OPEN) || defined (MULE) || defined (DEBUG_ENCAPSULATION)
3941 # define ENCAPSULATE_FOPEN
3942 #endif
3943 #if defined (INTERRUPTIBLE_CLOSE) || defined (DEBUG_ENCAPSULATION)
3944 # define ENCAPSULATE_FCLOSE
3945 #endif
3946
3947 #if defined (HAVE_SOCKS) && !defined (DO_NOT_SOCKSIFY)
3948 #define accept Raccept
3949 #define bind Rbind
3950 #define connect Rconnect
3951 #define getsockname Rgetsockname
3952 #define listen Rlisten
3953 #endif                          /* HAVE_SOCKS && !DO_NOT_SOCKSIFY */
3954
3955 #ifndef NOT_C_CODE              /* Actually means C or C++ */
3956 # if defined (__cplusplus)
3957 /* Avoid C++ keywords used as ordinary C identifiers */
3958 #  define class c_class
3959 #  define new   c_new
3960 #  define this  c_this
3961 #  define catch c_catch
3962 #  define EXTERN_C extern "C"
3963 # else                          /* C code */
3964 #  define EXTERN_C extern
3965 # endif
3966 #endif                          /* C or C++ */
3967 /* Strictly speaking, only int or unsigned int are valid types in a
3968    bitfield.  In practice, we would like to use enums as bitfields.
3969    The following should just result in warning avoidance:
3970    warning: nonportable bit-field type */
3971 #ifdef __GNUC__
3972 #define enum_field(enumeration_type) enum enumeration_type
3973 #else
3974 #define enum_field(enumeration_type) unsigned int
3975 #endif
3976
3977 #ifndef NOT_C_CODE
3978 #if defined __INTEL_COMPILER && defined HAVE_ALLOCA_H
3979 /* icc's alloca.h pulls in <features.h>,
3980    but that must be done after _GNU_SOURCE and friends are defined */
3981 #include <alloca.h>
3982 #endif
3983 #endif                          /* C code */
3984
3985 #endif  /* INCLUDED_sxe_config_h_ */
3986 ])
3987
3988
3989 dnl -------------------------------------------------------------------------
3990 dnl -------------------------------
3991 dnl Report on what we decided to do
3992 dnl -------------------------------
3993
3994 dnl #### We should tag this as the _build_ environment.
3995 dnl Before doing that, though, must check if tools care about line 1.
3996
3997 (
3998 dnl /etc/osversion is on SONY NEWS-OS
3999 if test -f /etc/osversion; then dnl SONY NEWS-OS
4000   echo "osversion: `cat /etc/osversion`"
4001 else
4002   echo "uname -a: `uname -a`"
4003 fi
4004 echo ""
4005 echo "$0 $ac_configure_args"
4006 ) > Installation
4007
4008 if test ! -z ${emacs_beta_version} ; then
4009   if test -z "${emacs_is_beta}" ; then
4010         sxemacs_betaname=".${emacs_beta_version}"
4011   else
4012         sxemacs_betaname="-b${emacs_beta_version}"
4013   fi
4014 else
4015   sxemacs_betaname=""
4016 fi
4017
4018 dnl -----------------
4019 dnl Talking LFSL now!
4020 dnl -----------------
4021
4022 dnl -----------------------------------
4023 dnl Now generate config.h and Makefiles
4024 dnl -----------------------------------
4025
4026 dnl This has to be called in order for this variable to get into config.status
4027 AC_SUBST([internal_makefile_list])
4028 # Remove any trailing slashes in these variables.
4029 if test -n "$prefix"; then
4030         prefix=`echo '' "$prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4031 fi
4032 if test -n "$exec_prefix"; then
4033         exec_prefix=`echo '' "$exec_prefix" | sed -e 's:^ ::' -e 's,\([[^/]]\)/*$,\1,'`
4034 fi
4035
4036 make_ifeq="ifeq"
4037 make_endif="endif"
4038 make_else="else"
4039 AC_SUBST([make_ifeq])
4040 AC_SUBST([make_endif])
4041 AC_SUBST([make_else])
4042
4043 dnl Coupla things needed for subst'ing into the sxemacs.desktop file
4044 ABS_PROGNAME=${prefix}/bin/${PROGNAME}
4045 ABS_ETCDIR=${ETCDIR}
4046 SXE_CANONICALISE_PATH([ABS_PROGNAME])
4047 SXE_CANONICALISE_PATH([ABS_ETCDIR])
4048 AC_SUBST([ABS_PROGNAME])
4049 AC_SUBST([ABS_ETCDIR])
4050
4051 AC_CONFIG_FILES([src/sxe-paths.h])
4052 AC_CONFIG_FILES([Makefile])
4053 AC_CONFIG_FILES([lib-src/Makefile])
4054 AC_CONFIG_FILES([src/Makefile])
4055 AC_CONFIG_FILES([src/ui/Makefile])
4056 AC_CONFIG_FILES([src/ui/TTY/Makefile])
4057 AC_CONFIG_FILES([src/ui/lwlib/Makefile])
4058 AC_CONFIG_FILES([src/ui/X11/Makefile])
4059 AC_CONFIG_FILES([src/events/Makefile])
4060 AC_CONFIG_FILES([src/ent/Makefile])
4061 AC_CONFIG_FILES([src/media/Makefile])
4062 AC_CONFIG_FILES([src/mem/Makefile])
4063 AC_CONFIG_FILES([src/database/Makefile])
4064 AC_CONFIG_FILES([src/mule/Makefile])
4065 AC_CONFIG_FILES([src/.gdbinit:src/gdbinit])
4066 AC_CONFIG_FILES([src/.dbxrc:src/dbxrc])
4067 AC_CONFIG_FILES([lisp/Makefile])
4068 AC_CONFIG_FILES([info/Makefile])
4069 AC_CONFIG_FILES([tests/Makefile])
4070 AC_CONFIG_FILES([modules/Makefile])
4071 AC_CONFIG_FILES([etc/Makefile])
4072 AC_CONFIG_FILES([etc/sxemacs.desktop])
4073 AC_CONFIG_FILES([sxemacs.pc])
4074 AC_CONFIG_LINKS([.sxemacs.source.tree:])
4075
4076 AC_OUTPUT
4077 SXE_SUMMARY