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