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