Fix putenv race conditions with undefined behavior.
[emacs.git] / configure.ac
blobd94700018b138634ff85321d74ce4e451bf192c2
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/>.
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)
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
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
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)
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
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])])
95 dnl Check for GNU Make and possibly set MAKE before running AM_INIT_AUTOMAKE.
96 [emacs_check_gnu_make ()
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
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'.]])
132 MAKE=$ac_cv_path_MAKE
133 export MAKE
135 dnl Fairly arbitrary, older versions might work too.
136 AM_INIT_AUTOMAKE(1.11)
138 dnl Canonicalize the configuration name.
139 AC_CANONICAL_HOST
140 canonical=$host
141 configuration=${host_alias-${build_alias-$host}}
143 dnl We get MINGW64 with MSYS2, MINGW32 with MSYS.
144 case $canonical in
145  *-mingw*)
146   . $srcdir/nt/mingw-cfg.site
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
160 dnl Support for --program-prefix, --program-suffix and
161 dnl --program-transform-name options
162 AC_ARG_PROGRAM
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'
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])
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
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
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)
217 AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl
219 OPTION_DEFAULT_OFF([kerberos],[support Kerberos-authenticated POP])
220 if test "$with_kerberos" != no; then
221    AC_DEFINE(KERBEROS)
223 AH_TEMPLATE(KERBEROS,
224             [Define to support Kerberos-authenticated POP mail retrieval.])dnl
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.])
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.])
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.])
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.])
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.]))
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])
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
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.])
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])
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])
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])
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])
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])
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])
352 ## This might be a 'configure' arg.
353 AC_SUBST([ACLOCAL_PATH])
355 ## Makefile.in needs the cache file name.
356 AC_SUBST(cache_file)
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])
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
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
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)
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}
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
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"
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.])
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.])
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.])
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.])
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.])
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.])
460 if test x$ac_glyphs_debug != x ; then
461   AC_DEFINE(GLYPH_DEBUG, 1,
462 [Define this to enable glyphs debugging code.])
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.])
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=
490 AC_SUBST(PROFILING_CFLAGS)
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])
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}"],[])
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.
508 dnl Since Emacs can't find matching pairs of quotes, boundaries are
509 dnl indicated by comments.
510 dnl quotation begins
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.
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.
523 opsys='' unported=no
524 case "${canonical}" in
526   ## GNU/Linux and similar ports
527   *-*-linux* )
528     opsys=gnu-linux
529   ;;
531   ## FreeBSD ports
532   *-*-freebsd* )
533     opsys=freebsd
534   ;;
536   ## DragonFly ports
537   *-*-dragonfly* )
538     opsys=dragonfly
539   ;;
541   ## FreeBSD kernel + glibc based userland
542   *-*-kfreebsd*gnu* )
543     opsys=gnu-kfreebsd
544   ;;
546   ## NetBSD ports
547   *-*-netbsd* )
548     opsys=netbsd
549   ;;
551   ## OpenBSD ports
552   *-*-openbsd* | *-*-mirbsd* )
553     opsys=openbsd
554   ;;
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   ;;
573   ## Cygwin ports
574   *-*-cygwin )
575     opsys=cygwin
576   ;;
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   ;;
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   ;;
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   ;;
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   ;;
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   ;;
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   ;;
679   * )
680     unported=yes
681   ;;
682 esac
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
700 dnl quotation ends
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.])
709 #### Choose a compiler.
711 dnl Don't bother to test for C89.
712 AC_DEFUN([_AC_PROG_CC_C89], [$2])
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
721 dnl Emacs needs C99 or later.
722 gl_PROG_CC_C99
724 AM_PROG_CC_C_O
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"
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"])
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])
743 # Initialize gnulib right after choosing the compiler.
744 dnl Amongst other things, this sets AR and ARFLAGS.
745 gl_EARLY
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
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
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]
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])])
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 '
833   # This, $nw, is the list of warnings we disable.
834   nw=
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])
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.
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"
864   # Emacs's use of alloca inhibits protecting the stack.
865   nw="$nw -Wstack-protector"
867   # Emacs's use of partly-pure functions such as CHECK_TYPE make this
868   # option problematic.
869   nw="$nw -Wsuggest-attribute=pure"
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"
878   if test $emacs_cv_clang = yes; then
879     nw="$nw -Wcast-align"
880   fi
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])
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
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])
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"
918   gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
919   AC_SUBST([GNULIB_WARN_CFLAGS])
922 edit_cflags="
923   s,///*,/,g
924   s/^/ /
925   s/ -I/ $isystem/g
926   s/^ //
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
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])
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
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
1012 AC_MSG_CHECKING([whether ln -s works for files in the same directory])
1013 rm -f conf$$ conf$$.file
1015 LN_S_FILEONLY='cp -p'
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
1035 rm -f conf$$ conf$$.file
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])
1043 AC_SUBST(LN_S_FILEONLY)
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"
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)
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)
1070 test $with_compress_install != yes && test -n "$GZIP_PROG" && \
1071    GZIP_PROG=" # $GZIP_PROG # (disabled by configure --without-compress-install)"
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
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
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
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
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
1138 AC_SUBST(HAVE_MAKEINFO)
1140 if test $opsys = mingw32; then
1141    DOCMISC_W32=efaq-w32
1142 else
1143    DOCMISC_W32=
1145 AC_SUBST(DOCMISC_W32)
1147 dnl Add our options to ac_link now, after it is set up.
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"
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.
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"
1178 LDFLAGS="$LDFLAGS $LDFLAGS_NOCOMBRELOC"
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)])
1186 LDFLAGS="$late_LDFLAGS"
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])])
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
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]])
1216 AC_SUBST(CANNOT_DUMP)
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
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    ;;
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    ;;
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    ;;
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)
1283 ac_link="$ac_link $LD_SWITCH_SYSTEM"
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
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)
1326 AC_SUBST(UNEXEC_OBJ)
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
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)
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" ;;
1350   freebsd|dragonfly) LIBS_SYSTEM="-lutil" ;;
1352   hpux*) LIBS_SYSTEM="-l:libdld.sl" ;;
1354   sol2*) LIBS_SYSTEM="-lsocket -lnsl" ;;
1356   ## Motif needs -lgen.
1357   unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
1358 esac
1360 AC_SUBST(LIBS_SYSTEM)
1362 ### Make sure subsequent tests use flags consistent with the build flags.
1364 if test x"${OVERRIDE_CPPFLAGS}" != x; then
1365   CPPFLAGS="${OVERRIDE_CPPFLAGS}"
1366 else
1367   CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
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])
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
1384 LIBS=$OLD_LIBS
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|-|/|'`
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     ;;
1416   sol2* | unixware )
1417     SYSTEM_TYPE=usg-unix-v
1418     ;;
1420 esac
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'.])
1427 pre_PKG_CONFIG_CFLAGS=$CFLAGS
1428 pre_PKG_CONFIG_LIBS=$LIBS
1430 PKG_PROG_PKG_CONFIG(0.9.0)
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])])])
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.])
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)
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
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
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
1517   AC_SUBST(CFLAGS_SOUND)
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)
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)
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.])
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
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                                           ]])
1570 AC_HEADER_SYS_WAIT
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])
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])
1599 dnl Check for endianness.
1600 dnl AC_C_BIGENDIAN is done by gnulib.
1602 dnl check for Make feature
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
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)
1633 lisp_frag=$srcdir/src/lisp.mk
1634 AC_SUBST_FILE(lisp_frag)
1637 dnl checks for operating system services
1638 AC_SYS_LONG_FILE_NAMES
1640 #### Choose a window system.
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.
1647 window_system=none
1648 AC_PATH_X
1649 if test "$no_x" != yes; then
1650   window_system=x11
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
1680 AC_SUBST(LD_SWITCH_X_SITE_RPATH)
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"`
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
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
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
1759   dnl This is only used while we test the NS headers, it gets reset below.
1760   CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS"
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.])])
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])
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
1813 AC_SUBST(LIBS_GNUSTEP)
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
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
1843   NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o $macfont_file"
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)
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
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
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
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)
1950 if test "${HAVE_W32}" = "yes"; then
1951   window_system=w32
1952   with_xft=no
1955 ## $window_system is now set to the window system we will
1956 ## ultimately use.
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])
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])
1970 term_header=
1971 HAVE_X_WINDOWS=no
1972 HAVE_X11=no
1973 USE_X_TOOLKIT=none
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
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
2024 # Does the opsystem file prohibit the use of the GNU malloc?
2025 # Assume not, until told otherwise.
2026 GNU_MALLOC=yes
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
2045 system_malloc=$emacs_cv_sanitize_address
2047 hybrid_malloc=
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
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
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
2089 AC_SUBST(GMALLOC_OBJ)
2090 AC_SUBST(VMLIMIT_OBJ)
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.])
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
2110 if test x"${REL_ALLOC}" = x; then
2111   REL_ALLOC=${GNU_MALLOC}
2114 use_mmap_for_buffers=no
2115 case "$opsys" in
2116   cygwin|mingw32|freebsd|irix6-5) use_mmap_for_buffers=yes ;;
2117 esac
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
2125 LIBS="$LIBS_SYSTEM $LIBS"
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")
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
2163 AC_SUBST([LIB_PTHREAD])
2166 dnl Check for need for bigtoc support on IBM AIX
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
2176     LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
2177     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int i;]])], [], [gdb_cv_bigtoc=])
2178   ])
2179   ;;
2180 esac
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.
2185 REAL_CFLAGS="$CFLAGS"
2186 REAL_CPPFLAGS="$CPPFLAGS"
2187 REAL_LIBS="$LIBS"
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"
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
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
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
2248   AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
2249 XScreenNumberOfScreen)
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
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"
2286     EMACS_CHECK_MODULES([RSVG], [$RSVG_MODULE])
2287     AC_SUBST(RSVG_CFLAGS)
2288     AC_SUBST(RSVG_LIBS)
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
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)
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
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"
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
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"
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
2376 OLD_CFLAGS=$CFLAGS
2377 OLD_LIBS=$LIBS
2379 if test x"$pkg_check_gtk" = xyes; then
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
2431 AC_SUBST(GTK_OBJ)
2434 if test "${HAVE_GTK}" = "yes"; then
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
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
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
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
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)
2479  term_header=gtkutil.h
2482 CFLAGS=$OLD_CFLAGS
2483 LIBS=$OLD_LIBS
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
2508 AC_SUBST(DBUS_CFLAGS)
2509 AC_SUBST(DBUS_LIBS)
2510 AC_SUBST(DBUS_OBJ)
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])
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
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
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"
2571 AC_SUBST(SETTINGS_CFLAGS)
2572 AC_SUBST(SETTINGS_LIBS)
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
2585 AC_SUBST(LIBSELINUX_LIBS)
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
2603   # Windows loads GnuTLS dynamically
2604   if test "${opsys}" = "mingw32"; then
2605     LIBGNUTLS_LIBS=
2606   fi
2609 AC_SUBST(LIBGNUTLS_LIBS)
2610 AC_SUBST(LIBGNUTLS_CFLAGS)
2612 NOTIFY_OBJ=
2613 NOTIFY_SUMMARY=no
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
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
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
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
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
2666 if test -n "$NOTIFY_OBJ"; then
2667    AC_DEFINE(USE_FILE_NOTIFY, 1, [Define to 1 if using file notifications.])
2669 AC_SUBST(NOTIFY_OBJ)
2670 AC_SUBST(GFILENOTIFY_CFLAGS)
2671 AC_SUBST(GFILENOTIFY_LIBS)
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
2725 X_TOOLKIT_TYPE=$USE_X_TOOLKIT
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
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.
2766 AC_SUBST(LIBXTR6)
2767 AC_SUBST(LIBXMU)
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.])])
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.
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
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)
2865 dnl `--with-xim' now controls only the initial value of use_xim at run time.
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.])
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
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.
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
2919     if test "$with_xft" != no; then
2920       EMACS_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.2.0])
2921       with_xft=$HAVE_FONTCONFIG
2922     fi
2924     if test "x${with_xft}" != "xno"; then
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>]])
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"
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])
2967        test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype)
2968     fi
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
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
3007 ### End of font-backend (under X11) section.
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)
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)
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
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
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
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)
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
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
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
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
3107 AC_SUBST(LIBXPM)
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
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
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
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
3153 AC_SUBST(LIBJPEG)
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
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
3172 AC_SUBST(LIBZ)
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
3220 if test $HAVE_PNG = yes; then
3221   AC_DEFINE([HAVE_PNG], [1], [Define to 1 if you have the png library.])
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
3235 AC_SUBST(LIBPNG)
3236 AC_SUBST(PNG_CFLAGS)
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
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
3264 AC_SUBST(LIBTIFF)
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)])])
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
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
3297 AC_SUBST(LIBGIF)
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"
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
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)])
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
3336 AC_SUBST(LIBGPM)
3338 dnl Check for malloc/malloc.h on darwin
3339 AC_CHECK_HEADERS_ONCE(malloc/malloc.h)
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
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)])
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
3371 AC_SUBST(LIBXSM)
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"
3400     AC_DEFINE(HAVE_XRANDR, 1, [Define to 1 if you have the XRandr extension.])
3401   fi
3403 AC_SUBST(XRANDR_CFLAGS)
3404 AC_SUBST(XRANDR_LIBS)
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
3424 AC_SUBST(XINERAMA_CFLAGS)
3425 AC_SUBST(XINERAMA_LIBS)
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
3445 AC_SUBST(XFIXES_CFLAGS)
3446 AC_SUBST(XFIXES_LIBS)
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
3482 AC_SUBST(LIBXML2_LIBS)
3483 AC_SUBST(LIBXML2_CFLAGS)
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
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.])
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).])
3506   OLD_LIBS=$LIBS
3507   LIBS="$LIBS_MAIL $LIBS"
3508   AC_CHECK_FUNCS(touchlock)
3509   LIBS=$OLD_LIBS
3510 else
3511   LIBS_MAIL=
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
3532 AC_CHECK_HEADERS_ONCE(maillock.h)
3533 AC_SUBST(LIBS_MAIL)
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" ;;
3542   gnu|freebsd|dragonfly|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
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     ;;
3565   mingw32)
3566     mail_lock="none-needed" ;;
3567 esac
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.]) ;;
3573   lockf) AC_DEFINE(MAIL_USE_LOCKF, 1, [Define if the mailer uses lockf to interlock the mail spool.]) ;;
3575   none-needed) ;;
3577   *) BLESSMAIL_TARGET="need-blessmail" ;;
3578 esac
3579 AC_SUBST(BLESSMAIL_TARGET)
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
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])
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.])
3615 AC_CHECK_HEADERS_ONCE(sys/un.h)
3617 AC_FUNC_FSEEKO
3619 # UNIX98 PTYs.
3620 AC_CHECK_FUNCS(grantpt)
3622 # PTY-related GNU extensions.
3623 AC_CHECK_FUNCS(getpt posix_openpt)
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        }]])
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
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.])
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" ;;
3693   gnu*) test -z "$LIBS_TERMCAP" && LIBS_TERMCAP="-lncurses" ;;
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)])
3704     AC_MSG_RESULT($emacs_cv_freebsd_terminfo)
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     ;;
3714   mingw32)
3715     TERMINFO=no
3716     LIBS_TERMCAP=
3717     ;;
3719   netbsd)
3720     if test "x$LIBS_TERMCAP" != "x-lterminfo"; then
3721       TERMINFO=no
3722       LIBS_TERMCAP="-ltermcap"
3723     fi
3724     ;;
3726   openbsd | dragonfly) LIBS_TERMCAP="-lncurses" ;;
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" ;;
3735 esac
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
3742 if test "X$LIBS_TERMCAP" = "X-lncurses"; then
3743   AC_DEFINE(USE_NCURSES, 1, [Define to 1 if you use ncurses.])
3745 AC_SUBST(LIBS_TERMCAP)
3746 AC_SUBST(TERMCAP_OBJ)
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.])
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])])
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
3784 if test $opsys != darwin; then
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
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
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)])
3828   if test x"$hesiod" = xyes; then
3829     LIBHESIOD=-lhesiod
3830   fi
3832 AC_SUBST(LIBHESIOD)
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=
3840 AC_SUBST(LIBRESOLV)
3842 # These tell us which Kerberos-related libraries to use.
3843 COM_ERRLIB=
3844 CRYPTOLIB=
3845 KRB5LIB=
3846 DESLIB=
3847 KRB4LIB=
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
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
3910 AC_SUBST(COM_ERRLIB)
3911 AC_SUBST(CRYPTOLIB)
3912 AC_SUBST(KRB5LIB)
3913 AC_SUBST(DESLIB)
3914 AC_SUBST(KRB4LIB)
3916 AC_CHECK_HEADERS(valgrind/valgrind.h)
3918 AC_CHECK_FUNCS_ONCE(tzalloc tzset)
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)
3925 if test $ok_so_far = yes; then
3926   AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
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.])
3934 AC_FUNC_FORK
3936 AC_CHECK_FUNCS(snprintf)
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.
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
3967 CFLAGS="$OLDCFLAGS"
3968 LIBS="$OLDLIBS"
3969 AC_SUBST(XGSELOBJ)
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).])
3983 AC_TYPE_MBSTATE_T
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.
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
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.])
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.])
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.])
4016 AH_TEMPLATE(INTERNAL_TERMINAL, [This is substituted when $TERM is "internal".])
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"])
4026 if test "${opsys}" = "mingw32"; then
4027   SEPCHAR=';'
4028 else
4029   SEPCHAR=':'
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)
4043 dnl Everybody supports this, except MS-DOS.
4044 AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.])
4046 AC_DEFINE(USER_FULL_NAME, [pw->pw_gecos], [How to get a user's full name.])
4049 AC_DEFINE(DIRECTORY_SEP, ['/'],
4050   [Character that separates directories in a file name.])
4052 if test "${opsys}" = "mingw32"; then
4053   AC_DEFINE(IS_DEVICE_SEP(_c_), [((_c_) == ':')],
4054     [Returns true if character is a device separator.])
4056   AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == '/' || (_c_) == '\\')],
4057     [Returns true if character is a directory separator.])
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.])
4065   AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == DIRECTORY_SEP)],
4066     [Returns true if character is a directory separator.])
4068   AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_))],
4069     [Returns true if character is any form of separator.])
4072 AH_TEMPLATE(NO_EDITRES, [Define if XEditRes should not be used.])
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     ;;
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
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
4100 emacs_broken_SIGIO=no
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     ;;
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     ;;
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
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
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
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
4174 dnl Used in sound.c
4175 AC_DEFINE_UNQUOTED(DEFAULT_SOUND_DEVICE, "$sound_device",
4176   [Name of the default sound device.])
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.
4183 dnl Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)
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.
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.
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
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
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.])
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     ;;
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     ;;
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     ;;
4263   gnu | openbsd )
4264     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
4265     ;;
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     ;;
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     ;;
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     ;;
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     ;;
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
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
4344 AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by
4345 "typing" a signal character on the pty.])
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     ;;
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 )
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)
4366     AC_MSG_RESULT([$emacs_signals_via_chars])
4367     test $emacs_signals_via_chars = yes && AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
4368     ;;
4369 esac
4372 AH_TEMPLATE(TAB3, [Undocumented.])
4374 case $opsys in
4375   darwin) AC_DEFINE(TAB3, OXTABS) ;;
4377   gnu | dragonfly | freebsd | netbsd | openbsd )
4378     AC_DEFINE(TABDLY, OXTABS, [Undocumented.])
4379     AC_DEFINE(TAB3, OXTABS)
4380     ;;
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     ;;
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
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.])
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
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?
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.])
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.])
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.])
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
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
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.])
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     ;;
4517   cygwin)
4518     AC_DEFINE(CYGWIN, 1, [Define if the system is Cygwin.])
4519     ;;
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     ;;
4528   gnu-linux | gnu-kfreebsd )
4529     AC_DEFINE(USG, [])
4530     AC_DEFINE(GNU_LINUX, [], [Define if ths system is compatible with GNU/Linux.])
4531     ;;
4533   hpux*)
4534     AC_DEFINE(USG, [])
4535     AC_DEFINE(HPUX, [], [Define if the system is HPUX.])
4536     ;;
4538   irix6-5)
4539     AC_DEFINE(USG, [])
4540     AC_DEFINE(USG5_4, [])
4541     AC_DEFINE(IRIX6_5, [], [Define if the system is IRIX.])
4542     ;;
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     ;;
4552   sol2*)
4553     AC_DEFINE(USG, [])
4554     AC_DEFINE(USG5_4, [])
4555     AC_DEFINE(SOLARIS2, [], [Define if the system is Solaris.])
4556     ;;
4558   unixware)
4559     AC_DEFINE(USG, [])
4560     AC_DEFINE(USG5_4, [])
4561     ;;
4562 esac
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        ;;
4571      mingw32)
4572        emacs_cv_usable_FIONREAD=yes
4573        ;;
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.])
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
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     ;;
4617   irix6-5)
4618     AC_DEFINE(PREFER_VSUSP, 1, [Define if process_send_signal should
4619       use VSUSP instead of VSWTCH.])
4620     ;;
4622   sol2-10)
4623     AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes
4624       on Solaris.])
4625     ;;
4626 esac
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"
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'.])
4641 version=$PACKAGE_VERSION
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)
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)
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.])
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.])
4702 case $opsys in
4703   mingw32)
4704     AC_DEFINE(config_opsysfile, <ms-w32.h>, [])
4705     ;;
4706 esac
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)
4724 AC_SUBST(XMENU_OBJ)
4725 AC_SUBST(XOBJ)
4726 AC_SUBST(FONT_OBJ)
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         ;;
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         ;;
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
4758 AC_SUBST(WIDGET_OBJ)
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)
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
4775 AC_SUBST(LIBXT_OTHER)
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=
4784 AC_SUBST(LIBX_OTHER)
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'
4793 AC_SUBST(LIBXMENU)
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.])
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.])
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.])
4822   test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
4824 AC_SUBST(RALLOC_OBJ)
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=
4840 AC_SUBST(CYGWIN_OBJ)
4841 AC_SUBST(PRE_ALLOC_OBJ)
4842 AC_SUBST(POST_ALLOC_OBJ)
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
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
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
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,,"`
4892 case "$opsys" in
4893   aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
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"
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    ;;
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)" ;;
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    ;;
4938   openbsd) LD_SWITCH_SYSTEM_TEMACS='-nopie' ;;
4940   *) LD_SWITCH_SYSTEM_TEMACS= ;;
4941 esac
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
4950 LD_SWITCH_SYSTEM_TEMACS="$LDFLAGS_NOCOMBRELOC $LD_SWITCH_SYSTEM_TEMACS"
4952 AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
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"
4961 AC_SUBST(WINDOW_SYSTEM_OBJ)
4963 AH_TOP([/* GNU Emacs site configuration template file.
4965 Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2014
4966   Free Software Foundation, Inc.
4968 This file is part of GNU Emacs.
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.
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.
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/>.  */
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
4991 AH_BOTTOM([#include <conf_post.h>
4993 #endif /* EMACS_CONFIG_H */
4996 Local Variables:
4997 mode: c
4998 End:
5000 ])dnl
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"
5010 if test $USE_ACL -ne 0; then
5011   ACL_SUMMARY="yes $LIB_ACL"
5012 else
5013   ACL_SUMMARY=no
5016 echo "
5017 Configured for \`${canonical}'.
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}"
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"
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"
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
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.])
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}"
5064 echo "  Does Emacs support sound?                               ${HAVE_SOUND}"
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}"
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}"
5082 echo "  Does Emacs use toolkit scroll bars?                     ${USE_TOOLKIT_SCROLL_BARS}"
5083 echo
5085 if test -n "${EMACSDATA}"; then
5086    echo "  Environment variable EMACSDATA set to:                  $EMACSDATA"
5088 if test -n "${EMACSDOC}"; then
5089    echo "  Environment variable EMACSDOC set to:                   $EMACSDOC"
5092 echo
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
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
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,'`]
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)
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"
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])
5151 dnl test/ is not present in release tarfiles.
5152 opt_makefile=test/automated/Makefile
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])
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
5170 SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'`
5172 AC_SUBST(SUBDIR_MAKEFILES_IN)
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"])
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
5199 AC_OUTPUT
5201 test "$MAKE" = make || AC_MSG_NOTICE([Now you can run '$MAKE'.])