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