Move LD_SWITCH_X_SITE_AUX from cpp to autoconf.
[bpt/emacs.git] / configure.in
CommitLineData
6e502e37 1dnl Autoconf script for GNU Emacs
9ec10b2f
DM
2dnl To rebuild the `configure' script from this, execute the command
3dnl autoconf
4dnl in the directory containing this script.
6e502e37 5dnl
89ce934d 6dnl Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003,
114f9c96 7dnl 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
552dfe31 8dnl
6e502e37 9dnl This file is part of GNU Emacs.
552dfe31 10dnl
b33ba812 11dnl GNU Emacs is free software: you can redistribute it and/or modify
6e502e37 12dnl it under the terms of the GNU General Public License as published by
b33ba812
GM
13dnl the Free Software Foundation, either version 3 of the License, or
14dnl (at your option) any later version.
4fe0b729 15dnl
6e502e37
RS
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.
4fe0b729 20dnl
6e502e37 21dnl You should have received a copy of the GNU General Public License
b33ba812 22dnl along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
6e502e37 23
49a9e76d 24AC_PREREQ(2.62)
288f9fc0 25AC_INIT(emacs, 24.0.50)
5f8c8f00 26AC_CONFIG_HEADER(src/config.h:src/config.in)
9fb1ba80 27AC_CONFIG_SRCDIR(src/lisp.h)
9ec10b2f 28
a4663fed
PJ
29dnl Support for --program-prefix, --program-suffix and
30dnl --program-transform-name options
31AC_ARG_PROGRAM
32
9ec10b2f 33lispdir='${datadir}/emacs/${version}/lisp'
4be21f66 34locallisppath='${datadir}/emacs/${version}/site-lisp:'\
b8225171
KH
35'${datadir}/emacs/site-lisp'
36lisppath='${locallisppath}:${lispdir}:${datadir}/emacs/${version}/leim'
9ec10b2f 37etcdir='${datadir}/emacs/${version}/etc'
60c3568d 38archlibdir='${libexecdir}/emacs/${version}/${configuration}'
9ec10b2f 39docdir='${datadir}/emacs/${version}/etc'
b914de74 40gamedir='${localstatedir}/games/emacs'
93c05c18
CW
41
42gameuser=games
9ec10b2f 43
8b1de1b5
MO
44dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING)
45dnl Create a new --with option that defaults to being disabled.
46dnl NAME is the base name of the option. The shell variable with_NAME
47dnl will be set to either the user's value (if the option is
48dnl specified; 'yes' for a plain --with-NAME) or to 'no' (if the
49dnl option is not specified). Note that the shell variable name is
50dnl constructed as autoconf does, by replacing non-alphanumeric
51dnl characters with "_".
52dnl HELP-STRING is the help text for the option.
53AC_DEFUN([OPTION_DEFAULT_OFF], [dnl
54 AC_ARG_WITH([$1],[AS_HELP_STRING([--with-$1],[$2])],[],[dnl
55 m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=no])dnl
eb11f5b8 56])dnl
8b1de1b5
MO
57
58dnl OPTION_DEFAULT_ON(NAME, HELP-STRING)
59dnl Create a new --with option that defaults to being enabled. NAME
60dnl is the base name of the option. The shell variable with_NAME
61dnl will be set either to 'no' (for a plain --without-NAME) or to
62dnl 'yes' (if the option is not specified). Note that the shell
63dnl variable name is constructed as autoconf does, by replacing
64dnl non-alphanumeric characters with "_".
65dnl HELP-STRING is the help text for the option.
66AC_DEFUN([OPTION_DEFAULT_ON], [dnl
67 AC_ARG_WITH([$1],[AS_HELP_STRING([--without-$1],[$2])],[],[dnl
68 m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=yes])dnl
eb11f5b8
TTN
69])dnl
70
8b1de1b5
MO
71OPTION_DEFAULT_ON([pop],[don't support POP mail retrieval with movemail])
72if test "$with_pop" = yes; then
6fa064b6 73 AC_DEFINE(MAIL_USE_POP)
8b1de1b5 74fi
5e7d772d 75AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl
eb11f5b8 76
8b1de1b5 77OPTION_DEFAULT_OFF([kerberos],[support Kerberos-authenticated POP])
316460cf 78if test "$with_kerberos" != no; then
ae61688f 79 AC_DEFINE(KERBEROS)
8b1de1b5 80fi
5e7d772d
AS
81AH_TEMPLATE(KERBEROS,
82 [Define to support Kerberos-authenticated POP mail retrieval.])dnl
eb11f5b8 83
8b1de1b5 84OPTION_DEFAULT_OFF([kerberos5],[support Kerberos version 5 authenticated POP])
316460cf
GM
85if test "${with_kerberos5}" != no; then
86 if test "${with_kerberos}" = no; then
a21616bd
KR
87 with_kerberos=yes
88 AC_DEFINE(KERBEROS)
89 fi
ae61688f 90 AC_DEFINE(KERBEROS5, 1, [Define to use Kerberos 5 instead of Kerberos 4.])
8b1de1b5 91fi
eb11f5b8 92
8b1de1b5 93OPTION_DEFAULT_OFF([hesiod],[support Hesiod to get the POP server host])
aded53ff
GM
94dnl FIXME hesiod support may not be present, so it seems like an error
95dnl to define, or at least use, this unconditionally.
316460cf 96if test "$with_hesiod" != no; then
ae61688f 97 AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])
8b1de1b5 98fi
3d9830e5 99
aded53ff
GM
100OPTION_DEFAULT_OFF([mmdf],[support MMDF mailboxes])
101if test "$with_mmdf" != no; then
102 AC_DEFINE(MAIL_USE_MMDF, 1, [Define to support MMDF mailboxes in movemail.])
103fi
104
105OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after reading])
106if test "$with_mail_unlink" != no; then
107 AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail spool after reading.])
108fi
109
110AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
111 [string giving default POP mail host])],
112 AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.]))
113
8b1de1b5 114OPTION_DEFAULT_ON([sound],[don't compile with sound support])
3d9830e5 115
ea09b8d5 116OPTION_DEFAULT_ON([sync-input],[process async input synchronously])
a51f4969
SM
117if test "$with_sync_input" = yes; then
118 AC_DEFINE(SYNC_INPUT, 1, [Process async input synchronously.])
119fi
120
5b940d5a 121dnl FIXME currently it is not the last.
4f734bde
DM
122dnl This should be the last --with option, because --with-x is
123dnl added later on when we find the path of X, and it's best to
124dnl keep them together visually.
eb11f5b8 125AC_ARG_WITH([x-toolkit],[AS_HELP_STRING([--with-x-toolkit=KIT],
eef223cc 126 [use an X toolkit (KIT one of: yes or gtk, lucid or athena, motif, no)])],
9ec10b2f 127[ case "${withval}" in
4f823057 128 y | ye | yes ) val=gtk ;;
9ec10b2f
DM
129 n | no ) val=no ;;
130 l | lu | luc | luci | lucid ) val=lucid ;;
84c5c823 131 a | at | ath | athe | athen | athena ) val=athena ;;
3cd69289 132 m | mo | mot | moti | motif ) val=motif ;;
488dd4c4 133 g | gt | gtk ) val=gtk ;;
9ec10b2f 134 * )
f7b4f5aa 135AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid;
488dd4c4 136this option's value should be `yes', `no', `lucid', `athena', `motif' or `gtk'.
f7b4f5aa 137`yes' and `gtk' are synonyms. `athena' and `lucid' are synonyms.])
9ec10b2f
DM
138 ;;
139 esac
140 with_x_toolkit=$val
141])
eb11f5b8 142
5b940d5a
GM
143dnl _ON results in a '--without' option in the --help output, so
144dnl the help text should refer to "don't compile", etc.
145OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support])
146OPTION_DEFAULT_ON([jpeg],[don't compile with JPEG image support])
147OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support])
148OPTION_DEFAULT_ON([gif],[don't compile with GIF image support])
149OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
150OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
151
4efcc8d1 152OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
d235ca2f
MB
153OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
154OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
155
8b1de1b5
MO
156OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
157OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
158OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
edfda783 159OPTION_DEFAULT_OFF([ns],[use nextstep (Cocoa or GNUstep) windowing system])
5b940d5a
GM
160
161OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
b5a922de 162OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
637fa988 163OPTION_DEFAULT_ON([gconf],[don't compile with GConf support])
574c05e2 164OPTION_DEFAULT_ON([selinux],[don't compile with SELinux support])
5b940d5a 165
4c18f8b4
GM
166## For the times when you want to build Emacs but don't have
167## a suitable makeinfo, and can live without the manuals.
168dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
169OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
170
86dc59b0
GM
171dnl Can remove these in Emacs 24.
172AC_ARG_WITH([gtk],,
6b8bc489
AS
173 [AC_MSG_ERROR([--with-gtk has been removed. Use --with-x-toolkit to
174specify a toolkit.])],,)
86dc59b0
GM
175
176AC_ARG_WITH([gcc],,
6b8bc489
AS
177 [AC_MSG_ERROR([--with-gcc has been removed. Set the `CC' environment
178variable to specify a compiler.])],,)
86dc59b0 179
8b1de1b5 180AC_ARG_WITH([pkg-config-prog],dnl
1eee1145 181[AS_HELP_STRING([--with-pkg-config-prog=PATH],
ea09b8d5 182 [path to pkg-config for finding GTK and librsvg])])
8b1de1b5
MO
183if test "X${with_pkg_config_prog}" != X; then
184 if test "${with_pkg_config_prog}" != yes; then
185 PKG_CONFIG="${with_pkg_config_prog}"
186 fi
187fi
eb11f5b8 188
70eab5c1
GM
189CRT_DIR=
190AC_ARG_WITH([crt-dir],dnl
191[AS_HELP_STRING([--with-crt-dir=DIR],[directory containing crtn.o etc.
76cda504 192The default is /usr/lib, or /usr/lib64 on some platforms.])])
70eab5c1
GM
193CRT_DIR="${with_crt_dir}"
194
ea09b8d5
GM
195AC_ARG_WITH([gnustep-conf],dnl
196[AS_HELP_STRING([--with-gnustep-conf=PATH],[path to GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])])
197test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
198 GNUSTEP_CONFIG_FILE="${with_gnustep_conf}"
199test "X$GNUSTEP_CONFIG_FILE" = "X" && \
200 GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf
201
06b62770 202AC_ARG_ENABLE(ns-self-contained,
6b8bc489
AS
203[AS_HELP_STRING([--disable-ns-self-contained],
204 [disable self contained build under NeXTstep])],
205 EN_NS_SELF_CONTAINED=$enableval,
06b62770
AR
206 EN_NS_SELF_CONTAINED=yes)
207
d0098f13 208AC_ARG_ENABLE(asserts,
1eb22088 209[AS_HELP_STRING([--enable-asserts], [compile code with asserts enabled])],
d0098f13
JD
210 USE_XASSERTS=$enableval,
211 USE_XASSERTS=no)
212
6a5f7a29 213AC_ARG_ENABLE(maintainer-mode,
1eb22088
AS
214[AS_HELP_STRING([--enable-maintainer-mode],
215 [enable make rules and dependencies not useful (and sometimes
216 confusing) to the casual installer])],
6a5f7a29
AS
217 USE_MAINTAINER_MODE=$enableval,
218 USE_MAINTAINER_MODE=no)
219if test $USE_MAINTAINER_MODE = yes; then
220 MAINT=
221else
222 MAINT=#
223fi
224AC_SUBST(MAINT)
225
261967be 226AC_ARG_ENABLE(locallisppath,
1eb22088
AS
227[AS_HELP_STRING([--enable-locallisppath=PATH],
228 [directories Emacs should search for lisp files specific
229 to this site])],
261967be
LK
230if test "${enableval}" = "no"; then
231 locallisppath=
232elif test "${enableval}" != "yes"; then
233 locallisppath=${enableval}
234fi)
235
29771094 236AC_ARG_ENABLE(checking,
7df24305
AS
237[AS_HELP_STRING([--enable-checking@<:@=LIST@:>@],
238 [enable expensive run-time checks. With LIST,
239 enable only specific categories of checks.
240 Categories are: all,yes,no.
241 Flags are: stringbytes, stringoverrun, stringfreelist,
242 xmallocoverrun, conslist])],
29771094
DN
243[ac_checking_flags="${enableval}"],[])
244IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
245for check in $ac_checking_flags
246do
247 case $check in
248 # these set all the flags to specific states
249 yes) ac_enable_checking=1 ;;
250 no) ac_enable_checking= ;
251 ac_gc_check_stringbytes= ;
252 ac_gc_check_string_overrun= ;
253 ac_gc_check_string_free_list= ;
254 ac_xmalloc_overrun= ;
255 ac_gc_check_cons_list= ;;
256 all) ac_enable_checking=1 ;
257 ac_gc_check_stringbytes=1 ;
258 ac_gc_check_string_overrun=1 ;
259 ac_gc_check_string_free_list=1 ;
260 ac_xmalloc_overrun=1 ;
261 ac_gc_check_cons_list=1 ;;
262 # these enable particular checks
263 stringbytes) ac_gc_check_stringbytes=1 ;;
264 stringoverrun) ac_gc_check_string_overrun=1 ;;
265 stringfreelist) ac_gc_check_string_free_list=1 ;;
266 xmallocoverrun) ac_xmalloc_overrun=1 ;;
267 conslist) ac_gc_check_cons_list=1 ;;
268 *) AC_MSG_ERROR(unknown check category $check) ;;
269 esac
270done
271IFS="$ac_save_IFS"
272
273if test x$ac_enable_checking != x ; then
274 AC_DEFINE(ENABLE_CHECKING, 1,
275[Enable expensive run-time checking of data types?])
276fi
277if test x$ac_gc_check_stringbytes != x ; then
278 AC_DEFINE(GC_CHECK_STRING_BYTES, 1,
279[Define this temporarily to hunt a bug. If defined, the size of
280 strings is redundantly recorded in sdata structures so that it can
281 be compared to the sizes recorded in Lisp strings.])
282fi
283if test x$ac_gc_check_stringoverrun != x ; then
284 AC_DEFINE(GC_CHECK_STRING_OVERRUN, 1,
285[Define this to check for short string overrun.])
286fi
287if test x$ac_gc_check_string_free_list != x ; then
288 AC_DEFINE(GC_CHECK_STRING_FREE_LIST, 1,
289[Define this to check the string free list.])
290fi
291if test x$ac_xmalloc_overrun != x ; then
292 AC_DEFINE(XMALLOC_OVERRUN_CHECK, 1,
293[Define this to check for malloc buffer overrun.])
294fi
295if test x$ac_gc_check_cons_list != x ; then
296 AC_DEFINE(GC_CHECK_CONS_LIST, 1,
297[Define this to check for errors in cons list.])
298fi
299
9fe40f0e 300AC_ARG_ENABLE(profiling,
7df24305
AS
301[AS_HELP_STRING([--enable-profiling],
302 [build emacs with profiling support.
303 This might not work on all platforms])],
9fe40f0e
DN
304[ac_enable_profiling="${enableval}"],[])
305if test x$ac_enable_profiling != x ; then
306 PROFILING_CFLAGS="-DPROFILING=1 -pg"
307 PROFILING_LDFLAGS="-pg"
308else
309 PROFILING_CFLAGS=
310 PROFILING_LDFLAGS=
311fi
312
a53cfbe5
JD
313AC_ARG_ENABLE(autodepend,
314[AS_HELP_STRING([--enable-autodepend],
315 [automatically generate dependencies to .h-files.
316 Requires GNU Make and Gcc. Enabled if GNU Make and Gcc is
317 found])],
318[ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
319
9ec10b2f 320#### Make srcdir absolute, if it isn't already. It's important to
36969de6 321#### avoid running the path through pwd unnecessarily, since pwd can
069df4bf
DM
322#### give you automounter prefixes, which can go away. We do all this
323#### so Emacs can find its files when run uninstalled.
36969de6
GM
324## Make sure CDPATH doesn't affect cd (in case PWD is relative).
325unset CDPATH
9ec10b2f
DM
326case "${srcdir}" in
327 /* ) ;;
328 . )
329 ## We may be able to use the $PWD environment variable to make this
330 ## absolute. But sometimes PWD is inaccurate.
b83e4a77
RS
331 ## Note: we used to use ${PWD} at the end instead of `pwd`,
332 ## but that tested only for a well-formed and valid PWD,
333 ## it did not object when PWD was well-formed and valid but just wrong.
334 if test ".${PWD}" != "." && test ".`(cd ${PWD} ; sh -c pwd)`" = ".`pwd`" ;
9ec10b2f
DM
335 then
336 srcdir="$PWD"
337 else
338 srcdir="`(cd ${srcdir}; pwd)`"
339 fi
340 ;;
341 * ) srcdir="`(cd ${srcdir}; pwd)`" ;;
342esac
343
344#### Check if the source directory already has a configured system in it.
345if test `pwd` != `(cd ${srcdir} && pwd)` \
346 && test -f "${srcdir}/src/config.h" ; then
91b5aa9a 347 AC_MSG_WARN([[The directory tree `${srcdir}' is being used
9ec10b2f
DM
348 as a build directory right now; it has been configured in its own
349 right. To configure in another directory as well, you MUST
350 use GNU make. If you do not have GNU make, then you must
91b5aa9a
DL
351 now do `make distclean' in ${srcdir},
352 and then run $0 again.]])
9ec10b2f
DM
353fi
354
355#### Given the configuration name, set machfile and opsysfile to the
356#### names of the m/*.h and s/*.h files we should use.
357
358### Canonicalize the configuration name.
359
360AC_CANONICAL_HOST
361canonical=$host
0b7543ce 362configuration=${host_alias-${build_alias-$host}}
9ec10b2f 363
91b5aa9a
DL
364dnl This used to use changequote, but, apart from `changequote is evil'
365dnl per the autoconf manual, we can speed up autoconf somewhat by quoting
366dnl the great gob of text. Thus it's not processed for possible expansion.
367dnl Just make sure the brackets remain balanced.
10aa5486
MR
368dnl
369dnl Since Emacs can't find matching pairs of quotes, boundaries are
370dnl indicated by comments.
371dnl quotation begins
91b5aa9a 372[
9ec10b2f
DM
373
374### If you add support for a new configuration, add code to this
375### switch statement to recognize your configuration name and select
376### the appropriate operating system and machine description files.
377
378### You would hope that you could choose an m/*.h file pretty much
379### based on the machine portion of the configuration name, and an s-
380### file based on the operating system portion. However, it turns out
381### that each m/*.h file is pretty manufacturer-specific - for
f2a77c3a
DN
382### example mips.h is MIPS
383### So we basically have to have a special case for each
9ec10b2f
DM
384### configuration name.
385###
386### As far as handling version numbers on operating systems is
387### concerned, make sure things will fail in a fixable way. If
388### /etc/MACHINES doesn't say anything about version numbers, be
389### prepared to handle anything reasonably. If version numbers
390### matter, be sure /etc/MACHINES says something about it.
391###
392### Eric Raymond says we should accept strings like "sysvr4" to mean
393### "System V Release 4"; he writes, "The old convention encouraged
394### confusion between `system' and `release' levels'."
395
396machine='' opsys='' unported=no
397case "${canonical}" in
398
ba45dae0 399 ## FreeBSD ports
6b0273cd 400 *-*-freebsd* )
ba45dae0
GM
401 opsys=freebsd
402 case "${canonical}" in
403 alpha*-*-freebsd*) machine=alpha ;;
372a3385 404 arm*-*-freebsd*) machine=arm ;;
d6d1029d 405 ia64-*-freebsd*) machine=ia64 ;;
edfda783 406 sparc-*-freebsd*) machine=sparc ;;
d6d1029d
CY
407 sparc64-*-freebsd*) machine=sparc ;;
408 powerpc-*-freebsd*) machine=macppc ;;
ba45dae0 409 i[3456]86-*-freebsd*) machine=intel386 ;;
6b0273cd 410 amd64-*-freebsd*|x86_64-*-freebsd*) machine=amdx86-64 ;;
ba45dae0
GM
411 esac
412 ;;
413
472fd4dc
GM
414 ## FreeBSD kernel + glibc based userland
415 *-*-kfreebsd*gnu* )
416 opsys=gnu-kfreebsd
417 case "${canonical}" in
418 alpha*-*-kfreebsd*) machine=alpha ;;
419 ia64-*-kfreebsd*) machine=ia64 ;;
edfda783 420 sparc-*-kfreebsd*) machine=sparc ;;
472fd4dc
GM
421 sparc64-*-kfreebsd*) machine=sparc ;;
422 powerpc-*-kfreebsd*) machine=macppc ;;
423 i[3456]86-*-kfreebsd*) machine=intel386 ;;
424 amd64-*-kfreebsd*|x86_64-*-kfreebsd*) machine=amdx86-64 ;;
425 esac
426 ;;
427
9ec10b2f
DM
428 ## NetBSD ports
429 *-*-netbsd* )
430 opsys=netbsd
da894f7d 431 if test -f /usr/lib/crti.o; then]
8cfdf2ca
DL
432dnl The close and open brackets here are because this section is quoted --
433dnl see the `changequote' comment above.
434 AC_DEFINE(HAVE_CRTIN, [], [Define to 1 if you have /usr/lib/crti.o.])
da894f7d 435[ fi
fdf83dbb 436
9ec10b2f 437 case "${canonical}" in
98bbf2a1 438 alpha*-*-netbsd*) machine=alpha ;;
5ac83f86 439 i[3456]86-*-netbsd*) machine=intel386 ;;
6978862d
DN
440 mips-*-netbsd*) machine=mips ;;
441 mipsel-*-netbsd*) machine=mips ;;
442 mipseb-*-netbsd*) machine=mips ;;
b52425f4 443 powerpc-*-netbsd*) machine=macppc ;;
1ecefa7a 444 sparc*-*-netbsd*) machine=sparc ;;
b336ddd3 445 vax-*-netbsd*) machine=vax ;;
69d5a2fa 446 arm-*-netbsd*) machine=arm ;;
01cd065b
EZ
447 x86_64-*-netbsd*) machine=amdx86-64 ;;
448 hppa-*-netbsd*) machine=hp800 ;;
a078d6e5 449 m68k-*-netbsd*) machine=m68k ;;
9ec10b2f
DM
450 esac
451 ;;
452
e3ac1b7f
RS
453 ## OpenBSD ports
454 *-*-openbsd* )
455 opsys=openbsd
456 case "${canonical}" in
98bbf2a1 457 alpha*-*-openbsd*) machine=alpha ;;
9a982d0a 458 arm-*-openbsd*) machine=arm ;;
9a982d0a 459 i386-*-openbsd*) machine=intel386 ;;
9a982d0a 460 powerpc-*-openbsd*) machine=macppc ;;
9a982d0a
RS
461 sparc*-*-openbsd*) machine=sparc ;;
462 vax-*-openbsd*) machine=vax ;;
463 x86_64-*-openbsd*) machine=amdx86-64 ;;
d8aef2e6 464 hppa-*-openbsd*) machine=hp800 ;;
e3ac1b7f
RS
465 esac
466 ;;
467
98bbf2a1 468 alpha*-*-linux-gnu* )
5ac83f86 469 machine=alpha opsys=gnu-linux
4e90a7d5
RS
470 ;;
471
d506e713
GM
472 arm*-*-linux-gnu* )
473 machine=arm opsys=gnu-linux
474 ;;
475
57653883
RS
476 ## Apple Darwin / Mac OS X
477 *-apple-darwin* )
478 case "${canonical}" in
479 i[3456]86-* ) machine=intel386 ;;
40dde9d1 480 powerpc-* ) machine=macppc ;;
f5b30dc9 481 x86_64-* ) machine=amdx86-64 ;;
57653883
RS
482 * ) unported=yes ;;
483 esac
484 opsys=darwin
485 # Define CPP as follows to make autoconf work correctly.
486 CPP="${CC-cc} -E -no-cpp-precomp"
487 # Use fink packages if available.
488 if test -d /sw/include && test -d /sw/lib; then
489 GCC_TEST_OPTIONS="-I/sw/include -L/sw/lib"
490 CPP="${CPP} ${GCC_TEST_OPTIONS}"
491 NON_GCC_TEST_OPTIONS=${GCC_TEST_OPTIONS}
492 fi
493 ;;
494
d347c8e1 495 ## HP 9000 series 700 and 800, running HP/UX
d347c8e1
GM
496 hppa*-hp-hpux10.2* )
497 machine=hp800 opsys=hpux10-20
498 ;;
d347c8e1
GM
499 hppa*-hp-hpux1[1-9]* )
500 machine=hp800 opsys=hpux11
501 CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
502 ;;
503
6fa6525f
RS
504 hppa*-*-linux-gnu* )
505 machine=hp800 opsys=gnu-linux
506 ;;
507
9ec10b2f 508 ## IBM machines
4b121527 509 s390-*-linux-gnu* )
f4c2acb3
EZ
510 machine=ibms390 opsys=gnu-linux
511 ;;
e9da7ba5
RS
512 s390x-*-linux-gnu* )
513 machine=ibms390x opsys=gnu-linux
f4c2acb3 514 ;;
a8958813
RS
515 rs6000-ibm-aix4.2* | powerpc-ibm-aix4.2* )
516 machine=ibmrs6000 opsys=aix4-2
517 ;;
9fd77b51
CY
518 rs6000-ibm-aix4.3* | powerpc-ibm-aix4.3* )
519 machine=ibmrs6000 opsys=aix4-2
520 ;;
54c4fabd 521 rs6000-ibm-aix5* | powerpc-ibm-aix5* )
1ef1ef96
EZ
522 machine=ibmrs6000 opsys=aix4-2
523 ;;
1e447232 524 rs6000-ibm-aix6* | powerpc-ibm-aix6* )
26a42dac
DN
525 machine=ibmrs6000 opsys=aix4-2
526 ;;
9ec10b2f 527
3ad6e32b
GM
528 ## Macintosh PowerPC
529 powerpc*-*-linux-gnu* )
530 machine=macppc opsys=gnu-linux
531 ;;
532
9ec10b2f 533 ## Silicon Graphics machines
9ec10b2f 534 ## Iris 4D
a187fb80
KH
535 mips-sgi-irix6.5 )
536 machine=iris4d opsys=irix6-5
91193697
DL
537 # Without defining _LANGUAGE_C, things get masked out in the headers
538 # so that, for instance, grepping for `free' in stdlib.h fails and
539 # AC_HEADER_STD_C fails. (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m).
540 NON_GNU_CPP="/lib/cpp -D_LANGUAGE_C"
63c59d1e 541 NON_GCC_TEST_OPTIONS="-D_LANGUAGE_C"
a187fb80 542 ;;
9ec10b2f 543
9ec10b2f 544 ## Suns
b5b193a7 545 sparc-*-linux-gnu* | sparc64-*-linux-gnu* )
5ac83f86 546 machine=sparc opsys=gnu-linux
28d9bc0e
KH
547 ;;
548
176fe5fc 549 *-sun-solaris* \
7c54c0a0 550 | i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
07e339e4 551 | x86_64-*-solaris2* | x86_64-*-sunos5*)
9ec10b2f 552 case "${canonical}" in
5ac83f86 553 i[3456]86-*-* ) machine=intel386 ;;
a15fc3c3 554 amd64-*-*|x86_64-*-*) machine=amdx86-64 ;;
9ec10b2f
DM
555 sparc* ) machine=sparc ;;
556 * ) unported=yes ;;
557 esac
558 case "${canonical}" in
a28947f0
RS
559 *-sunos5.6* | *-solaris2.6* )
560 opsys=sol2-6
561 NON_GNU_CPP=/usr/ccs/lib/cpp
562 RANLIB="ar -ts"
563 ;;
2194ea1c 564 *-sunos5.[7-9]* | *-solaris2.[7-9]* )
f79b6dcc 565 opsys=sol2-6
42bf63da
GM
566 emacs_check_sunpro_c=yes
567 NON_GNU_CPP=/usr/ccs/lib/cpp
6623890a 568 ;;
9b3362b8
DN
569 *-sunos5* | *-solaris* )
570 opsys=sol2-10
571 emacs_check_sunpro_c=yes
572 NON_GNU_CPP=/usr/ccs/lib/cpp
9ec10b2f 573 ;;
9ec10b2f 574 esac
6e502e37
RS
575 ## Watch out for a compiler that we know will not work.
576 case "${canonical}" in
577 *-solaris* | *-sunos5* )
578 if [ "x$CC" = x/usr/ucb/cc ]; then
579 ## /usr/ucb/cc doesn't work;
580 ## we should find some other compiler that does work.
581 unset CC
582 fi
583 ;;
584 *) ;;
585 esac
9ec10b2f 586 ;;
9ec10b2f 587
2d23c8cc
GM
588 ## IA-64
589 ia64*-*-linux* )
590 machine=ia64 opsys=gnu-linux
591 ;;
592
9ec10b2f 593 ## Intel 386 machines where we don't care about the manufacturer
5ac83f86 594 i[3456]86-*-* )
9ec10b2f
DM
595 machine=intel386
596 case "${canonical}" in
c60ee5e7 597 *-cygwin ) opsys=cygwin ;;
eae54018 598 *-darwin* ) opsys=darwin
23fd4483
ST
599 CPP="${CC-cc} -E -no-cpp-precomp"
600 ;;
5ac83f86 601 *-linux-gnu* ) opsys=gnu-linux ;;
0e6d70d5 602 *-sysv4.2uw* ) opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
167899c4
RS
603 *-sysv5uw* ) opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
604 *-sysv5OpenUNIX* ) opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
9ec10b2f
DM
605 ## Otherwise, we'll fall through to the generic opsys code at the bottom.
606 esac
607 ;;
608
287f502c 609 ## m68k Linux-based GNU system
5ac83f86
RS
610 m68k-*-linux-gnu* )
611 machine=m68k opsys=gnu-linux
e1fd57e3
RS
612 ;;
613
287f502c 614 ## Mips Linux-based GNU system
3c00847f
RF
615 mips-*-linux-gnu* | mipsel-*-linux-gnu* \
616 | mips64-*-linux-gnu* | mips64el-*-linux-gnu* )
287f502c
RS
617 machine=mips opsys=gnu-linux
618 ;;
619
3fa4ac47
AS
620 ## AMD x86-64 Linux-based GNU system
621 x86_64-*-linux-gnu* )
177c0ea7 622 machine=amdx86-64 opsys=gnu-linux
3fa4ac47
AS
623 ;;
624
131e4133 625 ## Tensilica Xtensa Linux-based GNU system
8dd59f01 626 xtensa*-*-linux-gnu* )
94218e27
DN
627 machine=xtensa opsys=gnu-linux
628 ;;
629
fac5dc61
DN
630 ## SuperH Linux-based GNU system
631 sh[34]*-*-linux-gnu* )
632 machine=sh3 opsys=gnu-linux
633 ;;
634
9ec10b2f
DM
635 * )
636 unported=yes
637 ;;
638esac
639
640### If the code above didn't choose an operating system, just choose
641### an operating system based on the configuration name. You really
642### only want to use this when you have no idea what the right
643### operating system is; if you know what operating systems a machine
644### runs, it's cleaner to make it explicit in the case statement
645### above.
646if test x"${opsys}" = x; then
647 case "${canonical}" in
648 *-gnu* ) opsys=gnu ;;
9ec10b2f
DM
649 * )
650 unported=yes
651 ;;
652 esac
653fi
654
91b5aa9a 655]
10aa5486 656dnl quotation ends
9ec10b2f
DM
657
658if test $unported = yes; then
91b5aa9a
DL
659 AC_MSG_ERROR([Emacs hasn't been ported to `${canonical}' systems.
660Check `etc/MACHINES' for recognized configuration names.])
9ec10b2f
DM
661fi
662
663machfile="m/${machine}.h"
664opsysfile="s/${opsys}.h"
665
666
667#### Choose a compiler.
668test -n "$CC" && cc_specified=yes
669
5ab52d42
RS
670# Save the value of CFLAGS that the user specified.
671SPECIFIED_CFLAGS="$CFLAGS"
672
86dc59b0 673dnl Sets GCC=yes if using gcc.
e9b2a022 674AC_PROG_CC
9ec10b2f
DM
675
676# On Suns, sometimes $CPP names a directory.
677if test -n "$CPP" && test -d "$CPP"; then
678 CPP=
679fi
680
42bf63da
GM
681## If not using gcc, and on Solaris, and no CPP specified, see if
682## using a Sun compiler, which needs -Xs to prevent whitespace.
683if test x"$GCC" != xyes && test x"$emacs_check_sunpro_c" = xyes && \
684 test x"$CPP" = x; then
685 AC_MSG_CHECKING([whether we are using a Sun C compiler])
686 AC_CACHE_VAL(emacs_cv_sunpro_c,
687 [AC_TRY_LINK([],
688[#ifndef __SUNPRO_C
689fail;
690#endif
691], emacs_cv_sunpro_c=yes, emacs_cv_sunpro_c=no)])
692 AC_MSG_RESULT($emacs_cv_sunpro_c)
693
694 if test x"$emacs_cv_sunpro_c" = xyes; then
695 NON_GNU_CPP="$CC -E -Xs"
696 fi
697fi
698
9ec10b2f
DM
699#### Some systems specify a CPP to use unless we are using GCC.
700#### Now that we know whether we are using GCC, we can decide whether
701#### to use that one.
702if test "x$NON_GNU_CPP" != x && test x$GCC != xyes && test "x$CPP" = x
703then
704 CPP="$NON_GNU_CPP"
705fi
706
707#### Some systems specify a CC to use unless we are using GCC.
708#### Now that we know whether we are using GCC, we can decide whether
709#### to use that one.
710if test "x$NON_GNU_CC" != x && test x$GCC != xyes &&
711 test x$cc_specified != xyes
712then
713 CC="$NON_GNU_CC"
714fi
715
716if test x$GCC = xyes && test "x$GCC_TEST_OPTIONS" != x
717then
718 CC="$CC $GCC_TEST_OPTIONS"
c7f493fd 719fi
9ec10b2f
DM
720
721if test x$GCC = x && test "x$NON_GCC_TEST_OPTIONS" != x
722then
723 CC="$CC $NON_GCC_TEST_OPTIONS"
c7f493fd 724fi
9ec10b2f 725
f405f8ec 726dnl checks for Unix variants
7316a2b5 727AC_USE_SYSTEM_EXTENSIONS
f405f8ec 728
01abe918
CY
729### Use -Wno-pointer-sign if the compiler supports it
730AC_MSG_CHECKING([whether gcc understands -Wno-pointer-sign])
731SAVE_CFLAGS="$CFLAGS"
732CFLAGS="$CFLAGS -Wno-pointer-sign"
733AC_TRY_COMPILE([], [], has_option=yes, has_option=no,)
734if test $has_option = yes; then
735 C_WARNINGS_SWITCH="-Wno-pointer-sign $C_WARNINGS_SWITCH"
736fi
737AC_MSG_RESULT($has_option)
738CFLAGS="$SAVE_CFLAGS"
739unset has_option
740unset SAVE_CFLAGS
741
7a2efa6f
DN
742### Use -Wdeclaration-after-statement if the compiler supports it
743AC_MSG_CHECKING([whether gcc understands -Wdeclaration-after-statement])
744SAVE_CFLAGS="$CFLAGS"
745CFLAGS="$CFLAGS -Wdeclaration-after-statement"
746AC_TRY_COMPILE([], [], has_option=yes, has_option=no,)
747if test $has_option = yes; then
748 C_WARNINGS_SWITCH="-Wdeclaration-after-statement $C_WARNINGS_SWITCH"
749fi
750AC_MSG_RESULT($has_option)
751CFLAGS="$SAVE_CFLAGS"
752unset has_option
753unset SAVE_CFLAGS
754
fb33ec52 755#### Some other nice autoconf tests.
9ec10b2f
DM
756
757dnl checks for programs
6e0dc84a 758AC_PROG_LN_S
9ec10b2f
DM
759AC_PROG_CPP
760AC_PROG_INSTALL
3f5b097c
DL
761if test "x$RANLIB" = x; then
762 AC_PROG_RANLIB
763fi
44e3d510
GM
764
765## Although we're running on an amd64 kernel, we're actually compiling for
766## the x86 architecture. The user should probably have provided an
767## explicit --build to `configure', but if everything else than the kernel
768## is running in i386 mode, we can help them out.
769if test "$machine" = "amdx86-64"; then
770 AC_CHECK_DECL([i386])
771 if test "$ac_cv_have_decl_i386" = "yes"; then
772 canonical=`echo "$canonical" | sed -e 's/^amd64/i386/' -e 's/^x86_64/i386/'`
773 machine=intel386
774 machfile="m/${machine}.h"
775 fi
776fi
777
d57c2211
DK
778AC_PATH_PROG(INSTALL_INFO, install-info)
779AC_PATH_PROG(INSTALL_INFO, install-info,, /usr/sbin)
780AC_PATH_PROG(INSTALL_INFO, install-info,:, /sbin)
19b6b5d3
AS
781dnl Don't use GZIP, which is used by gzip for additional parameters.
782AC_PATH_PROG(GZIP_PROG, gzip)
9ec10b2f 783
d25b54b3 784
9538e9ca 785## Need makeinfo >= 4.6 (?) to build the manuals.
d25b54b3 786AC_PATH_PROG(MAKEINFO, makeinfo, no)
131e4133 787dnl By this stage, configure has already checked for egrep and set EGREP,
d25b54b3
GM
788dnl or exited with an error if no egrep was found.
789if test "$MAKEINFO" != "no" && \
d4840f44 790 test x"`$MAKEINFO --version 2> /dev/null | $EGREP 'texinfo[[^0-9]]*([[1-4]][[0-9]]+|[[5-9]]|4\.[[6-9]]|4\.[[1-5]][[0-9]]+)'`" = x; then
131e4133 791 MAKEINFO=no
d25b54b3
GM
792fi
793
09817afc
GM
794## Makeinfo is unusual. For a released Emacs, the manuals are
795## pre-built, and not deleted by the normal clean rules. makeinfo is
796## therefore in the category of "special tools" not normally required, which
797## configure does not have to check for (eg autoconf itself).
8bb25908
KF
798## In a Bazaar checkout on the other hand, the manuals are not included.
799## So makeinfo is a requirement to build from Bazaar, and configure
09817afc
GM
800## should test for it as it does for any other build requirement.
801## We use the presence of $srcdir/info/emacs to distinguish a release,
8bb25908 802## with pre-built manuals, from a Bazaar checkout.
09817afc
GM
803if test "$MAKEINFO" = "no"; then
804 if test "x${with_makeinfo}" = "xno"; then
805 MAKEINFO=off
bf3126f6 806 elif test ! -e $srcdir/info/emacs; then
09817afc
GM
807 AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.6, and your
808source tree does not seem to have pre-built manuals in the `info' directory.
4c18f8b4 809Either install a suitable version of makeinfo, or re-run configure
09817afc
GM
810with the `--without-makeinfo' option to build without the manuals.] )
811 fi
4c18f8b4 812fi
d25b54b3 813
6d621bab
RS
814dnl Add our options to ac_link now, after it is set up.
815
816if test x$GCC = xyes && test "x$GCC_LINK_TEST_OPTIONS" != x
817then
818 ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
819fi
820
821if test x$GCC = x && test "x$NON_GCC_LINK_TEST_OPTIONS" != x
822then
823 ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
824fi
825
1d6cc9a8
RS
826dnl We need -znocombreloc if we're using a relatively recent GNU ld.
827dnl If we can link with the flag, it shouldn't do any harm anyhow.
828dnl (Don't use `-z nocombreloc' as -z takes no arg on Irix.)
06aacc62
RS
829dnl Treat GCC specially since it just gives a non-fatal `unrecognized option'
830dnl if not built to support GNU ld.
831
1d6cc9a8 832late_LDFLAGS=$LDFLAGS
b917689b 833if test "$GCC" = yes; then
06aacc62
RS
834 LDFLAGS="$LDFLAGS -Wl,-znocombreloc"
835else
836 LDFLAGS="$LDFLAGS -znocombreloc"
837fi
1d6cc9a8 838
e6a304f0 839AC_MSG_CHECKING([for -znocombreloc])
1d6cc9a8
RS
840AC_LINK_IFELSE([main(){return 0;}],
841 [AC_MSG_RESULT(yes)],
842 LDFLAGS=$late_LDFLAGS
843 [AC_MSG_RESULT(no)])
844
9452ded1
DN
845LIB_MATH=-lm
846
847case $opsys in
848 cygwin )
849 LIB_MATH=
850 ;;
851 darwin )
852 ## Adding -lm confuses the dynamic linker, so omit it.
853 LIB_MATH=
854 ;;
855esac
856
857AC_SUBST(LIB_MATH)
858
4428e268
DL
859#### Extract some information from the operating system and machine files.
860
861AC_CHECKING([the machine- and system-dependent files to find out
862 - which libraries the lib-src programs will want, and
863 - whether the GNU malloc routines are usable])
864
865### First figure out CFLAGS (which we use for running the compiler here)
866### and REAL_CFLAGS (which we use for real compilation).
867### The two are the same except on a few systems, where they are made
868### different to work around various lossages. For example,
869### GCC 2.5 on GNU/Linux needs them to be different because it treats -g
870### as implying static linking.
871
872### If the CFLAGS env var is specified, we use that value
873### instead of the default.
874
875### It's not important that this name contain the PID; you can't run
876### two configures in the same directory and have anything work
877### anyway.
878tempcname="conftest.c"
879
880echo '
881#include "'${srcdir}'/src/'${opsysfile}'"
882#include "'${srcdir}'/src/'${machfile}'"
4428e268
DL
883#ifndef LIBS_SYSTEM
884#define LIBS_SYSTEM
885#endif
7e10844c 886configure___ libsrc_libs=LIBS_SYSTEM
4428e268 887
aaa36002 888configure___ LIBX=-lX11
4428e268 889
4428e268 890configure___ unexec=UNEXEC
4428e268
DL
891
892#ifdef SYSTEM_MALLOC
893configure___ system_malloc=yes
894#else
895configure___ system_malloc=no
896#endif
897
e32fac2a
GM
898#ifdef USE_MMAP_FOR_BUFFERS
899configure___ use_mmap_for_buffers=yes
b1b4ce06 900#else
e32fac2a 901configure___ use_mmap_for_buffers=no
b1b4ce06
GM
902#endif
903
4428e268
DL
904#ifndef C_OPTIMIZE_SWITCH
905#ifdef __GNUC__
906#define C_OPTIMIZE_SWITCH -O2
907#else
908#define C_OPTIMIZE_SWITCH -O
909#endif
910#endif
911
01abe918
CY
912#ifndef C_WARNINGS_SWITCH
913#define C_WARNINGS_SWITCH ${C_WARNINGS_SWITCH}
914#endif
915
4428e268
DL
916#ifndef LD_SWITCH_SYSTEM
917#define LD_SWITCH_SYSTEM
918#endif
919
4428e268 920configure___ ld_switch_system=LD_SWITCH_SYSTEM
4428e268
DL
921
922#ifdef THIS_IS_CONFIGURE
923
924/* Get the CFLAGS for tests in configure. */
925#ifdef __GNUC__
4e7f249c 926configure___ CFLAGS=-g C_OPTIMIZE_SWITCH '${SPECIFIED_CFLAGS}'
4428e268 927#else
32a8894e 928configure___ CFLAGS='${SPECIFIED_CFLAGS}'
4428e268
DL
929#endif
930
931#else /* not THIS_IS_CONFIGURE */
932
933/* Get the CFLAGS for real compilation. */
934#ifdef __GNUC__
4e7f249c 935configure___ REAL_CFLAGS=-g C_OPTIMIZE_SWITCH C_WARNINGS_SWITCH ${PROFILING_CFLAGS} '${SPECIFIED_CFLAGS}'
4428e268 936#else
32a8894e 937configure___ REAL_CFLAGS='${SPECIFIED_CFLAGS}'
4428e268
DL
938#endif
939
940#endif /* not THIS_IS_CONFIGURE */
941' > ${tempcname}
942
9fe40f0e
DN
943LDFLAGS="${LDFLAGS} ${PROFILING_LDFLAGS}"
944
4428e268
DL
945# The value of CPP is a quoted variable reference, so we need to do this
946# to get its actual value...
947CPP=`eval "echo $CPP"`
91b5aa9a 948[eval `${CPP} -Isrc ${tempcname} \
4428e268
DL
949 | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'`
950if test "x$SPECIFIED_CFLAGS" = x; then
951 eval `${CPP} -Isrc -DTHIS_IS_CONFIGURE ${tempcname} \
952 | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'`
953else
954 REAL_CFLAGS="$CFLAGS"
91b5aa9a 955fi]
4428e268
DL
956rm ${tempcname}
957
cd03c74a 958ac_link="$ac_link $ld_switch_system"
4428e268 959
49628785
GM
960
961C_SWITCH_MACHINE=
962if test "$machine" = "alpha"; then
963 AC_CHECK_DECL([__ELF__])
964 if test "$ac_cv_have_decl___ELF__" = "yes"; then
965 ## With ELF, make sure that all common symbols get allocated to in the
966 ## data section. Otherwise, the dump of temacs may miss variables in
967 ## the shared library that have been initialized. For example, with
968 ## GNU libc, __malloc_initialized would normally be resolved to the
969 ## shared library's .bss section, which is fatal.
970 if test "x$GCC" = "xyes"; then
971 C_SWITCH_MACHINE="-fno-common"
972 else
973 AC_MSG_ERROR([What gives? Fix me if DEC Unix supports ELF now.])
974 fi
975 fi
976fi
977AC_SUBST(C_SWITCH_MACHINE)
978
979
980C_SWITCH_SYSTEM=
981## Some programs in src produce warnings saying certain subprograms
982## are too complex and need a MAXMEM value greater than 2000 for
983## additional optimization. --nils@exp-math.uni-essen.de
984test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
985 C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
986## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
987## It is redundant in glibc2, since we define _GNU_SOURCE.
988AC_SUBST(C_SWITCH_SYSTEM)
989
990
4428e268
DL
991### Make sure subsequent tests use flags consistent with the build flags.
992
993if test x"${OVERRIDE_CPPFLAGS}" != x; then
994 CPPFLAGS="${OVERRIDE_CPPFLAGS}"
995else
49628785 996 CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
4428e268
DL
997fi
998
17b3d9f6
DL
999dnl For AC_FUNC_GETLOADAVG, at least:
1000AC_CONFIG_LIBOBJ_DIR(src)
1001
48989ead
DL
1002dnl Do this early because it can frob feature test macros for Unix-98 &c.
1003AC_SYS_LARGEFILE
1004
2eec8691 1005
76cda504
GM
1006## If user specified a crt-dir, use that unconditionally.
1007if test "X$CRT_DIR" = "X"; then
70eab5c1 1008
76cda504
GM
1009 case "$canonical" in
1010 x86_64-*-linux-gnu* | s390x-*-linux-gnu*)
1011 ## On x86-64 and s390x GNU/Linux distributions, the standard library
1012 ## can be in a variety of places. We only try /usr/lib64 and /usr/lib.
1013 ## For anything else (eg /usr/lib32), it is up the user to specify
1014 ## the location (bug#5655).
1015 ## Test for crtn.o, not just the directory, because sometimes the
1016 ## directory exists but does not have the relevant files (bug#1287).
1017 ## FIXME better to test for binary compatibility somehow.
1018 test -e /usr/lib64/crtn.o && CRT_DIR=/usr/lib64
1019 ;;
1020
1021 powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*) CRT_DIR=/usr/lib64 ;;
1022 esac
1023
1024 case "$opsys" in
1025 hpux10-20) CRT_DIR=/lib ;;
1026 esac
1027
1028 ## Default is /usr/lib.
1029 test "X$CRT_DIR" = "X" && CRT_DIR=/usr/lib
1030
1031else
1032
1033 ## Some platforms don't use any of these files, so it is not
1034 ## appropriate to put this test outside the if block.
1035 test -e $CRT_DIR/crtn.o || test -e $CRT_DIR/crt0.o || \
1036 AC_MSG_ERROR([crt*.o not found in specified location.])
1037
1038fi
70eab5c1 1039
70eab5c1
GM
1040AC_SUBST(CRT_DIR)
1041
0bc02f03 1042
2eec8691
JD
1043dnl This function defintion taken from Gnome 2.0
1044dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
1045dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
1046dnl also defines GSTUFF_PKG_ERRORS on error
1047AC_DEFUN([PKG_CHECK_MODULES], [
1048 succeeded=no
1049
8b1de1b5 1050 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2eec8691
JD
1051
1052 if test "$PKG_CONFIG" = "no" ; then
1053 ifelse([$4], , [AC_MSG_ERROR([
1054 *** The pkg-config script could not be found. Make sure it is in your path, or give the full path to 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])
1055 else
1056 PKG_CONFIG_MIN_VERSION=0.9.0
1057 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
1058 AC_MSG_CHECKING(for $2)
1059
e9f67acf 1060 if $PKG_CONFIG --exists "$2" 2>&AS_MESSAGE_LOG_FD; then
2eec8691
JD
1061 AC_MSG_RESULT(yes)
1062 succeeded=yes
1063
1064 AC_MSG_CHECKING($1_CFLAGS)
94315858 1065 $1_CFLAGS=`$PKG_CONFIG --cflags "$2"|sed -e 's,///*,/,g'`
2eec8691
JD
1066 AC_MSG_RESULT($$1_CFLAGS)
1067
1068 AC_MSG_CHECKING($1_LIBS)
94315858 1069 $1_LIBS=`$PKG_CONFIG --libs "$2"|sed -e 's,///*,/,g'`
2eec8691
JD
1070 AC_MSG_RESULT($$1_LIBS)
1071 else
1072 AC_MSG_RESULT(no)
1073 $1_CFLAGS=""
1074 $1_LIBS=""
1075 ## If we have a custom action on failure, don't print errors, but
1076 ## do set a variable so people can do so.
1077 $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
1078 ifelse([$4], ,echo $$1_PKG_ERRORS,)
1079 fi
1080
1081 AC_SUBST($1_CFLAGS)
1082 AC_SUBST($1_LIBS)
1083 else
1084 echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
1085 echo "*** See http://www.freedesktop.org/software/pkgconfig"
1086 fi
1087 fi
1088
1089 if test $succeeded = yes; then
1090 ifelse([$3], , :, [$3])
1091 else
1092 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])
1093 fi
1094])
1095
1096
3d9830e5
PJ
1097if test "${with_sound}" != "no"; then
1098 # Sound support for GNU/Linux and the free BSDs.
1099 AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h)
1100 # Emulation library used on NetBSD.
1101 AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
1102 AC_SUBST(LIBSOUND)
2eec8691
JD
1103
1104 ALSA_REQUIRED=1.0.0
1105 ALSA_MODULES="alsa >= $ALSA_REQUIRED"
2eec8691
JD
1106 PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
1107 if test $HAVE_ALSA = yes; then
ce091e44
JD
1108 SAVE_CFLAGS="$CFLAGS"
1109 SAVE_LDFLAGS="$LDFLAGS"
1110 CFLAGS="$ALSA_CFLAGS $CFLAGS"
1111 LDFLAGS="$ALSA_LIBS $LDFLAGS"
1112 AC_TRY_COMPILE([#include <asoundlib.h>], [snd_lib_error_set_handler (0);],
1113 emacs_alsa_normal=yes,
1114 emacs_alsa_normal=no)
1115 if test "$emacs_alsa_normal" != yes; then
1116 AC_TRY_COMPILE([#include <alsa/asoundlib.h>],
1117 [snd_lib_error_set_handler (0);],
1118 emacs_alsa_subdir=yes,
1119 emacs_alsa_subdir=no)
1120 if test "$emacs_alsa_subdir" != yes; then
1121 AC_MSG_ERROR([pkg-config found alsa, but it does not compile. See config.log for error messages.])
1122 fi
1123 ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
1124 fi
1125
1126 CFLAGS="$SAVE_CFLAGS"
1127 LDFLAGS="$SAVE_LDFLAGS"
2eec8691
JD
1128 LIBSOUND="$LIBSOUND $ALSA_LIBS"
1129 CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
1130 AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
1131 fi
1132 AC_SUBST(CFLAGS_SOUND)
3d9830e5 1133fi
b412189c 1134
9ec10b2f 1135dnl checks for header files
1113b624
PE
1136AC_CHECK_HEADERS(sys/select.h sys/timeb.h sys/time.h unistd.h utime.h \
1137 linux/version.h sys/systeminfo.h termios.h limits.h string.h stdlib.h \
6da23aaa 1138 stdio_ext.h fcntl.h strings.h coff.h pty.h sys/mman.h \
551ffc27 1139 sys/param.h sys/vlimit.h sys/resource.h locale.h sys/_mbstate_t.h \
c6d09b8d 1140 sys/utsname.h pwd.h utmp.h)
f17e308a
JD
1141
1142AC_MSG_CHECKING(if personality LINUX32 can be set)
1143AC_TRY_COMPILE([#include <sys/personality.h>], [personality (PER_LINUX32)],
1144 emacs_cv_personality_linux32=yes,
1145 emacs_cv_personality_linux32=no)
1146AC_MSG_RESULT($emacs_cv_personality_linux32)
1147
1148if test $emacs_cv_personality_linux32 = yes; then
1149 AC_DEFINE(HAVE_PERSONALITY_LINUX32, 1,
1150 [Define to 1 if personality LINUX32 can be set.])
1151fi
1152
91b5aa9a
DL
1153dnl On Solaris 8 there's a compilation warning for term.h because
1154dnl it doesn't define `bool'.
1155AC_CHECK_HEADERS(term.h, , , -)
6e0dc84a
DM
1156AC_HEADER_STDC
1157AC_HEADER_TIME
71cc40d5
DL
1158AC_CHECK_DECLS([sys_siglist])
1159if test $ac_cv_have_decl_sys_siglist != yes; then
1160 # For Tru64, at least:
1161 AC_CHECK_DECLS([__sys_siglist])
1162 if test $ac_cv_have_decl___sys_siglist = yes; then
1163 AC_DEFINE(sys_siglist, __sys_siglist,
1164 [Define to any substitute for sys_siglist.])
1165 fi
1166fi
2ce723a5 1167AC_HEADER_SYS_WAIT
9ec10b2f 1168
3cd69289 1169dnl Some systems have utime.h but don't declare the struct anyplace.
fd0a060b 1170AC_CACHE_CHECK(for struct utimbuf, emacs_cv_struct_utimbuf,
3cd69289
DM
1171AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
1172#include <sys/time.h>
1173#include <time.h>
1174#else
1175#ifdef HAVE_SYS_TIME_H
1176#include <sys/time.h>
1177#else
1178#include <time.h>
1179#endif
1180#endif
1181#ifdef HAVE_UTIME_H
1182#include <utime.h>
1183#endif], [static struct utimbuf x; x.actime = x.modtime;],
fd0a060b
AS
1184 emacs_cv_struct_utimbuf=yes, emacs_cv_struct_utimbuf=no))
1185if test $emacs_cv_struct_utimbuf = yes; then
5e7d772d 1186 AC_DEFINE(HAVE_STRUCT_UTIMBUF, 1, [Define to 1 if `struct utimbuf' is declared by <utime.h>.])
fd0a060b 1187fi
3cd69289 1188
9ec10b2f 1189dnl checks for typedefs
6e0dc84a 1190AC_TYPE_SIGNAL
9ec10b2f 1191
25abcaf1
GM
1192dnl Check for speed_t typedef.
1193AC_CACHE_CHECK(for speed_t, emacs_cv_speed_t,
a1d8dc87
RS
1194 [AC_TRY_COMPILE([#include <termios.h>], [speed_t x = 1;],
1195 emacs_cv_speed_t=yes, emacs_cv_speed_t=no)])
25abcaf1 1196if test $emacs_cv_speed_t = yes; then
177c0ea7 1197 AC_DEFINE(HAVE_SPEED_T, 1,
a1d8dc87 1198 [Define to 1 if `speed_t' is declared by <termios.h>.])
25abcaf1
GM
1199fi
1200
fd0a060b 1201AC_CACHE_CHECK(for struct timeval, emacs_cv_struct_timeval,
3cd69289
DM
1202AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
1203#include <sys/time.h>
1204#include <time.h>
1205#else
1206#ifdef HAVE_SYS_TIME_H
1207#include <sys/time.h>
1208#else
1209#include <time.h>
1210#endif
1211#endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
fd0a060b
AS
1212 emacs_cv_struct_timeval=yes, emacs_cv_struct_timeval=no))
1213HAVE_TIMEVAL=$emacs_cv_struct_timeval
1214if test $emacs_cv_struct_timeval = yes; then
5e7d772d 1215 AC_DEFINE(HAVE_TIMEVAL, 1, [Define to 1 if `struct timeval' is declared by <sys/time.h>.])
fd0a060b 1216fi
3cd69289 1217
63c59d1e 1218AC_CACHE_CHECK(for struct exception, emacs_cv_struct_exception,
177c0ea7 1219AC_TRY_COMPILE([#include <math.h>],
63c59d1e
DL
1220[static struct exception x; x.arg1 = x.arg2 = x.retval; x.name = ""; x.type = 1;],
1221 emacs_cv_struct_exception=yes, emacs_cv_struct_exception=no))
1222HAVE_EXCEPTION=$emacs_cv_struct_exception
1223if test $emacs_cv_struct_exception != yes; then
5e7d772d 1224 AC_DEFINE(NO_MATHERR, 1, [Define to 1 if you don't have struct exception in math.h.])
63c59d1e
DL
1225fi
1226
ce6e4c21
AS
1227AC_CHECK_HEADERS(sys/socket.h)
1228AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT
1229#if HAVE_SYS_SOCKET_H
1230#include <sys/socket.h>
1231#endif])
1232
9ec10b2f
DM
1233dnl checks for structure members
1234AC_STRUCT_TM
6e0dc84a 1235AC_STRUCT_TIMEZONE
5e7d772d
AS
1236AC_CHECK_MEMBER(struct tm.tm_gmtoff,
1237 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
1238 [Define to 1 if `tm_gmtoff' is member of `struct tm'.])],,
1239 [#include <time.h>])
f6214bb7 1240AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr,
86bd9393 1241 struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr,
ce6e4c21
AS
1242 struct ifreq.ifr_addr], , ,
1243 [AC_INCLUDES_DEFAULT
1244#if HAVE_SYS_SOCKET_H
1245#include <sys/socket.h>
1246#endif
1247#if HAVE_NET_IF_H
1248#include <net/if.h>
1249#endif])
9ec10b2f
DM
1250
1251dnl checks for compiler characteristics
3f5b097c
DL
1252
1253dnl Testing __STDC__ to determine prototype support isn't good enough.
1254dnl DEC C, for instance, doesn't define it with default options, and
1255dnl is used on 64-bit systems (OSF Alphas). Similarly for volatile
1256dnl and void *.
1257AC_C_PROTOTYPES
1258AC_C_VOLATILE
6e0dc84a 1259AC_C_CONST
3f5b097c
DL
1260dnl This isn't useful because we can't turn on use of `inline' unless
1261dnl the compiler groks `extern inline'.
1262dnl AC_C_INLINE
1263AC_CACHE_CHECK([for void * support], emacs_cv_void_star,
177c0ea7 1264 [AC_TRY_COMPILE(, [void * foo;],
3f5b097c
DL
1265 emacs_cv_void_star=yes, emacs_cv_void_star=no)])
1266if test $emacs_cv_void_star = yes; then
1267 AC_DEFINE(POINTER_TYPE, void)
1268else
1269 AC_DEFINE(POINTER_TYPE, char)
1270fi
5e7d772d
AS
1271AH_TEMPLATE(POINTER_TYPE,
1272 [Define as `void' if your compiler accepts `void *'; otherwise
1273 define as `char'.])dnl
9ec10b2f 1274
4494a266
JD
1275
1276
71cc40d5
DL
1277dnl This could be used for targets which can have both byte sexes.
1278dnl We could presumably replace the hardwired WORDS_BIG_ENDIAN generally.
1279dnl AC_C_BIGENDIAN
1280
9ec10b2f 1281dnl check for Make feature
6e0dc84a 1282AC_PROG_MAKE_SET
9ec10b2f 1283
a53cfbe5
JD
1284dnl check for GNU Make if we have GCC and autodepend is on.
1285if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
1286 AC_MSG_CHECKING([whether we are using GNU Make])
1287 HAVE_GNU_MAKE=no
1288 testval=`make --version 2>/dev/null | grep 'GNU Make'`
1289 if test "x$testval" != x; then
1290 HAVE_GNU_MAKE=yes
1291 else
1292 ac_enable_autodepend=no
1293 fi
1294 AC_MSG_RESULT([$HAVE_GNU_MAKE])
1295 if test $HAVE_GNU_MAKE = yes; then
1296 AC_MSG_CHECKING([whether gcc understands -MMD -MF])
1297 SAVE_CFLAGS="$CFLAGS"
1298 CFLAGS="$CFLAGS -MMD -MF deps.d"
1299 AC_TRY_COMPILE([], [], , ac_enable_autodepend=no)
1300 CFLAGS="$SAVE_CFLAGS"
1301 test -f deps.d || ac_enable_autodepend=no
1302 rm -rf deps.d
1303 AC_MSG_RESULT([$ac_enable_autodepend])
1304 fi
1305 if test $ac_enable_autodepend = yes; then
1306 AC_DEFINE(AUTO_DEPEND, 1, [Generate dependencies with gcc.])
1307 fi
1308fi
1309
9ec10b2f 1310dnl checks for operating system services
6e0dc84a 1311AC_SYS_LONG_FILE_NAMES
9ec10b2f
DM
1312
1313#### Choose a window system.
9ec10b2f 1314
6e0dc84a 1315AC_PATH_X
530ce502
DM
1316if test "$no_x" = yes; then
1317 window_system=none
1318else
1319 window_system=x11
1320fi
9ec10b2f 1321
1066d056
GM
1322## Workaround for bug in autoconf <= 2.62.
1323## http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01551.html
1324## No need to do anything special for these standard directories.
1066d056 1325if test -n "${x_libraries}" && test x"${x_libraries}" != xNONE; then
4fe0b729 1326
1066d056
GM
1327 x_libraries=`echo :${x_libraries}: | sed -e 's|:/usr/lib64:|:|g' -e 's|:/lib64:|:|g' -e 's|^:||' -e 's|:$||'`
1328
1329fi
1330
27a2cdfc
GM
1331LD_SWITCH_X_SITE_AUX=
1332LD_SWITCH_X_SITE_AUX_RPATH=
f13de01e
AS
1333if test "${x_libraries}" != NONE; then
1334 if test -n "${x_libraries}"; then
1335 LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
1336 LD_SWITCH_X_SITE_AUX=-R`echo ${x_libraries} | sed -e "s/:/ -R/g"`
27a2cdfc 1337 LD_SWITCH_X_SITE_AUX_RPATH=`echo ${LD_SWITCH_X_SITE_AUX} | sed -e 's/-R/-Wl,-rpath,/'`
f13de01e 1338 fi
66d736a9 1339 x_default_search_path=""
f13de01e
AS
1340 x_search_path=${x_libraries}
1341 if test -z "${x_search_path}"; then
1342 x_search_path=/usr/lib
1343 fi
1344 for x_library in `echo ${x_search_path}: | \
1345 sed -e "s/:/ /g" -e p -e "s:/lib[[^ /]]* :/share :g"`; do
c8d4d4cc
KH
1346 x_search_path="\
1347${x_library}/X11/%L/%T/%N%C%S:\
1348${x_library}/X11/%l/%T/%N%C%S:\
1349${x_library}/X11/%T/%N%C%S:\
1350${x_library}/X11/%L/%T/%N%S:\
1351${x_library}/X11/%l/%T/%N%S:\
1352${x_library}/X11/%T/%N%S"
66d736a9
RS
1353 if test x"${x_default_search_path}" = x; then
1354 x_default_search_path=${x_search_path}
1355 else
1356 x_default_search_path="${x_search_path}:${x_default_search_path}"
1357 fi
1358 done
ea199426 1359fi
27a2cdfc
GM
1360AC_SUBST(LD_SWITCH_X_SITE_AUX)
1361AC_SUBST(LD_SWITCH_X_SITE_AUX_RPATH)
1362
ea199426 1363if test "${x_includes}" != NONE && test -n "${x_includes}"; then
cc6476f6 1364 C_SWITCH_X_SITE=-I`echo ${x_includes} | sed -e "s/:/ -I/g"`
ea199426 1365fi
9ec10b2f 1366
8dbeb353
DM
1367if test x"${x_includes}" = x; then
1368 bitmapdir=/usr/include/X11/bitmaps
3cd69289 1369else
908ff139 1370 # accumulate include directories that have X11 bitmap subdirectories
cc6476f6
KH
1371 bmd_acc="dummyval"
1372 for bmd in `echo ${x_includes} | sed -e "s/:/ /g"`; do
1373 if test -d "${bmd}/X11/bitmaps"; then
1374 bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps"
4f6f5dab
GM
1375 fi
1376 if test -d "${bmd}/bitmaps"; then
cc6476f6
KH
1377 bmd_acc="${bmd_acc}:${bmd}/bitmaps"
1378 fi
1379 done
1380 if test ${bmd_acc} != "dummyval"; then
1381 bitmapdir=`echo ${bmd_acc} | sed -e "s/^dummyval://"`
1382 fi
3cd69289
DM
1383fi
1384
edfda783 1385HAVE_NS=no
122e9f8f
AR
1386NS_IMPL_COCOA=no
1387NS_IMPL_GNUSTEP=no
edfda783
AR
1388tmp_CPPFLAGS="$CPPFLAGS"
1389tmp_CFLAGS="$CFLAGS"
1390CPPFLAGS="$CPPFLAGS -x objective-c"
1391CFLAGS="$CFLAGS -x objective-c"
1392if test "${with_ns}" != no; then
1393 if test "${opsys}" = darwin; then
122e9f8f 1394 NS_IMPL_COCOA=yes
06b62770
AR
1395 ns_appdir=`pwd`/nextstep/Emacs.app
1396 ns_appbindir=`pwd`/nextstep/Emacs.app/Contents/MacOS
1397 ns_appresdir=`pwd`/nextstep/Emacs.app/Contents/Resources
1398 ns_appsrc=${srcdir}/nextstep/Cocoa/Emacs.base
ea09b8d5 1399 elif test -f $GNUSTEP_CONFIG_FILE; then
122e9f8f 1400 NS_IMPL_GNUSTEP=yes
06b62770
AR
1401 ns_appdir=`pwd`/nextstep/Emacs.app
1402 ns_appbindir=`pwd`/nextstep/Emacs.app
1403 ns_appresdir=`pwd`/nextstep/Emacs.app/Resources
1404 ns_appsrc=${srcdir}/nextstep/GNUstep/Emacs.base
ea09b8d5
GM
1405 dnl FIXME sourcing this 3 times in subshells seems inefficient.
1406 GNUSTEP_MAKEFILES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_MAKEFILES)"
1407 GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
1408 GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
edfda783
AR
1409 CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
1410 CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
1411 REAL_CFLAGS="$REAL_CFLAGS -I${GNUSTEP_SYSTEM_HEADERS}"
1412 LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES}"
1413 fi
ef913c89
GM
1414 AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
1415 [AC_MSG_ERROR([`--with-ns' was specified, but the include
1416 files are missing or cannot be compiled.])])
f5b30dc9
AR
1417 NS_HAVE_NSINTEGER=yes
1418 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <Foundation/NSObjCRuntime.h>],
1419 [NSInteger i;])],
1420 ns_have_nsinteger=yes,
1421 ns_have_nsinteger=no)
1422 if test $ns_have_nsinteger = no; then
1423 NS_HAVE_NSINTEGER=no
1424 fi
edfda783 1425fi
e6ec4e99
GM
1426
1427NS_OBJ=
1428NS_SUPPORT=
edfda783
AR
1429if test "${HAVE_NS}" = yes; then
1430 window_system=nextstep
1431 with_xft=no
06b62770
AR
1432 # set up packaging dirs
1433 exec_prefix=${ns_appbindir}
1434 libexecdir=${ns_appbindir}/libexec
1435 if test "${EN_NS_SELF_CONTAINED}" = yes; then
1436 prefix=${ns_appresdir}
1437 fi
e6ec4e99
GM
1438 NS_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o fontset.o fringe.o image.o"
1439 NS_SUPPORT="\${lispsource}emacs-lisp/easymenu.elc \${lispsource}term/ns-win.elc"
edfda783
AR
1440fi
1441CFLAGS="$tmp_CFLAGS"
1442CPPFLAGS="$tmp_CPPFLAGS"
e6ec4e99
GM
1443AC_SUBST(NS_OBJ)
1444AC_SUBST(NS_SUPPORT)
edfda783 1445
9ec10b2f
DM
1446case "${window_system}" in
1447 x11 )
1448 HAVE_X_WINDOWS=yes
1449 HAVE_X11=yes
1450 case "${with_x_toolkit}" in
c7f493fd
RM
1451 athena | lucid ) USE_X_TOOLKIT=LUCID ;;
1452 motif ) USE_X_TOOLKIT=MOTIF ;;
488dd4c4
JD
1453 gtk ) with_gtk=yes
1454dnl Dont set this for GTK. A lot of tests below assumes Xt when
1455dnl USE_X_TOOLKIT is set.
1456 USE_X_TOOLKIT=none ;;
4be21f66 1457 no ) USE_X_TOOLKIT=none ;;
4f823057
GM
1458dnl If user did not say whether to use a toolkit, make this decision later:
1459dnl use the toolkit if we have gtk, or X11R5 or newer.
86dc59b0 1460 * ) USE_X_TOOLKIT=maybe ;;
9ec10b2f
DM
1461 esac
1462 ;;
9e2a2647 1463 nextstep | none )
9ec10b2f
DM
1464 HAVE_X_WINDOWS=no
1465 HAVE_X11=no
1466 USE_X_TOOLKIT=none
1467 ;;
1468esac
9ec10b2f 1469
31ad8850
JD
1470if test "$window_system" = none && test "X$with_x" != "Xno"; then
1471 AC_CHECK_PROG(HAVE_XSERVER, X, true, false)
1472 if test "$HAVE_XSERVER" = true ||
131e4133 1473 test -n "$DISPLAY" ||
31ad8850
JD
1474 test "`echo /usr/lib/libX11.*`" != "/usr/lib/libX11.*"; then
1475 AC_MSG_ERROR([You seem to be running X, but no X development libraries
0d875537
GM
1476were found. You should install the relevant development files for X
1477and for the toolkit you want, such as Gtk+, Lesstif or Motif. Also make
31ad8850
JD
1478sure you have development files for image handling, i.e.
1479tiff, gif, jpeg, png and xpm.
1480If you are sure you want Emacs compiled without X window support, pass
1481 --without-x
1482to configure.])
1483 fi
1484fi
1485
9ec10b2f 1486### If we're using X11, we should use the X menu package.
08741ba9 1487HAVE_MENUS=no
9ec10b2f 1488case ${HAVE_X11} in
08741ba9 1489 yes ) HAVE_MENUS=yes ;;
9ec10b2f 1490esac
177c0ea7 1491
9ec10b2f
DM
1492# Do the opsystem or machine files prohibit the use of the GNU malloc?
1493# Assume not, until told otherwise.
1494GNU_MALLOC=yes
b05a95cb
RS
1495doug_lea_malloc=yes
1496AC_CHECK_FUNC(malloc_get_state, ,doug_lea_malloc=no)
1497AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
fd0a060b
AS
1498AC_CACHE_CHECK(whether __after_morecore_hook exists,
1499 emacs_cv_var___after_morecore_hook,
e9b2a022 1500[AC_TRY_LINK([extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0],
fd0a060b 1501 emacs_cv_var___after_morecore_hook=yes,
e9b2a022 1502 emacs_cv_var___after_morecore_hook=no)])
fd0a060b
AS
1503if test $emacs_cv_var___after_morecore_hook = no; then
1504 doug_lea_malloc=no
1505fi
8cd88038 1506if test "${system_malloc}" = "yes"; then
9ec10b2f
DM
1507 GNU_MALLOC=no
1508 GNU_MALLOC_reason="
b05a95cb 1509 (The GNU allocators don't work with this system configuration.)"
9ec10b2f 1510fi
8cd88038
RS
1511if test "$doug_lea_malloc" = "yes" ; then
1512 if test "$GNU_MALLOC" = yes ; then
1513 GNU_MALLOC_reason="
0855015c 1514 (Using Doug Lea's new malloc from the GNU C Library.)"
8cd88038 1515 fi
5e7d772d
AS
1516 AC_DEFINE(DOUG_LEA_MALLOC, 1,
1517 [Define to 1 if you are using the GNU C Library.])
8cd88038 1518fi
9ec10b2f
DM
1519
1520if test x"${REL_ALLOC}" = x; then
1521 REL_ALLOC=${GNU_MALLOC}
1522fi
1523
e32fac2a 1524dnl For now, need to use an explicit `#define USE_MMAP_FOR_BUFFERS 1'
69c40632 1525dnl the system configuration file (s/*.h) to turn the use of mmap
53c94d4d 1526dnl in the relocating allocator on.
b1b4ce06
GM
1527
1528AC_FUNC_MMAP
e32fac2a
GM
1529if test $use_mmap_for_buffers = yes; then
1530 REL_ALLOC=no
b1b4ce06
GM
1531fi
1532
52c76122 1533LIBS="$libsrc_libs $LIBS"
9ec10b2f
DM
1534
1535dnl If found, this defines HAVE_LIBDNET, which m/pmax.h checks,
1536dnl and also adds -ldnet to LIBS, which Autoconf uses for checks.
1537AC_CHECK_LIB(dnet, dnet_ntoa)
1538dnl This causes -lresolv to get used in subsequent tests,
1539dnl which causes failures on some systems such as HPUX 9.
1540dnl AC_CHECK_LIB(resolv, gethostbyname)
1541
1542dnl FIXME replace main with a function we actually want from this library.
1543AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
1544
027dae63 1545AC_CHECK_LIB(pthreads, cma_open)
1d94ee28 1546
f4d9f5b8
FP
1547dnl Check for need for bigtoc support on IBM AIX
1548
1549case ${host_os} in
1550aix*)
1551 AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
1552 case $GCC in
1553 yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
1554 *) gdb_cv_bigtoc=-bbigtoc ;;
1555 esac
1556
1557 LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
1558 AC_TRY_LINK([], [int i;], [], [gdb_cv_bigtoc=])
1559 ])
1560 ;;
1561esac
9ec10b2f 1562
9811b1cf
RS
1563# Change CFLAGS and CPPFLAGS temporarily so that C_SWITCH_X_SITE gets
1564# used for the tests that follow. We set them back to REAL_CFLAGS and
1565# REAL_CPPFLAGS later on.
9ec10b2f 1566
5a9bf171
KR
1567REAL_CPPFLAGS="$CPPFLAGS"
1568
9ec10b2f
DM
1569if test "${HAVE_X11}" = "yes"; then
1570 DEFS="$C_SWITCH_X_SITE $DEFS"
96c20358
RS
1571 LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
1572 LIBS="$LIBX $LIBS"
9ec10b2f 1573 CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
5a9bf171 1574 CPPFLAGS="$C_SWITCH_X_SITE $CPPFLAGS"
509fccc3 1575
617a496c
RS
1576 # On Solaris, arrange for LD_RUN_PATH to point to the X libraries for tests.
1577 # This is handled by LD_SWITCH_X_SITE_AUX during the real build,
1578 # but it's more convenient here to set LD_RUN_PATH
1579 # since this also works on hosts that don't understand LD_SWITCH_X_SITE_AUX.
1580 if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
1581 LD_RUN_PATH=$x_libraries${LD_RUN_PATH+:}$LD_RUN_PATH
1582 export LD_RUN_PATH
1583 fi
1584
5ac83f86 1585 if test "${opsys}" = "gnu-linux"; then
3bbe016c 1586 AC_MSG_CHECKING(whether X on GNU/Linux needs -b to link)
509fccc3
RS
1587 AC_TRY_LINK([],
1588 [XOpenDisplay ("foo");],
3bbe016c
KH
1589 [xlinux_first_failure=no],
1590 [xlinux_first_failure=yes])
1591 if test "${xlinux_first_failure}" = "yes"; then
509fccc3
RS
1592 OLD_LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE"
1593 OLD_C_SWITCH_X_SITE="$C_SWITCH_X_SITE"
1594 OLD_CPPFLAGS="$CPPFLAGS"
1595 OLD_LIBS="$LIBS"
1596 LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
1597 C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
1598 CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
1599 LIBS="$LIBS -b i486-linuxaout"
1600 AC_TRY_LINK([],
1601 [XOpenDisplay ("foo");],
3bbe016c
KH
1602 [xlinux_second_failure=no],
1603 [xlinux_second_failure=yes])
1604 if test "${xlinux_second_failure}" = "yes"; then
509fccc3
RS
1605 # If we get the same failure with -b, there is no use adding -b.
1606 # So take it out. This plays safe.
1607 LD_SWITCH_X_SITE="$OLD_LD_SWITCH_X_SITE"
1608 C_SWITCH_X_SITE="$OLD_C_SWITCH_X_SITE"
1609 CPPFLAGS="$OLD_CPPFLAGS"
1610 LIBS="$OLD_LIBS"
1611 AC_MSG_RESULT(no)
1612 else
1613 AC_MSG_RESULT(yes)
1614 fi
1615 else
1616 AC_MSG_RESULT(no)
1617 fi
1618 fi
1619
9ca4be21
GM
1620 # Reportedly, some broken Solaris systems have XKBlib.h but are missing
1621 # header files included from there.
1622 AC_MSG_CHECKING(for Xkb)
1623 AC_TRY_LINK([#include <X11/Xlib.h>
1624#include <X11/XKBlib.h>],
1625 [XkbDescPtr kb = XkbGetKeyboard (0, XkbAllComponentsMask, XkbUseCoreKbd);],
1626 emacs_xkb=yes, emacs_xkb=no)
ad4ac636 1627 AC_MSG_RESULT($emacs_xkb)
9ca4be21 1628 if test $emacs_xkb = yes; then
5e7d772d 1629 AC_DEFINE(HAVE_XKBGETKEYBOARD, 1, [Define to 1 if you have the XkbGetKeyboard function.])
9ca4be21
GM
1630 fi
1631
6e0dc84a 1632 AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
9ca4be21 1633XScreenNumberOfScreen XSetWMProtocols)
9ec10b2f
DM
1634fi
1635
08741ba9 1636if test "${window_system}" = "x11"; then
4be21f66 1637 AC_MSG_CHECKING(X11 version 6)
fd0a060b 1638 AC_CACHE_VAL(emacs_cv_x11_version_6,
e9b2a022 1639 [AC_TRY_LINK([#include <X11/Xlib.h>],
08741ba9
RS
1640[#if XlibSpecificationRelease < 6
1641fail;
1642#endif
e9b2a022 1643], emacs_cv_x11_version_6=yes, emacs_cv_x11_version_6=no)])
fd0a060b
AS
1644 if test $emacs_cv_x11_version_6 = yes; then
1645 AC_MSG_RESULT(6 or newer)
5e7d772d
AS
1646 AC_DEFINE(HAVE_X11R6, 1,
1647 [Define to 1 if you have the X11R6 or newer version of Xlib.])
fd0a060b
AS
1648 else
1649 AC_MSG_RESULT(before 6)
1650 fi
08741ba9
RS
1651fi
1652
f7894e88 1653
96f574f0
GM
1654### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
1655HAVE_RSVG=no
f1957a33 1656if test "${HAVE_X11}" = "yes" || test "${NS_IMPL_GNUSTEP}" = "yes"; then
96f574f0 1657 if test "${with_rsvg}" != "no"; then
37bc7225 1658 RSVG_REQUIRED=2.11.0
96f574f0
GM
1659 RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
1660
1661 PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, :, :)
1662 AC_SUBST(RSVG_CFLAGS)
1663 AC_SUBST(RSVG_LIBS)
1664
1665 if test ".${RSVG_CFLAGS}" != "."; then
1666 HAVE_RSVG=yes
1667 AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
1668 CFLAGS="$CFLAGS $RSVG_CFLAGS"
1669 LIBS="$RSVG_LIBS $LIBS"
1670 fi
1671 fi
1672fi
1673
1674
488dd4c4 1675HAVE_GTK=no
86dc59b0 1676if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
f8932819
JD
1677 GLIB_REQUIRED=2.6
1678 GTK_REQUIRED=2.6
488dd4c4
JD
1679 GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
1680
488dd4c4 1681 dnl Checks for libraries.
4f823057
GM
1682 PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
1683 if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
1684 AC_MSG_ERROR($GTK_PKG_ERRORS)
1685 fi
1686fi
1687
1688
10efe302 1689GTK_OBJ=
4f823057
GM
1690if test x"$pkg_check_gtk" = xyes; then
1691
488dd4c4
JD
1692 AC_SUBST(GTK_CFLAGS)
1693 AC_SUBST(GTK_LIBS)
1694 C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
57669b57
JD
1695 CFLAGS="$CFLAGS $GTK_CFLAGS"
1696 LIBS="$GTK_LIBS $LIBS"
a8ba915c
JD
1697 dnl Try to compile a simple GTK program.
1698 GTK_COMPILES=no
1699 AC_CHECK_FUNCS(gtk_main, GTK_COMPILES=yes)
1700 if test "${GTK_COMPILES}" != "yes"; then
4f823057
GM
1701 if test "$USE_X_TOOLKIT" != "maybe"; then
1702 AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?]);
1703 fi
1704 else
1705 HAVE_GTK=yes
a51f4969 1706 AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
10efe302 1707 GTK_OBJ=gtkutil.o
4f823057 1708 USE_X_TOOLKIT=none
72f51d25
JD
1709 if $PKG_CONFIG --atleast-version=2.10 gtk+-2.0; then
1710 :
1711 else
1712 AC_MSG_WARN([[Your version of Gtk+ will have problems with
1713 closing open displays. This is no problem if you just use
1714 one display, but if you use more than one and close one of them
1715 Emacs may crash.]])
1716 sleep 3
1717 fi
a8ba915c 1718 fi
4f823057
GM
1719
1720fi
10efe302 1721AC_SUBST(GTK_OBJ)
4f823057
GM
1722
1723
1724if test "${HAVE_GTK}" = "yes"; then
488dd4c4 1725
57669b57 1726 dnl GTK scrollbars resemble toolkit scrollbars a lot, so to avoid
488dd4c4 1727 dnl a lot if #ifdef:s, say we have toolkit scrollbars.
d0a80c21
JD
1728 if test "$with_toolkit_scroll_bars" != no; then
1729 with_toolkit_scroll_bars=yes
1730 fi
57669b57
JD
1731
1732 dnl Check if we can use multiple displays with this GTK version.
1733 dnl If gdk_display_open exists, assume all others are there also.
1734 HAVE_GTK_MULTIDISPLAY=no
1735 AC_CHECK_FUNCS(gdk_display_open, HAVE_GTK_MULTIDISPLAY=yes)
1736 if test "${HAVE_GTK_MULTIDISPLAY}" = "yes"; then
1737 AC_DEFINE(HAVE_GTK_MULTIDISPLAY, 1,
1738 [Define to 1 if GTK can handle more than one display.])
1739 fi
5f6a587f 1740
dc2933eb
JD
1741 dnl Check if we have the old file selection dialog declared and
1742 dnl in the link library. In 2.x it may be in the library,
1743 dnl but not declared if deprecated featured has been selected out.
1744 dnl AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION.
572a3cc2 1745 HAVE_GTK_FILE_SELECTION=no
dc2933eb
JD
1746 AC_CHECK_DECL(GTK_TYPE_FILE_SELECTION, HAVE_GTK_FILE_SELECTION=yes,
1747 HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT
1748#include <gtk/gtk.h>])
1749 if test "$HAVE_GTK_FILE_SELECTION" = yes; then
1750 AC_CHECK_FUNCS(gtk_file_selection_new, HAVE_GTK_FILE_SELECTION=yes,
1751 HAVE_GTK_FILE_SELECTION=no)
1752 fi
572a3cc2
JD
1753
1754 dnl Check if we have the new file chooser dialog
572a3cc2 1755 HAVE_GTK_FILE_CHOOSER=no
dc2933eb
JD
1756 AC_CHECK_DECL(GTK_TYPE_FILE_CHOOSER, HAVE_GTK_FILE_CHOOSER=yes,
1757 HAVE_GTK_FILE_CHOOSER=no, [AC_INCLUDES_DEFAULT
1758#include <gtk/gtk.h>])
1759 if test "$HAVE_GTK_FILE_CHOOSER" = yes; then
1760 AC_CHECK_FUNCS(gtk_file_chooser_dialog_new, HAVE_GTK_FILE_CHOOSER=yes,
1761 HAVE_GTK_FILE_CHOOSER=no)
1762 fi
572a3cc2
JD
1763
1764 if test "$HAVE_GTK_FILE_SELECTION" = yes \
1765 && test "$HAVE_GTK_FILE_CHOOSER" = yes; then
1766 AC_DEFINE(HAVE_GTK_FILE_BOTH, 1,
1767 [Define to 1 if GTK has both file selection and chooser dialog.])
1768 fi
b8bdffbe
JD
1769
1770 dnl Check if pthreads are available. Emacs only needs this when using
1771 dnl gtk_file_chooser under Gnome.
1772 if test "$HAVE_GTK_FILE_CHOOSER" = yes; then
1773 HAVE_GTK_AND_PTHREAD=no
1774 AC_CHECK_HEADERS(pthread.h)
1775 if test "$ac_cv_header_pthread_h"; then
1776 AC_CHECK_LIB(pthread, pthread_self, HAVE_GTK_AND_PTHREAD=yes)
1777 fi
1778 if test "$HAVE_GTK_AND_PTHREAD" = yes; then
846d1b3e
JD
1779 case "${canonical}" in
1780 *-hpux*) ;;
1781 *) GTK_LIBS="$GTK_LIBS -lpthread" ;;
1782 esac
b8bdffbe
JD
1783 AC_DEFINE(HAVE_GTK_AND_PTHREAD, 1,
1784 [Define to 1 if you have GTK and pthread (-lpthread).])
1785 fi
1786 fi
488dd4c4
JD
1787fi
1788
131e4133 1789dnl D-Bus has been tested under GNU/Linux only. Must be adapted for
bf9a7ece 1790dnl other platforms. Support for higher D-Bus versions than 1.0 is
131e4133
MA
1791dnl also not configured.
1792HAVE_DBUS=no
10efe302 1793DBUS_OBJ=
131e4133 1794if test "${with_dbus}" = "yes"; then
cffe4909 1795 PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0, HAVE_DBUS=yes, HAVE_DBUS=no)
131e4133 1796 if test "$HAVE_DBUS" = yes; then
4fe0b729
MA
1797 LIBS="$LIBS $DBUS_LIBS"
1798 AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
1799 AC_CHECK_FUNCS([dbus_watch_get_unix_fd])
10efe302 1800 DBUS_OBJ=dbusbind.o
131e4133
MA
1801 fi
1802fi
10efe302 1803AC_SUBST(DBUS_OBJ)
131e4133 1804
637fa988
JD
1805dnl GConf has been tested under GNU/Linux only.
1806dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
1807HAVE_GCONF=no
62b7c422 1808if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
637fa988
JD
1809 PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
1810 if test "$HAVE_GCONF" = yes; then
1811 AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
1812 fi
1813fi
1814
574c05e2
KK
1815dnl SELinux is available for GNU/Linux only.
1816HAVE_LIBSELINUX=no
2807228d 1817LIBSELINUX_LIBS=
574c05e2
KK
1818if test "${with_selinux}" = "yes"; then
1819 AC_CHECK_LIB([selinux], [lgetfilecon], HAVE_LIBSELINUX=yes, HAVE_LIBSELINUX=no)
1820 if test "$HAVE_LIBSELINUX" = yes; then
1821 AC_DEFINE(HAVE_LIBSELINUX, 1, [Define to 1 if using SELinux.])
1822 LIBSELINUX_LIBS=-lselinux
574c05e2
KK
1823 fi
1824fi
2807228d 1825AC_SUBST(LIBSELINUX_LIBS)
574c05e2 1826
bce97856
RS
1827dnl Do not put whitespace before the #include statements below.
1828dnl Older compilers (eg sunos4 cc) choke on it.
687b2aa3 1829HAVE_XAW3D=no
b678dd8b 1830LUCID_LIBW=
465ace28 1831if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
e818a450
JD
1832 if test "$with_xaw3d" != no; then
1833 AC_MSG_CHECKING(for xaw3d)
1834 AC_CACHE_VAL(emacs_cv_xaw3d,
1835 [AC_TRY_LINK([
bce97856 1836#include <X11/Intrinsic.h>
687b2aa3 1837#include <X11/Xaw3d/Simple.h>],
e818a450
JD
1838 [],
1839 emacs_cv_xaw3d=yes,
1840 emacs_cv_xaw3d=no)])
1841 else
1842 emacs_cv_xaw3d=no
1843 fi
1844 if test $emacs_cv_xaw3d = yes; then
1845 AC_MSG_RESULT([yes; using Lucid toolkit])
1846 USE_X_TOOLKIT=LUCID
1847 HAVE_XAW3D=yes
b678dd8b 1848 LUCID_LIBW=-lXaw3d
e818a450
JD
1849 AC_DEFINE(HAVE_XAW3D, 1,
1850 [Define to 1 if you have the Xaw3d library (-lXaw3d).])
1851 else
1852 AC_MSG_RESULT(no)
1853 AC_MSG_CHECKING(for libXaw)
1854 AC_CACHE_VAL(emacs_cv_xaw,
1855 [AC_TRY_LINK([
1856#include <X11/Intrinsic.h>
1857#include <X11/Xaw/Simple.h>],
1858 [],
1859 emacs_cv_xaw=yes,
1860 emacs_cv_xaw=no)])
1861 if test $emacs_cv_xaw = yes; then
687b2aa3 1862 AC_MSG_RESULT([yes; using Lucid toolkit])
fd0a060b 1863 USE_X_TOOLKIT=LUCID
b678dd8b 1864 LUCID_LIBW=-lXaw
e818a450
JD
1865 elif test x"${USE_X_TOOLKIT}" = xLUCID; then
1866 AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
fd0a060b 1867 else
e818a450
JD
1868 AC_MSG_RESULT([no; do not use toolkit by default])
1869 USE_X_TOOLKIT=none
fd0a060b 1870 fi
f7894e88 1871 fi
4be21f66
KH
1872fi
1873
1874X_TOOLKIT_TYPE=$USE_X_TOOLKIT
1875
8fdac2c3 1876LIBXTR6=
9ec10b2f
DM
1877if test "${USE_X_TOOLKIT}" != "none"; then
1878 AC_MSG_CHECKING(X11 toolkit version)
fd0a060b 1879 AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
e9b2a022 1880 [AC_TRY_LINK([#include <X11/Intrinsic.h>],
9ec10b2f
DM
1881[#if XtSpecificationRelease < 6
1882fail;
1883#endif
e9b2a022 1884], emacs_cv_x11_toolkit_version_6=yes, emacs_cv_x11_toolkit_version_6=no)])
fd0a060b
AS
1885 HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6
1886 if test $emacs_cv_x11_toolkit_version_6 = yes; then
1887 AC_MSG_RESULT(6 or newer)
5e7d772d
AS
1888 AC_DEFINE(HAVE_X11XTR6, 1,
1889 [Define to 1 if you have the X11R6 or newer version of Xt.])
8fdac2c3
GM
1890 LIBXTR6="-lSM -lICE"
1891 case "$opsys" in
1892 ## Use libw.a along with X11R6 Xt.
1893 unixware) LIBXTR6="$LIBXTR6 -lw" ;;
1894 esac
fd0a060b
AS
1895 else
1896 AC_MSG_RESULT(before 6)
1897 fi
6aad10e4
RS
1898
1899dnl If using toolkit, check whether libXmu.a exists.
1900dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
1901 OLDLIBS="$LIBS"
fcc303f4
RS
1902 if test x$HAVE_X11XTR6 = xyes; then
1903 LIBS="-lXt -lSM -lICE $LIBS"
1904 else
1905 LIBS="-lXt $LIBS"
1906 fi
6aad10e4 1907 AC_CHECK_LIB(Xmu, XmuConvertStandardSelection)
ad4ac636
GM
1908 test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS"
1909fi
8fdac2c3 1910AC_SUBST(LIBXTR6)
ad4ac636 1911
294c50a0
GM
1912dnl FIXME the logic here seems weird, but this is what cpp was doing.
1913dnl Why not just test for libxmu in the normal way?
1914LIBXMU=-lXmu
1915case "$machine" in
1916 ## These machines don't supply Xmu.
1917 hpux* | aix4-2 )
363a7f8f 1918 test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
294c50a0
GM
1919 ;;
1920esac
1921AC_SUBST(LIBXMU)
1922
ad4ac636
GM
1923# On Irix 6.5, at least, we need XShapeQueryExtension from -lXext for Xaw3D.
1924if test "${HAVE_X11}" = "yes"; then
1925 if test "${USE_X_TOOLKIT}" != "none"; then
1926 AC_CHECK_LIB(Xext, XShapeQueryExtension)
1927 fi
9ec10b2f
DM
1928fi
1929
b678dd8b 1930LIBXP=
66d736a9 1931if test "${USE_X_TOOLKIT}" = "MOTIF"; then
fd0a060b 1932 AC_CACHE_CHECK(for Motif version 2.1, emacs_cv_motif_version_2_1,
e9b2a022 1933 [AC_TRY_COMPILE([#include <Xm/Xm.h>],
66d736a9
RS
1934 [#if XmVERSION > 2 || (XmVERSION == 2 && XmREVISION >= 1)
1935int x = 5;
1936#else
1937Motif version prior to 2.1.
1938#endif],
e9b2a022 1939 emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)])
fd0a060b 1940 if test $emacs_cv_motif_version_2_1 = yes; then
8ea5f2d9 1941 AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp)
4693dbc9
SM
1942 else
1943 AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif,
1944 # We put this in CFLAGS temporarily to precede other -I options
1945 # that might be in CFLAGS temporarily.
1946 # We put this in CPPFLAGS where it precedes the other -I options.
1947 OLD_CPPFLAGS=$CPPFLAGS
1948 OLD_CFLAGS=$CFLAGS
1949 CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CPPFLAGS"
1950 CFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CFLAGS"
1951 [AC_TRY_COMPILE([#include </usr/X11R6/LessTif/Motif1.2/include/Xm/Xm.h>],
1952 [int x = 5;],
1953 emacs_cv_lesstif=yes, emacs_cv_lesstif=no)])
1954 if test $emacs_cv_lesstif = yes; then
1955 # Make sure this -I option remains in CPPFLAGS after it is set
1956 # back to REAL_CPPFLAGS.
1957 # There is no need to change REAL_CFLAGS, because REAL_CFLAGS does not
1958 # have those other -I options anyway. Ultimately, having this
1959 # directory ultimately in CPPFLAGS will be enough.
1960 REAL_CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $REAL_CPPFLAGS"
1961 LDFLAGS="-L/usr/X11R6/LessTif/Motif1.2/lib $LDFLAGS"
1962 else
1963 CFLAGS=$OLD_CFLAGS
1964 CPPFLAGS=$OLD_CPPFLAGS
1965 fi
fd0a060b 1966 fi
66d736a9
RS
1967fi
1968
488dd4c4 1969dnl Use toolkit scroll bars if configured for GTK or X toolkit and either
0be97a72
GM
1970dnl using Motif or Xaw3d is available, and unless
1971dnl --with-toolkit-scroll-bars=no was specified.
1972
5e7d772d
AS
1973AH_TEMPLATE(USE_TOOLKIT_SCROLL_BARS,
1974 [Define to 1 if we should use toolkit scroll bars.])dnl
0be97a72
GM
1975USE_TOOLKIT_SCROLL_BARS=no
1976if test "${with_toolkit_scroll_bars}" != "no"; then
1977 if test "${USE_X_TOOLKIT}" != "none"; then
1978 if test "${USE_X_TOOLKIT}" = "MOTIF"; then
1979 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
1980 HAVE_XAW3D=no
1981 USE_TOOLKIT_SCROLL_BARS=yes
1982 elif test "${HAVE_XAW3D}" = "yes"; then
1983 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
1984 USE_TOOLKIT_SCROLL_BARS=yes
1985 fi
488dd4c4
JD
1986 elif test "${HAVE_GTK}" = "yes"; then
1987 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
1988 USE_TOOLKIT_SCROLL_BARS=yes
edfda783
AR
1989 elif test "${HAVE_NS}" = "yes"; then
1990 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
1991 USE_TOOLKIT_SCROLL_BARS=yes
0be97a72
GM
1992 fi
1993fi
1994
0d936a36
RS
1995dnl See if XIM is available.
1996AC_TRY_COMPILE([
1997 #include <X11/Xlib.h>
1998 #include <X11/Xresource.h>],
1999 [XIMProc callback;],
28aa2c3e
AS
2000 [HAVE_XIM=yes
2001 AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
0d936a36
RS
2002 HAVE_XIM=no)
2003
2004dnl `--with-xim' now controls only the initial value of use_xim at run time.
c6f7dae8
GM
2005
2006if test "${with_xim}" != "no"; then
5e7d772d
AS
2007 AC_DEFINE(USE_XIM, 1,
2008 [Define to 1 if we should use XIM, if it is available.])
4fdbcac5 2009fi
f6214bb7 2010
0d936a36
RS
2011
2012if test "${HAVE_XIM}" != "no"; then
a6c2ef66
DL
2013 late_CFLAGS=$CFLAGS
2014 if test "$GCC" = yes; then
2015 CFLAGS="$CFLAGS --pedantic-errors"
2016 fi
1c3a8acf
DL
2017 AC_TRY_COMPILE([
2018#include <X11/Xlib.h>
2019#include <X11/Xresource.h>],
2020[Display *display;
2021XrmDatabase db;
2022char *res_name;
2023char *res_class;
2024XIMProc callback;
2025XPointer *client_data;
a6c2ef66
DL
2026#ifndef __GNUC__
2027/* If we're not using GCC, it's probably not XFree86, and this is
2028 probably right, but we can't use something like --pedantic-errors. */
2029extern Bool XRegisterIMInstantiateCallback(Display*, XrmDatabase, char*,
2030 char*, XIMProc, XPointer*);
2031#endif
1c3a8acf
DL
2032(void)XRegisterIMInstantiateCallback(display, db, res_name, res_class, callback,
2033 client_data);],
2034 [emacs_cv_arg6_star=yes])
2035 AH_TEMPLATE(XRegisterIMInstantiateCallback_arg6,
2036 [Define to the type of the 6th arg of XRegisterIMInstantiateCallback,
2037either XPointer or XPointer*.])dnl
2038 if test "$emacs_cv_arg6_star" = yes; then
8cfdf2ca 2039 AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer*])
1c3a8acf 2040 else
8cfdf2ca 2041 AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer])
1c3a8acf 2042 fi
a6c2ef66 2043 CFLAGS=$late_CFLAGS
c6f7dae8
GM
2044fi
2045
c21273df
AR
2046### Start of font-backend (under any platform) section.
2047# (nothing here yet -- this is a placeholder)
2048### End of font-backend (under any platform) section.
1ef37fa8 2049
c21273df
AR
2050### Start of font-backend (under X11) section.
2051if test "${HAVE_X11}" = "yes"; then
2052 PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2.0, HAVE_FC=yes, HAVE_FC=no)
0666b4f1 2053
7bbec45b 2054 ## Use -lXft if available, unless `--with-xft=no'.
c21273df 2055 HAVE_XFT=maybe
7bbec45b 2056 if test "${HAVE_FC}" = "no" || test "x${with_x}" = "xno"; then
c21273df
AR
2057 with_xft="no";
2058 fi
2059 if test "x${with_xft}" != "xno"; then
2060
2061 PKG_CHECK_MODULES(XFT, xft >= 0.13.0, , HAVE_XFT=no)
832fdcab
CY
2062 ## Because xftfont.c uses XRenderQueryExtension, we also
2063 ## need to link to -lXrender.
2064 HAVE_XRENDER=no
2065 AC_CHECK_LIB(Xrender, XRenderQueryExtension, HAVE_XRENDER=yes)
2066 if test "$HAVE_XFT" != no && test "$HAVE_XRENDER" != no; then
c21273df
AR
2067 OLD_CPPFLAGS="$CPPFLAGS"
2068 OLD_CFLAGS="$CFLAGS"
2069 OLD_LIBS="$LIBS"
2070 CPPFLAGS="$CPPFLAGS $XFT_CFLAGS"
2071 CFLAGS="$CFLAGS $XFT_CFLAGS"
832fdcab 2072 XFT_LIBS="-lXrender $XFT_LIBS"
c21273df
AR
2073 LIBS="$XFT_LIBS $LIBS"
2074 AC_CHECK_HEADER(X11/Xft/Xft.h,
2075 AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS))
2076
2077 if test "${HAVE_XFT}" = "yes"; then
2078 AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
2079 AC_SUBST(XFT_LIBS)
2080 C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
2081 else
2082 CPPFLAGS="$OLD_CPPFLAGS"
2083 CFLAGS="$OLD_CFLAGS"
2084 LIBS="$OLD_LIBS"
2085 fi # "${HAVE_XFT}" = "yes"
2086 fi # "$HAVE_XFT" != no
2087 fi # "x${with_xft}" != "xno"
2088
2089 dnl For the "Does Emacs use" message at the end.
2090 if test "$HAVE_XFT" != "yes"; then
2091 HAVE_XFT=no
2092 fi
0666b4f1 2093
0666b4f1 2094
c21273df 2095 HAVE_FREETYPE=no
af17b983
CY
2096 ## We used to allow building with FreeType and without Xft.
2097 ## However, the ftx font backend driver is not in good shape.
c21273df
AR
2098 if test "${HAVE_XFT}" = "yes"; then
2099 dnl As we use Xft, we anyway use freetype.
af17b983 2100 dnl There's no need for additional CFLAGS and LIBS.
c21273df
AR
2101 HAVE_FREETYPE=yes
2102 FONTCONFIG_CFLAGS=
2103 FONTCONFIG_LIBS=
c21273df 2104 fi
1ef37fa8 2105
c21273df
AR
2106 HAVE_LIBOTF=no
2107 if test "${HAVE_FREETYPE}" = "yes"; then
2108 AC_DEFINE(HAVE_FREETYPE, 1,
2109 [Define to 1 if using the freetype and fontconfig libraries.])
2110 if test "${with_libotf}" != "no"; then
4fe0b729 2111 PKG_CHECK_MODULES(LIBOTF, libotf, HAVE_LIBOTF=yes,
c21273df
AR
2112 HAVE_LIBOTF=no)
2113 if test "$HAVE_LIBOTF" = "yes"; then
2114 AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.])
2115 AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
2116 HAVE_OTF_GET_VARIATION_GLYPHS=yes,
2117 HAVE_OTF_GET_VARIATION_GLYPHS=no)
2118 if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
2119 AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1,
2120 [Define to 1 if libotf has OTF_get_variation_glyphs.])
2121 fi
2122 fi
9e53b62e 2123 fi
c21273df
AR
2124 dnl FIXME should there be an error if HAVE_FREETYPE != yes?
2125 dnl Does the new font backend require it, or can it work without it?
0666b4f1 2126 fi
1ef37fa8 2127
c21273df
AR
2128 HAVE_M17N_FLT=no
2129 if test "${HAVE_LIBOTF}" = yes; then
2130 if test "${with_m17n_flt}" != "no"; then
2131 PKG_CHECK_MODULES(M17N_FLT, m17n-flt, HAVE_M17N_FLT=yes, HAVE_M17N_FLT=no)
2132 if test "$HAVE_M17N_FLT" = "yes"; then
2133 AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
2134 fi
2135 fi
6b0262c1 2136 fi
c21273df
AR
2137else
2138 HAVE_XFT=no
2139 HAVE_FREETYPE=no
2140 HAVE_LIBOTF=no
2141 HAVE_M17N_FLT=no
1ef37fa8 2142fi
bc0b5f61
GM
2143
2144FONT_OBJ=xfont.o
2145if test "$HAVE_XFT" = "yes"; then
2146 FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
2147elif test "$HAVE_FREETYPE" = "yes"; then
2148 FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
2149fi
2150AC_SUBST(FONT_OBJ)
2151
c21273df 2152### End of font-backend (under X11) section.
1ef37fa8
KH
2153
2154AC_SUBST(FREETYPE_CFLAGS)
2155AC_SUBST(FREETYPE_LIBS)
2156AC_SUBST(FONTCONFIG_CFLAGS)
2157AC_SUBST(FONTCONFIG_LIBS)
2158AC_SUBST(LIBOTF_CFLAGS)
2159AC_SUBST(LIBOTF_LIBS)
2160AC_SUBST(M17N_FLT_CFLAGS)
2161AC_SUBST(M17N_FLT_LIBS)
2162
620fdfdf
RS
2163### Use -lXpm if available, unless `--with-xpm=no'.
2164HAVE_XPM=no
aded53ff 2165LIBXPM=
620fdfdf
RS
2166if test "${HAVE_X11}" = "yes"; then
2167 if test "${with_xpm}" != "no"; then
620fdfdf 2168 AC_CHECK_HEADER(X11/xpm.h,
28aa2c3e 2169 [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
7960d0bd 2170 if test "${HAVE_XPM}" = "yes"; then
29c1b68e
GM
2171 AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
2172 AC_EGREP_CPP(no_return_alloc_pixels,
2173 [#include "X11/xpm.h"
7960d0bd
GM
2174#ifndef XpmReturnAllocPixels
2175no_return_alloc_pixels
2176#endif
29c1b68e
GM
2177 ], HAVE_XPM=no, HAVE_XPM=yes)
2178
2179 if test "${HAVE_XPM}" = "yes"; then
2180 AC_MSG_RESULT(yes)
2181 else
2182 AC_MSG_RESULT(no)
2183 fi
1890c0c4 2184 fi
620fdfdf
RS
2185 fi
2186
2187 if test "${HAVE_XPM}" = "yes"; then
5e7d772d 2188 AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm libary (-lXpm).])
aded53ff 2189 LIBXPM=-lXpm
620fdfdf
RS
2190 fi
2191fi
aded53ff 2192AC_SUBST(LIBXPM)
177c0ea7 2193
620fdfdf
RS
2194### Use -ljpeg if available, unless `--with-jpeg=no'.
2195HAVE_JPEG=no
aded53ff 2196LIBJPEG=
620fdfdf
RS
2197if test "${HAVE_X11}" = "yes"; then
2198 if test "${with_jpeg}" != "no"; then
71cc40d5 2199 dnl Checking for jpeglib.h can lose because of a redefinition of
3cc9d384
DL
2200 dnl HAVE_STDLIB_H.
2201 AC_CHECK_HEADER(jerror.h,
28aa2c3e 2202 [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
620fdfdf
RS
2203 fi
2204
5e7d772d 2205 AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
620fdfdf
RS
2206 if test "${HAVE_JPEG}" = "yes"; then
2207 AC_DEFINE(HAVE_JPEG)
91b5aa9a 2208 AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
a0dd4fa6 2209 [#include <jpeglib.h>
4d766b59 2210 version=JPEG_LIB_VERSION
177c0ea7 2211],
28aa2c3e 2212 [AC_DEFINE(HAVE_JPEG)],
4d766b59
RS
2213 [AC_MSG_WARN([libjpeg found, but not version 6b or later])
2214 HAVE_JPEG=no])
620fdfdf 2215 fi
aded53ff
GM
2216 if test "${HAVE_JPEG}" = "yes"; then
2217 LIBJPEG=-ljpeg
2218 fi
620fdfdf 2219fi
aded53ff 2220AC_SUBST(LIBJPEG)
177c0ea7 2221
620fdfdf
RS
2222### Use -lpng if available, unless `--with-png=no'.
2223HAVE_PNG=no
aded53ff 2224LIBPNG=
620fdfdf
RS
2225if test "${HAVE_X11}" = "yes"; then
2226 if test "${with_png}" != "no"; then
8cfdf2ca
DL
2227 # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
2228 # in /usr/include/libpng.
2229 AC_CHECK_HEADERS(png.h libpng/png.h)
2230 if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
2231 AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm)
2232 fi
620fdfdf
RS
2233 fi
2234
2235 if test "${HAVE_PNG}" = "yes"; then
5e7d772d 2236 AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
aded53ff 2237 LIBPNG="-lpng -lz -lm"
620fdfdf
RS
2238 fi
2239fi
aded53ff 2240AC_SUBST(LIBPNG)
177c0ea7 2241
620fdfdf
RS
2242### Use -ltiff if available, unless `--with-tiff=no'.
2243HAVE_TIFF=no
aded53ff 2244LIBTIFF=
620fdfdf
RS
2245if test "${HAVE_X11}" = "yes"; then
2246 if test "${with_tiff}" != "no"; then
620fdfdf 2247 AC_CHECK_HEADER(tiffio.h,
28aa2c3e 2248 [tifflibs="-lz -lm"
3b3cc4a4
KR
2249 # At least one tiff package requires the jpeg library.
2250 if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
28aa2c3e 2251 AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)])
620fdfdf
RS
2252 fi
2253
2254 if test "${HAVE_TIFF}" = "yes"; then
5e7d772d 2255 AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
aded53ff
GM
2256 dnl FIXME -lz -lm, as per libpng?
2257 LIBTIFF=-ltiff
620fdfdf
RS
2258 fi
2259fi
aded53ff 2260AC_SUBST(LIBTIFF)
177c0ea7 2261
47d1e061 2262### Use -lgif or -lungif if available, unless `--with-gif=no'.
620fdfdf 2263HAVE_GIF=no
aded53ff 2264LIBGIF=
47d1e061
GM
2265if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no"; then
2266 AC_CHECK_HEADER(gif_lib.h,
4d766b59
RS
2267# EGifPutExtensionLast only exists from version libungif-4.1.0b1.
2268# Earlier versions can crash Emacs.
aded53ff 2269 [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])
47d1e061
GM
2270
2271 if test "$HAVE_GIF" = yes; then
aded53ff
GM
2272 LIBGIF=-lgif
2273 elif test "$HAVE_GIF" = maybe; then
12d9c91d 2274# If gif_lib.h but no libgif, try libungif.
aded53ff
GM
2275 AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no)
2276 test "$HAVE_GIF" = yes && LIBGIF=-lungif
620fdfdf
RS
2277 fi
2278
2279 if test "${HAVE_GIF}" = "yes"; then
aded53ff 2280 AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
bfa6fb7e
JD
2281 fi
2282fi
aded53ff 2283AC_SUBST(LIBGIF)
bfa6fb7e
JD
2284
2285dnl Check for required libraries.
2286if test "${HAVE_X11}" = "yes"; then
2287 MISSING=""
2288 WITH_NO=""
2289 test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
2290 MISSING="libXpm" && WITH_NO="--with-xpm=no"
2291 test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
2292 MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
2293 test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
2294 MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
2295 test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
2296 MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
2297 test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
2298 MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
2299
2300 if test "X${MISSING}" != X; then
3d20d6aa 2301 AC_MSG_ERROR([The following required libraries were not found:
bfa6fb7e 2302 $MISSING
1ee86f21 2303Maybe some development libraries/packages are missing?
bfa6fb7e
JD
2304If you don't want to link with them give
2305 $WITH_NO
2306as options to configure])
620fdfdf
RS
2307 fi
2308fi
2309
79011b82
NR
2310### Use -lgpm if available, unless `--with-gpm=no'.
2311HAVE_GPM=no
aded53ff 2312LIBGPM=
658f86ca 2313GPM_MOUSE_SUPPORT=
79011b82
NR
2314if test "${with_gpm}" != "no"; then
2315 AC_CHECK_HEADER(gpm.h,
28aa2c3e 2316 [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
79011b82 2317
aded53ff
GM
2318 if test "${HAVE_GPM}" = "yes"; then
2319 AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
2320 LIBGPM=-lgpm
658f86ca 2321 GPM_MOUSE_SUPPORT="\${lispsource}mouse.elc"
aded53ff 2322 fi
79011b82 2323fi
aded53ff 2324AC_SUBST(LIBGPM)
658f86ca 2325AC_SUBST(GPM_MOUSE_SUPPORT)
79011b82 2326
cef11da2 2327dnl Check for malloc/malloc.h on darwin
28aa2c3e 2328AC_CHECK_HEADER(malloc/malloc.h, [AC_DEFINE(HAVE_MALLOC_MALLOC_H, 1, [Define to 1 if you have the <malloc/malloc.h> header file.])])
cef11da2 2329
ed6281b0 2330C_SWITCH_X_SYSTEM=
edfda783
AR
2331### Use NeXTstep API to implement GUI.
2332if test "${HAVE_NS}" = "yes"; then
2333 AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.])
122e9f8f 2334 if test "${NS_IMPL_COCOA}" = "yes"; then
edfda783 2335 AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under MacOS X.])
48fad8e8 2336 GNU_OBJC_CFLAGS=
edfda783 2337 fi
122e9f8f 2338 if test "${NS_IMPL_GNUSTEP}" = "yes"; then
edfda783 2339 AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
ed6281b0
DN
2340 # See also .m.o rule in Makefile.in */
2341 # FIXME: are all these flags really needed? Document here why. */
2342 C_SWITCH_X_SYSTEM="-D_REENTRANT -fPIC -fno-strict-aliasing"
48fad8e8 2343 GNU_OBJC_CFLAGS="-fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
edfda783 2344 fi
d5e2f8fe
AR
2345 if test "${NS_HAVE_NSINTEGER}" = "yes"; then
2346 AC_DEFINE(NS_HAVE_NSINTEGER, 1, [Define to 1 if `NSInteger' is defined.])
7ef651dd 2347 fi
edfda783
AR
2348 # We also have mouse menus.
2349 HAVE_MENUS=yes
005bd5a2 2350 OTHER_FILES=ns-app
edfda783
AR
2351fi
2352
e0f712ba 2353
f21fadcc
JD
2354### Use session management (-lSM -lICE) if available
2355HAVE_X_SM=no
10efe302 2356LIBXSM=
f21fadcc
JD
2357if test "${HAVE_X11}" = "yes"; then
2358 AC_CHECK_HEADER(X11/SM/SMlib.h,
28aa2c3e 2359 [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
f21fadcc
JD
2360
2361 if test "${HAVE_X_SM}" = "yes"; then
5e7d772d 2362 AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
10efe302 2363 LIBXSM="-lSM -lICE"
f21fadcc
JD
2364 case "$LIBS" in
2365 *-lSM*) ;;
10efe302 2366 *) LIBS="$LIBXSM $LIBS" ;;
f21fadcc
JD
2367 esac
2368 fi
2369fi
10efe302 2370AC_SUBST(LIBXSM)
177c0ea7 2371
9ec10b2f 2372# If netdb.h doesn't declare h_errno, we must declare it by hand.
fd0a060b
AS
2373AC_CACHE_CHECK(whether netdb declares h_errno,
2374 emacs_cv_netdb_declares_h_errno,
e9b2a022 2375[AC_TRY_LINK([#include <netdb.h>],
01345308 2376 [return h_errno;],
e9b2a022 2377 emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
fd0a060b 2378if test $emacs_cv_netdb_declares_h_errno = yes; then
5e7d772d 2379 AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
fd0a060b 2380fi
9ec10b2f 2381
6e0dc84a 2382AC_FUNC_ALLOCA
9ec10b2f 2383
4756ee42
GM
2384dnl src/alloca.c has been removed. Could also check if $ALLOCA is set?
2385dnl FIXME is there an autoconf test that does the right thing, without
2386dnl needing to call A_M_E afterwards?
2387if test x"$ac_cv_func_alloca_works" != xyes; then
2388 AC_MSG_ERROR( [a system implementation of alloca is required] )
2389fi
2390
f6e8adea 2391# fmod, logb, and frexp are found in -lm on most systems.
e468fb38 2392# On HPUX 9.01, -lm does not contain logb, so check for sqrt.
e6fd9047 2393AC_CHECK_LIB(m, sqrt)
e6fd9047 2394
4b121527
DL
2395# Check for mail-locking functions in a "mail" library. Probably this should
2396# have the same check as for liblockfile below.
aded53ff
GM
2397AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
2398if test $have_mail = yes; then
2399 LIBS_MAIL=-lmail
2400 LIBS="$LIBS_MAIL $LIBS"
2401 AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library (-lmail).])
2402else
2403 LIBS_MAIL=
2404fi
5ad9ac92 2405dnl Debian, at least:
aded53ff
GM
2406AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
2407if test $have_lockfile = yes; then
2408 LIBS_MAIL=-llockfile
2409 LIBS="$LIBS_MAIL $LIBS"
2410 AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' library (-llockfile).])
2411else
5ad9ac92
DL
2412# If we have the shared liblockfile, assume we must use it for mail
2413# locking (e.g. Debian). If we couldn't link against liblockfile
2414# (no liblockfile.a installed), ensure that we don't need to.
5ad9ac92
DL
2415 dnl This works for files generally, not just executables.
2416 dnl Should we look elsewhere for it? Maybe examine /etc/ld.so.conf?
2417 AC_CHECK_PROG(liblockfile, liblockfile.so, yes, no,
2418 /usr/lib:/lib:/usr/local/lib:$LD_LIBRARY_PATH)
2419 if test $ac_cv_prog_liblockfile = yes; then
2420 AC_MSG_ERROR([Shared liblockfile found but can't link against it.
2421This probably means that movemail could lose mail.
91b5aa9a 2422There may be a `development' package to install containing liblockfile.])
4b121527 2423 fi
5ad9ac92
DL
2424fi
2425AC_CHECK_FUNCS(touchlock)
2426AC_CHECK_HEADERS(maillock.h)
aded53ff 2427AC_SUBST(LIBS_MAIL)
4e4db900 2428
66abe596 2429AC_CHECK_FUNCS(gethostname getdomainname dup2 \
e1d954e4 2430rename closedir mkdir rmdir sysinfo getrusage get_current_dir_name \
555ffc3f 2431random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime setsid \
85ea1a28 2432strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \
807e2671 2433utimes getrlimit setrlimit setpgid getcwd getwd shutdown getaddrinfo \
ec406751 2434__fpending mblen mbrlen mbsinit strsignal setitimer ualarm index rindex \
66abe596 2435sendto recvfrom getsockopt setsockopt getsockname getpeername \
72621b4e 2436gai_strerror mkstemp getline getdelim mremap memmove fsync sync bzero \
25241b4d
SM
2437memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign \
2438cfmakeraw cfsetspeed)
38c44a91 2439
66abe596
KS
2440AC_CHECK_HEADERS(sys/un.h)
2441
38c44a91
DL
2442AC_FUNC_MKTIME
2443if test "$ac_cv_func_working_mktime" = no; then
5e7d772d 2444 AC_DEFINE(BROKEN_MKTIME, 1, [Define to 1 if the mktime function is broken.])
38c44a91
DL
2445fi
2446
1ca2077a
DL
2447AC_FUNC_GETLOADAVG
2448
64a04a42 2449AC_FUNC_FSEEKO
63c59d1e 2450
9eff9fe3
PE
2451# Configure getopt.
2452m4_include([m4/getopt.m4])
2453gl_GETOPT_IFELSE([
2454 gl_GETOPT_SUBSTITUTE_HEADER
2455 gl_PREREQ_GETOPT
2456 GETOPTOBJS='getopt.o getopt1.o'
2457])
2458AC_SUBST(GETOPTOBJS)
2459
71cc40d5
DL
2460AC_FUNC_GETPGRP
2461
12c0a8da
DL
2462AC_FUNC_STRFTIME
2463
64a04a42 2464# UNIX98 PTYs.
40ccc4c7
GM
2465AC_CHECK_FUNCS(grantpt)
2466
2467# PTY-related GNU extensions.
2468AC_CHECK_FUNCS(getpt)
2469
16831d8c
RS
2470# Check this now, so that we will NOT find the above functions in ncurses.
2471# That is because we have not set up to link ncurses in lib-src.
2472# It's better to believe a function is not available
2473# than to expect to find it in ncurses.
47ad15cd
JD
2474# Also we need tputs and frieds to be able to build at all.
2475have_tputs_et_al=true
2476AC_SEARCH_LIBS(tputs, [ncurses terminfo termcap], , have_tputs_et_al=false)
2477if test "$have_tputs_et_al" != true; then
2478 AC_MSG_ERROR([I couldn't find termcap functions (tputs and friends).
2479Maybe some development libraries/packages are missing? Try installing
2480libncurses-dev(el), libterminfo-dev(el) or similar.])
2481fi
2482# Must define this when any termcap library is found.
866b0a7b
GM
2483AC_DEFINE(HAVE_LIBNCURSES, 1,
2484 [Define to 1 if you have the `ncurses' library (-lncurses).])
0c565a0a 2485
555ffc3f
CY
2486# Do we have res_init, for detecting changes in /etc/resolv.conf?
2487
2488resolv=no
c0a3f2a2
AS
2489AC_TRY_LINK([#include <netinet/in.h>
2490#include <arpa/nameser.h>
2491#include <resolv.h>],
2492 [return res_init();],
2493 have_res_init=yes, have_res_init=no)
555ffc3f
CY
2494if test "$have_res_init" = no; then
2495 OLIBS="$LIBS"
2496 LIBS="$LIBS -lresolv"
2497 AC_MSG_CHECKING(for res_init with -lresolv)
2498 AC_TRY_LINK([#include <netinet/in.h>
2499#include <arpa/nameser.h>
c0a3f2a2
AS
2500#include <resolv.h>],
2501 [return res_init();],
555ffc3f
CY
2502 have_res_init=yes, have_res_init=no)
2503 AC_MSG_RESULT($have_res_init)
2504 if test "$have_res_init" = yes ; then
2505 resolv=yes
2506 fi
2507 LIBS="$OLIBS"
2508fi
2509
2510if test "$have_res_init" = yes; then
2511 AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if res_init is available.])
2512fi
2513
84e70f78 2514# Do we need the Hesiod library to provide the support routines?
aded53ff 2515LIBHESIOD=
316460cf 2516if test "$with_hesiod" != no ; then
aded53ff 2517 # Don't set $LIBS here -- see comments above. FIXME which comments?
84e70f78
KR
2518 AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
2519 [AC_CHECK_LIB(resolv, res_send, resolv=yes,
2520 [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
2521 if test "$resolv" = yes ; then
2522 RESOLVLIB=-lresolv
84e70f78
KR
2523 else
2524 RESOLVLIB=
2525 fi
2526 AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
aded53ff
GM
2527 hesiod=yes, :, $RESOLVLIB)])
2528
2529 if test x"$hesiod" = xyes; then
2530 AC_DEFINE(HAVE_LIBHESIOD, 1,
2531 [Define to 1 if you have the hesiod library (-lhesiod).])
2532 LIBHESIOD=-lhesiod
2533 fi
84e70f78 2534fi
aded53ff 2535AC_SUBST(LIBHESIOD)
84e70f78 2536
555ffc3f
CY
2537# Do we need libresolv (due to res_init or Hesiod)?
2538if test "$resolv" = yes ; then
2539 AC_DEFINE(HAVE_LIBRESOLV, 1,
2540 [Define to 1 if you have the resolv library (-lresolv).])
aded53ff
GM
2541 LIBRESOLV=-lresolv
2542else
2543 LIBRESOLV=
555ffc3f 2544fi
aded53ff 2545AC_SUBST(LIBRESOLV)
555ffc3f 2546
a21616bd 2547# These tell us which Kerberos-related libraries to use.
aded53ff
GM
2548COM_ERRLIB=
2549CRYPTOLIB=
2550KRB5LIB=
2551DESLIB=
2552KRB4LIB=
2553
316460cf 2554if test "${with_kerberos}" != no; then
aded53ff
GM
2555 AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no)
2556 if test $have_com_err = yes; then
2557 COM_ERRLIB=-lcom_err
2558 LIBS="$COM_ERRLIB $LIBS"
2559 AC_DEFINE(HAVE_LIBCOM_ERR, 1, [Define to 1 if you have the `com_err' library (-lcom_err).])
2560 fi
2561 AC_CHECK_LIB(crypto, mit_des_cbc_encrypt, have_crypto=yes, have_crypto=no)
2562 if test $have_crypto = yes; then
2563 CRYPTOLIB=-lcrypto
2564 LIBS="$CRYPTOLIB $LIBS"
2565 AC_DEFINE(HAVE_LIBCRYPTO, 1, [Define to 1 if you have the `crypto' library (-lcrypto).])
2566 fi
2567 AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt, have_k5crypto=yes, have_k5crypto=no)
2568 if test $have_k5crypto = yes; then
2569 CRYPTOLIB=-lk5crypto
2570 LIBS="$CRYPTOLIB $LIBS"
2571 AC_DEFINE(HAVE_LIBK5CRYPTO, 1, [Define to 1 if you have the `k5crypto' library (-lk5crypto).])
2572 fi
2573 AC_CHECK_LIB(krb5, krb5_init_context, have_krb5=yes, have_krb5=no)
2574 if test $have_krb5=yes; then
2575 KRB5LIB=-lkrb5
2576 LIBS="$KRB5LIB $LIBS"
2577 AC_DEFINE(HAVE_LIBKRB5, 1, [Define to 1 if you have the `krb5' library (-lkrb5).])
2578 fi
2579 dnl FIXME Simplify. Does not match 22 logic, thanks to default_off?
316460cf 2580 if test "${with_kerberos5}" = no; then
aded53ff
GM
2581 AC_CHECK_LIB(des425, des_cbc_encrypt, have_des425=yes, have_des425=no )
2582 if test $have_des425 = yes; then
2583 DESLIB=-ldes425
2584 LIBS="$DESLIB $LIBS"
2585 AC_DEFINE(HAVE_LIBDES425, 1, [Define to 1 if you have the `des425' library (-ldes425).])
2586 else
2587 AC_CHECK_LIB(des, des_cbc_encrypt, have_des=yes, have_des=no)
2588 if test $have_des = yes; then
2589 DESLIB=-ldes
2590 LIBS="$DESLIB $LIBS"
2591 AC_DEFINE(HAVE_LIBDES, 1, [Define to 1 if you have the `des' library (-ldes).])
2592 fi
2593 fi
2594 AC_CHECK_LIB(krb4, krb_get_cred, have_krb4=yes, have_krb4=no)
2595 if test $have_krb4 = yes; then
2596 KRB4LIB=-lkrb4
2597 LIBS="$KRB4LIB $LIBS"
2598 AC_DEFINE(HAVE_LIBKRB4, 1, [Define to 1 if you have the `krb4' library (-lkrb4).])
2599 else
2600 AC_CHECK_LIB(krb, krb_get_cred, have_krb=yes, have_krb=no)
2601 if test $have_krb = yes; then
2602 KRB4LIB=-lkrb
2603 LIBS="$KRB4LIB $LIBS"
2604 AC_DEFINE(HAVE_LIBKRB, 1, [Define to 1 if you have the `krb' library (-lkrb).])
2605 fi
2606 fi
a21616bd
KR
2607 fi
2608
316460cf 2609 if test "${with_kerberos5}" != no; then
bc26b0c0 2610 AC_CHECK_HEADERS(krb5.h,
9e0f670e
AS
2611 [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,,
2612 [#include <krb5.h>])])
a21616bd
KR
2613 else
2614 AC_CHECK_HEADERS(des.h,,
5a129faf
PE
2615 [AC_CHECK_HEADERS(kerberosIV/des.h,,
2616 [AC_CHECK_HEADERS(kerberos/des.h)])])
a21616bd 2617 AC_CHECK_HEADERS(krb.h,,
5a129faf
PE
2618 [AC_CHECK_HEADERS(kerberosIV/krb.h,,
2619 [AC_CHECK_HEADERS(kerberos/krb.h)])])
a21616bd
KR
2620 fi
2621 AC_CHECK_HEADERS(com_err.h)
2622fi
2623
aded53ff
GM
2624AC_SUBST(COM_ERRLIB)
2625AC_SUBST(CRYPTOLIB)
2626AC_SUBST(KRB5LIB)
2627AC_SUBST(DESLIB)
2628AC_SUBST(KRB4LIB)
2629
c4510052
PE
2630# Solaris requires -lintl if you want strerror (which calls dgettext)
2631# to return localized messages.
2632AC_CHECK_LIB(intl, dgettext)
2633
0c565a0a
RS
2634AC_MSG_CHECKING(whether localtime caches TZ)
2635AC_CACHE_VAL(emacs_cv_localtime_cache,
fcc303f4 2636[if test x$ac_cv_func_tzset = xyes; then
0c565a0a 2637AC_TRY_RUN([#include <time.h>
22cc077c
RS
2638extern char **environ;
2639unset_TZ ()
2640{
2641 char **from, **to;
2642 for (to = from = environ; (*to = *from); from++)
2643 if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
2644 to++;
2645}
98ab445d
RS
2646char TZ_GMT0[] = "TZ=GMT0";
2647char TZ_PST8[] = "TZ=PST8";
0c565a0a
RS
2648main()
2649{
2650 time_t now = time ((time_t *) 0);
22cc077c 2651 int hour_GMT0, hour_unset;
98ab445d 2652 if (putenv (TZ_GMT0) != 0)
0c565a0a 2653 exit (1);
22cc077c
RS
2654 hour_GMT0 = localtime (&now)->tm_hour;
2655 unset_TZ ();
2656 hour_unset = localtime (&now)->tm_hour;
98ab445d 2657 if (putenv (TZ_PST8) != 0)
0c565a0a 2658 exit (1);
22cc077c
RS
2659 if (localtime (&now)->tm_hour == hour_GMT0)
2660 exit (1);
2661 unset_TZ ();
2662 if (localtime (&now)->tm_hour != hour_unset)
2663 exit (1);
2664 exit (0);
0c565a0a
RS
2665}], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
2666[# If we have tzset, assume the worst when cross-compiling.
2667emacs_cv_localtime_cache=yes])
2668else
2669 # If we lack tzset, report that localtime does not cache TZ,
2670 # since we can't invalidate the cache if we don't have tzset.
2671 emacs_cv_localtime_cache=no
2672fi])dnl
2673AC_MSG_RESULT($emacs_cv_localtime_cache)
2674if test $emacs_cv_localtime_cache = yes; then
5e7d772d
AS
2675 AC_DEFINE(LOCALTIME_CACHE, 1,
2676 [Define to 1 if localtime caches TZ.])
0c565a0a 2677fi
9ec10b2f 2678
3d68df05 2679if test "x$HAVE_TIMEVAL" = xyes; then
8a2c2328 2680 AC_CHECK_FUNCS(gettimeofday)
5e7d772d
AS
2681 if test $ac_cv_func_gettimeofday = yes; then
2682 AC_CACHE_CHECK(whether gettimeofday can accept two arguments,
2683 emacs_cv_gettimeofday_two_arguments,
2684 [AC_TRY_COMPILE([
5ab52d42
RS
2685#ifdef TIME_WITH_SYS_TIME
2686#include <sys/time.h>
2687#include <time.h>
2688#else
2689#ifdef HAVE_SYS_TIME_H
2690#include <sys/time.h>
2691#else
2692#include <time.h>
2693#endif
290c1191 2694#endif],
5e7d772d
AS
2695 [struct timeval time;
2696 gettimeofday (&time, 0);],
2697 emacs_cv_gettimeofday_two_arguments=yes,
2698 emacs_cv_gettimeofday_two_arguments=no)])
2699 if test $emacs_cv_gettimeofday_two_arguments = no; then
2700 AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT, 1,
2701 [Define to 1 if gettimeofday accepts only one argument.])
2702 fi
fd0a060b 2703 fi
5ab52d42
RS
2704fi
2705
9ec10b2f 2706ok_so_far=yes
6e0dc84a 2707AC_CHECK_FUNC(socket, , ok_so_far=no)
9ec10b2f 2708if test $ok_so_far = yes; then
6e0dc84a 2709 AC_CHECK_HEADER(netinet/in.h, , ok_so_far=no)
9ec10b2f
DM
2710fi
2711if test $ok_so_far = yes; then
6e0dc84a 2712 AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
9ec10b2f
DM
2713fi
2714if test $ok_so_far = yes; then
91b5aa9a 2715dnl Fixme: Not used. Should this be HAVE_SOCKETS?
5e7d772d
AS
2716 AC_DEFINE(HAVE_INET_SOCKETS, 1,
2717 [Define to 1 if you have inet sockets.])
9ec10b2f
DM
2718fi
2719
ce6e4c21 2720AC_CHECK_HEADERS(sys/ioctl.h)
2ba3faa3 2721
7bbbba31 2722if test -f /usr/lpp/X11/bin/smt.exp; then
5e7d772d
AS
2723 AC_DEFINE(HAVE_AIX_SMT_EXP, 1,
2724 [Define to 1 if the file /usr/lpp/X11/bin/smt.exp exists.])
7bbbba31
DM
2725fi
2726
27b07953
GM
2727AC_MSG_CHECKING(whether system supports dynamic ptys)
2728if test -d /dev/pts && ls -d /dev/ptmx > /dev/null 2>&1 ; then
2729 AC_MSG_RESULT(yes)
5e7d772d 2730 AC_DEFINE(HAVE_DEV_PTMX, 1, [Define to 1 if dynamic ptys are supported.])
27b07953
GM
2731else
2732 AC_MSG_RESULT(no)
2733fi
2734
5a129faf 2735AC_FUNC_FORK
79e12078 2736
fb33ec52
DL
2737dnl Adapted from Haible's version.
2738AC_CACHE_CHECK([for nl_langinfo and CODESET], emacs_cv_langinfo_codeset,
2739 [AC_TRY_LINK([#include <langinfo.h>],
2740 [char* cs = nl_langinfo(CODESET);],
2741 emacs_cv_langinfo_codeset=yes,
2742 emacs_cv_langinfo_codeset=no)
2743 ])
2744if test $emacs_cv_langinfo_codeset = yes; then
2745 AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
2746 [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
2747fi
2748
f3acf5be 2749AC_CHECK_TYPES(size_t)
8170f46b 2750
12c0a8da
DL
2751AC_TYPE_MBSTATE_T
2752
91b5aa9a
DL
2753dnl Restrict could probably be used effectively other than in regex.c.
2754AC_CACHE_CHECK([for C restrict keyword], emacs_cv_c_restrict,
2755 [AC_TRY_COMPILE([void fred (int *restrict x);], [],
2756 emacs_cv_c_restrict=yes,
2757 [AC_TRY_COMPILE([void fred (int *__restrict x);], [],
2758 emacs_cv_c_restrict=__restrict,
2759 emacs_cv_c_restrict=no)])])
2760case "$emacs_cv_c_restrict" in
2761 yes) emacs_restrict=restrict;;
2762 no) emacs_restrict="";;
2763 *) emacs_restrict="$emacs_cv_c_restrict";;
2764esac
2765if test "$emacs_restrict" != __restrict; then
2766 AC_DEFINE_UNQUOTED(__restrict, $emacs_restrict,
2767 [Define to compiler's equivalent of C99 restrict keyword.
2768 Don't define if equivalent is `__restrict'.])
2769fi
2770
2771AC_CACHE_CHECK([for C restricted array declarations], emacs_cv_c_restrict_arr,
2772 [AC_TRY_COMPILE([void fred (int x[__restrict]);], [],
2773 emacs_cv_c_restrict_arr=yes, emacs_cv_c_restrict_arr=no)])
2774if test "$emacs_cv_c_restrict_arr" = yes; then
2775 AC_DEFINE(__restrict_arr, __restrict,
2776 [Define to compiler's equivalent of C99 restrict keyword in array
2777 declarations. Define as empty for no equivalent.])
2778fi
2779
2780dnl Fixme: AC_SYS_POSIX_TERMIOS should probably be used, but it's not clear
2781dnl how the tty code is related to POSIX and/or other versions of termios.
4b121527
DL
2782dnl The following looks like a useful start.
2783dnl
2784dnl AC_SYS_POSIX_TERMIOS
2785dnl if test $ac_cv_sys_posix_termios = yes; then
f6214bb7 2786dnl AC_DEFINE(HAVE_TERMIOS, 1, [Define to 1 if you have POSIX-style functions
4b121527
DL
2787dnl and macros for terminal control.])
2788dnl AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.])
2789dnl fi
91b5aa9a
DL
2790
2791dnl Fixme: Use AC_FUNC_MEMCMP since memcmp is used. (Needs libobj replacement.)
2792
9ec10b2f
DM
2793# Set up the CFLAGS for real compilation, so we can substitute it.
2794CFLAGS="$REAL_CFLAGS"
5a9bf171 2795CPPFLAGS="$REAL_CPPFLAGS"
9ec10b2f 2796
9ec10b2f 2797#### Find out which version of Emacs this is.
91b5aa9a
DL
2798[version=`grep 'defconst[ ]*emacs-version' ${srcdir}/lisp/version.el \
2799 | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'`]
9ec10b2f 2800if test x"${version}" = x; then
91b5aa9a 2801 AC_MSG_ERROR([can't find current emacs version in `${srcdir}/lisp/version.el'.])
9ec10b2f 2802fi
879de935
KR
2803if test x"${version}" != x"$PACKAGE_VERSION"; then
2804 AC_MSG_WARN([version mismatch between `${srcdir}/configure.in' and `${srcdir}/lisp/version.el'.])
2805fi
9ec10b2f 2806
9ec10b2f
DM
2807### Specify what sort of things we'll be editing into Makefile and config.h.
2808### Use configuration here uncanonicalized to avoid exceeding size limits.
2809AC_SUBST(version)
2810AC_SUBST(configuration)
3cd69289 2811AC_SUBST(canonical)
9ec10b2f
DM
2812AC_SUBST(srcdir)
2813AC_SUBST(prefix)
2814AC_SUBST(exec_prefix)
2815AC_SUBST(bindir)
2816AC_SUBST(datadir)
3cd69289
DM
2817AC_SUBST(sharedstatedir)
2818AC_SUBST(libexecdir)
9ec10b2f
DM
2819AC_SUBST(mandir)
2820AC_SUBST(infodir)
2821AC_SUBST(lispdir)
2822AC_SUBST(locallisppath)
2823AC_SUBST(lisppath)
66d736a9 2824AC_SUBST(x_default_search_path)
9ec10b2f 2825AC_SUBST(etcdir)
9ec10b2f
DM
2826AC_SUBST(archlibdir)
2827AC_SUBST(docdir)
3cd69289 2828AC_SUBST(bitmapdir)
93c05c18
CW
2829AC_SUBST(gamedir)
2830AC_SUBST(gameuser)
aaa36002 2831AC_SUBST(unexec)
9ec10b2f 2832AC_SUBST(LD_SWITCH_X_SITE)
9ec10b2f 2833AC_SUBST(C_SWITCH_X_SITE)
ed6281b0 2834AC_SUBST(C_SWITCH_X_SYSTEM)
9ec10b2f 2835AC_SUBST(CFLAGS)
986fb647 2836## Used in lwlib/Makefile.in.
9ec10b2f
DM
2837AC_SUBST(X_TOOLKIT_TYPE)
2838AC_SUBST(machfile)
2839AC_SUBST(opsysfile)
1ca2077a 2840AC_SUBST(GETLOADAVG_LIBS)
edfda783 2841AC_SUBST(ns_appdir)
06b62770
AR
2842AC_SUBST(ns_appbindir)
2843AC_SUBST(ns_appresdir)
2844AC_SUBST(ns_appsrc)
facfbbbd 2845AC_SUBST(GNUSTEP_MAKEFILES)
6c39fc02
CY
2846AC_SUBST(GNUSTEP_SYSTEM_HEADERS)
2847AC_SUBST(GNUSTEP_SYSTEM_LIBRARIES)
48fad8e8
DN
2848AC_SUBST(GNU_OBJC_CFLAGS)
2849AC_SUBST(LIB_SRC_EXTRA_INSTALLABLES)
005bd5a2 2850AC_SUBST(OTHER_FILES)
9ec10b2f 2851
5e7d772d
AS
2852AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "${canonical}",
2853 [Define to the canonical Emacs configuration name.])
2854AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${ac_configure_args}",
2855 [Define to the options passed to configure.])
2856AC_DEFINE_UNQUOTED(config_machfile, "${machfile}",
2857 [Define to the used machine dependent file.])
2858AC_DEFINE_UNQUOTED(config_opsysfile, "${opsysfile}",
2859 [Define to the used os dependent file.])
2860AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE, ${LD_SWITCH_X_SITE},
2861[Define LD_SWITCH_X_SITE to contain any special flags your loader
2862 may need to deal with X Windows. For instance, if you've defined
2863 HAVE_X_WINDOWS above and your X libraries aren't in a place that
2864 your loader can find on its own, you might want to add "-L/..." or
2865 something similar.])
5e7d772d
AS
2866AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE, ${C_SWITCH_X_SITE},
2867[Define C_SWITCH_X_SITE to contain any special flags your compiler
2868 may need to deal with X Windows. For instance, if you've defined
2869 HAVE_X_WINDOWS above and your X include files aren't in a place
2870 that your compiler can find on its own, you might want to add
2871 "-I/..." or something similar.])
9ec10b2f 2872
10efe302
GM
2873XMENU_OBJ=
2874XOBJ=
9ec10b2f 2875if test "${HAVE_X_WINDOWS}" = "yes" ; then
5e7d772d
AS
2876 AC_DEFINE(HAVE_X_WINDOWS, 1,
2877 [Define to 1 if you want to use the X window system.])
10efe302
GM
2878 XMENU_OBJ=xmenu.o
2879 XOBJ="xterm.o xfns.o xselect.o xrdb.o fontset.o xsmfns.o fringe.o image.o xsettings.o xgselect.o"
9ec10b2f 2880fi
10efe302
GM
2881AC_SUBST(XMENU_OBJ)
2882AC_SUBST(XOBJ)
2883
b678dd8b 2884WIDGET_OBJ=
c6ea2936 2885MOTIF_LIBW=
9ec10b2f 2886if test "${USE_X_TOOLKIT}" != "none" ; then
b678dd8b 2887 WIDGET_OBJ=widget.o
5e7d772d 2888 AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
d893468a 2889 if test "${USE_X_TOOLKIT}" = "LUCID"; then
73d798d5 2890 AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
d893468a 2891 elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
73d798d5 2892 AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
c6ea2936
GM
2893 MOTIF_LIBW=-lXm
2894 case "$opsys" in
2895 gnu-linux)
2896 ## Paul Abrahams <abrahams at equinox.shaysnet.com> says this is needed.
2897 MOTIF_LIBW="$MOTIF_LIBW -lXpm"
2898 ;;
2899
2900 unixware)
2901 ## Richard Anthony Ryan <ryanr at ellingtn.ftc.nrcs.usda.gov>
2902 ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2.
2903 MOTIF_LIBW="MOTIF_LIBW -lXimp"
2904 ;;
2905
2906 aix4-2)
2907 ## olson@mcs.anl.gov says -li18n is needed by -lXm.
2908 MOTIF_LIBW="$MOTIF_LIBW -li18n"
2909 ;;
2910 esac
2911 MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
73d798d5 2912 fi
9ec10b2f 2913fi
b678dd8b 2914AC_SUBST(WIDGET_OBJ)
986fb647 2915
d5096f16 2916TOOLKIT_LIBW=
986fb647
GM
2917case "$USE_X_TOOLKIT" in
2918 MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
2919 LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
d5096f16 2920 none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
986fb647
GM
2921esac
2922AC_SUBST(TOOLKIT_LIBW)
2923
3dee6fdb
GM
2924if test "$USE_X_TOOLKIT" = "none"; then
2925 LIBXT_OTHER="\$(LIBXSM)"
2926else
2927 LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
2928fi
2929AC_SUBST(LIBXT_OTHER)
2930
d5096f16
GM
2931## The X Menu stuff is present in the X10 distribution, but missing
2932## from X11. If we have X10, just use the installed library;
2933## otherwise, use our own copy.
9ec10b2f 2934if test "${HAVE_X11}" = "yes" ; then
5e7d772d
AS
2935 AC_DEFINE(HAVE_X11, 1,
2936 [Define to 1 if you want to use version 11 of X windows.
2937 Otherwise, Emacs expects to use version 10.])
d5096f16
GM
2938
2939 if test "$USE_X_TOOLKIT" = "none"; then
2940 OLDXMENU="\${oldXMenudir}libXMenu11.a"
2941 else
2942 OLDXMENU="\${lwlibdir}liblw.a"
2943 fi
2944 LIBXMENU="\$(OLDXMENU)"
3dee6fdb 2945 LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
d5096f16
GM
2946else
2947 OLDXMENU=
2948 LIBXMENU="-lXMenu"
3dee6fdb 2949 LIBX_OTHER=
9ec10b2f 2950fi
d5096f16
GM
2951
2952if test "$HAVE_GTK" = "yes"; then
2953 OLDXMENU=
2954 LIBXMENU=
2955fi
2956
2957AC_SUBST(OLDXMENU)
2958AC_SUBST(LIBXMENU)
3dee6fdb 2959AC_SUBST(LIBX_OTHER)
d5096f16 2960
08741ba9 2961if test "${HAVE_MENUS}" = "yes" ; then
5e7d772d
AS
2962 AC_DEFINE(HAVE_MENUS, 1,
2963 [Define to 1 if you have mouse menus.
2964 (This is automatic if you use X, but the option to specify it remains.)
2965 It is also defined with other window systems that support xmenu.c.])
9ec10b2f
DM
2966fi
2967if test "${GNU_MALLOC}" = "yes" ; then
5e7d772d
AS
2968 AC_DEFINE(GNU_MALLOC, 1,
2969 [Define to 1 if you want to use the GNU memory allocator.])
9ec10b2f
DM
2970fi
2971if test "${REL_ALLOC}" = "yes" ; then
5e7d772d
AS
2972 AC_DEFINE(REL_ALLOC, 1,
2973 [Define REL_ALLOC if you want to use the relocating allocator for
2974 buffer space.])
9ec10b2f 2975fi
9ec10b2f 2976
7eb1ac33 2977
7eb1ac33
GM
2978if test "$opsys" = "cygwin"; then
2979 CYGWIN_OBJ="sheap.o"
2980 ## Cygwin differs because of its unexec().
7acac9f4
GM
2981 PRE_ALLOC_OBJ=
2982 POST_ALLOC_OBJ="lastfile.o vm-limit.o"
7eb1ac33 2983else
d5096f16 2984 CYGWIN_OBJ=
7acac9f4
GM
2985 PRE_ALLOC_OBJ=lastfile.o
2986 POST_ALLOC_OBJ="\$(vmlimitobj)"
7eb1ac33 2987fi
c40f9449 2988AC_SUBST(CYGWIN_OBJ)
7acac9f4
GM
2989AC_SUBST(PRE_ALLOC_OBJ)
2990AC_SUBST(POST_ALLOC_OBJ)
bfa6fb7e 2991
eb21eab5
GM
2992
2993case "$opsys" in
2994 aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
2995
2996 darwin)
2997 ## The -headerpad option tells ld (see man page) to leave room at the
2998 ## end of the header for adding load commands. Needed for dumping.
2999 ## 0x690 is the total size of 30 segment load commands (at 56
3000 ## each); under Cocoa 31 commands are required.
3001 if test "$HAVE_NS" = "yes"; then
3002 libs_nsgui="-framework AppKit"
3003 headerpad_extra=6C8
3004 else
3005 libs_nsgui=
3006 headerpad_extra=690
3007 fi
3008 LD_SWITCH_SYSTEM_TEMACS="-prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
3009 ;;
3010
3011 *) LD_SWITCH_SYSTEM_TEMACS= ;;
3012esac
3013AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
3014
3015
f3acf5be 3016AH_TOP([/* GNU Emacs site configuration template file.
57ebf0be 3017 Copyright (C) 1988, 1993, 1994, 1999, 2000, 2001, 2002, 2004, 2005,
114f9c96 3018 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
5e7d772d
AS
3019
3020This file is part of GNU Emacs.
3021
41f8d6db 3022GNU Emacs is free software: you can redistribute it and/or modify
5e7d772d 3023it under the terms of the GNU General Public License as published by
41f8d6db
GM
3024the Free Software Foundation, either version 3 of the License, or
3025(at your option) any later version.
5e7d772d
AS
3026
3027GNU Emacs is distributed in the hope that it will be useful,
3028but WITHOUT ANY WARRANTY; without even the implied warranty of
3029MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3030GNU General Public License for more details.
3031
3032You should have received a copy of the GNU General Public License
41f8d6db 3033along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
5e7d772d
AS
3034
3035
91b5aa9a 3036/* No code in Emacs #includes config.h twice, but some bits of code
177c0ea7 3037 intended to work with other packages as well (like gmalloc.c)
5e7d772d
AS
3038 think they can include it as many times as they like. */
3039#ifndef EMACS_CONFIG_H
3040#define EMACS_CONFIG_H
3041])dnl
3042
3043AH_BOTTOM([
edfda783 3044/* If we're using X11/Carbon/GNUstep, define some consequences. */
9e2a2647 3045#if defined(HAVE_X_WINDOWS) || defined(HAVE_NS)
5e7d772d 3046#define HAVE_WINDOW_SYSTEM
5e7d772d
AS
3047#define HAVE_MOUSE
3048#endif
3049
5e7d772d
AS
3050/* Define AMPERSAND_FULL_NAME if you use the convention
3051 that & in the full name stands for the login id. */
3052/* Turned on June 1996 supposing nobody will mind it. */
3053#define AMPERSAND_FULL_NAME
3054
3055/* Define HAVE_SOUND if we have sound support. We know it works
3056 and compiles only on the specified platforms. For others,
3057 it probably doesn't make sense to try. */
3058
3059#if defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
3060#ifdef HAVE_MACHINE_SOUNDCARD_H
3061#define HAVE_SOUND 1
3062#endif
3063#ifdef HAVE_SYS_SOUNDCARD_H
3064#define HAVE_SOUND 1
3065#endif
3066#ifdef HAVE_SOUNDCARD_H
3067#define HAVE_SOUND 1
3068#endif
2eec8691
JD
3069#ifdef HAVE_ALSA
3070#define HAVE_SOUND 1
3071#endif
5e7d772d
AS
3072#endif /* __FreeBSD__ || __NetBSD__ || __linux__ */
3073
3074/* If using GNU, then support inline function declarations. */
3075/* Don't try to switch on inline handling as detected by AC_C_INLINE
3076 generally, because even if non-gcc compilers accept `inline', they
3077 may reject `extern inline'. */
be5472bd 3078#if defined (__GNUC__) && defined (OPTIMIZE)
5e7d772d
AS
3079#define INLINE __inline__
3080#else
3081#define INLINE
3082#endif
3083
67931678
EZ
3084/* `subprocesses' should be defined if you want to
3085 have code for asynchronous subprocesses
3086 (as used in M-x compile and M-x shell).
3087 Only MSDOS does not support this (it overrides
3088 this in its config_opsysfile below). */
3089
3090#define subprocesses
3091
5e7d772d
AS
3092/* Include the os and machine dependent files. */
3093#include config_opsysfile
3094#include config_machfile
3095
edfda783
AR
3096/* Set up some defines, C and LD flags for NeXTstep interface on GNUstep.
3097 (There is probably a better place to do this, but right now the Cocoa
9e2a2647 3098 side does this in s/darwin.h and we cannot
edfda783
AR
3099 parallel this exactly since GNUstep is multi-OS. */
3100#ifdef HAVE_NS
edfda783 3101# ifdef NS_IMPL_GNUSTEP
3dcdb6ea 3102/* GNUstep needs a bit more pure memory. Of the existing knobs,
c5e2611e
DN
3103SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems. */
3104# define SYSTEM_PURESIZE_EXTRA 30000
48fad8e8 3105# endif /* NS_IMPL_GNUSTEP */
edfda783
AR
3106#endif /* HAVE_NS */
3107
5e7d772d
AS
3108/* SIGTYPE is the macro we actually use. */
3109#ifndef SIGTYPE
3110#define SIGTYPE RETSIGTYPE
3111#endif
3112
3113#ifdef emacs /* Don't do this for lib-src. */
3114/* Tell regex.c to use a type compatible with Emacs. */
3115#define RE_TRANSLATE_TYPE Lisp_Object
3116#define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
be5472bd
SM
3117#ifdef make_number
3118/* If make_number is a macro, use it. */
3119#define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0)))
3120#else
3121/* If make_number is a function, avoid it. */
3122#define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0))
3123#endif
5e7d772d
AS
3124#endif
3125
3126/* Avoid link-time collision with system mktime if we will use our own. */
3127#if ! HAVE_MKTIME || BROKEN_MKTIME
3128#define mktime emacs_mktime
3129#endif
3130
1c3a8acf
DL
3131#define my_strftime nstrftime /* for strftime.c */
3132
5e7d772d
AS
3133/* The rest of the code currently tests the CPP symbol BSTRING.
3134 Override any claims made by the system-description files.
3135 Note that on some SCO version it is possible to have bcopy and not bcmp. */
3136#undef BSTRING
3137#if defined (HAVE_BCOPY) && defined (HAVE_BCMP)
3138#define BSTRING
3139#endif
3140
3141/* Some of the files of Emacs which are intended for use with other
3142 programs assume that if you have a config.h file, you must declare
3143 the type of getenv.
3144
3145 This declaration shouldn't appear when alloca.s or Makefile.in
3146 includes config.h. */
3147#ifndef NOT_C_CODE
3148extern char *getenv ();
3149#endif
3150
5e7d772d
AS
3151/* These default definitions are good for almost all machines.
3152 The exceptions override them in m/MACHINE.h. */
3153
3154#ifndef BITS_PER_CHAR
3155#define BITS_PER_CHAR 8
3156#endif
3157
3158#ifndef BITS_PER_SHORT
3159#define BITS_PER_SHORT 16
3160#endif
3161
3162/* Note that lisp.h uses this in a preprocessor conditional, so it
3163 would not work to use sizeof. That being so, we do all of them
3164 without sizeof, for uniformity's sake. */
3165#ifndef BITS_PER_INT
3166#define BITS_PER_INT 32
3167#endif
3168
3169#ifndef BITS_PER_LONG
3170#ifdef _LP64
3171#define BITS_PER_LONG 64
3172#else
3173#define BITS_PER_LONG 32
3174#endif
3175#endif
3176
3177/* Define if the compiler supports function prototypes. It may do so
3178 but not define __STDC__ (e.g. DEC C by default) or may define it as
3179 zero. */
3180#undef PROTOTYPES
3181/* For mktime.c: */
3182#ifndef __P
3183# if defined PROTOTYPES
3184# define __P(args) args
3185# else
3186# define __P(args) ()
3187# endif /* GCC. */
3188#endif /* __P */
3189
5e7d772d
AS
3190/* Don't include "string.h" or <stdlib.h> in non-C code. */
3191#ifndef NOT_C_CODE
3192#ifdef HAVE_STRING_H
3193#include "string.h"
3194#endif
f3acf5be
DL
3195#ifdef HAVE_STRINGS_H
3196#include "strings.h" /* May be needed for bcopy & al. */
3197#endif
5e7d772d
AS
3198#ifdef HAVE_STDLIB_H
3199#include <stdlib.h>
3200#endif
91b5aa9a
DL
3201#ifndef __GNUC__
3202# ifdef HAVE_ALLOCA_H
3203# include <alloca.h>
3204# else /* AIX files deal with #pragma. */
3205# ifndef alloca /* predefined by HP cc +Olibcalls */
3206char *alloca ();
3207# endif
3208# endif /* HAVE_ALLOCA_H */
3209#endif /* __GNUC__ */
17b3d9f6 3210#ifndef HAVE_SIZE_T
f968418d 3211typedef unsigned size_t;
17b3d9f6 3212#endif
91b5aa9a 3213#endif /* NOT_C_CODE */
5e7d772d
AS
3214
3215/* Define HAVE_X_I18N if we have usable i18n support. */
3216
3217#ifdef HAVE_X11R6
3218#define HAVE_X_I18N
e818a450 3219#elif !defined X11R5_INHIBIT_I18N
5e7d772d
AS
3220#define HAVE_X_I18N
3221#endif
3222
3223/* Define HAVE_X11R6_XIM if we have usable X11R6-style XIM support. */
3224
3225#if defined HAVE_X11R6 && !defined INHIBIT_X11R6_XIM
3226#define HAVE_X11R6_XIM
3227#endif
3228
5e7d772d
AS
3229#if defined __GNUC__ && (__GNUC__ > 2 \
3230 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5))
3231#define NO_RETURN __attribute__ ((__noreturn__))
3232#else
3233#define NO_RETURN /* nothing */
3234#endif
f3acf5be 3235
91b5aa9a
DL
3236/* These won't be used automatically yet. We also need to know, at least,
3237 that the stack is continuous. */
3238#ifdef __GNUC__
3239# ifndef GC_SETJMP_WORKS
3240 /* GC_SETJMP_WORKS is nearly always appropriate for GCC --
177c0ea7 3241 see NON_SAVING_SETJMP in the target descriptions. */
f3041af1 3242 /* Exceptions (see NON_SAVING_SETJMP in target description) are
91b5aa9a 3243 SCO5 non-ELF (but Emacs specifies ELF) and SVR3 on x86.
f3041af1 3244 Fixme: Deal with SVR3. */
91b5aa9a
DL
3245# define GC_SETJMP_WORKS 1
3246# endif
3247# ifndef GC_LISP_OBJECT_ALIGNMENT
3248# define GC_LISP_OBJECT_ALIGNMENT (__alignof__ (Lisp_Object))
3249# endif
3250#endif
3251
efd60266
JB
3252#ifndef HAVE_BCOPY
3253#define bcopy(a,b,s) memcpy (b,a,s)
3254#endif
3255#ifndef HAVE_BZERO
3256#define bzero(a,s) memset (a,0,s)
3257#endif
3258#ifndef HAVE_BCMP
3259#define BCMP memcmp
3260#endif
91b5aa9a
DL
3261
3262#endif /* EMACS_CONFIG_H */
3263
177c0ea7 3264/*
91b5aa9a 3265Local Variables:
f3acf5be
DL
3266mode: c
3267End:
3268*/
5e7d772d 3269])dnl
f0f2756d 3270
9ec10b2f 3271#### Report on what we decided to do.
488dd4c4
JD
3272#### Report GTK as a toolkit, even if it doesn't use Xt.
3273#### It makes printing result more understandable as using GTK sets
3274#### toolkit_scroll_bars to yes by default.
3275if test "${HAVE_GTK}" = "yes"; then
3276 USE_X_TOOLKIT=GTK
3277fi
3278
9ec10b2f 3279echo "
9ec10b2f
DM
3280Configured for \`${canonical}'.
3281
3282 Where should the build process find the source code? ${srcdir}
3283 What operating system and machine description files should Emacs use?
3284 \`${opsysfile}' and \`${machfile}'
3285 What compiler should emacs be built with? ${CC} ${CFLAGS}
3286 Should Emacs use the GNU version of malloc? ${GNU_MALLOC}${GNU_MALLOC_reason}
b1b4ce06 3287 Should Emacs use a relocating allocator for buffers? ${REL_ALLOC}
e32fac2a 3288 Should Emacs use mmap(2) for buffer allocation? $use_mmap_for_buffers
9ec10b2f 3289 What window system should Emacs use? ${window_system}
dc16594b 3290 What toolkit should Emacs use? ${USE_X_TOOLKIT}"
509fccc3
RS
3291
3292if test -n "${x_includes}"; then
3293echo " Where do we find X Windows header files? ${x_includes}"
3294else
3295echo " Where do we find X Windows header files? Standard dirs"
3296fi
3297if test -n "${x_libraries}"; then
3298echo " Where do we find X Windows libraries? ${x_libraries}"
3299else
3300echo " Where do we find X Windows libraries? Standard dirs"
3301fi
9ec10b2f 3302
b412189c
GM
3303echo " Does Emacs use -lXaw3d? ${HAVE_XAW3D}"
3304echo " Does Emacs use -lXpm? ${HAVE_XPM}"
3305echo " Does Emacs use -ljpeg? ${HAVE_JPEG}"
495ccc04 3306echo " Does Emacs use -ltiff? ${HAVE_TIFF}"
aded53ff 3307echo " Does Emacs use a gif library? ${HAVE_GIF} $LIBGIF"
b412189c 3308echo " Does Emacs use -lpng? ${HAVE_PNG}"
96f574f0 3309echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}"
79011b82 3310echo " Does Emacs use -lgpm? ${HAVE_GPM}"
bf9a7ece 3311echo " Does Emacs use -ldbus? ${HAVE_DBUS}"
637fa988 3312echo " Does Emacs use -lgconf? ${HAVE_GCONF}"
574c05e2 3313echo " Does Emacs use -lselinux? ${HAVE_LIBSELINUX}"
d41e8664 3314
26d41f17
GM
3315echo " Does Emacs use -lfreetype? ${HAVE_FREETYPE}"
3316echo " Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}"
3317echo " Does Emacs use -lotf? ${HAVE_LIBOTF}"
3318echo " Does Emacs use -lxft? ${HAVE_XFT}"
3319
8d87199b 3320echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
509fccc3 3321echo
9ec10b2f 3322
d0098f13
JD
3323if test $USE_XASSERTS = yes; then
3324 echo " Compiling with asserts turned on."
d0098f13 3325 CPPFLAGS="$CPPFLAGS -DXASSERTS=1"
d0098f13 3326fi
05cf15c6 3327
ca34d75a
JD
3328echo
3329
06b62770
AR
3330if test "$HAVE_NS" = "yes"; then
3331 echo
3332 echo "You must run \"make install\" in order to test the built application.
3333The installed application will go to nextstep/Emacs.app and can be
3334run or moved from there."
3335 if test "$EN_NS_SELF_CONTAINED" = "yes"; then
3336 echo "The application will be fully self-contained."
3337 else
3338 echo "The lisp resources for the application will be installed under ${prefix}.
3339You may need to run \"make install\" with sudo. The application will fail
3340to run if these resources are not installed."
3341 fi
3342 echo
3343fi
3344
131e4133
MA
3345if test "$HAVE_DBUS" = yes && test "${opsys}" != "gnu-linux"; then
3346 echo "D-Bus integration has been tested for GNU/Linux only."
3347 echo
3348fi
f0e04acc 3349
05cf15c6 3350
9ec10b2f 3351# Remove any trailing slashes in these variables.
91b5aa9a 3352[test "${prefix}" != NONE &&
9ec10b2f
DM
3353 prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
3354test "${exec_prefix}" != NONE &&
91b5aa9a 3355 exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
9ec10b2f 3356
3d4c9dbd
GM
3357# Now get this: Some word that is part of the ${srcdir} directory name
3358# or the ${configuration} value might, just might, happen to be an
3359# identifier like `sun4' or `i386' or something, and be predefined by
3360# the C preprocessor to some helpful value like 1, or maybe the empty
3361# string. Needless to say consequent macro substitutions are less
3362# than conducive to the makefile finding the correct directory.
567c757d 3363[cpp_undefs="`echo $srcdir $configuration $canonical unix |
3d4c9dbd
GM
3364 sed -e 's/[^a-zA-Z0-9_]/ /g' -e 's/^/ /' -e 's/ *$//' \
3365 -e 's/ */ -U/g' -e 's/-U[0-9][^ ]*//g'`"]
3366
3aa40e0e
GM
3367## Check if the C preprocessor will convert `..' to `. .'. If so, set
3368## CPP_NEED_TRADITIONAL to `yes' so that the code to generate Makefile
3369## from Makefile.c can correctly provide the arg `-traditional' to the
3370## C preprocessor.
3371
3372AC_EGREP_CPP(yes..yes,
3373 [yes..yes],
3374 CPP_NEED_TRADITIONAL=no,
3375 CPP_NEED_TRADITIONAL=yes)
3376
5f8c8f00 3377AC_OUTPUT(Makefile lib-src/Makefile.c:lib-src/Makefile.in oldXMenu/Makefile \
62b1c28f
GM
3378 doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
3379 doc/lispref/Makefile src/Makefile.c:src/Makefile.in \
3380 lwlib/Makefile lisp/Makefile leim/Makefile, [
7bbbba31 3381
b63df577 3382### Make the necessary directories, if they don't exist.
e0a3686b 3383for dir in etc lisp ; do
b3947967 3384 test -d ${dir} || mkdir ${dir}
9ec10b2f
DM
3385done
3386
5f8c8f00
RS
3387# Build src/Makefile from ${srcdir}/src/Makefile.c
3388# and lib-src/Makefile from ${srcdir}/lib-src/Makefile.c
3389# This must be done after src/config.h is built, since we rely on that file.
9ec10b2f 3390
6a4bb05d 3391echo creating src/epaths.h
f8f7ab54 3392${MAKE-make} epaths-force
ab85d355 3393
c776f30b
GM
3394# As of 2000-11-19, newest development versions of GNU cpp preprocess
3395# `..' to `. .' unless invoked with -traditional
3396
3aa40e0e 3397if test "x$GCC" = xyes && test "x$CPP_NEED_TRADITIONAL" = xyes; then
c776f30b
GM
3398 CPPFLAGS="$CPPFLAGS -traditional"
3399fi
3400
9ec10b2f
DM
3401echo creating lib-src/Makefile
3402( cd lib-src
3403 rm -f junk.c junk1.c junk2.c
3404 sed -e '/start of cpp stuff/q' \
5f8c8f00 3405 < Makefile.c > junk1.c
9ec10b2f 3406 sed -e '1,/start of cpp stuff/d'\
3b74127d 3407 -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
5f8c8f00 3408 < Makefile.c > junk.c
91231421 3409 $CPP -P $cpp_undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
9ec10b2f
DM
3410 sed -e 's/^ / /' -e '/^#/d' -e '/^[ \f]*$/d' > junk2.c
3411 cat junk1.c junk2.c > Makefile.new
3412 rm -f junk.c junk1.c junk2.c
3413 chmod 444 Makefile.new
3414 mv -f Makefile.new Makefile
3415)
3416
3417echo creating src/Makefile
3418( cd src
3419 rm -f junk.c junk1.c junk2.c
3420 sed -e '/start of cpp stuff/q' \
5f8c8f00 3421 < Makefile.c > junk1.c
9ec10b2f 3422 sed -e '1,/start of cpp stuff/d'\
3b74127d 3423 -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
5f8c8f00 3424 < Makefile.c > junk.c
91231421 3425 $CPP -P $cpp_undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
9ec10b2f
DM
3426 sed -e 's/^ / /' -e '/^#/d' -e '/^[ \f]*$/d' > junk2.c
3427 cat junk1.c junk2.c > Makefile.new
3428 rm -f junk.c junk1.c junk2.c
3429 chmod 444 Makefile.new
3430 mv -f Makefile.new Makefile
3431)
8b66759a 3432
bf3126f6 3433if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
8b66759a 3434 echo creating src/.gdbinit
e9b2a022 3435 echo source $srcdir/src/.gdbinit > src/.gdbinit
8b66759a
DM
3436fi
3437
3d4c9dbd 3438], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPP_NEED_TRADITIONAL="$CPP_NEED_TRADITIONAL" CPPFLAGS="$CPPFLAGS" cpp_undefs="$cpp_undefs"])
464c7d2d 3439
ab5796a9
MB
3440m4_if(dnl Do not change this comment
3441 arch-tag: 156a4dd5-bddc-4d18-96ac-f37742cf6a5e
3442)dnl