Fix misuse of ImageMagick that caused core dump.
[bpt/emacs.git] / configure.ac
CommitLineData
067d23c9
KY
1dnl Autoconf script for GNU Emacs
2dnl To rebuild the `configure' script from this, execute the command
3dnl autoconf
4dnl in the directory containing this script.
5dnl If you changed any AC_DEFINES, also run autoheader.
6dnl
ab422c4d 7dnl Copyright (C) 1994-1996, 1999-2013 Free Software Foundation, Inc.
067d23c9
KY
8dnl
9dnl This file is part of GNU Emacs.
10dnl
11dnl GNU Emacs is free software: you can redistribute it and/or modify
12dnl it under the terms of the GNU General Public License as published by
13dnl the Free Software Foundation, either version 3 of the License, or
14dnl (at your option) any later version.
15dnl
16dnl GNU Emacs is distributed in the hope that it will be useful,
17dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
18dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19dnl GNU General Public License for more details.
20dnl
21dnl You should have received a copy of the GNU General Public License
22dnl along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
23
24AC_PREREQ(2.65)
052f924a 25AC_INIT(emacs, 24.3.50)
1e8725cf 26
60f5e585
GM
27dnl This is the documented way to record the args passed to configure,
28dnl rather than $ac_configure_args.
29emacs_config_options="$@"
1e8725cf
GM
30## Add some environment variables, if they were passed via the environment
31## rather than on the command-line.
32for var in CFLAGS CPPFLAGS LDFLAGS; do
33 case "$emacs_config_options" in
34 *$var=*) continue ;;
35 esac
36 eval val="\$${var}"
37 test x"$val" = x && continue
71b84316 38 emacs_config_options="${emacs_config_options}${emacs_config_options:+ }$var=\"$val\""
1e8725cf
GM
39done
40
067d23c9
KY
41AC_CONFIG_HEADER(src/config.h:src/config.in)
42AC_CONFIG_SRCDIR(src/lisp.h)
24e0f6b1 43AC_CONFIG_AUX_DIR(build-aux)
7d732d1a
GM
44dnl Fairly arbitrary, older versions might work too.
45AM_INIT_AUTOMAKE(1.11)
067d23c9
KY
46
47dnl Support for --program-prefix, --program-suffix and
48dnl --program-transform-name options
49AC_ARG_PROGRAM
50
51dnl It is important that variables on the RHS not be expanded here,
52dnl hence the single quotes. This is per the GNU coding standards, see
53dnl (autoconf) Installation Directory Variables
54dnl See also epaths.h below.
55lispdir='${datadir}/emacs/${version}/lisp'
d71dfe75 56leimdir='${datadir}/emacs/${version}/leim'
ca26824c 57standardlisppath='${lispdir}:${leimdir}'
067d23c9
KY
58locallisppath='${datadir}/emacs/${version}/site-lisp:'\
59'${datadir}/emacs/site-lisp'
ca26824c 60lisppath='${locallisppath}:${standardlisppath}'
067d23c9
KY
61etcdir='${datadir}/emacs/${version}/etc'
62archlibdir='${libexecdir}/emacs/${version}/${configuration}'
63docdir='${datadir}/emacs/${version}/etc'
64gamedir='${localstatedir}/games/emacs'
65
da3d2105
DA
66dnl Special option to disable the most of other options.
67AC_ARG_WITH(all,
68[AS_HELP_STRING([--without-all],
c30d4aef
DA
69 [omit almost all features and build
70 small executable with minimal dependencies])],
da3d2105
DA
71 with_features=$withval,
72 with_features=yes)
c30d4aef 73
067d23c9
KY
74dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING)
75dnl Create a new --with option that defaults to being disabled.
76dnl NAME is the base name of the option. The shell variable with_NAME
77dnl will be set to either the user's value (if the option is
78dnl specified; 'yes' for a plain --with-NAME) or to 'no' (if the
79dnl option is not specified). Note that the shell variable name is
80dnl constructed as autoconf does, by replacing non-alphanumeric
81dnl characters with "_".
82dnl HELP-STRING is the help text for the option.
83AC_DEFUN([OPTION_DEFAULT_OFF], [dnl
84 AC_ARG_WITH([$1],[AS_HELP_STRING([--with-$1],[$2])],[],[dnl
85 m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=no])dnl
86])dnl
87
88dnl OPTION_DEFAULT_ON(NAME, HELP-STRING)
c30d4aef
DA
89dnl Create a new --with option that defaults to $enable_features.
90dnl NAME is the base name of the option. The shell variable with_NAME
067d23c9
KY
91dnl will be set either to 'no' (for a plain --without-NAME) or to
92dnl 'yes' (if the option is not specified). Note that the shell
93dnl variable name is constructed as autoconf does, by replacing
94dnl non-alphanumeric characters with "_".
95dnl HELP-STRING is the help text for the option.
96AC_DEFUN([OPTION_DEFAULT_ON], [dnl
97 AC_ARG_WITH([$1],[AS_HELP_STRING([--without-$1],[$2])],[],[dnl
da3d2105 98 m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=$with_features])dnl
067d23c9
KY
99])dnl
100
101OPTION_DEFAULT_ON([pop],[don't support POP mail retrieval with movemail])
102if test "$with_pop" = yes; then
103 AC_DEFINE(MAIL_USE_POP)
104fi
105AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl
106
107OPTION_DEFAULT_OFF([kerberos],[support Kerberos-authenticated POP])
108if test "$with_kerberos" != no; then
109 AC_DEFINE(KERBEROS)
110fi
111AH_TEMPLATE(KERBEROS,
112 [Define to support Kerberos-authenticated POP mail retrieval.])dnl
113
114OPTION_DEFAULT_OFF([kerberos5],[support Kerberos version 5 authenticated POP])
115if test "${with_kerberos5}" != no; then
116 if test "${with_kerberos}" = no; then
117 with_kerberos=yes
118 AC_DEFINE(KERBEROS)
119 fi
120 AC_DEFINE(KERBEROS5, 1, [Define to use Kerberos 5 instead of Kerberos 4.])
121fi
122
123OPTION_DEFAULT_OFF([hesiod],[support Hesiod to get the POP server host])
124dnl FIXME hesiod support may not be present, so it seems like an error
125dnl to define, or at least use, this unconditionally.
126if test "$with_hesiod" != no; then
127 AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])
128fi
129
130OPTION_DEFAULT_OFF([mmdf],[support MMDF mailboxes])
131if test "$with_mmdf" != no; then
132 AC_DEFINE(MAIL_USE_MMDF, 1, [Define to support MMDF mailboxes in movemail.])
133fi
134
135OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after reading])
136if test "$with_mail_unlink" != no; then
137 AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail spool after reading.])
138fi
139
140AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
141 [string giving default POP mail host])],
142 AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.]))
143
144OPTION_DEFAULT_ON([sound],[don't compile with sound support])
145
067d23c9
KY
146dnl FIXME currently it is not the last.
147dnl This should be the last --with option, because --with-x is
3cc53d60 148dnl added later on when we find the file name of X, and it's best to
067d23c9
KY
149dnl keep them together visually.
150AC_ARG_WITH([x-toolkit],[AS_HELP_STRING([--with-x-toolkit=KIT],
d673aedc 151 [use an X toolkit (KIT one of: yes or gtk, gtk2, gtk3, lucid or athena, motif, no)])],
067d23c9
KY
152[ case "${withval}" in
153 y | ye | yes ) val=gtk ;;
154 n | no ) val=no ;;
155 l | lu | luc | luci | lucid ) val=lucid ;;
156 a | at | ath | athe | athen | athena ) val=athena ;;
157 m | mo | mot | moti | motif ) val=motif ;;
158 g | gt | gtk ) val=gtk ;;
d673aedc 159 gtk2 ) val=gtk2 ;;
067d23c9
KY
160 gtk3 ) val=gtk3 ;;
161 * )
162AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid;
d673aedc
JD
163this option's value should be `yes', `no', `lucid', `athena', `motif', `gtk',
164`gtk2' or `gtk3'. `yes' and `gtk' are synonyms.
165`athena' and `lucid' are synonyms.])
067d23c9
KY
166 ;;
167 esac
168 with_x_toolkit=$val
169])
170
81eafe29
PE
171OPTION_DEFAULT_OFF([wide-int], [prefer wide Emacs integers (typically 62-bit)])
172if test "$with_wide_int" = yes; then
173 AC_DEFINE([WIDE_EMACS_INT], 1, [Use long long for EMACS_INT if available.])
174fi
175
067d23c9
KY
176dnl _ON results in a '--without' option in the --help output, so
177dnl the help text should refer to "don't compile", etc.
178OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support])
179OPTION_DEFAULT_ON([jpeg],[don't compile with JPEG image support])
180OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support])
181OPTION_DEFAULT_ON([gif],[don't compile with GIF image support])
182OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
183OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
184OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
185OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support])
186
187OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
188OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
189OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
190
191OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
192OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
193OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
b612ffc9 194OPTION_DEFAULT_OFF([ns],[use NeXTstep (Cocoa or GNUstep) windowing system])
dc098568 195OPTION_DEFAULT_OFF([w32], [use native MS Windows GUI])
067d23c9
KY
196
197OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
198OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
199OPTION_DEFAULT_ON([gconf],[don't compile with GConf support])
9851bfc5 200OPTION_DEFAULT_ON([gsettings],[don't compile with GSettings support])
067d23c9 201OPTION_DEFAULT_ON([selinux],[don't compile with SELinux support])
7c3d167f 202OPTION_DEFAULT_ON([acl],[don't compile with ACL support])
067d23c9 203OPTION_DEFAULT_ON([gnutls],[don't use -lgnutls for SSL/TLS support])
81606b10 204OPTION_DEFAULT_ON([inotify],[don't compile with inotify (file-watch) support])
067d23c9
KY
205
206## For the times when you want to build Emacs but don't have
207## a suitable makeinfo, and can live without the manuals.
208dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
209OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
210
6c269a38
PE
211## Makefile.in needs the cache file name.
212AC_SUBST(cache_file)
213
067d23c9
KY
214## This is an option because I do not know if all info/man support
215## compressed files, nor how to test if they do so.
216OPTION_DEFAULT_ON([compress-info],[don't compress the installed Info pages])
217if test $with_compress_info = yes; then
218 GZIP_INFO=yes
219else
220 GZIP_INFO=
221fi
222AC_SUBST(GZIP_INFO)
223
224AC_ARG_WITH([pkg-config-prog],dnl
3cc53d60
PE
225[AS_HELP_STRING([--with-pkg-config-prog=FILENAME],
226 [file name of pkg-config for finding GTK and librsvg])])
067d23c9
KY
227if test "X${with_pkg_config_prog}" != X; then
228 if test "${with_pkg_config_prog}" != yes; then
229 PKG_CONFIG="${with_pkg_config_prog}"
230 fi
231fi
232
4fc5868a
UM
233AC_ARG_WITH(gameuser,dnl
234[AS_HELP_STRING([--with-gameuser=USER],[user for shared game score files])])
235test "X${with_gameuser}" != X && test "${with_gameuser}" != yes \
236 && gameuser="${with_gameuser}"
237test "X$gameuser" = X && gameuser=games
238
067d23c9 239AC_ARG_WITH([gnustep-conf],dnl
3cc53d60
PE
240[AS_HELP_STRING([--with-gnustep-conf=FILENAME],
241 [name of GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])])
067d23c9
KY
242test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
243 GNUSTEP_CONFIG_FILE="${with_gnustep_conf}"
244test "X$GNUSTEP_CONFIG_FILE" = "X" && \
245 GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf
246
247AC_ARG_ENABLE(ns-self-contained,
248[AS_HELP_STRING([--disable-ns-self-contained],
249 [disable self contained build under NeXTstep])],
250 EN_NS_SELF_CONTAINED=$enableval,
251 EN_NS_SELF_CONTAINED=yes)
252
067d23c9
KY
253AC_ARG_ENABLE(locallisppath,
254[AS_HELP_STRING([--enable-locallisppath=PATH],
255 [directories Emacs should search for lisp files specific
256 to this site])],
257if test "${enableval}" = "no"; then
258 locallisppath=
259elif test "${enableval}" != "yes"; then
260 locallisppath=${enableval}
261fi)
262
263AC_ARG_ENABLE(checking,
264[AS_HELP_STRING([--enable-checking@<:@=LIST@:>@],
265 [enable expensive run-time checks. With LIST,
266 enable only specific categories of checks.
267 Categories are: all,yes,no.
268 Flags are: stringbytes, stringoverrun, stringfreelist,
e509cfa6 269 xmallocoverrun, conslist, glyphs])],
067d23c9
KY
270[ac_checking_flags="${enableval}"],[])
271IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
272for check in $ac_checking_flags
273do
274 case $check in
275 # these set all the flags to specific states
276 yes) ac_enable_checking=1 ;;
277 no) ac_enable_checking= ;
278 ac_gc_check_stringbytes= ;
279 ac_gc_check_string_overrun= ;
280 ac_gc_check_string_free_list= ;
281 ac_xmalloc_overrun= ;
e509cfa6 282 ac_gc_check_cons_list= ;
94eb8e0a 283 ac_glyphs_debug= ;;
067d23c9
KY
284 all) ac_enable_checking=1 ;
285 ac_gc_check_stringbytes=1 ;
286 ac_gc_check_string_overrun=1 ;
287 ac_gc_check_string_free_list=1 ;
288 ac_xmalloc_overrun=1 ;
e509cfa6 289 ac_gc_check_cons_list=1 ;
94eb8e0a 290 ac_glyphs_debug=1 ;;
067d23c9
KY
291 # these enable particular checks
292 stringbytes) ac_gc_check_stringbytes=1 ;;
293 stringoverrun) ac_gc_check_string_overrun=1 ;;
294 stringfreelist) ac_gc_check_string_free_list=1 ;;
295 xmallocoverrun) ac_xmalloc_overrun=1 ;;
296 conslist) ac_gc_check_cons_list=1 ;;
94eb8e0a 297 glyphs) ac_glyphs_debug=1 ;;
067d23c9
KY
298 *) AC_MSG_ERROR(unknown check category $check) ;;
299 esac
300done
301IFS="$ac_save_IFS"
302
303if test x$ac_enable_checking != x ; then
304 AC_DEFINE(ENABLE_CHECKING, 1,
a54e2c05 305[Define to 1 if expensive run-time data type and consistency checks are enabled.])
067d23c9
KY
306fi
307if test x$ac_gc_check_stringbytes != x ; then
308 AC_DEFINE(GC_CHECK_STRING_BYTES, 1,
309[Define this temporarily to hunt a bug. If defined, the size of
310 strings is redundantly recorded in sdata structures so that it can
311 be compared to the sizes recorded in Lisp strings.])
312fi
40697cd9 313if test x$ac_gc_check_string_overrun != x ; then
067d23c9
KY
314 AC_DEFINE(GC_CHECK_STRING_OVERRUN, 1,
315[Define this to check for short string overrun.])
316fi
317if test x$ac_gc_check_string_free_list != x ; then
318 AC_DEFINE(GC_CHECK_STRING_FREE_LIST, 1,
319[Define this to check the string free list.])
320fi
321if test x$ac_xmalloc_overrun != x ; then
322 AC_DEFINE(XMALLOC_OVERRUN_CHECK, 1,
323[Define this to check for malloc buffer overrun.])
324fi
325if test x$ac_gc_check_cons_list != x ; then
326 AC_DEFINE(GC_CHECK_CONS_LIST, 1,
327[Define this to check for errors in cons list.])
328fi
94eb8e0a 329if test x$ac_glyphs_debug != x ; then
e509cfa6
DA
330 AC_DEFINE(GLYPH_DEBUG, 1,
331[Define this to enable glyphs debugging code.])
332fi
067d23c9 333
646b5f55
AS
334AC_ARG_ENABLE(check-lisp-object-type,
335[AS_HELP_STRING([--enable-check-lisp-object-type],
336 [enable compile time checks for the Lisp_Object data type.
337 This is useful for development for catching certain types of bugs.])],
067d23c9 338if test "${enableval}" != "no"; then
646b5f55
AS
339 AC_DEFINE(CHECK_LISP_OBJECT_TYPE, 1,
340 [Define this to enable compile time checks for the Lisp_Object data type.])
067d23c9
KY
341fi)
342
343
1b3b7caa
GM
344dnl The name of this option is unfortunate. It predates, and has no
345dnl relation to, the "sampling-based elisp profiler" added in 24.3.
346dnl Actually, it stops it working.
347dnl http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00393.html
067d23c9
KY
348AC_ARG_ENABLE(profiling,
349[AS_HELP_STRING([--enable-profiling],
1b3b7caa
GM
350 [build emacs with low-level, gprof profiling support.
351 Mainly useful for debugging Emacs itself. May not work on
352 all platforms. Stops profiler.el working.])],
067d23c9
KY
353[ac_enable_profiling="${enableval}"],[])
354if test x$ac_enable_profiling != x ; then
355 PROFILING_CFLAGS="-DPROFILING=1 -pg"
356else
357 PROFILING_CFLAGS=
358fi
359AC_SUBST(PROFILING_CFLAGS)
360
361AC_ARG_ENABLE(autodepend,
362[AS_HELP_STRING([--enable-autodepend],
363 [automatically generate dependencies to .h-files.
364 Requires GNU Make and Gcc. Enabled if GNU Make and Gcc is
365 found])],
366[ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
367
7ec363cf
JD
368AC_ARG_ENABLE(gtk-deprecation-warnings,
369[AS_HELP_STRING([--enable-gtk-deprecation-warnings],
370 [Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])],
371[ac_enable_gtk_deprecation_warnings="${enableval}"],[])
372
067d23c9 373#### Make srcdir absolute, if it isn't already. It's important to
3cc53d60 374#### avoid running the file name through pwd unnecessarily, since pwd can
067d23c9
KY
375#### give you automounter prefixes, which can go away. We do all this
376#### so Emacs can find its files when run uninstalled.
377## Make sure CDPATH doesn't affect cd (in case PWD is relative).
378unset CDPATH
379case "${srcdir}" in
380 /* ) ;;
381 . )
382 ## We may be able to use the $PWD environment variable to make this
383 ## absolute. But sometimes PWD is inaccurate.
3cc53d60 384 ## Note: we used to use $PWD at the end instead of `pwd`,
067d23c9
KY
385 ## but that tested only for a well-formed and valid PWD,
386 ## it did not object when PWD was well-formed and valid but just wrong.
3cc53d60 387 if test ".$PWD" != "." && test ".`(cd "$PWD" ; sh -c pwd)`" = ".`pwd`" ;
067d23c9
KY
388 then
389 srcdir="$PWD"
390 else
3cc53d60 391 srcdir=`(cd "$srcdir"; pwd)`
067d23c9
KY
392 fi
393 ;;
3cc53d60 394 * ) srcdir=`(cd "$srcdir"; pwd)` ;;
067d23c9
KY
395esac
396
067d23c9
KY
397### Canonicalize the configuration name.
398
399AC_CANONICAL_HOST
400canonical=$host
401configuration=${host_alias-${build_alias-$host}}
402
403dnl This used to use changequote, but, apart from `changequote is evil'
404dnl per the autoconf manual, we can speed up autoconf somewhat by quoting
405dnl the great gob of text. Thus it's not processed for possible expansion.
406dnl Just make sure the brackets remain balanced.
407dnl
408dnl Since Emacs can't find matching pairs of quotes, boundaries are
409dnl indicated by comments.
410dnl quotation begins
411[
412
413### If you add support for a new configuration, add code to this
414### switch statement to recognize your configuration name and select
34374650 415### the appropriate operating system file.
067d23c9 416
34374650 417### You would hope that you could choose an s/*.h
067d23c9 418### file based on the operating system portion. However, it turns out
34374650 419### that each s/*.h file is pretty manufacturer-specific.
067d23c9
KY
420### So we basically have to have a special case for each
421### configuration name.
422###
423### As far as handling version numbers on operating systems is
424### concerned, make sure things will fail in a fixable way. If
425### /etc/MACHINES doesn't say anything about version numbers, be
426### prepared to handle anything reasonably. If version numbers
427### matter, be sure /etc/MACHINES says something about it.
428
34374650 429opsys='' unported=no
067d23c9
KY
430case "${canonical}" in
431
695a3dc5
PE
432 ## GNU/Linux and similar ports
433 *-*-linux* )
d6a003a8 434 opsys=gnu-linux
d6a003a8
AS
435 ;;
436
067d23c9
KY
437 ## FreeBSD ports
438 *-*-freebsd* )
439 opsys=freebsd
067d23c9
KY
440 ;;
441
442 ## FreeBSD kernel + glibc based userland
443 *-*-kfreebsd*gnu* )
444 opsys=gnu-kfreebsd
067d23c9
KY
445 ;;
446
447 ## NetBSD ports
448 *-*-netbsd* )
449 opsys=netbsd
067d23c9
KY
450 ;;
451
452 ## OpenBSD ports
453 *-*-openbsd* )
454 opsys=openbsd
067d23c9
KY
455 ;;
456
067d23c9
KY
457 ## Apple Darwin / Mac OS X
458 *-apple-darwin* )
459 case "${canonical}" in
34374650
PE
460 i[3456]86-* ) ;;
461 powerpc-* ) ;;
462 x86_64-* ) ;;
067d23c9
KY
463 * ) unported=yes ;;
464 esac
465 opsys=darwin
136c45ee
GM
466 ## Use fink packages if available.
467 ## FIXME find a better way to do this: http://debbugs.gnu.org/11507
468## if test -d /sw/include && test -d /sw/lib; then
469## GCC_TEST_OPTIONS="-I/sw/include -L/sw/lib"
470## NON_GCC_TEST_OPTIONS=${GCC_TEST_OPTIONS}
471## fi
067d23c9
KY
472 ;;
473
474 ## HP 9000 series 700 and 800, running HP/UX
475 hppa*-hp-hpux10.2* )
d6a003a8 476 opsys=hpux10-20
067d23c9
KY
477 ;;
478 hppa*-hp-hpux1[1-9]* )
d6a003a8 479 opsys=hpux11
067d23c9
KY
480 CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
481 ;;
482
067d23c9 483 ## IBM machines
067d23c9 484 rs6000-ibm-aix4.[23]* )
34374650 485 opsys=aix4-2
067d23c9
KY
486 ;;
487 powerpc-ibm-aix4.[23]* )
34374650 488 opsys=aix4-2
067d23c9
KY
489 ;;
490 rs6000-ibm-aix[56]* )
34374650 491 opsys=aix4-2
067d23c9
KY
492 ;;
493 powerpc-ibm-aix[56]* )
34374650 494 opsys=aix4-2
067d23c9
KY
495 ;;
496
067d23c9
KY
497 ## Silicon Graphics machines
498 ## Iris 4D
499 mips-sgi-irix6.5 )
76b397fb 500 opsys=irix6-5
067d23c9
KY
501 # Without defining _LANGUAGE_C, things get masked out in the headers
502 # so that, for instance, grepping for `free' in stdlib.h fails and
503 # AC_HEADER_STD_C fails. (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m).
067d23c9
KY
504 NON_GCC_TEST_OPTIONS="-D_LANGUAGE_C"
505 ;;
506
507 ## Suns
067d23c9
KY
508 *-sun-solaris* \
509 | i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
510 | x86_64-*-solaris2* | x86_64-*-sunos5*)
511 case "${canonical}" in
34374650
PE
512 i[3456]86-*-* ) ;;
513 amd64-*-*|x86_64-*-*) ;;
514 sparc* ) ;;
067d23c9
KY
515 * ) unported=yes ;;
516 esac
517 case "${canonical}" in
518 *-sunos5.6* | *-solaris2.6* )
519 opsys=sol2-6
067d23c9
KY
520 RANLIB="ar -ts"
521 ;;
522 *-sunos5.[7-9]* | *-solaris2.[7-9]* )
523 opsys=sol2-6
524 emacs_check_sunpro_c=yes
067d23c9
KY
525 ;;
526 *-sunos5* | *-solaris* )
527 opsys=sol2-10
528 emacs_check_sunpro_c=yes
067d23c9
KY
529 ;;
530 esac
531 ## Watch out for a compiler that we know will not work.
532 case "${canonical}" in
533 *-solaris* | *-sunos5* )
534 if [ "x$CC" = x/usr/ucb/cc ]; then
535 ## /usr/ucb/cc doesn't work;
536 ## we should find some other compiler that does work.
537 unset CC
538 fi
539 ;;
540 *) ;;
541 esac
542 ;;
543
067d23c9
KY
544 ## Intel 386 machines where we don't care about the manufacturer.
545 i[3456]86-*-* )
067d23c9
KY
546 case "${canonical}" in
547 *-cygwin ) opsys=cygwin ;;
27cb7be2 548 *-darwin* ) opsys=darwin ;;
f04940ae
PE
549 *-sysv4.2uw* ) opsys=unixware ;;
550 *-sysv5uw* ) opsys=unixware ;;
551 *-sysv5OpenUNIX* ) opsys=unixware ;;
067d23c9
KY
552 ## Otherwise, we'll fall through to the generic opsys code at the bottom.
553 esac
554 ;;
555
067d23c9
KY
556 * )
557 unported=yes
558 ;;
559esac
560
561### If the code above didn't choose an operating system, just choose
562### an operating system based on the configuration name. You really
563### only want to use this when you have no idea what the right
564### operating system is; if you know what operating systems a machine
565### runs, it's cleaner to make it explicit in the case statement
566### above.
567if test x"${opsys}" = x; then
568 case "${canonical}" in
569 *-gnu* ) opsys=gnu ;;
570 * )
571 unported=yes
572 ;;
573 esac
574fi
575
576]
577dnl quotation ends
578
579if test $unported = yes; then
580 AC_MSG_ERROR([Emacs hasn't been ported to `${canonical}' systems.
581Check `etc/MACHINES' for recognized configuration names.])
582fi
583
067d23c9
KY
584
585#### Choose a compiler.
27cb7be2 586
067d23c9
KY
587dnl Sets GCC=yes if using gcc.
588AC_PROG_CC
9a514d4a
PE
589AM_PROG_CC_C_O
590
067d23c9
KY
591if test x$GCC = xyes; then
592 test "x$GCC_TEST_OPTIONS" != x && CC="$CC $GCC_TEST_OPTIONS"
593else
594 test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
595fi
596
73dcdb9f
PE
597# Avoid gnulib's tests for O_NOATIME and O_NOFOLLOW, as we don't use them.
598AC_DEFUN([gl_FCNTL_O_FLAGS])
a615a3ae
PE
599# Avoid gnulib's threadlib module, as we do threads our own way.
600AC_DEFUN([gl_THREADLIB])
601
f04940ae 602# Initialize gnulib right after choosing the compiler.
58eaa9ec 603dnl Amongst other things, this sets AR and ARFLAGS.
f04940ae
PE
604gl_EARLY
605
6e8aca60
PE
606# It's helpful to have C macros available to GDB, so prefer -g3 to -g
607# if -g3 works and the user does not specify CFLAGS.
608# This test must follow gl_EARLY; otherwise AC_LINK_IFELSE complains.
609if test "$ac_test_CFLAGS" != set; then
610 case $CFLAGS in
611 '-g')
612 emacs_g3_CFLAGS='-g3';;
613 '-g -O2')
614 emacs_g3_CFLAGS='-g3 -O2';;
615 *)
616 emacs_g3_CFLAGS='';;
617 esac
618 if test -n "$emacs_g3_CFLAGS"; then
619 emacs_save_CFLAGS=$CFLAGS
620 CFLAGS=$emacs_g3_CFLAGS
621 AC_CACHE_CHECK([whether $CC accepts $emacs_g3_CFLAGS],
622 [emacs_cv_prog_cc_g3],
623 [AC_LINK_IFELSE([AC_LANG_PROGRAM()],
624 [emacs_cv_prog_cc_g3=yes],
625 [emacs_cv_prog_cc_g3=no])])
626 if test $emacs_cv_prog_cc_g3 = yes; then
627 CFLAGS=$emacs_g3_CFLAGS
628 else
629 CFLAGS=$emacs_save_CFLAGS
630 fi
631 fi
632fi
633
b8df54ff
PE
634AC_ARG_ENABLE([gcc-warnings],
635 [AS_HELP_STRING([--enable-gcc-warnings],
c4e2ba0a 636 [turn on lots of GCC warnings/errors. This is intended for
f5c08e17
PE
637 developers, and may generate false alarms when used
638 with older or non-GNU development tools.])],
b8df54ff
PE
639 [case $enableval in
640 yes|no) ;;
641 *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
642 esac
643 gl_gcc_warnings=$enableval],
644 [gl_gcc_warnings=no]
645)
646
94eb8e0a
DA
647AC_ARG_ENABLE(link-time-optimization,
648[AS_HELP_STRING([--enable-link-time-optimization],
649 [build emacs with link-time optimization.
650 This is supported only for GCC since 4.5.0.])],
651if test "${enableval}" != "no"; then
652 AC_MSG_CHECKING([whether link-time optimization is supported])
653 ac_lto_supported=no
654 if test x$GCC = xyes; then
655 CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null`
656 if test x$CPUS != x; then
657 LTO="-flto=$CPUS"
658 else
659 LTO="-flto"
f5c08e17 660 fi
94eb8e0a
DA
661 old_CFLAGS=$CFLAGS
662 CFLAGS="$CFLAGS $LTO"
663 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
664 [ac_lto_supported=yes], [ac_lto_supported=no])
665 CFLAGS="$old_CFLAGS"
666 fi
667 AC_MSG_RESULT([$ac_lto_supported])
668 if test "$ac_lto_supported" = "yes"; then
669 CFLAGS="$CFLAGS $LTO"
670 fi
671fi)
672
b8df54ff
PE
673# gl_GCC_VERSION_IFELSE([major], [minor], [run-if-found], [run-if-not-found])
674# ------------------------------------------------
675# If $CPP is gcc-MAJOR.MINOR or newer, then run RUN-IF-FOUND.
676# Otherwise, run RUN-IF-NOT-FOUND.
677AC_DEFUN([gl_GCC_VERSION_IFELSE],
678 [AC_PREPROC_IFELSE(
679 [AC_LANG_PROGRAM(
680 [[
681#if ($1) < __GNUC__ || (($1) == __GNUC__ && ($2) <= __GNUC_MINOR__)
682/* ok */
683#else
684# error "your version of gcc is older than $1.$2"
685#endif
686 ]]),
687 ], [$3], [$4])
688 ]
689)
690
691# When compiling with GCC, prefer -isystem to -I when including system
692# include files, to avoid generating useless diagnostics for the files.
693if test "$gl_gcc_warnings" != yes; then
694 isystem='-I'
695else
696 isystem='-isystem '
697
698 # This, $nw, is the list of warnings we disable.
699 nw=
700
701 case $with_x_toolkit in
702 lucid | athena | motif)
703 # Old toolkits mishandle 'const'.
704 nw="$nw -Wwrite-strings"
705 ;;
706 *)
707 gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
708 ;;
709 esac
710 AC_SUBST([WERROR_CFLAGS])
711
712 nw="$nw -Waggregate-return" # anachronistic
a74e8e38 713 nw="$nw -Wlong-long" # C90 is anachronistic
b8df54ff
PE
714 nw="$nw -Wc++-compat" # We don't care about C++ compilers
715 nw="$nw -Wundef" # Warns on '#if GNULIB_FOO' etc in gnulib
716 nw="$nw -Wtraditional" # Warns on #elif which we use often
717 nw="$nw -Wcast-qual" # Too many warnings for now
718 nw="$nw -Wconversion" # Too many warnings for now
719 nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings
720 nw="$nw -Wsign-conversion" # Too many warnings for now
721 nw="$nw -Woverlength-strings" # Not a problem these days
722 nw="$nw -Wtraditional-conversion" # Too many warnings for now
6045c4fd 723 nw="$nw -Wunreachable-code" # so buggy that it's now silently ignored
b8df54ff 724 nw="$nw -Wpadded" # Our structs are not padded
6045c4fd 725 nw="$nw -Wredundant-decls" # we regularly (re)declare functions
b8df54ff 726 nw="$nw -Wlogical-op" # any use of fwrite provokes this
6045c4fd 727 nw="$nw -Wformat-nonliteral" # we do this a lot
b8df54ff
PE
728 nw="$nw -Wvla" # warnings in gettext.h
729 nw="$nw -Wnested-externs" # use of XARGMATCH/verify_function__
730 nw="$nw -Wswitch-enum" # Too many warnings for now
731 nw="$nw -Wswitch-default" # Too many warnings for now
6045c4fd
PE
732 nw="$nw -Wfloat-equal" # warns about high-quality code
733 nw="$nw -Winline" # OK to ignore 'inline'
79a7bafe 734 nw="$nw -Wjump-misses-init" # We sometimes safely jump over init.
d7fcbbfe
PE
735 nw="$nw -Wstrict-overflow" # OK to optimize assuming that
736 # signed overflow has undefined behavior
6045c4fd
PE
737 nw="$nw -Wsync-nand" # irrelevant here, and provokes ObjC warning
738 nw="$nw -Wunsafe-loop-optimizations" # OK to suppress unsafe optimizations
b8df54ff
PE
739
740 # Emacs doesn't care about shadowing; see
741 # <http://lists.gnu.org/archive/html/emacs-diffs/2011-11/msg00265.html>.
742 nw="$nw -Wshadow"
743
a8e1690b
PE
744 # Emacs's use of alloca inhibits protecting the stack.
745 nw="$nw -Wstack-protector"
746
8ea5c4de 747 # The following line should be removable at some point.
b8df54ff
PE
748 nw="$nw -Wsuggest-attribute=pure"
749
750 gl_MANYWARN_ALL_GCC([ws])
751 gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
752 for w in $ws; do
753 gl_WARN_ADD([$w])
754 done
755 gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one
756 gl_WARN_ADD([-Wno-sign-compare]) # Too many warnings for now
757 gl_WARN_ADD([-Wno-type-limits]) # Too many warnings for now
758 gl_WARN_ADD([-Wno-switch]) # Too many warnings for now
759 gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
760 gl_WARN_ADD([-Wno-format-nonliteral])
761
762 # In spite of excluding -Wlogical-op above, it is enabled, as of
763 # gcc 4.5.0 20090517.
764 gl_WARN_ADD([-Wno-logical-op])
765
766 gl_WARN_ADD([-fdiagnostics-show-option])
767 gl_WARN_ADD([-funit-at-a-time])
768
b8df54ff 769 AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
2d3800d2
PE
770 AH_VERBATIM([FORTIFY_SOURCE],
771 [/* Enable compile-time and run-time bounds-checking, and some warnings,
772 without upsetting glibc 2.15+. */
7f8de58c 773 #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
2d3800d2
PE
774 # define _FORTIFY_SOURCE 2
775 #endif
776 ])
b8df54ff
PE
777 AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
778
779 # We use a slightly smaller set of warning options for lib/.
780 # Remove the following and save the result in GNULIB_WARN_CFLAGS.
781 nw=
782 nw="$nw -Wunused-macros"
783
784 gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
785 AC_SUBST([GNULIB_WARN_CFLAGS])
067d23c9 786fi
067d23c9 787
067d23c9
KY
788
789
f04940ae
PE
790dnl Some other nice autoconf tests.
791dnl These are commented out, since gl_EARLY and/or Autoconf already does them.
792dnl AC_PROG_INSTALL
793dnl AC_PROG_MKDIR_P
794dnl if test "x$RANLIB" = x; then
795dnl AC_PROG_RANLIB
796dnl fi
9aa0092c 797AC_PROG_LN_S
067d23c9 798
0e7a053e
PE
799AC_PATH_PROG(INSTALL_INFO, install-info, :,
800 $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin)
067d23c9
KY
801dnl Don't use GZIP, which is used by gzip for additional parameters.
802AC_PATH_PROG(GZIP_PROG, gzip)
803
0b6b25d5
GM
804if test $opsys = gnu-linux; then
805 AC_PATH_PROG(PAXCTL, paxctl,,
806 [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin])
32d9ba9a
UM
807 if test "X$PAXCTL" != X; then
808 AC_MSG_CHECKING([whether binaries have a PT_PAX_FLAGS header])
809 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
810 [if $PAXCTL -v conftest$EXEEXT >/dev/null 2>&1; then AC_MSG_RESULT(yes)
811 else AC_MSG_RESULT(no); PAXCTL=""; fi])
812 fi
0b6b25d5 813fi
067d23c9 814
23df914b 815## Need makeinfo >= 4.7 (?) to build the manuals.
067d23c9
KY
816AC_PATH_PROG(MAKEINFO, makeinfo, no)
817dnl By this stage, configure has already checked for egrep and set EGREP,
818dnl or exited with an error if no egrep was found.
3cc53d60
PE
819if test "$MAKEINFO" != "no"; then
820 case `
75d7aa24 821 $MAKEINFO --version 2> /dev/null |
3cc53d60
PE
822 $EGREP 'texinfo[[^0-9]]*([[1-4]][[0-9]]+|[[5-9]]|4\.[[7-9]]|4\.[[1-6]][[0-9]]+)'
823 ` in
824 '') MAKEINFO=no;;
825 esac
067d23c9
KY
826fi
827
828## Makeinfo is unusual. For a released Emacs, the manuals are
829## pre-built, and not deleted by the normal clean rules. makeinfo is
830## therefore in the category of "special tools" not normally required, which
831## configure does not have to check for (eg autoconf itself).
832## In a Bazaar checkout on the other hand, the manuals are not included.
833## So makeinfo is a requirement to build from Bazaar, and configure
834## should test for it as it does for any other build requirement.
835## We use the presence of $srcdir/info/emacs to distinguish a release,
836## with pre-built manuals, from a Bazaar checkout.
e5365138
GM
837HAVE_MAKEINFO=yes
838
067d23c9 839if test "$MAKEINFO" = "no"; then
e5365138 840 MAKEINFO=makeinfo
067d23c9 841 if test "x${with_makeinfo}" = "xno"; then
e5365138 842 HAVE_MAKEINFO=no
3cc53d60 843 elif test ! -e "$srcdir/info/emacs" && test ! -e "$srcdir/info/emacs.info"; then
23df914b 844 AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.7, and your
067d23c9
KY
845source tree does not seem to have pre-built manuals in the `info' directory.
846Either install a suitable version of makeinfo, or re-run configure
847with the `--without-makeinfo' option to build without the manuals.] )
848 fi
849fi
e5365138 850AC_SUBST(HAVE_MAKEINFO)
067d23c9 851
8045b906
GM
852dnl Just so that there is only a single place we need to edit.
853INFO_EXT=.info
854INFO_OPTS=--no-split
855AC_SUBST(INFO_EXT)
856AC_SUBST(INFO_OPTS)
857
067d23c9
KY
858dnl Add our options to ac_link now, after it is set up.
859
860if test x$GCC = xyes; then
861 test "x$GCC_LINK_TEST_OPTIONS" != x && \
862 ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
863else
864 test "x$NON_GCC_LINK_TEST_OPTIONS" != x && \
865 ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
866fi
867
868dnl We need -znocombreloc if we're using a relatively recent GNU ld.
869dnl If we can link with the flag, it shouldn't do any harm anyhow.
870dnl (Don't use `-z nocombreloc' as -z takes no arg on Irix.)
871dnl Treat GCC specially since it just gives a non-fatal `unrecognized option'
872dnl if not built to support GNU ld.
873
874late_LDFLAGS=$LDFLAGS
875if test x$GCC = xyes; then
876 LDFLAGS="$LDFLAGS -Wl,-znocombreloc"
877else
878 LDFLAGS="$LDFLAGS -znocombreloc"
879fi
880
881AC_MSG_CHECKING([for -znocombreloc])
882AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
883 [AC_MSG_RESULT(yes)],
884 LDFLAGS=$late_LDFLAGS
885 [AC_MSG_RESULT(no)])
886
887
067d23c9
KY
888dnl The function dump-emacs will not be defined and temacs will do
889dnl (load "loadup") automatically unless told otherwise.
4004ef46 890test "x$CANNOT_DUMP" = "x" && CANNOT_DUMP=no
067d23c9 891case "$opsys" in
4004ef46 892 your-opsys-here) CANNOT_DUMP=yes ;;
067d23c9 893esac
4004ef46
GM
894
895test "$CANNOT_DUMP" = "yes" && \
896 AC_DEFINE(CANNOT_DUMP, 1, [Define if Emacs cannot be dumped on your system.])
897
067d23c9
KY
898AC_SUBST(CANNOT_DUMP)
899
900
901UNEXEC_OBJ=unexelf.o
902case "$opsys" in
903 # MSDOS uses unexcoff.o
904 # MSWindows uses unexw32.o
905 aix4-2)
906 UNEXEC_OBJ=unexaix.o
907 ;;
908 cygwin)
909 UNEXEC_OBJ=unexcw.o
910 ;;
911 darwin)
912 UNEXEC_OBJ=unexmacosx.o
913 ;;
914 hpux10-20 | hpux11)
915 UNEXEC_OBJ=unexhp9k800.o
916 ;;
917 sol2-10)
918 # Use the Solaris dldump() function, called from unexsol.c, to dump
919 # emacs, instead of the generic ELF dump code found in unexelf.c.
920 # The resulting binary has a complete symbol table, and is better
921 # for debugging and other observability tools (debuggers, pstack, etc).
b06b1098 922 #
067d23c9
KY
923 # If you encounter a problem using dldump(), please consider sending
924 # a message to the OpenSolaris tools-linking mailing list:
925 # http://mail.opensolaris.org/mailman/listinfo/tools-linking
b06b1098 926 #
067d23c9
KY
927 # It is likely that dldump() works with older Solaris too, but this has
928 # not been tested, so for now this change is for Solaris 10 or newer.
929 UNEXEC_OBJ=unexsol.o
930 ;;
931esac
932
933LD_SWITCH_SYSTEM=
934case "$opsys" in
935 freebsd)
936 ## Let `ld' find image libs and similar things in /usr/local/lib.
937 ## The system compiler, GCC, has apparently been modified to not
938 ## look there, contrary to what a stock GCC would do.
3c30e766
GM
939### It's not our place to do this. See bug#10313#17.
940### LD_SWITCH_SYSTEM=-L/usr/local/lib
941 :
067d23c9
KY
942 ;;
943
944 gnu-linux)
945 ## cpp test was "ifdef __mips__", but presumably this is equivalent...
d6a003a8 946 case $host_cpu in mips*) LD_SWITCH_SYSTEM="-G 0";; esac
067d23c9
KY
947 ;;
948
949 netbsd)
3c30e766
GM
950### It's not our place to do this. See bug#10313#17.
951### LD_SWITCH_SYSTEM="-Wl,-rpath,/usr/pkg/lib -L/usr/pkg/lib -Wl,-rpath,/usr/local/lib -L/usr/local/lib"
952 :
067d23c9
KY
953 ;;
954
955 openbsd)
956 ## Han Boetes <han@mijncomputer.nl> says this is necessary,
957 ## otherwise Emacs dumps core on elf systems.
958 LD_SWITCH_SYSTEM="-Z"
959 ;;
960esac
961AC_SUBST(LD_SWITCH_SYSTEM)
962
963ac_link="$ac_link $LD_SWITCH_SYSTEM"
964
4d5c6349 965## This setting of LD_SWITCH_SYSTEM references LD_SWITCH_X_SITE_RPATH,
067d23c9
KY
966## which has not been defined yet. When this was handled with cpp,
967## it was expanded to null when configure sourced the s/*.h file.
968## Thus LD_SWITCH_SYSTEM had different values in configure and the Makefiles.
969## FIXME it would be cleaner to put this in LD_SWITCH_SYSTEM_TEMACS
970## (or somesuch), but because it is supposed to go at the _front_
971## of LD_SWITCH_SYSTEM, we cannot do that in exactly the same way.
972## Compare with the gnu-linux case below, which added to the end
973## of LD_SWITCH_SYSTEM, and so can instead go at the front of
974## LD_SWITCH_SYSTEM_TEMACS.
975case "$opsys" in
976 netbsd|openbsd)
4d5c6349 977 LD_SWITCH_SYSTEM="\$(LD_SWITCH_X_SITE_RPATH) $LD_SWITCH_SYSTEM" ;;
067d23c9
KY
978esac
979
980
981C_SWITCH_MACHINE=
34374650
PE
982case $canonical in
983 alpha*)
067d23c9
KY
984 AC_CHECK_DECL([__ELF__])
985 if test "$ac_cv_have_decl___ELF__" = "yes"; then
986 ## With ELF, make sure that all common symbols get allocated to in the
987 ## data section. Otherwise, the dump of temacs may miss variables in
988 ## the shared library that have been initialized. For example, with
989 ## GNU libc, __malloc_initialized would normally be resolved to the
990 ## shared library's .bss section, which is fatal.
991 if test "x$GCC" = "xyes"; then
992 C_SWITCH_MACHINE="-fno-common"
993 else
994 AC_MSG_ERROR([What gives? Fix me if DEC Unix supports ELF now.])
995 fi
996 else
b06b1098 997 UNEXEC_OBJ=unexalpha.o
067d23c9 998 fi
34374650
PE
999 ;;
1000esac
067d23c9
KY
1001AC_SUBST(C_SWITCH_MACHINE)
1002
1003AC_SUBST(UNEXEC_OBJ)
1004
1005C_SWITCH_SYSTEM=
1006## Some programs in src produce warnings saying certain subprograms
1007## are too complex and need a MAXMEM value greater than 2000 for
1008## additional optimization. --nils@exp-math.uni-essen.de
1009test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
1010 C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
1011## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
1012## It is redundant in glibc2, since we define _GNU_SOURCE.
1013AC_SUBST(C_SWITCH_SYSTEM)
1014
1015
1016LIBS_SYSTEM=
1017case "$opsys" in
1018 ## IBM's X11R5 uses -lIM and -liconv in AIX 3.2.2.
1019 aix4-2) LIBS_SYSTEM="-lrts -lIM -liconv" ;;
1020
1021 freebsd) LIBS_SYSTEM="-lutil" ;;
1022
1023 hpux*) LIBS_SYSTEM="-l:libdld.sl" ;;
1024
1f5d53eb 1025 sol2*) LIBS_SYSTEM="-lsocket -lnsl" ;;
067d23c9
KY
1026
1027 ## Motif needs -lgen.
1028 unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
1029esac
1030AC_SUBST(LIBS_SYSTEM)
1031
1032
1033### Make sure subsequent tests use flags consistent with the build flags.
1034
1035if test x"${OVERRIDE_CPPFLAGS}" != x; then
1036 CPPFLAGS="${OVERRIDE_CPPFLAGS}"
1037else
1038 CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
1039fi
1040
c1e127f9
PE
1041# Suppress obsolescent Autoconf test for size_t; Emacs assumes C89 or better.
1042AC_DEFUN([AC_TYPE_SIZE_T])
2a84b02d
PE
1043# Likewise for obsolescent test for uid_t, gid_t; Emacs assumes them.
1044AC_DEFUN([AC_TYPE_UID_T])
c1e127f9 1045
067d23c9 1046
067d23c9 1047LIB_MATH=-lm
a9be7d2b
GM
1048dnl Current possibilities handled by sed (aix4-2 -> aix,
1049dnl gnu-linux -> gnu/linux, etc.):
1050dnl gnu, gnu/linux, gnu/kfreebsd, aix, cygwin, darwin, hpux, irix.
1051dnl And special cases: berkeley-unix, usg-unix-v, ms-dos, windows-nt.
98d8c1f9 1052SYSTEM_TYPE=`echo $opsys | sed -e 's/[[0-9]].*//' -e 's|-|/|'`
067d23c9
KY
1053
1054case $opsys in
1055 cygwin )
1056 LIB_MATH=
067d23c9
KY
1057 ;;
1058 darwin )
1059 ## Adding -lm confuses the dynamic linker, so omit it.
1060 LIB_MATH=
067d23c9
KY
1061 ;;
1062 freebsd )
a9be7d2b 1063 SYSTEM_TYPE=berkeley-unix
067d23c9
KY
1064 ;;
1065 gnu-linux | gnu-kfreebsd )
067d23c9
KY
1066 ;;
1067 hpux10-20 | hpux11 )
067d23c9 1068 ;;
0538fab0 1069 dnl NB this may be adjusted below.
067d23c9 1070 netbsd | openbsd )
a9be7d2b 1071 SYSTEM_TYPE=berkeley-unix
067d23c9 1072 ;;
a9be7d2b
GM
1073
1074 sol2* | unixware )
1075 SYSTEM_TYPE=usg-unix-v
1076 ;;
1077
067d23c9
KY
1078esac
1079
1080AC_SUBST(LIB_MATH)
a9be7d2b
GM
1081AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE",
1082 [The type of system you are compiling for; sets `system-type'.])
067d23c9 1083
adbc4ef4 1084
5dad233c
PE
1085pre_PKG_CONFIG_CFLAGS=$CFLAGS
1086pre_PKG_CONFIG_LIBS=$LIBS
d35af63c 1087
0e7a053e
PE
1088AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1089
067d23c9
KY
1090dnl This function definition taken from Gnome 2.0
1091dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
1092dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
1093dnl also defines GSTUFF_PKG_ERRORS on error
1094AC_DEFUN([PKG_CHECK_MODULES], [
1095 succeeded=no
1096
067d23c9
KY
1097 if test "$PKG_CONFIG" = "no" ; then
1098 ifelse([$4], , [AC_MSG_ERROR([
3cc53d60 1099 *** The pkg-config script could not be found. Make sure it is in your path, or give the full name of pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog. Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config.])], [$4])
067d23c9
KY
1100 else
1101 PKG_CONFIG_MIN_VERSION=0.9.0
75d7aa24 1102 if "$PKG_CONFIG" --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
067d23c9
KY
1103 AC_MSG_CHECKING(for $2)
1104
3cc53d60
PE
1105 if "$PKG_CONFIG" --exists "$2" 2>&AS_MESSAGE_LOG_FD &&
1106 $1_CFLAGS=`"$PKG_CONFIG" --cflags "$2" 2>&AS_MESSAGE_LOG_FD` &&
1107 $1_LIBS=`"$PKG_CONFIG" --libs "$2" 2>&AS_MESSAGE_LOG_FD`; then
b8df54ff
PE
1108 edit_cflags="
1109 s,///*,/,g
1110 s/^/ /
1111 s/ -I/ $isystem/g
1112 s/^ //
1113 "
1114 $1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"`
bf6bba2b
PE
1115 $1_LIBS=`AS_ECHO(["$$1_LIBS"]) | sed -e 's,///*,/,g'`
1116 AC_MSG_RESULT([yes CFLAGS='$$1_CFLAGS' LIBS='$$1_LIBS'])
1117 succeeded=yes
067d23c9
KY
1118 else
1119 AC_MSG_RESULT(no)
1120 $1_CFLAGS=""
1121 $1_LIBS=""
1122 ## If we have a custom action on failure, don't print errors, but
e3141fcf
PE
1123 ## do set a variable so people can do so. Do it in a subshell
1124 ## to capture any diagnostics in invoking pkg-config.
3cc53d60 1125 $1_PKG_ERRORS=`("$PKG_CONFIG" --print-errors "$2") 2>&1`
e3141fcf 1126 ifelse([$4], ,echo "$$1_PKG_ERRORS",)
067d23c9
KY
1127 fi
1128
1129 AC_SUBST($1_CFLAGS)
1130 AC_SUBST($1_LIBS)
1131 else
1132 echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
1133 echo "*** See http://www.freedesktop.org/software/pkgconfig"
1134 fi
1135 fi
1136
1137 if test $succeeded = yes; then
1138 ifelse([$3], , :, [$3])
1139 else
1140 ifelse([$4], , [AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.])], [$4])
1141 fi
1142])
1143
1144
1145if test "${with_sound}" != "no"; then
1146 # Sound support for GNU/Linux and the free BSDs.
b06b1098 1147 AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h,
067d23c9
KY
1148 have_sound_header=yes)
1149 # Emulation library used on NetBSD.
1150 AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
1151 AC_SUBST(LIBSOUND)
1152
1153 ALSA_REQUIRED=1.0.0
1154 ALSA_MODULES="alsa >= $ALSA_REQUIRED"
1155 PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
1156 if test $HAVE_ALSA = yes; then
1157 SAVE_CFLAGS="$CFLAGS"
46d14be7 1158 SAVE_LIBS="$LIBS"
067d23c9 1159 CFLAGS="$ALSA_CFLAGS $CFLAGS"
46d14be7 1160 LIBS="$ALSA_LIBS $LIBS"
181855e6 1161 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])],
067d23c9
KY
1162 emacs_alsa_normal=yes,
1163 emacs_alsa_normal=no)
1164 if test "$emacs_alsa_normal" != yes; then
181855e6
GM
1165 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]],
1166 [[snd_lib_error_set_handler (0);]])],
067d23c9
KY
1167 emacs_alsa_subdir=yes,
1168 emacs_alsa_subdir=no)
1169 if test "$emacs_alsa_subdir" != yes; then
1170 AC_MSG_ERROR([pkg-config found alsa, but it does not compile. See config.log for error messages.])
1171 fi
1172 ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
1173 fi
1174
1175 CFLAGS="$SAVE_CFLAGS"
46d14be7 1176 LIBS="$SAVE_LIBS"
067d23c9
KY
1177 LIBSOUND="$LIBSOUND $ALSA_LIBS"
1178 CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
1179 AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
1180 fi
1181
1182 dnl Define HAVE_SOUND if we have sound support. We know it works and
1183 dnl compiles only on the specified platforms. For others, it
1184 dnl probably doesn't make sense to try.
1185 if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
1186 case "$opsys" in
1187 dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
1188 gnu-linux|freebsd|netbsd)
1189 AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.])
1190 ;;
1191 esac
1192 fi
1193
1194 AC_SUBST(CFLAGS_SOUND)
1195fi
1196
1197dnl checks for header files
0e7a053e 1198AC_CHECK_HEADERS_ONCE(
0e7a053e 1199 linux/version.h sys/systeminfo.h
49cdacda 1200 coff.h pty.h
1ddc2bd6 1201 sys/resource.h
95ef7787 1202 sys/utsname.h pwd.h utmp.h util.h)
067d23c9
KY
1203
1204AC_MSG_CHECKING(if personality LINUX32 can be set)
181855e6 1205AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/personality.h>]], [[personality (PER_LINUX32)]])],
067d23c9
KY
1206 emacs_cv_personality_linux32=yes,
1207 emacs_cv_personality_linux32=no)
1208AC_MSG_RESULT($emacs_cv_personality_linux32)
1209
1210if test $emacs_cv_personality_linux32 = yes; then
1211 AC_DEFINE(HAVE_PERSONALITY_LINUX32, 1,
1212 [Define to 1 if personality LINUX32 can be set.])
1213fi
1214
1215dnl On Solaris 8 there's a compilation warning for term.h because
1216dnl it doesn't define `bool'.
1217AC_CHECK_HEADERS(term.h, , , -)
067d23c9 1218AC_HEADER_TIME
c622b48f
PE
1219AC_CHECK_DECLS([sys_siglist], [], [], [[#include <signal.h>
1220 ]])
067d23c9
KY
1221if test $ac_cv_have_decl_sys_siglist != yes; then
1222 # For Tru64, at least:
c622b48f
PE
1223 AC_CHECK_DECLS([__sys_siglist], [], [], [[#include <signal.h>
1224 ]])
067d23c9
KY
1225 if test $ac_cv_have_decl___sys_siglist = yes; then
1226 AC_DEFINE(sys_siglist, __sys_siglist,
1227 [Define to any substitute for sys_siglist.])
1228 fi
1229fi
1230AC_HEADER_SYS_WAIT
1231
067d23c9
KY
1232dnl Check for speed_t typedef.
1233AC_CACHE_CHECK(for speed_t, emacs_cv_speed_t,
181855e6 1234 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <termios.h>]], [[speed_t x = 1;]])],
067d23c9
KY
1235 emacs_cv_speed_t=yes, emacs_cv_speed_t=no)])
1236if test $emacs_cv_speed_t = yes; then
1237 AC_DEFINE(HAVE_SPEED_T, 1,
1238 [Define to 1 if `speed_t' is declared by <termios.h>.])
1239fi
1240
0e7a053e 1241AC_CHECK_HEADERS_ONCE(sys/socket.h)
067d23c9
KY
1242AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT
1243#if HAVE_SYS_SOCKET_H
1244#include <sys/socket.h>
1245#endif])
377538cb
JD
1246AC_CHECK_HEADERS(ifaddrs.h, , , [AC_INCLUDES_DEFAULT
1247#if HAVE_SYS_SOCKET_H
1248#include <sys/socket.h>
1249#endif])
1250AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT
1251#if HAVE_SYS_SOCKET_H
1252#include <sys/socket.h>
1253#endif])
067d23c9
KY
1254
1255dnl checks for structure members
067d23c9
KY
1256AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr,
1257 struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr,
377538cb
JD
1258 struct ifreq.ifr_addr,
1259 struct ifreq.ifr_addr.sa_len], , ,
067d23c9
KY
1260 [AC_INCLUDES_DEFAULT
1261#if HAVE_SYS_SOCKET_H
1262#include <sys/socket.h>
1263#endif
1264#if HAVE_NET_IF_H
1265#include <net/if.h>
1266#endif])
1267
4c36be58 1268dnl Check for endianness.
0e7a053e 1269dnl AC_C_BIGENDIAN is done by gnulib.
067d23c9
KY
1270
1271dnl check for Make feature
0e7a053e 1272dnl AC_PROG_MAKE_SET is done by Automake.
067d23c9
KY
1273
1274DEPFLAGS=
1275MKDEPDIR=":"
1276deps_frag=deps.mk
1277dnl check for GNU Make if we have GCC and autodepend is on.
1278if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
1279 AC_MSG_CHECKING([whether we are using GNU Make])
1280 HAVE_GNU_MAKE=no
d2eaf3e4 1281 testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
067d23c9
KY
1282 if test "x$testval" != x; then
1283 HAVE_GNU_MAKE=yes
1284 else
1285 ac_enable_autodepend=no
1286 fi
1287 AC_MSG_RESULT([$HAVE_GNU_MAKE])
1288 if test $HAVE_GNU_MAKE = yes; then
1289 AC_MSG_CHECKING([whether gcc understands -MMD -MF])
1290 SAVE_CFLAGS="$CFLAGS"
52ec1feb 1291 CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
181855e6 1292 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
067d23c9
KY
1293 CFLAGS="$SAVE_CFLAGS"
1294 test -f deps.d || ac_enable_autodepend=no
1295 rm -rf deps.d
1296 AC_MSG_RESULT([$ac_enable_autodepend])
1297 fi
1298 if test $ac_enable_autodepend = yes; then
52ec1feb 1299 DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
3fe7cdc8
GM
1300 ## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe.
1301 MKDEPDIR='${MKDIR_P} ${DEPDIR}'
067d23c9
KY
1302 deps_frag=autodeps.mk
1303 fi
1304fi
1305deps_frag=$srcdir/src/$deps_frag
1306AC_SUBST(MKDEPDIR)
1307AC_SUBST(DEPFLAGS)
1308AC_SUBST_FILE(deps_frag)
1309
1310
b9704ad9
GM
1311lisp_frag=$srcdir/src/lisp.mk
1312AC_SUBST_FILE(lisp_frag)
1313
1314
067d23c9
KY
1315dnl checks for operating system services
1316AC_SYS_LONG_FILE_NAMES
1317
1318#### Choose a window system.
1319
17a2cbbd
DC
1320## We leave window_system equal to none if
1321## we end up building without one. Any new window system should
1322## set window_system to an appropriate value and add objects to
1323## window-system-specific substs.
1324
1325window_system=none
067d23c9 1326AC_PATH_X
17a2cbbd 1327if test "$no_x" != yes; then
067d23c9
KY
1328 window_system=x11
1329fi
1330
4d5c6349 1331LD_SWITCH_X_SITE_RPATH=
067d23c9
KY
1332if test "${x_libraries}" != NONE; then
1333 if test -n "${x_libraries}"; then
1334 LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
1056cb66 1335 LD_SWITCH_X_SITE_RPATH=-Wl,-rpath,`echo ${x_libraries} | sed -e "s/:/ -Wl,-rpath,/g"`
067d23c9
KY
1336 fi
1337 x_default_search_path=""
1338 x_search_path=${x_libraries}
1339 if test -z "${x_search_path}"; then
1340 x_search_path=/usr/lib
1341 fi
1342 for x_library in `echo ${x_search_path}: | \
1343 sed -e "s/:/ /g" -e p -e "s:/lib[[^ /]]* :/share :g"`; do
1344 x_search_path="\
1345${x_library}/X11/%L/%T/%N%C%S:\
1346${x_library}/X11/%l/%T/%N%C%S:\
1347${x_library}/X11/%T/%N%C%S:\
1348${x_library}/X11/%L/%T/%N%S:\
1349${x_library}/X11/%l/%T/%N%S:\
1350${x_library}/X11/%T/%N%S"
1351 if test x"${x_default_search_path}" = x; then
1352 x_default_search_path=${x_search_path}
1353 else
1354 x_default_search_path="${x_search_path}:${x_default_search_path}"
1355 fi
1356 done
1357fi
4d5c6349 1358AC_SUBST(LD_SWITCH_X_SITE_RPATH)
067d23c9
KY
1359
1360if test "${x_includes}" != NONE && test -n "${x_includes}"; then
b8df54ff 1361 C_SWITCH_X_SITE="$isystem"`echo ${x_includes} | sed -e "s/:/ $isystem/g"`
067d23c9
KY
1362fi
1363
1364if test x"${x_includes}" = x; then
1365 bitmapdir=/usr/include/X11/bitmaps
1366else
1367 # accumulate include directories that have X11 bitmap subdirectories
1368 bmd_acc="dummyval"
1369 for bmd in `echo ${x_includes} | sed -e "s/:/ /g"`; do
1370 if test -d "${bmd}/X11/bitmaps"; then
1371 bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps"
1372 fi
1373 if test -d "${bmd}/bitmaps"; then
1374 bmd_acc="${bmd_acc}:${bmd}/bitmaps"
1375 fi
1376 done
1377 if test ${bmd_acc} != "dummyval"; then
1378 bitmapdir=`echo ${bmd_acc} | sed -e "s/^dummyval://"`
1379 fi
1380fi
1381
1382HAVE_NS=no
1383NS_IMPL_COCOA=no
1384NS_IMPL_GNUSTEP=no
1385tmp_CPPFLAGS="$CPPFLAGS"
1386tmp_CFLAGS="$CFLAGS"
1387CPPFLAGS="$CPPFLAGS -x objective-c"
1388CFLAGS="$CFLAGS -x objective-c"
0cc87afb 1389GNU_OBJC_CFLAGS=
2550c6e4 1390LIBS_GNUSTEP=
067d23c9
KY
1391if test "${with_ns}" != no; then
1392 if test "${opsys}" = darwin; then
1393 NS_IMPL_COCOA=yes
1394 ns_appdir=`pwd`/nextstep/Emacs.app
9e6b06ed 1395 ns_appbindir=${ns_appdir}/Contents/MacOS
067d23c9 1396 ns_appresdir=${ns_appdir}/Contents/Resources
83da1b55 1397 ns_appsrc=Cocoa/Emacs.base
067d23c9
KY
1398 elif test -f $GNUSTEP_CONFIG_FILE; then
1399 NS_IMPL_GNUSTEP=yes
1400 ns_appdir=`pwd`/nextstep/Emacs.app
9e6b06ed 1401 ns_appbindir=${ns_appdir}
067d23c9 1402 ns_appresdir=${ns_appdir}/Resources
83da1b55 1403 ns_appsrc=GNUstep/Emacs.base
067d23c9
KY
1404 dnl FIXME sourcing this several times in subshells seems inefficient.
1405 GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
1406 GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
1407 dnl I seemed to need these as well with GNUstep-startup 0.25.
1408 GNUSTEP_LOCAL_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_HEADERS)"
1409 GNUSTEP_LOCAL_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_LIBRARIES)"
1410 test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \
1411 GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}"
1412 test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \
1413 GNUSTEP_LOCAL_LIBRARIES="-L${GNUSTEP_LOCAL_LIBRARIES}"
1414 CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1415 CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1416 LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
2550c6e4 1417 LIBS_GNUSTEP="-lgnustep-gui -lgnustep-base -lobjc -lpthread"
0cc87afb
GM
1418 dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1.
1419 dnl If they had chosen to either define it or not, we could have
1420 dnl just used AC_CHECK_DECL here.
1421 AC_CACHE_CHECK(if GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS,
1422 emacs_cv_objc_exceptions,
1423AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <GNUstepBase/GSConfig.h>]],
1424[[#if defined BASE_NATIVE_OBJC_EXCEPTIONS && BASE_NATIVE_OBJC_EXCEPTIONS > 0
14251;
1426#else
1427fail;
1428#endif]])], emacs_cv_objc_exceptions=yes, emacs_cv_objc_exceptions=no ) )
1429 if test $emacs_cv_objc_exceptions = yes; then
1430 dnl _NATIVE_OBJC_EXCEPTIONS is used by the GNUstep headers.
1431 AC_DEFINE(_NATIVE_OBJC_EXCEPTIONS, 1,
1432 [Define if GNUstep uses ObjC exceptions.])
1433 GNU_OBJC_CFLAGS="-fobjc-exceptions"
1434 fi
067d23c9 1435 fi
0cc87afb
GM
1436
1437 dnl This is only used while we test the NS headers, it gets reset below.
1438 CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS"
1439
067d23c9
KY
1440 AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
1441 [AC_MSG_ERROR([`--with-ns' was specified, but the include
1442 files are missing or cannot be compiled.])])
335f5ae4
JD
1443
1444 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AppKit/AppKit.h>],
1445 [
1446#ifdef MAC_OS_X_VERSION_MAX_ALLOWED
1447#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1040
1448 ; /* OK */
1449#else
1450#error "OSX 10.4 or newer required"
1451#endif
1452#endif
1453 ])],
1454 ns_osx_have_104=yes,
1455 ns_osx_have_104=no)
067d23c9
KY
1456 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <Foundation/NSObjCRuntime.h>],
1457 [NSInteger i;])],
1458 ns_have_nsinteger=yes,
1459 ns_have_nsinteger=no)
335f5ae4
JD
1460 if test $ns_osx_have_104 = no; then
1461 AC_MSG_ERROR([`OSX 10.4 or newer is required']);
1462 fi
b1aa797c
GM
1463 if test $ns_have_nsinteger = yes; then
1464 AC_DEFINE(NS_HAVE_NSINTEGER, 1, [Define to 1 if `NSInteger' is defined.])
067d23c9
KY
1465 fi
1466fi
0fda9b75 1467
2550c6e4 1468AC_SUBST(LIBS_GNUSTEP)
067d23c9 1469
0629a797 1470INSTALL_ARCH_INDEP_EXTRA=install-etc
b4a36200 1471ns_self_contained=no
067d23c9 1472NS_OBJ=
00b3c7ac 1473NS_OBJC_OBJ=
067d23c9 1474if test "${HAVE_NS}" = yes; then
44f92739 1475 if test "$with_toolkit_scroll_bars" = "no"; then
f52bac22 1476 AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for Nextstep.])
44f92739
GM
1477 fi
1478
067d23c9 1479 window_system=nextstep
067d23c9 1480 # set up packaging dirs
067d23c9 1481 if test "${EN_NS_SELF_CONTAINED}" = yes; then
b4a36200 1482 ns_self_contained=yes
067d23c9 1483 prefix=${ns_appresdir}
816be9f6 1484 exec_prefix=${ns_appbindir}
3a4155de
GM
1485 dnl This one isn't really used, only archlibdir is.
1486 libexecdir="\${ns_appbindir}/libexec"
1487 archlibdir="\${ns_appbindir}/libexec"
b42c720d
GM
1488 docdir="\${ns_appresdir}/etc"
1489 etcdir="\${ns_appresdir}/etc"
40c117e7
GM
1490 dnl FIXME maybe set datarootdir instead.
1491 dnl That would also get applications, icons, man.
1492 infodir="\${ns_appresdir}/info"
37f36bcb 1493 mandir="\${ns_appresdir}/man"
b42c720d 1494 lispdir="\${ns_appresdir}/lisp"
d71dfe75 1495 leimdir="\${ns_appresdir}/leim"
0629a797 1496 INSTALL_ARCH_INDEP_EXTRA=
067d23c9 1497 fi
00b3c7ac 1498 NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o"
067d23c9
KY
1499fi
1500CFLAGS="$tmp_CFLAGS"
1501CPPFLAGS="$tmp_CPPFLAGS"
0629a797 1502AC_SUBST(INSTALL_ARCH_INDEP_EXTRA)
b4a36200 1503AC_SUBST(ns_self_contained)
067d23c9 1504AC_SUBST(NS_OBJ)
00b3c7ac 1505AC_SUBST(NS_OBJC_OBJ)
067d23c9 1506
0fda9b75
DC
1507HAVE_W32=no
1508W32_OBJ=
1509W32_LIBS=
1cf1bbd5
DC
1510W32_RES=
1511W32_RES_LINK=
0fda9b75
DC
1512if test "${with_w32}" != no; then
1513 if test "${opsys}" != "cygwin"; then
1514 AC_MSG_ERROR([Using w32 with an autotools build is only supported for Cygwin.])
1515 fi
1516 AC_CHECK_HEADER([windows.h], [HAVE_W32=yes],
1517 [AC_MSG_ERROR([`--with-w32' was specified, but windows.h
1518 cannot be found.])])
dc098568 1519 AC_DEFINE(HAVE_NTGUI, 1, [Define to use native MS Windows GUI.])
1cf1bbd5
DC
1520 AC_CHECK_TOOL(WINDRES, [windres],
1521 [AC_MSG_ERROR([No resource compiler found.])])
0fda9b75
DC
1522 W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o"
1523 W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o"
1524 W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32"
1525 W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool"
1cf1bbd5
DC
1526 W32_RES="emacs.res"
1527 # Tell the linker that emacs.res is an object (which we compile from
1528 # the rc file), not a linker script.
1529 W32_RES_LINK="-Wl,-bpe-i386 -Wl,emacs.res"
0fda9b75
DC
1530fi
1531AC_SUBST(W32_OBJ)
1532AC_SUBST(W32_LIBS)
1cf1bbd5
DC
1533AC_SUBST(W32_RES)
1534AC_SUBST(W32_RES_LINK)
0fda9b75
DC
1535
1536if test "${HAVE_W32}" = "yes"; then
1537 window_system=w32
1538 with_xft=no
1539fi
1540
17a2cbbd
DC
1541## $window_system is now set to the window system we will
1542## ultimately use.
1543
1544term_header=
1545HAVE_X_WINDOWS=no
1546HAVE_X11=no
1547USE_X_TOOLKIT=none
1548
067d23c9
KY
1549case "${window_system}" in
1550 x11 )
1551 HAVE_X_WINDOWS=yes
1552 HAVE_X11=yes
17a2cbbd 1553 term_header=xterm.h
067d23c9
KY
1554 case "${with_x_toolkit}" in
1555 athena | lucid ) USE_X_TOOLKIT=LUCID ;;
1556 motif ) USE_X_TOOLKIT=MOTIF ;;
1557 gtk ) with_gtk=yes
17a2cbbd 1558 term_header=gtkutil.h
c7015153 1559dnl Don't set this for GTK. A lot of tests below assumes Xt when
067d23c9
KY
1560dnl USE_X_TOOLKIT is set.
1561 USE_X_TOOLKIT=none ;;
d673aedc
JD
1562 gtk2 ) with_gtk2=yes
1563 term_header=gtkutil.h
1564 USE_X_TOOLKIT=none ;;
067d23c9 1565 gtk3 ) with_gtk3=yes
17a2cbbd 1566 term_header=gtkutil.h
067d23c9
KY
1567 USE_X_TOOLKIT=none ;;
1568 no ) USE_X_TOOLKIT=none ;;
1569dnl If user did not say whether to use a toolkit, make this decision later:
1570dnl use the toolkit if we have gtk, or X11R5 or newer.
1571 * ) USE_X_TOOLKIT=maybe ;;
1572 esac
1573 ;;
17a2cbbd
DC
1574 nextstep )
1575 term_header=nsterm.h
067d23c9 1576 ;;
0fda9b75
DC
1577 w32 )
1578 term_header=w32term.h
1579 ;;
067d23c9
KY
1580esac
1581
17a2cbbd
DC
1582if test -n "${term_header}"; then
1583 AC_DEFINE_UNQUOTED(TERM_HEADER, "${term_header}",
1584 [Define to the header for the built-in window system.])
1585fi
1586
067d23c9
KY
1587if test "$window_system" = none && test "X$with_x" != "Xno"; then
1588 AC_CHECK_PROG(HAVE_XSERVER, X, true, false)
1589 if test "$HAVE_XSERVER" = true ||
1590 test -n "$DISPLAY" ||
1591 test "`echo /usr/lib/libX11.*`" != "/usr/lib/libX11.*"; then
1592 AC_MSG_ERROR([You seem to be running X, but no X development libraries
1593were found. You should install the relevant development files for X
1594and for the toolkit you want, such as Gtk+, Lesstif or Motif. Also make
1595sure you have development files for image handling, i.e.
1596tiff, gif, jpeg, png and xpm.
1597If you are sure you want Emacs compiled without X window support, pass
1598 --without-x
1599to configure.])
1600 fi
1601fi
1602
1603### If we're using X11, we should use the X menu package.
1604HAVE_MENUS=no
1605case ${HAVE_X11} in
1606 yes ) HAVE_MENUS=yes ;;
1607esac
1608
34374650 1609# Does the opsystem file prohibit the use of the GNU malloc?
067d23c9
KY
1610# Assume not, until told otherwise.
1611GNU_MALLOC=yes
4b5b5289
PE
1612
1613AC_CACHE_CHECK(
1614 [whether malloc is Doug Lea style],
1615 [emacs_cv_var_doug_lea_malloc],
1616 [AC_LINK_IFELSE(
1617 [AC_LANG_PROGRAM(
1618 [[#include <malloc.h>
1619 static void hook (void) {}]],
1620 [[malloc_set_state (malloc_get_state ());
1621 __after_morecore_hook = hook;
1622 __malloc_initialize_hook = hook;]])],
1623 [emacs_cv_var_doug_lea_malloc=yes],
1624 [emacs_cv_var_doug_lea_malloc=no])])
1625doug_lea_malloc=$emacs_cv_var_doug_lea_malloc
067d23c9
KY
1626
1627
1628dnl See comments in aix4-2.h about maybe using system malloc there.
1629system_malloc=no
1630case "$opsys" in
1631 ## darwin ld insists on the use of malloc routines in the System framework.
1632 darwin|sol2-10) system_malloc=yes ;;
1633esac
1634
1635if test "${system_malloc}" = "yes"; then
1636 AC_DEFINE(SYSTEM_MALLOC, 1, [Define to use system malloc.])
1637 GNU_MALLOC=no
1638 GNU_MALLOC_reason="
1639 (The GNU allocators don't work with this system configuration.)"
1640 GMALLOC_OBJ=
1641 VMLIMIT_OBJ=
1642else
1643 test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
1644 VMLIMIT_OBJ=vm-limit.o
1ddc2bd6
PE
1645
1646 AC_CHECK_HEADERS([sys/vlimit.h])
1647 AC_CACHE_CHECK([for data_start], [emacs_cv_data_start],
1648 [AC_LINK_IFELSE(
1649 [AC_LANG_PROGRAM(
1650 [[extern char data_start[]; char ch;]],
0e946786 1651 [[return data_start < &ch;]])],
1ddc2bd6
PE
1652 [emacs_cv_data_start=yes],
1653 [emacs_cv_data_start=no])])
1654 if test $emacs_cv_data_start = yes; then
1655 AC_DEFINE([HAVE_DATA_START], 1,
1656 [Define to 1 if data_start is the address of the start
1657 of the main data segment.])
1658 fi
067d23c9
KY
1659fi
1660AC_SUBST(GMALLOC_OBJ)
1661AC_SUBST(VMLIMIT_OBJ)
1662
1663if test "$doug_lea_malloc" = "yes" ; then
1664 if test "$GNU_MALLOC" = yes ; then
1665 GNU_MALLOC_reason="
1666 (Using Doug Lea's new malloc from the GNU C Library.)"
1667 fi
1668 AC_DEFINE(DOUG_LEA_MALLOC, 1,
1669 [Define to 1 if you are using the GNU C Library.])
1670
1671 ## Use mmap directly for allocating larger buffers.
1672 ## FIXME this comes from src/s/{gnu,gnu-linux}.h:
1673 ## #ifdef DOUG_LEA_MALLOC; #undef REL_ALLOC; #endif
bbd240ce 1674 ## Does the AC_FUNC_MMAP test below make this check unnecessary?
067d23c9
KY
1675 case "$opsys" in
1676 gnu*) REL_ALLOC=no ;;
1677 esac
1678fi
1679
1680if test x"${REL_ALLOC}" = x; then
1681 REL_ALLOC=${GNU_MALLOC}
1682fi
1683
1684use_mmap_for_buffers=no
1685case "$opsys" in
fe0e7ad7 1686 cygwin|freebsd|irix6-5) use_mmap_for_buffers=yes ;;
067d23c9
KY
1687esac
1688
1689AC_FUNC_MMAP
1690if test $use_mmap_for_buffers = yes; then
1691 AC_DEFINE(USE_MMAP_FOR_BUFFERS, 1, [Define to use mmap to allocate buffer text.])
1692 REL_ALLOC=no
1693fi
1694
1695LIBS="$LIBS_SYSTEM $LIBS"
1696
1697dnl If found, this defines HAVE_LIBDNET, which m/pmax.h checks,
1698dnl and also adds -ldnet to LIBS, which Autoconf uses for checks.
1699AC_CHECK_LIB(dnet, dnet_ntoa)
1700dnl This causes -lresolv to get used in subsequent tests,
1701dnl which causes failures on some systems such as HPUX 9.
1702dnl AC_CHECK_LIB(resolv, gethostbyname)
1703
1704dnl FIXME replace main with a function we actually want from this library.
1705AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
1706
ae9e757a
JD
1707dnl Check if pthreads is available.
1708LIB_PTHREAD=
0e7a053e 1709AC_CHECK_HEADERS_ONCE(pthread.h)
ae9e757a 1710if test "$ac_cv_header_pthread_h"; then
adee8a65
PE
1711 dnl gmalloc.c uses pthread_atfork, which is not available on older-style
1712 dnl hosts such as MirBSD 10, so test for pthread_atfork instead of merely
1713 dnl testing for pthread_self if Emacs uses gmalloc.c.
1714 if test "$GMALLOC_OBJ" = gmalloc.o; then
1715 emacs_pthread_function=pthread_atfork
1716 else
1717 emacs_pthread_function=pthread_self
1718 fi
1719 AC_CHECK_LIB(pthread, $emacs_pthread_function, HAVE_PTHREAD=yes)
ae9e757a
JD
1720fi
1721if test "$HAVE_PTHREAD" = yes; then
1722 case "${canonical}" in
1723 *-hpux*) ;;
e782cfab
PE
1724 *) LIB_PTHREAD="-lpthread"
1725 LIBS="$LIB_PTHREAD $LIBS" ;;
ae9e757a
JD
1726 esac
1727 AC_DEFINE(HAVE_PTHREAD, 1, [Define to 1 if you have pthread (-lpthread).])
1728fi
1729AC_SUBST([LIB_PTHREAD])
1730
067d23c9
KY
1731AC_CHECK_LIB(pthreads, cma_open)
1732
1733## Note: when using cpp in s/aix4.2.h, this definition depended on
1734## HAVE_LIBPTHREADS. That was not defined earlier in configure when
1735## the system file was sourced. Hence the value of LIBS_SYSTEM
1736## added to LIBS in configure would never contain the pthreads part,
1737## but the value used in Makefiles might. FIXME?
1738##
1739## -lpthreads seems to be necessary for Xlib in X11R6, and should
1740## be harmless on older versions of X where it happens to exist.
1741test "$opsys" = "aix4-2" && \
1742 test $ac_cv_lib_pthreads_cma_open = yes && \
1743 LIBS_SYSTEM="$LIBS_SYSTEM -lpthreads"
1744
1745dnl Check for need for bigtoc support on IBM AIX
1746
1747case ${host_os} in
1748aix*)
1749 AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
1750 case $GCC in
1751 yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
1752 *) gdb_cv_bigtoc=-bbigtoc ;;
1753 esac
1754
1755 LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
181855e6 1756 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int i;]])], [], [gdb_cv_bigtoc=])
067d23c9
KY
1757 ])
1758 ;;
1759esac
1760
1761# Change CFLAGS and CPPFLAGS temporarily so that C_SWITCH_X_SITE gets
1762# used for the tests that follow. We set them back to REAL_CFLAGS and
1763# REAL_CPPFLAGS later on.
1764
1765REAL_CFLAGS="$CFLAGS"
1766REAL_CPPFLAGS="$CPPFLAGS"
1767
1768if test "${HAVE_X11}" = "yes"; then
1769 DEFS="$C_SWITCH_X_SITE $DEFS"
1770 LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
1771 LIBS="-lX11 $LIBS"
1772 CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
1773 CPPFLAGS="$C_SWITCH_X_SITE $CPPFLAGS"
1774
1775 # On Solaris, arrange for LD_RUN_PATH to point to the X libraries for tests.
4d5c6349 1776 # This is handled by LD_SWITCH_X_SITE_RPATH during the real build,
4737362e 1777 # but it's more convenient here to set LD_RUN_PATH since this
4d5c6349 1778 # also works on hosts that don't understand LD_SWITCH_X_SITE_RPATH.
067d23c9
KY
1779 if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
1780 LD_RUN_PATH=$x_libraries${LD_RUN_PATH+:}$LD_RUN_PATH
1781 export LD_RUN_PATH
1782 fi
1783
1784 if test "${opsys}" = "gnu-linux"; then
1785 AC_MSG_CHECKING(whether X on GNU/Linux needs -b to link)
181855e6
GM
1786 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
1787 [[XOpenDisplay ("foo");]])],
423dbf9b
RS
1788 [xgnu_linux_first_failure=no],
1789 [xgnu_linux_first_failure=yes])
1790 if test "${xgnu_linux_first_failure}" = "yes"; then
067d23c9
KY
1791 OLD_LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE"
1792 OLD_C_SWITCH_X_SITE="$C_SWITCH_X_SITE"
1793 OLD_CPPFLAGS="$CPPFLAGS"
1794 OLD_LIBS="$LIBS"
1795 LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
1796 C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
1797 CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
1798 LIBS="$LIBS -b i486-linuxaout"
181855e6
GM
1799 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
1800 [[XOpenDisplay ("foo");]])],
423dbf9b
RS
1801 [xgnu_linux_second_failure=no],
1802 [xgnu_linux_second_failure=yes])
1803 if test "${xgnu_linux_second_failure}" = "yes"; then
067d23c9
KY
1804 # If we get the same failure with -b, there is no use adding -b.
1805 # So take it out. This plays safe.
1806 LD_SWITCH_X_SITE="$OLD_LD_SWITCH_X_SITE"
1807 C_SWITCH_X_SITE="$OLD_C_SWITCH_X_SITE"
1808 CPPFLAGS="$OLD_CPPFLAGS"
1809 LIBS="$OLD_LIBS"
1810 AC_MSG_RESULT(no)
1811 else
1812 AC_MSG_RESULT(yes)
1813 fi
1814 else
1815 AC_MSG_RESULT(no)
1816 fi
1817 fi
1818
1819 # Reportedly, some broken Solaris systems have XKBlib.h but are missing
1820 # header files included from there.
1821 AC_MSG_CHECKING(for Xkb)
181855e6
GM
1822 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>
1823#include <X11/XKBlib.h>]],
1824 [[XkbDescPtr kb = XkbGetKeyboard (0, XkbAllComponentsMask, XkbUseCoreKbd);]])],
067d23c9
KY
1825 emacs_xkb=yes, emacs_xkb=no)
1826 AC_MSG_RESULT($emacs_xkb)
1827 if test $emacs_xkb = yes; then
1828 AC_DEFINE(HAVE_XKBGETKEYBOARD, 1, [Define to 1 if you have the XkbGetKeyboard function.])
1829 fi
1830
1831 AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
9232a6d9 1832XScreenNumberOfScreen)
067d23c9
KY
1833fi
1834
1835if test "${window_system}" = "x11"; then
1836 AC_MSG_CHECKING(X11 version 6)
1837 AC_CACHE_VAL(emacs_cv_x11_version_6,
181855e6
GM
1838 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]],
1839[[#if XlibSpecificationRelease < 6
067d23c9
KY
1840fail;
1841#endif
181855e6 1842]])], emacs_cv_x11_version_6=yes, emacs_cv_x11_version_6=no)])
067d23c9
KY
1843 if test $emacs_cv_x11_version_6 = yes; then
1844 AC_MSG_RESULT(6 or newer)
1845 AC_DEFINE(HAVE_X11R6, 1,
1846 [Define to 1 if you have the X11R6 or newer version of Xlib.])
1847 AC_DEFINE(HAVE_X_I18N, 1, [Define if you have usable i18n support.])
1848 ## inoue@ainet.or.jp says Solaris has a bug related to X11R6-style
1849 ## XIM support.
1850 case "$opsys" in
1851 sol2-*) : ;;
1852 *) AC_DEFINE(HAVE_X11R6_XIM, 1,
1853 [Define if you have usable X11R6-style XIM support.])
1854 ;;
1855 esac
1856 else
1857 AC_MSG_RESULT(before 6)
1858 fi
1859fi
1860
1861
1862### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
1863HAVE_RSVG=no
be8ec0b3 1864if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes"; then
067d23c9
KY
1865 if test "${with_rsvg}" != "no"; then
1866 RSVG_REQUIRED=2.11.0
1867 RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
1868
1869 PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, HAVE_RSVG=yes, :)
1870 AC_SUBST(RSVG_CFLAGS)
1871 AC_SUBST(RSVG_LIBS)
1872
1873 if test $HAVE_RSVG = yes; then
1874 AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
1875 CFLAGS="$CFLAGS $RSVG_CFLAGS"
1876 LIBS="$RSVG_LIBS $LIBS"
1877 fi
1878 fi
1879fi
1880
1881HAVE_IMAGEMAGICK=no
1882if test "${HAVE_X11}" = "yes"; then
1883 if test "${with_imagemagick}" != "no"; then
f5b06c35
GM
1884 ## 6.2.8 is the earliest version known to work, but earlier versions
1885 ## might work - let us know if you find one.
1886 ## 6.0.7 does not work. See bug#7955.
1887 IMAGEMAGICK_MODULE="Wand >= 6.2.8"
067d23c9
KY
1888 PKG_CHECK_MODULES(IMAGEMAGICK, $IMAGEMAGICK_MODULE, HAVE_IMAGEMAGICK=yes, :)
1889 AC_SUBST(IMAGEMAGICK_CFLAGS)
1890 AC_SUBST(IMAGEMAGICK_LIBS)
b06b1098 1891
067d23c9
KY
1892 if test $HAVE_IMAGEMAGICK = yes; then
1893 AC_DEFINE(HAVE_IMAGEMAGICK, 1, [Define to 1 if using imagemagick.])
1894 CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
1895 LIBS="$IMAGEMAGICK_LIBS $LIBS"
03043c1b 1896 AC_CHECK_FUNCS(MagickExportImagePixels MagickMergeImageLayers)
067d23c9
KY
1897 fi
1898 fi
1899fi
1900
1901
1902HAVE_GTK=no
c195f2de 1903GTK_OBJ=
d673aedc
JD
1904check_gtk2=no
1905gtk3_pkg_errors=
1906if test "${with_gtk3}" = "yes" || test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
0afb4571
J
1907 GLIB_REQUIRED=2.28
1908 GTK_REQUIRED=3.0
067d23c9
KY
1909 GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
1910
1911 dnl Checks for libraries.
1912 PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
d673aedc 1913 if test "$pkg_check_gtk" = "no" && test "$with_gtk3" = "yes"; then
067d23c9
KY
1914 AC_MSG_ERROR($GTK_PKG_ERRORS)
1915 fi
d673aedc
JD
1916 if test "$pkg_check_gtk" = "yes"; then
1917 AC_DEFINE(HAVE_GTK3, 1, [Define to 1 if using GTK 3 or later.])
1918 GTK_OBJ=emacsgtkfixed.o
1919 term_header=gtkutil.h
5fb91e71 1920 USE_GTK_TOOLKIT="GTK3"
7ec363cf
JD
1921 if test "x$ac_enable_gtk_deprecation_warnings" = x; then
1922 GTK_CFLAGS="$GTK_CFLAGS -DGDK_DISABLE_DEPRECATION_WARNINGS"
1923 fi
d673aedc
JD
1924 else
1925 check_gtk2=yes
1926 gtk3_pkg_errors="$GTK_PKG_ERRORS "
1927 fi
067d23c9
KY
1928fi
1929
d673aedc 1930if test "${with_gtk2}" = "yes" || test "$check_gtk2" = "yes"; then
0ffe1065
JD
1931 GLIB_REQUIRED=2.10
1932 GTK_REQUIRED=2.10
067d23c9
KY
1933 GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
1934
1935 dnl Checks for libraries.
1936 PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
e3141fcf
PE
1937 if test "$pkg_check_gtk" = "no" &&
1938 { test "$with_gtk" = yes || test "$with_gtk2" = "yes"; }
1939 then
1940 AC_MSG_ERROR($gtk3_pkg_errors$GTK_PKG_ERRORS)
067d23c9 1941 fi
5fb91e71 1942 test "$pkg_check_gtk" = "yes" && USE_GTK_TOOLKIT="GTK2"
067d23c9 1943fi
067d23c9 1944
067d23c9
KY
1945if test x"$pkg_check_gtk" = xyes; then
1946
1947 AC_SUBST(GTK_CFLAGS)
1948 AC_SUBST(GTK_LIBS)
1949 C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
1950 CFLAGS="$CFLAGS $GTK_CFLAGS"
1951 LIBS="$GTK_LIBS $LIBS"
1952 dnl Try to compile a simple GTK program.
1953 GTK_COMPILES=no
1954 AC_CHECK_FUNCS(gtk_main, GTK_COMPILES=yes)
1955 if test "${GTK_COMPILES}" != "yes"; then
1956 if test "$USE_X_TOOLKIT" != "maybe"; then
1957 AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?]);
1958 fi
1959 else
1960 HAVE_GTK=yes
1961 AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
c195f2de 1962 GTK_OBJ="gtkutil.o $GTK_OBJ"
067d23c9 1963 USE_X_TOOLKIT=none
3cc53d60 1964 if "$PKG_CONFIG" --atleast-version=2.10 gtk+-2.0; then
067d23c9
KY
1965 :
1966 else
1967 AC_MSG_WARN([[Your version of Gtk+ will have problems with
1968 closing open displays. This is no problem if you just use
1969 one display, but if you use more than one and close one of them
1970 Emacs may crash.]])
1971 sleep 3
1972 fi
1973 fi
1974
1975fi
1976AC_SUBST(GTK_OBJ)
1977
1978
1979if test "${HAVE_GTK}" = "yes"; then
1980
1981 dnl GTK scrollbars resemble toolkit scrollbars a lot, so to avoid
1982 dnl a lot if #ifdef:s, say we have toolkit scrollbars.
1983 if test "$with_toolkit_scroll_bars" != no; then
1984 with_toolkit_scroll_bars=yes
1985 fi
1986
1987 dnl Check if we have the old file selection dialog declared and
1988 dnl in the link library. In 2.x it may be in the library,
1989 dnl but not declared if deprecated featured has been selected out.
1990 dnl AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION.
1991 HAVE_GTK_FILE_SELECTION=no
1992 AC_CHECK_DECL(GTK_TYPE_FILE_SELECTION, HAVE_GTK_FILE_SELECTION=yes,
1993 HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT
1994#include <gtk/gtk.h>])
1995 if test "$HAVE_GTK_FILE_SELECTION" = yes; then
1996 AC_CHECK_FUNCS(gtk_file_selection_new)
1997 fi
1998
5a1d858b
JD
1999 dnl Same as above for gtk_handle_box.
2000 HAVE_GTK_HANDLE_BOX=no
2001 AC_CHECK_DECL(GTK_TYPE_HANDLE_BOX, HAVE_GTK_HANDLE_BOX=yes,
2002 HAVE_GTK_HANDLE_BOX=no, [AC_INCLUDES_DEFAULT
2003#include <gtk/gtk.h>])
2004 if test "$HAVE_GTK_HANDLE_BOX" = yes; then
2005 AC_CHECK_FUNCS(gtk_handle_box_new)
2006 fi
067d23c9 2007
8b745d92
JD
2008 dnl Same as above for gtk_tearoff_menu_item.
2009 HAVE_GTK_TEAROFF_MENU_ITEM=no
2010 AC_CHECK_DECL(GTK_TYPE_TEAROFF_MENU_ITEM, HAVE_GTK_TEAROFF_MENU_ITEM=yes,
2011 HAVE_GTK_TEAROFF_MENU_ITEM=no, [AC_INCLUDES_DEFAULT
2012#include <gtk/gtk.h>])
2013 if test "$HAVE_GTK_TEAROFF_MENU_ITEM" = yes; then
2014 AC_CHECK_FUNCS(gtk_tearoff_menu_item_new)
2015 fi
2016
067d23c9
KY
2017 dnl Check for functions introduced in 2.14 and later.
2018 AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \
2019 gtk_dialog_get_action_area gtk_widget_get_sensitive \
2020 gtk_widget_get_mapped gtk_adjustment_get_page_size \
54e9e3bf
JD
2021 gtk_orientable_set_orientation \
2022 gtk_window_set_has_resize_grip)
17a2cbbd
DC
2023
2024 term_header=gtkutil.h
067d23c9
KY
2025fi
2026
2027dnl D-Bus has been tested under GNU/Linux only. Must be adapted for
dcbf5805 2028dnl other platforms.
067d23c9
KY
2029HAVE_DBUS=no
2030DBUS_OBJ=
2031if test "${with_dbus}" = "yes"; then
2032 PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0, HAVE_DBUS=yes, HAVE_DBUS=no)
2033 if test "$HAVE_DBUS" = yes; then
2034 LIBS="$LIBS $DBUS_LIBS"
2035 AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
dcbf5805 2036 dnl dbus_watch_get_unix_fd has been introduced in D-Bus 1.1.1.
e3a3e213
MA
2037 dnl dbus_type_is_valid and dbus_validate_* have been introduced in
2038 dnl D-Bus 1.5.12.
dcbf5805 2039 AC_CHECK_FUNCS(dbus_watch_get_unix_fd \
e3a3e213 2040 dbus_type_is_valid \
dcbf5805
MA
2041 dbus_validate_bus_name \
2042 dbus_validate_path \
2043 dbus_validate_interface \
2044 dbus_validate_member)
067d23c9
KY
2045 DBUS_OBJ=dbusbind.o
2046 fi
2047fi
2048AC_SUBST(DBUS_OBJ)
2049
9851bfc5
JD
2050dnl GSettings has been tested under GNU/Linux only.
2051HAVE_GSETTINGS=no
2052if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then
2ad77c9d 2053 PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.26, HAVE_GSETTINGS=yes, HAVE_GSETTINGS=no)
2e6e11eb 2054 if test "$HAVE_GSETTINGS" = "yes"; then
9851bfc5
JD
2055 AC_DEFINE(HAVE_GSETTINGS, 1, [Define to 1 if using GSettings.])
2056 SETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
2057 SETTINGS_LIBS="$GSETTINGS_LIBS"
2058 fi
2059fi
2060
067d23c9
KY
2061dnl GConf has been tested under GNU/Linux only.
2062dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
2063HAVE_GCONF=no
869795d6 2064if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
067d23c9
KY
2065 PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
2066 if test "$HAVE_GCONF" = yes; then
2067 AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
2068 dnl Newer GConf doesn't link with g_objects, so this is not defined.
869795d6
JD
2069 SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GCONF_CFLAGS"
2070 SETTINGS_LIBS="$SETTINGS_LIBS $GCONF_LIBS"
067d23c9
KY
2071 fi
2072fi
2073
2e6e11eb 2074if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then
f278d339
JD
2075 PKG_CHECK_MODULES(GOBJECT, gobject-2.0 >= 2.0, HAVE_GOBJECT=yes, HAVE_GOBJECT=no)
2076 if test "$HAVE_GOBJECT" = "yes"; then
2077 SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GOBJECT_CFLAGS"
2078 SETTINGS_LIBS="$SETTINGS_LIBS $GOBJECT_LIBS"
2079 fi
9851bfc5 2080 SAVE_CFLAGS="$CFLAGS"
46d14be7 2081 SAVE_LIBS="$LIBS"
9851bfc5 2082 CFLAGS="$SETTINGS_CFLAGS $CFLAGS"
46d14be7 2083 LIBS="$SETTINGS_LIBS $LIBS"
9851bfc5
JD
2084 AC_CHECK_FUNCS([g_type_init])
2085 CFLAGS="$SAVE_CFLAGS"
46d14be7 2086 LIBS="$SAVE_LIBS"
9851bfc5
JD
2087fi
2088AC_SUBST(SETTINGS_CFLAGS)
2089AC_SUBST(SETTINGS_LIBS)
2090
2091
067d23c9
KY
2092dnl SELinux is available for GNU/Linux only.
2093HAVE_LIBSELINUX=no
2094LIBSELINUX_LIBS=
2095if test "${with_selinux}" = "yes"; then
2096 AC_CHECK_LIB([selinux], [lgetfilecon], HAVE_LIBSELINUX=yes, HAVE_LIBSELINUX=no)
2097 if test "$HAVE_LIBSELINUX" = yes; then
2098 AC_DEFINE(HAVE_LIBSELINUX, 1, [Define to 1 if using SELinux.])
2099 LIBSELINUX_LIBS=-lselinux
2100 fi
2101fi
2102AC_SUBST(LIBSELINUX_LIBS)
2103
2104HAVE_GNUTLS=no
33630d51 2105HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY=no
067d23c9 2106if test "${with_gnutls}" = "yes" ; then
9f77899d 2107 PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no)
067d23c9
KY
2108 if test "${HAVE_GNUTLS}" = "yes"; then
2109 AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
2110 fi
33630d51
TZ
2111
2112 CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
2113 LIBS="$LIBGNUTLS_LIBS $LIBS"
2114 AC_CHECK_FUNCS(gnutls_certificate_set_verify_function, HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY=yes)
2115
2116 if test "${HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY}" = "yes"; then
2117 AC_DEFINE(HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY, 1, [Define if using GnuTLS certificate verification callbacks.])
2118 fi
067d23c9 2119fi
33630d51 2120
067d23c9
KY
2121AC_SUBST(LIBGNUTLS_LIBS)
2122AC_SUBST(LIBGNUTLS_CFLAGS)
2123
81606b10 2124dnl inotify is only available on GNU/Linux.
81606b10
RS
2125if test "${with_inotify}" = "yes"; then
2126 AC_CHECK_HEADERS(sys/inotify.h)
2127 if test "$ac_cv_header_sys_inotify_h" = yes ; then
7e77303e 2128 AC_CHECK_FUNC(inotify_init1)
81606b10
RS
2129 fi
2130fi
7e77303e
PE
2131if test "$ac_cv_func_inotify_init1" = yes; then
2132 AC_DEFINE(HAVE_INOTIFY, 1, [Define to 1 to use inotify.])
81606b10
RS
2133fi
2134
7c3d167f
RF
2135dnl POSIX ACL support: provided by libacl on GNU/Linux, by libc on FreeBSD.
2136HAVE_POSIX_ACL=no
2137LIBACL_LIBS=
2138if test "${with_acl}" = "yes"; then
2139 AC_CHECK_LIB([acl], [acl_set_file], HAVE_POSIX_ACL=yes, HAVE_POSIX_ACL=no)
2140 if test "$HAVE_POSIX_ACL" = yes; then
2141 AC_DEFINE(HAVE_POSIX_ACL, 1, [Define to 1 if using POSIX ACL support.])
2142 LIBACL_LIBS=-lacl
2143 else
2144 AC_CHECK_FUNC(acl_set_file, HAVE_POSIX_ACL=yes, HAVE_POSIX_ACL=no)
2145 if test "$HAVE_POSIX_ACL" = yes; then
2146 AC_DEFINE(HAVE_POSIX_ACL, 1, [Define to 1 if using POSIX ACL support.])
2147 fi
2148 fi
2149fi
2150AC_SUBST(LIBACL_LIBS)
2151
067d23c9
KY
2152dnl Do not put whitespace before the #include statements below.
2153dnl Older compilers (eg sunos4 cc) choke on it.
2154HAVE_XAW3D=no
2155LUCID_LIBW=
2156if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
2157 if test "$with_xaw3d" != no; then
067d23c9 2158 AC_CACHE_VAL(emacs_cv_xaw3d,
181855e6 2159 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
067d23c9 2160#include <X11/Intrinsic.h>
181855e6
GM
2161#include <X11/Xaw3d/Simple.h>]],
2162 [[]])],
37f7b784
CY
2163 [AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb,
2164 emacs_cv_xaw3d=yes, emacs_cv_xaw3d=no)],
067d23c9
KY
2165 emacs_cv_xaw3d=no)])
2166 else
2167 emacs_cv_xaw3d=no
2168 fi
2169 if test $emacs_cv_xaw3d = yes; then
2c484e75 2170 AC_MSG_CHECKING(for xaw3d)
067d23c9
KY
2171 AC_MSG_RESULT([yes; using Lucid toolkit])
2172 USE_X_TOOLKIT=LUCID
2173 HAVE_XAW3D=yes
2174 LUCID_LIBW=-lXaw3d
2175 AC_DEFINE(HAVE_XAW3D, 1,
2176 [Define to 1 if you have the Xaw3d library (-lXaw3d).])
2177 else
2c484e75 2178 AC_MSG_CHECKING(for xaw3d)
067d23c9
KY
2179 AC_MSG_RESULT(no)
2180 AC_MSG_CHECKING(for libXaw)
2181 AC_CACHE_VAL(emacs_cv_xaw,
181855e6 2182 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
067d23c9 2183#include <X11/Intrinsic.h>
181855e6
GM
2184#include <X11/Xaw/Simple.h>]],
2185 [[]])],
067d23c9
KY
2186 emacs_cv_xaw=yes,
2187 emacs_cv_xaw=no)])
2188 if test $emacs_cv_xaw = yes; then
2189 AC_MSG_RESULT([yes; using Lucid toolkit])
2190 USE_X_TOOLKIT=LUCID
2191 LUCID_LIBW=-lXaw
2192 elif test x"${USE_X_TOOLKIT}" = xLUCID; then
2193 AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
2194 else
d681f183
GM
2195 AC_MSG_ERROR([No X toolkit could be found.
2196If you are sure you want Emacs compiled without an X toolkit, pass
2197 --with-x-toolkit=no
2198to configure. Otherwise, install the development libraries for the toolkit
2199that you want to use (e.g. Gtk+) and re-run configure.])
067d23c9
KY
2200 fi
2201 fi
2202fi
2203
2204X_TOOLKIT_TYPE=$USE_X_TOOLKIT
2205
2206LIBXTR6=
2207if test "${USE_X_TOOLKIT}" != "none"; then
2208 AC_MSG_CHECKING(X11 toolkit version)
2209 AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
181855e6
GM
2210 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Intrinsic.h>]],
2211[[#if XtSpecificationRelease < 6
067d23c9
KY
2212fail;
2213#endif
181855e6 2214]])], emacs_cv_x11_toolkit_version_6=yes, emacs_cv_x11_toolkit_version_6=no)])
067d23c9
KY
2215 HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6
2216 if test $emacs_cv_x11_toolkit_version_6 = yes; then
2217 AC_MSG_RESULT(6 or newer)
2218 AC_DEFINE(HAVE_X11XTR6, 1,
2219 [Define to 1 if you have the X11R6 or newer version of Xt.])
2220 LIBXTR6="-lSM -lICE"
2221 case "$opsys" in
2222 ## Use libw.a along with X11R6 Xt.
2223 unixware) LIBXTR6="$LIBXTR6 -lw" ;;
2224 esac
2225 else
2226 AC_MSG_RESULT(before 6)
2227 fi
2228
2229dnl If using toolkit, check whether libXmu.a exists.
2230dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
2231 OLDLIBS="$LIBS"
2232 if test x$HAVE_X11XTR6 = xyes; then
2233 LIBS="-lXt -lSM -lICE $LIBS"
2234 else
2235 LIBS="-lXt $LIBS"
2236 fi
2237 AC_CHECK_LIB(Xmu, XmuConvertStandardSelection)
2238 test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS"
ba9e4b84 2239 dnl ac_cv_lib_Xmu_XmuConvertStandardSelection is also referenced below.
067d23c9
KY
2240fi
2241AC_SUBST(LIBXTR6)
2242
2243dnl FIXME the logic here seems weird, but this is what cpp was doing.
2244dnl Why not just test for libxmu in the normal way?
2245LIBXMU=-lXmu
d6a003a8
AS
2246case $opsys in
2247 ## These systems don't supply Xmu.
067d23c9
KY
2248 hpux* | aix4-2 )
2249 test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
2250 ;;
2251esac
2252AC_SUBST(LIBXMU)
2253
2254# On Irix 6.5, at least, we need XShapeQueryExtension from -lXext for Xaw3D.
2255if test "${HAVE_X11}" = "yes"; then
2256 if test "${USE_X_TOOLKIT}" != "none"; then
2257 AC_CHECK_LIB(Xext, XShapeQueryExtension)
2258 fi
2259fi
2260
2261LIBXP=
2262if test "${USE_X_TOOLKIT}" = "MOTIF"; then
c09bfb2f
DA
2263 # OpenMotif may be installed in such a way on some GNU/Linux systems.
2264 if test -d /usr/include/openmotif; then
2265 CPPFLAGS="-I/usr/include/openmotif $CPPFLAGS"
2266 emacs_cv_openmotif=yes
2267 case "$canonical" in
2268 x86_64-*-linux-gnu* | powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*)
2269 test -d /usr/lib64/openmotif && LDFLAGS="-L/usr/lib64/openmotif $LDFLAGS"
2270 ;;
2271 *)
2272 test -d /usr/lib/openmotif && LDFLAGS="-L/usr/lib/openmotif $LDFLAGS"
2273 esac
2274 else
2275 emacs_cv_openmotif=no
2276 fi
2277 AC_CACHE_CHECK(for (Open)Motif version 2.1, emacs_cv_motif_version_2_1,
181855e6
GM
2278 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <Xm/Xm.h>]],
2279 [[#if XmVERSION > 2 || (XmVERSION == 2 && XmREVISION >= 1)
067d23c9
KY
2280int x = 5;
2281#else
2282Motif version prior to 2.1.
181855e6 2283#endif]])],
067d23c9
KY
2284 emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)])
2285 if test $emacs_cv_motif_version_2_1 = yes; then
2286 AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp)
c09bfb2f
DA
2287 if test x$emacs_cv_openmotif = xyes; then
2288 REAL_CPPFLAGS="-I/usr/include/openmotif $REAL_CPPFLAGS"
2289 fi
067d23c9
KY
2290 else
2291 AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif,
2292 # We put this in CFLAGS temporarily to precede other -I options
2293 # that might be in CFLAGS temporarily.
2294 # We put this in CPPFLAGS where it precedes the other -I options.
2295 OLD_CPPFLAGS=$CPPFLAGS
2296 OLD_CFLAGS=$CFLAGS
2297 CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CPPFLAGS"
2298 CFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CFLAGS"
181855e6
GM
2299 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include </usr/X11R6/LessTif/Motif1.2/include/Xm/Xm.h>]],
2300 [[int x = 5;]])],
067d23c9
KY
2301 emacs_cv_lesstif=yes, emacs_cv_lesstif=no)])
2302 if test $emacs_cv_lesstif = yes; then
2303 # Make sure this -I option remains in CPPFLAGS after it is set
2304 # back to REAL_CPPFLAGS.
2305 # There is no need to change REAL_CFLAGS, because REAL_CFLAGS does not
2306 # have those other -I options anyway. Ultimately, having this
2307 # directory ultimately in CPPFLAGS will be enough.
2308 REAL_CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $REAL_CPPFLAGS"
2309 LDFLAGS="-L/usr/X11R6/LessTif/Motif1.2/lib $LDFLAGS"
2310 else
2311 CFLAGS=$OLD_CFLAGS
2312 CPPFLAGS=$OLD_CPPFLAGS
2313 fi
2314 fi
e4070def
GM
2315 AC_CHECK_HEADER([Xm/BulletinB.h], [],
2316 [AC_MSG_ERROR([Motif toolkit requested but requirements not found.])])
067d23c9
KY
2317fi
2318
2319dnl Use toolkit scroll bars if configured for GTK or X toolkit and either
2320dnl using Motif or Xaw3d is available, and unless
2321dnl --with-toolkit-scroll-bars=no was specified.
2322
2323AH_TEMPLATE(USE_TOOLKIT_SCROLL_BARS,
2324 [Define to 1 if we should use toolkit scroll bars.])dnl
2325USE_TOOLKIT_SCROLL_BARS=no
2326if test "${with_toolkit_scroll_bars}" != "no"; then
2327 if test "${USE_X_TOOLKIT}" != "none"; then
2328 if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2329 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2330 HAVE_XAW3D=no
2331 USE_TOOLKIT_SCROLL_BARS=yes
8d8939e8 2332 elif test "${HAVE_XAW3D}" = "yes" || test "${USE_X_TOOLKIT}" = "LUCID"; then
067d23c9
KY
2333 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2334 USE_TOOLKIT_SCROLL_BARS=yes
2335 fi
2336 elif test "${HAVE_GTK}" = "yes"; then
2337 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2338 USE_TOOLKIT_SCROLL_BARS=yes
2339 elif test "${HAVE_NS}" = "yes"; then
2340 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2341 USE_TOOLKIT_SCROLL_BARS=yes
0fda9b75
DC
2342 elif test "${HAVE_W32}" = "yes"; then
2343 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2344 USE_TOOLKIT_SCROLL_BARS=yes
067d23c9
KY
2345 fi
2346fi
2347
2348dnl See if XIM is available.
181855e6 2349AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
067d23c9 2350 #include <X11/Xlib.h>
181855e6
GM
2351 #include <X11/Xresource.h>]],
2352 [[XIMProc callback;]])],
067d23c9
KY
2353 [HAVE_XIM=yes
2354 AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
2355 HAVE_XIM=no)
2356
2357dnl `--with-xim' now controls only the initial value of use_xim at run time.
2358
2359if test "${with_xim}" != "no"; then
2360 AC_DEFINE(USE_XIM, 1,
2361 [Define to 1 if we should use XIM, if it is available.])
2362fi
2363
2364
2365if test "${HAVE_XIM}" != "no"; then
2366 late_CFLAGS=$CFLAGS
2367 if test "$GCC" = yes; then
2368 CFLAGS="$CFLAGS --pedantic-errors"
2369 fi
181855e6 2370 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
067d23c9 2371#include <X11/Xlib.h>
181855e6
GM
2372#include <X11/Xresource.h>]],
2373[[Display *display;
067d23c9
KY
2374XrmDatabase db;
2375char *res_name;
2376char *res_class;
2377XIMProc callback;
2378XPointer *client_data;
2379#ifndef __GNUC__
2380/* If we're not using GCC, it's probably not XFree86, and this is
2381 probably right, but we can't use something like --pedantic-errors. */
2382extern Bool XRegisterIMInstantiateCallback(Display*, XrmDatabase, char*,
2383 char*, XIMProc, XPointer*);
2384#endif
2385(void)XRegisterIMInstantiateCallback(display, db, res_name, res_class, callback,
181855e6 2386 client_data);]])],
067d23c9
KY
2387 [emacs_cv_arg6_star=yes])
2388 AH_TEMPLATE(XRegisterIMInstantiateCallback_arg6,
2389 [Define to the type of the 6th arg of XRegisterIMInstantiateCallback,
2390either XPointer or XPointer*.])dnl
2391 if test "$emacs_cv_arg6_star" = yes; then
2392 AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer*])
2393 else
2394 AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer])
2395 fi
2396 CFLAGS=$late_CFLAGS
2397fi
2398
2399### Start of font-backend (under any platform) section.
2400# (nothing here yet -- this is a placeholder)
2401### End of font-backend (under any platform) section.
2402
2403### Start of font-backend (under X11) section.
2404if test "${HAVE_X11}" = "yes"; then
2405 PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2.0, HAVE_FC=yes, HAVE_FC=no)
2406
2407 ## Use -lXft if available, unless `--with-xft=no'.
2408 HAVE_XFT=maybe
2409 if test "${HAVE_FC}" = "no" || test "x${with_x}" = "xno"; then
2410 with_xft="no";
2411 fi
2412 if test "x${with_xft}" != "xno"; then
2413
2414 PKG_CHECK_MODULES(XFT, xft >= 0.13.0, , HAVE_XFT=no)
2415 ## Because xftfont.c uses XRenderQueryExtension, we also
2416 ## need to link to -lXrender.
2417 HAVE_XRENDER=no
2418 AC_CHECK_LIB(Xrender, XRenderQueryExtension, HAVE_XRENDER=yes)
2419 if test "$HAVE_XFT" != no && test "$HAVE_XRENDER" != no; then
2420 OLD_CPPFLAGS="$CPPFLAGS"
2421 OLD_CFLAGS="$CFLAGS"
2422 OLD_LIBS="$LIBS"
2423 CPPFLAGS="$CPPFLAGS $XFT_CFLAGS"
2424 CFLAGS="$CFLAGS $XFT_CFLAGS"
2425 XFT_LIBS="-lXrender $XFT_LIBS"
2426 LIBS="$XFT_LIBS $LIBS"
2427 AC_CHECK_HEADER(X11/Xft/Xft.h,
2428 AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS))
2429
2430 if test "${HAVE_XFT}" = "yes"; then
2431 AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
2432 AC_SUBST(XFT_LIBS)
2433 C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
2434 else
2435 CPPFLAGS="$OLD_CPPFLAGS"
2436 CFLAGS="$OLD_CFLAGS"
2437 LIBS="$OLD_LIBS"
2438 fi # "${HAVE_XFT}" = "yes"
2439 fi # "$HAVE_XFT" != no
2440 fi # "x${with_xft}" != "xno"
2441
870d9cf6
GM
2442 ## We used to allow building with FreeType and without Xft.
2443 ## However, the ftx font backend driver is not in good shape.
067d23c9 2444 if test "$HAVE_XFT" != "yes"; then
870d9cf6 2445 dnl For the "Does Emacs use" message at the end.
067d23c9 2446 HAVE_XFT=no
870d9cf6
GM
2447 HAVE_FREETYPE=no
2448 else
2449 dnl Strict linkers fail with
2450 dnl ftfont.o: undefined reference to symbol 'FT_New_Face'
2451 dnl if -lfreetype is not specified.
2452 dnl The following is needed to set FREETYPE_LIBS.
2453 PKG_CHECK_MODULES(FREETYPE, freetype2, HAVE_FREETYPE=yes,
46dcfee4 2454 HAVE_FREETYPE=no)
870d9cf6
GM
2455
2456 test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype)
067d23c9
KY
2457 fi
2458
067d23c9
KY
2459 HAVE_LIBOTF=no
2460 if test "${HAVE_FREETYPE}" = "yes"; then
2461 AC_DEFINE(HAVE_FREETYPE, 1,
2462 [Define to 1 if using the freetype and fontconfig libraries.])
2463 if test "${with_libotf}" != "no"; then
2464 PKG_CHECK_MODULES(LIBOTF, libotf, HAVE_LIBOTF=yes,
2465 HAVE_LIBOTF=no)
2466 if test "$HAVE_LIBOTF" = "yes"; then
2467 AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.])
2468 AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
2469 HAVE_OTF_GET_VARIATION_GLYPHS=yes,
2470 HAVE_OTF_GET_VARIATION_GLYPHS=no)
2471 if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
2472 AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1,
2473 [Define to 1 if libotf has OTF_get_variation_glyphs.])
2474 fi
2475 fi
2476 fi
2477 dnl FIXME should there be an error if HAVE_FREETYPE != yes?
2478 dnl Does the new font backend require it, or can it work without it?
2479 fi
2480
2481 HAVE_M17N_FLT=no
2482 if test "${HAVE_LIBOTF}" = yes; then
2483 if test "${with_m17n_flt}" != "no"; then
2484 PKG_CHECK_MODULES(M17N_FLT, m17n-flt, HAVE_M17N_FLT=yes, HAVE_M17N_FLT=no)
2485 if test "$HAVE_M17N_FLT" = "yes"; then
2486 AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
2487 fi
2488 fi
2489 fi
2490else
2491 HAVE_XFT=no
2492 HAVE_FREETYPE=no
2493 HAVE_LIBOTF=no
2494 HAVE_M17N_FLT=no
2495fi
2496
2497### End of font-backend (under X11) section.
2498
2499AC_SUBST(FREETYPE_CFLAGS)
2500AC_SUBST(FREETYPE_LIBS)
2501AC_SUBST(FONTCONFIG_CFLAGS)
2502AC_SUBST(FONTCONFIG_LIBS)
2503AC_SUBST(LIBOTF_CFLAGS)
2504AC_SUBST(LIBOTF_LIBS)
2505AC_SUBST(M17N_FLT_CFLAGS)
2506AC_SUBST(M17N_FLT_LIBS)
2507
2508### Use -lXpm if available, unless `--with-xpm=no'.
2509HAVE_XPM=no
2510LIBXPM=
0fda9b75
DC
2511
2512if test "${HAVE_W32}" = "yes"; then
2513 if test "${with_xpm}" != "no"; then
2514 SAVE_CPPFLAGS="$CPPFLAGS"
2515 SAVE_LDFLAGS="$LDFLAGS"
2516 CPPFLAGS="$CPPFLAGS -I/usr/include/noX"
2517 LDFLAGS="$LDFLAGS -L/usr/lib/noX"
2518 AC_CHECK_HEADER(X11/xpm.h,
2519 [AC_CHECK_LIB(Xpm, XpmReadFileToImage, HAVE_XPM=yes)])
2520 if test "${HAVE_XPM}" = "yes"; then
2521 AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
2522 AC_EGREP_CPP(no_return_alloc_pixels,
2523 [#include "X11/xpm.h"
2524#ifndef XpmReturnAllocPixels
2525no_return_alloc_pixels
2526#endif
2527 ], HAVE_XPM=no, HAVE_XPM=yes)
2528
2529 if test "${HAVE_XPM}" = "yes"; then
2530 REAL_CPPFLAGS="$REAL_CPPFLAGS -I/usr/include/noX"
2531 AC_MSG_RESULT(yes)
2532 else
2533 AC_MSG_RESULT(no)
2534 CPPFLAGS="$SAVE_CPPFLAGS"
2535 LDFLAGS="$SAVE_LDFLAGS"
2536 fi
2537 fi
2538 fi
2539
2540 if test "${HAVE_XPM}" = "yes"; then
791ef5f8 2541 AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
0fda9b75
DC
2542 LIBXPM=-lXpm
2543 fi
2544fi
2545
067d23c9
KY
2546if test "${HAVE_X11}" = "yes"; then
2547 if test "${with_xpm}" != "no"; then
2548 AC_CHECK_HEADER(X11/xpm.h,
2549 [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
2550 if test "${HAVE_XPM}" = "yes"; then
2551 AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
2552 AC_EGREP_CPP(no_return_alloc_pixels,
2553 [#include "X11/xpm.h"
2554#ifndef XpmReturnAllocPixels
2555no_return_alloc_pixels
2556#endif
2557 ], HAVE_XPM=no, HAVE_XPM=yes)
2558
2559 if test "${HAVE_XPM}" = "yes"; then
2560 AC_MSG_RESULT(yes)
2561 else
2562 AC_MSG_RESULT(no)
2563 fi
2564 fi
2565 fi
2566
2567 if test "${HAVE_XPM}" = "yes"; then
20db1522 2568 AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
067d23c9
KY
2569 LIBXPM=-lXpm
2570 fi
2571fi
0fda9b75 2572
067d23c9
KY
2573AC_SUBST(LIBXPM)
2574
2575### Use -ljpeg if available, unless `--with-jpeg=no'.
2576HAVE_JPEG=no
2577LIBJPEG=
0fda9b75 2578if test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
067d23c9
KY
2579 if test "${with_jpeg}" != "no"; then
2580 dnl Checking for jpeglib.h can lose because of a redefinition of
2581 dnl HAVE_STDLIB_H.
2582 AC_CHECK_HEADER(jerror.h,
2583 [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
2584 fi
2585
2586 AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
2587 if test "${HAVE_JPEG}" = "yes"; then
2588 AC_DEFINE(HAVE_JPEG)
2589 AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
2590 [#include <jpeglib.h>
2591 version=JPEG_LIB_VERSION
2592],
2593 [AC_DEFINE(HAVE_JPEG)],
2594 [AC_MSG_WARN([libjpeg found, but not version 6b or later])
2595 HAVE_JPEG=no])
2596 fi
2597 if test "${HAVE_JPEG}" = "yes"; then
2598 LIBJPEG=-ljpeg
2599 fi
2600fi
2601AC_SUBST(LIBJPEG)
2602
2603### Use -lpng if available, unless `--with-png=no'.
2604HAVE_PNG=no
2605LIBPNG=
0fda9b75 2606if test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
067d23c9
KY
2607 if test "${with_png}" != "no"; then
2608 # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
2609 # in /usr/include/libpng.
0ccb0b09 2610 AC_CHECK_HEADERS(png.h libpng/png.h, break)
067d23c9
KY
2611 if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
2612 AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm)
2613 fi
2614 fi
2615
2616 if test "${HAVE_PNG}" = "yes"; then
2617 AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
2618 LIBPNG="-lpng -lz -lm"
0ccb0b09
PE
2619
2620 AC_CHECK_DECL(png_longjmp,
2621 [],
cda158b4 2622 [AC_DEFINE(PNG_DEPSTRUCT, [],
0ccb0b09
PE
2623 [Define to empty to suppress deprecation warnings when building
2624 with --enable-gcc-warnings and with libpng versions before 1.5,
2625 which lack png_longjmp.])],
2626 [[#ifdef HAVE_LIBPNG_PNG_H
2627 # include <libpng/png.h>
2628 #else
2629 # include <png.h>
2630 #endif
2631 ]])
067d23c9
KY
2632 fi
2633fi
2634AC_SUBST(LIBPNG)
2635
2636### Use -ltiff if available, unless `--with-tiff=no'.
2637HAVE_TIFF=no
2638LIBTIFF=
0fda9b75 2639if test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
067d23c9
KY
2640 if test "${with_tiff}" != "no"; then
2641 AC_CHECK_HEADER(tiffio.h,
2642 [tifflibs="-lz -lm"
2643 # At least one tiff package requires the jpeg library.
2644 if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
2645 AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)])
2646 fi
2647
2648 if test "${HAVE_TIFF}" = "yes"; then
2649 AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
2650 dnl FIXME -lz -lm, as per libpng?
2651 LIBTIFF=-ltiff
2652 fi
2653fi
2654AC_SUBST(LIBTIFF)
2655
2656### Use -lgif or -lungif if available, unless `--with-gif=no'.
2657HAVE_GIF=no
2658LIBGIF=
0fda9b75
DC
2659if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no" \
2660 || test "${HAVE_W32}" = "yes"; then
067d23c9
KY
2661 AC_CHECK_HEADER(gif_lib.h,
2662# EGifPutExtensionLast only exists from version libungif-4.1.0b1.
2663# Earlier versions can crash Emacs.
2664 [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])
2665
2666 if test "$HAVE_GIF" = yes; then
2667 LIBGIF=-lgif
2668 elif test "$HAVE_GIF" = maybe; then
2669# If gif_lib.h but no libgif, try libungif.
2670 AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no)
2671 test "$HAVE_GIF" = yes && LIBGIF=-lungif
2672 fi
2673
2674 if test "${HAVE_GIF}" = "yes"; then
2675 AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
2676 fi
2677fi
2678AC_SUBST(LIBGIF)
2679
2680dnl Check for required libraries.
2681if test "${HAVE_X11}" = "yes"; then
2682 MISSING=""
2683 WITH_NO=""
2684 test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
2685 MISSING="libXpm" && WITH_NO="--with-xpm=no"
2686 test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
2687 MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
2688 test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
2689 MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
2690 test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
2691 MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
2692 test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
2693 MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
2694
2695 if test "X${MISSING}" != X; then
2696 AC_MSG_ERROR([The following required libraries were not found:
2697 $MISSING
2698Maybe some development libraries/packages are missing?
2699If you don't want to link with them give
2700 $WITH_NO
2701as options to configure])
2702 fi
2703fi
2704
2705### Use -lgpm if available, unless `--with-gpm=no'.
2706HAVE_GPM=no
2707LIBGPM=
067d23c9
KY
2708if test "${with_gpm}" != "no"; then
2709 AC_CHECK_HEADER(gpm.h,
2710 [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
2711
2712 if test "${HAVE_GPM}" = "yes"; then
2713 AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
2714 LIBGPM=-lgpm
067d23c9
KY
2715 fi
2716fi
2717AC_SUBST(LIBGPM)
2718
2719dnl Check for malloc/malloc.h on darwin
0e7a053e 2720AC_CHECK_HEADERS_ONCE(malloc/malloc.h)
067d23c9 2721
2f097256 2722GNUSTEP_CFLAGS=
067d23c9
KY
2723### Use NeXTstep API to implement GUI.
2724if test "${HAVE_NS}" = "yes"; then
2725 AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.])
2726 if test "${NS_IMPL_COCOA}" = "yes"; then
2727 AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under MacOS X.])
067d23c9
KY
2728 fi
2729 if test "${NS_IMPL_GNUSTEP}" = "yes"; then
2730 AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
2731 # See also .m.o rule in Makefile.in */
2732 # FIXME: are all these flags really needed? Document here why. */
2f097256 2733 GNUSTEP_CFLAGS="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
0cc87afb
GM
2734 ## Extra CFLAGS applied to src/*.m files.
2735 GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
067d23c9 2736 fi
067d23c9
KY
2737 # We also have mouse menus.
2738 HAVE_MENUS=yes
2739 OTHER_FILES=ns-app
2740fi
2741
0fda9b75
DC
2742if test "${HAVE_W32}" = "yes"; then
2743 HAVE_MENUS=yes
2744fi
067d23c9
KY
2745
2746### Use session management (-lSM -lICE) if available
2747HAVE_X_SM=no
2748LIBXSM=
2749if test "${HAVE_X11}" = "yes"; then
2750 AC_CHECK_HEADER(X11/SM/SMlib.h,
2751 [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
2752
2753 if test "${HAVE_X_SM}" = "yes"; then
2754 AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
2755 LIBXSM="-lSM -lICE"
2756 case "$LIBS" in
2757 *-lSM*) ;;
2758 *) LIBS="$LIBXSM $LIBS" ;;
2759 esac
2760 fi
2761fi
2762AC_SUBST(LIBXSM)
2763
2764### Use libxml (-lxml2) if available
04d51ad4 2765HAVE_LIBXML2=no
067d23c9
KY
2766if test "${with_xml2}" != "no"; then
2767 ### I'm not sure what the version number should be, so I just guessed.
dab73760 2768 PKG_CHECK_MODULES(LIBXML2, libxml-2.0 > 2.6.17, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
067d23c9
KY
2769 if test "${HAVE_LIBXML2}" = "yes"; then
2770 LIBS="$LIBXML2_LIBS $LIBS"
2771 AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
2772 if test "${HAVE_LIBXML2}" = "yes"; then
2773 AC_DEFINE(HAVE_LIBXML2, 1, [Define to 1 if you have the libxml library (-lxml2).])
2774 else
2775 LIBXML2_LIBS=""
2776 LIBXML2_CFLAGS=""
2777 fi
2778 fi
2779fi
2780AC_SUBST(LIBXML2_LIBS)
2781AC_SUBST(LIBXML2_CFLAGS)
2782
2783# If netdb.h doesn't declare h_errno, we must declare it by hand.
2784AC_CACHE_CHECK(whether netdb declares h_errno,
2785 emacs_cv_netdb_declares_h_errno,
181855e6
GM
2786[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
2787 [[return h_errno;]])],
067d23c9
KY
2788 emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
2789if test $emacs_cv_netdb_declares_h_errno = yes; then
2790 AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
2791fi
2792
c990426a
PE
2793# sqrt and other floating-point functions such as fmod and frexp
2794# are found in -lm on most systems.
067d23c9
KY
2795AC_CHECK_LIB(m, sqrt)
2796
2797# Check for mail-locking functions in a "mail" library. Probably this should
2798# have the same check as for liblockfile below.
2799AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
2800if test $have_mail = yes; then
2801 LIBS_MAIL=-lmail
2802 LIBS="$LIBS_MAIL $LIBS"
2803 AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library (-lmail).])
2804else
2805 LIBS_MAIL=
2806fi
2807dnl Debian, at least:
2808AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
2809if test $have_lockfile = yes; then
2810 LIBS_MAIL=-llockfile
2811 LIBS="$LIBS_MAIL $LIBS"
2812 AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' library (-llockfile).])
2813else
2814# If we have the shared liblockfile, assume we must use it for mail
2815# locking (e.g. Debian). If we couldn't link against liblockfile
2816# (no liblockfile.a installed), ensure that we don't need to.
2817 dnl This works for files generally, not just executables.
2818 dnl Should we look elsewhere for it? Maybe examine /etc/ld.so.conf?
2819 AC_CHECK_PROG(liblockfile, liblockfile.so, yes, no,
2820 /usr/lib:/lib:/usr/local/lib:$LD_LIBRARY_PATH)
2821 if test $ac_cv_prog_liblockfile = yes; then
2822 AC_MSG_ERROR([Shared liblockfile found but can't link against it.
2823This probably means that movemail could lose mail.
2824There may be a `development' package to install containing liblockfile.])
2825 fi
2826fi
0e7a053e 2827AC_CHECK_HEADERS_ONCE(maillock.h)
067d23c9
KY
2828AC_SUBST(LIBS_MAIL)
2829
2830## Define MAIL_USE_FLOCK (or LOCKF) if the mailer uses flock (or lockf) to
2831## interlock access to the mail spool. The alternative is a lock file named
2832## /usr/spool/mail/$USER.lock.
2833mail_lock=no
2834case "$opsys" in
2835 aix4-2) mail_lock="lockf" ;;
2836
2837 gnu|freebsd|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
2838
2839 ## On GNU/Linux systems, both methods are used by various mail programs.
2840 ## I assume most people are using newer mailers that have heard of flock.
2841 ## Change this if you need to.
2842 ## Debian contains a patch which says: ``On Debian/GNU/Linux systems,
2843 ## configure gets the right answers, and that means *NOT* using flock.
2844 ## Using flock is guaranteed to be the wrong thing. See Debian Policy
2845 ## for details.'' and then uses `#ifdef DEBIAN'. Unfortunately the
2846 ## Debian maintainer hasn't provided a clean fix for Emacs.
2847 ## movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
2848 ## HAVE_MAILLOCK_H are defined, so the following appears to be the
2849 ## correct logic. -- fx
2850 ## We must check for HAVE_LIBLOCKFILE too, as movemail does.
2851 ## liblockfile is a Free Software replacement for libmail, used on
2852 ## Debian systems and elsewhere. -rfr.
2853 gnu-*)
2854 mail_lock="flock"
2855 if test $have_mail = yes || test $have_lockfile = yes; then
2856 test $ac_cv_header_maillock_h = yes && mail_lock=no
2857 fi
2858 ;;
2859esac
2860
2861BLESSMAIL_TARGET=
2862case "$mail_lock" in
2863 flock) AC_DEFINE(MAIL_USE_FLOCK, 1, [Define if the mailer uses flock to interlock the mail spool.]) ;;
2864
2865 lockf) AC_DEFINE(MAIL_USE_LOCKF, 1, [Define if the mailer uses lockf to interlock the mail spool.]) ;;
2866
2867 *) BLESSMAIL_TARGET="need-blessmail" ;;
2868esac
2869AC_SUBST(BLESSMAIL_TARGET)
2870
2871
54e8a418 2872AC_CHECK_FUNCS(gethostname \
95ef7787 2873getrusage get_current_dir_name \
dd0333b6 2874lrand48 \
3d082a26 2875select getpagesize setlocale \
9239d970 2876utimes getrlimit setrlimit shutdown getaddrinfo \
8148369c 2877strsignal setitimer \
03043c1b 2878sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
9232a6d9
PE
2879gai_strerror mkstemp getline getdelim fsync sync \
2880difftime posix_memalign \
316411f0 2881getpwent endpwent getgrent endgrent \
03043c1b 2882touchlock \
c8199d0f 2883cfmakeraw cfsetspeed copysign __executable_start)
067d23c9 2884
4516fbef
GM
2885## Eric Backus <ericb@lsid.hp.com> says, HP-UX 9.x on HP 700 machines
2886## has a broken `rint' in some library versions including math library
2887## version number A.09.05.
2888## You can fix the math library by installing patch number PHSS_4630.
2889## But we can fix it more reliably for Emacs by just not using rint.
5af2266c 2890## We also skip HAVE_RANDOM - see comments in src/conf_post.h.
4516fbef
GM
2891case $opsys in
2892 hpux*) : ;;
2893 *) AC_CHECK_FUNCS(random rint) ;;
2894esac
2895
2018939f
AS
2896dnl Cannot use AC_CHECK_FUNCS
2897AC_CACHE_CHECK([for __builtin_unwind_init],
2898 emacs_cv_func___builtin_unwind_init,
2899[AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_unwind_init ();])],
2900 emacs_cv_func___builtin_unwind_init=yes,
2901 emacs_cv_func___builtin_unwind_init=no)])
2902if test $emacs_cv_func___builtin_unwind_init = yes; then
2903 AC_DEFINE(HAVE___BUILTIN_UNWIND_INIT, 1,
2904 [Define to 1 if you have the `__builtin_unwind_init' function.])
2905fi
2906
0e7a053e 2907AC_CHECK_HEADERS_ONCE(sys/un.h)
067d23c9 2908
067d23c9
KY
2909AC_FUNC_FSEEKO
2910
067d23c9 2911# UNIX98 PTYs.
54e8a418 2912AC_CHECK_FUNCS(grantpt)
067d23c9
KY
2913
2914# PTY-related GNU extensions.
1598ef28 2915AC_CHECK_FUNCS(getpt posix_openpt)
067d23c9
KY
2916
2917# Check this now, so that we will NOT find the above functions in ncurses.
2918# That is because we have not set up to link ncurses in lib-src.
2919# It's better to believe a function is not available
2920# than to expect to find it in ncurses.
2921# Also we need tputs and friends to be able to build at all.
f20f95c6
PE
2922AC_MSG_CHECKING([for library containing tputs])
2923# Run a test program that contains a call to tputs, a call that is
2924# never executed. This tests whether a pre-'main' dynamic linker
2925# works with the library. It's too much trouble to actually call
2926# tputs in the test program, due to portability hassles. When
2927# cross-compiling, assume the test program will run if it links.
2928AC_DEFUN([tputs_link_source], [
2929 AC_LANG_SOURCE(
2930 [[extern void tputs (const char *, int, int (*)(int));
2931 int main (int argc, char **argv)
2932 {
2933 if (argc == 10000)
2934 tputs (argv[0], 0, 0);
2935 return 0;
2936 }]])
2937])
fd8dea03
GM
2938# Maybe curses should be tried earlier?
2939# See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9736#35
a4a18b8b 2940for tputs_library in '' tinfo ncurses terminfo termcap curses; do
f20f95c6
PE
2941 OLIBS=$LIBS
2942 if test -z "$tputs_library"; then
2943 LIBS_TERMCAP=
2944 msg='none required'
2945 else
2946 LIBS_TERMCAP=-l$tputs_library
2947 msg=$LIBS_TERMCAP
2948 LIBS="$LIBS_TERMCAP $LIBS"
2949 fi
2950 AC_RUN_IFELSE([tputs_link_source], [], [msg=no],
2951 [AC_LINK_IFELSE([tputs_link_source], [], [msg=no])])
2952 LIBS=$OLIBS
2953 if test "X$msg" != Xno; then
2954 break
2955 fi
2956done
2957AC_MSG_RESULT([$msg])
2958if test "X$msg" = Xno; then
fd8dea03 2959 AC_MSG_ERROR([The required function `tputs' was not found in any library.
a4a18b8b
GM
2960The following libraries were tried (in order):
2961 libtinfo, libncurses, libterminfo, libtermcap, libcurses
fd8dea03
GM
2962Please try installing whichever of these libraries is most appropriate
2963for your system, together with its header files.
2964For example, a libncurses-dev(el) or similar package.])
067d23c9 2965fi
067d23c9 2966
262f06da
GM
2967## Use termcap instead of terminfo?
2968## Only true for: freebsd < 40000, ms-w32, msdos, netbsd < 599002500.
2969TERMINFO=yes
a4a18b8b
GM
2970## FIXME? In the cases below where we unconditionally set
2971## LIBS_TERMCAP="-lncurses", this overrides LIBS_TERMCAP = -ltinfo,
2972## if that was found above to have tputs.
2973## Should we use the gnu* logic everywhere?
067d23c9 2974case "$opsys" in
067d23c9
KY
2975 ## darwin: Prevents crashes when running Emacs in Terminal.app under 10.2.
2976 ## The ncurses library has been moved out of the System framework in
2977 ## Mac OS X 10.2. So if configure detects it, set the command-line
2978 ## option to use it.
a4a18b8b
GM
2979 darwin) LIBS_TERMCAP="-lncurses" ;;
2980
01319a4e 2981 gnu*) test -z "$LIBS_TERMCAP" && LIBS_TERMCAP="-lncurses" ;;
067d23c9
KY
2982
2983 freebsd)
2984 AC_MSG_CHECKING([whether FreeBSD is new enough to use terminfo])
2985 AC_CACHE_VAL(emacs_cv_freebsd_terminfo,
181855e6
GM
2986 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <osreldate.h>]],
2987[[#if __FreeBSD_version < 400000
067d23c9
KY
2988fail;
2989#endif
181855e6 2990]])], emacs_cv_freebsd_terminfo=yes, emacs_cv_freebsd_terminfo=no)])
067d23c9
KY
2991
2992 AC_MSG_RESULT($emacs_cv_freebsd_terminfo)
2993
2994 if test $emacs_cv_freebsd_terminfo = yes; then
067d23c9
KY
2995 LIBS_TERMCAP="-lncurses"
2996 else
262f06da 2997 TERMINFO=no
067d23c9
KY
2998 LIBS_TERMCAP="-ltermcap"
2999 fi
3000 ;;
3001
3002 netbsd)
01319a4e 3003 if test "x$LIBS_TERMCAP" != "x-lterminfo"; then
262f06da 3004 TERMINFO=no
067d23c9
KY
3005 LIBS_TERMCAP="-ltermcap"
3006 fi
3007 ;;
3008
3ba0a545 3009 openbsd) LIBS_TERMCAP="-lncurses" ;;
067d23c9 3010
067d23c9
KY
3011 ## hpux: Make sure we get select from libc rather than from libcurses
3012 ## because libcurses on HPUX 10.10 has a broken version of select.
3013 ## We used to use -lc -lcurses, but this may be cleaner.
e3da5b19
GM
3014 ## FIXME? But TERMINFO = yes on hpux (it used to be explicitly
3015 # set that way, now it uses the default). Isn't this a contradiction?
067d23c9
KY
3016 hpux*) LIBS_TERMCAP="-ltermcap" ;;
3017
067d23c9
KY
3018esac
3019
3020TERMCAP_OBJ=tparam.o
3021if test $TERMINFO = yes; then
3022 AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.])
067d23c9
KY
3023 TERMCAP_OBJ=terminfo.o
3024fi
3025AC_SUBST(LIBS_TERMCAP)
3026AC_SUBST(TERMCAP_OBJ)
3027
3028
3029# Do we have res_init, for detecting changes in /etc/resolv.conf?
4516fbef
GM
3030# On Darwin, res_init appears not to be useful: see bug#562 and
3031# http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01467.html
067d23c9 3032resolv=no
4516fbef
GM
3033
3034if test $opsys != darwin; then
3035
3036 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
067d23c9 3037#include <arpa/nameser.h>
181855e6
GM
3038#include <resolv.h>]],
3039 [[return res_init();]])],
067d23c9 3040 have_res_init=yes, have_res_init=no)
4516fbef
GM
3041 if test "$have_res_init" = no; then
3042 OLIBS="$LIBS"
3043 LIBS="$LIBS -lresolv"
3044 AC_MSG_CHECKING(for res_init with -lresolv)
3045 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
067d23c9 3046#include <arpa/nameser.h>
181855e6 3047#include <resolv.h>]],
4516fbef
GM
3048 [[return res_init();]])],
3049 have_res_init=yes, have_res_init=no)
3050 AC_MSG_RESULT($have_res_init)
3051 if test "$have_res_init" = yes ; then
3052 resolv=yes
3053 fi
3054 LIBS="$OLIBS"
067d23c9 3055 fi
067d23c9 3056
4516fbef
GM
3057 if test "$have_res_init" = yes; then
3058 AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if res_init is available.])
3059 fi
3060fi dnl !darwin
067d23c9
KY
3061
3062# Do we need the Hesiod library to provide the support routines?
4516fbef 3063dnl FIXME? Should we be skipping this on Darwin too?
067d23c9
KY
3064LIBHESIOD=
3065if test "$with_hesiod" != no ; then
3066 # Don't set $LIBS here -- see comments above. FIXME which comments?
3067 AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
3068 [AC_CHECK_LIB(resolv, res_send, resolv=yes,
3069 [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
3070 if test "$resolv" = yes ; then
3071 RESOLVLIB=-lresolv
3072 else
3073 RESOLVLIB=
3074 fi
3075 AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
3076 hesiod=yes, :, $RESOLVLIB)])
3077
3078 if test x"$hesiod" = xyes; then
3079 AC_DEFINE(HAVE_LIBHESIOD, 1,
3080 [Define to 1 if you have the hesiod library (-lhesiod).])
3081 LIBHESIOD=-lhesiod
3082 fi
3083fi
3084AC_SUBST(LIBHESIOD)
3085
3086# Do we need libresolv (due to res_init or Hesiod)?
4516fbef 3087if test "$resolv" = yes && test $opsys != darwin; then
067d23c9
KY
3088 AC_DEFINE(HAVE_LIBRESOLV, 1,
3089 [Define to 1 if you have the resolv library (-lresolv).])
3090 LIBRESOLV=-lresolv
3091else
3092 LIBRESOLV=
3093fi
3094AC_SUBST(LIBRESOLV)
3095
3096# These tell us which Kerberos-related libraries to use.
3097COM_ERRLIB=
3098CRYPTOLIB=
3099KRB5LIB=
3100DESLIB=
3101KRB4LIB=
3102
3103if test "${with_kerberos}" != no; then
3104 AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no)
3105 if test $have_com_err = yes; then
3106 COM_ERRLIB=-lcom_err
3107 LIBS="$COM_ERRLIB $LIBS"
3108 AC_DEFINE(HAVE_LIBCOM_ERR, 1, [Define to 1 if you have the `com_err' library (-lcom_err).])
3109 fi
3110 AC_CHECK_LIB(crypto, mit_des_cbc_encrypt, have_crypto=yes, have_crypto=no)
3111 if test $have_crypto = yes; then
3112 CRYPTOLIB=-lcrypto
3113 LIBS="$CRYPTOLIB $LIBS"
3114 AC_DEFINE(HAVE_LIBCRYPTO, 1, [Define to 1 if you have the `crypto' library (-lcrypto).])
3115 fi
3116 AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt, have_k5crypto=yes, have_k5crypto=no)
3117 if test $have_k5crypto = yes; then
3118 CRYPTOLIB=-lk5crypto
3119 LIBS="$CRYPTOLIB $LIBS"
3120 AC_DEFINE(HAVE_LIBK5CRYPTO, 1, [Define to 1 if you have the `k5crypto' library (-lk5crypto).])
3121 fi
3122 AC_CHECK_LIB(krb5, krb5_init_context, have_krb5=yes, have_krb5=no)
3123 if test $have_krb5=yes; then
3124 KRB5LIB=-lkrb5
3125 LIBS="$KRB5LIB $LIBS"
3126 AC_DEFINE(HAVE_LIBKRB5, 1, [Define to 1 if you have the `krb5' library (-lkrb5).])
3127 fi
3128 dnl FIXME Simplify. Does not match 22 logic, thanks to default_off?
3129 if test "${with_kerberos5}" = no; then
3130 AC_CHECK_LIB(des425, des_cbc_encrypt, have_des425=yes, have_des425=no )
3131 if test $have_des425 = yes; then
3132 DESLIB=-ldes425
3133 LIBS="$DESLIB $LIBS"
3134 AC_DEFINE(HAVE_LIBDES425, 1, [Define to 1 if you have the `des425' library (-ldes425).])
3135 else
3136 AC_CHECK_LIB(des, des_cbc_encrypt, have_des=yes, have_des=no)
3137 if test $have_des = yes; then
3138 DESLIB=-ldes
3139 LIBS="$DESLIB $LIBS"
3140 AC_DEFINE(HAVE_LIBDES, 1, [Define to 1 if you have the `des' library (-ldes).])
3141 fi
3142 fi
3143 AC_CHECK_LIB(krb4, krb_get_cred, have_krb4=yes, have_krb4=no)
3144 if test $have_krb4 = yes; then
3145 KRB4LIB=-lkrb4
3146 LIBS="$KRB4LIB $LIBS"
3147 AC_DEFINE(HAVE_LIBKRB4, 1, [Define to 1 if you have the `krb4' library (-lkrb4).])
3148 else
3149 AC_CHECK_LIB(krb, krb_get_cred, have_krb=yes, have_krb=no)
3150 if test $have_krb = yes; then
3151 KRB4LIB=-lkrb
3152 LIBS="$KRB4LIB $LIBS"
3153 AC_DEFINE(HAVE_LIBKRB, 1, [Define to 1 if you have the `krb' library (-lkrb).])
3154 fi
3155 fi
3156 fi
3157
3158 if test "${with_kerberos5}" != no; then
3159 AC_CHECK_HEADERS(krb5.h,
3160 [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,,
3161 [#include <krb5.h>])])
3162 else
3163 AC_CHECK_HEADERS(des.h,,
3164 [AC_CHECK_HEADERS(kerberosIV/des.h,,
3165 [AC_CHECK_HEADERS(kerberos/des.h)])])
3166 AC_CHECK_HEADERS(krb.h,,
3167 [AC_CHECK_HEADERS(kerberosIV/krb.h,,
3168 [AC_CHECK_HEADERS(kerberos/krb.h)])])
3169 fi
3170 AC_CHECK_HEADERS(com_err.h)
3171fi
3172
3173AC_SUBST(COM_ERRLIB)
3174AC_SUBST(CRYPTOLIB)
3175AC_SUBST(KRB5LIB)
3176AC_SUBST(DESLIB)
3177AC_SUBST(KRB4LIB)
3178
554fef51 3179AC_CHECK_FUNCS_ONCE(tzset)
067d23c9
KY
3180AC_MSG_CHECKING(whether localtime caches TZ)
3181AC_CACHE_VAL(emacs_cv_localtime_cache,
3182[if test x$ac_cv_func_tzset = xyes; then
181855e6 3183AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <time.h>
067d23c9
KY
3184char TZ_GMT0[] = "TZ=GMT0";
3185char TZ_PST8[] = "TZ=PST8";
3186main()
3187{
3188 time_t now = time ((time_t *) 0);
3189 int hour_GMT0, hour_unset;
3190 if (putenv (TZ_GMT0) != 0)
3191 exit (1);
3192 hour_GMT0 = localtime (&now)->tm_hour;
3193 unsetenv("TZ");
3194 hour_unset = localtime (&now)->tm_hour;
3195 if (putenv (TZ_PST8) != 0)
3196 exit (1);
3197 if (localtime (&now)->tm_hour == hour_GMT0)
3198 exit (1);
3199 unsetenv("TZ");
3200 if (localtime (&now)->tm_hour != hour_unset)
3201 exit (1);
3202 exit (0);
181855e6 3203}]])], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
067d23c9
KY
3204[# If we have tzset, assume the worst when cross-compiling.
3205emacs_cv_localtime_cache=yes])
3206else
3207 # If we lack tzset, report that localtime does not cache TZ,
3208 # since we can't invalidate the cache if we don't have tzset.
3209 emacs_cv_localtime_cache=no
3210fi])dnl
3211AC_MSG_RESULT($emacs_cv_localtime_cache)
3212if test $emacs_cv_localtime_cache = yes; then
3213 AC_DEFINE(LOCALTIME_CACHE, 1,
3214 [Define to 1 if localtime caches TZ.])
3215fi
3216
067d23c9
KY
3217ok_so_far=yes
3218AC_CHECK_FUNC(socket, , ok_so_far=no)
3219if test $ok_so_far = yes; then
3220 AC_CHECK_HEADER(netinet/in.h, , ok_so_far=no)
3221fi
3222if test $ok_so_far = yes; then
3223 AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
3224fi
3225if test $ok_so_far = yes; then
3226dnl Fixme: Not used. Should this be HAVE_SOCKETS?
3227 AC_DEFINE(HAVE_INET_SOCKETS, 1,
3228 [Define to 1 if you have inet sockets.])
3229fi
3230
3231if test -f /usr/lpp/X11/bin/smt.exp; then
3232 AC_DEFINE(HAVE_AIX_SMT_EXP, 1,
3233 [Define to 1 if the file /usr/lpp/X11/bin/smt.exp exists.])
3234fi
3235
3236AC_MSG_CHECKING(whether system supports dynamic ptys)
3237if test -d /dev/pts && ls -d /dev/ptmx > /dev/null 2>&1 ; then
3238 AC_MSG_RESULT(yes)
3239 AC_DEFINE(HAVE_DEV_PTMX, 1, [Define to 1 if dynamic ptys are supported.])
3240else
3241 AC_MSG_RESULT(no)
3242fi
3243
eeceac93
PE
3244dnl Check for a Solaris 2.4 vfork bug that Autoconf misses (through 2.69).
3245dnl This can be removed once we assume Autoconf 2.70.
3246case $canonical in
3247 *-solaris2.4 | *-solaris2.4.*)
3248 dnl Disable the Autoconf-generated vfork test.
3249 : ${ac_cv_func_vfork_works=no};;
3250esac
3251
067d23c9
KY
3252AC_FUNC_FORK
3253
54e8a418 3254AC_CHECK_FUNCS(snprintf)
55e5faa1 3255
067d23c9
KY
3256dnl Adapted from Haible's version.
3257AC_CACHE_CHECK([for nl_langinfo and CODESET], emacs_cv_langinfo_codeset,
181855e6
GM
3258 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
3259 [[char* cs = nl_langinfo(CODESET);]])],
067d23c9
KY
3260 emacs_cv_langinfo_codeset=yes,
3261 emacs_cv_langinfo_codeset=no)
3262 ])
3263if test $emacs_cv_langinfo_codeset = yes; then
3264 AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
3265 [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
3266fi
3267
067d23c9
KY
3268AC_TYPE_MBSTATE_T
3269
067d23c9 3270AC_CACHE_CHECK([for C restricted array declarations], emacs_cv_c_restrict_arr,
181855e6 3271 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[void fred (int x[__restrict]);]], [[]])],
067d23c9
KY
3272 emacs_cv_c_restrict_arr=yes, emacs_cv_c_restrict_arr=no)])
3273if test "$emacs_cv_c_restrict_arr" = yes; then
3274 AC_DEFINE(__restrict_arr, __restrict,
3275 [Define to compiler's equivalent of C99 restrict keyword in array
3276 declarations. Define as empty for no equivalent.])
3277fi
3278
3279dnl Fixme: AC_SYS_POSIX_TERMIOS should probably be used, but it's not clear
3280dnl how the tty code is related to POSIX and/or other versions of termios.
3281dnl The following looks like a useful start.
3282dnl
3283dnl AC_SYS_POSIX_TERMIOS
3284dnl if test $ac_cv_sys_posix_termios = yes; then
3285dnl AC_DEFINE(HAVE_TERMIOS, 1, [Define to 1 if you have POSIX-style functions
3286dnl and macros for terminal control.])
3287dnl AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.])
3288dnl fi
3289
8d8e2dfe
GM
3290dnl Turned on June 1996 supposing nobody will mind it.
3291AC_DEFINE(AMPERSAND_FULL_NAME, 1, [Define to use the convention that &
3292 in the full name stands for the login id.])
3293
172bedef
GM
3294dnl Every platform that uses configure (ie every non-MS platform)
3295dnl supports this. There is a create-lockfiles option you can
3296dnl customize if you do not want the lock files to be written.
3297dnl So it is not clear that this #define still needs to exist.
3298AC_DEFINE(CLASH_DETECTION, 1, [Define if you want lock files to be written,
3299 so that Emacs can tell instantly when you try to modify a file that
3300 someone else has modified in his/her Emacs.])
3301
ee1cf5cf
GM
3302dnl Everybody supports this, except MS.
3303dnl Seems like the kind of thing we should be testing for, though.
3304## Note: PTYs are broken on darwin <6. Use at your own risk.
3305AC_DEFINE(HAVE_PTYS, 1, [Define if the system supports pty devices.])
3306
3307dnl Everybody supports this, except MS-DOS.
3308dnl Seems like the kind of thing we should be testing for, though.
3309dnl Compare with HAVE_INET_SOCKETS (which is unused...) above.
3310AC_DEFINE(HAVE_SOCKETS, 1, [Define if the system supports
3311 4.2-compatible sockets.])
3312
ca35a5f7
GM
3313AH_TEMPLATE(INTERNAL_TERMINAL, [This is substituted when $TERM is "internal".])
3314
b2c7a106
GM
3315AC_DEFINE(NULL_DEVICE, ["/dev/null"], [Name of the file to open to get
3316 a null file, or a data sink.])
3317
3318AC_DEFINE(SEPCHAR, [':'], [Character that separates PATH elements.])
3319
8d8e2dfe
GM
3320dnl Everybody supports this, except MS-DOS.
3321AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.])
3322
b2c7a106
GM
3323AC_DEFINE(USER_FULL_NAME, [pw->pw_gecos], [How to get a user's full name.])
3324
ee1cf5cf 3325
9374581a
GM
3326AC_DEFINE(DIRECTORY_SEP, ['/'],
3327 [Character that separates directories in a file name.])
3328
5c0c0e8a
GM
3329dnl Only used on MS platforms.
3330AH_TEMPLATE(DEVICE_SEP, [Character that separates a device in a file name.])
3331
3332AC_DEFINE(IS_DEVICE_SEP(_c_), 0,
3333 [Returns true if character is a device separator.])
3334
3335AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == DIRECTORY_SEP)],
3336 [Returns true if character is a directory separator.])
3337
3338dnl On MS, this also accepts IS_DEVICE_SEP.
3339AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_))],
3340 [Returns true if character is any form of separator.])
3341
3342
ba9e4b84
GM
3343AH_TEMPLATE(NO_EDITRES, [Define if XEditRes should not be used.])
3344
3345case $opsys in
3346 aix4-2)
3347 dnl Unfortunately without libXmu we cannot support EditRes.
3348 if test x$ac_cv_lib_Xmu_XmuConvertStandardSelection != xyes; then
5dad233c 3349 AC_DEFINE(NO_EDITRES, 1)
ba9e4b84
GM
3350 fi
3351 ;;
3352
3353 hpux*)
3354 dnl Assar Westerlund <assar@sics.se> says this is necessary for
3355 dnl HP-UX 10.20, and that it works for HP-UX 0 as well.
3356 AC_DEFINE(NO_EDITRES, 1)
3357 ;;
3358esac
3359
3360
45fa9c0f 3361case $opsys in
739ae010
GM
3362 irix6-5 | sol2* | unixware )
3363 dnl Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
3364 dnl instead, there's a system variable _sys_nsig. Unfortunately, we
3365 dnl need the constant to dimension an array. So wire in the appropriate
3366 dnl value here.
3367 AC_DEFINE(NSIG_MINIMUM, 32, [Minimum value of NSIG.])
3368 ;;
45fa9c0f
GM
3369esac
3370
4a4bbad2 3371emacs_broken_SIGIO=no
ea0bbd17 3372
45fa9c0f 3373case $opsys in
ea0bbd17
GM
3374 dnl SIGIO exists, but the feature doesn't work in the way Emacs needs.
3375 dnl See eg <http://article.gmane.org/gmane.os.openbsd.ports/46831>.
45fa9c0f 3376 hpux* | irix6-5 | openbsd | sol2* | unixware )
4a4bbad2 3377 emacs_broken_SIGIO=yes
c5564388
GM
3378 ;;
3379
ea0bbd17 3380 aix4-2)
42bd1719
GM
3381 dnl On AIX Emacs uses the gmalloc.c malloc implementation. But given
3382 dnl the way this system works, libc functions that return malloced
3383 dnl memory use the libc malloc implementation. Calling xfree or
3384 dnl xrealloc on the results of such functions results in a crash.
3385 dnl
3386 dnl One solution for this could be to define SYSTEM_MALLOC in configure,
3387 dnl but that does not currently work on this system.
3388 dnl
3389 dnl It is possible to completely override the malloc implementation on
3390 dnl AIX, but that involves putting the malloc functions in a shared
3391 dnl library and setting the MALLOCTYPE environment variable to point to
3392 dnl that shared library.
3393 dnl
3394 dnl Emacs currently calls xrealloc on the results of get_current_dir name,
3395 dnl to avoid a crash just use the Emacs implementation for that function.
3396 dnl
3397 dnl FIXME We could change the AC_CHECK_FUNCS call near the start
3398 dnl of this file, so that we do not check for get_current_dir_name
3399 dnl on AIX. But that might be fragile if something else ends
3400 dnl up testing for get_current_dir_name as a dependency.
3401 AC_DEFINE(BROKEN_GET_CURRENT_DIR_NAME, 1, [Define if
3402 get_current_dir_name should not be used.])
3403 ;;
3404
3405 freebsd)
3406 dnl Circumvent a bug in FreeBSD. In the following sequence of
3407 dnl writes/reads on a PTY, read(2) returns bogus data:
3408 dnl
3409 dnl write(2) 1022 bytes
3410 dnl write(2) 954 bytes, get EAGAIN
3411 dnl read(2) 1024 bytes in process_read_output
3412 dnl read(2) 11 bytes in process_read_output
3413 dnl
3414 dnl That is, read(2) returns more bytes than have ever been written
3415 dnl successfully. The 1033 bytes read are the 1022 bytes written
3416 dnl successfully after processing (for example with CRs added if the
3417 dnl terminal is set up that way which it is here). The same bytes will
3418 dnl be seen again in a later read(2), without the CRs.
3419 AC_DEFINE(BROKEN_PTY_READ_AFTER_EAGAIN, 1, [Define on FreeBSD to
3420 work around an issue when reading from a PTY.])
ea0bbd17 3421 ;;
45fa9c0f
GM
3422esac
3423
b4492cba
GM
3424case $opsys in
3425 gnu-* | sol2-10 )
3426 dnl FIXME Can't we test if this exists (eg /proc/$$)?
3427 AC_DEFINE(HAVE_PROCFS, 1, [Define if you have the /proc filesystem.])
3428 ;;
3429esac
3430
9d596af3
GM
3431case $opsys in
3432 darwin | freebsd | netbsd | openbsd )
3433 AC_DEFINE(DONT_REOPEN_PTY, 1, [Define if process.c does not need to
3434 close a pty to make it a controlling terminal (it is already a
3435 controlling terminal of the subprocess, because we did ioctl TIOCSCTTY).])
3436 ;;
3437esac
3438
20e94fdd
GM
3439dnl FIXME Surely we can test for this rather than hard-code it.
3440case $opsys in
3441 netbsd | openbsd) sound_device="/dev/audio" ;;
3442 *) sound_device="/dev/dsp" ;;
3443esac
3444
3445dnl Used in sound.c
3446AC_DEFINE_UNQUOTED(DEFAULT_SOUND_DEVICE, "$sound_device",
3447 [Name of the default sound device.])
3448
09f4e3b0 3449
c43fb4c3
GM
3450dnl Emacs can read input using SIGIO and buffering characters itself,
3451dnl or using CBREAK mode and making C-g cause SIGINT.
3452dnl The choice is controlled by the variable interrupt_input.
3453dnl
3454dnl Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)
3455dnl
4a4bbad2 3456dnl Emacs uses the presence of the USABLE_SIGIO macro
c43fb4c3
GM
3457dnl to indicate whether or not signal-driven I/O is possible. It uses
3458dnl INTERRUPT_INPUT to decide whether to use it by default.
3459dnl
3460dnl SIGIO can be used only on systems that implement it (4.2 and 4.3).
3461dnl CBREAK mode has two disadvantages
3462dnl 1) At least in 4.2, it is impossible to handle the Meta key properly.
3463dnl I hear that in system V this problem does not exist.
3464dnl 2) Control-G causes output to be discarded.
3465dnl I do not know whether this can be fixed in system V.
3466dnl
3467dnl Another method of doing input is planned but not implemented.
3468dnl It would have Emacs fork off a separate process
3469dnl to read the input and send it to the true Emacs process
3470dnl through a pipe.
3471case $opsys in
3472 darwin | gnu-linux | gnu-kfreebsd )
3473 AC_DEFINE(INTERRUPT_INPUT, 1, [Define to read input using SIGIO.])
3474 ;;
3475esac
3476
3477
308aab79
GM
3478dnl If the system's imake configuration file defines `NeedWidePrototypes'
3479dnl as `NO', we must define NARROWPROTO manually. Such a define is
3480dnl generated in the Makefile generated by `xmkmf'. If we don't define
3481dnl NARROWPROTO, we will see the wrong function prototypes for X functions
3482dnl taking float or double parameters.
3483case $opsys in
3484 cygwin|gnu|gnu-linux|gnu-kfreebsd|irix6-5|freebsd|netbsd|openbsd)
3485 AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration
3486 file defines `NeedWidePrototypes' as `NO'.])
3487 ;;
3488esac
3489
3490
6e777848
GM
3491dnl Used in process.c, this must be a loop, even if it only runs once.
3492dnl (Except on SGI; see below. Take that, clarity and consistency!)
3493AH_TEMPLATE(PTY_ITERATION, [How to iterate over PTYs.])
3494dnl Only used if !PTY_ITERATION. Iterate from FIRST_PTY_LETTER to z,
3495dnl trying suffixes 0-16.
3496AH_TEMPLATE(FIRST_PTY_LETTER, [Letter to use in finding device name of
3497 first PTY, if PTYs are supported.])
0ab7b23a 3498AH_TEMPLATE(PTY_OPEN, [How to open a PTY, if non-standard.])
3f922c37
GM
3499AH_TEMPLATE(PTY_NAME_SPRINTF, [How to get the device name of the control
3500 end of a PTY, if non-standard.])
3501AH_TEMPLATE(PTY_TTY_NAME_SPRINTF, [How to get device name of the tty
3502 end of a PTY, if non-standard.])
6e777848
GM
3503
3504case $opsys in
3505 aix4-2 )
ef834897 3506 AC_DEFINE(PTY_ITERATION, [int c; for (c = 0; !c ; c++)])
3f922c37
GM
3507 dnl You allocate a pty by opening /dev/ptc to get the master side.
3508 dnl To get the name of the slave side, you just ttyname() the master side.
ef834897
GM
3509 AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])
3510 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));])
6e777848
GM
3511 ;;
3512
3513 cygwin )
ef834897 3514 AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
0ab7b23a 3515 dnl multi-line AC_DEFINEs are hard. :(
2fe28299 3516 AC_DEFINE(PTY_OPEN, [ do { int dummy; sigset_t blocked, procmask; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, &procmask); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; pthread_sigmask (SIG_SETMASK, &procmask, 0); if (fd >= 0) emacs_close (dummy); } while (0)])
ef834897
GM
3517 AC_DEFINE(PTY_NAME_SPRINTF, [])
3518 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
6e777848
GM
3519 ;;
3520
1598ef28 3521 dnl FIXME? Maybe use same as freebsd - see bug#12040.
6e777848 3522 darwin )
ef834897 3523 AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
6e777848
GM
3524 dnl Not used, because PTY_ITERATION is defined.
3525 AC_DEFINE(FIRST_PTY_LETTER, ['p'])
0ab7b23a
GM
3526 dnl Note that openpty may fork via grantpt on Mac OS X 10.4/Darwin 8.
3527 dnl But we don't have to block SIGCHLD because it is blocked in the
3528 dnl implementation of grantpt.
ef834897
GM
3529 AC_DEFINE(PTY_OPEN, [ do { int slave; if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) fd = -1; else emacs_close (slave); } while (0)])
3530 AC_DEFINE(PTY_NAME_SPRINTF, [])
3531 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
6e777848
GM
3532 ;;
3533
1598ef28 3534 gnu | openbsd )
6e777848
GM
3535 AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3536 ;;
3537
1598ef28 3538 gnu-linux | gnu-kfreebsd | freebsd | netbsd )
6e777848
GM
3539 dnl if HAVE_GRANTPT
3540 if test "x$ac_cv_func_grantpt" = xyes; then
3e91a053 3541 AC_DEFINE(UNIX98_PTYS, 1, [Define if the system has Unix98 PTYs.])
ef834897 3542 AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
3f922c37
GM
3543 dnl Note that grantpt and unlockpt may fork. We must block SIGCHLD
3544 dnl to prevent sigchld_handler from intercepting the child's death.
2fe28299 3545 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname = 0; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); if (grantpt (fd) != -1 && unlockpt (fd) != -1) ptyname = ptsname(fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (!ptyname) { close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); }])
1598ef28
JB
3546 dnl if HAVE_POSIX_OPENPT
3547 if test "x$ac_cv_func_posix_openpt" = xyes; then
3548 AC_DEFINE(PTY_OPEN, [fd = posix_openpt (O_RDWR | O_NOCTTY)])
a09710e9 3549 AC_DEFINE(PTY_NAME_SPRINTF, [])
0ab7b23a 3550 dnl if HAVE_GETPT
1598ef28 3551 elif test "x$ac_cv_func_getpt" = xyes; then
0ab7b23a 3552 AC_DEFINE(PTY_OPEN, [fd = getpt ()])
ef834897 3553 AC_DEFINE(PTY_NAME_SPRINTF, [])
3f922c37 3554 else
ef834897 3555 AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
0ab7b23a 3556 fi
6e777848
GM
3557 else
3558 AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3559 fi
3560 ;;
3561
3f922c37
GM
3562 hpux*)
3563 AC_DEFINE(FIRST_PTY_LETTER, ['p'])
ef834897
GM
3564 AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);])
3565 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
3f922c37
GM
3566 ;;
3567
6e777848
GM
3568 irix6-5 )
3569 dnl It looks like this cannot be right, because it is not a loop.
3570 dnl However, process.c actually does this:
3571 dnl # ifndef __sgi
3572 dnl continue;
3573 dnl # else
3574 dnl return -1;
3575 dnl # endif
3576 dnl which presumably makes it OK, since irix == sgi (?).
3577 dnl FIXME it seems like this special treatment is unnecessary?
3578 dnl Why can't irix use a single-trip loop like eg cygwin?
3579 AC_DEFINE(PTY_ITERATION, [])
3580 dnl Not used, because PTY_ITERATION is defined.
3581 AC_DEFINE(FIRST_PTY_LETTER, ['q'])
d983a10b 3582 AC_DEFINE(PTY_OPEN, [ { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCHLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCHLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); }])
5dad233c 3583 dnl No need to get the pty name at all.
ef834897 3584 AC_DEFINE(PTY_NAME_SPRINTF, [])
3f922c37 3585 dnl No need to use sprintf to get the tty name--we get that from _getpty.
ef834897 3586 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
6e777848
GM
3587 ;;
3588
3f922c37 3589 sol2* )
3f922c37
GM
3590 dnl On SysVr4, grantpt(3) forks a subprocess, so keep sigchld_handler()
3591 dnl from intercepting that death. If any child but grantpt's should die
3592 dnl within, it should be caught after sigrelse(2).
d983a10b 3593 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); }])
3f922c37
GM
3594 ;;
3595
3f922c37 3596 unixware )
33d63ff4 3597 dnl Comments are as per sol2*.
d983a10b 3598 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, sizeof pty_name, "%s", ptyname); }])
33d63ff4
GM
3599 ;;
3600esac
3601
3602
3603case $opsys in
3604 sol2* | unixware )
3605 dnl This change means that we don't loop through allocate_pty too
3606 dnl many times in the (rare) event of a failure.
3f922c37 3607 AC_DEFINE(FIRST_PTY_LETTER, ['z'])
ef834897 3608 AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
33d63ff4
GM
3609 dnl Push various streams modules onto a PTY channel. Used in process.c.
3610 AC_DEFINE(SETUP_SLAVE_PTY, [if (ioctl (xforkin, I_PUSH, "ptem") == -1) fatal ("ioctl I_PUSH ptem"); if (ioctl (xforkin, I_PUSH, "ldterm") == -1) fatal ("ioctl I_PUSH ldterm"); if (ioctl (xforkin, I_PUSH, "ttcompat") == -1) fatal ("ioctl I_PUSH ttcompat");], [How to set up a slave PTY, if needed.])
6e777848
GM
3611 ;;
3612esac
3613
3614
09f4e3b0
GM
3615AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by
3616"typing" a signal character on the pty.])
3617
3618case $opsys in
3619 dnl Perry Smith <pedz@ddivt1.austin.ibm.com> says this is correct for AIX.
3620 dnl thomas@mathematik.uni-bremen.de says this is needed for IRIX.
02e7729e 3621 aix4-2 | cygwin | gnu | irix6-5 | freebsd | netbsd | openbsd | darwin )
09f4e3b0
GM
3622 AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
3623 ;;
3624
5dad233c 3625 dnl 21 Jun 06: Eric Hanchrow <offby1@blarg.net> says this works.
09f4e3b0
GM
3626 dnl FIXME Does gnu-kfreebsd have linux/version.h? It seems unlikely...
3627 gnu-linux | gnu-kfreebsd )
3628
3629 AC_MSG_CHECKING([for signals via characters])
3630 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3631#include <linux/version.h>
3632#if LINUX_VERSION_CODE < 0x20400
3633# error "Linux version too old"
3634#endif
3635 ]], [[]])], emacs_signals_via_chars=yes, emacs_signals_via_chars=no)
3636
3637 AC_MSG_RESULT([$emacs_signals_via_chars])
3638 test $emacs_signals_via_chars = yes && AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
3639 ;;
3640esac
3641
3642
1ddc2bd6 3643dnl Used in lisp.h, emacs.c, vm-limit.c
c8add24e
GM
3644dnl NEWS.18 describes this as "a number which contains
3645dnl the high bits to be inclusive or'ed with pointers that are unpacked."
3646AH_TEMPLATE(DATA_SEG_BITS, [Extra bits to be or'd in with any pointers
3647stored in a Lisp_Object.])
3648dnl if Emacs uses fewer than 32 bits for the value field of a LISP_OBJECT.
3649
3650case $opsys in
35b3a27e
PE
3651 aix*)
3652 dnl This works with 32-bit executables; Emacs doesn't support 64-bit.
35b3a27e
PE
3653 AC_DEFINE(DATA_SEG_BITS, [0x20000000])
3654 ;;
882cf227
GM
3655 hpux*)
3656 dnl The data segment on this machine always starts at address 0x40000000.
882cf227
GM
3657 AC_DEFINE(DATA_SEG_BITS, [0x40000000])
3658 ;;
3659 irix6-5)
882cf227
GM
3660 AC_DEFINE(DATA_SEG_BITS, [0x10000000])
3661 ;;
3662esac
3663
7ccad002
GM
3664
3665AH_TEMPLATE(TAB3, [Undocumented.])
3666
b4492cba 3667case $opsys in
7ccad002 3668 darwin) AC_DEFINE(TAB3, OXTABS) ;;
8a07a8c6 3669
7ccad002 3670 gnu | freebsd | netbsd | openbsd )
ef834897 3671 AC_DEFINE(TABDLY, OXTABS, [Undocumented.])
7ccad002
GM
3672 AC_DEFINE(TAB3, OXTABS)
3673 ;;
1cce6920 3674
dbee5793 3675 gnu-linux | gnu-kfreebsd )
5b633342
GM
3676 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3677#ifndef __ia64__
3678# error "not ia64"
3679#endif
3680 ]], [[]])], AC_DEFINE(GC_MARK_SECONDARY_STACK(),
3681 [do { extern void *__libc_ia64_register_backing_store_base; __builtin_ia64_flushrs (); mark_memory (__libc_ia64_register_backing_store_base, __builtin_ia64_bsp ());} while (0)],
3682 [Mark a secondary stack, like the register stack on the ia64.]), [])
dbee5793
GM
3683 ;;
3684
7ccad002
GM
3685 hpux*)
3686 AC_DEFINE(RUN_TIME_REMAP, 1, [Define if emacs.c needs to call
3687 run_time_remap; for HPUX.])
3688 ;;
3689esac
3690
3691
444b01bb 3692dnl This won't be used automatically yet. We also need to know, at least,
5b3f250f
GM
3693dnl that the stack is continuous.
3694AH_TEMPLATE(GC_SETJMP_WORKS, [Define if setjmp is known to save all
3695 registers relevant for conservative garbage collection in the jmp_buf.])
3696
5b3f250f
GM
3697
3698case $opsys in
5b3f250f
GM
3699 dnl Not all the architectures are tested, but there are Debian packages
3700 dnl for SCM and/or Guile on them, so the technique must work. See also
3701 dnl comments in alloc.c concerning setjmp and gcc.
3702 dnl Fixme: it's probably safe to just use the GCC conditional below.
3703 gnu-linux | gnu-kfreebsd )
3704 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3705#if defined __i386__ || defined __sparc__ || defined __mc68000__ \
3706 || defined __alpha__ || defined __mips__ || defined __s390__ \
3707 || defined __arm__ || defined __powerpc__ || defined __amd64__ \
3708 || defined __ia64__ || defined __sh__
3709/* ok */
3710#else
3711# error "setjmp not known to work on this arch"
3712#endif
444b01bb 3713 ]], [[]])], AC_DEFINE(GC_SETJMP_WORKS, 1))
5b3f250f
GM
3714 ;;
3715esac
3716
3717
3718if test x$GCC = xyes; then
3719 dnl GC_SETJMP_WORKS is nearly always appropriate for GCC.
3720 AC_DEFINE(GC_SETJMP_WORKS, 1)
3721else
3722 case $opsys in
3723 dnl irix: Tested on Irix 6.5. SCM worked on earlier versions.
3724 freebsd | netbsd | openbsd | irix6-5 | sol2* )
3725 AC_DEFINE(GC_SETJMP_WORKS, 1)
3726 ;;
3727 esac
3728fi dnl GCC?
3729
7b6c362e
PE
3730AC_CACHE_CHECK([for _setjmp], [emacs_cv_func__setjmp],
3731 [AC_LINK_IFELSE(
3732 [AC_LANG_PROGRAM(
3733 [[#include <setjmp.h>
3734 ]],
3735 [[jmp_buf j;
3736 if (! _setjmp (j))
3737 _longjmp (j, 1);]])],
3738 [emacs_cv_func__setjmp=yes],
3739 [emacs_cv_func__setjmp=no])])
0328b6de
PE
3740if test $emacs_cv_func__setjmp = yes; then
3741 AC_DEFINE([HAVE__SETJMP], 1, [Define to 1 if _setjmp and _longjmp work.])
3742else
3743 AC_CACHE_CHECK([for sigsetjmp], [emacs_cv_func_sigsetjmp],
3744 [AC_LINK_IFELSE(
3745 [AC_LANG_PROGRAM(
3746 [[#include <setjmp.h>
3747 ]],
3748 [[sigjmp_buf j;
3749 if (! sigsetjmp (j, 1))
3750 siglongjmp (j, 1);]])],
3751 [emacs_cv_func_sigsetjmp=yes],
3752 [emacs_cv_func_sigsetjmp=no])])
3753 if test $emacs_cv_func_sigsetjmp = yes; then
3754 AC_DEFINE([HAVE_SIGSETJMP], 1,
3755 [Define to 1 if sigsetjmp and siglongjmp work.
3756 The value of this symbol is irrelevant if HAVE__SETJMP is defined.])
3757 fi
7b6c362e 3758fi
b65e7c46 3759
0a763bd1
GM
3760case $opsys in
3761 sol2* | unixware )
b65e7c46
GM
3762 dnl TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
3763 dnl subprocesses the usual way. But TIOCSIGNAL does work for PTYs,
3764 dnl and this is all we need.
3765 AC_DEFINE(TIOCSIGSEND, TIOCSIGNAL, [Some platforms redefine this.])
0a763bd1
GM
3766 ;;
3767esac
3768
5b3f250f 3769
7ccad002
GM
3770case $opsys in
3771 hpux* | sol2* )
32bac6d6 3772 dnl Used in xfaces.c.
7ccad002
GM
3773 AC_DEFINE(XOS_NEEDS_TIME_H, 1, [Compensate for a bug in Xos.h on
3774 some systems, where it requires time.h.])
3775 ;;
3776esac
3777
3778
983188fd
GM
3779dnl Define symbols to identify the version of Unix this is.
3780dnl Define all the symbols that apply correctly.
983188fd 3781AH_TEMPLATE(BSD_SYSTEM, [Define if the system is compatible with BSD 4.2.])
ae21c275
GM
3782AH_TEMPLATE(DOS_NT, [Define if the system is MS DOS or MS Windows.])
3783AH_TEMPLATE(MSDOS, [Define if the system is MS DOS.])
983188fd
GM
3784AH_TEMPLATE(USG, [Define if the system is compatible with System III.])
3785AH_TEMPLATE(USG5, [Define if the system is compatible with System V.])
268e2432 3786AH_TEMPLATE(USG5_4, [Define if the system is compatible with System V Release 4.])
983188fd
GM
3787
3788case $opsys in
3789 aix4-2)
3790 AC_DEFINE(USG, [])
3791 AC_DEFINE(USG5, [])
3792 dnl This symbol should be defined on AIX Version 3 ???????
3793 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3794#ifndef _AIX
3795# error "_AIX not defined"
3796#endif
3797 ]], [[]])], [], AC_DEFINE(_AIX, [], [Define if the system is AIX.]))
3798 ;;
3799
3800 cygwin)
3801 AC_DEFINE(CYGWIN, 1, [Define if the system is Cygwin.])
3802 ;;
3803
3804 darwin)
3805 dnl BSD4_3 and BSD4_4 are already defined in sys/param.h.
983188fd
GM
3806 AC_DEFINE(BSD_SYSTEM, [])
3807 dnl More specific than the above two. We cannot use __APPLE__ as this
3808 dnl may not be defined on non-OSX Darwin, and we cannot define DARWIN
3809 dnl here because Panther and lower CoreFoundation.h uses DARWIN to
3810 dnl distinguish OS X from pure Darwin.
3811 AC_DEFINE(DARWIN_OS, [], [Define if the system is Darwin.])
3812 ;;
3813
3814 freebsd)
983188fd
GM
3815 dnl Hack to avoid calling AC_PREPROC_IFELSE multiple times.
3816 dnl Would not be needed with autoconf >= 2.67, where the
3817 dnl preprocessed output is accessible in "conftest.i".
3818 AC_DEFINE(BSD_SYSTEM_AHB, 1, [Define if AH_BOTTOM should change BSD_SYSTEM.])
3819 ;;
3820
3821 gnu | netbsd | openbsd )
983188fd
GM
3822 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3823#ifndef BSD_SYSTEM
3824# error "BSD_SYSTEM not defined"
3825#endif
3826 ]], [[]])], [], AC_DEFINE(BSD_SYSTEM, 43) )
3827 ;;
3828
3829 gnu-linux | gnu-kfreebsd )
3830 AC_DEFINE(USG, [])
3831 AC_DEFINE(GNU_LINUX, [], [Define if ths system is compatible with GNU/Linux.])
3832 ;;
3833
3834 hpux*)
3835 AC_DEFINE(USG, [])
3836 AC_DEFINE(USG5, [])
3837 AC_DEFINE(HPUX, [], [Define if the system is HPUX.])
3838 ;;
3839
3840 irix6-5)
3841 AC_DEFINE(USG, [])
3842 AC_DEFINE(USG5, [])
268e2432 3843 AC_DEFINE(USG5_4, [])
983188fd
GM
3844 AC_DEFINE(IRIX6_5, [], [Define if the system is IRIX.])
3845 ;;
3846
3847 sol2*)
3848 AC_DEFINE(USG, [])
3849 AC_DEFINE(USG5, [])
268e2432 3850 AC_DEFINE(USG5_4, [])
983188fd
GM
3851 AC_DEFINE(SOLARIS2, [], [Define if the system is Solaris.])
3852 ;;
3853
3854 unixware)
3855 AC_DEFINE(USG, [])
3856 AC_DEFINE(USG5, [])
268e2432 3857 AC_DEFINE(USG5_4, [])
983188fd
GM
3858 ;;
3859esac
3860
4a4bbad2
PE
3861AC_CACHE_CHECK([for usable FIONREAD], [emacs_cv_usable_FIONREAD],
3862 [case $opsys in
3863 aix4-2)
3864 dnl BUILD 9008 - FIONREAD problem still exists in X-Windows.
3865 emacs_cv_usable_FIONREAD=no
3866 ;;
3867
3868 *)
3869 AC_COMPILE_IFELSE(
3870 [AC_LANG_PROGRAM([[#include <sys/types.h>
3871 #include <sys/ioctl.h>
3872 #ifdef USG5_4
3873 # include <sys/filio.h>
3874 #endif
3875 ]],
3876 [[int foo = ioctl (0, FIONREAD, &foo);]])],
3877 [emacs_cv_usable_FIONREAD=yes],
3878 [emacs_cv_usable_FIONREAD=no])
3879 ;;
3880 esac])
3881if test $emacs_cv_usable_FIONREAD = yes; then
3882 AC_DEFINE([USABLE_FIONREAD], [1], [Define to 1 if FIONREAD is usable.])
3883
3884 if test $emacs_broken_SIGIO = no; then
3885 AC_CACHE_CHECK([for usable SIGIO], [emacs_cv_usable_SIGIO],
3886 [AC_COMPILE_IFELSE(
3887 [AC_LANG_PROGRAM([[#include <fcntl.h>
3888 #include <signal.h>
3889 ]],
3890 [[int foo = SIGIO | F_SETFL | FASYNC;]])],
3891 [emacs_cv_usable_SIGIO=yes],
3892 [emacs_cv_usable_SIGIO=no])],
3893 [emacs_cv_usable_SIGIO=yes],
3894 [emacs_cv_usable_SIGIO=no])
3895 if test $emacs_cv_usable_SIGIO = yes; then
3896 AC_DEFINE([USABLE_SIGIO], [1], [Define to 1 if SIGIO is usable.])
3897 fi
3898 fi
3899fi
3900
983188fd 3901
7ccad002 3902case $opsys in
42bd1719
GM
3903 dnl Emacs supplies its own malloc, but glib (part of Gtk+) calls
3904 dnl memalign and on Cygwin, that becomes the Cygwin-supplied memalign.
3905 dnl As malloc is not the Cygwin malloc, the Cygwin memalign always
3906 dnl returns ENOSYS. A workaround is to set G_SLICE=always-malloc. */
3907 cygwin)
3908 AC_DEFINE(G_SLICE_ALWAYS_MALLOC, 1, [Define to set the
3909 G_SLICE environment variable to "always-malloc" at startup, if
3910 using GTK.])
3911 ;;
3912
7ccad002 3913 hpux11)
7ccad002
GM
3914 dnl It works to open the pty's tty in the parent (Emacs), then
3915 dnl close and reopen it in the child.
3916 AC_DEFINE(USG_SUBTTY_WORKS, 1, [Define for USG systems where it
3917 works to open a pty's tty in the parent process, then close and
3918 reopen it in the child.])
7ccad002
GM
3919 ;;
3920
3921 irix6-5)
3922 AC_DEFINE(PREFER_VSUSP, 1, [Define if process_send_signal should
3923 use VSUSP instead of VSWTCH.])
7ccad002
GM
3924 ;;
3925
7ccad002
GM
3926 sol2-10)
3927 AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes
3928 on Solaris.])
7ccad002 3929 ;;
0d369729
GM
3930esac
3931
067d23c9
KY
3932# Set up the CFLAGS for real compilation, so we can substitute it.
3933CFLAGS="$REAL_CFLAGS"
3934CPPFLAGS="$REAL_CPPFLAGS"
3935
3936## Hack to detect a buggy GCC version.
3937if test "x$GCC" = xyes \
3938 && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \
3939 && test x"`echo $CFLAGS | grep '\-O@<:@23@:>@'`" != x \
3940 && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then
3941 AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'.])
3942fi
3943
16fab143 3944version=$PACKAGE_VERSION
067d23c9 3945
ab422c4d 3946copyright="Copyright (C) 2013 Free Software Foundation, Inc."
78f83752
GM
3947AC_DEFINE_UNQUOTED(COPYRIGHT, ["$copyright"],
3948 [Short copyright string for this version of Emacs.])
3949AC_SUBST(copyright)
3950
067d23c9
KY
3951### Specify what sort of things we'll be editing into Makefile and config.h.
3952### Use configuration here uncanonicalized to avoid exceeding size limits.
3953AC_SUBST(version)
3954AC_SUBST(configuration)
3955## Unused?
3956AC_SUBST(canonical)
3957AC_SUBST(srcdir)
3958AC_SUBST(prefix)
3959AC_SUBST(exec_prefix)
3960AC_SUBST(bindir)
3961AC_SUBST(datadir)
3962AC_SUBST(sharedstatedir)
3963AC_SUBST(libexecdir)
3964AC_SUBST(mandir)
3965AC_SUBST(infodir)
3966AC_SUBST(lispdir)
d71dfe75 3967AC_SUBST(leimdir)
ca26824c 3968AC_SUBST(standardlisppath)
067d23c9
KY
3969AC_SUBST(locallisppath)
3970AC_SUBST(lisppath)
3971AC_SUBST(x_default_search_path)
3972AC_SUBST(etcdir)
3973AC_SUBST(archlibdir)
3974AC_SUBST(docdir)
3975AC_SUBST(bitmapdir)
3976AC_SUBST(gamedir)
3977AC_SUBST(gameuser)
3978## FIXME? Nothing uses @LD_SWITCH_X_SITE@.
3979## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the
3980## end of LIBX_BASE, but nothing ever set it.
3981AC_SUBST(LD_SWITCH_X_SITE)
3982AC_SUBST(C_SWITCH_X_SITE)
2f097256 3983AC_SUBST(GNUSTEP_CFLAGS)
067d23c9
KY
3984AC_SUBST(CFLAGS)
3985## Used in lwlib/Makefile.in.
3986AC_SUBST(X_TOOLKIT_TYPE)
067d23c9
KY
3987AC_SUBST(ns_appdir)
3988AC_SUBST(ns_appbindir)
3989AC_SUBST(ns_appresdir)
3990AC_SUBST(ns_appsrc)
3991AC_SUBST(GNU_OBJC_CFLAGS)
3992AC_SUBST(OTHER_FILES)
3993
17a2cbbd
DC
3994if test -n "${term_header}"; then
3995 AC_DEFINE_UNQUOTED(TERM_HEADER, "${term_header}",
3996 [Define to the header for the built-in window system.])
3997fi
3998
067d23c9
KY
3999AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "${canonical}",
4000 [Define to the canonical Emacs configuration name.])
60f5e585 4001dnl Replace any embedded " characters (bug#13274).
8b0590de 4002emacs_config_options=`echo "$emacs_config_options " | sed -e 's/--no-create //' -e 's/--no-recursion //' -e 's/ *$//' -e "s/\"/'/g"`
60f5e585 4003AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${emacs_config_options}",
067d23c9 4004 [Define to the options passed to configure.])
68169a33
GM
4005AH_TEMPLATE(config_opsysfile, [Some platforms that do not use configure
4006 define this to include extra configuration information.])
067d23c9
KY
4007
4008XMENU_OBJ=
4009XOBJ=
4010FONT_OBJ=
4011if test "${HAVE_X_WINDOWS}" = "yes" ; then
4012 AC_DEFINE(HAVE_X_WINDOWS, 1,
4013 [Define to 1 if you want to use the X window system.])
4014 XMENU_OBJ=xmenu.o
17a2cbbd 4015 XOBJ="xterm.o xfns.o xselect.o xrdb.o xsmfns.o xsettings.o xgselect.o"
067d23c9
KY
4016 FONT_OBJ=xfont.o
4017 if test "$HAVE_XFT" = "yes"; then
4018 FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
4019 elif test "$HAVE_FREETYPE" = "yes"; then
4020 FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
4021 fi
4022 AC_SUBST(FONT_OBJ)
4023fi
4024AC_SUBST(XMENU_OBJ)
4025AC_SUBST(XOBJ)
4026AC_SUBST(FONT_OBJ)
4027
4028WIDGET_OBJ=
4029MOTIF_LIBW=
4030if test "${USE_X_TOOLKIT}" != "none" ; then
4031 WIDGET_OBJ=widget.o
4032 AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
4033 if test "${USE_X_TOOLKIT}" = "LUCID"; then
4034 AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
4035 elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
4036 AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
4037 MOTIF_LIBW=-lXm
4038 case "$opsys" in
4039 gnu-linux)
4040 ## Paul Abrahams <abrahams at equinox.shaysnet.com> says this is needed.
4041 MOTIF_LIBW="$MOTIF_LIBW -lXpm"
4042 ;;
4043
4044 unixware)
4045 ## Richard Anthony Ryan <ryanr at ellingtn.ftc.nrcs.usda.gov>
4046 ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2.
4047 MOTIF_LIBW="MOTIF_LIBW -lXimp"
4048 ;;
4049
4050 aix4-2)
4051 ## olson@mcs.anl.gov says -li18n is needed by -lXm.
4052 MOTIF_LIBW="$MOTIF_LIBW -li18n"
4053 ;;
4054 esac
4055 MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
4056 fi
4057fi
4058AC_SUBST(WIDGET_OBJ)
4059
4060TOOLKIT_LIBW=
4061case "$USE_X_TOOLKIT" in
4062 MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
4063 LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
4064 none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
4065esac
4066AC_SUBST(TOOLKIT_LIBW)
4067
4068if test "$USE_X_TOOLKIT" = "none"; then
4069 LIBXT_OTHER="\$(LIBXSM)"
4070 OLDXMENU_TARGET="really-oldXMenu"
4071else
4072 LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
4073 OLDXMENU_TARGET="really-lwlib"
4074fi
4075AC_SUBST(LIBXT_OTHER)
4076
4077## The X Menu stuff is present in the X10 distribution, but missing
4078## from X11. If we have X10, just use the installed library;
4079## otherwise, use our own copy.
4080if test "${HAVE_X11}" = "yes" ; then
4081 AC_DEFINE(HAVE_X11, 1,
4082 [Define to 1 if you want to use version 11 of X windows.
4083 Otherwise, Emacs expects to use version 10.])
4084
4085 if test "$USE_X_TOOLKIT" = "none"; then
4086 OLDXMENU="\${oldXMenudir}/libXMenu11.a"
4087 else
4088 OLDXMENU="\${lwlibdir}/liblw.a"
4089 fi
4090 LIBXMENU="\$(OLDXMENU)"
4091 LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
4092 OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}"
4093else
4094 ## For a syntactically valid Makefile; not actually used for anything.
4095 ## See comments in src/Makefile.in.
4096 OLDXMENU=nothing
4097 ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?).
4098 if test "${HAVE_X_WINDOWS}" = "yes"; then
4099 LIBXMENU="-lXMenu"
4100 else
4101 LIBXMENU=
4102 fi
4103 LIBX_OTHER=
4104 OLDXMENU_DEPS=
4105fi
4106
4107if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then
4108 OLDXMENU_TARGET=
b06b1098 4109 OLDXMENU=nothing
067d23c9
KY
4110 LIBXMENU=
4111 OLDXMENU_DEPS=
4112fi
4113
4114AC_SUBST(OLDXMENU_TARGET)
4115AC_SUBST(OLDXMENU)
4116AC_SUBST(LIBXMENU)
4117AC_SUBST(LIBX_OTHER)
4118AC_SUBST(OLDXMENU_DEPS)
4119
4120if test "${HAVE_MENUS}" = "yes" ; then
4121 AC_DEFINE(HAVE_MENUS, 1,
4122 [Define to 1 if you have mouse menus.
4123 (This is automatic if you use X, but the option to specify it remains.)
4124 It is also defined with other window systems that support xmenu.c.])
4125fi
4126
4127if test "${GNU_MALLOC}" = "yes" ; then
4128 AC_DEFINE(GNU_MALLOC, 1,
4129 [Define to 1 if you want to use the GNU memory allocator.])
4130fi
4131
4132RALLOC_OBJ=
4133if test "${REL_ALLOC}" = "yes" ; then
4134 AC_DEFINE(REL_ALLOC, 1,
4135 [Define REL_ALLOC if you want to use the relocating allocator for
4136 buffer space.])
4137
4138 test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
4139fi
4140AC_SUBST(RALLOC_OBJ)
4141
4142if test "$opsys" = "cygwin"; then
0fda9b75 4143 CYGWIN_OBJ="sheap.o cygw32.o"
067d23c9
KY
4144 ## Cygwin differs because of its unexec().
4145 PRE_ALLOC_OBJ=
4146 POST_ALLOC_OBJ=lastfile.o
4147else
4148 CYGWIN_OBJ=
4149 PRE_ALLOC_OBJ=lastfile.o
4150 POST_ALLOC_OBJ=
4151fi
4152AC_SUBST(CYGWIN_OBJ)
4153AC_SUBST(PRE_ALLOC_OBJ)
4154AC_SUBST(POST_ALLOC_OBJ)
4155
5dad233c
PE
4156# Configure gnulib. Although this does not affect CFLAGS or LIBS permanently.
4157# it temporarily reverts them to their pre-pkg-config values,
4158# because gnulib needs to work with both src (which uses the
4159# pkg-config stuff) and lib-src (which does not). For example, gnulib
4160# may need to determine whether LIB_CLOCK_GETTIME should contain -lrt,
4161# and it therefore needs to run in an environment where LIBS does not
4162# already contain -lrt merely because 'pkg-config --libs' printed '-lrt'
4163# for some package unrelated to lib-src.
4164SAVE_CFLAGS=$CFLAGS
4165SAVE_LIBS=$LIBS
4166CFLAGS=$pre_PKG_CONFIG_CFLAGS
4167LIBS="$LIB_PTHREAD $pre_PKG_CONFIG_LIBS"
4168gl_ASSERT_NO_GNULIB_POSIXCHECK
4169gl_ASSERT_NO_GNULIB_TESTS
4170gl_INIT
4171CFLAGS=$SAVE_CFLAGS
4172LIBS=$SAVE_LIBS
4173
067d23c9
KY
4174case "$opsys" in
4175 aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
4176
4177 darwin)
4178 ## The -headerpad option tells ld (see man page) to leave room at the
4179 ## end of the header for adding load commands. Needed for dumping.
4180 ## 0x690 is the total size of 30 segment load commands (at 56
4181 ## each); under Cocoa 31 commands are required.
4182 if test "$HAVE_NS" = "yes"; then
4183 libs_nsgui="-framework AppKit"
4184 headerpad_extra=6C8
4185 else
4186 libs_nsgui=
4187 headerpad_extra=690
4188 fi
c8618a06 4189 LD_SWITCH_SYSTEM_TEMACS="-fno-pie -prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
b06b1098 4190
067d23c9
KY
4191 ## This is here because src/Makefile.in did some extra fiddling around
4192 ## with LD_SWITCH_SYSTEM. The cpp logic was:
4193 ## #ifndef LD_SWITCH_SYSTEM
4194 ## #if !defined (__GNUC__) && ((defined (BSD_SYSTEM) && !defined (COFF)))
4195 ## Since all the *bsds define LD_SWITCH_SYSTEM, this simplifies to:
34374650 4196 ## not using gcc, darwin.
067d23c9
KY
4197 ## Because this was done in src/Makefile.in, the resulting part of
4198 ## LD_SWITCH_SYSTEM was not used in configure (ie, in ac_link).
4199 ## It therefore seems cleaner to put this in LD_SWITCH_SYSTEM_TEMACS,
4200 ## rather than LD_SWITCH_SYSTEM.
4201 test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
4202 LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
4203 ;;
4204
4d5c6349 4205 ## LD_SWITCH_X_SITE_RPATH is a -rpath option saying where to
4737362e
GM
4206 ## find X at run-time.
4207 ## When handled by cpp, this was in LD_SWITCH_SYSTEM. However, at the
4d5c6349 4208 ## point where configure sourced the s/*.h file, LD_SWITCH_X_SITE_RPATH
067d23c9
KY
4209 ## had not yet been defined and was expanded to null. Hence LD_SWITCH_SYSTEM
4210 ## had different values in configure (in ac_link) and src/Makefile.in.
4211 ## It seems clearer therefore to put this piece in LD_SWITCH_SYSTEM_TEMACS.
4d5c6349 4212 gnu*) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_RPATH)" ;;
067d23c9
KY
4213
4214 *) LD_SWITCH_SYSTEM_TEMACS= ;;
4215esac
4216
067d23c9
KY
4217AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
4218
17a2cbbd
DC
4219## Common for all window systems
4220if test "$window_system" != "none"; then
067d23c9 4221 AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
17a2cbbd 4222 WINDOW_SYSTEM_OBJ="fontset.o fringe.o image.o"
067d23c9 4223fi
067d23c9 4224
17a2cbbd 4225AC_SUBST(WINDOW_SYSTEM_OBJ)
067d23c9
KY
4226
4227AH_TOP([/* GNU Emacs site configuration template file.
73b0cd50 4228
f0ddbf7b 4229Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2013
73b0cd50 4230 Free Software Foundation, Inc.
067d23c9
KY
4231
4232This file is part of GNU Emacs.
4233
4234GNU Emacs is free software: you can redistribute it and/or modify
4235it under the terms of the GNU General Public License as published by
4236the Free Software Foundation, either version 3 of the License, or
4237(at your option) any later version.
4238
4239GNU Emacs is distributed in the hope that it will be useful,
4240but WITHOUT ANY WARRANTY; without even the implied warranty of
4241MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4242GNU General Public License for more details.
4243
4244You should have received a copy of the GNU General Public License
4245along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
4246
4247
4248/* No code in Emacs #includes config.h twice, but some bits of code
4249 intended to work with other packages as well (like gmalloc.c)
4250 think they can include it as many times as they like. */
4251#ifndef EMACS_CONFIG_H
4252#define EMACS_CONFIG_H
4253])dnl
4254
b429a4ee 4255AH_BOTTOM([#include <conf_post.h>
067d23c9 4256
067d23c9
KY
4257#endif /* EMACS_CONFIG_H */
4258
4259/*
4260Local Variables:
4261mode: c
4262End:
4263*/
4264])dnl
4265
4266#### Report on what we decided to do.
4267#### Report GTK as a toolkit, even if it doesn't use Xt.
4268#### It makes printing result more understandable as using GTK sets
4269#### toolkit_scroll_bars to yes by default.
4270if test "${HAVE_GTK}" = "yes"; then
5fb91e71 4271 USE_X_TOOLKIT="$USE_GTK_TOOLKIT"
067d23c9
KY
4272fi
4273
4274echo "
4275Configured for \`${canonical}'.
4276
4277 Where should the build process find the source code? ${srcdir}
067d23c9
KY
4278 What compiler should emacs be built with? ${CC} ${CFLAGS}
4279 Should Emacs use the GNU version of malloc? ${GNU_MALLOC}${GNU_MALLOC_reason}
4280 Should Emacs use a relocating allocator for buffers? ${REL_ALLOC}
4281 Should Emacs use mmap(2) for buffer allocation? $use_mmap_for_buffers
4282 What window system should Emacs use? ${window_system}
4283 What toolkit should Emacs use? ${USE_X_TOOLKIT}"
4284
4285if test -n "${x_includes}"; then
4286echo " Where do we find X Windows header files? ${x_includes}"
4287else
4288echo " Where do we find X Windows header files? Standard dirs"
4289fi
4290if test -n "${x_libraries}"; then
4291echo " Where do we find X Windows libraries? ${x_libraries}"
4292else
4293echo " Where do we find X Windows libraries? Standard dirs"
4294fi
4295
4296echo " Does Emacs use -lXaw3d? ${HAVE_XAW3D}"
4297echo " Does Emacs use -lXpm? ${HAVE_XPM}"
4298echo " Does Emacs use -ljpeg? ${HAVE_JPEG}"
4299echo " Does Emacs use -ltiff? ${HAVE_TIFF}"
4300echo " Does Emacs use a gif library? ${HAVE_GIF} $LIBGIF"
4301echo " Does Emacs use -lpng? ${HAVE_PNG}"
4302echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}"
4303echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}"
4304
4305echo " Does Emacs use -lgpm? ${HAVE_GPM}"
4306echo " Does Emacs use -ldbus? ${HAVE_DBUS}"
4307echo " Does Emacs use -lgconf? ${HAVE_GCONF}"
9851bfc5 4308echo " Does Emacs use GSettings? ${HAVE_GSETTINGS}"
067d23c9 4309echo " Does Emacs use -lselinux? ${HAVE_LIBSELINUX}"
9f77899d 4310echo " Does Emacs use -lgnutls? ${HAVE_GNUTLS}"
067d23c9
KY
4311echo " Does Emacs use -lxml2? ${HAVE_LIBXML2}"
4312
4313echo " Does Emacs use -lfreetype? ${HAVE_FREETYPE}"
4314echo " Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}"
4315echo " Does Emacs use -lotf? ${HAVE_LIBOTF}"
4316echo " Does Emacs use -lxft? ${HAVE_XFT}"
4317
4318echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
4319echo
4320
5f77c86c
GM
4321if test -n "${EMACSDATA}"; then
4322 echo " Environment variable EMACSDATA set to: $EMACSDATA"
4323fi
4324if test -n "${EMACSDOC}"; then
4325 echo " Environment variable EMACSDOC set to: $EMACSDOC"
4326fi
4327
067d23c9
KY
4328echo
4329
4330if test "$HAVE_NS" = "yes"; then
4331 echo
507ea258 4332 echo "You must run \"${MAKE-make} install\" in order to test the built application.
067d23c9
KY
4333The installed application will go to nextstep/Emacs.app and can be
4334run or moved from there."
4335 if test "$EN_NS_SELF_CONTAINED" = "yes"; then
4336 echo "The application will be fully self-contained."
4337 else
4338 echo "The lisp resources for the application will be installed under ${prefix}.
507ea258 4339You may need to run \"${MAKE-make} install\" with sudo. The application will fail
067d23c9
KY
4340to run if these resources are not installed."
4341 fi
4342 echo
4343fi
4344
badf86af
KB
4345if test "${opsys}" = "cygwin"; then
4346 case `uname -r` in
4347 1.5.*) AC_MSG_WARN([[building Emacs on Cygwin 1.5 is not supported.]])
4348 echo
4349 ;;
4350 esac
4351fi
067d23c9
KY
4352
4353# Remove any trailing slashes in these variables.
4354[test "${prefix}" != NONE &&
4355 prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
4356test "${exec_prefix}" != NONE &&
4357 exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
4358
83da1b55
GM
4359if test "$HAVE_NS" = "yes"; then
4360 if test "$NS_IMPL_GNUSTEP" = yes; then
4361 AC_CONFIG_FILES([nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist:nextstep/templates/Info-gnustep.plist.in \
4362 nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop:nextstep/templates/Emacs.desktop.in])
4363 else
4364 AC_CONFIG_FILES([nextstep/Cocoa/Emacs.base/Contents/Info.plist:nextstep/templates/Info.plist.in \
4365 nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:nextstep/templates/InfoPlist.strings.in])
4366 fi
4367fi
4368
bdd556a2 4369dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES.
d0ff0c7d
GM
4370dnl You _can_ use that variable in AC_CONFIG_FILES, so long as any directory
4371dnl using automake (ie lib/) is explicitly listed and not "hidden" in a variable
bdd556a2
GM
4372dnl (else you get "no `Makefile.am' found for any configure output").
4373dnl This will work, but you get a config.status that is not quite right
4374dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html).
4375dnl That doesn't have any obvious consequences for Emacs, but on the whole
4376dnl it seems better to just live with the duplication.
83da1b55 4377SUBDIR_MAKEFILES="lib/Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile nextstep/Makefile"
bdd556a2
GM
4378
4379AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
4380 doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
4381 doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile \
83da1b55 4382 leim/Makefile nextstep/Makefile])
6c7e099d
GM
4383
4384dnl test/ is not present in release tarfiles.
70716b1d
GM
4385opt_makefile=test/automated/Makefile
4386
3cc53d60 4387if test -f "$srcdir/$opt_makefile.in"; then
70716b1d 4388 SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
bdd556a2
GM
4389 dnl Again, it's best not to use a variable. Though you can add
4390 dnl ", [], [opt_makefile='$opt_makefile']" and it should work.
4391 AC_CONFIG_FILES([test/automated/Makefile])
4392fi
70716b1d 4393
a9f72fc1
GM
4394
4395dnl admin/ may or may not be present.
4396opt_makefile=admin/unidata/Makefile
4397
3cc53d60 4398if test -f "$srcdir/$opt_makefile.in"; then
a9f72fc1
GM
4399 SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
4400 AC_CONFIG_FILES([admin/unidata/Makefile])
4401fi
4402
4403
bdd556a2 4404SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'`
70716b1d
GM
4405
4406AC_SUBST(SUBDIR_MAKEFILES_IN)
1e8dbdc6
GM
4407
4408dnl Make the necessary directories, if they don't exist.
4409AC_CONFIG_COMMANDS([mkdirs], [
4410for dir in etc lisp ; do
4411 test -d ${dir} || mkdir ${dir}
4412done
4413])
4414
067d23c9
KY
4415dnl You might wonder (I did) why epaths.h is generated by running make,
4416dnl rather than just letting configure generate it from epaths.in.
4417dnl One reason is that the various paths are not fully expanded (see above);
4418dnl eg gamedir=${prefix}/var/games/emacs.
4419dnl Secondly, the GNU Coding standards require that one should be able
4420dnl to run `make prefix=/some/where/else' and override the values set
4421dnl by configure. This also explains the `move-if-change' test and
4422dnl the use of force in the `epaths-force' rule in Makefile.in.
1e8dbdc6 4423AC_CONFIG_COMMANDS([epaths], [
067d23c9 4424echo creating src/epaths.h
8f25abd3 4425${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force
f04940ae 4426], [GCC="$GCC" CPPFLAGS="$CPPFLAGS"])
067d23c9 4427
1e8dbdc6 4428AC_CONFIG_COMMANDS([gdbinit], [
3cc53d60 4429if test ! -f src/.gdbinit && test -f "$srcdir/src/.gdbinit"; then
067d23c9 4430 echo creating src/.gdbinit
75d7aa24 4431 echo "source $srcdir/src/.gdbinit" > src/.gdbinit
067d23c9 4432fi
1e8dbdc6 4433])
067d23c9 4434
1e8dbdc6 4435AC_OUTPUT