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