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