(Scan Line Formats): Keep first column empty also for the cursor.
[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.])
9e53b62e
KH
1894 AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
1895 HAVE_OTF_GET_VARIATION_GLYPHS=yes,
1896 HAVE_OTF_GET_VARIATION_GLYPHS=no)
1897 if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
1898 AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1,
1899 [Define to 1 if libotf has OTF_get_variation_glyphs.])
1900 fi
0666b4f1 1901 fi
1ef37fa8 1902 fi
46bb649d
GM
1903dnl FIXME should there be an error if HAVE_FREETYPE != yes?
1904dnl Does the new font backend require it, or can it work without it?
1ef37fa8
KH
1905fi
1906
1907HAVE_M17N_FLT=no
6b0262c1
AS
1908if test "${HAVE_LIBOTF}" = yes; then
1909 if test "${with_m17n_flt}" != "no"; then
1910 PKG_CHECK_MODULES(M17N_FLT, m17n-flt, HAVE_M17N_FLT=yes, HAVE_M17N_FLT=no)
1911 if test "$HAVE_M17N_FLT" = "yes"; then
1912 AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
1913 fi
0666b4f1 1914 fi
1ef37fa8
KH
1915fi
1916
1917AC_SUBST(FREETYPE_CFLAGS)
1918AC_SUBST(FREETYPE_LIBS)
1919AC_SUBST(FONTCONFIG_CFLAGS)
1920AC_SUBST(FONTCONFIG_LIBS)
1921AC_SUBST(LIBOTF_CFLAGS)
1922AC_SUBST(LIBOTF_LIBS)
1923AC_SUBST(M17N_FLT_CFLAGS)
1924AC_SUBST(M17N_FLT_LIBS)
1925
46bb649d 1926### End of font-backend section.
0666b4f1 1927
620fdfdf
RS
1928### Use -lXpm if available, unless `--with-xpm=no'.
1929HAVE_XPM=no
1930if test "${HAVE_X11}" = "yes"; then
1931 if test "${with_xpm}" != "no"; then
620fdfdf 1932 AC_CHECK_HEADER(X11/xpm.h,
28aa2c3e 1933 [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
7960d0bd 1934 if test "${HAVE_XPM}" = "yes"; then
29c1b68e
GM
1935 AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
1936 AC_EGREP_CPP(no_return_alloc_pixels,
1937 [#include "X11/xpm.h"
7960d0bd
GM
1938#ifndef XpmReturnAllocPixels
1939no_return_alloc_pixels
1940#endif
29c1b68e
GM
1941 ], HAVE_XPM=no, HAVE_XPM=yes)
1942
1943 if test "${HAVE_XPM}" = "yes"; then
1944 AC_MSG_RESULT(yes)
1945 else
1946 AC_MSG_RESULT(no)
1947 fi
1890c0c4 1948 fi
620fdfdf
RS
1949 fi
1950
1951 if test "${HAVE_XPM}" = "yes"; then
5e7d772d 1952 AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm libary (-lXpm).])
620fdfdf
RS
1953 fi
1954fi
177c0ea7 1955
620fdfdf
RS
1956### Use -ljpeg if available, unless `--with-jpeg=no'.
1957HAVE_JPEG=no
1958if test "${HAVE_X11}" = "yes"; then
1959 if test "${with_jpeg}" != "no"; then
71cc40d5 1960 dnl Checking for jpeglib.h can lose because of a redefinition of
3cc9d384
DL
1961 dnl HAVE_STDLIB_H.
1962 AC_CHECK_HEADER(jerror.h,
28aa2c3e 1963 [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
620fdfdf
RS
1964 fi
1965
5e7d772d 1966 AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
620fdfdf
RS
1967 if test "${HAVE_JPEG}" = "yes"; then
1968 AC_DEFINE(HAVE_JPEG)
91b5aa9a 1969 AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
a0dd4fa6 1970 [#include <jpeglib.h>
4d766b59 1971 version=JPEG_LIB_VERSION
177c0ea7 1972],
28aa2c3e 1973 [AC_DEFINE(HAVE_JPEG)],
4d766b59
RS
1974 [AC_MSG_WARN([libjpeg found, but not version 6b or later])
1975 HAVE_JPEG=no])
620fdfdf
RS
1976 fi
1977fi
177c0ea7 1978
620fdfdf
RS
1979### Use -lpng if available, unless `--with-png=no'.
1980HAVE_PNG=no
1981if test "${HAVE_X11}" = "yes"; then
1982 if test "${with_png}" != "no"; then
8cfdf2ca
DL
1983 # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
1984 # in /usr/include/libpng.
1985 AC_CHECK_HEADERS(png.h libpng/png.h)
1986 if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
1987 AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm)
1988 fi
620fdfdf
RS
1989 fi
1990
1991 if test "${HAVE_PNG}" = "yes"; then
5e7d772d 1992 AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
620fdfdf
RS
1993 fi
1994fi
177c0ea7 1995
620fdfdf
RS
1996### Use -ltiff if available, unless `--with-tiff=no'.
1997HAVE_TIFF=no
1998if test "${HAVE_X11}" = "yes"; then
1999 if test "${with_tiff}" != "no"; then
620fdfdf 2000 AC_CHECK_HEADER(tiffio.h,
28aa2c3e 2001 [tifflibs="-lz -lm"
3b3cc4a4
KR
2002 # At least one tiff package requires the jpeg library.
2003 if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
28aa2c3e 2004 AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)])
620fdfdf
RS
2005 fi
2006
2007 if test "${HAVE_TIFF}" = "yes"; then
5e7d772d 2008 AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
620fdfdf
RS
2009 fi
2010fi
177c0ea7 2011
47d1e061 2012### Use -lgif or -lungif if available, unless `--with-gif=no'.
620fdfdf 2013HAVE_GIF=no
47d1e061
GM
2014if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no"; then
2015 AC_CHECK_HEADER(gif_lib.h,
4d766b59
RS
2016# EGifPutExtensionLast only exists from version libungif-4.1.0b1.
2017# Earlier versions can crash Emacs.
28aa2c3e 2018 [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, try_libungif=yes)])
47d1e061
GM
2019
2020 if test "$HAVE_GIF" = yes; then
12d9c91d 2021 ac_gif_lib_name="-lgif"
47d1e061
GM
2022 fi
2023
12d9c91d
GM
2024# If gif_lib.h but no libgif, try libungif.
2025 if test x"$try_libungif" = xyes; then
2026 AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes)
47d1e061
GM
2027
2028 if test "$HAVE_GIF" = yes; then
12d9c91d
GM
2029 AC_DEFINE(LIBGIF, -lungif, [Compiler option to link with the gif library (if not -lgif).])
2030 ac_gif_lib_name="-lungif"
47d1e061 2031 fi
620fdfdf
RS
2032 fi
2033
2034 if test "${HAVE_GIF}" = "yes"; then
12d9c91d 2035 AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif library (default -lgif; otherwise specify with LIBGIF).])
bfa6fb7e
JD
2036 fi
2037fi
2038
2039dnl Check for required libraries.
2040if test "${HAVE_X11}" = "yes"; then
2041 MISSING=""
2042 WITH_NO=""
2043 test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
2044 MISSING="libXpm" && WITH_NO="--with-xpm=no"
2045 test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
2046 MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
2047 test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
2048 MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
2049 test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
2050 MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
2051 test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
2052 MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
2053
2054 if test "X${MISSING}" != X; then
3d20d6aa 2055 AC_MSG_ERROR([The following required libraries were not found:
bfa6fb7e 2056 $MISSING
1ee86f21 2057Maybe some development libraries/packages are missing?
bfa6fb7e
JD
2058If you don't want to link with them give
2059 $WITH_NO
2060as options to configure])
620fdfdf
RS
2061 fi
2062fi
2063
79011b82
NR
2064### Use -lgpm if available, unless `--with-gpm=no'.
2065HAVE_GPM=no
2066if test "${with_gpm}" != "no"; then
2067 AC_CHECK_HEADER(gpm.h,
28aa2c3e 2068 [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
79011b82
NR
2069fi
2070
2071if test "${HAVE_GPM}" = "yes"; then
2072 AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
2073fi
2074
cef11da2 2075dnl Check for malloc/malloc.h on darwin
28aa2c3e 2076AC_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 2077
edfda783
AR
2078### Use NeXTstep API to implement GUI.
2079if test "${HAVE_NS}" = "yes"; then
2080 AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.])
122e9f8f 2081 if test "${NS_IMPL_COCOA}" = "yes"; then
edfda783 2082 AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under MacOS X.])
48fad8e8
DN
2083 GNU_OBJC_CFLAGS=
2084 LIB_SRC_EXTRA_INSTALLABLES=mac-fix-env
edfda783
AR
2085 fi
2086 if test "${EN_COCOA_EXPERIMENTAL_CTRL_G}" = "yes"; then
2087 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.])
2088 fi
122e9f8f 2089 if test "${NS_IMPL_GNUSTEP}" = "yes"; then
edfda783 2090 AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
48fad8e8 2091 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 2092 fi
d5e2f8fe
AR
2093 if test "${NS_HAVE_NSINTEGER}" = "yes"; then
2094 AC_DEFINE(NS_HAVE_NSINTEGER, 1, [Define to 1 if `NSInteger' is defined.])
7ef651dd 2095 fi
edfda783
AR
2096 # We also have mouse menus.
2097 HAVE_MENUS=yes
2098fi
2099
e0f712ba 2100
f21fadcc
JD
2101### Use session management (-lSM -lICE) if available
2102HAVE_X_SM=no
2103if test "${HAVE_X11}" = "yes"; then
2104 AC_CHECK_HEADER(X11/SM/SMlib.h,
28aa2c3e 2105 [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
f21fadcc
JD
2106
2107 if test "${HAVE_X_SM}" = "yes"; then
5e7d772d 2108 AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
f21fadcc
JD
2109 case "$LIBS" in
2110 *-lSM*) ;;
2111 *) LIBS="-lSM -lICE $LIBS" ;;
2112 esac
2113 fi
2114fi
177c0ea7 2115
9ec10b2f 2116# If netdb.h doesn't declare h_errno, we must declare it by hand.
fd0a060b
AS
2117AC_CACHE_CHECK(whether netdb declares h_errno,
2118 emacs_cv_netdb_declares_h_errno,
e9b2a022 2119[AC_TRY_LINK([#include <netdb.h>],
01345308 2120 [return h_errno;],
e9b2a022 2121 emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
fd0a060b 2122if test $emacs_cv_netdb_declares_h_errno = yes; then
5e7d772d 2123 AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
fd0a060b 2124fi
9ec10b2f 2125
6e0dc84a 2126AC_FUNC_ALLOCA
9ec10b2f 2127
4756ee42
GM
2128dnl src/alloca.c has been removed. Could also check if $ALLOCA is set?
2129dnl FIXME is there an autoconf test that does the right thing, without
2130dnl needing to call A_M_E afterwards?
2131if test x"$ac_cv_func_alloca_works" != xyes; then
2132 AC_MSG_ERROR( [a system implementation of alloca is required] )
2133fi
2134
f6e8adea 2135# fmod, logb, and frexp are found in -lm on most systems.
e468fb38 2136# On HPUX 9.01, -lm does not contain logb, so check for sqrt.
e6fd9047 2137AC_CHECK_LIB(m, sqrt)
e6fd9047 2138
4b121527
DL
2139# Check for mail-locking functions in a "mail" library. Probably this should
2140# have the same check as for liblockfile below.
5ad9ac92
DL
2141AC_CHECK_LIB(mail, maillock)
2142dnl Debian, at least:
5ad9ac92
DL
2143AC_CHECK_LIB(lockfile, maillock)
2144# If we have the shared liblockfile, assume we must use it for mail
2145# locking (e.g. Debian). If we couldn't link against liblockfile
2146# (no liblockfile.a installed), ensure that we don't need to.
2147if test "$ac_cv_lib_lockfile_maillock" = no; then
2148 dnl This works for files generally, not just executables.
2149 dnl Should we look elsewhere for it? Maybe examine /etc/ld.so.conf?
2150 AC_CHECK_PROG(liblockfile, liblockfile.so, yes, no,
2151 /usr/lib:/lib:/usr/local/lib:$LD_LIBRARY_PATH)
2152 if test $ac_cv_prog_liblockfile = yes; then
2153 AC_MSG_ERROR([Shared liblockfile found but can't link against it.
2154This probably means that movemail could lose mail.
91b5aa9a 2155There may be a `development' package to install containing liblockfile.])
5ad9ac92 2156 else :
4b121527 2157 fi
5ad9ac92
DL
2158fi
2159AC_CHECK_FUNCS(touchlock)
2160AC_CHECK_HEADERS(maillock.h)
4e4db900 2161
66abe596 2162AC_CHECK_FUNCS(gethostname getdomainname dup2 \
e1d954e4 2163rename closedir mkdir rmdir sysinfo getrusage get_current_dir_name \
555ffc3f 2164random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime setsid \
85ea1a28 2165strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \
807e2671 2166utimes getrlimit setrlimit setpgid getcwd getwd shutdown getaddrinfo \
ec406751 2167__fpending mblen mbrlen mbsinit strsignal setitimer ualarm index rindex \
66abe596 2168sendto recvfrom getsockopt setsockopt getsockname getpeername \
72621b4e 2169gai_strerror mkstemp getline getdelim mremap memmove fsync sync bzero \
25241b4d
SM
2170memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign \
2171cfmakeraw cfsetspeed)
38c44a91 2172
66abe596
KS
2173AC_CHECK_HEADERS(sys/un.h)
2174
38c44a91
DL
2175AC_FUNC_MKTIME
2176if test "$ac_cv_func_working_mktime" = no; then
5e7d772d 2177 AC_DEFINE(BROKEN_MKTIME, 1, [Define to 1 if the mktime function is broken.])
38c44a91
DL
2178fi
2179
1ca2077a
DL
2180AC_FUNC_GETLOADAVG
2181
64a04a42 2182AC_FUNC_FSEEKO
63c59d1e 2183
9eff9fe3
PE
2184# Configure getopt.
2185m4_include([m4/getopt.m4])
2186gl_GETOPT_IFELSE([
2187 gl_GETOPT_SUBSTITUTE_HEADER
2188 gl_PREREQ_GETOPT
2189 GETOPTOBJS='getopt.o getopt1.o'
2190])
2191AC_SUBST(GETOPTOBJS)
2192
71cc40d5
DL
2193AC_FUNC_GETPGRP
2194
12c0a8da
DL
2195AC_FUNC_STRFTIME
2196
64a04a42 2197# UNIX98 PTYs.
40ccc4c7
GM
2198AC_CHECK_FUNCS(grantpt)
2199
2200# PTY-related GNU extensions.
2201AC_CHECK_FUNCS(getpt)
2202
16831d8c
RS
2203# Check this now, so that we will NOT find the above functions in ncurses.
2204# That is because we have not set up to link ncurses in lib-src.
2205# It's better to believe a function is not available
2206# than to expect to find it in ncurses.
2207AC_CHECK_LIB(ncurses, tparm)
0c565a0a 2208
555ffc3f
CY
2209# Do we have res_init, for detecting changes in /etc/resolv.conf?
2210
2211resolv=no
c0a3f2a2
AS
2212AC_TRY_LINK([#include <netinet/in.h>
2213#include <arpa/nameser.h>
2214#include <resolv.h>],
2215 [return res_init();],
2216 have_res_init=yes, have_res_init=no)
555ffc3f
CY
2217if test "$have_res_init" = no; then
2218 OLIBS="$LIBS"
2219 LIBS="$LIBS -lresolv"
2220 AC_MSG_CHECKING(for res_init with -lresolv)
2221 AC_TRY_LINK([#include <netinet/in.h>
2222#include <arpa/nameser.h>
c0a3f2a2
AS
2223#include <resolv.h>],
2224 [return res_init();],
555ffc3f
CY
2225 have_res_init=yes, have_res_init=no)
2226 AC_MSG_RESULT($have_res_init)
2227 if test "$have_res_init" = yes ; then
2228 resolv=yes
2229 fi
2230 LIBS="$OLIBS"
2231fi
2232
2233if test "$have_res_init" = yes; then
2234 AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if res_init is available.])
2235fi
2236
84e70f78 2237# Do we need the Hesiod library to provide the support routines?
316460cf 2238if test "$with_hesiod" != no ; then
84e70f78 2239 # Don't set $LIBS here -- see comments above.
84e70f78
KR
2240 AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
2241 [AC_CHECK_LIB(resolv, res_send, resolv=yes,
2242 [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
2243 if test "$resolv" = yes ; then
2244 RESOLVLIB=-lresolv
84e70f78
KR
2245 else
2246 RESOLVLIB=
2247 fi
2248 AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
28aa2c3e
AS
2249 [AC_DEFINE(HAVE_LIBHESIOD, 1,
2250 [Define to 1 if you have the hesiod library (-lhesiod).])],
5e7d772d 2251 :, $RESOLVLIB)])
84e70f78
KR
2252fi
2253
555ffc3f
CY
2254# Do we need libresolv (due to res_init or Hesiod)?
2255if test "$resolv" = yes ; then
2256 AC_DEFINE(HAVE_LIBRESOLV, 1,
2257 [Define to 1 if you have the resolv library (-lresolv).])
2258fi
2259
a21616bd 2260# These tell us which Kerberos-related libraries to use.
316460cf 2261if test "${with_kerberos}" != no; then
a21616bd
KR
2262 AC_CHECK_LIB(com_err, com_err)
2263 AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt)
2264 AC_CHECK_LIB(crypto, mit_des_cbc_encrypt)
2265 AC_CHECK_LIB(krb5, krb5_init_context)
316460cf 2266 if test "${with_kerberos5}" = no; then
a21616bd 2267 AC_CHECK_LIB(des425, des_cbc_encrypt,,
28aa2c3e 2268 [AC_CHECK_LIB(des, des_cbc_encrypt)])
a21616bd 2269 AC_CHECK_LIB(krb4, krb_get_cred,,
28aa2c3e 2270 [AC_CHECK_LIB(krb, krb_get_cred)])
a21616bd
KR
2271 fi
2272
316460cf 2273 if test "${with_kerberos5}" != no; then
bc26b0c0 2274 AC_CHECK_HEADERS(krb5.h,
9e0f670e
AS
2275 [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,,
2276 [#include <krb5.h>])])
a21616bd
KR
2277 else
2278 AC_CHECK_HEADERS(des.h,,
5a129faf
PE
2279 [AC_CHECK_HEADERS(kerberosIV/des.h,,
2280 [AC_CHECK_HEADERS(kerberos/des.h)])])
a21616bd 2281 AC_CHECK_HEADERS(krb.h,,
5a129faf
PE
2282 [AC_CHECK_HEADERS(kerberosIV/krb.h,,
2283 [AC_CHECK_HEADERS(kerberos/krb.h)])])
a21616bd
KR
2284 fi
2285 AC_CHECK_HEADERS(com_err.h)
2286fi
2287
c4510052
PE
2288# Solaris requires -lintl if you want strerror (which calls dgettext)
2289# to return localized messages.
2290AC_CHECK_LIB(intl, dgettext)
2291
0c565a0a
RS
2292AC_MSG_CHECKING(whether localtime caches TZ)
2293AC_CACHE_VAL(emacs_cv_localtime_cache,
fcc303f4 2294[if test x$ac_cv_func_tzset = xyes; then
0c565a0a 2295AC_TRY_RUN([#include <time.h>
22cc077c
RS
2296extern char **environ;
2297unset_TZ ()
2298{
2299 char **from, **to;
2300 for (to = from = environ; (*to = *from); from++)
2301 if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
2302 to++;
2303}
98ab445d
RS
2304char TZ_GMT0[] = "TZ=GMT0";
2305char TZ_PST8[] = "TZ=PST8";
0c565a0a
RS
2306main()
2307{
2308 time_t now = time ((time_t *) 0);
22cc077c 2309 int hour_GMT0, hour_unset;
98ab445d 2310 if (putenv (TZ_GMT0) != 0)
0c565a0a 2311 exit (1);
22cc077c
RS
2312 hour_GMT0 = localtime (&now)->tm_hour;
2313 unset_TZ ();
2314 hour_unset = localtime (&now)->tm_hour;
98ab445d 2315 if (putenv (TZ_PST8) != 0)
0c565a0a 2316 exit (1);
22cc077c
RS
2317 if (localtime (&now)->tm_hour == hour_GMT0)
2318 exit (1);
2319 unset_TZ ();
2320 if (localtime (&now)->tm_hour != hour_unset)
2321 exit (1);
2322 exit (0);
0c565a0a
RS
2323}], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
2324[# If we have tzset, assume the worst when cross-compiling.
2325emacs_cv_localtime_cache=yes])
2326else
2327 # If we lack tzset, report that localtime does not cache TZ,
2328 # since we can't invalidate the cache if we don't have tzset.
2329 emacs_cv_localtime_cache=no
2330fi])dnl
2331AC_MSG_RESULT($emacs_cv_localtime_cache)
2332if test $emacs_cv_localtime_cache = yes; then
5e7d772d
AS
2333 AC_DEFINE(LOCALTIME_CACHE, 1,
2334 [Define to 1 if localtime caches TZ.])
0c565a0a 2335fi
9ec10b2f 2336
3d68df05 2337if test "x$HAVE_TIMEVAL" = xyes; then
8a2c2328 2338 AC_CHECK_FUNCS(gettimeofday)
5e7d772d
AS
2339 if test $ac_cv_func_gettimeofday = yes; then
2340 AC_CACHE_CHECK(whether gettimeofday can accept two arguments,
2341 emacs_cv_gettimeofday_two_arguments,
2342 [AC_TRY_COMPILE([
5ab52d42
RS
2343#ifdef TIME_WITH_SYS_TIME
2344#include <sys/time.h>
2345#include <time.h>
2346#else
2347#ifdef HAVE_SYS_TIME_H
2348#include <sys/time.h>
2349#else
2350#include <time.h>
2351#endif
290c1191 2352#endif],
5e7d772d
AS
2353 [struct timeval time;
2354 gettimeofday (&time, 0);],
2355 emacs_cv_gettimeofday_two_arguments=yes,
2356 emacs_cv_gettimeofday_two_arguments=no)])
2357 if test $emacs_cv_gettimeofday_two_arguments = no; then
2358 AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT, 1,
2359 [Define to 1 if gettimeofday accepts only one argument.])
2360 fi
fd0a060b 2361 fi
5ab52d42
RS
2362fi
2363
9ec10b2f 2364ok_so_far=yes
6e0dc84a 2365AC_CHECK_FUNC(socket, , ok_so_far=no)
9ec10b2f 2366if test $ok_so_far = yes; then
6e0dc84a 2367 AC_CHECK_HEADER(netinet/in.h, , ok_so_far=no)
9ec10b2f
DM
2368fi
2369if test $ok_so_far = yes; then
6e0dc84a 2370 AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
9ec10b2f
DM
2371fi
2372if test $ok_so_far = yes; then
91b5aa9a 2373dnl Fixme: Not used. Should this be HAVE_SOCKETS?
5e7d772d
AS
2374 AC_DEFINE(HAVE_INET_SOCKETS, 1,
2375 [Define to 1 if you have inet sockets.])
9ec10b2f
DM
2376fi
2377
ce6e4c21 2378AC_CHECK_HEADERS(sys/ioctl.h)
2ba3faa3 2379
7bbbba31 2380if test -f /usr/lpp/X11/bin/smt.exp; then
5e7d772d
AS
2381 AC_DEFINE(HAVE_AIX_SMT_EXP, 1,
2382 [Define to 1 if the file /usr/lpp/X11/bin/smt.exp exists.])
7bbbba31
DM
2383fi
2384
27b07953
GM
2385AC_MSG_CHECKING(whether system supports dynamic ptys)
2386if test -d /dev/pts && ls -d /dev/ptmx > /dev/null 2>&1 ; then
2387 AC_MSG_RESULT(yes)
5e7d772d 2388 AC_DEFINE(HAVE_DEV_PTMX, 1, [Define to 1 if dynamic ptys are supported.])
27b07953
GM
2389else
2390 AC_MSG_RESULT(no)
2391fi
2392
5a129faf 2393AC_FUNC_FORK
79e12078 2394
fb33ec52
DL
2395dnl Adapted from Haible's version.
2396AC_CACHE_CHECK([for nl_langinfo and CODESET], emacs_cv_langinfo_codeset,
2397 [AC_TRY_LINK([#include <langinfo.h>],
2398 [char* cs = nl_langinfo(CODESET);],
2399 emacs_cv_langinfo_codeset=yes,
2400 emacs_cv_langinfo_codeset=no)
2401 ])
2402if test $emacs_cv_langinfo_codeset = yes; then
2403 AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
2404 [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
2405fi
2406
f3acf5be 2407AC_CHECK_TYPES(size_t)
8170f46b 2408
12c0a8da
DL
2409AC_TYPE_MBSTATE_T
2410
91b5aa9a
DL
2411dnl Restrict could probably be used effectively other than in regex.c.
2412AC_CACHE_CHECK([for C restrict keyword], emacs_cv_c_restrict,
2413 [AC_TRY_COMPILE([void fred (int *restrict x);], [],
2414 emacs_cv_c_restrict=yes,
2415 [AC_TRY_COMPILE([void fred (int *__restrict x);], [],
2416 emacs_cv_c_restrict=__restrict,
2417 emacs_cv_c_restrict=no)])])
2418case "$emacs_cv_c_restrict" in
2419 yes) emacs_restrict=restrict;;
2420 no) emacs_restrict="";;
2421 *) emacs_restrict="$emacs_cv_c_restrict";;
2422esac
2423if test "$emacs_restrict" != __restrict; then
2424 AC_DEFINE_UNQUOTED(__restrict, $emacs_restrict,
2425 [Define to compiler's equivalent of C99 restrict keyword.
2426 Don't define if equivalent is `__restrict'.])
2427fi
2428
2429AC_CACHE_CHECK([for C restricted array declarations], emacs_cv_c_restrict_arr,
2430 [AC_TRY_COMPILE([void fred (int x[__restrict]);], [],
2431 emacs_cv_c_restrict_arr=yes, emacs_cv_c_restrict_arr=no)])
2432if test "$emacs_cv_c_restrict_arr" = yes; then
2433 AC_DEFINE(__restrict_arr, __restrict,
2434 [Define to compiler's equivalent of C99 restrict keyword in array
2435 declarations. Define as empty for no equivalent.])
2436fi
2437
2438dnl Fixme: AC_SYS_POSIX_TERMIOS should probably be used, but it's not clear
2439dnl how the tty code is related to POSIX and/or other versions of termios.
4b121527
DL
2440dnl The following looks like a useful start.
2441dnl
2442dnl AC_SYS_POSIX_TERMIOS
2443dnl if test $ac_cv_sys_posix_termios = yes; then
f6214bb7 2444dnl AC_DEFINE(HAVE_TERMIOS, 1, [Define to 1 if you have POSIX-style functions
4b121527
DL
2445dnl and macros for terminal control.])
2446dnl AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.])
2447dnl fi
91b5aa9a
DL
2448
2449dnl Fixme: Use AC_FUNC_MEMCMP since memcmp is used. (Needs libobj replacement.)
2450
9ec10b2f
DM
2451# Set up the CFLAGS for real compilation, so we can substitute it.
2452CFLAGS="$REAL_CFLAGS"
5a9bf171 2453CPPFLAGS="$REAL_CPPFLAGS"
9ec10b2f 2454
9ec10b2f 2455#### Find out which version of Emacs this is.
91b5aa9a
DL
2456[version=`grep 'defconst[ ]*emacs-version' ${srcdir}/lisp/version.el \
2457 | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'`]
9ec10b2f 2458if test x"${version}" = x; then
91b5aa9a 2459 AC_MSG_ERROR([can't find current emacs version in `${srcdir}/lisp/version.el'.])
9ec10b2f
DM
2460fi
2461
9ec10b2f
DM
2462### Specify what sort of things we'll be editing into Makefile and config.h.
2463### Use configuration here uncanonicalized to avoid exceeding size limits.
2464AC_SUBST(version)
2465AC_SUBST(configuration)
3cd69289 2466AC_SUBST(canonical)
9ec10b2f
DM
2467AC_SUBST(srcdir)
2468AC_SUBST(prefix)
2469AC_SUBST(exec_prefix)
2470AC_SUBST(bindir)
2471AC_SUBST(datadir)
3cd69289
DM
2472AC_SUBST(sharedstatedir)
2473AC_SUBST(libexecdir)
9ec10b2f
DM
2474AC_SUBST(mandir)
2475AC_SUBST(infodir)
2476AC_SUBST(lispdir)
2477AC_SUBST(locallisppath)
2478AC_SUBST(lisppath)
66d736a9 2479AC_SUBST(x_default_search_path)
9ec10b2f 2480AC_SUBST(etcdir)
9ec10b2f
DM
2481AC_SUBST(archlibdir)
2482AC_SUBST(docdir)
3cd69289 2483AC_SUBST(bitmapdir)
93c05c18
CW
2484AC_SUBST(gamedir)
2485AC_SUBST(gameuser)
9ec10b2f
DM
2486AC_SUBST(c_switch_system)
2487AC_SUBST(c_switch_machine)
2488AC_SUBST(LD_SWITCH_X_SITE)
2489AC_SUBST(LD_SWITCH_X_SITE_AUX)
2490AC_SUBST(C_SWITCH_X_SITE)
2491AC_SUBST(CFLAGS)
2492AC_SUBST(X_TOOLKIT_TYPE)
2493AC_SUBST(machfile)
2494AC_SUBST(opsysfile)
1ca2077a 2495AC_SUBST(GETLOADAVG_LIBS)
edfda783 2496AC_SUBST(ns_appdir)
06b62770
AR
2497AC_SUBST(ns_appbindir)
2498AC_SUBST(ns_appresdir)
2499AC_SUBST(ns_appsrc)
facfbbbd 2500AC_SUBST(GNUSTEP_MAKEFILES)
6c39fc02
CY
2501AC_SUBST(GNUSTEP_SYSTEM_HEADERS)
2502AC_SUBST(GNUSTEP_SYSTEM_LIBRARIES)
48fad8e8
DN
2503AC_SUBST(GNU_OBJC_CFLAGS)
2504AC_SUBST(LIB_SRC_EXTRA_INSTALLABLES)
9ec10b2f 2505
5e7d772d
AS
2506AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "${canonical}",
2507 [Define to the canonical Emacs configuration name.])
2508AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${ac_configure_args}",
2509 [Define to the options passed to configure.])
2510AC_DEFINE_UNQUOTED(config_machfile, "${machfile}",
2511 [Define to the used machine dependent file.])
2512AC_DEFINE_UNQUOTED(config_opsysfile, "${opsysfile}",
2513 [Define to the used os dependent file.])
2514AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE, ${LD_SWITCH_X_SITE},
2515[Define LD_SWITCH_X_SITE to contain any special flags your loader
2516 may need to deal with X Windows. For instance, if you've defined
2517 HAVE_X_WINDOWS above and your X libraries aren't in a place that
2518 your loader can find on its own, you might want to add "-L/..." or
2519 something similar.])
2520AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE_AUX, ${LD_SWITCH_X_SITE_AUX},
2521 [Define LD_SWITCH_X_SITE_AUX with an -R option
2522 in case it's needed (for Solaris, for example).])
2523AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE, ${C_SWITCH_X_SITE},
2524[Define C_SWITCH_X_SITE to contain any special flags your compiler
2525 may need to deal with X Windows. For instance, if you've defined
2526 HAVE_X_WINDOWS above and your X include files aren't in a place
2527 that your compiler can find on its own, you might want to add
2528 "-I/..." or something similar.])
2529AC_DEFINE_UNQUOTED(UNEXEC_SRC, ${UNEXEC_SRC},
2530 [Define to the unexec source file name.])
9ec10b2f
DM
2531
2532if test "${HAVE_X_WINDOWS}" = "yes" ; then
5e7d772d
AS
2533 AC_DEFINE(HAVE_X_WINDOWS, 1,
2534 [Define to 1 if you want to use the X window system.])
9ec10b2f
DM
2535fi
2536if test "${USE_X_TOOLKIT}" != "none" ; then
5e7d772d 2537 AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
d893468a 2538 if test "${USE_X_TOOLKIT}" = "LUCID"; then
73d798d5 2539 AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
d893468a 2540 elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
73d798d5
SM
2541 AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
2542 fi
9ec10b2f
DM
2543fi
2544if test "${HAVE_X11}" = "yes" ; then
5e7d772d
AS
2545 AC_DEFINE(HAVE_X11, 1,
2546 [Define to 1 if you want to use version 11 of X windows.
2547 Otherwise, Emacs expects to use version 10.])
9ec10b2f 2548fi
08741ba9 2549if test "${HAVE_MENUS}" = "yes" ; then
5e7d772d
AS
2550 AC_DEFINE(HAVE_MENUS, 1,
2551 [Define to 1 if you have mouse menus.
2552 (This is automatic if you use X, but the option to specify it remains.)
2553 It is also defined with other window systems that support xmenu.c.])
9ec10b2f
DM
2554fi
2555if test "${GNU_MALLOC}" = "yes" ; then
5e7d772d
AS
2556 AC_DEFINE(GNU_MALLOC, 1,
2557 [Define to 1 if you want to use the GNU memory allocator.])
9ec10b2f
DM
2558fi
2559if test "${REL_ALLOC}" = "yes" ; then
5e7d772d
AS
2560 AC_DEFINE(REL_ALLOC, 1,
2561 [Define REL_ALLOC if you want to use the relocating allocator for
2562 buffer space.])
9ec10b2f 2563fi
9ec10b2f 2564
bfa6fb7e 2565
f3acf5be 2566AH_TOP([/* GNU Emacs site configuration template file.
57ebf0be
GM
2567 Copyright (C) 1988, 1993, 1994, 1999, 2000, 2001, 2002, 2004, 2005,
2568 2006, 2007, 2008 Free Software Foundation, Inc.
5e7d772d
AS
2569
2570This file is part of GNU Emacs.
2571
41f8d6db 2572GNU Emacs is free software: you can redistribute it and/or modify
5e7d772d 2573it under the terms of the GNU General Public License as published by
41f8d6db
GM
2574the Free Software Foundation, either version 3 of the License, or
2575(at your option) any later version.
5e7d772d
AS
2576
2577GNU Emacs is distributed in the hope that it will be useful,
2578but WITHOUT ANY WARRANTY; without even the implied warranty of
2579MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2580GNU General Public License for more details.
2581
2582You should have received a copy of the GNU General Public License
41f8d6db 2583along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
5e7d772d
AS
2584
2585
91b5aa9a 2586/* No code in Emacs #includes config.h twice, but some bits of code
177c0ea7 2587 intended to work with other packages as well (like gmalloc.c)
5e7d772d
AS
2588 think they can include it as many times as they like. */
2589#ifndef EMACS_CONFIG_H
2590#define EMACS_CONFIG_H
2591])dnl
2592
2593AH_BOTTOM([
edfda783 2594/* If we're using X11/Carbon/GNUstep, define some consequences. */
9e2a2647 2595#if defined(HAVE_X_WINDOWS) || defined(HAVE_NS)
5e7d772d 2596#define HAVE_WINDOW_SYSTEM
5e7d772d
AS
2597#define HAVE_MOUSE
2598#endif
2599
edfda783
AR
2600/* Sadly for now, GNUstep dump does not work. */
2601#ifdef NS_IMPL_GNUSTEP
2602#define CANNOT_DUMP
e3ba1015
AC
2603#endif
2604
5e7d772d
AS
2605/* Define AMPERSAND_FULL_NAME if you use the convention
2606 that & in the full name stands for the login id. */
2607/* Turned on June 1996 supposing nobody will mind it. */
2608#define AMPERSAND_FULL_NAME
2609
2610/* Define HAVE_SOUND if we have sound support. We know it works
2611 and compiles only on the specified platforms. For others,
2612 it probably doesn't make sense to try. */
2613
2614#if defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
2615#ifdef HAVE_MACHINE_SOUNDCARD_H
2616#define HAVE_SOUND 1
2617#endif
2618#ifdef HAVE_SYS_SOUNDCARD_H
2619#define HAVE_SOUND 1
2620#endif
2621#ifdef HAVE_SOUNDCARD_H
2622#define HAVE_SOUND 1
2623#endif
2eec8691
JD
2624#ifdef HAVE_ALSA
2625#define HAVE_SOUND 1
2626#endif
5e7d772d
AS
2627#endif /* __FreeBSD__ || __NetBSD__ || __linux__ */
2628
2629/* If using GNU, then support inline function declarations. */
2630/* Don't try to switch on inline handling as detected by AC_C_INLINE
2631 generally, because even if non-gcc compilers accept `inline', they
2632 may reject `extern inline'. */
be5472bd 2633#if defined (__GNUC__) && defined (OPTIMIZE)
5e7d772d
AS
2634#define INLINE __inline__
2635#else
2636#define INLINE
2637#endif
2638
67931678
EZ
2639/* `subprocesses' should be defined if you want to
2640 have code for asynchronous subprocesses
2641 (as used in M-x compile and M-x shell).
2642 Only MSDOS does not support this (it overrides
2643 this in its config_opsysfile below). */
2644
2645#define subprocesses
2646
5e7d772d
AS
2647/* Include the os and machine dependent files. */
2648#include config_opsysfile
2649#include config_machfile
2650
edfda783
AR
2651/* Set up some defines, C and LD flags for NeXTstep interface on GNUstep.
2652 (There is probably a better place to do this, but right now the Cocoa
9e2a2647 2653 side does this in s/darwin.h and we cannot
edfda783
AR
2654 parallel this exactly since GNUstep is multi-OS. */
2655#ifdef HAVE_NS
48fad8e8 2656#define OTHER_FILES ns-app
edfda783
AR
2657# ifdef NS_IMPL_GNUSTEP
2658/* See also .m.o rule in Makefile.in */
c5e2611e 2659/* FIXME: are all these flags really needed? Document here why. */
d5e2f8fe 2660# define C_SWITCH_X_SYSTEM -D_REENTRANT -fPIC -fno-strict-aliasing
3dcdb6ea 2661/* GNUstep needs a bit more pure memory. Of the existing knobs,
c5e2611e
DN
2662SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems. */
2663# define SYSTEM_PURESIZE_EXTRA 30000
48fad8e8 2664# endif /* NS_IMPL_GNUSTEP */
edfda783
AR
2665#endif /* HAVE_NS */
2666
5e7d772d
AS
2667/* SIGTYPE is the macro we actually use. */
2668#ifndef SIGTYPE
2669#define SIGTYPE RETSIGTYPE
2670#endif
2671
2672#ifdef emacs /* Don't do this for lib-src. */
2673/* Tell regex.c to use a type compatible with Emacs. */
2674#define RE_TRANSLATE_TYPE Lisp_Object
2675#define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
be5472bd
SM
2676#ifdef make_number
2677/* If make_number is a macro, use it. */
2678#define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0)))
2679#else
2680/* If make_number is a function, avoid it. */
2681#define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0))
2682#endif
5e7d772d
AS
2683#endif
2684
2685/* Avoid link-time collision with system mktime if we will use our own. */
2686#if ! HAVE_MKTIME || BROKEN_MKTIME
2687#define mktime emacs_mktime
2688#endif
2689
1c3a8acf
DL
2690#define my_strftime nstrftime /* for strftime.c */
2691
5e7d772d
AS
2692/* The rest of the code currently tests the CPP symbol BSTRING.
2693 Override any claims made by the system-description files.
2694 Note that on some SCO version it is possible to have bcopy and not bcmp. */
2695#undef BSTRING
2696#if defined (HAVE_BCOPY) && defined (HAVE_BCMP)
2697#define BSTRING
2698#endif
2699
2700/* Some of the files of Emacs which are intended for use with other
2701 programs assume that if you have a config.h file, you must declare
2702 the type of getenv.
2703
2704 This declaration shouldn't appear when alloca.s or Makefile.in
2705 includes config.h. */
2706#ifndef NOT_C_CODE
2707extern char *getenv ();
2708#endif
2709
5e7d772d
AS
2710/* These default definitions are good for almost all machines.
2711 The exceptions override them in m/MACHINE.h. */
2712
2713#ifndef BITS_PER_CHAR
2714#define BITS_PER_CHAR 8
2715#endif
2716
2717#ifndef BITS_PER_SHORT
2718#define BITS_PER_SHORT 16
2719#endif
2720
2721/* Note that lisp.h uses this in a preprocessor conditional, so it
2722 would not work to use sizeof. That being so, we do all of them
2723 without sizeof, for uniformity's sake. */
2724#ifndef BITS_PER_INT
2725#define BITS_PER_INT 32
2726#endif
2727
2728#ifndef BITS_PER_LONG
2729#ifdef _LP64
2730#define BITS_PER_LONG 64
2731#else
2732#define BITS_PER_LONG 32
2733#endif
2734#endif
2735
2736/* Define if the compiler supports function prototypes. It may do so
2737 but not define __STDC__ (e.g. DEC C by default) or may define it as
2738 zero. */
2739#undef PROTOTYPES
2740/* For mktime.c: */
2741#ifndef __P
2742# if defined PROTOTYPES
2743# define __P(args) args
2744# else
2745# define __P(args) ()
2746# endif /* GCC. */
2747#endif /* __P */
2748
5e7d772d
AS
2749/* Don't include "string.h" or <stdlib.h> in non-C code. */
2750#ifndef NOT_C_CODE
2751#ifdef HAVE_STRING_H
2752#include "string.h"
2753#endif
f3acf5be
DL
2754#ifdef HAVE_STRINGS_H
2755#include "strings.h" /* May be needed for bcopy & al. */
2756#endif
5e7d772d
AS
2757#ifdef HAVE_STDLIB_H
2758#include <stdlib.h>
2759#endif
91b5aa9a
DL
2760#ifndef __GNUC__
2761# ifdef HAVE_ALLOCA_H
2762# include <alloca.h>
2763# else /* AIX files deal with #pragma. */
2764# ifndef alloca /* predefined by HP cc +Olibcalls */
2765char *alloca ();
2766# endif
2767# endif /* HAVE_ALLOCA_H */
2768#endif /* __GNUC__ */
17b3d9f6 2769#ifndef HAVE_SIZE_T
f968418d 2770typedef unsigned size_t;
17b3d9f6 2771#endif
91b5aa9a 2772#endif /* NOT_C_CODE */
5e7d772d
AS
2773
2774/* Define HAVE_X_I18N if we have usable i18n support. */
2775
2776#ifdef HAVE_X11R6
2777#define HAVE_X_I18N
e818a450 2778#elif !defined X11R5_INHIBIT_I18N
5e7d772d
AS
2779#define HAVE_X_I18N
2780#endif
2781
2782/* Define HAVE_X11R6_XIM if we have usable X11R6-style XIM support. */
2783
2784#if defined HAVE_X11R6 && !defined INHIBIT_X11R6_XIM
2785#define HAVE_X11R6_XIM
2786#endif
2787
2788/* Should we enable expensive run-time checking of data types? */
2789#undef ENABLE_CHECKING
2790
2791#if defined __GNUC__ && (__GNUC__ > 2 \
2792 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5))
2793#define NO_RETURN __attribute__ ((__noreturn__))
2794#else
2795#define NO_RETURN /* nothing */
2796#endif
f3acf5be 2797
91b5aa9a
DL
2798/* These won't be used automatically yet. We also need to know, at least,
2799 that the stack is continuous. */
2800#ifdef __GNUC__
2801# ifndef GC_SETJMP_WORKS
2802 /* GC_SETJMP_WORKS is nearly always appropriate for GCC --
177c0ea7 2803 see NON_SAVING_SETJMP in the target descriptions. */
f3041af1 2804 /* Exceptions (see NON_SAVING_SETJMP in target description) are
91b5aa9a 2805 SCO5 non-ELF (but Emacs specifies ELF) and SVR3 on x86.
f3041af1 2806 Fixme: Deal with SVR3. */
91b5aa9a
DL
2807# define GC_SETJMP_WORKS 1
2808# endif
2809# ifndef GC_LISP_OBJECT_ALIGNMENT
2810# define GC_LISP_OBJECT_ALIGNMENT (__alignof__ (Lisp_Object))
2811# endif
2812#endif
2813
efd60266
JB
2814#ifndef HAVE_BCOPY
2815#define bcopy(a,b,s) memcpy (b,a,s)
2816#endif
2817#ifndef HAVE_BZERO
2818#define bzero(a,s) memset (a,0,s)
2819#endif
2820#ifndef HAVE_BCMP
2821#define BCMP memcmp
2822#endif
91b5aa9a
DL
2823
2824#endif /* EMACS_CONFIG_H */
2825
177c0ea7 2826/*
91b5aa9a 2827Local Variables:
f3acf5be
DL
2828mode: c
2829End:
2830*/
5e7d772d 2831])dnl
f0f2756d 2832
9ec10b2f 2833#### Report on what we decided to do.
488dd4c4
JD
2834#### Report GTK as a toolkit, even if it doesn't use Xt.
2835#### It makes printing result more understandable as using GTK sets
2836#### toolkit_scroll_bars to yes by default.
2837if test "${HAVE_GTK}" = "yes"; then
2838 USE_X_TOOLKIT=GTK
2839fi
2840
9ec10b2f 2841echo "
9ec10b2f
DM
2842Configured for \`${canonical}'.
2843
2844 Where should the build process find the source code? ${srcdir}
2845 What operating system and machine description files should Emacs use?
2846 \`${opsysfile}' and \`${machfile}'
2847 What compiler should emacs be built with? ${CC} ${CFLAGS}
2848 Should Emacs use the GNU version of malloc? ${GNU_MALLOC}${GNU_MALLOC_reason}
b1b4ce06 2849 Should Emacs use a relocating allocator for buffers? ${REL_ALLOC}
e32fac2a 2850 Should Emacs use mmap(2) for buffer allocation? $use_mmap_for_buffers
9ec10b2f 2851 What window system should Emacs use? ${window_system}
dc16594b 2852 What toolkit should Emacs use? ${USE_X_TOOLKIT}"
509fccc3
RS
2853
2854if test -n "${x_includes}"; then
2855echo " Where do we find X Windows header files? ${x_includes}"
2856else
2857echo " Where do we find X Windows header files? Standard dirs"
2858fi
2859if test -n "${x_libraries}"; then
2860echo " Where do we find X Windows libraries? ${x_libraries}"
2861else
2862echo " Where do we find X Windows libraries? Standard dirs"
2863fi
9ec10b2f 2864
b412189c
GM
2865echo " Does Emacs use -lXaw3d? ${HAVE_XAW3D}"
2866echo " Does Emacs use -lXpm? ${HAVE_XPM}"
2867echo " Does Emacs use -ljpeg? ${HAVE_JPEG}"
495ccc04 2868echo " Does Emacs use -ltiff? ${HAVE_TIFF}"
47d1e061 2869echo " Does Emacs use a gif library? ${HAVE_GIF} $ac_gif_lib_name"
b412189c 2870echo " Does Emacs use -lpng? ${HAVE_PNG}"
96f574f0 2871echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}"
79011b82 2872echo " Does Emacs use -lgpm? ${HAVE_GPM}"
bf9a7ece 2873echo " Does Emacs use -ldbus? ${HAVE_DBUS}"
d41e8664 2874
26d41f17
GM
2875echo " Does Emacs use -lfreetype? ${HAVE_FREETYPE}"
2876echo " Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}"
2877echo " Does Emacs use -lotf? ${HAVE_LIBOTF}"
2878echo " Does Emacs use -lxft? ${HAVE_XFT}"
2879
8d87199b 2880echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
509fccc3 2881echo
9ec10b2f 2882
d0098f13
JD
2883if test $USE_XASSERTS = yes; then
2884 echo " Compiling with asserts turned on."
d0098f13 2885 CPPFLAGS="$CPPFLAGS -DXASSERTS=1"
d0098f13 2886fi
05cf15c6 2887
ca34d75a
JD
2888echo
2889
adfd1e39
JD
2890if test "$USE_X_TOOLKIT" = GTK; then
2891 case "$canonical" in
2892 *cygwin*)
2893 echo "There are known problems with Emacs and Gtk+ on cygwin, so you
2894 will probably get a crash on startup. If this happens, please use another
2895 toolkit for Emacs. See etc/PROBLEMS for more information."
2896 ;;
2897 esac
2898fi
2899
06b62770
AR
2900if test "$HAVE_NS" = "yes"; then
2901 echo
2902 echo "You must run \"make install\" in order to test the built application.
2903The installed application will go to nextstep/Emacs.app and can be
2904run or moved from there."
2905 if test "$EN_NS_SELF_CONTAINED" = "yes"; then
2906 echo "The application will be fully self-contained."
2907 else
2908 echo "The lisp resources for the application will be installed under ${prefix}.
2909You may need to run \"make install\" with sudo. The application will fail
2910to run if these resources are not installed."
2911 fi
2912 echo
2913fi
2914
131e4133
MA
2915if test "$HAVE_DBUS" = yes && test "${opsys}" != "gnu-linux"; then
2916 echo "D-Bus integration has been tested for GNU/Linux only."
2917 echo
2918fi
f0e04acc 2919
05cf15c6 2920
9ec10b2f 2921# Remove any trailing slashes in these variables.
91b5aa9a 2922[test "${prefix}" != NONE &&
9ec10b2f
DM
2923 prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
2924test "${exec_prefix}" != NONE &&
91b5aa9a 2925 exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
9ec10b2f 2926
3d4c9dbd
GM
2927# Now get this: Some word that is part of the ${srcdir} directory name
2928# or the ${configuration} value might, just might, happen to be an
2929# identifier like `sun4' or `i386' or something, and be predefined by
2930# the C preprocessor to some helpful value like 1, or maybe the empty
2931# string. Needless to say consequent macro substitutions are less
2932# than conducive to the makefile finding the correct directory.
2933[cpp_undefs="`echo $srcdir $configuration $canonical |
2934 sed -e 's/[^a-zA-Z0-9_]/ /g' -e 's/^/ /' -e 's/ *$//' \
2935 -e 's/ */ -U/g' -e 's/-U[0-9][^ ]*//g'`"]
2936
3aa40e0e
GM
2937## Check if the C preprocessor will convert `..' to `. .'. If so, set
2938## CPP_NEED_TRADITIONAL to `yes' so that the code to generate Makefile
2939## from Makefile.c can correctly provide the arg `-traditional' to the
2940## C preprocessor.
2941
2942AC_EGREP_CPP(yes..yes,
2943 [yes..yes],
2944 CPP_NEED_TRADITIONAL=no,
2945 CPP_NEED_TRADITIONAL=yes)
2946
5f8c8f00 2947AC_OUTPUT(Makefile lib-src/Makefile.c:lib-src/Makefile.in oldXMenu/Makefile \
62b1c28f
GM
2948 doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
2949 doc/lispref/Makefile src/Makefile.c:src/Makefile.in \
2950 lwlib/Makefile lisp/Makefile leim/Makefile, [
7bbbba31 2951
b63df577 2952### Make the necessary directories, if they don't exist.
e0a3686b 2953for dir in etc lisp ; do
b3947967 2954 test -d ${dir} || mkdir ${dir}
9ec10b2f
DM
2955done
2956
5f8c8f00
RS
2957# Build src/Makefile from ${srcdir}/src/Makefile.c
2958# and lib-src/Makefile from ${srcdir}/lib-src/Makefile.c
2959# This must be done after src/config.h is built, since we rely on that file.
9ec10b2f 2960
6a4bb05d 2961echo creating src/epaths.h
f8f7ab54 2962${MAKE-make} epaths-force
ab85d355 2963
c776f30b
GM
2964# As of 2000-11-19, newest development versions of GNU cpp preprocess
2965# `..' to `. .' unless invoked with -traditional
2966
3aa40e0e 2967if test "x$GCC" = xyes && test "x$CPP_NEED_TRADITIONAL" = xyes; then
c776f30b
GM
2968 CPPFLAGS="$CPPFLAGS -traditional"
2969fi
2970
9ec10b2f
DM
2971echo creating lib-src/Makefile
2972( cd lib-src
2973 rm -f junk.c junk1.c junk2.c
2974 sed -e '/start of cpp stuff/q' \
5f8c8f00 2975 < Makefile.c > junk1.c
9ec10b2f 2976 sed -e '1,/start of cpp stuff/d'\
3b74127d 2977 -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
5f8c8f00 2978 < Makefile.c > junk.c
3d4c9dbd 2979 $CPP $cpp_undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
9ec10b2f
DM
2980 sed -e 's/^ / /' -e '/^#/d' -e '/^[ \f]*$/d' > junk2.c
2981 cat junk1.c junk2.c > Makefile.new
2982 rm -f junk.c junk1.c junk2.c
2983 chmod 444 Makefile.new
2984 mv -f Makefile.new Makefile
2985)
2986
2987echo creating src/Makefile
2988( cd src
2989 rm -f junk.c junk1.c junk2.c
2990 sed -e '/start of cpp stuff/q' \
5f8c8f00 2991 < Makefile.c > junk1.c
9ec10b2f 2992 sed -e '1,/start of cpp stuff/d'\
3b74127d 2993 -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
5f8c8f00 2994 < Makefile.c > junk.c
3d4c9dbd 2995 $CPP $cpp_undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
9ec10b2f
DM
2996 sed -e 's/^ / /' -e '/^#/d' -e '/^[ \f]*$/d' > junk2.c
2997 cat junk1.c junk2.c > Makefile.new
2998 rm -f junk.c junk1.c junk2.c
2999 chmod 444 Makefile.new
3000 mv -f Makefile.new Makefile
3001)
8b66759a 3002
e9b2a022 3003if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
8b66759a 3004 echo creating src/.gdbinit
e9b2a022 3005 echo source $srcdir/src/.gdbinit > src/.gdbinit
8b66759a
DM
3006fi
3007
3d4c9dbd 3008], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPP_NEED_TRADITIONAL="$CPP_NEED_TRADITIONAL" CPPFLAGS="$CPPFLAGS" cpp_undefs="$cpp_undefs"])
464c7d2d 3009
ab5796a9
MB
3010m4_if(dnl Do not change this comment
3011 arch-tag: 156a4dd5-bddc-4d18-96ac-f37742cf6a5e
3012)dnl