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