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