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