Nuke the bitrotten GTK
[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 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 dnl _OG_MULTIARG_ITEM([ent], [int], [int], [native integer arithmetics])
350 dnl _OG_MULTIARG_ITEM([ent], [fpfloat], [fpfloat], [native fixed precision floats])
351 dnl _OG_MULTIARG_ITEM([ent], [indef], [indef], [abstract indefinites])
352 OG_MULTIARG_WITH([ent], [dnl
353         AS_HELP_STRING([--with-ent], [
354                 Compile in support for enhanced number types,
355                 using internal and external libraries.])],
356         [none int fpfloat indef gmp], [int fpfloat indef gmp], [dnl
357         OG_MULTIARG_ITEM([int], [int], [native integer arithmetics])
358         OG_MULTIARG_ITEM([fpfloat], [fpfloat], [native fixed precision floats])
359         OG_MULTIARG_ITEM([indef], [indef], [native abstract indefinites])
360         OG_MULTIARG_ITEM([gmp], [GMP], [GNU multiprecision library])
361         OG_MULTIARG_ITEM([mpfr], [MPFR], [Multiprecision Floats with correct Rounding])
362         OG_MULTIARG_ITEM([mpc], [MPC], [Multiprecision Complex numbers (C/R)])
363         OG_MULTIARG_ITEM([pseug], [pseudoG], [native Gaussian Numbers (Z+Z)])
364         OG_MULTIARG_ITEM([pseuc], [pseudoC], [native Complex Numbers (C/R)])
365         OG_MULTIARG_ITEM([quatern], [Quaternions], [native Quaternions (Z+Z+Z+Z)])
366         OG_MULTIARG_ITEM([ecm], [ECM], [factorisations per Elliptic Curve Method])
367         OG_MULTIARG_MUTEX([mpz], [Arbitrary precision integers], [gmp mp])
368         OG_MULTIARG_MUTEX([complex], [Complex numbers as in C/R], [mpc pseuc])
369 ])
370
371 OG_MULTIARG_WITH([ase], [dnl
372         AS_HELP_STRING([--with-ase], [
373                 Compile in support for algebraic structures based on ENT,
374                 using internal and external libraries.])],
375         [none], [none], [dnl
376         OG_MULTIARG_ITEM([cart], [cartesian], [Cartesian Products of ENT and ASE objects])
377         OG_MULTIARG_ITEM([dig], [digraph], [Directed 2-ary Graphs with Colours])
378         OG_MULTIARG_ITEM([intv], [interval], [Intervals of comparable or normed ENT and ASE objects])
379         OG_MULTIARG_ITEM([metric], [metric], [Metric Spaces])
380         OG_MULTIARG_ITEM([nbhood], [neighbourhood], [Neighbourhoods of comparable or normed ENT and ASE objects])
381         OG_MULTIARG_ITEM([perm], [permutation], [Permutations])
382         OG_MULTIARG_ITEM([resclass], [resclass], [Residue Class Rings and Classes])
383 ])
384
385 OG_MULTIARG_WITH([experimental-features], [dnl
386         AS_HELP_STRING([--with-experimental-features], [
387                 Activate experimental code, that is code which is
388                 considered useful but whose effects in conjunction with
389                 the variety of elisp projects cannot be foreseen.])
390         AS_HELP_STRING([], [
391                 During the beta phase of SXEmacs all experimental code
392                 will be unconditionally enabled.  However, if you plan
393                 to use this SXEmacs in a production environment you
394                 can switch off some portions.])],
395         [all nobdwgc], [ALL but bdwgc], [dnl
396         OG_MULTIARG_ITEM([bdwgc], [bdwgc], [the Boehm-Demers-Weiser collector])
397         OG_MULTIARG_ITEM([compre], [compre], [exhaustive caching of compiled regexps])
398         OG_MULTIARG_ITEM([asyneq], [asyneq], [asynchronous event queues])
399 ])
400         dnl stop that pom stuff
401         dnl OG_MULTIARG_ITEM([pom], [pom], [thread-safe objects])
402
403 OG_ARG_WITH([event-driver],
404         AS_HELP_STRING([--with-event-driver], [
405                 Which event routines to use.
406                 Events control the way how external `sources' are
407                 incorporated into SXEmacs.  Sources hereby are user inputs,
408                 such as key strokes, mouse moves, pedalling, slapping the
409                 monitor, etc.; but there are manifold further sources, such as
410                 process signals, data on a socket, focussing an X window,
411                 lapsing a timeout, and so forth.])
412 AS_HELP_STRING([], [
413                 An event driver can cope with all (or most) of these in a
414                 uniform and abstract way.  SXEmacs can either be driven
415                 using its built-in event handlers, or using one of the
416                 external systems.]),
417         [auto], [Autodetect], [auto built-in libevent liboop glib])
418
419
420 dnl Debugging Options
421 dnl ================
422 OG_OPTION_GROUP(Debugging Options)
423
424 OG_ARG_WITH([debug],
425         AS_HELP_STRING([--with-debug],
426                 [Compile with extra debugging code.
427                 This will turn on: --with-assertions
428                 and --with-memory-usage-stats.]),
429         [yes], [YES for beta; NO for release])
430
431 OG_ARG_WITH([memory-usage-stats],
432         AS_HELP_STRING([--with-memory-usage-stats],
433                 [Compile with support for statistics about memory usage at runtime.]),
434         [yes], [YES for beta])
435
436 OG_MULTIARG_WITH([error-checking], [dnl
437         AS_HELP_STRING([--with-error-checking=TYPE], [
438                 Compile with internal error-checking added.])
439         AS_HELP_STRING([], [
440                 WARNING: Causes noticeable loss of speed!])],
441         [all], [ALL for beta; NONE otherwise], [dnl
442         OG_MULTIARG_ITEM([extents], [extents], [checks on extents])
443         OG_MULTIARG_ITEM([types], [types], [checks on types])
444         OG_MULTIARG_ITEM([gc], [gc], [checks on garbage collection])
445         OG_MULTIARG_ITEM([malloc], [malloc], [checks on memory allocation])
446         OG_MULTIARG_ITEM([byte_code], [byte_code], [checks on byte compiled code])
447         OG_MULTIARG_ITEM([bufpos], [bufpos], [checks on buffer position])
448         OG_MULTIARG_ITEM([glyphs], [glyphs], [checks on glyph data])
449 ])
450
451 OG_ARG_WITH([purify],
452         AS_HELP_STRING([--with-purify],
453                 [Add support for memory debugging using Purify.]),
454         [no], [NO])
455
456 OG_ARG_WITH([quantify],
457         AS_HELP_STRING([--with-quantify],
458                 [Add support for performance debugging using Quantify.]),
459         [no], [NO])
460
461
462 dnl Window System Features
463 dnl ======================
464 OG_OPTION_GROUP(Window System Features)
465
466 OG_ARG_WITH([toolbars],
467         AS_HELP_STRING([--with-toolbars],
468                 [Compile in toolbar support.]),
469         [yes], [YES])
470
471 OG_ARG_WITH([external-widget],
472         AS_HELP_STRING([--with-external-widget],
473                 [Enable the "external widget" interface,
474                 which allows a SXEmacs frame to appear as a widget in
475                 another application.
476                 To date, we haven't heard of anyone who has actually done this.
477                 Consider this EXPERIMENTAL.]),
478         [no], [NO])
479
480 OG_ARG_WITH([menubars],
481         AS_HELP_STRING([--with-menubars=TYPE],
482                 [Type of menubars to use.  The Lucid menubars emulate
483                 Motif (mostly) but are faster.]),
484         [lucid], [Lucid], [lucid no])
485
486 OG_ARG_WITH([scrollbars],
487         AS_HELP_STRING([--with-scrollbars=TYPE],
488                 [Type of scrollbars to use.
489                 *WARNING*  The Motif scrollbars are currently broken.]),
490         [lucid], [Lucid], [lucid motif athena no])
491
492 OG_ARG_WITH([dialogs],
493         AS_HELP_STRING([--with-dialogs=TYPE],
494                 [Type of dialog boxes to use.  Athena dialogs will
495                  be used if Athena can be found.]),
496         [athena], [], [athena motif no])
497
498 OG_ARG_WITH([widgets],
499         AS_HELP_STRING([--with-widgets=TYPE],
500                 [Type of native widgets to use.  Athena widgets will
501                 be used if Athena can be found.]),
502         [athena], [], [athena motif no])
503
504 OG_ARG_WITH([athena],
505         AS_HELP_STRING([--with-athena=TYPE],
506                 [Type of Athena widgets to use.]),
507         [auto], [Autodetect], [auto xaw 3d next 95 xpm no])
508
509 OG_ARG_WITH([xim],
510         AS_HELP_STRING([--with-xim],
511                 [Type of Mule input method to use.]),
512         [auto], [Autodetect], [yes no xlib motif])
513
514 OG_ARG_WITH([wmcommand],
515         AS_HELP_STRING([--with-wmcommand],
516                 [Compile with realized leader window which will
517                 keep the WM_COMMAND property.]),
518         [yes], [YES])
519
520 OG_ARG_WITH([xmu],
521         AS_HELP_STRING([--with-xmu],
522                 [For those unfortunates whose vendors don't ship Xmu.]),
523         [auto], [Autodetect])
524
525 OG_ARG_WITH([xfs],
526         AS_HELP_STRING([--with-xfs],
527                 [Compile with XFontSet support for internationalized
528                 menubar.  Incompatible with `--with-xim=motif'.
529                 `--with-menubars=lucid' (the default) is desirable.]),
530         [no], [NO])
531
532 dnl TTY Options
533 dnl ================
534 OG_OPTION_GROUP(TTY options)
535
536 OG_ARG_WITH([tty],
537         AS_HELP_STRING([--with-tty],
538                 [Add support for ttys.]),
539         [auto], [Autodetect])
540
541 OG_ARG_WITH([ncurses],
542         AS_HELP_STRING([--with-ncurses],
543                 [Use the ncurses library for tty support.]),
544         [auto], [Autodetect])
545
546 OG_ARG_WITH([gpm],
547         AS_HELP_STRING([--with-gpm],
548                 [Compile in GPM mouse support for ttys.]),
549         [auto], [Autodetect])
550
551
552 dnl Database Options
553 dnl ================
554 OG_OPTION_GROUP(Database options)
555
556 OG_MULTIARG_WITH([database], [dnl
557         AS_HELP_STRING([--with-database=TYPE],
558                 [Compile with database support.])],
559         [auto], [Autodetect], [dnl
560         OG_MULTIARG_ITEM([berkdb], [berkdb], [Berkeley DB support])
561         OG_MULTIARG_ITEM([dbm], [dbm], [DBM database support])
562         OG_MULTIARG_ITEM([gdbm], [gdbm], [GNU DBM support])
563 ])
564
565 OG_ARG_WITH([ldap],
566         AS_HELP_STRING([--with-ldap],
567                 [Compile with support for the LDAP protocol.]),
568         [no], [NO])
569
570 OG_ARG_WITH([postgresql],
571         AS_HELP_STRING([--with-postgresql],
572                 [Compile with support for the PostgreSQL RDBMS.]),
573         [yes], [Autodetect])
574
575
576 dnl Multimedia Options
577 dnl ==================
578 OG_OPTION_GROUP(Multimedia options)
579
580 OG_MULTIARG_WITH([image], [dnl
581         AS_HELP_STRING([--with-image=TYPE],
582                 [Compile with image support.])],
583         [auto], [Autodetect all image support], [dnl
584         OG_MULTIARG_ITEM([gif], [GIF], [GIF image format])
585         OG_MULTIARG_ITEM([xpm], [XPM], [X PixMap image format])
586         OG_MULTIARG_ITEM([png], [PNG], [Portable Network Graphic format])
587         OG_MULTIARG_ITEM([jpeg], [JPEG], [jpeg image format])
588         OG_MULTIARG_ITEM([tiff], [TIFF], [TIFF image format])
589         OG_MULTIARG_ITEM([xface], [xface], [base64 encoded xbm])
590 ])
591
592 OG_MULTIARG_WITH([sound], [dnl
593         AS_HELP_STRING([--with-sound=TYPE],
594                 [Compile with sound support.])],
595         [auto], [Autodetect all sound support (except Pulse)], [dnl
596         OG_MULTIARG_ITEM([alsa], [ALSA], [kernel-based linux sound standard])
597         OG_MULTIARG_ITEM([ao], [ao], [generic audio output layer])
598         OG_MULTIARG_ITEM([arts], [aRts], [discontinued realtime synthesizer])
599         OG_MULTIARG_ITEM([esd], [ESD], [Enlightenment Sound Daemon])
600         OG_MULTIARG_ITEM([jack], [Jack], [a low-latency audio server])
601         OG_MULTIARG_ITEM([nas], [NAS], [Network Audio System])
602         OG_MULTIARG_ITEM([oss], [OSS], [Open Sound System])
603 ])
604
605 OG_ARG_WITH([pulseaudio],
606         AS_HELP_STRING([--with-pulseaudio],
607                 [Compile with support for the PulseAudio audio server.
608                 This has been turned off by default because of too many
609                 bugs in recent versions of PA.  Use at your own risk,
610                 YMMV, and all that.]),
611         [no], [NO])
612
613 OG_MULTIARG_WITH([media], [dnl
614         AS_HELP_STRING([--with-media=TYPE],
615                 [Compile with media stream support.])],
616         [auto], [Autodetect all media stream support libraries], [dnl
617         OG_MULTIARG_ITEM([ffmpeg], [FFmpeg], [media streams handled by ffmpeg])
618         OG_MULTIARG_ITEM([internal], [internal], [media streams handled internally])
619         OG_MULTIARG_ITEM([mad], [Mad], [media streams handled by mad])
620         OG_MULTIARG_ITEM([sndfile], [sndfile], [media streams handled by sndfile])
621         OG_MULTIARG_ITEM([sox], [SoX], [media streams handled by sox])
622         OG_MULTIARG_ITEM([magic], [magic], [file/libmagic support])
623 ])
624
625
626 dnl Cryptography Options
627 dnl ====================
628 OG_OPTION_GROUP(Cryptography options)
629
630 OG_ARG_WITH([openssl],
631         AS_HELP_STRING([--with-openssl],
632                 [Compile in experimental support for 
633                 OpenSSL libcrypto and libssl.]),
634         [yes], [YES])
635
636 OG_ARG_WITH([gnutls],
637         AS_HELP_STRING([--with-gnutls],
638                 [Compile in experimental support for 
639                 GnuTLS transport security.]),
640         [no], [NO])
641
642
643 dnl Networking Options
644 dnl ==================
645 OG_OPTION_GROUP(Networking options)
646
647 OG_ARG_WITH([dnet],
648         AS_HELP_STRING([--with-dnet],
649                 [Compile with support for DECnet.]),
650         [no], [NO])
651
652 OG_ARG_WITH([socks],
653         AS_HELP_STRING([--with-socks],
654                 [Compile with support for SOCKS (an Internet proxy).]),
655         [auto], [Autodetect])
656
657 OG_ARG_WITH([ipv6-cname],
658         AS_HELP_STRING([--with-ipv6-cname],
659                 [Try IPv6 information first when canonicalizing host names.
660                 This option has no effect unless system supports
661                 getaddrinfo(3) and getnameinfo(3).]),
662         [no], [NO])
663
664 OG_ARG_WITH([pop],
665         AS_HELP_STRING([--with-pop],
666                 [Support POP for mail retrieval.]),
667         [no], [NO])
668
669 OG_ARG_WITH([kerberos],
670         AS_HELP_STRING([--with-kerberos],
671                 [Support Kerberos-authenticated POP.]),
672         [no], [NO])
673
674 OG_ARG_WITH([hesiod],
675         AS_HELP_STRING([--with-hesiod],
676                 [Support Hesiod to get the POP server host.]),
677         [no], [NO])
678
679
680 dnl File-related Options
681 dnl ====================
682 OG_OPTION_GROUP(File-related options)
683
684 OG_ARG_WITH([clash-detection],
685         AS_HELP_STRING([--with-clash-detection],
686                 [Use lock files to detect multiple edits
687                 of the same file.]),
688         [no], [NO])
689
690 OG_ARG_WITH([mail-locking],
691         AS_HELP_STRING([--with-mail-locking=TYPE],
692                 [Specify the locking to be used by movemail to prevent
693                 concurrent updates of mail spool files. Valid types
694                 are `lockf'  `flock'  `file'  `locking'  `pop' or `mmdf'.]),
695         [auto], [Autodetect], [lockf flock file locking mmdf pop no])
696
697
698 dnl Internationalisation Options
699 dnl ============================
700 OG_OPTION_GROUP(Internationalisation options)
701
702 OG_ARG_WITH([mule],
703         AS_HELP_STRING([--with-mule],
704                 [Compile with Mule (MUlti-Lingual Emacs) support
705                 needed to support non-Latin-1 (including Asian)
706                 languages.]),
707         [yes], [YES])
708
709 OG_ARG_WITH([canna],
710         AS_HELP_STRING([--with-canna],
711                 [Compile with support for Canna (a Japanese input method
712                 used in conjunction with Mule support).]),
713         [auto], [Autodetect when Mule is enabled])
714
715 OG_ARG_WITH([wnn],
716         AS_HELP_STRING([--with-wnn],
717                 [Compile with support for Wnn (a multi-language input
718                 method used in conjunction with Mule support).]),
719         [auto], [Autodetect when Mule is enabled])
720
721 OG_ARG_WITH([wnn6],
722         AS_HELP_STRING([--with-wnn6],
723                 [Compile with support for the commercial package Wnn6.]),
724         [auto], [Autodetect when Mule is enabled])
725
726
727
728 dnl dnl Other Options
729 dnl dnl =============
730 dnl OG_OPTION_GROUP(Other options)
731 dnl 
732
733 ## -------------------------------------------------------------------------
734 ## Check for users who regularly forget about running autoconf
735 ## -------------------------------------------------------------------------
736 if test -f $0.ac -a $0.ac -nt $0; then
737         AC_MSG_ERROR([What are you doing? RUN autoreconf NOW!!!])
738 fi
739
740 #
741 # Turn off core generation. We are already verifying the program fails, no need 
742 # poluting the workspace. Of course if you are a SXEmacs developer you may want
743 # to comemnt this on occasion :-)
744 ulimit -c 0
745
746 ## initialise our nestable msg funs
747 SXE_INIT_MSG_LEVEL
748
749 dnl Small snippet to make echo -n work on solaris
750 ECHO_N= ECHO_C=
751 case `echo -n x` in
752 -n*)
753         case `echo 'x\c'` in
754         *c*)
755                 ;;
756         *)
757                 ECHO_C='\c'
758                 ;;
759         esac
760         ;;
761 *)
762         ECHO_N='-n'
763         ;;
764 esac
765
766
767 echo
768 echo "Preparing the build chain"
769 echo "========================="
770
771 ## We should brag about ourselves, no?
772 AC_DEFINE([XEMACS], [1], [Pretend to be an XEmacs])
773 AC_DEFINE([SXEMACS], [1], [Why not? It's the truth!])
774
775 dnl -------------------------------------------------------------------------
776 dnl Command line argument processing.
777 dnl -------------------------------------------------------------------------
778 dnl Check for bogus options
779 dnl -------------------------------------------------------------------------
780 SXE_CHECK_COMMAND_LINE
781
782 AM_INIT_AUTOMAKE([foreign -Wall])
783 SXE_CHECK_BUILDCHAIN
784 AC_SUBST(EGREP)
785
786 progname=$0
787 progbasename=$(basename $progname)
788 progdirname=$(dirname $progname)
789
790 ## Build Options
791 ## =============
792
793 echo
794 echo "Build and System Specific Options"
795 echo "================================="
796
797 SXE_EXPLORE_BUILD_ENVIRONMENT
798
799 dnl ----------------------------------------
800 dnl Find out which version of SXEmacs this is
801 dnl ----------------------------------------
802 AC_CHECK_PROG([have_git], [git], [yes], [no])
803 AC_MSG_CHECKING([for SXEmacs version])
804 AC_MSG_RESULT([SXEmacs SXEM4CS_VERSION])
805 dnl Must do the following first to determine verbosity for AC_DEFINE
806 if test -n "[]SXEM4CS_BETA_P[]"; then
807         beta=yes
808 else
809         beta=no
810 fi
811 : "${extra_verbose=$beta}"
812
813 AC_MSG_CHECKING([for SXEmacs patchlevel])
814 CURDIR=$(pwd)
815 cd "$sxe_srcdir"
816 if test "$have_git" = "yes"; then
817         sxemacs_git_version="$(git describe)"
818 fi
819 if test -z "$sxemacs_git_version" ; then
820         sxemacs_git_version="[]SXEM4CS_GIT_VERSION[]"
821 fi
822 AC_MSG_RESULT([$sxemacs_git_version])
823 version="$sxemacs_git_version"
824 cd "$CURDIR"
825 main_version="$sxemacs_git_version"
826 AC_DEFINE_UNQUOTED([EMACS_MAJOR_VERSION], [SXEM4CS_MAJOR_VERSION], [Description here!])
827 AC_DEFINE_UNQUOTED([EMACS_MINOR_VERSION], [SXEM4CS_MINOR_VERSION], [Description here!])
828 old_version=[]SXEM4CS_VERSION[]
829 if test -n "[]SXEM4CS_BETA_VERSION[]"; then
830         AC_MSG_CHECKING([if we are a beta version])
831         if test "$beta" = "yes"; then
832                 AC_MSG_RESULT([yes])
833                 AC_DEFINE_UNQUOTED([EMACS_BETA_VERSION], [SXEM4CS_BETA_VERSION],
834                         [Description here!])
835         else
836                 AC_MSG_RESULT([no])
837                 AC_DEFINE_UNQUOTED([EMACS_PATCH_LEVEL], [SXEM4CS_BETA_VERSION],
838                         [Description here!])
839         fi
840 fi
841 AC_DEFINE_UNQUOTED([SXEMACS_CODENAME], ["[]SXEM4CS_CODENAME[]"], [Description here!])
842 AC_DEFINE_UNQUOTED([EMACS_VERSION], ["$version"], [Description here!])
843 AC_DEFINE_UNQUOTED([SXEMACS_GIT_VERSION], ["$sxemacs_git_version"],
844         [Description here!])
845
846 PROGNAME=sxemacs
847
848 AC_DEFINE_UNQUOTED([EMACS_PROGNAME], ["$PROGNAME"], [Description here!])
849
850 ## build stuff in lib-src unconditionally
851 SXE_APPEND([lib-src], [MAKE_SUBDIR])
852 SXE_APPEND([lib-src], [INSTALL_ARCH_DEP_SUBDIR])
853
854 ## C compiler build chain
855 AC_USE_SYSTEM_EXTENSIONS
856 AC_LANG([C])
857 AS_MESSAGE([Let's look for the entire C build chain])
858 SXE_CHECK_CC
859 SXE_CHECK_CFLAGS
860
861 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
862
863 ## check machine chars
864 AS_MESSAGE([Let's have a detailed glance at your machine])
865 SXE_PROC_CPUID
866 SXE_PROC_VENDORID
867 SXE_NPROCESSORS
868 SXE_CHECK_PROC_GOODNESS
869
870
871 ## Debugging Options
872 ## =================
873 ## echo
874 ## echo "Debugging Options"
875 ## echo "================="
876
877 dnl ----------------------------------
878 dnl Error checking and debugging flags
879 dnl ----------------------------------
880 dnl Error checking default to "yes" in beta versions, to "no" in releases.
881 dnl Same goes for --enable-debug and --extra-verbosity.
882 if test "$with_error_checking_extents" = yes; then
883         have_error_checking_extents="yes"
884         AC_DEFINE([ERROR_CHECK_EXTENTS], [1], [Description here!])
885         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
886 fi
887 if test "$with_error_checking_types" = yes; then
888         have_error_checking_types="yes"
889         AC_DEFINE([ERROR_CHECK_TYPECHECK], [1], [Description here!])
890         AC_DEFINE_UNQUOTED([type_checking_assert(assertion)],
891                 [assert (assertion)], [
892                 Make sure that all X... macros are dereferencing the correct type,
893                 and that all XSET... macros (as much as possible) are setting the
894                 correct type of structure.  Highly recommended for all
895                 development work.])
896         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
897 else
898         AC_DEFINE_UNQUOTED([type_checking_assert(assertion)], [], [])
899 fi
900 if test "$with_error_checking_bufpos" = yes; then
901         have_error_checking_bufpos="yes"
902         AC_DEFINE([ERROR_CHECK_BUFPOS], [1], [Description here!])
903         AC_DEFINE_UNQUOTED([bufpos_checking_assert(assertion)],
904                 [assert (assertion)], [dnl
905                 Make sure valid buffer positions are passed to BUF_* macros])
906         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
907 else
908         AC_DEFINE_UNQUOTED([bufpos_checking_assert(assertion)], [], [])
909 fi
910 if test "$with_error_checking_gc" = yes; then
911         have_error_checking_gc="yes"
912         AC_DEFINE([ERROR_CHECK_GC], [1], [Description here!])
913         AC_DEFINE_UNQUOTED([gc_checking_assert(assertion)],
914                 [assert (assertion)], [dnl
915                 Attempt to catch bugs related to garbage collection
916                 (e.g. not GCPRO'ing)])
917         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
918 else
919         AC_DEFINE_UNQUOTED([gc_checking_assert(assertion)], [], [])
920 fi
921 if test "$with_error_checking_malloc" = yes; then
922         have_error_checking_malloc="yes"
923         AC_DEFINE([ERROR_CHECK_MALLOC], [1], [Description here!])
924         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
925 fi
926 if test "$with_error_checking_byte_code"  = yes; then
927         have_error_checking_byte_code="yes"
928         AC_DEFINE([ERROR_CHECK_BYTE_CODE], [1], [Description here!])
929         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
930 fi
931 if test "$with_error_checking_glyphs" = yes; then
932         have_error_checking_glyphs="yes"
933         AC_DEFINE([ERROR_CHECK_GLYPHS], [1], [Description here!])
934         AC_DEFINE([USE_ASSERTIONS], [1], [Description here!])
935 fi
936
937 dnl enable_debug=yes must be set when error checking is present.  This should be
938 dnl fixed up.
939 dnl with_debug implies other options
940 if test "${with_debug:=$beta}" = "yes"; then
941         with_memory_usage_stats=yes
942         SXE_ADD_CRUFT_OBJS([debug.o])
943         SXE_ADD_CRUFT_OBJS([tests.o])
944         AC_DEFINE([DEBUG_SXEMACS], [1], [Description here!])
945 fi
946 if test "$with_memory_usage_stats" = "yes"; then
947         AC_DEFINE([MEMORY_USAGE_STATS], [1], [Description here!])
948 fi
949
950
951
952 dnl --------------------------------------------------------------
953 dnl $opsys detection complete; defaults depending on $opsys follow
954 dnl --------------------------------------------------------------
955
956
957 dnl --------------------------------------------------------------
958 dnl WooHoo! pdump is ON always and everywhere! --SY.
959 dnl --------------------------------------------------------------
960 with_pdump=yes
961
962 if test "$with_dynamic" != "no"; then
963         case "$opsys" in
964         hpux* | sunos4* )
965                 with_dynamic=no
966                 ;;
967         *)
968                 with_dynamic=yes
969                 ;;
970         esac
971 fi
972 if test "$with_dynamic" = "yes"; then
973         case "$opsys" in
974         hpux* | sunos4* | sco5 )
975                 opsys="${opsys}-shr"
976                 ;;
977         decosf* )
978                 ld_call_shared="-call_shared"
979                 ;;
980         darwin* )
981                 AC_DEFINE([DLSYM_NEEDS_UNDERSCORE], [1], [Description here!])
982                 if test "x$have_ld_no_pie" != "x"; then
983                         SXE_PREPEND_LINKER_FLAG([-no_pie], [ld_switch_site])
984                 fi
985                 ;;
986         esac
987 else dnl "$with_dynamic" = "no"
988         case "$opsys" in
989         sol2 )
990                 echo "Static linking is not supported on Solaris 2."
991                 echo "Rerun configure without specifying --without-dynamic."
992                 exit 1
993                 ;;
994         linux )
995                 ld_call_shared="-Bstatic"
996                 ;;
997         decosf* )
998                 ld_call_shared="-non_shared"
999                 ;;
1000         darwin* )
1001                 AC_DEFINE([DLSYM_NEEDS_UNDERSCORE], [1], [Description here!])
1002                 if test "x$have_ld_no_pie" != "x"; then
1003                         SXE_PREPEND_LINKER_FLAG([-no_pie], [ld_switch_site])
1004                 fi
1005                 ;;
1006         esac
1007 fi
1008
1009 dnl Tools configuration
1010 case "$opsys" in
1011 aix* )
1012         NON_GNU_CC=xlc
1013         ;;      dnl Use xlc by default on AIX
1014 darwin )
1015         RANLIB="ranlib -c"
1016         ;;  dnl Avoid link error in lwlib-config.c
1017         ## this needs rework I think because RANLIB is provided by LT_INIT anyway
1018 esac
1019
1020 stack_trace_eye_catcher=\
1021 `echo ${PROGNAME}_${version}_${ac_cv_build} | sed 'y!@/.-!____!'`
1022 AC_DEFINE_UNQUOTED([STACK_TRACE_EYE_CATCHER], [$stack_trace_eye_catcher],
1023         [Just a very looong string to make traces more readable.])
1024
1025 dnl --------------------------------------------------
1026 dnl Determine the compiler, set up for feature testing
1027 dnl --------------------------------------------------
1028
1029 if test "$with_clash_detection" != "no"; then
1030         AC_DEFINE([CLASH_DETECTION], [1], [Description here!])
1031         SXE_ADD_CRUFT_OBJS([filelock.o])
1032 fi
1033
1034
1035 dnl what exactly do we determine here? and where is it used?
1036 dnl dnl Determine GCC version.
1037 dnl if test "$GCC" = "yes"; then
1038 dnl     AC_RUN_IFELSE([AC_LANG_SOURCE([[
1039 dnl int main ()
1040 dnl {
1041 dnl #if __GNUC__ >= 3
1042 dnl     return 11;
1043 dnl #else
1044 dnl     return 0;
1045 dnl #endif
1046 dnl }]])], [:], [dnl
1047 dnl case "$?" in
1048 dnl 11)
1049 dnl     echo "You appear to be using GCC version 3 or above."
1050 dnl     __GCC3=yes
1051 dnl     ;;
1052 dnl esac], [__GCC3=no])
1053 dnl fi
1054
1055 dnl We don't do AC_PROG_CC for SXEMACS_CC; if we can't trust these people....
1056 : ${SXEMACS_CC:="$CC"}
1057
1058 dnl Figure out what C preprocessor to use.
1059
1060 dnl On Sun systems, people sometimes set up the variable CPP
1061 dnl with a value that is a directory, not an executable at all.
1062 dnl Detect that case, and ignore that value.
1063 test -n "$CPP" -a -d "$CPP" && CPP=
1064
1065 test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
1066
1067 dnl --------------------------------------------------------------------
1068 dnl Compiler feature macros
1069 dnl --------------------------------------------------------------------
1070
1071
1072 dnl --------------------------------------------------------------------
1073 dnl Extract some information from the operating system and machine files
1074 dnl --------------------------------------------------------------------
1075
1076 echo "Extracting information from the machine- and system-dependent headers..."
1077
1078 SXE_CHECK_MACHARCH
1079 SXE_EXTRACT_MACHARCH_INFO
1080
1081 dnl s&m files shouldn't be required to define anything, or even to exist.
1082 dnl So we default SYSTEM_TYPE to the obvious documented standard, `uname -s`,
1083 dnl appropriately emacsulated.
1084 if test -z "$system_type"; then
1085         AC_DEFINE_UNQUOTED([SYSTEM_TYPE],
1086                 ["`uname -s | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"],
1087                 [Description here!])
1088 fi
1089
1090 dnl If the s&m files don't define a system-specific dumper, simply use pdump.
1091 dnl Sometime in the future, we'll remove all definitions of UNEXEC
1092 dnl from all the s&m files.
1093 test -z "$unexec" && with_pdump=yes
1094
1095 if test "$with_pdump" = "yes"; then
1096         ordinary_link="yes"
1097         ld="${ordinary_ld}"
1098         start_files=
1099         libs_standard=
1100         unexec=
1101         lib_gcc=
1102 fi
1103
1104 dnl dnl For debugging...
1105 dnl SXE_PRINT_VAR([libs_machine libs_system libs_termcap libs_standard
1106 dnl     objects_machine objects_system c_switch_machine c_switch_system
1107 dnl     ld_switch_machine ld_switch_system unexec ld_switch_shared
1108 dnl     ld lib_gcc ld_text_start_addr start_files ordinary_link
1109 dnl     have_terminfo mail_use_flock mail_use_lockf]) && echo ""
1110
1111 dnl bitch at build attempt on win32 machines
1112 case "$opsys" in mingw* | cygwin*)
1113         SXE_DIE("Invalid operation system. Cannot build on win32 machines.")
1114 esac
1115
1116 dnl Non-ordinary link usually requires -lc
1117 test "$ordinary_link" = "no" -a -z "$libs_standard" && libs_standard="-lc"
1118
1119 ## perform compiler specific things
1120 SXE_DO_CC_HACKS
1121 ## machine specific extensions
1122 SXE_CHECK_SIMD_EXTENSIONS
1123
1124 ## some linker flags that might come in handy
1125 SXE_CHECK_LDFLAGS
1126
1127 ## suffices to be defined late, for instance here
1128 SXE_CHECK_PARSER_LEXER
1129
1130 if test "$with_pdump" != "yes"; then
1131         ## GNU ld now defaults to combreloc, which screws up unexec,
1132         ## but not pdump.
1133         ## Note that it's OK if the GNU style long option causes
1134         ## non-GNU ld to barf a usage message, that's often good
1135         ## enough.  Please report it, though.
1136         ## #### Should make this Solaris-friendly.
1137         ## Link with -z nocombreloc for now.
1138         SXE_CHECK_LD_ZFLAG([nocombreloc])
1139         if test "$sxe_cv_ld__z_nocombreloc" = "yes"; then
1140                 SXE_PREPEND_LINKER_FLAG([-z nocombreloc], [ld_switch_site])
1141         fi
1142 fi
1143
1144 dnl Inform compiler that certain flags are meant for the linker
1145 SXE_PROTECT_LINKER_FLAGS(ld_switch_system)
1146 SXE_PROTECT_LINKER_FLAGS(ld_switch_machine)
1147 SXE_PROTECT_LINKER_FLAGS(ld_switch_site)
1148 SXE_PROTECT_LINKER_FLAGS(LDFLAGS)
1149 SXE_PROTECT_LINKER_FLAGS(ld_call_shared)
1150
1151 dnl Add s&m-determined objects to link line
1152 test -n "$objects_machine" && SXE_ADD_CORE_OBJS($objects_machine)
1153 test -n "$objects_system"  && SXE_ADD_CORE_OBJS($objects_system)
1154 test "$with_pdump" = "yes" && SXE_ADD_CORE_OBJS(dumper.o)
1155
1156
1157 dnl Feed s&m crud to src/Makefile
1158
1159 dnl Linux/powerpc needs the following magic for some reason
1160 dnl [Not needed with YellowDog 2.3 and causes link problems with YellowDog 3.0,
1161 dnl the two most popular PowerPC distributions.]
1162 dnl test "$machine$opsys" = "powerpclinux" && start_flags="-T $sxe_srcdir/src/ppc.ldscript"
1163
1164 AC_LANG(C)
1165 if test "$unexec" = "unexaix.o"; then
1166 dnl AIX needs various hacks to make static linking work.
1167   if   test "$with_dynamic" = "no"; then
1168   start_flags="-Wl,-bnso,-bnodelcsect"
1169   test "$GCC" = "yes" && start_flags="-B/bin/ ${start_flags}"
1170   for f in "/lib/syscalls.exp" "/lib/threads.exp"; do
1171     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; fi
1172   done
1173   for f in "/usr/lpp/X11/bin/smt.exp" "/usr/bin/X11/smt.exp"; do
1174     if test -r "$f"; then start_flags="${start_flags},-bI:${f}"; break; fi
1175   done
1176   AC_CHECK_LIB([c], [terminateAndUnload], [SXE_APPEND(-lC, libs_system)])
1177   fi
1178 elif test -n "$ld_text_start_addr"; then
1179   start_flags="-T $ld_text_start_addr -e __start"
1180 fi
1181 AC_SUBST(start_flags)
1182
1183 AC_SUBST(ld_switch_shared)
1184 AC_SUBST(start_files)
1185 if test "$ordinary_link" = "no" -a "$GCC" = "yes"; then
1186         if test -z "$linker"; then
1187                 linker='$(CC) -nostdlib'
1188                 SXE_APPEND([-nostdlib], [start_flags])
1189         fi
1190         test -z "$lib_gcc" && lib_gcc='`$(CC) -print-libgcc-file-name`'
1191 fi
1192 test "$GCC" != "yes" && lib_gcc=
1193 AC_SUBST(ld)
1194 AC_SUBST(lib_gcc)
1195
1196
1197
1198 ## ---------------------------------------------------------------
1199 ## Add site and system specific flags to compile and link commands
1200 ## ---------------------------------------------------------------
1201
1202 ## compute those site prefixes
1203 SXE_COMPUTE_SITE_PREFIXES
1204 ## compute a LD_RUN_PATH
1205 SXE_COMPUTE_LD_RUN_PATH
1206
1207
1208 ## some header checks
1209 SXE_CHECK_BASIC_HEADERS
1210 ## the very basic c types
1211 SXE_CHECK_BASIC_TYPES
1212
1213 ## for signalling
1214 SXE_CHECK_SIGNALS
1215
1216 AC_CHECK_MEMBERS([struct stat.st_rdev])
1217 AC_CHECK_TYPES([ptrdiff_t])
1218
1219 ## check whether intptr_t is definied in sys/types.h
1220 SXE_CHECK_INTPTR_T
1221
1222 dnl -lm is required for floating point support, among other things
1223 AC_CHECK_FUNC([sin], [], [AC_CHECK_LIB([m], [sin])])
1224
1225
1226 dnl check for Make feature
1227 AC_PROG_MAKE_SET
1228
1229
1230 dnl check for long file names
1231 AC_SYS_LONG_FILE_NAMES
1232 AC_SYS_LARGEFILE
1233 AC_SYS_INTERPRETER
1234 AC_SYS_POSIX_TERMIOS
1235
1236 AC_FUNC_MALLOC
1237 AC_FUNC_MKTIME
1238
1239 dnl See if mkstemp is available
1240 AC_CHECK_FUNCS([mkstemp])
1241
1242 SXE_CHECK_FILE_LOCK
1243
1244 case "$opsys" in decosf*)
1245         AC_CHECK_LIB([pthreads], [cma_open])
1246         if test "$ac_cv_lib_pthreads_cma_open" = "yes"; then
1247                 c_switch_site="$c_switch_site -threads"
1248         fi
1249         ;;
1250 esac
1251
1252
1253 dnl ----------------------------------------------------------------
1254 dnl Miscellaneous flags
1255 dnl ----------------------------------------------------------------
1256
1257 AC_MSG_CHECKING(whether the -xildoff compiler flag is required)
1258 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
1259   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
1260     then AC_MSG_RESULT(no);
1261     else AC_MSG_RESULT(yes); SXE_APPEND_UNDUP(-xildoff, ld_switch_site)
1262   fi
1263   else AC_MSG_RESULT(no)
1264 fi
1265
1266 dnl Link with "-z ignore" on Solaris if supported
1267 if test "$opsys" = "sol2"; then
1268   if test "$os_release" -ge 506; then
1269     AC_MSG_CHECKING(for "-z ignore" linker flag)
1270     case "`ld -h 2>&1`" in
1271       *-z\ ignore\|record* ) AC_MSG_RESULT(yes)
1272         SXE_PREPEND_UNDUP(-z ignore, ld_switch_site) ;;
1273       *) AC_MSG_RESULT(no) ;;
1274     esac
1275   fi
1276 fi
1277
1278 dnl ----------------------------------------------------------------
1279 dnl Check for Unixoid pty/process support.
1280 dnl ----------------------------------------------------------------
1281
1282 dnl There is no "standard" pty allocation method.  Every system is different.
1283 dnl  getpt()  is the preferred pty allocation method on glibc systems.
1284 dnl _getpty() is the preferred pty allocation method on SGI systems.
1285 dnl grantpt(), unlockpt(), ptsname() are defined by Unix98.
1286 AC_CHECK_FUNCS([getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp])
1287
1288 dnl openpty() is the preferred pty allocation method on BSD and Tru64 systems.
1289 dnl openpty() might be declared in:
1290 dnl - pty.h (Tru64 or Linux)
1291 dnl - libutil.h (FreeBSD)
1292 dnl - util.h (NetBSD)
1293 AC_CHECK_FUNC(openpty, have_openpty=yes, [
1294   AC_CHECK_LIB(util, openpty, have_openpty=yes need_libutil=yes)])
1295 if test "$have_openpty" = "yes"; then
1296   AC_DEFINE([HAVE_OPENPTY], [1], [Description here!])
1297   AC_CHECK_HEADERS(libutil.h util.h, break)
1298   test "$need_libutil" = "yes" && SXE_APPEND(-lutil, libs_system)
1299 fi
1300
1301 dnl Check for system-specific pty header files
1302 dnl Often the TIOCSIG* symbols are hiding there.
1303 case "$opsys" in
1304   dnl HPUX pty.h #defines TRUE and FALSE, so just use ptyio.h there.
1305   hpux*) AC_CHECK_HEADERS(sys/ptyio.h) ;;
1306   *) AC_CHECK_HEADERS(pty.h)
1307      test "$ac_cv_header_pty_h" = "no" && AC_CHECK_HEADERS(sys/pty.h)
1308      ;;
1309 esac
1310
1311 dnl Check for STREAM support functions.
1312 dnl Confusingly, "str" means both "string" and "SysV Streams".
1313 AC_CHECK_HEADERS(stropts.h)
1314 if test "$ac_cv_header_stropts_h" = "yes"; then
1315   AC_CHECK_FUNCS(isastream)
1316   AC_CHECK_HEADERS(strtio.h) dnl TIOCSIGNAL
1317 fi
1318
1319 dnl Check whether the system provides getloadavg().
1320 AC_CHECK_FUNCS(getloadavg)
1321
1322 if test "$ac_cv_func_getloadavg" = "yes"; then
1323   dnl Solaris 8 declares getloadavg() in <sys/loadavg.h>.
1324   dnl glibc 2.2 declares getloadavg() in <stdlib.h>...
1325   dnl   ...if we #define _GNU_SOURCE, which we do.
1326   AC_CHECK_HEADERS(sys/loadavg.h)
1327 else
1328   dnl We define our own getloadavg() using lower level functions.
1329   SXE_ADD_CRUFT_OBJS([getloadavg.o])
1330
1331   dnl Used by getloadavg() - does not require root priveleges
1332   AC_CHECK_LIB(kstat, kstat_open)
1333   AC_CHECK_HEADERS(kstat.h)
1334
1335   dnl Another way to get the load average
1336   AC_CHECK_LIB(kvm, kvm_read)
1337 fi
1338
1339 dnl If netdb.h does not declare h_errno, we must declare it by hand.
1340 AC_MSG_CHECKING(whether netdb declares h_errno)
1341 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
1342   [[return h_errno;]])],
1343   [AC_MSG_RESULT(yes)
1344    AC_DEFINE([HAVE_H_ERRNO], [1], [Description here!])],
1345   [AC_MSG_RESULT(no)])
1346
1347 AC_MSG_CHECKING([for sigsetjmp])
1348 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1349 #include <setjmp.h>
1350         ]], [[
1351 sigjmp_buf bar;
1352 sigsetjmp (bar, 0);
1353         ]])],
1354         [sxe_cv_c_func_sigsetjmp="yes"],
1355         [sxe_cv_c_func_sigsetjmp="no"])
1356 AC_MSG_RESULT([$sxe_cv_c_func_sigsetjmp])
1357 if test "$sxe_cv_c_func_sigsetjmp" = "yes"; then
1358         AC_DEFINE([HAVE_SIGSETJMP], [1], [Description here!])
1359         AC_DEFINE_UNQUOTED([SETJMP(x)], [sigsetjmp (x, 0)], [dnl
1360                 We want to avoid saving the signal mask if possible, because
1361                 that necessitates a system call.])
1362         AC_DEFINE_UNQUOTED([LONGJMP(x, y)], [siglongjmp(x, y)], [dnl
1363                 Description here!])
1364         AC_DEFINE_UNQUOTED([JMP_BUF], [sigjmp_buf], [dnl
1365                 Description here!])
1366 else
1367         AC_DEFINE_UNQUOTED([SETJMP(x)], [setjmp(x)], [dnl
1368                 We want to avoid saving the signal mask if possible, because
1369                 that necessitates a system call.])
1370         AC_DEFINE_UNQUOTED([LONGJMP(x, y)], [longjmp(x, y)], [Description here!])
1371         AC_DEFINE_UNQUOTED([JMP_BUF], [jmp_buf], [Description here!])
1372 fi
1373
1374
1375 AC_MSG_CHECKING(whether localtime caches TZ)
1376 AC_CACHE_VAL(emacs_cv_localtime_cache,
1377 [if test "$ac_cv_func_tzset" = "yes"; then
1378 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <time.h>
1379 #if STDC_HEADERS
1380 # include <stdlib.h>
1381 #endif
1382 extern char **environ;
1383 unset_TZ ()
1384 {
1385   char **from, **to;
1386   for (to = from = environ; (*to = *from); from++)
1387     if (! (to[[0]][[0]] == 'T' && to[[0]][[1]] == 'Z' && to[[0]][[2]] == '='))
1388       to++;
1389 }
1390 char TZ_GMT0[[]] = "TZ=GMT0";
1391 char TZ_PST8[[]] = "TZ=PST8";
1392 main()
1393 {
1394   time_t now = time ((time_t *) 0);
1395   int hour_GMT0, hour_unset;
1396   if (putenv (TZ_GMT0) != 0)
1397     exit (1);
1398   hour_GMT0 = localtime (&now)->tm_hour;
1399   unset_TZ ();
1400   hour_unset = localtime (&now)->tm_hour;
1401   if (putenv (TZ_PST8) != 0)
1402     exit (1);
1403   if (localtime (&now)->tm_hour == hour_GMT0)
1404     exit (1);
1405   unset_TZ ();
1406   if (localtime (&now)->tm_hour != hour_unset)
1407     exit (1);
1408   exit (0);
1409 }]])], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
1410 [# If we have tzset, assume the worst when cross-compiling.
1411 emacs_cv_localtime_cache=yes])
1412 else
1413         # If we lack tzset, report that localtime does not cache TZ,
1414         # since we can't invalidate the cache if we don't have tzset.
1415         emacs_cv_localtime_cache=no
1416 fi],[:])dnl
1417 AC_MSG_RESULT($emacs_cv_localtime_cache)
1418 if test $emacs_cv_localtime_cache = yes; then
1419   AC_DEFINE([LOCALTIME_CACHE], [1], [Description here!])
1420 fi
1421
1422
1423 need_alloca_c=no
1424 dnl HP-UX has a working alloca in libPW.
1425 dnl case "${GCC}${opsys}" in hpux* )
1426 dnl  AC_CHECK_FUNC(alloca, [:], [AC_CHECK_LIB(PW, alloca)])
1427 dnl esac
1428
1429 dnl AC_FUNC_ALLOCA doesn't know about DEC C's #pragma intrinsic(alloca)
1430 if test "$__DECC" != "yes"; then
1431         AC_FUNC_ALLOCA
1432         if test -n "$ALLOCA"; then
1433                 SXE_ADD_CRUFT_OBJS([$ALLOCA])
1434                 need_alloca_c=yes
1435         fi
1436 fi
1437
1438 AC_MSG_CHECKING(for working alloca in function calls)
1439 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1440 #if defined (__GNUC__)
1441 #define alloca __builtin_alloca
1442 #elif defined (__DECC)
1443 #include <alloca.h>
1444 #pragma intrinsic(alloca)
1445 #elif defined (HAVE_ALLOCA_H)
1446 #include <alloca.h>
1447 #elif defined (_AIX)
1448 #pragma alloca
1449 #elif ! defined (alloca)
1450 #ifdef C_ALLOCA
1451 #define alloca xemacs_c_alloca
1452 #else
1453 void *alloca ();
1454 #endif /* C_ALLOCA */
1455 #endif /* !defined (alloca) */
1456
1457 void
1458 f1 (double a, void *ptr, int b)
1459 {
1460   unsigned char *ptr2 = (unsigned char *) ptr;
1461   if (ptr2[[0]] != 0xBF || ptr2[[1]] != 0xBF || ptr2[[3000]] != 0xBF)
1462     exit (1);
1463   if (a != 3.1415 || b != -5490)
1464     exit (1);
1465 }
1466
1467 int
1468 f2 (short c, void *ptr, long e)
1469 {
1470   unsigned char *ptr2 = (unsigned char *) ptr;
1471   if (ptr2[[0]] != 0xFB || ptr2[[1]] != 0xFB || ptr2[[1000]] != 0xFB)
1472     exit (1);
1473   if (c != 665 || e != 776776776)
1474     exit (1);
1475   f1 (3.1415, memset (alloca (3001), 0xBF, 3001), -5490);
1476   return 42;
1477 }
1478
1479 int
1480 main (int argc, char *argv[])
1481 {
1482   if (f2 (665, memset (alloca (1001), 0xFB, 1001), 776776776) != 42)
1483     return 1;
1484   return 0;
1485 }
1486 ]])], working_alloca_in_function_calls=yes, working_alloca_in_function_calls=no,
1487 working_alloca_in_function_calls=no)
1488 AC_MSG_RESULT($working_alloca_in_function_calls)
1489 test "$working_alloca_in_function_calls" != "yes" && \
1490   AC_DEFINE([BROKEN_ALLOCA_IN_FUNCTION_CALLS], [1], [Description here!])
1491
1492 AM_CONDITIONAL([NEED_ALLOCA_C], [
1493         test "$working_alloca_in_function_calls" = "yes" && \
1494         test "$need_alloca_c" = "yes"])
1495
1496 dnl Check whether strcoll exists and works correctly. (This does more
1497 dnl than just check for its existence.) If so, it defines HAVE_STRCOLL.
1498 AC_FUNC_STRCOLL
1499
1500 dnl If `getpgrp' takes no argument (the POSIX.1 version), define
1501 dnl `GETPGRP_VOID'.  Otherwise, it is the BSD version, which takes a
1502 dnl process ID as an argument.
1503 AC_CHECK_FUNCS(getpgrp)
1504 AC_FUNC_GETPGRP
1505
1506 dnl We used to call AC_FUNC_MMAP here
1507 dnl Instead we now use following, suggested by Neal Becker
1508 AC_MSG_CHECKING(for working mmap)
1509 case "$opsys" in ultrix* ) have_mmap=no ;; *)
1510 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
1511 #include <unistd.h>
1512 #include <fcntl.h>
1513 #include <sys/mman.h>
1514
1515 #ifndef MAP_VARIABLE
1516 #define MAP_VARIABLE 0
1517 #endif
1518
1519 #ifndef MAP_FAILED
1520 #define MAP_FAILED -1
1521 #endif
1522
1523 int main (int argc, char *argv[])
1524 {
1525   int fd = -1;
1526   caddr_t p;
1527 #ifndef MAP_ANONYMOUS
1528   fd = open ("/dev/zero", O_RDWR);
1529   if (fd < 0)
1530     return 1;
1531 #define MAP_ANONYMOUS 0
1532 #endif
1533   if (mmap(0, 1024, PROT_READ | PROT_WRITE,
1534            MAP_PRIVATE | MAP_VARIABLE | MAP_ANONYMOUS,
1535            fd, 0) != (void *) MAP_FAILED)
1536     return 0;
1537   perror ("conftest: mmap failed");
1538   return 1;
1539 }]])], have_mmap=yes, have_mmap=no, have_mmap=no) ;;
1540 esac
1541 AC_MSG_RESULT($have_mmap)
1542 test "$have_mmap" = "yes" && AC_DEFINE([HAVE_MMAP], [1], [Description here!])
1543
1544 dnl rel_alloc requires either GNU malloc or system malloc with mmap
1545 dnl We only turn rel_alloc on by default if mmap is available.
1546 test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && with_rel_alloc=no
1547 if test "$with_rel_alloc $have_mmap" = "default yes"; then
1548         if test "$doug_lea_malloc" = "yes"; then
1549                 dnl Check if malloc() calls mmap(), making rel_alloc pointless.
1550                 AC_MSG_CHECKING(for M_MMAP_THRESHOLD)
1551                 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],[[
1552 #ifndef M_MMAP_THRESHOLD
1553 #error No M_MMAP_THRESHOLD :-(
1554 !@+$%^&*_)(_ - unlikely to compile...
1555 #endif
1556                         ]])], [
1557                         with_rel_alloc=no
1558                         AC_MSG_RESULT(yes)], [
1559                         with_rel_alloc=yes
1560                         AC_MSG_RESULT(no)])
1561         else
1562                 with_rel_alloc=yes
1563         fi
1564 fi
1565 if test "$with_rel_alloc" = "yes"; then
1566         AC_DEFINE([REL_ALLOC], [1], [Description here!])
1567         SXE_ADD_MEMALLOC_OBJS(ralloc.o)
1568 fi
1569
1570 dnl Check for tests/rminal I/O variants
1571 dnl TERMIOS systems may have termio.h, but not vice-versa, I think.
1572 AC_CHECK_HEADER(termios.h,
1573   AC_DEFINE([HAVE_TERMIOS], [1], [Description here!])
1574   AC_DEFINE([SIGNALS_VIA_CHARACTERS], [1], [Description here!])
1575   AC_DEFINE([NO_TERMIO], [1], [Description here!]),
1576   [AC_CHECK_HEADER(termio.h, [AC_DEFINE([HAVE_TERMIO], [1], [Description here!])])])
1577
1578
1579 dnl Check for directory variants
1580 AC_CHECK_HEADER(dirent.h, [AC_DEFINE([SYSV_SYSTEM_DIR], [1], [Description here!])],
1581   [AC_CHECK_HEADER(sys/dir.h, , [AC_DEFINE([NONSYSTEM_DIR_LIBRARY], [1], [Description here!])])])
1582
1583 dnl check for readdir64_r (the reentrant version of readdir64)
1584 AC_CHECK_FUNC(readdir64_r, [AC_DEFINE([HAVE_LARGEFILE], [1], [Description here!])])
1585
1586 dnl Check for nlist.h
1587 AC_CHECK_HEADER([nlist.h], [AC_DEFINE([NLIST_STRUCT], [1], [Description here!])], [])
1588
1589 dnl firstly check for pthread support so that we can use the 
1590 dnl asynchronous playing routines
1591
1592 dnl special pthread handling 
1593 dnl AIX uses pthreads instead of pthread, and HP/UX uses cma
1594 dnl FreeBSD uses -pthread
1595 AC_CHECK_LIB(pthread, pthread_create)
1596 if test "${ac_cv_lib_pthread_pthread_create}" = "yes"; then
1597         have_threads=yes
1598
1599         SXE_CHECK_COMPILER_FLAGS([-pthreads])
1600         SXE_CHECK_COMPILER_FLAGS([-pthread])
1601         if test "${sxe_cv_c_flags__pthreads}" = "yes"; then
1602                 SXE_PREPEND_UNDUP([-pthreads], [c_switch_site])
1603         fi
1604         if test "${sxe_cv_c_flags__pthread}" = "yes"; then
1605                 SXE_PREPEND_UNDUP([-pthread], [c_switch_site])
1606         fi
1607         SXE_PREPEND([-lpthread], [MM_LIBS])
1608 fi
1609
1610 dnl test for AIX pthreads
1611 AC_CHECK_LIB(pthreads, pthread_create)
1612 if test $ac_cv_lib_pthreads_pthread_create = yes; then
1613   have_threads=yes
1614   SXE_PREPEND(-lpthreads, MM_LIBS)
1615 fi
1616
1617 dnl test for HPUX cma threads. 
1618 AC_CHECK_LIB(cma, pthread_create)
1619 if test $ac_cv_lib_cma_pthread_create = yes; then
1620   have_threads=yes
1621   SXE_PREPEND(-lcma, MM_LIBS)
1622 fi
1623
1624 dnl FreeBSD -pthread check
1625 AC_DEFUN([AC_PTHREAD_FREEBSD],
1626 [AC_MSG_CHECKING([if we need -pthread for threads])
1627 AC_CACHE_VAL(ac_cv_ldflag_pthread,
1628         [ac_save_ld_switch_site="$ld_switch_site"
1629         ld_switch_site="-pthread $ld_switch_site"
1630         AC_LINK_IFELSE([AC_LANG_PROGRAM([[char pthread_create();]],
1631         [[char pthread_create();]])],
1632         eval "ac_cv_ldflag_pthread=yes",
1633         eval "ac_cv_ldflag_pthread=no"),
1634         ld_switch_site="$ac_save_ld_switch_site"
1635 ])
1636 if eval "test \"`echo $ac_cv_ldflag_pthread`\" = yes"; then
1637         AC_MSG_RESULT(yes)
1638         have_threads=yes
1639         SXE_PREPEND_UNDUP("-pthread", ld_switch_site)
1640         SXE_PREPEND_UNDUP("-D_THREAD_SAFE", c_switch_site)
1641 else
1642         AC_MSG_RESULT(no)
1643 fi])
1644
1645 dnl If all other thread tests fail, try BSD's -pthread
1646 if test "$have_threads" != yes; then
1647   AC_PTHREAD_FREEBSD
1648 fi
1649
1650 if test "$have_threads" = yes; then
1651   AC_DEFINE([HAVE_THREADS], [1], [Description here!])
1652 fi
1653
1654
1655 ## Internal Options
1656 ## ================
1657
1658 echo
1659 echo "Internal Options"
1660 echo "================"
1661
1662 SXE_CHECK_LIBTOOL
1663 SXE_CHECK_LIBLTDL
1664
1665 dnl ----------------------------------------------------------------
1666 dnl Check for POSIX functions.
1667 dnl ----------------------------------------------------------------
1668
1669 SXE_CHECK_BASIC_FUNS
1670 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])
1671
1672
1673 ## combines all these time structures and funs
1674 SXE_CHECK_METRONOME
1675 SXE_CHECK_SUFFICIENCY([metronome], [metronome])
1676
1677 ## check for a sane dirname/realpath
1678 SXE_CHECK_DIRNAME
1679 SXE_CHECK_REALPATH
1680
1681 dnl -----------------------------------
1682 dnl Do some misc autoconf-special tests
1683 dnl -----------------------------------
1684
1685 dnl Do the opsystem or machine files prohibit the use of the GNU malloc?
1686 dnl Assume not, until told otherwise.
1687 GNU_MALLOC=yes
1688 if test "$with_dlmalloc" != "no"; then
1689         doug_lea_malloc=yes
1690 else
1691         doug_lea_malloc=no
1692 fi
1693 after_morecore_hook_exists=yes
1694 AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
1695 AC_MSG_CHECKING(whether __after_morecore_hook exists)
1696 AC_LINK_IFELSE([AC_LANG_SOURCE([[extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0]])],
1697   [AC_MSG_RESULT(yes)],
1698   [AC_MSG_RESULT(no)
1699    after_morecore_hook_exists=no])
1700 if test "$system_malloc" = "yes" ; then
1701   GNU_MALLOC=no
1702   GNU_MALLOC_reason="
1703     - The GNU allocators don't work with this system configuration."
1704 elif test "$with_system_malloc" = "yes" ; then
1705   GNU_MALLOC=no
1706   GNU_MALLOC_reason="
1707     - User chose not to use GNU allocators."
1708 elif test "$with_debug_malloc" = "yes" ; then
1709   GNU_MALLOC=no
1710   GNU_MALLOC_reason="
1711     - User chose to use Debugging Malloc."
1712 fi
1713
1714 if test "$doug_lea_malloc" = "yes" -a "$GNU_MALLOC" = "yes" ; then
1715         GNU_MALLOC_reason="
1716     - Using Doug Lea's new malloc from the GNU C Library."
1717         AC_DEFINE([DOUG_LEA_MALLOC], [1], [Description here!])
1718         if test "$after_morecore_hook_exists" = "no" ; then
1719                 GNU_MALLOC_reason="
1720     - Using Doug Lea's new malloc from the Linux C Library."
1721         AC_DEFINE([_NO_MALLOC_WARNING_], [1], [Description here!])
1722         fi
1723 fi
1724 AM_CONDITIONAL([USE_MEMALLOC], [test -n "${libmemalloc_objs}"])
1725
1726 dnl #### mcheck is broken in all versions of Linux libc and glibc.
1727 dnl Try this again when 2.1 hits the streets.
1728 dnl Avoid using free-hook.c if support exists for malloc debugging in libc
1729 have_libmcheck=no
1730 if test "$with_error_checking_malloc" = "yes" -a \
1731    "$have_glibc" = "yes" -a \
1732    "$doug_lea_malloc" = "yes"; then
1733         AC_CHECK_HEADERS(mcheck.h)
1734         AC_CHECK_LIB(mcheck, mcheck, [have_libmcheck=yes], [have_libmcheck=no])
1735 fi
1736
1737 if test "$with_module_support" != "no"; then
1738         AS_MESSAGE([checking for module support])
1739         if test "$sxe_cv_feat_libltdl" = "yes"; then
1740                 have_module_support="yes"
1741                 with_module_support="yes"
1742                 SXE_ADD_CRUFT_OBJS([emodules-ng.o])
1743                 AC_DEFINE([HAVE_EMODULES], [1], [Whether emods would be available])
1744                 AC_DEFINE([WITH_EMODULES], [1], [Whether emods shall be available])
1745         else
1746                 have_module_support="no"
1747                 AC_DEFINE([WITH_EMODULES], [1], [Whether emods shall be available])
1748         fi
1749 fi
1750
1751 AM_CONDITIONAL([DESCEND_MODULES],
1752         [test "$with_module_support $have_module_support" = "yes yes"])
1753 if test "$with_module_support $have_module_support" = "yes"; then
1754         SXE_APPEND([src], [MAKE_SUBDIR])
1755         SXE_APPEND([src], [INSTALL_ARCH_DEP_SUBDIR])
1756         SXE_APPEND([modules], [MAKE_AM_SUBDIR])
1757         SXE_APPEND([modules], [SRC_SUBDIR_DEPS])
1758 dnl else
1759 dnl     MOD_CC="$SXEMACS_CC"
1760 dnl     MODCFLAGS="\$(SXE_CFLAGS) -I../../src -I\$(sxe_srcdir)/../../src"
1761 dnl     INSTALLPATH=""
1762 dnl     MOD_INSTALL_PROGRAM="true"
1763 dnl     OBJECT_TO_BUILD="\$(MODNAME).o"
1764 fi
1765
1766 if test "$opsys" != "darwin"; then
1767
1768         if test "$with_modules_ase" = "yes"; then
1769                 have_modules_ase=yes
1770         fi
1771         if test "$with_static_modules_ase" = "yes"; then
1772                 have_static_modules_ase=yes
1773         fi
1774 fi
1775 SXE_EMOD_STATMOD([ase])
1776 if test "$opsys" != "darwin"; then
1777         have_ase_cart="yes"
1778         have_ase_dig="yes"
1779         have_ase_intv="yes"
1780         have_ase_metric="yes"
1781         have_ase_nbhood="yes"
1782         have_ase_perm="yes"
1783         have_ase_resclass="yes"
1784 fi
1785 if test "$have_bison" = "yes"; then
1786         if test "$with_modules_cl" = "yes" ; then
1787                 have_modules_cl="yes"
1788         fi
1789         if test "$with_static_modules_cl" = "yes"; then
1790                 have_static_modules_cl="yes"
1791         fi
1792 else
1793         if test "$with_modules_cl" = "yes" -o "$with_static_modules_cl" = "yes"; then
1794                 AC_MSG_WARN([Sorry no bison means no cl module for you.])
1795         fi
1796 fi
1797 SXE_EMOD_STATMOD([cl])
1798
1799 AM_CONDITIONAL([AUTARKIC], [test "0" = "1"])
1800 MODARCHDIR=
1801 MAKE_DOCFILE="$sxe_blddir/lib-src/make-docfile"
1802 ELLMAKEDOC=$MAKE_DOCFILE
1803 ELLCC=$MOD_CC
1804 AC_SUBST(ELLCC)
1805 AC_SUBST(ELLMAKEDOC)
1806 AC_SUBST(with_modules, $with_modules)
1807 AC_SUBST(MOD_CC)
1808 AC_SUBST(MODARCHDIR)
1809 AC_SUBST(MAKE_DOCFILE)
1810 AC_SUBST(MODCFLAGS)
1811 AC_SUBST(INSTALLPATH)
1812 AC_SUBST(MOD_INSTALL_PROGRAM)
1813 AC_SUBST(OBJECT_TO_BUILD)
1814 SXE_SUBST_STATMOD_A
1815
1816 ## FFI support
1817 SXE_CHECK_FFI
1818 SXE_CHECK_SUFFICIENCY([ffi], [FFI support], [
1819         ## additional actions
1820         AC_DEFINE([HAVE_LIBFFI], [1], [Description here!])
1821         HAVE_LIBFFI=yes
1822         FFI_LIBS="-lffi"
1823         SXE_ADD_CRUFT_OBJS([effi.o])
1824 ])
1825
1826 ## ENT support
1827 SXE_CHECK_ENT
1828
1829 ## check for pseudo gaussian numbers
1830 AC_MSG_CHECKING([for pseug (gaussian numbers)])
1831 if test "$sxe_cv_feat_gmp" = "yes"; then
1832         ## the good case
1833         AC_DEFINE([HAVE_PSEUG], [1], [Whether we COULD do gaussian numbers!])
1834         sxe_cv_feat_pseug="yes"
1835 else
1836         sxe_cv_feat_pseug="no"
1837 fi
1838 AC_MSG_RESULT([$sxe_cv_feat_pseug])
1839
1840 ## check for pseudo complex numbers
1841 AC_MSG_CHECKING([for pseuc (pseudo complex numbers)])
1842 if test "$sxe_cv_feat_mpfr" = "yes"; then
1843         ## the good case
1844         AC_DEFINE([HAVE_PSEUC], [1], [Whether we COULD do complex numbers!])
1845         sxe_cv_feat_pseuc="yes"
1846 else
1847         sxe_cv_feat_pseuc="no"
1848 fi
1849 AC_MSG_RESULT([$sxe_cv_feat_pseuc])
1850
1851 ## check for pseudo quaternions
1852 AC_MSG_CHECKING([for quatern (quaternion numbers)])
1853 if test "$sxe_cv_feat_gmp" = "yes"; then
1854         ## the good case
1855         AC_DEFINE([HAVE_QUATERN], [1], [Whether we COULD do quaternions!])
1856         sxe_cv_feat_quatern="yes"
1857 else
1858         sxe_cv_feat_quatern="no"
1859 fi
1860 AC_MSG_RESULT([$sxe_cv_feat_quatern])
1861
1862
1863 ## go through what the PH^Wuser has specified
1864 ## it's a wee bit more complex, so let's go for it
1865 ## we use a dijkstra-if
1866 ent_dijkstra="$with_ent_gmp $sxe_cv_feat_gmp"
1867 if test "$ent_dijkstra" = "yes yes"; then
1868         AC_DEFINE([WITH_GMP], [1], [Whether GMP support was desired!])
1869         SXE_PREPEND([$GMP_LIBS], [ENT_LIBS])
1870         SXE_ADD_ENT_OBJS([ent-gmp.o])
1871         have_ent_gmp="yes"
1872 elif test "$ent_dijkstra" = "yes no"; then
1873         ## pity, we wanted GMP but we dont have it
1874         AC_DEFINE([WITH_GMP], [1], [Whether GMP support was desired!])
1875         have_ent_gmp="no"
1876 elif test "$ent_dijkstra" = "no yes"; then
1877         ## we didn't want GMP but we have it
1878         ## do nothing in that case
1879         have_ent_gmp="no"
1880 elif test "$ent_dijkstra" = "no no"; then
1881         ## great, we didnt opt for GMP and we're lucky, it's not there either
1882         have_ent_gmp="no"
1883 fi
1884
1885 ## evaluate mpfr results
1886 ent_dijkstra="$with_ent_mpfr $sxe_cv_feat_mpfr"
1887 if test "$ent_dijkstra" = "yes yes"; then
1888         ## the good case
1889         AC_DEFINE([WITH_MPFR], [1], [Description here!])
1890         SXE_PREPEND([$MPFR_LIBS], [ENT_LIBS])
1891         SXE_ADD_ENT_OBJS([ent-mpfr.o])
1892         have_ent_mpfr="yes"
1893 elif test "$ent_dijkstra" = "yes no"; then
1894         ## we want but can't have
1895         AC_DEFINE([WITH_MPFR], [1], [Description here!])
1896         have_ent_mpfr="no"
1897 elif test "$ent_dijkstra" = "no yes"; then
1898         have_ent_mpfr="no"
1899 elif test "$ent_dijkstra" = "no no"; then
1900         have_ent_mpfr="no"
1901 fi
1902
1903
1904 ## whether to enable gaussian numbers
1905 ent_dijkstra="$with_ent_pseug $sxe_cv_feat_pseug"
1906 if test "$ent_dijkstra" = "yes yes"; then
1907         ## perfick
1908         AC_DEFINE([WITH_PSEUG], [1], [Description here!])
1909         SXE_PREPEND([$GMP_LIBS], [ENT_LIBS])
1910         SXE_ADD_ENT_OBJS([ent-gaussian.o])
1911         have_ent_pseug="yes"
1912 elif test "$ent_dijkstra" = "yes no"; then
1913         ## grrrr
1914         AC_DEFINE([WITH_PSEUG], [1], [Description here!])
1915         have_ent_pseug="no"
1916 elif test "$ent_dijkstra" = "no yes"; then
1917         have_ent_pseug="no"
1918 elif test "$ent_dijkstra" = "no no"; then
1919         have_ent_pseug="no"
1920 fi
1921
1922 ## whether to enable emulated complex numbers
1923 ent_dijkstra="$with_ent_pseuc $sxe_cv_feat_pseuc $with_ent_mpc $sxe_cv_feat_mpc"
1924 if test "$ent_dijkstra" = "yes yes yes yes"; then
1925         ## skip pseuc usage
1926         have_ent_pseuc="veto"
1927         AC_DEFINE([WITH_PSEUC], [1], [Description here!])
1928         AS_MESSAGE([ENT: Built-in support for complex numbers available, dnl
1929 but omitted in favour of MPC.])
1930         omit_ent_pseuc_in_favour_of="mpc"
1931         ## set up to use plain mpc
1932         AC_DEFINE([WITH_MPC], [1], [Description here!])
1933         SXE_PREPEND([$MPC_LIBS], [ENT_LIBS])
1934         SXE_ADD_ENT_OBJS([ent-mpc.o])
1935         have_ent_mpc="yes"
1936 elif test "$ent_dijkstra" = "yes yes yes no"; then
1937         ## user planned to use mpc, hasnt got it though
1938         ## now he's cursed with pseudo complex numbers :)
1939         AC_DEFINE([WITH_PSEUC], [1], [Description here!])
1940         have_ent_pseuc="yes"
1941         SXE_PREPEND([$MPFR_LIBS], [ENT_LIBS])
1942         SXE_ADD_ENT_OBJS([ent-pseumpc.o])
1943         ## we want mpc but can't have, set up that
1944         AC_DEFINE([WITH_MPC], [1], [Description here!])
1945         have_ent_mpc="no"
1946 elif test "$ent_dijkstra" = "yes yes no yes"; then
1947         ## user coulda used mpc but disabled it for whatever reasons ... Wait!
1948         ## Horst, is that you?!
1949         AC_DEFINE([WITH_PSEUC], [1], [Description here!])
1950         AS_MESSAGE([ENT: dnl
1951 MPC support for complex numbers IS possible, however YOU think you want dnl
1952 the built-in emulated stuff?  Seriously?  Good, so be it!])
1953         SXE_PREPEND([$MPFR_LIBS], [ENT_LIBS])
1954         SXE_ADD_ENT_OBJS([ent-pseumpc.o])
1955         have_ent_pseuc="yes"
1956         omit_ent_mpc_in_favour_of="pseuc"
1957         ## however brag that we have mpc
1958         have_ent_mpc="yes"
1959 elif test "$ent_dijkstra" = "yes yes no no"; then
1960         AC_DEFINE([WITH_PSEUC], [1], [Description here!])
1961         have_ent_pseuc="yes"
1962         SXE_PREPEND([$MPFR_LIBS], [ENT_LIBS])
1963         SXE_ADD_ENT_OBJS([ent-pseumpc.o])
1964         have_ent_mpc="no"
1965 elif test "$with_ent_pseuc $sxe_cv_feat_pseuc" = "yes no"; then
1966         AC_DEFINE([WITH_PSEUC], [1], [Description here!])
1967         have_ent_pseuc="no"
1968 elif test "$with_ent_pseuc $sxe_cv_feat_pseuc" = "no yes"; then
1969         have_ent_pseuc="no"
1970 elif test "$with_ent_pseuc $sxe_cv_feat_pseuc" = "no no"; then
1971         have_ent_pseuc="no"
1972 fi
1973
1974 ## whether to enable gaussian numbers
1975 ent_dijkstra="$with_ent_quatern $sxe_cv_feat_quatern"
1976 if test "$ent_dijkstra" = "yes yes"; then
1977         ## perfick
1978         AC_DEFINE([WITH_QUATERN], [1], [Description here!])
1979         SXE_PREPEND([$GMP_LIBS], [ENT_LIBS])
1980         SXE_ADD_ENT_OBJS([ent-quatern.o])
1981         have_ent_quatern="yes"
1982 elif test "$ent_dijkstra" = "yes no"; then
1983         ## grrrr
1984         AC_DEFINE([WITH_QUATERN], [1], [Description here!])
1985         have_ent_quatern="no"
1986 elif test "$ent_dijkstra" = "no yes"; then
1987         have_ent_quatern="no"
1988 elif test "$ent_dijkstra" = "no no"; then
1989         have_ent_quatern="no"
1990 fi
1991
1992 ## elliptic curve support
1993 ent_dijkstra="$with_ent_ecm $sxe_cv_feat_ecm"
1994 if test "$ent_dijkstra" = "yes yes"; then
1995         ## perfick case
1996         AC_DEFINE([WITH_ECM], [1], [Description here!])
1997         SXE_PREPEND([$ECM_LIBS], [ENT_LIBS])
1998         SXE_ADD_ENT_OBJS([ent-ecm.o])
1999         have_ent_ecm="yes"
2000 elif test "$ent_dijkstra" = "no yes"; then
2001         have_ent_ecm="no"
2002 elif test "$ent_dijkstra" = "yes no"; then
2003         AC_DEFINE([WITH_ECM], [1], [Description here!])
2004         have_ent_ecm="no"
2005 elif test "$ent_dijkstra" = "no no"; then
2006         have_ent_ecm="no"
2007 fi
2008
2009
2010 ## Floating operation support is now unconditional
2011 SXE_CHECK_MATHS_VALUES
2012 if test "$ac_cv_sizeof_long_double" != 0; then
2013         ##AC_DEFINE_UNQUOTED([fpfloat], [long double], [Description here!])
2014         ##AC_DEFINE([fpfloat_long_double_p], [1], [Description here!])
2015         fpfloat="long double"
2016         fpfloat_long_double_p=1
2017         have_fpfloat=yes
2018 elif test "$ac_cv_sizeof_double" != 0; then
2019         ##AC_DEFINE_UNQUOTED([fpfloat], [double], [Description here!])
2020         ##AC_DEFINE([fpfloat_double_p], [1], [Description here!])
2021         fpfloat="double"
2022         fpfloat_double_p=1
2023         have_fpfloat=yes
2024 else
2025         AS_MESSAGE([Uh oh, no float type is bad news.])
2026         have_fpfloat=no
2027 fi
2028
2029 AC_MSG_CHECKING([if need to add -lm])
2030 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2031 #include <math.h>
2032 ]],[[
2033 return sin(0.0);
2034 ]])], [AC_MSG_RESULT([no])], [
2035         AC_MSG_RESULT([maybe])
2036         save_LIBS=$LIBS
2037         SXE_APPEND([-lm], [LIBS])
2038         AC_MSG_CHECKING([if can add -lm])
2039         AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2040 #include <math.h>
2041 ]],[[
2042 return sin(0.0);
2043 ]])], [AC_MSG_RESULT([yes])], [
2044         AC_MSG_RESULT([no])
2045         AC_MSG_WARN([No way to use math functions found. Reverting option append.])
2046         LIBS=$save_LIBS])])
2047
2048
2049
2050 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2051 #include <math.h>
2052 ]],[[
2053 return atanh(1.0) + asinh(1.0) + acosh(1.0);
2054 ]])], [AC_DEFINE([HAVE_INVERSE_HYPERBOLIC], [1], [Description here!])])
2055
2056 if test "$have_fpfloat" = "yes"; then
2057         AC_DEFINE([HAVE_FPFLOAT], [1], [Description here!])
2058
2059         SXE_CHECK_CLEAN_FLOATOPS(
2060                 [have_clean_floatops="yes"], [have_clean_floatops="no"])
2061
2062         ## it would seem odd to define the destiny of our float arithmetic here
2063         if test "$have_clean_floatops" = "yes"; then
2064                 AC_DEFINE_UNQUOTED([fpfloat], [$fpfloat], [Description here!])
2065                 AC_DEFINE_UNQUOTED([fpfloat_long_double_p],
2066                         [${fpfloat_long_double_p:-0}], [Description here!])
2067                 AC_DEFINE_UNQUOTED([fpfloat_double_p],
2068                         [${fpfloat_double_p:-0}], [Description here!])
2069         else
2070                 AS_MESSAGE([downgrading to `double' floats])
2071                 AC_DEFINE_UNQUOTED([fpfloat], [double], [Description here!])
2072                 AC_DEFINE_UNQUOTED([fpfloat_long_double_p],
2073                         [0], [Description here!])
2074                 AC_DEFINE([fpfloat_double_p],
2075                         [1], [Description here!])
2076         fi
2077 fi
2078
2079 ## trivial checks, you cannot (yet) turn off internal arithmetic entirely
2080 ## so we always `have' it
2081 dnl with_ent_int=yes
2082 have_ent_int=yes
2083 dnl with_ent_indef=yes
2084 have_ent_indef=yes
2085 dnl with_ent_fpfloat=yes
2086 have_ent_fpfloat=yes
2087 dnl we attempt to always use ent.o
2088 AC_DEFINE([WITH_NUMBER_TYPES], [1], [Description here!])
2089 SXE_SUBST_ENT_OBJS
2090
2091 dnl experimental code support
2092 if test "$with_experimental_features_compre" = "yes"; then
2093         AC_MSG_CHECKING([if compre prerequisites are met])
2094         AC_MSG_RESULT([yes])
2095         AC_DEFINE([EF_USE_COMPRE], [1],
2096                 [Whether to provide compiled regular expression!])
2097         have_experimental_features_compre=yes
2098 fi
2099 if test "$with_experimental_features_pom" = "yes"; then
2100         AC_MSG_CHECKING([if pom prerequisites are met])
2101         if test "$have_threads" = "yes"; then
2102                 AC_MSG_RESULT([yes])
2103                 AC_DEFINE([EF_USE_POM], [1],
2104                         [Whether to protect all lisp objects with mutexes!])
2105                 have_experimental_features_pom=yes
2106         else
2107                 AC_MSG_RESULT([no])
2108         fi
2109 fi
2110 if test "$with_experimental_features_asyneq" = "yes"; then
2111         AC_MSG_CHECKING([if asyneq prerequisites are met])
2112         if test "$have_threads" = "yes"; then
2113                 AC_MSG_RESULT([yes])
2114                 AC_DEFINE([EF_USE_ASYNEQ], [1],
2115                         [Whether to setup asynchronous event queues!])
2116                 have_experimental_features_asyneq=yes
2117                 SXE_ADD_EVENTS_OBJS([event-queue.o workers.o worker-asyneq.o])
2118         else
2119                 AC_MSG_RESULT([no])
2120         fi
2121 fi
2122 SXE_SUBST_EVENTS_OBJS
2123
2124 SXE_CHECK_EVENTS
2125 SXE_CHECK_SUFFICIENCY([events], [event system])
2126
2127 ## check asm helpers
2128 SXE_CHECK_ASM_HELPERS
2129
2130 ## compression titbits
2131 SXE_CHECK_ZLIB
2132 SXE_CHECK_BZLIB
2133 SXE_CHECK_LZMA
2134
2135
2136 ## Cryptography Options
2137 ## ====================
2138 echo
2139 echo "Cryptography Options"
2140 echo "===================="
2141
2142 ## in case someone else (ldap, pgsql, etc.) needs it
2143 SXE_CHECK_OPENSSL
2144 SXE_CHECK_SUFFICIENCY([openssl], [OpenSSL support])
2145
2146 dnl OpenSSL
2147 if test "$with_openssl" != "no" -a "$have_openssl" = "yes"; then
2148         SXE_ADD_CRUFT_OBJS([openssl.o])
2149 elif test "$with_openssl" != "no"; then
2150         AC_MSG_WARN([Required OpenSSL support cannot be provided.])
2151         AC_MSG_WARN([Check --with-site-prefixes.])
2152 fi
2153 if test "$have_openssl" = "no" -o "$with_openssl" = "no"; then
2154         OPENSSL_CPPFLAGS=""
2155         OPENSSL_LDFLAGS=""
2156         OPENSSL_LIBS=""
2157 fi
2158 AC_SUBST([OPENSSL_CPPFLAGS])
2159 AC_SUBST([OPENSSL_LDFLAGS])
2160 AC_SUBST([OPENSSL_LIBS])
2161
2162 SXE_CHECK_KERBEROS
2163 SXE_CHECK_KERBEROS5
2164 if test "$with_kerberos" = "yes"; then
2165         AC_DEFINE([WITH_KERBEROS], [1], [Whether kerberos support was requested])
2166         if test "$sxe_cv_feat_kerberos" = "yes"; then
2167                 SXE_PREPEND([$KERBEROS_LIBS], [ld_libs_general])
2168         fi
2169 fi
2170
2171
2172 ## Networking Options
2173 ## ==================
2174 echo
2175 echo "Networking Options"
2176 echo "=================="
2177
2178 SXE_CHECK_SOCKETS
2179 SXE_CHECK_SUFFICIENCY([unix], [unix domain sockets])
2180 SXE_CHECK_SUFFICIENCY([sysvipc], [SysV IPC message])
2181 SXE_CHECK_SUFFICIENCY([sockets], [tcp/udp sockets])
2182 SXE_CHECK_SUFFICIENCY([tcpudp], [tcp/udp sockets])
2183 SXE_CHECK_SUFFICIENCY([multicast], [multicast])
2184
2185 dnl Decnet
2186 if test "$with_dnet" = "yes"; then
2187   AC_CHECK_LIB(dnet, main, 
2188     [AC_DEFINE([HAVE_LIBDNET], [1], [Description here!])],
2189     [SXE_DIE("DECnet requested but can't find libdnet")])
2190 fi
2191
2192 dnl Socks support
2193 if test "$with_socks" = "yes"; then
2194   AC_CHECK_LIB(socks, SOCKSinit)
2195   test -n "$ac_cv_lib_socks_SOCKSinit" && AC_DEFINE([HAVE_SOCKS], [1], [Description here!])
2196 fi
2197
2198
2199 ## Window System Features
2200 ## ======================
2201 echo
2202 echo "Window System Features"
2203 echo "======================"
2204
2205 dnl ----------------------
2206 dnl Choose a window system
2207 dnl ----------------------
2208
2209 AS_MESSAGE([checking for specified window system])
2210
2211 if test "$with_x" != "no"; then
2212         if test "$with_x11" != "no"; then
2213                 dnl User-specified --x-includes or --x-libraries implies --with-x11.
2214                 test "$x_includes $x_libraries" != "NONE NONE" && \
2215                         window_system=x11
2216                         with_x11=yes
2217         fi
2218
2219         dnl Autodetection of X11 libraries and includes
2220         dnl -------------------------------------------
2221         dnl AC_PATH_XTRA thinks it can find our X headers and includes, but
2222         dnl it often gets it wrong, so we only use it as a last resort.
2223         
2224         dnl $OPENWINHOME implies --x-includes and --x-libraries
2225         dnl Not (yet) handled by autoconf2
2226         if test "$x_includes $x_libraries" = "NONE NONE" \
2227                 -a -n "$OPENWINHOME" \
2228                 -a "$OPENWINHOME" != "/usr/openwin" \
2229                 -a -d "$OPENWINHOME"; then
2230                 test -d "$OPENWINHOME/lib"           && \
2231                         x_libraries="$OPENWINHOME/lib"
2232                 test -d "$OPENWINHOME/include"       && \
2233                         x_includes="$OPENWINHOME/include"
2234                 test -d "$OPENWINHOME/share/include" && \
2235                         x_includes="$OPENWINHOME/share/include"
2236         fi
2237
2238         if test -z "$x_includes" -o \
2239            "$x_includes" = "NONE" -o \
2240            ! -d "$x_includes"; then
2241                 dnl AC_PATH_XTRA often guesses /usr/include, when some other
2242                 dnl include directory is a MUCH better guess (Linux, HP-UX 10.20).
2243                 dnl This is a workaround for idiot (esp. HP) system vendors, who
2244                 dnl provide a /usr/include/X11, but DON'T FULLY POPULATE IT.
2245                 for dir in "/usr/X11" "/usr/X11R7" "/usr/X11R6" \
2246                         "/usr/local" "/usr"; do
2247                         if test -d "$dir/include/X11"; then
2248                                 x_includes="$dir/include"
2249                                 break
2250                         fi
2251                 done
2252         fi
2253
2254         if test -z "$x_libraries" -o \
2255            "$x_libraries" = "NONE" -o \
2256            ! -d "$x_libraries"; then
2257                 for dir in \
2258                         "/usr/X11/lib" \
2259                         "/usr/X11R7/lib" "/usr/lib/X11R7" \
2260                         "/usr/X11R6/lib" "/usr/lib/X11R6" \
2261                         "/usr/local/lib" "/usr/local/lib/X11" \
2262                         "/usr/lib" "/usr/lib/X11"; do
2263                         if test -r "$dir/libX11.a"; then
2264                                 x_libraries="$dir"
2265                                 break
2266                         fi
2267                 done
2268         fi
2269
2270         AC_PATH_XTRA
2271         if test "$with_x11" != "no"; then
2272                 if test "$no_x" = "yes"; then
2273                         with_x11=no
2274                         window_system=none
2275                         HAVE_X_WINDOWS=no
2276                 else
2277                         with_x11=yes
2278                         window_system=x11
2279                         HAVE_X_WINDOWS=yes
2280                 fi
2281         fi
2282 fi
2283
2284 dnl #### wmperry:: !x11 != NONE
2285 dnl case "$with_x11" in
2286 dnl  yes ) window_system=x11  HAVE_X_WINDOWS=yes ;;
2287 dnl  no  ) window_system=none HAVE_X_WINDOWS=no  ;;
2288 dnl esac
2289
2290 AM_CONDITIONAL([DESCEND_LWLIB], [test "$with_x11" = "yes"])
2291 if test "$with_x11" = "yes"; then
2292         AC_DEFINE([HAVE_X_WINDOWS], [1], [Description here!])
2293         AC_DEFINE([NeedFunctionPrototypes], [1], [Description here!])
2294         AC_DEFINE([FUNCPROTO], [15], [Whatever this is.])
2295         AC_DEFINE([HAVE_UNIXOID_EVENT_LOOP], [1], [Description here!])
2296         SXE_APPEND([lwlib], [MAKE_SUBDIR])
2297         SXE_APPEND([lwlib], [SRC_SUBDIR_DEPS])
2298
2299         SXE_ADD_SXEUIX11_OBJS([console-x.o device-x.o event-Xt.o frame-x.o])
2300         SXE_ADD_SXEUIX11_OBJS([glyphs-x.o objects-x.o redisplay-x.o select-x.o])
2301         SXE_ADD_SXEUIX11_OBJS([xgccache.o])
2302
2303         SXE_DUMP_LIBS
2304         ## some debian systems are trying to fool us ... now fool them back!
2305         if test -d "$x_includes"; then
2306                 CPPFLAGS="$CPPFLAGS -I$x_includes"
2307         fi
2308         if test -d "$x_libraries"; then
2309                 LDFLAGS="$LDFLAGS -L$x_libraries"
2310         fi
2311
2312         dnl Look for Motif, but only if not found in $x_includes and $x_libraries
2313         AC_CHECK_HEADERS([Xm/Xm.h])
2314         if test "$ac_cv_header_Xm_Xm_h" = "yes"; then
2315                 AC_CHECK_LIB([Xm], [XmStringFree], [got_motif=yes])
2316         fi
2317         
2318         if test "$got_motif" != "yes"; then
2319                 dnl Try to find Motif dirs
2320                 dnl These take precedence over other X libs/includes, so PRE-pend
2321                 for lib_dir in \
2322                         "/usr/dt/lib" "/usr/lib/Motif2.1" \
2323                         "/usr/lib/Motif1.2" "/usr/lib/Motif1.1"; do
2324                         inc_dir=`echo $lib_dir | sed -e 's/lib/include/'`
2325                         if test -d "$lib_dir" -a -d "$inc_dir"; then
2326                                 case "$x_libraries" in
2327                                 *"$lib_dir"* )
2328                                         ;;
2329                                 *)
2330                                         x_libraries="$lib_dir $x_libraries"
2331                                         SXE_PREPEND(["-L${lib_dir}"], [X_LIBS])
2332                                         ;;
2333                                 esac
2334                                 case "$x_includes" in
2335                                 "$inc_dir"* )
2336                                         ;;
2337                                 *)
2338                                         x_includes="$inc_dir $x_includes"
2339                                         SXE_PREPEND_UNDUP(["-I${inc_dir}"], [X_CFLAGS])
2340                                         ;;
2341                                 esac
2342                                 break; dnl only need ONE Motif implementation!
2343                         fi
2344                 done
2345         fi
2346
2347         dnl Contrib X libs/includes do NOT take precedence, so AP-pend
2348         for rel in "X11R7" "X11R6" "X11R5" "X11R4"; do
2349                 lib_dir="/usr/contrib/$rel/lib" inc_dir="/usr/contrib/$rel/include"
2350                 if test -d "$lib_dir" -a -d "$inc_dir"; then
2351                         case "$x_libraries" in
2352                         *"$lib_dir"* )
2353                                 ;;
2354                         *)
2355                                 x_libraries="$x_libraries $lib_dir"
2356                                 SXE_APPEND(["-L${lib_dir}"], [X_LIBS])
2357                                 ;;
2358                         esac
2359                         case "$x_includes" in
2360                         "$inc_dir"* )
2361                                 ;;
2362                         *)
2363                                 x_includes="$x_includes $inc_dir"
2364                                 SXE_APPEND_UNDUP(["-I${inc_dir}"], [X_CFLAGS])
2365                                 ;;
2366                         esac
2367                         break; dnl Only need ONE X11 implementation !
2368                 fi
2369         done
2370
2371         dnl Avoid version mismatch for shared library libXm.so on osf4
2372         case "$opsys" in
2373         decosf*)
2374                 if test "$GCC" = yes -a -d "/usr/shlib"; then
2375                         SXE_APPEND([-L/usr/shlib], [X_LIBS]);
2376                 fi
2377                 ;;
2378         esac
2379         
2380         LDFLAGS="$LDFLAGS $X_LIBS"
2381         
2382         if test "$extra_verbose" = "yes"; then
2383                 echo
2384                 echo "X11 compilation variables:"
2385                 SXE_PRINT_VAR(x_libraries x_includes
2386                         X_CFLAGS X_LIBS X_PRE_LIBS X_EXTRA_LIBS)
2387                 echo
2388         fi
2389
2390         dnl Set up bitmaps search path.
2391         dnl The original suggestion was to unconditionally to append X11/bitmaps
2392         dnl to each element of $x_includes, I'm pretty sure this is the wrong
2393         dnl thing to do.  We test for bitmaps and X11/bitmaps directories on each
2394         dnl element and add them to BITMAPDIR if they exist.
2395         bitmapdirs=
2396         if test "$x_includes" != NONE; then
2397                 for i in $x_includes; do
2398                         if test -d "$i/bitmaps"; then
2399                                 bitmapdirs="$i/bitmaps:$bitmapdirs"
2400                         fi
2401                         if test -d "$i/X11/bitmaps"; then
2402                                 bitmapdirs="$i/X11/bitmaps:$bitmapdirs"
2403                         fi
2404                 done
2405                 bitmapdirs=`echo "$bitmapdirs" | sed s/.$//`
2406         fi
2407         if test ! -z "$bitmapdirs"; then
2408                 AC_DEFINE_UNQUOTED([BITMAPDIR], ["$bitmapdirs"], [Description here!])
2409         fi
2410
2411 dnl   dnl Autodetect defines extracted from X config by xmkmf, e.g. NARROWPROTO
2412 dnl   AS_MESSAGE(checking for X defines extracted by xmkmf)
2413 dnl   rm -fr conftestdir
2414 dnl   if mkdir conftestdir; then
2415 dnl     cd conftestdir
2416 dnl     cat > Imakefile <<'EOF'
2417 dnl xetest:
2418 dnl     @echo ${PROTO_DEFINES} ${STD_DEFINES}
2419 dnl EOF
2420 dnl     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2421 dnl       # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2422 dnl       xmkmf_defines=`${MAKE-make} xetest 2>/dev/null | grep -v make`
2423 dnl     fi
2424 dnl     cd ..
2425 dnl     rm -fr conftestdir
2426 dnl     for word in $xmkmf_defines; do
2427 dnl       case "$word" in
2428 dnl       -D__STDC__*) ;;
2429 dnl       -D* )
2430 dnl     sym=`echo '' $word | sed -e 's:^ *-D::' -e 's:=.*::'`
2431 dnl     case "$word" in
2432 dnl       -D*=* ) val=`echo '' $word | sed -e 's:^.*=::'` ;;
2433 dnl       *     ) val=1 ;;
2434 dnl     esac
2435 dnl dnl Avoid re-AC_DEFINE-ing xmkmf symbols we've already defined above.
2436 dnl     if grep "^#define $sym " confdefs.h >/dev/null; then :; else
2437 dnl       if test "$val" = "1"
2438 dnl         then AC_DEFINE_UNQUOTED([$sym], [], [Description here!])
2439 dnl         else AC_DEFINE_UNQUOTED([$sym], [$val], [Description here!])
2440 dnl       fi
2441 dnl     fi  ;;
2442 dnl       esac
2443 dnl     done
2444 dnl   fi
2445
2446         dnl make sure we can find Intrinsic.h
2447         AC_CHECK_HEADER([X11/Intrinsic.h], [],
2448                 [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.])])
2449
2450         dnl Check some more headers
2451         AC_CHECK_HEADERS([X11/Intrinsic.h X11/StringDefs.h X11/Shell.h X11/ShellP.h],
2452                 [],[],
2453                 [[#if HAVE_X11_INTRINSIC_H
2454                   # include <X11/Intrinsic.h>
2455                   # include <X11/IntrinsicP.h>
2456                   # include <X11/CoreP.h>
2457                   #endif]])
2458
2459         dnl -lXt and -lX11 are required
2460         dnl Some broken systems require the magic "-b i486-linuxaout" flag
2461         
2462         dnl Other broken systems will not pass these tests unless the pre and
2463         dnl extra libs are passed on...
2464         LIBS="$LIBS $X_PRE_LIBS $X_EXTRA_LIBS"
2465         AC_CHECK_LIB(X11, XOpenDisplay, have_lib_x11=yes)
2466         if test "$have_lib_x11" != "yes"; then
2467                 AC_CHECK_LIB([X11], [XGetFontProperty],
2468                         [],
2469                         [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.])])
2470         fi
2471         SXE_PREPEND([-lX11], [libs_x])
2472         LIBS="$LIBS -lX11"
2473         if test "$extra_verbose" = "yes"; then
2474                 echo "    Setting libs_x to \"-lX11\""
2475         fi
2476         dnl Autodetect -lXext
2477         AC_CHECK_LIB([Xext], [XShapeSelectInput], [SXE_PREPEND([-lXext], [libs_x])])
2478
2479         dnl Require -lXt
2480         AC_CHECK_LIB([Xt], [XtOpenDisplay], [SXE_PREPEND([-lXt], [libs_x])], [
2481                 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.])])
2482         
2483         AC_MSG_CHECKING([the version of X11 being used])
2484         AC_RUN_IFELSE([AC_LANG_SOURCE([[
2485 #include <X11/Intrinsic.h>
2486 int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }]])],
2487                 [./conftest foobar; x11_release=$?],[x11_release=4],[x11_release=4])
2488         AC_MSG_RESULT(R${x11_release})
2489         AC_DEFINE_UNQUOTED([X11_RELEASE], [${x11_release}], [Description here!])
2490         
2491         AC_CHECK_FUNCS([XConvertCase])
2492         AC_CHECK_LIB([Xt], [XtRegisterDrawable])
2493         if test "$ac_cv_lib_Xt_XtRegisterDrawable" = "yes"; then
2494                 AC_DEFINE([HAVE_XTREGISTERDRAWABLE], [1], [Description])
2495         fi
2496         
2497         AC_CHECK_HEADERS(X11/Xlocale.h)
2498         
2499         dnl XFree86 has a non-standard prototype for this X11R6 function
2500         AC_CHECK_FUNCS(XRegisterIMInstantiateCallback)
2501         AC_MSG_CHECKING(for standard XRegisterIMInstantiateCallback prototype)
2502         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
2503 #ifndef NeedFunctionPrototypes
2504 #define NeedFunctionPrototypes 1
2505 #endif
2506 #include <X11/Xlib.h>
2507 extern Bool XRegisterIMInstantiateCallback(
2508         Display*, struct _XrmHashBucketRec*, char*, char*, XIMProc, XPointer*);
2509 ]])],
2510         [AC_MSG_RESULT(yes)],
2511         [AC_MSG_RESULT(no)
2512                 AC_DEFINE([XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE],
2513                         [], [Description here!])])
2514
2515         dnl autodetect -lXmu
2516         AC_CHECK_LIB([Xmu], [XmuReadBitmapDataFromFile],
2517                 [with_xmu=yes], [with_xmu=no])
2518         if test "$with_xmu" = "no"; then
2519                 SXE_ADD_SXEUIX11_OBJS([xmu.o])
2520         else
2521                 SXE_PREPEND([-lXmu], [libs_x])
2522                 AC_DEFINE([HAVE_XMU], [1], [Description here!])
2523         fi
2524         
2525         dnl Autodetect -lXbsd
2526         dnl #### Someone, please add a better function than main
2527         AC_CHECK_LIB([Xbsd], [main], SXE_PREPEND([-lXbsd], [libs_x]))
2528
2529         dnl restore old values
2530         SXE_RESTORE_LIBS
2531 fi dnl $with_x11 = yes
2532
2533 AC_SUBST([install_pp])
2534
2535 dnl test "$with_dragndrop" != "no" && with_dragndrop="$with_dragndrop_default"
2536 dnl test -z "$window_system" && window_system="none"
2537 with_dragndrop="no"
2538
2539 dnl Test for features that require a window system - ANY window system
2540 if test "$window_system" = "none"; then
2541   for feature in menubars scrollbars toolbars dialogs dragndrop xface
2542   do
2543     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2544        AC_MSG_WARN([--with-$feature ignored:  Not valid without window system support])
2545     fi
2546     eval "with_${feature}=no"
2547   done
2548 else
2549   test -z "with_toolbars" && with_toolbars=yes
2550 fi
2551
2552 dnl Test for features that require X11 support
2553 if test "$with_x11" != "yes"; then
2554   dnl It ought to be reasonable to have no output device at all, and only use
2555   dnl SXEmacs in --batch mode.
2556   dnl if test "$with_tty" = "no" ; then
2557   dnl   AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.])
2558   dnl fi
2559   for feature in offix wmcommand xim xmu nas_sound
2560   do
2561     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2562        AC_MSG_WARN([--with-$feature ignored:  Not valid without X support])
2563     fi
2564     eval "with_${feature}=no"
2565   done
2566 fi
2567
2568 dnl Balloon Help requires the Shape extension, not available everywhere,
2569 dnl for example not on AIX 4.3.
2570 if test "$with_x11" = "yes"; then
2571   AC_CHECK_HEADER(X11/extensions/shape.h, [
2572    AC_DEFINE([HAVE_BALLOON_HELP], [1], [Description here!])
2573    SXE_ADD_SXEUIX11_OBJS(balloon_help.o balloon-x.o)
2574    ])
2575 fi
2576
2577 dnl FSF 19.29 has some bitmapdir stuff here.
2578 bitmapdir=
2579
2580 case "$window_system" in
2581   x11  ) HAVE_X_WINDOWS=yes; echo "  Using X11." ;;
2582   none ) HAVE_X_WINDOWS=no ; echo "  Using no window system." ;;
2583 esac
2584
2585 if test -n "$window_system" -a "$window_system" != "none"; then
2586         AC_DEFINE_UNQUOTED([HAVE_WINDOW_SYSTEM], [1], [Description here!])
2587 fi
2588
2589 case "$x_libraries" in *X11R4* )
2590   test "$opsys" = "hpux9"     && opsysfile="s/hpux9-x11r4.h"
2591   test "$opsys" = "hpux9-shr" && opsysfile="s/hpux9shxr4.h"
2592 esac
2593
2594 dnl Enable or disable proper handling of WM_COMMAND
2595 AS_MESSAGE(checking for WM_COMMAND option);
2596 dnl if test "$with_wmcommand" = "yes"; then
2597 if test "$with_wmcommand" != "no"; then
2598   AC_DEFINE([HAVE_WMCOMMAND], [1], [Description here!])
2599 fi
2600
2601 dnl Autodetect Xauth
2602 dnl -lXau is only used by gnuclient, so use a special variable for Xauth X libs
2603 test "$with_xauth" != "no" && test "$window_system" = "none" && with_xauth=no
2604 SXE_DUMP_LIBS
2605 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2606 LDFLAGS="$LDFLAGS $X_LIBS"
2607 AC_CHECK_HEADER([X11/Xauth.h], [:], [with_xauth=no])
2608 AC_CHECK_LIB([Xau], [XauGetAuthByAddr], [:], [with_xauth=no])
2609 if test "$with_xauth" = "yes"; then
2610   AC_DEFINE([HAVE_XAUTH], [1], [Description here!])
2611   SXE_CONSECUTIVE_UNDUP([libs_xauth], [$X_EXTRA_LIBS -lXau $libs_x $X_PRE_LIBS])
2612 fi
2613 SXE_RESTORE_LIBS
2614 AC_SUBST(libs_xauth)
2615
2616 dnl ----------------------
2617 dnl X-Specific Graphics libraries
2618 dnl ----------------------
2619
2620 ## Oki, now that we really need a more exhaustive way to autodetect
2621 ## athena and other widgets we construct a chain.  The elements of
2622 ## that chain are simple atomic tests (provided by AC_DEFUNs).
2623 ## The chain is defined to be:
2624 ##
2625 ## neXtaw -> Xaw3d -> XawXpm -> Xaw95  ->  Xaw  ->  Motif  ->  Nirvana
2626 ## ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^^^
2627 ##         3d sets                       non-3d   non-athena
2628 ##
2629 ## Now if the user passes a --with-athena=foo option, we jump
2630 ## directly to the according test-suite and in case this fails we jump
2631 ## off the cliff.
2632 ##
2633 ## Attention:
2634 ## We shall perform every test-suite twice, once the correct way, and
2635 ## once with #include'ing the Xfuncproto header.
2636 ## Thanks to the many, many distributions which treat their users
2637 ## like braindead zombies!
2638 ## Especially, I would like to thank Fedora/RedHat for bringing
2639 ## this up. Go on guys, you rock!
2640
2641 ## and now the test chain
2642 if test "$with_x11" = "yes" -a "$with_x" != "no"; then
2643         SXE_CHECK_XTOOLKITS
2644         SXE_CHECK_XT_DEPENDENCIES
2645 else
2646         with_menubars=no
2647         with_scrollbars=no
2648         with_dialogs=no
2649         with_toolbars=no
2650         with_widgets=no
2651 fi
2652
2653 dnl Always compile OffiX unless --without-offix is given, no
2654 dnl X11 support is compiled in, no standard Xmu is available,
2655 dnl or dragndrop support is disabled
2656 dnl Because OffiX support currently loses when more than one display
2657 dnl is in use, we now disable it by default -slb 07/10/1998.
2658 test "$window_system" != "x11" && with_offix=no
2659 if test "$with_xmu" != yes -a "$with_x11" = yes; then
2660   if test "$with_offix" = "yes" ; then
2661     AC_MSG_WARN([--with-offix forced to `no'; no real Xmu support])
2662   fi
2663   with_offix=no
2664 fi
2665 if test "$with_dragndrop" = "no" ; then
2666   if test "$with_offix" = "yes" ; then
2667     AC_MSG_WARN([--with-offix forced to `no'; no generic Drag'n'Drop support])
2668   fi
2669   with_offix=no
2670 fi
2671 if test "$with_offix" = "yes"; then
2672   AC_DEFINE([HAVE_OFFIX_DND], [1], [Description here!])
2673   SXE_APPEND(offix.o, dnd_objs)
2674   SXE_APPEND(OffiX, dragndrop_proto)
2675 fi
2676
2677
2678 ## TTY Options
2679 ## ===========
2680 echo
2681 echo "TTY Options"
2682 echo "==========="
2683
2684
2685 dnl ---------------------
2686 dnl TTY-dependent options
2687 dnl ---------------------
2688
2689 dnl checks for header files
2690 AC_CHECK_HEADERS([libintl.h nlist.h sgtty.h termio.h termios.h])
2691
2692 if test "$with_tty" != "no"  ; then
2693         AS_MESSAGE(checking for TTY-related features)
2694         AC_DEFINE([HAVE_TTY], [1], [Description here!])
2695         AC_DEFINE([HAVE_UNIXOID_EVENT_LOOP], [1], [Description here!])
2696         SXE_ADD_SXEUITTY_OBJS([console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o])
2697
2698   dnl Autodetect ncurses.
2699   AC_CHECK_LIB(ncurses, tgetent, , with_ncurses=no)
2700   AC_CHECK_LIB(ncurses, tgetstr, , with_ncurses=no)
2701   AC_CHECK_LIB(ncurses, tparm, , with_ncurses=no)
2702   if test "$with_ncurses" != "no"; then
2703     AC_DEFINE([HAVE_NCURSES], [1], [Description here!])
2704     with_ncurses=yes
2705     AC_CHECK_HEADER(ncurses/ncurses.h, curses_h_file=ncurses/ncurses.h)
2706     if test -z "$curses_h_file"; then
2707             AC_CHECK_HEADER(ncurses/curses.h,  curses_h_file=ncurses/curses.h)
2708     fi
2709     if test -n "$curses_h_file"; then
2710             AC_CHECK_HEADER(ncurses/termcap.h, termcap_h_file=ncurses/termcap.h)
2711             AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
2712     else
2713             AC_CHECK_HEADER(ncurses.h, curses_h_file=ncurses.h)
2714             AC_CHECK_HEADER(termcap.h, termcap_h_file=termcap.h)
2715             AC_CHECK_HEADER(term.h,    term_h_file=term.h)
2716     fi
2717     SXE_ADD_SXEUITTY_OBJS(terminfo.o)
2718     SXE_PREPEND(-lncurses, LIBS)
2719
2720     if test -z "$curses_h_file" ; then
2721       dnl Try again, and check for the bogus ncurses/ include bug.
2722       dnl (i.e. ncurses/curses.h bogusly includes <unctrl.h> instead of
2723       dnl <ncurses/unctrl.h>)
2724       save_c_switch_site="$c_switch_site"
2725       c_switch_site="$c_switch_site -I/usr/include/ncurses"
2726       AC_CHECK_HEADER(ncurses/ncurses.h, curses_h_file=ncurses/ncurses.h)
2727       if test -z "$curses_h_file"; then
2728             AC_CHECK_HEADER(ncurses/curses.h,  curses_h_file=ncurses/curses.h)
2729       fi
2730       if test -n "$curses_h_file"; then
2731             AC_CHECK_HEADER(ncurses/termcap.h, termcap_h_file=ncurses/termcap.h)
2732             AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
2733       else
2734             AC_CHECK_HEADER(ncurses.h, curses_h_file=ncurses.h)
2735             AC_CHECK_HEADER(termcap.h, curses_h_file=termcap.h)
2736             AC_CHECK_HEADER(term.h,    curses_h_file=term.h)
2737       fi
2738       if test -n "$curses_h_file"
2739         then AC_MSG_WARN([Your system has the bogus ncurses include bug.])
2740         else c_switch_site="$save_c_switch_site"
2741       fi
2742     fi
2743   fi
2744   if test "$with_ncurses" = "no" -o -z "$curses_h_file" ; then
2745
2746     # Check alternate library includes
2747     for lib in curses term terminfo termcap; do
2748         AC_CHECK_HEADER(${lib}.h, [
2749                 eval ${lib}_h_file=${lib}.h
2750                 AC_CHECK_LIB($lib, tgetent, eval have_${lib}=yes, eval have_${lib}=no)
2751                 AC_CHECK_LIB($lib, tgetstr, , eval have_${lib}=no)])
2752     done
2753
2754     for lib in curses terminfo termlib termcap; do
2755           have_lib_eval=`eval echo \\$have_$lib`
2756           if test "$have_lib_eval" = "yes"; then
2757                 AC_CHECK_LIB($lib, tparm, 
2758                           SXE_ADD_SXEUITTY_OBJS(terminfo.o),
2759                           SXE_ADD_SXEUITTY_OBJS(tparam.o))
2760                 SXE_PREPEND(-l${lib}, LIBS)
2761                 break
2762           fi
2763     done
2764   fi
2765   if test -n "$curses_h_file"; then
2766         AC_DEFINE_UNQUOTED([HAVE_CURSES_H], [1], [There is a curses.h header file available])
2767   fi
2768   if test -n "$termcap_h_file"; then
2769         AC_DEFINE_UNQUOTED([HAVE_TERMCAP_H], [1], [There is a termcap.h header available])
2770   fi
2771   if test -n "$term_h_file"; then
2772         AC_DEFINE_UNQUOTED([HAVE_TERM_H], [1], [There is a term.h header available])
2773   fi
2774   AC_DEFINE_UNQUOTED([CURSES_H_FILE], ["${curses_h_file-curses.h}"], [The curses.h header file])
2775   AC_DEFINE_UNQUOTED([TERMCAP_H_FILE], ["${termcap_h_file-termcap.h}"], [The termcap.h header file])
2776   AC_DEFINE_UNQUOTED([TERM_H_FILE], ["${term_h_file-term.h}"], [The term.h header file])
2777
2778   dnl General Purpose Mouse (libgpm) support
2779   if test "$with_gpm" != "no"; then
2780     AC_CHECK_HEADER(gpm.h, [
2781       AC_CHECK_LIB(gpm, Gpm_Open, have_gpm=yes)])
2782     if test "$have_gpm" = "yes"; then
2783       with_gpm=yes
2784       AC_DEFINE([HAVE_GPM], [1], [General Purpose Mouse (libgpm) is available])
2785       SXE_ADD_SXEUITTY_OBJS(gpmevent.o)
2786       SXE_PREPEND(-lgpm, LIBS)
2787     else
2788       with_gpm=no
2789     fi
2790   fi
2791
2792 else dnl "$with_tty" = "no"
2793   for feature in ncurses gpm; do
2794     if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then
2795       AC_MSG_WARN([--with-${feature} ignored:  Not valid without TTY support])
2796     fi
2797     eval "with_${feature}=no"
2798   done
2799 fi dnl with_tty
2800
2801 SXE_CHECK_UI_SUFFICIENCY
2802
2803 ## Uncertain options
2804 ## =================
2805 echo
2806 echo "Uncertain options"
2807 echo "================="
2808
2809 ## for native xml support one day
2810 SXE_LANG_CHECK_XML
2811 SXE_CHECK_SUFFICIENCY([libxml2], [xml language])
2812 ## for BoehmGC support one day
2813 SXE_CHECK_BDWGC
2814 SXE_CHECK_SUFFICIENCY([bdwgc], [Boehm-Demers-Weiser GC])
2815
2816 if test "$with_experimental_features_bdwgc" = "yes"; then
2817         AC_MSG_CHECKING([if bdwgc prerequisites are met])
2818         AC_MSG_RESULT([${have_bdwgc}])
2819         have_experimental_features_bdwgc=${have_bdwgc}
2820         if test "${have_bdwgc}" = "yes"; then
2821                 AC_DEFINE([EF_USE_BDWGC], [1],
2822                         [Whether to actually use the BDWGC!])
2823         fi
2824 fi
2825
2826
2827 dnl This one is for the static initializeds variables in
2828 dnl offix.c, so that the thing is dumped after lastfile.o
2829 AC_SUBST(dnd_objs)
2830
2831 dnl Autodetect dll support
2832
2833 LIBSTDCPP=
2834 AC_SUBST(LIBSTDCPP)
2835
2836
2837 ## Multimedia Options
2838 ## ==================
2839 echo
2840 echo "Multimedia Options"
2841 echo "=================="
2842
2843 dnl ----------------------
2844 dnl Graphics libraries
2845 dnl ----------------------
2846
2847 if test "$with_image_xpm" = "yes"; then
2848         SXE_MM_CHECK_XPM([have_image_xpm=yes], [have_image_xpm=no])
2849
2850         AC_MSG_CHECKING([for sufficient xpm support])
2851         if test "$have_image_xpm" = "yes"; then
2852                 AC_MSG_RESULT([yes])
2853                 AC_DEFINE([HAVE_XPM], [1], [Description here!])
2854                 SXE_PREPEND([-lXpm], [MM_LIBS])
2855         else
2856                 AC_MSG_RESULT([no])
2857                 have_image_xpm=no
2858         fi
2859 fi
2860 AM_CONDITIONAL([WITH_BDWGC],
2861         [test "$with_experimental_features_bdwgc" = "yes" -a \
2862               "$have_bdwgc" = "yes"])
2863
2864 if test "$with_image_xface" = "yes"; then
2865         SXE_MM_CHECK_XFACE([have_image_xface=yes], [have_image_xface=no])
2866
2867         AC_MSG_CHECKING([for sufficient xface support])
2868         if test "$have_image_xface" = "yes"; then
2869                 AC_MSG_RESULT([yes])
2870                 AC_DEFINE([HAVE_XFACE], [1], [dnl
2871                         Both compface.h and libcompface have been found.])
2872                 SXE_PREPEND([-lcompface], [MM_LIBS])
2873         else
2874                 AC_MSG_RESULT([no])
2875                 have_image_xface=no
2876         fi
2877 fi
2878
2879 if test "$with_image_gif" = "yes"; then
2880         SXE_MM_CHECK_GIF([have_image_gif=yes], [have_image_gif=no])
2881
2882         AC_MSG_CHECKING([for sufficient gif support])
2883         if test "$have_image_gif" = "yes"; then
2884                 AC_MSG_RESULT([yes])
2885                 AC_DEFINE([HAVE_GIF], [1], [Enable internal GIF decoding])
2886                 SXE_ADD_MM_OBJS(dgif_lib.o gif_io.o)
2887         else
2888                 AC_MSG_RESULT([no])
2889         fi
2890 fi
2891
2892 SXE_MM_SEARCH_INFLATE
2893
2894 if test "$with_image_jpeg" = "yes"; then
2895         SXE_MM_CHECK_JPEG([have_image_jpeg=yes], [have_image_jpeg=no])
2896
2897         AC_MSG_CHECKING([for sufficient jpeg support])
2898         if test "$have_image_jpeg" = "yes"; then
2899                 AC_MSG_RESULT([yes])
2900                 AC_DEFINE([HAVE_JPEG], [1], [
2901                         Both jpeglib.h and libjpeg have been found.])
2902                 SXE_PREPEND([-ljpeg], [MM_LIBS])
2903         else
2904                 AC_MSG_RESULT([no])
2905         fi
2906 fi
2907
2908 if test "$with_image_png" = "yes"; then
2909         AC_DEFINE([WITH_PNG], [1], [Define to 1 if png support is desired.])
2910         SXE_MM_CHECK_PNG([have_image_png="yes"], [have_image_png="no"])
2911
2912         SXE_MSG_CHECKING([for sufficient PNG support])
2913         SXE_MSG_RESULT([${sxe_cv_feat_png}])
2914         if test "$sxe_cv_feat_png" = "yes"; then
2915                 SXE_PREPEND_UNDUP([$PNG_CPPFLAGS], [MM_CPPFLAGS])
2916                 SXE_PREPEND_UNDUP([$PNG_LDFLAGS], [MM_LDFLAGS])
2917                 SXE_PREPEND([$PNG_LIBS], [MM_LIBS])
2918         fi
2919 fi
2920
2921 if test "$with_image_tiff" = "yes"; then
2922         SXE_MM_CHECK_TIFF([have_image_tiff=yes], [have_image_tiff=no])
2923
2924         AC_MSG_CHECKING([for sufficient TIFF support])
2925         if test "$have_image_tiff" = "yes"; then
2926                 AC_MSG_RESULT([yes])
2927                 AC_DEFINE([HAVE_TIFF], [1], [
2928                         Both tiffio.h and libtiff have been found.])
2929                 SXE_PREPEND([-ltiff], [MM_LIBS])
2930         else
2931                 AC_MSG_RESULT([no])
2932         fi
2933 fi
2934
2935 dnl Check for audio output and media stream libraries.
2936
2937 dnl internal media stream analysis support
2938 if test "$with_media_internal" != "no"; then
2939         need_media_internal=yes
2940         have_media_internal=yes
2941 fi
2942
2943 ## Since almost any of the below tests uses pkgconfig we make a 
2944 ## once-for-all-times check now
2945 SXE_SEARCH_CONFIG_PROG([pkg-config])
2946
2947 dnl libsndfile support
2948 if test "$with_media_sndfile" != "no"; then
2949         SXE_MM_CHECK_SNDFILE([have_media_sndfile=yes], [have_media_sndfile=no])
2950
2951         AC_MSG_CHECKING([for sufficient sndfile support])
2952         if test "$have_media_sndfile" = "yes"; then
2953                 AC_MSG_RESULT([yes])
2954                 SNDFILE_LIBS=`$PKG_CONFIG --libs sndfile`
2955                 SNDFILE_CPPFLAGS=`$PKG_CONFIG --cflags sndfile`
2956                 SNDFILE_VERSION=`$PKG_CONFIG --modversion sndfile`
2957                 SXE_PREPEND([$SNDFILE_LIBS], [MM_LIBS])
2958                 SXE_PREPEND_UNDUP([$SNDFILE_CPPFLAGS], [MM_CPPFLAGS])
2959                 SXE_ADD_MM_OBJS([media-sndfile.o])
2960                 AC_DEFINE([HAVE_SNDFILE], [1],
2961                         [Whether we appear to have support for the sndfile library!])
2962                 AC_DEFINE_UNQUOTED([SNDFILE_VERSION], [$SNDFILE_VERSION],
2963                         [Version of the sndfile library!])
2964         else
2965                 AC_MSG_RESULT([no])
2966                 have_media_sndfile=no
2967         fi
2968 fi
2969
2970 dnl libavcodec/libavformat/ffmpeg support
2971 if test "$with_media_ffmpeg" != "no"; then
2972         SXE_MM_CHECK_FFMPEG([have_media_ffmpeg=yes], [have_media_ffmpeg=no])
2973
2974         AC_MSG_CHECKING([for sufficient FFmpeg support])
2975
2976         if test "$have_media_ffmpeg" = "yes"; then
2977                 AC_MSG_RESULT([yes])
2978                 FFMPEG_LIBS=`$PKG_CONFIG --libs libavformat`
2979                 FFMPEG_CPPFLAGS=`$PKG_CONFIG --cflags libavformat`
2980                 SXE_PREPEND($FFMPEG_LIBS, MM_LIBS)
2981                 SXE_PREPEND_UNDUP($FFMPEG_CPPFLAGS, MM_CPPFLAGS)
2982                 SXE_ADD_MM_OBJS([media-ffmpeg.o])
2983                 AC_DEFINE([HAVE_FFMPEG], [1], [Description here!])
2984         else
2985                 AC_MSG_RESULT([no])
2986                 have_media_ffmpeg=no
2987         fi
2988 fi
2989
2990 dnl sox support
2991 if test "$with_media_sox" != "no"; then
2992         ## defines $LIBST_CONFIG
2993         SXE_MM_CHECK_SOX([have_media_sox=yes], [have_media_sox=no])
2994
2995         AC_MSG_CHECKING([for sufficient SoX support])
2996         if test "$sxe_cv_feat_sox" = "yes"; then
2997                 AC_MSG_RESULT([yes])
2998                 SXE_ADD_MM_OBJS([media-sox.o])
2999                 SXE_PREPEND_UNDUP([$sox_cppflags], [MM_CPPFLAGS])
3000                 SXE_PREPEND_UNDUP([$sox_ldflags], [MM_LDFLAGS])
3001                 SXE_PREPEND([$sox_libs], [MM_LIBS])
3002                 AC_DEFINE([HAVE_SOX], [1], [Description here!])
3003         else
3004                 AC_MSG_RESULT(no)
3005                 have_media_sox=no
3006         fi
3007 fi
3008
3009 dnl mad support
3010 if test "$with_media_mad" != "no"; then
3011         SXE_MM_CHECK_MAD([have_media_mad=yes], [have_media_mad=no])
3012
3013         AC_MSG_CHECKING([for sufficient mad support])
3014         if test "$have_media_mad" = "yes"; then
3015                 AC_MSG_RESULT([yes])
3016                 SXE_ADD_MM_OBJS([media-mad.o])
3017                 SXE_PREPEND([-lmad], [MM_LIBS])
3018                 AC_DEFINE([HAVE_MAD], [1], [Description here!])
3019         else
3020                 AC_MSG_RESULT(no)
3021                 have_media_mad=no
3022         fi
3023 fi
3024
3025 ## file/libmagic support
3026 if test "$with_media_magic" != "no"; then
3027         SXE_MM_CHECK_MAGIC([have_media_magic=yes], [have_media_magic=no])
3028
3029         AC_MSG_CHECKING([for sufficient magic support])
3030         if test "$have_media_magic" = "yes"; then
3031                 AC_MSG_RESULT([yes])
3032                 SXE_ADD_MM_OBJS([media-magic.o])
3033                 SXE_PREPEND([-lmagic], [MM_LIBS])
3034                 AC_DEFINE([HAVE_MAGIC], [1], [Whether libmagic is available])
3035         else
3036                 AC_MSG_RESULT([no])
3037                 have_media_magic=no
3038         fi
3039 fi
3040
3041
3042 dnl Autodetect OSS sound
3043 AS_MESSAGE([checking for OSS sound support])
3044 dnl test -z "$with_sound_oss" -a -n "$with_oss_sound_lib" && with_sound_oss=yes
3045
3046 dnl Check for Linux/BSD sound (called OSS)
3047 if test "$with_sound_oss" != "no"; then
3048         SXE_MM_CHECK_OSS([have_sound_oss=yes], [have_sound_oss=no])
3049
3050         AC_MSG_CHECKING([for sufficient OSS support])
3051         if test "$have_sound_oss" = "yes"; then
3052                 AC_MSG_RESULT([yes])
3053                 SXE_ADD_MM_OBJS([sound-oss.o])
3054                 AC_DEFINE([HAVE_INTERNAL_SOUND], [1], [Description here!])
3055                 AC_DEFINE([HAVE_OSS_SOUND], [1], [Description here!])
3056         else
3057                 AC_MSG_RESULT([no])
3058                 have_sound_oss=yes
3059         fi
3060 fi
3061
3062 dnl NAS Sound support
3063 if test "$with_sound_nas" != "no"; then
3064         SXE_MM_CHECK_NAS([have_sound_nas=yes], [have_sound_nas=no])
3065
3066         AC_MSG_CHECKING([for sufficient NAS support])
3067         if test "$have_sound_nas" = "yes"; then
3068                 AC_MSG_RESULT([yes])
3069                 AC_DEFINE([HAVE_NAS_SOUND], [1], [Description here!])
3070                 SXE_ADD_MM_OBJS([sound-nas.o])
3071                 SXE_PREPEND([-laudio], [MM_LIBS])
3072         else
3073                 AC_MSG_RESULT([no])
3074                 have_nas_sound=no
3075         fi
3076 fi
3077
3078 dnl ESD Sound support
3079 if test "$with_sound_esd" != "no"; then
3080         SXE_MM_CHECK_ESD([have_sound_esd=yes], [have_sound_esd=no])
3081
3082         AC_MSG_CHECKING([for sufficient ESD support])
3083         if test "$have_sound_esd" = "yes"; then
3084                 AC_MSG_RESULT([yes])
3085                 need_internal_media=yes
3086                 SXE_ADD_MM_OBJS([sound-esd.o])
3087                 ESD_LIBS=$("${ESD_CONFIG}" --libs)
3088                 SXE_PREPEND(["${ESD_LIBS}"], [MM_LIBS])
3089                 AC_DEFINE([HAVE_ESD_SOUND], [1], [Description here!])
3090         else
3091                 AC_MSG_RESULT([no])
3092                 have_esd_sound=no
3093         fi
3094 fi
3095
3096 dnl PulseAudio Sound support
3097 if test "$with_pulseaudio" != "no"; then
3098         SXE_MM_CHECK_PULSE([have_sound_pulse=yes], [have_sound_pulse=no])
3099
3100         AC_MSG_CHECKING([for sufficient PulseAudio support])
3101         if test "$have_sound_pulse" = "yes"; then
3102                 AC_MSG_RESULT([yes])
3103                 PULSEAUDIO_LIBS=`$PKG_CONFIG --libs libpulse`
3104                 pulse_version=`$PKG_CONFIG --modversion libpulse`
3105                 pulse_major_version=0
3106                 pulse_minor_version=`echo $pulse_version | \
3107                         sed -e "s/0\.\([[0-9]]*\).*/\1/"`
3108                 need_internal_media=yes
3109                 SXE_ADD_MM_OBJS([sound-pulse.o])
3110                 SXE_PREPEND($PULSEAUDIO_LIBS, MM_LIBS)
3111                 AC_DEFINE([HAVE_PULSE_SOUND], [1],
3112                         [Whether to put in support for PulseAudio.])
3113                 AC_DEFINE_UNQUOTED([PULSE_VERSION], [$pulse_minor_version],
3114                         [Version of the underlying pulse lib.])
3115         else
3116                 AC_MSG_RESULT(no)
3117                 have_sound_pulse=no
3118         fi
3119 fi
3120
3121 dnl aRts Sound support
3122 if test "$with_sound_arts" != "no"; then
3123         SXE_MM_CHECK_ARTS([have_sound_arts=yes], [have_sound_arts=no])
3124
3125         AC_MSG_CHECKING([for sufficient aRts support])
3126         if test "$have_sound_arts" = "yes"; then
3127                 AC_MSG_RESULT([yes])
3128                 ARTS_VERSION=`$ARTSC_CONFIG --arts-version`
3129                 ARTS_LIBS=`$ARTSC_CONFIG --libs`
3130                 ARTS_CPPFLAGS=`$ARTSC_CONFIG --cflags`
3131                 SXE_ADD_MM_OBJS([sound-arts.o])
3132                 SXE_PREPEND([$ARTS_LIBS], [MM_LIBS])
3133                 SXE_PREPEND_UNDUP([$ARTS_CPPFLAGS], [MM_CPPFLAGS])
3134                 AC_DEFINE([HAVE_ARTS_SOUND], [1], [Description here!])
3135                 AC_DEFINE_UNQUOTED([ARTS_VERSION], [$ARTS_VERSION],
3136                         [Version number of the underlying arts library])
3137         else
3138                 AC_MSG_RESULT(no)
3139                 have_sound_arts=no
3140         fi
3141
3142 fi
3143
3144 dnl Jack Sound support
3145 if test "$with_sound_jack" != "no"; then
3146         SXE_MM_CHECK_JACK([have_sound_jack=yes], [have_sound_jack=no])
3147
3148         AC_MSG_CHECKING([for sufficient Jack support])
3149         if test "$have_sound_jack" = "yes"; then
3150                 AC_MSG_RESULT([yes])
3151                 dnl okay, we have Jack on the system, but we have no working 
3152                 dnl interface to it :(
3153                 JACK_LIBS=`$PKG_CONFIG --libs jack`
3154                 JACK_VERSION=`$PKG_CONFIG --modversion jack`
3155                 need_internal_media=yes
3156                 SXE_ADD_MM_OBJS([sound-jack.o])
3157                 SXE_PREPEND([$JACK_LIBS], [MM_LIBS])
3158                 AC_DEFINE([HAVE_JACK_SOUND], [1], [Description here!])
3159                 AC_DEFINE_UNQUOTED([JACK_VERSION], [$JACK_VERSION],
3160                         [Description here!])
3161         else
3162                 AC_MSG_RESULT(no)
3163         fi
3164 fi
3165
3166 dnl alsa sound support
3167 if test "$with_sound_alsa" != "no"; then
3168         SXE_MM_CHECK_ALSA([have_sound_alsa=yes], [have_sound_alsa=no])
3169
3170         AC_MSG_CHECKING([for sufficient ALSA support])
3171         if test "$have_sound_alsa" = "yes"; then
3172                 AC_MSG_RESULT([yes])
3173                 SXE_ADD_MM_OBJS([sound-alsa.o])
3174                 SXE_PREPEND([-lasound], [MM_LIBS])
3175         else
3176                 AC_MSG_RESULT(no)
3177                 have_sound_alsa=no
3178         fi
3179 fi
3180
3181 dnl libao sound support
3182 if test "$with_sound_ao" != "no"; then
3183         SXE_MM_CHECK_AO([have_sound_ao=yes], [have_sound_ao=no])
3184
3185         AC_MSG_CHECKING([for sufficient AO support])
3186         if test "$have_sound_ao" = "yes"; then
3187                 AC_MSG_RESULT([yes])
3188                 AO_LIBS=`$PKG_CONFIG --libs ao`
3189                 ao_version=`$PKG_CONFIG --modversion ao`
3190                 SXE_ADD_MM_OBJS([sound-ao.o])
3191                 SXE_PREPEND($AO_LIBS, MM_LIBS)
3192                 AC_DEFINE([HAVE_AO_SOUND], [1], [Description here!])
3193                 AC_DEFINE_UNQUOTED([AO_VERSION], [$ao_version], [Description here!])
3194         else
3195                 AC_MSG_RESULT(no)
3196                 have_sound_ao=no
3197         fi
3198 fi
3199
3200 if test \
3201    "$have_sound_alsa \
3202     $have_sound_ao \
3203     $have_sound_arts \
3204     $have_sound_esd \
3205     $have_sound_jack \
3206     $have_sound_nas \
3207     $have_sound_pulse" != "no 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