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