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