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