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