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