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