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