* net/tramp-sh.el (tramp-remote-process-environment): Set "LC_ALL" to
[emacs.git] / configure.ac
blob9c66a7d2d855d561efd4551a45aa108155982b50
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 for flag in $CFLAGS -; do
701   case $flag in
702     -g*3)
703       AC_DEFINE([DEBUGGER_SEES_C_MACROS], 1,
704         [Define to 1 if C macros are visible to the debugger, as with
705          GCC's -g3 option.])
706       break;;
707   esac
708 done
710 AC_ARG_ENABLE([gcc-warnings],
711   [AS_HELP_STRING([--enable-gcc-warnings],
712                   [turn on lots of GCC warnings/errors. This is intended for
713                    developers, and may generate false alarms when used
714                    with older or non-GNU development tools.])],
715   [case $enableval in
716      yes|no) ;;
717      *)      AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
718    esac
719    gl_gcc_warnings=$enableval],
720   [gl_gcc_warnings=no]
723 AC_ARG_ENABLE(link-time-optimization,
724 [AS_HELP_STRING([--enable-link-time-optimization],
725                 [build emacs with link-time optimization.
726                  This is supported only for GCC since 4.5.0.])],
727 if test "${enableval}" != "no"; then
728    AC_MSG_CHECKING([whether link-time optimization is supported])
729    ac_lto_supported=no
730    if test x$GCC = xyes; then
731       CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null`
732       if test x$CPUS != x; then
733          LTO="-flto=$CPUS"
734       else
735          LTO="-flto"
736       fi
737       old_CFLAGS=$CFLAGS
738       CFLAGS="$CFLAGS $LTO"
739       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
740         [ac_lto_supported=yes], [ac_lto_supported=no])
741       CFLAGS="$old_CFLAGS"
742    fi
743    AC_MSG_RESULT([$ac_lto_supported])
744    if test "$ac_lto_supported" = "yes"; then
745       CFLAGS="$CFLAGS $LTO"
746    fi
749 # gl_GCC_VERSION_IFELSE([major], [minor], [run-if-found], [run-if-not-found])
750 # ------------------------------------------------
751 # If $CPP is gcc-MAJOR.MINOR or newer, then run RUN-IF-FOUND.
752 # Otherwise, run RUN-IF-NOT-FOUND.
753 AC_DEFUN([gl_GCC_VERSION_IFELSE],
754   [AC_PREPROC_IFELSE(
755     [AC_LANG_PROGRAM(
756       [[
757 #if ($1) < __GNUC__ || (($1) == __GNUC__ && ($2) <= __GNUC_MINOR__)
758 /* ok */
759 #else
760 # error "your version of gcc is older than $1.$2"
761 #endif
762       ]]),
763     ], [$3], [$4])
764   ]
767 # clang is unduly picky about some things.
768 AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang],
769   [AC_COMPILE_IFELSE(
770      [AC_LANG_PROGRAM([[
771           #ifndef __clang__
772             #error "not clang"
773           #endif
774         ]])],
775      [emacs_cv_clang=yes],
776      [emacs_cv_clang=no])])
778 # When compiling with GCC, prefer -isystem to -I when including system
779 # include files, to avoid generating useless diagnostics for the files.
780 if test "$gl_gcc_warnings" != yes; then
781   isystem='-I'
782   if test "$emacs_cv_clang" = yes
783   then
784      # Turn off some warnings if supported.
785      gl_WARN_ADD([-Wno-switch])
786      gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare])
787      gl_WARN_ADD([-Wno-pointer-sign])
788   fi
789 else
790   isystem='-isystem '
792   # This, $nw, is the list of warnings we disable.
793   nw=
795   case $with_x_toolkit in
796     lucid | athena | motif)
797        # Old toolkits mishandle 'const'.
798        nw="$nw -Wwrite-strings"
799        ;;
800     *)
801        gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
802        ;;
803   esac
804   AC_SUBST([WERROR_CFLAGS])
806   nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
807   nw="$nw -Woverlength-strings"     # Not a problem these days
808   nw="$nw -Wlogical-op"             # any use of fwrite provokes this
809   nw="$nw -Wformat-nonliteral"      # we do this a lot
810   nw="$nw -Wvla"                    # warnings in gettext.h
811   nw="$nw -Wnested-externs"         # use of XARGMATCH/verify_function__
812   nw="$nw -Wswitch-default"         # Too many warnings for now
813   nw="$nw -Winline"                 # OK to ignore 'inline'
814   nw="$nw -Wjump-misses-init"       # We sometimes safely jump over init.
815   nw="$nw -Wstrict-overflow"        # OK to optimize assuming that
816                                     # signed overflow has undefined behavior
817   nw="$nw -Wsync-nand"              # irrelevant here, and provokes ObjC warning
818   nw="$nw -Wunsafe-loop-optimizations" # OK to suppress unsafe optimizations
819   nw="$nw -Wbad-function-cast"      # These casts are no worse than others.
821   # Emacs doesn't care about shadowing; see
822   # <http://lists.gnu.org/archive/html/emacs-diffs/2011-11/msg00265.html>.
823   nw="$nw -Wshadow"
825   # Emacs's use of alloca inhibits protecting the stack.
826   nw="$nw -Wstack-protector"
828   # The following line should be removable at some point.
829   nw="$nw -Wsuggest-attribute=pure"
831   # This part is merely for shortening the command line,
832   # since -Wno-FOO needs to be added below regardless.
833   nw="$nw -Wmissing-field-initializers"
834   nw="$nw -Wswitch"
835   nw="$nw -Wtype-limits"
836   nw="$nw -Wunused-parameter"
838   if test $emacs_cv_clang = yes; then
839     nw="$nw -Wcast-align"
840   fi
842   gl_MANYWARN_ALL_GCC([ws])
843   gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
844   for w in $ws; do
845     gl_WARN_ADD([$w])
846   done
847   gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one
848   gl_WARN_ADD([-Wno-sign-compare])     # Too many warnings for now
849   gl_WARN_ADD([-Wno-type-limits])      # Too many warnings for now
850   gl_WARN_ADD([-Wno-switch])           # Too many warnings for now
851   gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
852   gl_WARN_ADD([-Wno-format-nonliteral])
854   # In spite of excluding -Wlogical-op above, it is enabled, as of
855   # gcc 4.5.0 20090517.
856   gl_WARN_ADD([-Wno-logical-op])
858   # More things that clang is unduly picky about.
859   if test $emacs_cv_clang = yes; then
860     gl_WARN_ADD([-Wno-format-extra-args])
861     gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare])
862     gl_WARN_ADD([-Wno-unused-command-line-argument])
863     gl_WARN_ADD([-Wno-unused-value])
864   fi
866   AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
867   AH_VERBATIM([FORTIFY_SOURCE],
868   [/* Enable compile-time and run-time bounds-checking, and some warnings,
869       without upsetting glibc 2.15+. */
870    #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
871    # define _FORTIFY_SOURCE 2
872    #endif
873   ])
874   AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
876   # We use a slightly smaller set of warning options for lib/.
877   # Remove the following and save the result in GNULIB_WARN_CFLAGS.
878   nw=
879   nw="$nw -Wunused-macros"
881   gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
882   AC_SUBST([GNULIB_WARN_CFLAGS])
887 dnl Some other nice autoconf tests.
888 dnl These are commented out, since gl_EARLY and/or Autoconf already does them.
889 dnl AC_PROG_INSTALL
890 dnl AC_PROG_MKDIR_P
891 dnl if test "x$RANLIB" = x; then
892 dnl   AC_PROG_RANLIB
893 dnl fi
896 dnl Sadly, AC_PROG_LN_S is too restrictive.  It also tests whether links
897 dnl can be made to directories.  This is not relevant for our usage, and
898 dnl excludes some cases that work fine for us.  Eg MS Windows or files
899 dnl hosted on AFS, both examples where simple links work, but links to
900 dnl directories fail.  We use a cut-down version instead.
901 dnl AC_PROG_LN_S
903 AC_MSG_CHECKING([whether ln -s works for files in the same directory])
904 rm -f conf$$ conf$$.file
906 LN_S_FILEONLY='cp -p'
908 if (echo >conf$$.file) 2>/dev/null; then
909   if ln -s conf$$.file conf$$ 2>/dev/null; then
910     LN_S_FILEONLY='ln -s'
911   elif ln conf$$.file conf$$ 2>/dev/null; then
912     LN_S_FILEONLY=ln
913   fi
916 rm -f conf$$ conf$$.file
918 if test "$LN_S_FILEONLY" = "ln -s"; then
919    AC_MSG_RESULT([yes])
920 else
921    AC_MSG_RESULT([no, using $LN_S_FILEONLY])
924 AC_SUBST(LN_S_FILEONLY)
927 dnl AC_PROG_LN_S sets LN_S to 'cp -pR' for MinGW, on the premise that 'ln'
928 dnl doesn't support links to directories, as in "ln file dir".  But that
929 dnl use is non-portable, and OTOH MinGW wants to use hard links for Emacs
930 dnl executables at "make install" time.
931 dnl See http://lists.gnu.org/archive/html/emacs-devel/2013-04/msg00475.html
932 dnl for more details.
933 if test "$opsys" = "mingw32"; then
934   LN_S="ln"
937 AC_PATH_PROG(INSTALL_INFO, install-info, :,
938   $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin)
939 dnl Don't use GZIP, which is used by gzip for additional parameters.
940 AC_PATH_PROG(GZIP_PROG, gzip)
942 test $with_compress_install != yes && test -n "$GZIP_PROG" && \
943    GZIP_PROG=" # $GZIP_PROG # (disabled by configure --without-compress-install)"
945 if test $opsys = gnu-linux; then
946   AC_PATH_PROG(PAXCTL, paxctl,,
947     [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin])
948   if test "X$PAXCTL" != X; then
949     AC_MSG_CHECKING([whether binaries have a PT_PAX_FLAGS header])
950     AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
951       [if $PAXCTL -v conftest$EXEEXT >/dev/null 2>&1; then AC_MSG_RESULT(yes)
952       else AC_MSG_RESULT(no); PAXCTL=""; fi])
953   fi
956 ## Need makeinfo >= 4.7 (?) to build the manuals.
957 AC_PATH_PROG(MAKEINFO, makeinfo, no)
958 dnl By this stage, configure has already checked for egrep and set EGREP,
959 dnl or exited with an error if no egrep was found.
960 if test "$MAKEINFO" != "no"; then
961   case `
962     $MAKEINFO --version 2> /dev/null |
963     $EGREP 'texinfo[[^0-9]]*([[1-4]][[0-9]]+|[[5-9]]|4\.[[7-9]]|4\.[[1-6]][[0-9]]+)'
964   ` in
965     '') MAKEINFO=no;;
966   esac
969 ## Makeinfo is unusual.  For a released Emacs, the manuals are
970 ## pre-built, and not deleted by the normal clean rules.  makeinfo is
971 ## therefore in the category of "special tools" not normally required, which
972 ## configure does not have to check for (eg autoconf itself).
973 ## In a Bazaar checkout on the other hand, the manuals are not included.
974 ## So makeinfo is a requirement to build from Bazaar, and configure
975 ## should test for it as it does for any other build requirement.
976 ## We use the presence of $srcdir/info/emacs to distinguish a release,
977 ## with pre-built manuals, from a Bazaar checkout.
978 HAVE_MAKEINFO=yes
980 if test "$MAKEINFO" = "no"; then
981   MAKEINFO=makeinfo
982   if test "x${with_makeinfo}" = "xno"; then
983     HAVE_MAKEINFO=no
984   elif test ! -e "$srcdir/info/emacs" && test ! -e "$srcdir/info/emacs.info"; then
985     AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.7, and your
986 source tree does not seem to have pre-built manuals in the `info' directory.
987 Either install a suitable version of makeinfo, or re-run configure
988 with the `--without-makeinfo' option to build without the manuals.] )
989   fi
991 AC_SUBST(HAVE_MAKEINFO)
993 dnl Just so that there is only a single place we need to edit.
994 INFO_EXT=.info
995 INFO_OPTS=--no-split
996 AC_SUBST(INFO_EXT)
997 AC_SUBST(INFO_OPTS)
999 if test $opsys = mingw32; then
1000    DOCMISC_W32=efaq-w32
1001 else
1002    DOCMISC_W32=
1004 AC_SUBST(DOCMISC_W32)
1006 dnl Add our options to ac_link now, after it is set up.
1008 if test x$GCC = xyes; then
1009   test "x$GCC_LINK_TEST_OPTIONS" != x && \
1010     ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
1011 else
1012   test "x$NON_GCC_LINK_TEST_OPTIONS" != x && \
1013     ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
1016 dnl We need -znocombreloc if we're using a relatively recent GNU ld.
1017 dnl If we can link with the flag, it shouldn't do any harm anyhow.
1018 dnl (Don't use `-z nocombreloc' as -z takes no arg on Irix.)
1019 dnl Treat GCC specially since it just gives a non-fatal `unrecognized option'
1020 dnl if not built to support GNU ld.
1022 dnl For a long time, -znocombreloc was added to LDFLAGS rather than
1023 dnl LD_SWITCH_SYSTEM_TEMACS.  That is:
1024 dnl * inappropriate, as LDFLAGS is a user option but this is essential.
1025 dnl   Eg "make LDFLAGS=... all" could run into problems,
1026 dnl   http://bugs.debian.org/684788
1027 dnl * unnecessary, since temacs is the only thing that actually needs it.
1028 dnl   Indeed this is where it was originally, prior to:
1029 dnl   http://lists.gnu.org/archive/html/emacs-pretest-bug/2004-03/msg00170.html
1030 late_LDFLAGS="$LDFLAGS"
1031 if test x$GCC = xyes; then
1032   LDFLAGS_NOCOMBRELOC="-Wl,-znocombreloc"
1033 else
1034   LDFLAGS_NOCOMBRELOC="-znocombreloc"
1037 LDFLAGS="$LDFLAGS $LDFLAGS_NOCOMBRELOC"
1039 AC_MSG_CHECKING([for -znocombreloc])
1040 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
1041   [AC_MSG_RESULT(yes)],
1042   LDFLAGS_NOCOMBRELOC=
1043   [AC_MSG_RESULT(no)])
1045 LDFLAGS="$late_LDFLAGS"
1047 dnl The function dump-emacs will not be defined and temacs will do
1048 dnl (load "loadup") automatically unless told otherwise.
1049 test "x$CANNOT_DUMP" = "x" && CANNOT_DUMP=no
1050 case "$opsys" in
1051   your-opsys-here) CANNOT_DUMP=yes ;;
1052 esac
1054 test "$CANNOT_DUMP" = "yes" && \
1055   AC_DEFINE(CANNOT_DUMP, 1, [Define if Emacs cannot be dumped on your system.])
1057 AC_SUBST(CANNOT_DUMP)
1060 UNEXEC_OBJ=unexelf.o
1061 case "$opsys" in
1062   # MSDOS uses unexcoff.o
1063   aix4-2)
1064    UNEXEC_OBJ=unexaix.o
1065    ;;
1066   cygwin)
1067    UNEXEC_OBJ=unexcw.o
1068    ;;
1069   darwin)
1070    UNEXEC_OBJ=unexmacosx.o
1071    ;;
1072   hpux10-20 | hpux11)
1073    UNEXEC_OBJ=unexhp9k800.o
1074    ;;
1075   mingw32)
1076    UNEXEC_OBJ=unexw32.o
1077    ;;
1078   sol2-10)
1079    # Use the Solaris dldump() function, called from unexsol.c, to dump
1080    # emacs, instead of the generic ELF dump code found in unexelf.c.
1081    # The resulting binary has a complete symbol table, and is better
1082    # for debugging and other observability tools (debuggers, pstack, etc).
1083    #
1084    # If you encounter a problem using dldump(), please consider sending
1085    # a message to the OpenSolaris tools-linking mailing list:
1086    #      http://mail.opensolaris.org/mailman/listinfo/tools-linking
1087    #
1088    # It is likely that dldump() works with older Solaris too, but this has
1089    # not been tested, so for now this change is for Solaris 10 or newer.
1090    UNEXEC_OBJ=unexsol.o
1091    ;;
1092 esac
1094 LD_SWITCH_SYSTEM=
1095 case "$opsys" in
1096   freebsd|dragonfly)
1097    ## Let `ld' find image libs and similar things in /usr/local/lib.
1098    ## The system compiler, GCC, has apparently been modified to not
1099    ## look there, contrary to what a stock GCC would do.
1100 ### It's not our place to do this.  See bug#10313#17.
1101 ###   LD_SWITCH_SYSTEM=-L/usr/local/lib
1102       :
1103    ;;
1105   gnu-linux)
1106    ## cpp test was "ifdef __mips__", but presumably this is equivalent...
1107    case $host_cpu in mips*) LD_SWITCH_SYSTEM="-G 0";; esac
1108    ;;
1110   netbsd)
1111 ### It's not our place to do this.  See bug#10313#17.
1112 ###   LD_SWITCH_SYSTEM="-Wl,-rpath,/usr/pkg/lib -L/usr/pkg/lib -Wl,-rpath,/usr/local/lib -L/usr/local/lib"
1113       :
1114    ;;
1116   openbsd)
1117    ## Han Boetes <han@boetes.org> says this is necessary,
1118    ## otherwise Emacs dumps core on elf systems.
1119    LD_SWITCH_SYSTEM="-Z"
1120    ;;
1121 esac
1122 AC_SUBST(LD_SWITCH_SYSTEM)
1124 ac_link="$ac_link $LD_SWITCH_SYSTEM"
1126 ## This setting of LD_SWITCH_SYSTEM references LD_SWITCH_X_SITE_RPATH,
1127 ## which has not been defined yet.  When this was handled with cpp,
1128 ## it was expanded to null when configure sourced the s/*.h file.
1129 ## Thus LD_SWITCH_SYSTEM had different values in configure and the Makefiles.
1130 ## FIXME it would be cleaner to put this in LD_SWITCH_SYSTEM_TEMACS
1131 ## (or somesuch), but because it is supposed to go at the _front_
1132 ## of LD_SWITCH_SYSTEM, we cannot do that in exactly the same way.
1133 ## Compare with the gnu-linux case below, which added to the end
1134 ## of LD_SWITCH_SYSTEM, and so can instead go at the front of
1135 ## LD_SWITCH_SYSTEM_TEMACS.
1136 case "$opsys" in
1137   netbsd|openbsd)
1138    LD_SWITCH_SYSTEM="\$(LD_SWITCH_X_SITE_RPATH) $LD_SWITCH_SYSTEM" ;;
1139 esac
1142 C_SWITCH_MACHINE=
1143 case $canonical in
1144  alpha*)
1145   AC_CHECK_DECL([__ELF__])
1146   if test "$ac_cv_have_decl___ELF__" = "yes"; then
1147     ## With ELF, make sure that all common symbols get allocated to in the
1148     ## data section.  Otherwise, the dump of temacs may miss variables in
1149     ## the shared library that have been initialized.  For example, with
1150     ## GNU libc, __malloc_initialized would normally be resolved to the
1151     ## shared library's .bss section, which is fatal.
1152     if test "x$GCC" = "xyes"; then
1153       C_SWITCH_MACHINE="-fno-common"
1154     else
1155       AC_MSG_ERROR([Non-GCC compilers are not supported.])
1156     fi
1157   else
1158       dnl This was the unexalpha.c case.  Removed in 24.1, 2010-07-24,
1159       dnl albeit under the mistaken assumption that said file
1160       dnl was no longer used.
1161       AC_MSG_ERROR([Non-ELF systems are not supported since Emacs 24.1.])
1162   fi
1163   ;;
1164 esac
1165 AC_SUBST(C_SWITCH_MACHINE)
1167 AC_SUBST(UNEXEC_OBJ)
1169 C_SWITCH_SYSTEM=
1170 ## Some programs in src produce warnings saying certain subprograms
1171 ## are too complex and need a MAXMEM value greater than 2000 for
1172 ## additional optimization.  --nils@exp-math.uni-essen.de
1173 test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
1174   C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
1175 test "$opsys" = "mingw32" && C_SWITCH_SYSTEM="-mtune=pentium4"
1176 ## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
1177 ## It is redundant in glibc2, since we define _GNU_SOURCE.
1178 AC_SUBST(C_SWITCH_SYSTEM)
1181 LIBS_SYSTEM=
1182 case "$opsys" in
1183   ## IBM's X11R5 uses -lIM and -liconv in AIX 3.2.2.
1184   aix4-2) LIBS_SYSTEM="-lrts -lIM -liconv" ;;
1186   freebsd|dragonfly) LIBS_SYSTEM="-lutil" ;;
1188   hpux*) LIBS_SYSTEM="-l:libdld.sl" ;;
1190   sol2*) LIBS_SYSTEM="-lsocket -lnsl" ;;
1192   ## Motif needs -lgen.
1193   unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
1194 esac
1196 AC_SUBST(LIBS_SYSTEM)
1198 ### Make sure subsequent tests use flags consistent with the build flags.
1200 if test x"${OVERRIDE_CPPFLAGS}" != x; then
1201   CPPFLAGS="${OVERRIDE_CPPFLAGS}"
1202 else
1203   CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
1206 # Suppress obsolescent Autoconf test for size_t; Emacs assumes C89 or better.
1207 AC_DEFUN([AC_TYPE_SIZE_T])
1208 # Likewise for obsolescent test for uid_t, gid_t; Emacs assumes them.
1209 AC_DEFUN([AC_TYPE_UID_T])
1212 LIB_MATH=-lm
1213 dnl Current possibilities handled by sed (aix4-2 -> aix,
1214 dnl gnu-linux -> gnu/linux, etc.):
1215 dnl gnu, gnu/linux, gnu/kfreebsd, aix, cygwin, darwin, hpux, irix.
1216 dnl And special cases: berkeley-unix, usg-unix-v, ms-dos, windows-nt.
1217 SYSTEM_TYPE=`echo $opsys | sed -e 's/[[0-9]].*//' -e 's|-|/|'`
1219 case $opsys in
1220   cygwin )
1221     LIB_MATH=
1222     ;;
1223   darwin )
1224     ## Adding -lm confuses the dynamic linker, so omit it.
1225     LIB_MATH=
1226     ;;
1227   freebsd | dragonfly )
1228     SYSTEM_TYPE=berkeley-unix
1229     ;;
1230   gnu-linux | gnu-kfreebsd )
1231     ;;
1232   hpux10-20 | hpux11 )
1233     ;;
1234   mingw32 )
1235     LIB_MATH=
1236     SYSTEM_TYPE=windows-nt
1237     ;;
1238   dnl NB this may be adjusted below.
1239   netbsd | openbsd )
1240     SYSTEM_TYPE=berkeley-unix
1241     ;;
1243   sol2* | unixware )
1244     SYSTEM_TYPE=usg-unix-v
1245     ;;
1247 esac
1249 AC_SUBST(LIB_MATH)
1250 AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE",
1251   [The type of system you are compiling for; sets `system-type'.])
1254 pre_PKG_CONFIG_CFLAGS=$CFLAGS
1255 pre_PKG_CONFIG_LIBS=$LIBS
1257 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1259 dnl This function definition taken from Gnome 2.0
1260 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
1261 dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
1262 dnl also defines GSTUFF_PKG_ERRORS on error
1263 AC_DEFUN([PKG_CHECK_MODULES], [
1264   succeeded=no
1266   if test "$PKG_CONFIG" = "no" ; then
1267      ifelse([$4], , [AC_MSG_ERROR([
1268       *** 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])
1269   else
1270      PKG_CONFIG_MIN_VERSION=0.9.0
1271      if "$PKG_CONFIG" --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
1272         AC_MSG_CHECKING(for $2)
1274         if "$PKG_CONFIG" --exists "$2" 2>&AS_MESSAGE_LOG_FD &&
1275            $1_CFLAGS=`"$PKG_CONFIG" --cflags "$2" 2>&AS_MESSAGE_LOG_FD` &&
1276            $1_LIBS=`"$PKG_CONFIG" --libs "$2" 2>&AS_MESSAGE_LOG_FD`; then
1277             edit_cflags="
1278               s,///*,/,g
1279               s/^/ /
1280               s/ -I/ $isystem/g
1281               s/^ //
1282             "
1283             $1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"`
1284             $1_LIBS=`AS_ECHO(["$$1_LIBS"]) | sed -e 's,///*,/,g'`
1285             AC_MSG_RESULT([yes CFLAGS='$$1_CFLAGS' LIBS='$$1_LIBS'])
1286             succeeded=yes
1287         else
1288             AC_MSG_RESULT(no)
1289             $1_CFLAGS=""
1290             $1_LIBS=""
1291             ## If we have a custom action on failure, don't print errors, but
1292             ## do set a variable so people can do so.  Do it in a subshell
1293             ## to capture any diagnostics in invoking pkg-config.
1294             $1_PKG_ERRORS=`("$PKG_CONFIG" --print-errors "$2") 2>&1`
1295             ifelse([$4], ,echo "$$1_PKG_ERRORS",)
1296         fi
1298         AC_SUBST($1_CFLAGS)
1299         AC_SUBST($1_LIBS)
1300      else
1301         echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
1302         echo "*** See http://www.freedesktop.org/software/pkgconfig"
1303      fi
1304   fi
1306   if test $succeeded = yes; then
1307      ifelse([$3], , :, [$3])
1308   else
1309      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])
1310   fi
1313 HAVE_SOUND=no
1314 if test "${with_sound}" != "no"; then
1315   # Sound support for GNU/Linux, the free BSDs, and MinGW.
1316   AC_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h soundcard.h],
1317     have_sound_header=yes, [], [
1318     #ifdef __MINGW32__
1319     #define WIN32_LEAN_AND_MEAN
1320     #include <windows.h>
1321     #endif
1322     ])
1323   test "${with_sound}" = "oss" && test "${have_sound_header}" != "yes" && \
1324     AC_MSG_ERROR([OSS sound support requested but not found.])
1326   if test "${with_sound}" = "bsd-ossaudio" || test "${with_sound}" = "yes"; then
1327     # Emulation library used on NetBSD.
1328     AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
1329     test "${with_sound}" = "bsd-ossaudio" && test -z "$LIBSOUND" && \
1330       AC_MSG_ERROR([bsd-ossaudio sound support requested but not found.])
1331     dnl FIXME?  If we did find ossaudio, should we set with_sound=bsd-ossaudio?
1332     dnl Traditionally, we go on to check for alsa too.  Does that make sense?
1333   fi
1334   AC_SUBST(LIBSOUND)
1336   if test "${with_sound}" = "alsa" || test "${with_sound}" = "yes"; then
1337     ALSA_REQUIRED=1.0.0
1338     ALSA_MODULES="alsa >= $ALSA_REQUIRED"
1339     PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
1340     if test $HAVE_ALSA = yes; then
1341       SAVE_CFLAGS="$CFLAGS"
1342       SAVE_LIBS="$LIBS"
1343       CFLAGS="$ALSA_CFLAGS $CFLAGS"
1344       LIBS="$ALSA_LIBS $LIBS"
1345       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])],
1346                       emacs_alsa_normal=yes,
1347                     emacs_alsa_normal=no)
1348       if test "$emacs_alsa_normal" != yes; then
1349         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]],
1350                        [[snd_lib_error_set_handler (0);]])],
1351                        emacs_alsa_subdir=yes,
1352                      emacs_alsa_subdir=no)
1353         if test "$emacs_alsa_subdir" != yes; then
1354           AC_MSG_ERROR([pkg-config found alsa, but it does not compile.  See config.log for error messages.])
1355         fi
1356         ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
1357       fi
1359       CFLAGS="$SAVE_CFLAGS"
1360       LIBS="$SAVE_LIBS"
1361       LIBSOUND="$LIBSOUND $ALSA_LIBS"
1362       CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
1363       AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
1364     elif test "${with_sound}" = "alsa"; then
1365       AC_MSG_ERROR([ALSA sound support requested but not found.])
1366     fi
1367   fi                            dnl with_sound = alsa|yes
1369   dnl Define HAVE_SOUND if we have sound support.  We know it works and
1370   dnl compiles only on the specified platforms.  For others, it
1371   dnl probably doesn't make sense to try.
1372   dnl FIXME So surely we should bypass this whole section if not using
1373   dnl one of these platforms?
1374   if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
1375      case "$opsys" in
1376        dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
1377        dnl Adjust the --with-sound help text if you change this.
1378        gnu-linux|freebsd|netbsd|mingw32)
1379          AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.])
1380          HAVE_SOUND=yes
1381          ;;
1382      esac
1383   fi
1385   AC_SUBST(CFLAGS_SOUND)
1388 dnl checks for header files
1389 AC_CHECK_HEADERS_ONCE(
1390   sys/systeminfo.h
1391   coff.h pty.h
1392   sys/resource.h
1393   sys/utsname.h pwd.h utmp.h util.h)
1395 AC_MSG_CHECKING(if personality LINUX32 can be set)
1396 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/personality.h>]], [[personality (PER_LINUX32)]])],
1397                emacs_cv_personality_linux32=yes,
1398                emacs_cv_personality_linux32=no)
1399 AC_MSG_RESULT($emacs_cv_personality_linux32)
1401 if test $emacs_cv_personality_linux32 = yes; then
1402   AC_DEFINE(HAVE_PERSONALITY_LINUX32, 1,
1403             [Define to 1 if personality LINUX32 can be set.])
1406 dnl On Solaris 8 there's a compilation warning for term.h because
1407 dnl it doesn't define `bool'.
1408 AC_CHECK_HEADERS(term.h, , , -)
1409 AC_HEADER_TIME
1410 AC_CHECK_DECLS([sys_siglist], [], [], [[#include <signal.h>
1411                                       ]])
1412 if test $ac_cv_have_decl_sys_siglist != yes; then
1413   # For Tru64, at least:
1414   AC_CHECK_DECLS([__sys_siglist], [], [], [[#include <signal.h>
1415                                           ]])
1417 AC_HEADER_SYS_WAIT
1419 AC_CHECK_HEADERS_ONCE(sys/socket.h)
1420 AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT
1421 #if HAVE_SYS_SOCKET_H
1422 #include <sys/socket.h>
1423 #endif])
1424 AC_CHECK_HEADERS(ifaddrs.h, , , [AC_INCLUDES_DEFAULT
1425 #if HAVE_SYS_SOCKET_H
1426 #include <sys/socket.h>
1427 #endif])
1428 AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT
1429 #if HAVE_SYS_SOCKET_H
1430 #include <sys/socket.h>
1431 #endif])
1433 dnl checks for structure members
1434 AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr,
1435                   struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr,
1436                   struct ifreq.ifr_addr,
1437                   struct ifreq.ifr_addr.sa_len], , ,
1438                  [AC_INCLUDES_DEFAULT
1439 #if HAVE_SYS_SOCKET_H
1440 #include <sys/socket.h>
1441 #endif
1442 #if HAVE_NET_IF_H
1443 #include <net/if.h>
1444 #endif])
1446 dnl Check for endianness.
1447 dnl AC_C_BIGENDIAN is done by gnulib.
1449 dnl check for Make feature
1450 dnl AC_PROG_MAKE_SET is done by Automake.
1452 DEPFLAGS=
1453 MKDEPDIR=":"
1454 deps_frag=deps.mk
1455 dnl check for GNU Make if we have GCC and autodepend is on.
1456 if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
1457    AC_MSG_CHECKING([whether we are using GNU Make])
1458    HAVE_GNU_MAKE=no
1459    testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
1460    if test "x$testval" != x; then
1461       HAVE_GNU_MAKE=yes
1462    else
1463       ac_enable_autodepend=no
1464    fi
1465    AC_MSG_RESULT([$HAVE_GNU_MAKE])
1466    if test $HAVE_GNU_MAKE = yes; then
1467       AC_MSG_CHECKING([whether gcc understands -MMD -MF])
1468       SAVE_CFLAGS="$CFLAGS"
1469       CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
1470       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
1471       CFLAGS="$SAVE_CFLAGS"
1472       test -f deps.d || ac_enable_autodepend=no
1473       rm -rf deps.d
1474       AC_MSG_RESULT([$ac_enable_autodepend])
1475    fi
1476    if test $ac_enable_autodepend = yes; then
1477       DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
1478       ## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe.
1479       MKDEPDIR='${MKDIR_P} ${DEPDIR}'
1480       deps_frag=autodeps.mk
1481    fi
1483 deps_frag=$srcdir/src/$deps_frag
1484 AC_SUBST(MKDEPDIR)
1485 AC_SUBST(DEPFLAGS)
1486 AC_SUBST_FILE(deps_frag)
1489 lisp_frag=$srcdir/src/lisp.mk
1490 AC_SUBST_FILE(lisp_frag)
1493 dnl checks for operating system services
1494 AC_SYS_LONG_FILE_NAMES
1496 #### Choose a window system.
1498 ## We leave window_system equal to none if
1499 ## we end up building without one.  Any new window system should
1500 ## set window_system to an appropriate value and add objects to
1501 ## window-system-specific substs.
1503 window_system=none
1504 AC_PATH_X
1505 if test "$no_x" != yes; then
1506   window_system=x11
1509 LD_SWITCH_X_SITE_RPATH=
1510 if test "${x_libraries}" != NONE; then
1511   if test -n "${x_libraries}"; then
1512     LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
1513     LD_SWITCH_X_SITE_RPATH=-Wl,-rpath,`echo ${x_libraries} | sed -e "s/:/ -Wl,-rpath,/g"`
1514   fi
1515   x_default_search_path=""
1516   x_search_path=${x_libraries}
1517   if test -z "${x_search_path}"; then
1518     x_search_path=/usr/lib
1519   fi
1520   for x_library in `echo ${x_search_path}: | \
1521                     sed -e "s/:/ /g" -e p -e "s:/lib[[^ /]]* :/share :g"`; do
1522     x_search_path="\
1523 ${x_library}/X11/%L/%T/%N%C%S:\
1524 ${x_library}/X11/%l/%T/%N%C%S:\
1525 ${x_library}/X11/%T/%N%C%S:\
1526 ${x_library}/X11/%L/%T/%N%S:\
1527 ${x_library}/X11/%l/%T/%N%S:\
1528 ${x_library}/X11/%T/%N%S"
1529     if test x"${x_default_search_path}" = x; then
1530       x_default_search_path=${x_search_path}
1531     else
1532       x_default_search_path="${x_search_path}:${x_default_search_path}"
1533     fi
1534   done
1536 AC_SUBST(LD_SWITCH_X_SITE_RPATH)
1538 if test "${x_includes}" != NONE && test -n "${x_includes}"; then
1539   C_SWITCH_X_SITE="$isystem"`echo ${x_includes} | sed -e "s/:/ $isystem/g"`
1542 if test x"${x_includes}" = x; then
1543   bitmapdir=/usr/include/X11/bitmaps
1544 else
1545   # accumulate include directories that have X11 bitmap subdirectories
1546   bmd_acc="dummyval"
1547   for bmd in `echo ${x_includes} | sed -e "s/:/ /g"`; do
1548     if test -d "${bmd}/X11/bitmaps"; then
1549       bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps"
1550     fi
1551     if test -d "${bmd}/bitmaps"; then
1552       bmd_acc="${bmd_acc}:${bmd}/bitmaps"
1553     fi
1554   done
1555   if test ${bmd_acc} != "dummyval"; then
1556     bitmapdir=`echo ${bmd_acc} | sed -e "s/^dummyval://"`
1557   fi
1560 HAVE_NS=no
1561 NS_IMPL_COCOA=no
1562 NS_IMPL_GNUSTEP=no
1563 tmp_CPPFLAGS="$CPPFLAGS"
1564 tmp_CFLAGS="$CFLAGS"
1565 CPPFLAGS="$CPPFLAGS -x objective-c"
1566 CFLAGS="$CFLAGS -x objective-c"
1567 GNU_OBJC_CFLAGS=
1568 LIBS_GNUSTEP=
1569 if test "${with_ns}" != no; then
1570   if test "${opsys}" = darwin; then
1571      NS_IMPL_COCOA=yes
1572      ns_appdir=`pwd`/nextstep/Emacs.app
1573      ns_appbindir=${ns_appdir}/Contents/MacOS
1574      ns_appresdir=${ns_appdir}/Contents/Resources
1575      ns_appsrc=Cocoa/Emacs.base
1576   elif test -f $GNUSTEP_CONFIG_FILE; then
1577      NS_IMPL_GNUSTEP=yes
1578      ns_appdir=`pwd`/nextstep/Emacs.app
1579      ns_appbindir=${ns_appdir}
1580      ns_appresdir=${ns_appdir}/Resources
1581      ns_appsrc=GNUstep/Emacs.base
1582      dnl FIXME sourcing this several times in subshells seems inefficient.
1583      GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
1584      GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
1585      dnl I seemed to need these as well with GNUstep-startup 0.25.
1586      GNUSTEP_LOCAL_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_HEADERS)"
1587      GNUSTEP_LOCAL_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_LIBRARIES)"
1588      test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \
1589        GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}"
1590      test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \
1591        GNUSTEP_LOCAL_LIBRARIES="-L${GNUSTEP_LOCAL_LIBRARIES}"
1592      CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1593      CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1594      LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
1595      LIBS_GNUSTEP="-lgnustep-gui -lgnustep-base -lobjc -lpthread"
1596      dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1.
1597      dnl If they had chosen to either define it or not, we could have
1598      dnl just used AC_CHECK_DECL here.
1599      AC_CACHE_CHECK(if GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS,
1600        emacs_cv_objc_exceptions,
1601 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <GNUstepBase/GSConfig.h>]],
1602 [[#if defined BASE_NATIVE_OBJC_EXCEPTIONS && BASE_NATIVE_OBJC_EXCEPTIONS > 0
1604 #else
1605 fail;
1606 #endif]])], emacs_cv_objc_exceptions=yes, emacs_cv_objc_exceptions=no ) )
1607      if test $emacs_cv_objc_exceptions = yes; then
1608        dnl _NATIVE_OBJC_EXCEPTIONS is used by the GNUstep headers.
1609        AC_DEFINE(_NATIVE_OBJC_EXCEPTIONS, 1,
1610          [Define if GNUstep uses ObjC exceptions.])
1611        GNU_OBJC_CFLAGS="-fobjc-exceptions"
1612      fi
1613   fi
1615   dnl This is only used while we test the NS headers, it gets reset below.
1616   CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS"
1618   AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
1619                   [AC_MSG_ERROR([`--with-ns' was specified, but the include
1620   files are missing or cannot be compiled.])])
1622   macfont_file=""
1623   if test "${NS_IMPL_COCOA}" = "yes"; then
1624     AC_MSG_CHECKING([for OSX 10.4 or newer])
1625     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AppKit/AppKit.h>],
1626                                      [
1627 #ifdef MAC_OS_X_VERSION_MAX_ALLOWED
1628 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1040
1629  ; /* OK */
1630 #else
1631 #error "OSX 10.4 or newer required"
1632 #endif
1633 #endif
1634                     ])],
1635                     ns_osx_have_104=yes,
1636                     ns_osx_have_104=no)
1637     AC_MSG_RESULT([$ns_osx_have_104])
1639     if test $ns_osx_have_104 = no; then
1640        AC_MSG_ERROR([`OSX 10.4 or newer is required']);
1641     fi
1642     AC_MSG_CHECKING([for OSX 10.5 or newer])
1643     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AppKit/AppKit.h>],
1644                                      [
1645 #ifdef MAC_OS_X_VERSION_MAX_ALLOWED
1646 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
1647  ; /* OK */
1648 #else
1649 #error "OSX 10.5 not found"
1650 #endif
1651 #endif
1652                     ])],
1653                     ns_osx_have_105=yes,
1654                     ns_osx_have_105=no)
1655     AC_MSG_RESULT([$ns_osx_have_105])
1656     if test $ns_osx_have_105 = yes; then
1657       macfont_file="macfont.o"
1658     fi
1659   fi
1660   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <Foundation/NSObjCRuntime.h>],
1661                                      [NSInteger i;])],
1662                     ns_have_nsinteger=yes,
1663                     ns_have_nsinteger=no)
1664   if test $ns_have_nsinteger = yes; then
1665     AC_DEFINE(NS_HAVE_NSINTEGER, 1, [Define to 1 if `NSInteger' is defined.])
1666   fi
1669 AC_SUBST(LIBS_GNUSTEP)
1671 INSTALL_ARCH_INDEP_EXTRA=install-etc
1672 ns_self_contained=no
1673 NS_OBJ=
1674 NS_OBJC_OBJ=
1675 if test "${HAVE_NS}" = yes; then
1676   if test "$with_toolkit_scroll_bars" = "no"; then
1677     AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for Nextstep.])
1678   fi
1680   window_system=nextstep
1681   # set up packaging dirs
1682   if test "${EN_NS_SELF_CONTAINED}" = yes; then
1683      ns_self_contained=yes
1684      prefix=${ns_appresdir}
1685      exec_prefix=${ns_appbindir}
1686      dnl This one isn't really used, only archlibdir is.
1687      libexecdir="\${ns_appbindir}/libexec"
1688      archlibdir="\${ns_appbindir}/libexec"
1689      etcdocdir="\${ns_appresdir}/etc"
1690      etcdir="\${ns_appresdir}/etc"
1691      dnl FIXME maybe set datarootdir instead.
1692      dnl That would also get applications, icons, man.
1693      infodir="\${ns_appresdir}/info"
1694      mandir="\${ns_appresdir}/man"
1695      lispdir="\${ns_appresdir}/lisp"
1696      leimdir="\${ns_appresdir}/leim"
1697      INSTALL_ARCH_INDEP_EXTRA=
1698   fi
1700   NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o $macfont_file"
1702 CFLAGS="$tmp_CFLAGS"
1703 CPPFLAGS="$tmp_CPPFLAGS"
1704 AC_SUBST(INSTALL_ARCH_INDEP_EXTRA)
1705 AC_SUBST(ns_self_contained)
1706 AC_SUBST(NS_OBJ)
1707 AC_SUBST(NS_OBJC_OBJ)
1709 HAVE_W32=no
1710 W32_OBJ=
1711 W32_LIBS=
1712 EMACSRES=
1713 CLIENTRES=
1714 CLIENTW=
1715 W32_RES_LINK=
1716 EMACS_MANIFEST=
1717 UPDATE_MANIFEST=
1718 if test "${with_w32}" != no; then
1719   case "${opsys}" in
1720     cygwin)
1721       AC_CHECK_HEADER([windows.h], [HAVE_W32=yes],
1722              [AC_MSG_ERROR([`--with-w32' was specified, but windows.h
1723                    cannot be found.])])
1724     ;;
1725     mingw32)
1726     ## Using --with-w32 with MinGW is a no-op, but we allow it.
1727     ;;
1728     *)
1729       AC_MSG_ERROR([Using w32 with an autotools build is only supported for Cygwin and MinGW32.])
1730     ;;
1731   esac
1734 if test "${opsys}" = "mingw32"; then
1735   AC_MSG_CHECKING([whether Windows API headers are recent enough])
1736   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1737      #include <windows.h>
1738      #include <usp10.h>]],
1739    [[PIMAGE_NT_HEADERS pHeader;
1740      PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader)]])],
1741    [emacs_cv_w32api=yes
1742     HAVE_W32=yes],
1743    emacs_cv_w32api=no)
1744   AC_MSG_RESULT($emacs_cv_w32api)
1745   if test "${emacs_cv_w32api}" = "no"; then
1746     AC_MSG_ERROR([the Windows API headers are too old to support this build.])
1747   fi
1750 FIRSTFILE_OBJ=
1751 NTDIR=
1752 LIBS_ECLIENT=
1753 LIB_WSOCK32=
1754 NTLIB=
1755 CM_OBJ="cm.o"
1756 XARGS_LIMIT=
1757 if test "${HAVE_W32}" = "yes"; then
1758   AC_DEFINE(HAVE_NTGUI, 1, [Define to use native MS Windows GUI.])
1759   AC_CHECK_TOOL(WINDRES, [windres],
1760                 [AC_MSG_ERROR([No resource compiler found.])])
1761   W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o"
1762   W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o"
1763   EMACSRES="emacs.res"
1764   case "$canonical" in
1765     x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;;
1766     *) EMACS_MANIFEST="emacs-x86.manifest" ;;
1767   esac
1768   UPDATE_MANIFEST=update-game-score.exe.manifest
1769   if test "${opsys}" = "cygwin"; then
1770     W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32"
1771     W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool"
1772     # Tell the linker that emacs.res is an object (which we compile from
1773     # the rc file), not a linker script.
1774     W32_RES_LINK="-Wl,emacs.res"
1775   else
1776     W32_OBJ="$W32_OBJ w32.o w32console.o w32heap.o w32inevt.o w32proc.o"
1777     W32_LIBS="$W32_LIBS -lwinmm -lgdi32 -lcomdlg32"
1778     W32_LIBS="$W32_LIBS -lmpr -lwinspool -lole32 -lcomctl32 -lusp10"
1779     W32_RES_LINK="\$(EMACSRES)"
1780     CLIENTRES="emacsclient.res"
1781     CLIENTW="emacsclientw\$(EXEEXT)"
1782     FIRSTFILE_OBJ=firstfile.o
1783     NTDIR=nt
1784     CM_OBJ=
1785     LIBS_ECLIENT="-lcomctl32"
1786     LIB_WSOCK32="-lwsock32"
1787     NTLIB="ntlib.$ac_objext"
1788     XARGS_LIMIT="-s 10000"
1789   fi
1791 AC_SUBST(W32_OBJ)
1792 AC_SUBST(W32_LIBS)
1793 AC_SUBST(EMACSRES)
1794 AC_SUBST(EMACS_MANIFEST)
1795 AC_SUBST(UPDATE_MANIFEST)
1796 AC_SUBST(CLIENTRES)
1797 AC_SUBST(CLIENTW)
1798 AC_SUBST(W32_RES_LINK)
1799 AC_SUBST(FIRSTFILE_OBJ)
1800 AC_SUBST(NTDIR)
1801 AC_SUBST(CM_OBJ)
1802 AC_SUBST(LIBS_ECLIENT)
1803 AC_SUBST(LIB_WSOCK32)
1804 AC_SUBST(NTLIB)
1805 AC_SUBST(XARGS_LIMIT)
1807 if test "${HAVE_W32}" = "yes"; then
1808   window_system=w32
1809   with_xft=no
1812 ## $window_system is now set to the window system we will
1813 ## ultimately use.
1815 if test "$window_system" = none && test "$gl_gcc_warnings" = yes; then
1816    # Too many warnings for now.
1817    nw=
1818    nw="$nw -Wsuggest-attribute=const"
1819    nw="$nw -Wsuggest-attribute=noreturn"
1820    gl_MANYWARN_COMPLEMENT([WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
1822    gl_WARN_ADD([-Wno-unused-variable])
1823    gl_WARN_ADD([-Wno-unused-but-set-variable])
1824    gl_WARN_ADD([-Wno-unused-but-set-parameter])
1827 term_header=
1828 HAVE_X_WINDOWS=no
1829 HAVE_X11=no
1830 USE_X_TOOLKIT=none
1832 case "${window_system}" in
1833   x11 )
1834     HAVE_X_WINDOWS=yes
1835     HAVE_X11=yes
1836     term_header=xterm.h
1837     case "${with_x_toolkit}" in
1838       athena | lucid ) USE_X_TOOLKIT=LUCID ;;
1839       motif ) USE_X_TOOLKIT=MOTIF ;;
1840       gtk ) with_gtk=yes
1841             term_header=gtkutil.h
1842 dnl Don't set this for GTK.  A lot of tests below assumes Xt when
1843 dnl USE_X_TOOLKIT is set.
1844             USE_X_TOOLKIT=none ;;
1845       gtk2 ) with_gtk2=yes
1846              term_header=gtkutil.h
1847              USE_X_TOOLKIT=none ;;
1848       gtk3 ) with_gtk3=yes
1849              term_header=gtkutil.h
1850              USE_X_TOOLKIT=none ;;
1851       no ) USE_X_TOOLKIT=none ;;
1852 dnl If user did not say whether to use a toolkit, make this decision later:
1853 dnl use the toolkit if we have gtk, or X11R5 or newer.
1854       * ) USE_X_TOOLKIT=maybe ;;
1855     esac
1856   ;;
1857   nextstep )
1858     term_header=nsterm.h
1859   ;;
1860   w32 )
1861     term_header=w32term.h
1862   ;;
1863 esac
1865 if test "$window_system" = none && test "X$with_x" != "Xno"; then
1866    AC_CHECK_PROG(HAVE_XSERVER, X, true, false)
1867    if test "$HAVE_XSERVER" = true ||
1868       test -n "$DISPLAY" ||
1869       test "`echo /usr/lib/libX11.*`" != "/usr/lib/libX11.*"; then
1870         AC_MSG_ERROR([You seem to be running X, but no X development libraries
1871 were found.  You should install the relevant development files for X
1872 and for the toolkit you want, such as Gtk+, Lesstif or Motif.  Also make
1873 sure you have development files for image handling, i.e.
1874 tiff, gif, jpeg, png and xpm.
1875 If you are sure you want Emacs compiled without X window support, pass
1876   --without-x
1877 to configure.])
1878    fi
1881 ### We always support menus.
1882 HAVE_MENUS=yes
1884 # Does the opsystem file prohibit the use of the GNU malloc?
1885 # Assume not, until told otherwise.
1886 GNU_MALLOC=yes
1888 AC_CACHE_CHECK(
1889   [whether malloc is Doug Lea style],
1890   [emacs_cv_var_doug_lea_malloc],
1891   [AC_LINK_IFELSE(
1892      [AC_LANG_PROGRAM(
1893         [[#include <malloc.h>
1894           static void hook (void) {}]],
1895         [[malloc_set_state (malloc_get_state ());
1896           __after_morecore_hook = hook;
1897           __malloc_initialize_hook = hook;]])],
1898      [emacs_cv_var_doug_lea_malloc=yes],
1899      [emacs_cv_var_doug_lea_malloc=no])])
1900 doug_lea_malloc=$emacs_cv_var_doug_lea_malloc
1903 dnl See comments in aix4-2.h about maybe using system malloc there.
1904 system_malloc=no
1905 case "$opsys" in
1906   ## darwin ld insists on the use of malloc routines in the System framework.
1907   darwin|sol2-10) system_malloc=yes ;;
1908 esac
1910 GMALLOC_OBJ=
1911 if test "${system_malloc}" = "yes"; then
1912   AC_DEFINE([SYSTEM_MALLOC], 1,
1913     [Define to 1 to use the system memory allocator, even if it is not
1914      Doug Lea style.])
1915   GNU_MALLOC=no
1916   GNU_MALLOC_reason="
1917     (The GNU allocators don't work with this system configuration.)"
1918   VMLIMIT_OBJ=
1919 else
1920   test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
1921   VMLIMIT_OBJ=vm-limit.o
1923   AC_CHECK_HEADERS([sys/vlimit.h])
1924   AC_CACHE_CHECK([for data_start], [emacs_cv_data_start],
1925     [AC_LINK_IFELSE(
1926        [AC_LANG_PROGRAM(
1927          [[extern char data_start[]; char ch;]],
1928          [[return data_start < &ch;]])],
1929        [emacs_cv_data_start=yes],
1930        [emacs_cv_data_start=no])])
1931   if test $emacs_cv_data_start = yes; then
1932     AC_DEFINE([HAVE_DATA_START], 1,
1933       [Define to 1 if data_start is the address of the start
1934        of the main data segment.])
1935   fi
1937 AC_SUBST(GMALLOC_OBJ)
1938 AC_SUBST(VMLIMIT_OBJ)
1940 if test "$doug_lea_malloc" = "yes" ; then
1941   if test "$GNU_MALLOC" = yes ; then
1942     GNU_MALLOC_reason="
1943       (Using Doug Lea's new malloc from the GNU C Library.)"
1944   fi
1945   AC_DEFINE(DOUG_LEA_MALLOC, 1,
1946     [Define to 1 if the system memory allocator is Doug Lea style,
1947      with malloc hooks and malloc_set_state.])
1949   ## Use mmap directly for allocating larger buffers.
1950   ## FIXME this comes from src/s/{gnu,gnu-linux}.h:
1951   ## #ifdef DOUG_LEA_MALLOC; #undef REL_ALLOC; #endif
1952   ## Does the AC_FUNC_MMAP test below make this check unnecessary?
1953   case "$opsys" in
1954     gnu*) REL_ALLOC=no ;;
1955   esac
1958 if test x"${REL_ALLOC}" = x; then
1959   REL_ALLOC=${GNU_MALLOC}
1962 use_mmap_for_buffers=no
1963 case "$opsys" in
1964   cygwin|freebsd|irix6-5) use_mmap_for_buffers=yes ;;
1965 esac
1967 AC_FUNC_MMAP
1968 if test $use_mmap_for_buffers = yes; then
1969   AC_DEFINE(USE_MMAP_FOR_BUFFERS, 1, [Define to use mmap to allocate buffer text.])
1970   REL_ALLOC=no
1973 LIBS="$LIBS_SYSTEM $LIBS"
1975 dnl If found, this adds -ldnet to LIBS, which Autoconf uses for checks.
1976 AC_CHECK_LIB(dnet, dnet_ntoa)
1977 dnl This causes -lresolv to get used in subsequent tests,
1978 dnl which causes failures on some systems such as HPUX 9.
1979 dnl AC_CHECK_LIB(resolv, gethostbyname)
1981 dnl FIXME replace main with a function we actually want from this library.
1982 AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
1984 dnl Check if pthreads is available.
1985 LIB_PTHREAD=
1986 AC_CHECK_HEADERS_ONCE(pthread.h)
1987 if test "$ac_cv_header_pthread_h"; then
1988   dnl gmalloc.c uses pthread_atfork, which is not available on older-style
1989   dnl hosts such as MirBSD 10, so test for pthread_atfork instead of merely
1990   dnl testing for pthread_self if Emacs uses gmalloc.c.
1991   if test "$GMALLOC_OBJ" = gmalloc.o; then
1992     emacs_pthread_function=pthread_atfork
1993   else
1994     emacs_pthread_function=pthread_self
1995   fi
1996   AC_CHECK_LIB(pthread, $emacs_pthread_function, HAVE_PTHREAD=yes)
1998 if test "$HAVE_PTHREAD" = yes; then
1999   case "${canonical}" in
2000     *-hpux*) ;;
2001     *) LIB_PTHREAD="-lpthread"
2002        LIBS="$LIB_PTHREAD $LIBS" ;;
2003   esac
2004   AC_DEFINE(HAVE_PTHREAD, 1, [Define to 1 if you have pthread (-lpthread).])
2006 AC_SUBST([LIB_PTHREAD])
2008 AC_CHECK_LIB(pthreads, cma_open)
2010 ## Note: when using cpp in s/aix4.2.h, this definition depended on
2011 ## HAVE_LIBPTHREADS.  That was not defined earlier in configure when
2012 ## the system file was sourced.  Hence the value of LIBS_SYSTEM
2013 ## added to LIBS in configure would never contain the pthreads part,
2014 ## but the value used in Makefiles might.  FIXME?
2016 ## -lpthreads seems to be necessary for Xlib in X11R6, and should
2017 ## be harmless on older versions of X where it happens to exist.
2018 test "$opsys" = "aix4-2" && \
2019   test $ac_cv_lib_pthreads_cma_open = yes && \
2020   LIBS_SYSTEM="$LIBS_SYSTEM -lpthreads"
2022 dnl Check for need for bigtoc support on IBM AIX
2024 case ${host_os} in
2025 aix*)
2026   AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
2027     case $GCC in
2028     yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
2029     *) gdb_cv_bigtoc=-bbigtoc ;;
2030     esac
2032     LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
2033     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int i;]])], [], [gdb_cv_bigtoc=])
2034   ])
2035   ;;
2036 esac
2038 # Change CFLAGS and CPPFLAGS temporarily so that C_SWITCH_X_SITE gets
2039 # used for the tests that follow.  We set them back to REAL_CFLAGS and
2040 # REAL_CPPFLAGS later on.
2042 REAL_CFLAGS="$CFLAGS"
2043 REAL_CPPFLAGS="$CPPFLAGS"
2045 if test "${HAVE_X11}" = "yes"; then
2046   DEFS="$C_SWITCH_X_SITE $DEFS"
2047   LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
2048   LIBS="-lX11 $LIBS"
2049   CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
2050   CPPFLAGS="$C_SWITCH_X_SITE $CPPFLAGS"
2052   # On Solaris, arrange for LD_RUN_PATH to point to the X libraries for tests.
2053   # This is handled by LD_SWITCH_X_SITE_RPATH during the real build,
2054   # but it's more convenient here to set LD_RUN_PATH since this
2055   # also works on hosts that don't understand LD_SWITCH_X_SITE_RPATH.
2056   if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
2057     LD_RUN_PATH=$x_libraries${LD_RUN_PATH+:}$LD_RUN_PATH
2058     export LD_RUN_PATH
2059   fi
2061   if test "${opsys}" = "gnu-linux"; then
2062     AC_MSG_CHECKING(whether X on GNU/Linux needs -b to link)
2063     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
2064      [[XOpenDisplay ("foo");]])],
2065      [xgnu_linux_first_failure=no],
2066      [xgnu_linux_first_failure=yes])
2067     if test "${xgnu_linux_first_failure}" = "yes"; then
2068       OLD_LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE"
2069       OLD_C_SWITCH_X_SITE="$C_SWITCH_X_SITE"
2070       OLD_CPPFLAGS="$CPPFLAGS"
2071       OLD_LIBS="$LIBS"
2072       LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
2073       C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
2074       CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
2075       LIBS="$LIBS -b i486-linuxaout"
2076       AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
2077        [[XOpenDisplay ("foo");]])],
2078        [xgnu_linux_second_failure=no],
2079        [xgnu_linux_second_failure=yes])
2080       if test "${xgnu_linux_second_failure}" = "yes"; then
2081         # If we get the same failure with -b, there is no use adding -b.
2082         # So take it out.  This plays safe.
2083         LD_SWITCH_X_SITE="$OLD_LD_SWITCH_X_SITE"
2084         C_SWITCH_X_SITE="$OLD_C_SWITCH_X_SITE"
2085         CPPFLAGS="$OLD_CPPFLAGS"
2086         LIBS="$OLD_LIBS"
2087         AC_MSG_RESULT(no)
2088       else
2089         AC_MSG_RESULT(yes)
2090       fi
2091     else
2092       AC_MSG_RESULT(no)
2093     fi
2094   fi
2096   # Reportedly, some broken Solaris systems have XKBlib.h but are missing
2097   # header files included from there.
2098   AC_MSG_CHECKING(for Xkb)
2099   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>
2100 #include <X11/XKBlib.h>]],
2101         [[XkbDescPtr kb = XkbGetKeyboard (0, XkbAllComponentsMask, XkbUseCoreKbd);]])],
2102         emacs_xkb=yes, emacs_xkb=no)
2103   AC_MSG_RESULT($emacs_xkb)
2104   if test $emacs_xkb = yes; then
2105     AC_DEFINE(HAVE_XKB, 1, [Define to 1 if you have the Xkb extension.])
2106   fi
2108   AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
2109 XScreenNumberOfScreen)
2112 if test "${window_system}" = "x11"; then
2113   AC_MSG_CHECKING(X11 version 6)
2114   AC_CACHE_VAL(emacs_cv_x11_version_6,
2115   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]],
2116 [[#if XlibSpecificationRelease < 6
2117 fail;
2118 #endif
2119 ]])], emacs_cv_x11_version_6=yes, emacs_cv_x11_version_6=no)])
2120   if test $emacs_cv_x11_version_6 = yes; then
2121     AC_MSG_RESULT(6 or newer)
2122     AC_DEFINE(HAVE_X11R6, 1,
2123               [Define to 1 if you have the X11R6 or newer version of Xlib.])
2124     AC_DEFINE(HAVE_X_I18N, 1, [Define if you have usable i18n support.])
2125     ## inoue@ainet.or.jp says Solaris has a bug related to X11R6-style
2126     ## XIM support.
2127     case "$opsys" in
2128       sol2-*) : ;;
2129       *) AC_DEFINE(HAVE_X11R6_XIM, 1,
2130            [Define if you have usable X11R6-style XIM support.])
2131          ;;
2132     esac
2133   else
2134     AC_MSG_RESULT(before 6)
2135   fi
2139 ### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
2140 HAVE_RSVG=no
2141 if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" = "mingw32"; then
2142   if test "${with_rsvg}" != "no"; then
2143     RSVG_REQUIRED=2.11.0
2144     RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
2146     PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, HAVE_RSVG=yes, :)
2147     AC_SUBST(RSVG_CFLAGS)
2148     AC_SUBST(RSVG_LIBS)
2150     if test $HAVE_RSVG = yes; then
2151       AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
2152       CFLAGS="$CFLAGS $RSVG_CFLAGS"
2153       LIBS="$RSVG_LIBS $LIBS"
2154     fi
2155   fi
2158 HAVE_IMAGEMAGICK=no
2159 if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes"; then
2160   if test "${with_imagemagick}" != "no"; then
2161     ## 6.2.8 is the earliest version known to work, but earlier versions
2162     ## might work - let us know if you find one.
2163     ## 6.0.7 does not work.  See bug#7955.
2164     ## 6.8.2 makes Emacs crash; see Bug#13867.
2165     IMAGEMAGICK_MODULE="Wand >= 6.2.8 Wand != 6.8.2"
2166     PKG_CHECK_MODULES(IMAGEMAGICK, $IMAGEMAGICK_MODULE, HAVE_IMAGEMAGICK=yes, :)
2167     AC_SUBST(IMAGEMAGICK_CFLAGS)
2168     AC_SUBST(IMAGEMAGICK_LIBS)
2170     if test $HAVE_IMAGEMAGICK = yes; then
2171       AC_DEFINE(HAVE_IMAGEMAGICK, 1, [Define to 1 if using imagemagick.])
2172       CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
2173       LIBS="$IMAGEMAGICK_LIBS $LIBS"
2174       AC_CHECK_FUNCS(MagickExportImagePixels MagickMergeImageLayers)
2175     fi
2176   fi
2180 HAVE_GTK=no
2181 GTK_OBJ=
2182 gtk_term_header=$term_header
2183 check_gtk2=no
2184 gtk3_pkg_errors=
2185 if test "${opsys}" != "mingw32"; then
2186   if test "${with_gtk3}" = "yes" || test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
2187     GLIB_REQUIRED=2.28
2188     GTK_REQUIRED=3.0
2189     GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
2191     dnl Checks for libraries.
2192     PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
2193     if test "$pkg_check_gtk" = "no" && test "$with_gtk3" = "yes"; then
2194        AC_MSG_ERROR($GTK_PKG_ERRORS)
2195     fi
2196     if test "$pkg_check_gtk" = "yes"; then
2197        AC_DEFINE(HAVE_GTK3, 1, [Define to 1 if using GTK 3 or later.])
2198        GTK_OBJ=emacsgtkfixed.o
2199        gtk_term_header=gtkutil.h
2200        USE_GTK_TOOLKIT="GTK3"
2201        if test "x$ac_enable_gtk_deprecation_warnings" = x; then
2202           GTK_CFLAGS="$GTK_CFLAGS -DGDK_DISABLE_DEPRECATION_WARNINGS"
2203           GTK_CFLAGS="$GTK_CFLAGS -DGLIB_DISABLE_DEPRECATION_WARNINGS"
2204        fi
2205     else
2206        check_gtk2=yes
2207        gtk3_pkg_errors="$GTK_PKG_ERRORS "
2208     fi
2209   fi
2211   if test "${with_gtk2}" = "yes" || test "$check_gtk2" = "yes"; then
2212     GLIB_REQUIRED=2.10
2213     GTK_REQUIRED=2.10
2214     GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
2216     dnl Checks for libraries.
2217     PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
2218     if test "$pkg_check_gtk" = "no" &&
2219        { test "$with_gtk" = yes || test "$with_gtk2" = "yes"; }
2220     then
2221       AC_MSG_ERROR($gtk3_pkg_errors$GTK_PKG_ERRORS)
2222     fi
2223     test "$pkg_check_gtk" = "yes" && USE_GTK_TOOLKIT="GTK2"
2224   fi
2227 if test x"$pkg_check_gtk" = xyes; then
2229   AC_SUBST(GTK_CFLAGS)
2230   AC_SUBST(GTK_LIBS)
2231   C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
2232   CFLAGS="$CFLAGS $GTK_CFLAGS"
2233   LIBS="$GTK_LIBS $LIBS"
2234   dnl Try to compile a simple GTK program.
2235   AC_MSG_CHECKING([whether GTK compiles])
2236   GTK_COMPILES=no
2237   AC_LINK_IFELSE(
2238     [AC_LANG_PROGRAM(
2239        [[/* Check the Gtk and Glib APIs.  */
2240          #include <gtk/gtk.h>
2241          #include <glib-object.h>
2242          static void
2243          callback (GObject *go, GParamSpec *spec, gpointer user_data)
2244          {}
2245        ]],
2246        [[
2247          GtkSettings *gs = 0;
2248          /* Use G_CALLBACK to make sure function pointers can be cast to void *;
2249             strict C prohibits this.  Use gtk_main_iteration to test that the
2250             libraries are there.  */
2251          if (g_signal_handler_find (G_OBJECT (gs), G_SIGNAL_MATCH_FUNC,
2252                                     0, 0, 0, G_CALLBACK (callback), 0))
2253            gtk_main_iteration ();
2254        ]])],
2255     [GTK_COMPILES=yes])
2256   AC_MSG_RESULT([$GTK_COMPILES])
2257   if test "${GTK_COMPILES}" != "yes"; then
2258     GTK_OBJ=
2259     if test "$USE_X_TOOLKIT" != "maybe"; then
2260       AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?]);
2261     fi
2262   else
2263     HAVE_GTK=yes
2264     AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
2265     GTK_OBJ="gtkutil.o $GTK_OBJ"
2266     term_header=$gtk_term_header
2267     USE_X_TOOLKIT=none
2268     if "$PKG_CONFIG" --atleast-version=2.10 gtk+-2.0; then
2269       :
2270     else
2271       AC_MSG_WARN([[Your version of Gtk+ will have problems with
2272        closing open displays.  This is no problem if you just use
2273        one display, but if you use more than one and close one of them
2274        Emacs may crash.]])
2275       sleep 3
2276     fi
2277   fi
2280 AC_SUBST(GTK_OBJ)
2283 if test "${HAVE_GTK}" = "yes"; then
2285   dnl  GTK scrollbars resemble toolkit scrollbars a lot, so to avoid
2286   dnl  a lot if #ifdef:s, say we have toolkit scrollbars.
2287   if test "$with_toolkit_scroll_bars" != no; then
2288     with_toolkit_scroll_bars=yes
2289   fi
2291   dnl  Check if we have the old file selection dialog declared and
2292   dnl  in the link library.  In 2.x it may be in the library,
2293   dnl  but not declared if deprecated featured has been selected out.
2294   dnl  AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION.
2295   HAVE_GTK_FILE_SELECTION=no
2296   AC_CHECK_DECL(GTK_TYPE_FILE_SELECTION, HAVE_GTK_FILE_SELECTION=yes,
2297                    HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT
2298 #include <gtk/gtk.h>])
2299   if test "$HAVE_GTK_FILE_SELECTION" = yes; then
2300     AC_CHECK_FUNCS(gtk_file_selection_new)
2301   fi
2303   dnl Same as above for gtk_handle_box.
2304   HAVE_GTK_HANDLE_BOX=no
2305   AC_CHECK_DECL(GTK_TYPE_HANDLE_BOX, HAVE_GTK_HANDLE_BOX=yes,
2306                    HAVE_GTK_HANDLE_BOX=no, [AC_INCLUDES_DEFAULT
2307 #include <gtk/gtk.h>])
2308   if test "$HAVE_GTK_HANDLE_BOX" = yes; then
2309     AC_CHECK_FUNCS(gtk_handle_box_new)
2310   fi
2312   dnl Same as above for gtk_tearoff_menu_item.
2313   HAVE_GTK_TEAROFF_MENU_ITEM=no
2314   AC_CHECK_DECL(GTK_TYPE_TEAROFF_MENU_ITEM, HAVE_GTK_TEAROFF_MENU_ITEM=yes,
2315                    HAVE_GTK_TEAROFF_MENU_ITEM=no, [AC_INCLUDES_DEFAULT
2316 #include <gtk/gtk.h>])
2317   if test "$HAVE_GTK_TEAROFF_MENU_ITEM" = yes; then
2318     AC_CHECK_FUNCS(gtk_tearoff_menu_item_new)
2319   fi
2321   dnl Check for functions introduced in 2.14 and later.
2322   AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \
2323                  gtk_dialog_get_action_area gtk_widget_get_sensitive \
2324                  gtk_widget_get_mapped gtk_adjustment_get_page_size \
2325                  gtk_orientable_set_orientation \
2326                  gtk_window_set_has_resize_grip)
2328  term_header=gtkutil.h
2331 dnl D-Bus has been tested under GNU/Linux only.  Must be adapted for
2332 dnl other platforms.
2333 HAVE_DBUS=no
2334 DBUS_OBJ=
2335 if test "${with_dbus}" = "yes"; then
2336    PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0, HAVE_DBUS=yes, HAVE_DBUS=no)
2337    if test "$HAVE_DBUS" = yes; then
2338      LIBS="$LIBS $DBUS_LIBS"
2339      AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
2340      dnl dbus_watch_get_unix_fd has been introduced in D-Bus 1.1.1.
2341      dnl dbus_type_is_valid and dbus_validate_* have been introduced in
2342      dnl D-Bus 1.5.12.
2343      AC_CHECK_FUNCS(dbus_watch_get_unix_fd \
2344                     dbus_type_is_valid \
2345                     dbus_validate_bus_name \
2346                     dbus_validate_path \
2347                     dbus_validate_interface \
2348                     dbus_validate_member)
2349      DBUS_OBJ=dbusbind.o
2350    fi
2352 AC_SUBST(DBUS_OBJ)
2354 dnl GSettings has been tested under GNU/Linux only.
2355 HAVE_GSETTINGS=no
2356 if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then
2357    PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.26, HAVE_GSETTINGS=yes, HAVE_GSETTINGS=no)
2358    if test "$HAVE_GSETTINGS" = "yes"; then
2359       AC_DEFINE(HAVE_GSETTINGS, 1, [Define to 1 if using GSettings.])
2360       SETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
2361       SETTINGS_LIBS="$GSETTINGS_LIBS"
2362    fi
2365 dnl GConf has been tested under GNU/Linux only.
2366 dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
2367 HAVE_GCONF=no
2368 if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
2369    PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
2370    if test "$HAVE_GCONF" = yes; then
2371       AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
2372       dnl Newer GConf doesn't link with g_objects, so this is not defined.
2373       SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GCONF_CFLAGS"
2374       SETTINGS_LIBS="$SETTINGS_LIBS $GCONF_LIBS"
2375    fi
2378 if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then
2379     PKG_CHECK_MODULES(GOBJECT, gobject-2.0 >= 2.0, HAVE_GOBJECT=yes, HAVE_GOBJECT=no)
2380     if test "$HAVE_GOBJECT" = "yes"; then
2381        SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GOBJECT_CFLAGS"
2382        SETTINGS_LIBS="$SETTINGS_LIBS $GOBJECT_LIBS"
2383     fi
2384     SAVE_CFLAGS="$CFLAGS"
2385     SAVE_LIBS="$LIBS"
2386     CFLAGS="$SETTINGS_CFLAGS $CFLAGS"
2387     LIBS="$SETTINGS_LIBS $LIBS"
2388     CFLAGS="$SAVE_CFLAGS"
2389     LIBS="$SAVE_LIBS"
2391 AC_SUBST(SETTINGS_CFLAGS)
2392 AC_SUBST(SETTINGS_LIBS)
2395 dnl SELinux is available for GNU/Linux only.
2396 HAVE_LIBSELINUX=no
2397 LIBSELINUX_LIBS=
2398 if test "${with_selinux}" = "yes"; then
2399    AC_CHECK_LIB([selinux], [lgetfilecon], HAVE_LIBSELINUX=yes, HAVE_LIBSELINUX=no)
2400    if test "$HAVE_LIBSELINUX" = yes; then
2401       AC_DEFINE(HAVE_LIBSELINUX, 1, [Define to 1 if using SELinux.])
2402       LIBSELINUX_LIBS=-lselinux
2403    fi
2405 AC_SUBST(LIBSELINUX_LIBS)
2407 HAVE_GNUTLS=no
2408 HAVE_GNUTLS3=no
2409 if test "${with_gnutls}" = "yes" ; then
2410   PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.0.0], HAVE_GNUTLS3=yes, HAVE_GNUTLS3=no)
2411   if test "${HAVE_GNUTLS3}" = "yes"; then
2412     AC_DEFINE(HAVE_GNUTLS3, 1, [Define if using GnuTLS v3.])
2413     HAVE_GNUTLS="yes"
2414   else
2415     PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no)
2416   fi
2417   if test "${HAVE_GNUTLS}" = "yes"; then
2418     AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
2419   fi
2421   # Windows loads GnuTLS dynamically
2422   if test "${opsys}" = "mingw32"; then
2423     LIBGNUTLS_LIBS=
2424   else
2425     CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
2426     LIBS="$LIBGNUTLS_LIBS $LIBS"
2427   fi
2430 AC_SUBST(LIBGNUTLS_LIBS)
2431 AC_SUBST(LIBGNUTLS_CFLAGS)
2433 NOTIFY_OBJ=
2434 NOTIFY_SUMMARY=no
2436 dnl FIXME?  Don't auto-detect on NS, but do allow someone to specify
2437 dnl a particular library.  This doesn't make much sense?
2438 if test "${with_ns}" = yes && test ${with_file_notification} = yes; then
2439   with_file_notification=no
2442 dnl MS Windows native file monitor is available for mingw32 only.
2443 case $with_file_notification,$opsys in
2444   w32,* | yes,mingw32)
2445     AC_CHECK_HEADER(windows.h)
2446     if test "$ac_cv_header_windows_h" = yes ; then
2447        AC_DEFINE(HAVE_W32NOTIFY, 1, [Define to 1 to use w32notify.])
2448        NOTIFY_OBJ=w32notify.o
2449        NOTIFY_SUMMARY="yes (w32)"
2450     fi ;;
2451 esac
2453 dnl g_file_monitor exists since glib 2.18.  G_FILE_MONITOR_EVENT_MOVED
2454 dnl has been added in glib 2.24.  It has been tested under
2455 dnl GNU/Linux only.  We take precedence over inotify, but this makes
2456 dnl only sense when glib has been compiled with inotify support.  How
2457 dnl to check?
2458 case $with_file_notification,$NOTIFY_OBJ in
2459   gfile, | yes,)
2460     PKG_CHECK_MODULES(GFILENOTIFY, gio-2.0 >= 2.24, HAVE_GFILENOTIFY=yes, HAVE_GFILENOTIFY=no)
2461     if test "$HAVE_GFILENOTIFY" = "yes"; then
2462        AC_DEFINE(HAVE_GFILENOTIFY, 1, [Define to 1 if using GFile.])
2463        NOTIFY_OBJ=gfilenotify.o
2464        NOTIFY_SUMMARY="yes -lgio (gfile)"
2465     fi ;;
2466 esac
2468 dnl inotify is only available on GNU/Linux.
2469 case $with_file_notification,$NOTIFY_OBJ in
2470   inotify, | yes,)
2471     AC_CHECK_HEADER(sys/inotify.h)
2472     if test "$ac_cv_header_sys_inotify_h" = yes ; then
2473         AC_CHECK_FUNC(inotify_init1)
2474         if test "$ac_cv_func_inotify_init1" = yes; then
2475           AC_DEFINE(HAVE_INOTIFY, 1, [Define to 1 to use inotify.])
2476           NOTIFY_OBJ=inotify.o
2477           NOTIFY_SUMMARY="yes -lglibc (inotify)"
2478        fi
2479     fi ;;
2480 esac
2482 case $with_file_notification,$NOTIFY_OBJ in
2483   yes,* | no,* | *,?*) ;;
2484   *) AC_MSG_ERROR([File notification `$with_file_notification' requested but requirements not found.]) ;;
2485 esac
2487 if test -n "$NOTIFY_OBJ"; then
2488    AC_DEFINE(USE_FILE_NOTIFY, 1, [Define to 1 if using file notifications.])
2490 AC_SUBST(NOTIFY_OBJ)
2491 AC_SUBST(GFILENOTIFY_CFLAGS)
2492 AC_SUBST(GFILENOTIFY_LIBS)
2494 dnl Do not put whitespace before the #include statements below.
2495 dnl Older compilers (eg sunos4 cc) choke on it.
2496 HAVE_XAW3D=no
2497 LUCID_LIBW=
2498 if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
2499   if test "$with_xaw3d" != no; then
2500     AC_CACHE_VAL(emacs_cv_xaw3d,
2501     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2502 #include <X11/Intrinsic.h>
2503 #include <X11/Xaw3d/Simple.h>]],
2504       [[]])],
2505       [AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb,
2506                     emacs_cv_xaw3d=yes, emacs_cv_xaw3d=no)],
2507       emacs_cv_xaw3d=no)])
2508   else
2509     emacs_cv_xaw3d=no
2510   fi
2511   if test $emacs_cv_xaw3d = yes; then
2512     AC_MSG_CHECKING(for xaw3d)
2513     AC_MSG_RESULT([yes; using Lucid toolkit])
2514     USE_X_TOOLKIT=LUCID
2515     HAVE_XAW3D=yes
2516     LUCID_LIBW=-lXaw3d
2517     AC_DEFINE(HAVE_XAW3D, 1,
2518               [Define to 1 if you have the Xaw3d library (-lXaw3d).])
2519   else
2520     AC_MSG_CHECKING(for xaw3d)
2521     AC_MSG_RESULT(no)
2522     AC_MSG_CHECKING(for libXaw)
2523     AC_CACHE_VAL(emacs_cv_xaw,
2524     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2525 #include <X11/Intrinsic.h>
2526 #include <X11/Xaw/Simple.h>]],
2527       [[]])],
2528       emacs_cv_xaw=yes,
2529       emacs_cv_xaw=no)])
2530     if test $emacs_cv_xaw = yes; then
2531       AC_MSG_RESULT([yes; using Lucid toolkit])
2532       USE_X_TOOLKIT=LUCID
2533       LUCID_LIBW=-lXaw
2534     elif test x"${USE_X_TOOLKIT}" = xLUCID; then
2535       AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
2536     else
2537       AC_MSG_ERROR([No X toolkit could be found.
2538 If you are sure you want Emacs compiled without an X toolkit, pass
2539   --with-x-toolkit=no
2540 to configure.  Otherwise, install the development libraries for the toolkit
2541 that you want to use (e.g. Gtk+) and re-run configure.])
2542     fi
2543   fi
2546 X_TOOLKIT_TYPE=$USE_X_TOOLKIT
2548 LIBXTR6=
2549 if test "${USE_X_TOOLKIT}" != "none"; then
2550   AC_MSG_CHECKING(X11 toolkit version)
2551   AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
2552   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Intrinsic.h>]],
2553 [[#if XtSpecificationRelease < 6
2554 fail;
2555 #endif
2556 ]])], emacs_cv_x11_toolkit_version_6=yes, emacs_cv_x11_toolkit_version_6=no)])
2557   HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6
2558   if test $emacs_cv_x11_toolkit_version_6 = yes; then
2559     AC_MSG_RESULT(6 or newer)
2560     AC_DEFINE(HAVE_X11XTR6, 1,
2561               [Define to 1 if you have the X11R6 or newer version of Xt.])
2562     LIBXTR6="-lSM -lICE"
2563     case "$opsys" in
2564       ## Use libw.a along with X11R6 Xt.
2565       unixware) LIBXTR6="$LIBXTR6 -lw" ;;
2566     esac
2567   else
2568     AC_MSG_RESULT(before 6)
2569   fi
2571 dnl If using toolkit, check whether libXmu.a exists.
2572 dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
2573   OLDLIBS="$LIBS"
2574   if test x$HAVE_X11XTR6 = xyes; then
2575     LIBS="-lXt -lSM -lICE $LIBS"
2576   else
2577     LIBS="-lXt $LIBS"
2578   fi
2579   AC_CHECK_LIB(Xmu, XmuConvertStandardSelection)
2580   test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS"
2581   dnl ac_cv_lib_Xmu_XmuConvertStandardSelection is also referenced below.
2583 AC_SUBST(LIBXTR6)
2585 dnl FIXME the logic here seems weird, but this is what cpp was doing.
2586 dnl Why not just test for libxmu in the normal way?
2587 LIBXMU=-lXmu
2588 case $opsys in
2589   ## These systems don't supply Xmu.
2590   hpux* | aix4-2 )
2591     test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
2592     ;;
2593   mingw32 )
2594     LIBXMU=
2595     ;;
2596 esac
2597 AC_SUBST(LIBXMU)
2599 # On Irix 6.5, at least, we need XShapeQueryExtension from -lXext for Xaw3D.
2600 if test "${HAVE_X11}" = "yes"; then
2601   if test "${USE_X_TOOLKIT}" != "none"; then
2602     AC_CHECK_LIB(Xext, XShapeQueryExtension)
2603   fi
2606 LIBXP=
2607 if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2608   # OpenMotif may be installed in such a way on some GNU/Linux systems.
2609   if test -d /usr/include/openmotif; then
2610     CPPFLAGS="-I/usr/include/openmotif $CPPFLAGS"
2611     emacs_cv_openmotif=yes
2612     case "$canonical" in
2613       x86_64-*-linux-gnu* | powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*)
2614       test -d /usr/lib64/openmotif && LDFLAGS="-L/usr/lib64/openmotif $LDFLAGS"
2615       ;;
2616       *)
2617       test -d /usr/lib/openmotif && LDFLAGS="-L/usr/lib/openmotif $LDFLAGS"
2618     esac
2619   else
2620     emacs_cv_openmotif=no
2621   fi
2622   AC_CACHE_CHECK(for (Open)Motif version 2.1, emacs_cv_motif_version_2_1,
2623   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <Xm/Xm.h>]],
2624     [[#if XmVERSION > 2 || (XmVERSION == 2 && XmREVISION >= 1)
2625 int x = 5;
2626 #else
2627 Motif version prior to 2.1.
2628 #endif]])],
2629     emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)])
2630   if test $emacs_cv_motif_version_2_1 = yes; then
2631     AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp)
2632     if test x$emacs_cv_openmotif = xyes; then
2633       REAL_CPPFLAGS="-I/usr/include/openmotif $REAL_CPPFLAGS"
2634     fi
2635   else
2636     AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif,
2637     # We put this in CFLAGS temporarily to precede other -I options
2638     # that might be in CFLAGS temporarily.
2639     # We put this in CPPFLAGS where it precedes the other -I options.
2640     OLD_CPPFLAGS=$CPPFLAGS
2641     OLD_CFLAGS=$CFLAGS
2642     CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CPPFLAGS"
2643     CFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CFLAGS"
2644     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include </usr/X11R6/LessTif/Motif1.2/include/Xm/Xm.h>]],
2645       [[int x = 5;]])],
2646       emacs_cv_lesstif=yes, emacs_cv_lesstif=no)])
2647     if test $emacs_cv_lesstif = yes; then
2648       # Make sure this -I option remains in CPPFLAGS after it is set
2649       # back to REAL_CPPFLAGS.
2650       # There is no need to change REAL_CFLAGS, because REAL_CFLAGS does not
2651       # have those other -I options anyway.  Ultimately, having this
2652       # directory ultimately in CPPFLAGS will be enough.
2653       REAL_CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $REAL_CPPFLAGS"
2654       LDFLAGS="-L/usr/X11R6/LessTif/Motif1.2/lib $LDFLAGS"
2655     else
2656       CFLAGS=$OLD_CFLAGS
2657       CPPFLAGS=$OLD_CPPFLAGS
2658     fi
2659   fi
2660   AC_CHECK_HEADER([Xm/BulletinB.h], [],
2661     [AC_MSG_ERROR([Motif toolkit requested but requirements not found.])])
2664 dnl Use toolkit scroll bars if configured for GTK or X toolkit and either
2665 dnl using Motif or Xaw3d is available, and unless
2666 dnl --with-toolkit-scroll-bars=no was specified.
2668 AH_TEMPLATE(USE_TOOLKIT_SCROLL_BARS,
2669             [Define to 1 if we should use toolkit scroll bars.])dnl
2670 USE_TOOLKIT_SCROLL_BARS=no
2671 if test "${with_toolkit_scroll_bars}" != "no"; then
2672   if test "${USE_X_TOOLKIT}" != "none"; then
2673     if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2674       AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2675       HAVE_XAW3D=no
2676       USE_TOOLKIT_SCROLL_BARS=yes
2677     elif test "${HAVE_XAW3D}" = "yes" || test "${USE_X_TOOLKIT}" = "LUCID"; then
2678       AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2679       USE_TOOLKIT_SCROLL_BARS=yes
2680     fi
2681   elif test "${HAVE_GTK}" = "yes"; then
2682     AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2683     USE_TOOLKIT_SCROLL_BARS=yes
2684   elif test "${HAVE_NS}" = "yes"; then
2685     AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2686     USE_TOOLKIT_SCROLL_BARS=yes
2687   elif test "${HAVE_W32}" = "yes"; then
2688     AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2689     USE_TOOLKIT_SCROLL_BARS=yes
2690   fi
2693 dnl See if XIM is available.
2694 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2695           #include <X11/Xlib.h>
2696           #include <X11/Xresource.h>]],
2697          [[XIMProc  callback;]])],
2698          [HAVE_XIM=yes
2699          AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
2700          HAVE_XIM=no)
2702 dnl `--with-xim' now controls only the initial value of use_xim at run time.
2704 if test "${with_xim}" != "no"; then
2705   AC_DEFINE(USE_XIM, 1,
2706             [Define to 1 if we should use XIM, if it is available.])
2710 if test "${HAVE_XIM}" != "no"; then
2711   late_CFLAGS=$CFLAGS
2712   if test "$GCC" = yes; then
2713     CFLAGS="$CFLAGS --pedantic-errors"
2714   fi
2715   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2716 #include <X11/Xlib.h>
2717 #include <X11/Xresource.h>]],
2718 [[Display *display;
2719 XrmDatabase db;
2720 char *res_name;
2721 char *res_class;
2722 XIMProc  callback;
2723 XPointer *client_data;
2724 #ifndef __GNUC__
2725 /* If we're not using GCC, it's probably not XFree86, and this is
2726    probably right, but we can't use something like --pedantic-errors.  */
2727 extern Bool XRegisterIMInstantiateCallback(Display*, XrmDatabase, char*,
2728                                            char*, XIMProc, XPointer*);
2729 #endif
2730 (void)XRegisterIMInstantiateCallback(display, db, res_name, res_class, callback,
2731    client_data);]])],
2732     [emacs_cv_arg6_star=yes])
2733   AH_TEMPLATE(XRegisterIMInstantiateCallback_arg6,
2734          [Define to the type of the 6th arg of XRegisterIMInstantiateCallback,
2735 either XPointer or XPointer*.])dnl
2736   if test "$emacs_cv_arg6_star" = yes; then
2737     AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer*])
2738   else
2739     AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer])
2740   fi
2741   CFLAGS=$late_CFLAGS
2744 ### Start of font-backend (under any platform) section.
2745 # (nothing here yet -- this is a placeholder)
2746 ### End of font-backend (under any platform) section.
2748 ### Start of font-backend (under X11) section.
2749 if test "${HAVE_X11}" = "yes"; then
2750    PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2.0, HAVE_FC=yes, HAVE_FC=no)
2752    ## Use -lXft if available, unless `--with-xft=no'.
2753    HAVE_XFT=maybe
2754     if test "${HAVE_FC}" = "no" || test "x${with_x}" = "xno"; then
2755       with_xft="no";
2756     fi
2757     if test "x${with_xft}" != "xno"; then
2759       PKG_CHECK_MODULES(XFT, xft >= 0.13.0, , HAVE_XFT=no)
2760       ## Because xftfont.c uses XRenderQueryExtension, we also
2761       ## need to link to -lXrender.
2762       HAVE_XRENDER=no
2763       AC_CHECK_LIB(Xrender, XRenderQueryExtension, HAVE_XRENDER=yes)
2764       if test "$HAVE_XFT" != no && test "$HAVE_XRENDER" != no; then
2765         OLD_CPPFLAGS="$CPPFLAGS"
2766         OLD_CFLAGS="$CFLAGS"
2767         OLD_LIBS="$LIBS"
2768         CPPFLAGS="$CPPFLAGS $XFT_CFLAGS"
2769         CFLAGS="$CFLAGS $XFT_CFLAGS"
2770         XFT_LIBS="-lXrender $XFT_LIBS"
2771         LIBS="$XFT_LIBS $LIBS"
2772         AC_CHECK_HEADER(X11/Xft/Xft.h,
2773           AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS) , ,
2774           [[#include <X11/X.h>]])
2776         if test "${HAVE_XFT}" = "yes"; then
2777           AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
2778             AC_SUBST(XFT_LIBS)
2779           C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
2780         else
2781           CPPFLAGS="$OLD_CPPFLAGS"
2782           CFLAGS="$OLD_CFLAGS"
2783           LIBS="$OLD_LIBS"
2784         fi                        # "${HAVE_XFT}" = "yes"
2785       fi                          # "$HAVE_XFT" != no
2786     fi                            # "x${with_xft}" != "xno"
2788     ## We used to allow building with FreeType and without Xft.
2789     ## However, the ftx font backend driver is not in good shape.
2790     if test "$HAVE_XFT" != "yes"; then
2791        dnl For the "Does Emacs use" message at the end.
2792        HAVE_XFT=no
2793        HAVE_FREETYPE=no
2794     else
2795        dnl Strict linkers fail with
2796        dnl ftfont.o: undefined reference to symbol 'FT_New_Face'
2797        dnl if -lfreetype is not specified.
2798        dnl The following is needed to set FREETYPE_LIBS.
2799        PKG_CHECK_MODULES(FREETYPE, freetype2, HAVE_FREETYPE=yes,
2800                          HAVE_FREETYPE=no)
2802        test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype)
2803     fi
2805     HAVE_LIBOTF=no
2806     if test "${HAVE_FREETYPE}" = "yes"; then
2807       AC_DEFINE(HAVE_FREETYPE, 1,
2808                 [Define to 1 if using the freetype and fontconfig libraries.])
2809       if test "${with_libotf}" != "no"; then
2810         PKG_CHECK_MODULES(LIBOTF, libotf, HAVE_LIBOTF=yes,
2811                           HAVE_LIBOTF=no)
2812         if test "$HAVE_LIBOTF" = "yes"; then
2813           AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.])
2814           AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
2815                        HAVE_OTF_GET_VARIATION_GLYPHS=yes,
2816                        HAVE_OTF_GET_VARIATION_GLYPHS=no)
2817           if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
2818             AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1,
2819                       [Define to 1 if libotf has OTF_get_variation_glyphs.])
2820           fi
2821         fi
2822       fi
2823     dnl FIXME should there be an error if HAVE_FREETYPE != yes?
2824     dnl Does the new font backend require it, or can it work without it?
2825     fi
2827     HAVE_M17N_FLT=no
2828     if test "${HAVE_LIBOTF}" = yes; then
2829       if test "${with_m17n_flt}" != "no"; then
2830         PKG_CHECK_MODULES(M17N_FLT, m17n-flt, HAVE_M17N_FLT=yes, HAVE_M17N_FLT=no)
2831         if test "$HAVE_M17N_FLT" = "yes"; then
2832           AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
2833         fi
2834       fi
2835     fi
2836 else
2837     HAVE_XFT=no
2838     HAVE_FREETYPE=no
2839     HAVE_LIBOTF=no
2840     HAVE_M17N_FLT=no
2843 ### End of font-backend (under X11) section.
2845 AC_SUBST(FREETYPE_CFLAGS)
2846 AC_SUBST(FREETYPE_LIBS)
2847 AC_SUBST(FONTCONFIG_CFLAGS)
2848 AC_SUBST(FONTCONFIG_LIBS)
2849 AC_SUBST(LIBOTF_CFLAGS)
2850 AC_SUBST(LIBOTF_LIBS)
2851 AC_SUBST(M17N_FLT_CFLAGS)
2852 AC_SUBST(M17N_FLT_LIBS)
2854 ### Use -lXpm if available, unless `--with-xpm=no'.
2855 ### mingw32 doesn't use -lXpm, since it loads the library dynamically.
2856 HAVE_XPM=no
2857 LIBXPM=
2858 if test "${HAVE_W32}" = "yes" && test "${opsys}" = "cygwin"; then
2859   if test "${with_xpm}" != "no"; then
2860     SAVE_CPPFLAGS="$CPPFLAGS"
2861     SAVE_LDFLAGS="$LDFLAGS"
2862     CPPFLAGS="$CPPFLAGS -I/usr/include/noX"
2863     LDFLAGS="$LDFLAGS -L/usr/lib/noX"
2864     AC_CHECK_HEADER(X11/xpm.h,
2865       [AC_CHECK_LIB(Xpm, XpmReadFileToImage, HAVE_XPM=yes)])
2866     if test "${HAVE_XPM}" = "yes"; then
2867       AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
2868       AC_EGREP_CPP(no_return_alloc_pixels,
2869       [#include "X11/xpm.h"
2870 #ifndef XpmReturnAllocPixels
2871 no_return_alloc_pixels
2872 #endif
2873       ], HAVE_XPM=no, HAVE_XPM=yes)
2875       if test "${HAVE_XPM}" = "yes"; then
2876         REAL_CPPFLAGS="$REAL_CPPFLAGS -I/usr/include/noX"
2877         AC_MSG_RESULT(yes)
2878       else
2879         AC_MSG_RESULT(no)
2880         CPPFLAGS="$SAVE_CPPFLAGS"
2881         LDFLAGS="$SAVE_LDFLAGS"
2882       fi
2883     fi
2884   fi
2886   if test "${HAVE_XPM}" = "yes"; then
2887     AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
2888     LIBXPM=-lXpm
2889   fi
2892 if test "${HAVE_X11}" = "yes"; then
2893   if test "${with_xpm}" != "no"; then
2894     AC_CHECK_HEADER(X11/xpm.h,
2895       [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
2896     if test "${HAVE_XPM}" = "yes"; then
2897       AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
2898       AC_EGREP_CPP(no_return_alloc_pixels,
2899       [#include "X11/xpm.h"
2900 #ifndef XpmReturnAllocPixels
2901 no_return_alloc_pixels
2902 #endif
2903       ], HAVE_XPM=no, HAVE_XPM=yes)
2905       if test "${HAVE_XPM}" = "yes"; then
2906         AC_MSG_RESULT(yes)
2907       else
2908         AC_MSG_RESULT(no)
2909       fi
2910     fi
2911   fi
2913   if test "${HAVE_XPM}" = "yes"; then
2914     AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
2915     LIBXPM=-lXpm
2916   fi
2919 ### FIXME: Perhaps regroup to minimize code duplication due to MinGW's
2920 ### slightly different requirements wrt image libraries (it doesn't
2921 ### use -lXpm because it loads the xpm shared library dynamically at
2922 ### run time).
2923 if test "${opsys}" = "mingw32"; then
2924   if test "${with_xpm}" != "no"; then
2925     AC_CHECK_HEADER(X11/xpm.h, HAVE_XPM=yes, HAVE_XPM=no, [
2926 #define FOR_MSW 1])
2927   fi
2929   if test "${HAVE_XPM}" = "yes"; then
2930     AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
2931   fi
2934 AC_SUBST(LIBXPM)
2936 ### Use -ljpeg if available, unless `--with-jpeg=no'.
2937 ### mingw32 doesn't use -ljpeg, since it loads the library dynamically.
2938 HAVE_JPEG=no
2939 LIBJPEG=
2940 if test "${opsys}" = "mingw32"; then
2941   if test "${with_jpeg}" != "no"; then
2942     dnl Checking for jpeglib.h can lose because of a redefinition of
2943     dnl HAVE_STDLIB_H.
2944     AC_CHECK_HEADER(jerror.h, HAVE_JPEG=yes, HAVE_JPEG=no)
2945   fi
2946   AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
2947   if test "${HAVE_JPEG}" = "yes"; then
2948     AC_DEFINE(HAVE_JPEG)
2949     AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
2950         [#include <jpeglib.h>
2951          version=JPEG_LIB_VERSION
2953         [AC_DEFINE(HAVE_JPEG)],
2954         [AC_MSG_WARN([libjpeg found, but not version 6b or later])
2955         HAVE_JPEG=no])
2956   fi
2957 elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
2958   if test "${with_jpeg}" != "no"; then
2959     dnl Checking for jpeglib.h can lose because of a redefinition of
2960     dnl  HAVE_STDLIB_H.
2961     AC_CHECK_HEADER(jerror.h,
2962       [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
2963   fi
2965   AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
2966   if test "${HAVE_JPEG}" = "yes"; then
2967     AC_DEFINE(HAVE_JPEG)
2968     AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
2969         [#include <jpeglib.h>
2970          version=JPEG_LIB_VERSION
2972         [AC_DEFINE(HAVE_JPEG)],
2973         [AC_MSG_WARN([libjpeg found, but not version 6b or later])
2974         HAVE_JPEG=no])
2975   fi
2976   if test "${HAVE_JPEG}" = "yes"; then
2977     LIBJPEG=-ljpeg
2978   fi
2980 AC_SUBST(LIBJPEG)
2982 ### Use -lpng if available, unless `--with-png=no'.
2983 ### mingw32 doesn't use -lpng, since it loads the library dynamically.
2984 HAVE_PNG=no
2985 LIBPNG=
2986 if test "${opsys}" = "mingw32"; then
2987   if test "${with_png}" != "no"; then
2988     AC_CHECK_HEADER(png.h, HAVE_PNG=yes, HAVE_PNG=no)
2989   fi
2990   if test "${HAVE_PNG}" = "yes"; then
2991     AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
2993     AC_CHECK_DECL(png_longjmp,
2994       [],
2995       [AC_DEFINE(PNG_DEPSTRUCT, [],
2996          [Define to empty to suppress deprecation warnings when building
2997           with --enable-gcc-warnings and with libpng versions before 1.5,
2998           which lack png_longjmp.])],
2999       [[#ifdef HAVE_LIBPNG_PNG_H
3000         # include <libpng/png.h>
3001         #else
3002         # include <png.h>
3003         #endif
3004       ]])
3005   fi
3006 elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
3007   if test "${with_png}" != "no"; then
3008     # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
3009     # in /usr/include/libpng.
3010     AC_CHECK_HEADERS(png.h libpng/png.h, break)
3011     if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
3012       AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm)
3013     fi
3014   fi
3016   if test "${HAVE_PNG}" = "yes"; then
3017     AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
3018     LIBPNG="-lpng -lz -lm"
3020     AC_CHECK_DECL(png_longjmp,
3021       [],
3022       [AC_DEFINE(PNG_DEPSTRUCT, [],
3023          [Define to empty to suppress deprecation warnings when building
3024           with --enable-gcc-warnings and with libpng versions before 1.5,
3025           which lack png_longjmp.])],
3026       [[#ifdef HAVE_LIBPNG_PNG_H
3027         # include <libpng/png.h>
3028         #else
3029         # include <png.h>
3030         #endif
3031       ]])
3032   fi
3034 AC_SUBST(LIBPNG)
3036 HAVE_ZLIB=no
3037 LIBZ=
3038 if test "${with_zlib}" != "no"; then
3039   OLIBS=$LIBS
3040   AC_SEARCH_LIBS([inflateEnd], [z], [HAVE_ZLIB=yes])
3041   LIBS=$OLIBS
3042   case $ac_cv_search_inflateEnd in
3043     -*) LIBZ=$ac_cv_search_inflateEnd ;;
3044   esac
3046 if test "${HAVE_ZLIB}" = "yes"; then
3047   AC_DEFINE([HAVE_ZLIB], 1, [Define to 1 if you have the zlib library (-lz).])
3048   ### mingw32 doesn't use -lz, since it loads the library dynamically.
3049   if test "${opsys}" = "mingw32"; then
3050      LIBZ=
3051   fi
3053 AC_SUBST(LIBZ)
3056 ### Use -ltiff if available, unless `--with-tiff=no'.
3057 ### mingw32 doesn't use -ltiff, since it loads the library dynamically.
3058 HAVE_TIFF=no
3059 LIBTIFF=
3060 if test "${opsys}" = "mingw32"; then
3061   if test "${with_tiff}" != "no"; then
3062     AC_CHECK_HEADER(tiffio.h, HAVE_TIFF=yes, HAVE_TIFF=no)
3063   fi
3064   if test "${HAVE_TIFF}" = "yes"; then
3065     AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
3066   fi
3067 elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
3068   if test "${with_tiff}" != "no"; then
3069     AC_CHECK_HEADER(tiffio.h,
3070       [tifflibs="-lz -lm"
3071       # At least one tiff package requires the jpeg library.
3072       if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
3073       AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)])
3074   fi
3076   if test "${HAVE_TIFF}" = "yes"; then
3077     AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
3078     dnl FIXME -lz -lm, as per libpng?
3079     LIBTIFF=-ltiff
3080   fi
3082 AC_SUBST(LIBTIFF)
3084 ### Use -lgif or -lungif if available, unless `--with-gif=no'.
3085 ### mingw32 doesn't use -lgif/-lungif, since it loads the library dynamically.
3086 HAVE_GIF=no
3087 LIBGIF=
3088 if test "${opsys}" = "mingw32"; then
3089   if test "${with_gif}" != "no"; then
3090     AC_CHECK_HEADER(gif_lib.h, HAVE_GIF=yes, HAVE_GIF=no)
3091   fi
3092   if test "${HAVE_GIF}" = "yes"; then
3093     AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
3094   fi
3095 elif test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no" \
3096         || test "${HAVE_W32}" = "yes"; then
3097   AC_CHECK_HEADER(gif_lib.h,
3098 # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
3099 # Earlier versions can crash Emacs, but version 5.0 removes EGifPutExtensionLast.
3100     [AC_CHECK_LIB(gif, GifMakeMapObject, HAVE_GIF=yes,
3101         [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])])
3103   if test "$HAVE_GIF" = yes; then
3104     LIBGIF=-lgif
3105   elif test "$HAVE_GIF" = maybe; then
3106 # If gif_lib.h but no libgif, try libungif.
3107     AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no)
3108     test "$HAVE_GIF" = yes && LIBGIF=-lungif
3109   fi
3111   if test "${HAVE_GIF}" = "yes"; then
3112     AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
3113   fi
3115 AC_SUBST(LIBGIF)
3117 dnl Check for required libraries.
3118 if test "${HAVE_X11}" = "yes"; then
3119   MISSING=""
3120   WITH_NO=""
3121   test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
3122     MISSING="libXpm" && WITH_NO="--with-xpm=no"
3123   test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
3124     MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
3125   test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
3126     MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
3127   test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
3128     MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
3129   test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
3130     MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
3132   if test "X${MISSING}" != X; then
3133     AC_MSG_ERROR([The following required libraries were not found:
3134     $MISSING
3135 Maybe some development libraries/packages are missing?
3136 If you don't want to link with them give
3137     $WITH_NO
3138 as options to configure])
3139   fi
3142 ### Use -lgpm if available, unless `--with-gpm=no'.
3143 HAVE_GPM=no
3144 LIBGPM=
3145 if test "${with_gpm}" != "no"; then
3146   AC_CHECK_HEADER(gpm.h,
3147     [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
3149   if test "${HAVE_GPM}" = "yes"; then
3150     AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
3151     LIBGPM=-lgpm
3152   fi
3154 AC_SUBST(LIBGPM)
3156 dnl Check for malloc/malloc.h on darwin
3157 AC_CHECK_HEADERS_ONCE(malloc/malloc.h)
3159 GNUSTEP_CFLAGS=
3160 ### Use NeXTstep API to implement GUI.
3161 if test "${HAVE_NS}" = "yes"; then
3162   AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.])
3163   if test "${NS_IMPL_COCOA}" = "yes"; then
3164     AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under MacOS X.])
3165   fi
3166   if test "${NS_IMPL_GNUSTEP}" = "yes"; then
3167     AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
3168     # See also .m.o rule in Makefile.in */
3169     # FIXME: are all these flags really needed?  Document here why.  */
3170     GNUSTEP_CFLAGS="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
3171     ## Extra CFLAGS applied to src/*.m files.
3172     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"
3173   fi
3174   OTHER_FILES=ns-app
3177 ### Use session management (-lSM -lICE) if available
3178 HAVE_X_SM=no
3179 LIBXSM=
3180 if test "${HAVE_X11}" = "yes"; then
3181   AC_CHECK_HEADER(X11/SM/SMlib.h,
3182     [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
3184   if test "${HAVE_X_SM}" = "yes"; then
3185     AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
3186     LIBXSM="-lSM -lICE"
3187     case "$LIBS" in
3188       *-lSM*) ;;
3189       *)      LIBS="$LIBXSM $LIBS" ;;
3190     esac
3191   fi
3193 AC_SUBST(LIBXSM)
3195 ### Use XRandr (-lXrandr) if available
3196 HAVE_XRANDR=no
3197 if test "${HAVE_X11}" = "yes"; then
3198   XRANDR_REQUIRED=1.2.2
3199   XRANDR_MODULES="xrandr >= $XRANDR_REQUIRED"
3200   PKG_CHECK_MODULES(XRANDR, $XRANDR_MODULES, HAVE_XRANDR=yes, HAVE_XRANDR=no)
3201   if test $HAVE_XRANDR = no; then
3202     # Test old way in case pkg-config doesn't have it (older machines).
3203     AC_CHECK_HEADER(X11/extensions/Xrandr.h,
3204       [AC_CHECK_LIB(Xrandr, XRRGetScreenResources, HAVE_XRANDR=yes)])
3205     if test $HAVE_XRANDR = yes; then
3206       XRANDR_LIBS=-lXrandr
3207       AC_SUBST(XRANDR_LIBS)
3208     fi
3209   fi
3210   if test $HAVE_XRANDR = yes; then
3211     SAVE_CFLAGS="$CFLAGS"
3212     SAVE_LIBS="$LIBS"
3213     CFLAGS="$XRANDR_CFLAGS $CFLAGS"
3214     LIBS="$XRANDR_LIBS $LIBS"
3215     AC_CHECK_FUNCS(XRRGetOutputPrimary XRRGetScreenResourcesCurrent)
3216     CFLAGS="$SAVE_CFLAGS"
3217     LIBS="$SAVE_LIBS"
3219     AC_DEFINE(HAVE_XRANDR, 1, [Define to 1 if you have the XRandr extension.])
3220   fi
3223 ### Use Xinerama (-lXinerama) if available
3224 HAVE_XINERAMA=no
3225 if test "${HAVE_X11}" = "yes"; then
3226   XINERAMA_REQUIRED=1.0.2
3227   XINERAMA_MODULES="xinerama >= $XINERAMA_REQUIRED"
3228   PKG_CHECK_MODULES(XINERAMA, $XINERAMA_MODULES, HAVE_XINERAMA=yes,
3229                     HAVE_XINERAMA=no)
3230   if test $HAVE_XINERAMA = no; then
3231     # Test old way in case pkg-config doesn't have it (older machines).
3232     AC_CHECK_HEADER(X11/extensions/Xinerama.h,
3233       [AC_CHECK_LIB(Xinerama, XineramaQueryExtension, HAVE_XINERAMA=yes)])
3234     if test $HAVE_XINERAMA = yes; then
3235       XINERAMA_LIBS=-lXinerama
3236       AC_SUBST(XINERAMA_LIBS)
3237     fi
3238   fi
3239   if test $HAVE_XINERAMA = yes; then
3240     AC_DEFINE(HAVE_XINERAMA, 1, [Define to 1 if you have the Xinerama extension.])
3241   fi
3245 ### Use libxml (-lxml2) if available
3246 ### mingw32 doesn't use -lxml2, since it loads the library dynamically.
3247 HAVE_LIBXML2=no
3248 if test "${with_xml2}" != "no"; then
3249   ### I'm not sure what the version number should be, so I just guessed.
3250   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 > 2.6.17, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
3251   # Built-in libxml2 on OS X 10.8 lacks libxml-2.0.pc.
3252   if test "${HAVE_LIBXML2}" != "yes" -a "$opsys" = "darwin"; then
3253     SAVE_CPPFLAGS="$CPPFLAGS"
3254     CPPFLAGS="$CPPFLAGS -I/usr/include/libxml2"
3255     AC_CHECK_HEADER(libxml/HTMLparser.h,
3256       [AC_CHECK_DECL(HTML_PARSE_RECOVER, HAVE_LIBXML2=yes, ,
3257                      [#include <libxml/HTMLparser.h>])])
3258     CPPFLAGS="$SAVE_CPPFLAGS"
3259     if test "${HAVE_LIBXML2}" = "yes"; then
3260       LIBXML2_LIBS="-lxml2"
3261       LIBXML2_CFLAGS="-I/usr/include/libxml2"
3262     fi
3263   fi
3264   if test "${HAVE_LIBXML2}" = "yes"; then
3265     if test "${opsys}" != "mingw32"; then
3266       LIBS="$LIBXML2_LIBS $LIBS"
3267       AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
3268     else
3269       LIBXML2_LIBS=""
3270     fi
3271     if test "${HAVE_LIBXML2}" = "yes"; then
3272       AC_DEFINE(HAVE_LIBXML2, 1, [Define to 1 if you have the libxml library (-lxml2).])
3273     else
3274       LIBXML2_LIBS=""
3275       LIBXML2_CFLAGS=""
3276     fi
3277   fi
3279 AC_SUBST(LIBXML2_LIBS)
3280 AC_SUBST(LIBXML2_CFLAGS)
3282 # If netdb.h doesn't declare h_errno, we must declare it by hand.
3283 # On MinGW, that is provided by nt/inc/sys/socket.h and w32.c.
3284 if test "${opsys}" = "mingw32"; then
3285   emacs_cv_netdb_declares_h_errno=yes
3287 AC_CACHE_CHECK(whether netdb declares h_errno,
3288                emacs_cv_netdb_declares_h_errno,
3289 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
3290   [[return h_errno;]])],
3291   emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
3292 if test $emacs_cv_netdb_declares_h_errno = yes; then
3293   AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
3296 # sqrt and other floating-point functions such as fmod and frexp
3297 # are found in -lm on most systems, but mingw32 doesn't use -lm.
3298 if test "${opsys}" != "mingw32"; then
3299   AC_CHECK_LIB(m, sqrt)
3302 # Check for mail-locking functions in a "mail" library.  Probably this should
3303 # have the same check as for liblockfile below.
3304 AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
3305 if test $have_mail = yes; then
3306   LIBS_MAIL=-lmail
3307   LIBS="$LIBS_MAIL $LIBS"
3308   AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library (-lmail).])
3309 else
3310   LIBS_MAIL=
3312 dnl Debian, at least:
3313 AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
3314 if test $have_lockfile = yes; then
3315    LIBS_MAIL=-llockfile
3316    LIBS="$LIBS_MAIL $LIBS"
3317    AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' library (-llockfile).])
3318 else
3319 # If we have the shared liblockfile, assume we must use it for mail
3320 # locking (e.g. Debian).  If we couldn't link against liblockfile
3321 # (no liblockfile.a installed), ensure that we don't need to.
3322   dnl This works for files generally, not just executables.
3323   dnl Should we look elsewhere for it?  Maybe examine /etc/ld.so.conf?
3324   AC_CHECK_PROG(liblockfile, liblockfile.so, yes, no,
3325                 /usr/lib:/lib:/usr/local/lib:$LD_LIBRARY_PATH)
3326   if test $ac_cv_prog_liblockfile = yes; then
3327     AC_MSG_ERROR([Shared liblockfile found but can't link against it.
3328 This probably means that movemail could lose mail.
3329 There may be a `development' package to install containing liblockfile.])
3330   fi
3332 AC_CHECK_HEADERS_ONCE(maillock.h)
3333 AC_SUBST(LIBS_MAIL)
3335 ## Define MAIL_USE_FLOCK (or LOCKF) if the mailer uses flock (or lockf) to
3336 ## interlock access to the mail spool.  The alternative is a lock file named
3337 ## /usr/spool/mail/$USER.lock.
3338 mail_lock=no
3339 case "$opsys" in
3340   aix4-2) mail_lock="lockf" ;;
3342   gnu|freebsd|dragonfly|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
3344   ## On GNU/Linux systems, both methods are used by various mail programs.
3345   ## I assume most people are using newer mailers that have heard of flock.
3346   ## Change this if you need to.
3347   ## Debian contains a patch which says: ``On Debian/GNU/Linux systems,
3348   ## configure gets the right answers, and that means *NOT* using flock.
3349   ## Using flock is guaranteed to be the wrong thing. See Debian Policy
3350   ## for details.'' and then uses `#ifdef DEBIAN'.  Unfortunately the
3351   ## Debian maintainer hasn't provided a clean fix for Emacs.
3352   ## movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
3353   ## HAVE_MAILLOCK_H are defined, so the following appears to be the
3354   ## correct logic.  -- fx
3355   ## We must check for HAVE_LIBLOCKFILE too, as movemail does.
3356   ## liblockfile is a Free Software replacement for libmail, used on
3357   ## Debian systems and elsewhere. -rfr.
3358   gnu-*)
3359     mail_lock="flock"
3360     if test $have_mail = yes || test $have_lockfile = yes; then
3361       test $ac_cv_header_maillock_h = yes && mail_lock=no
3362     fi
3363     ;;
3365   mingw32)
3366     mail_lock="none-needed" ;;
3367 esac
3369 BLESSMAIL_TARGET=
3370 case "$mail_lock" in
3371   flock) AC_DEFINE(MAIL_USE_FLOCK, 1, [Define if the mailer uses flock to interlock the mail spool.]) ;;
3373   lockf) AC_DEFINE(MAIL_USE_LOCKF, 1, [Define if the mailer uses lockf to interlock the mail spool.]) ;;
3375   none-needed) ;;
3377   *) BLESSMAIL_TARGET="need-blessmail" ;;
3378 esac
3379 AC_SUBST(BLESSMAIL_TARGET)
3382 AC_CHECK_FUNCS(accept4 gethostname \
3383 getrusage get_current_dir_name \
3384 lrand48 \
3385 select getpagesize setlocale \
3386 getrlimit setrlimit shutdown getaddrinfo \
3387 strsignal setitimer \
3388 sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
3389 gai_strerror getline getdelim sync \
3390 difftime \
3391 getpwent endpwent getgrent endgrent \
3392 touchlock \
3393 cfmakeraw cfsetspeed copysign __executable_start log2)
3395 dnl No need to check for aligned_alloc and posix_memalign if using
3396 dnl gmalloc.o, as it supplies them.  Don't use these functions on
3397 dnl Darwin as they are incompatible with unexmacosx.c.
3398 if test -z "$GMALLOC_OBJ" && test "$opsys" != darwin; then
3399   AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break])
3402 ## Eric Backus <ericb@lsid.hp.com> says, HP-UX 9.x on HP 700 machines
3403 ## has a broken `rint' in some library versions including math library
3404 ## version number A.09.05.
3405 ## You can fix the math library by installing patch number PHSS_4630.
3406 ## But we can fix it more reliably for Emacs by just not using rint.
3407 ## We also skip HAVE_RANDOM - see comments in src/conf_post.h.
3408 case $opsys in
3409    hpux*) : ;;
3410    *) AC_CHECK_FUNCS(random rint) ;;
3411 esac
3413 dnl Cannot use AC_CHECK_FUNCS
3414 AC_CACHE_CHECK([for __builtin_unwind_init],
3415                emacs_cv_func___builtin_unwind_init,
3416 [AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_unwind_init ();])],
3417                 emacs_cv_func___builtin_unwind_init=yes,
3418                 emacs_cv_func___builtin_unwind_init=no)])
3419 if test $emacs_cv_func___builtin_unwind_init = yes; then
3420   AC_DEFINE(HAVE___BUILTIN_UNWIND_INIT, 1,
3421             [Define to 1 if you have the `__builtin_unwind_init' function.])
3424 AC_CHECK_HEADERS_ONCE(sys/un.h)
3426 AC_FUNC_FSEEKO
3428 # UNIX98 PTYs.
3429 AC_CHECK_FUNCS(grantpt)
3431 # PTY-related GNU extensions.
3432 AC_CHECK_FUNCS(getpt posix_openpt)
3434 # Check this now, so that we will NOT find the above functions in ncurses.
3435 # That is because we have not set up to link ncurses in lib-src.
3436 # It's better to believe a function is not available
3437 # than to expect to find it in ncurses.
3438 # Also we need tputs and friends to be able to build at all.
3439 AC_MSG_CHECKING([for library containing tputs])
3440 # Run a test program that contains a call to tputs, a call that is
3441 # never executed.  This tests whether a pre-'main' dynamic linker
3442 # works with the library.  It's too much trouble to actually call
3443 # tputs in the test program, due to portability hassles.  When
3444 # cross-compiling, assume the test program will run if it links.
3445 AC_DEFUN([tputs_link_source], [
3446   AC_LANG_SOURCE(
3447      [[extern void tputs (const char *, int, int (*)(int));
3448        int main (int argc, char **argv)
3449        {
3450           if (argc == 10000)
3451             tputs (argv[0], 0, 0);
3452           return 0;
3453        }]])
3455 if test "${opsys}" = "mingw32"; then
3456   msg='none required'
3457 else
3458   # Maybe curses should be tried earlier?
3459   # See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9736#35
3460   for tputs_library in '' tinfo ncurses terminfo termcap curses; do
3461     OLIBS=$LIBS
3462     if test -z "$tputs_library"; then
3463       LIBS_TERMCAP=
3464       msg='none required'
3465     else
3466       LIBS_TERMCAP=-l$tputs_library
3467       msg=$LIBS_TERMCAP
3468       LIBS="$LIBS_TERMCAP $LIBS"
3469     fi
3470     AC_RUN_IFELSE([tputs_link_source], [], [msg=no],
3471       [AC_LINK_IFELSE([tputs_link_source], [], [msg=no])])
3472     LIBS=$OLIBS
3473     if test "X$msg" != Xno; then
3474       break
3475     fi
3476   done
3478 AC_MSG_RESULT([$msg])
3479 if test "X$msg" = Xno; then
3480   AC_MSG_ERROR([The required function `tputs' was not found in any library.
3481 The following libraries were tried (in order):
3482   libtinfo, libncurses, libterminfo, libtermcap, libcurses
3483 Please try installing whichever of these libraries is most appropriate
3484 for your system, together with its header files.
3485 For example, a libncurses-dev(el) or similar package.])
3488 ## Use termcap instead of terminfo?
3489 ## Only true for: freebsd < 40000, ms-w32, msdos, netbsd < 599002500.
3490 TERMINFO=yes
3491 ## FIXME?  In the cases below where we unconditionally set
3492 ## LIBS_TERMCAP="-lncurses", this overrides LIBS_TERMCAP = -ltinfo,
3493 ## if that was found above to have tputs.
3494 ## Should we use the gnu* logic everywhere?
3495 case "$opsys" in
3496   ## darwin: Prevents crashes when running Emacs in Terminal.app under 10.2.
3497   ##  The ncurses library has been moved out of the System framework in
3498   ##  Mac OS X 10.2.  So if configure detects it, set the command-line
3499   ##  option to use it.
3500   darwin) LIBS_TERMCAP="-lncurses" ;;
3502   gnu*) test -z "$LIBS_TERMCAP" && LIBS_TERMCAP="-lncurses" ;;
3504   freebsd)
3505     AC_MSG_CHECKING([whether FreeBSD is new enough to use terminfo])
3506     AC_CACHE_VAL(emacs_cv_freebsd_terminfo,
3507     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <osreldate.h>]],
3508 [[#if __FreeBSD_version < 400000
3509 fail;
3510 #endif
3511 ]])], emacs_cv_freebsd_terminfo=yes, emacs_cv_freebsd_terminfo=no)])
3513     AC_MSG_RESULT($emacs_cv_freebsd_terminfo)
3515     if test $emacs_cv_freebsd_terminfo = yes; then
3516       LIBS_TERMCAP="-lncurses"
3517     else
3518       TERMINFO=no
3519       LIBS_TERMCAP="-ltermcap"
3520     fi
3521     ;;
3523   mingw32)
3524     TERMINFO=no
3525     LIBS_TERMCAP=
3526     ;;
3528   netbsd)
3529     if test "x$LIBS_TERMCAP" != "x-lterminfo"; then
3530       TERMINFO=no
3531       LIBS_TERMCAP="-ltermcap"
3532     fi
3533     ;;
3535   openbsd | dragonfly) LIBS_TERMCAP="-lncurses" ;;
3537   ## hpux: Make sure we get select from libc rather than from libcurses
3538   ##  because libcurses on HPUX 10.10 has a broken version of select.
3539   ##  We used to use -lc -lcurses, but this may be cleaner.
3540   ## FIXME?  But TERMINFO = yes on hpux (it used to be explicitly
3541   # set that way, now it uses the default).  Isn't this a contradiction?
3542   hpux*) LIBS_TERMCAP="-ltermcap" ;;
3544 esac
3546 TERMCAP_OBJ=tparam.o
3547 if test $TERMINFO = yes; then
3548   AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.])
3549   TERMCAP_OBJ=terminfo.o
3551 if test "X$LIBS_TERMCAP" = "X-lncurses"; then
3552   AC_DEFINE(USE_NCURSES, 1, [Define to 1 if you use ncurses.])
3554 AC_SUBST(LIBS_TERMCAP)
3555 AC_SUBST(TERMCAP_OBJ)
3558 # Do we have res_init, for detecting changes in /etc/resolv.conf?
3559 # On Darwin, res_init appears not to be useful: see bug#562 and
3560 # http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01467.html
3561 resolv=no
3563 if test $opsys != darwin; then
3565   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
3566 #include <arpa/nameser.h>
3567 #include <resolv.h>]],
3568     [[return res_init();]])],
3569     have_res_init=yes, have_res_init=no)
3570   if test "$have_res_init" = no; then
3571     OLIBS="$LIBS"
3572     LIBS="$LIBS -lresolv"
3573     AC_MSG_CHECKING(for res_init with -lresolv)
3574     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
3575 #include <arpa/nameser.h>
3576 #include <resolv.h>]],
3577       [[return res_init();]])],
3578       have_res_init=yes, have_res_init=no)
3579     AC_MSG_RESULT($have_res_init)
3580     if test "$have_res_init" = yes ; then
3581       resolv=yes
3582     fi
3583     LIBS="$OLIBS"
3584   fi
3586   if test "$have_res_init" = yes; then
3587     AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if res_init is available.])
3588   fi
3589 fi                              dnl !darwin
3591 # Do we need the Hesiod library to provide the support routines?
3592 dnl FIXME?  Should we be skipping this on Darwin too?
3593 LIBHESIOD=
3594 if test "$with_hesiod" != no ; then
3595   # Don't set $LIBS here -- see comments above.  FIXME which comments?
3596   AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
3597      [AC_CHECK_LIB(resolv, res_send, resolv=yes,
3598                   [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
3599   if test "$resolv" = yes ; then
3600     RESOLVLIB=-lresolv
3601   else
3602     RESOLVLIB=
3603   fi
3604   AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
3605         hesiod=yes, :, $RESOLVLIB)])
3607   if test x"$hesiod" = xyes; then
3608     LIBHESIOD=-lhesiod
3609   fi
3611 AC_SUBST(LIBHESIOD)
3613 # Do we need libresolv (due to res_init or Hesiod)?
3614 if test "$resolv" = yes && test $opsys != darwin; then
3615   LIBRESOLV=-lresolv
3616 else
3617   LIBRESOLV=
3619 AC_SUBST(LIBRESOLV)
3621 # These tell us which Kerberos-related libraries to use.
3622 COM_ERRLIB=
3623 CRYPTOLIB=
3624 KRB5LIB=
3625 DESLIB=
3626 KRB4LIB=
3628 if test "${with_kerberos}" != no; then
3629   AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no)
3630   if test $have_com_err = yes; then
3631     COM_ERRLIB=-lcom_err
3632     LIBS="$COM_ERRLIB $LIBS"
3633   fi
3634   AC_CHECK_LIB(crypto, mit_des_cbc_encrypt, have_crypto=yes, have_crypto=no)
3635   if test $have_crypto = yes; then
3636     CRYPTOLIB=-lcrypto
3637     LIBS="$CRYPTOLIB $LIBS"
3638   fi
3639   AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt, have_k5crypto=yes, have_k5crypto=no)
3640   if test $have_k5crypto = yes; then
3641     CRYPTOLIB=-lk5crypto
3642     LIBS="$CRYPTOLIB $LIBS"
3643   fi
3644   AC_CHECK_LIB(krb5, krb5_init_context, have_krb5=yes, have_krb5=no)
3645   if test $have_krb5=yes; then
3646     KRB5LIB=-lkrb5
3647     LIBS="$KRB5LIB $LIBS"
3648   fi
3649   dnl FIXME Simplify.  Does not match 22 logic, thanks to default_off?
3650   if test "${with_kerberos5}" = no; then
3651     AC_CHECK_LIB(des425, des_cbc_encrypt, have_des425=yes, have_des425=no )
3652     if test $have_des425 = yes; then
3653       DESLIB=-ldes425
3654       LIBS="$DESLIB $LIBS"
3655     else
3656       AC_CHECK_LIB(des, des_cbc_encrypt, have_des=yes, have_des=no)
3657       if test $have_des = yes; then
3658         DESLIB=-ldes
3659         LIBS="$DESLIB $LIBS"
3660       fi
3661     fi
3662     AC_CHECK_LIB(krb4, krb_get_cred, have_krb4=yes, have_krb4=no)
3663     if test $have_krb4 = yes; then
3664       KRB4LIB=-lkrb4
3665       LIBS="$KRB4LIB $LIBS"
3666     else
3667       AC_CHECK_LIB(krb, krb_get_cred, have_krb=yes, have_krb=no)
3668       if test $have_krb = yes; then
3669         KRB4LIB=-lkrb
3670         LIBS="$KRB4LIB $LIBS"
3671       fi
3672     fi
3673   fi
3675   if test "${with_kerberos5}" != no; then
3676     AC_CHECK_HEADERS(krb5.h,
3677       [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,,
3678                         [#include <krb5.h>])])
3679   else
3680     AC_CHECK_HEADERS(krb.h,,
3681                      [AC_CHECK_HEADERS(kerberosIV/krb.h,,
3682                                        [AC_CHECK_HEADERS(kerberos/krb.h)])])
3683   fi
3684   AC_CHECK_HEADERS(com_err.h)
3687 AC_SUBST(COM_ERRLIB)
3688 AC_SUBST(CRYPTOLIB)
3689 AC_SUBST(KRB5LIB)
3690 AC_SUBST(DESLIB)
3691 AC_SUBST(KRB4LIB)
3693 AC_CHECK_HEADERS(valgrind/valgrind.h)
3695 AC_CHECK_FUNCS_ONCE(tzset)
3696 AC_MSG_CHECKING(whether localtime caches TZ)
3697 AC_CACHE_VAL(emacs_cv_localtime_cache,
3698 [if test x$ac_cv_func_tzset = xyes; then
3699 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <time.h>
3700 char TZ_GMT0[] = "TZ=GMT0";
3701 char TZ_PST8[] = "TZ=PST8";
3702 main()
3704   time_t now = time ((time_t *) 0);
3705   int hour_GMT0, hour_unset;
3706   if (putenv (TZ_GMT0) != 0)
3707     exit (1);
3708   hour_GMT0 = localtime (&now)->tm_hour;
3709   unsetenv("TZ");
3710   hour_unset = localtime (&now)->tm_hour;
3711   if (putenv (TZ_PST8) != 0)
3712     exit (1);
3713   if (localtime (&now)->tm_hour == hour_GMT0)
3714     exit (1);
3715   unsetenv("TZ");
3716   if (localtime (&now)->tm_hour != hour_unset)
3717     exit (1);
3718   exit (0);
3719 }]])], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
3720 [# If we have tzset, assume the worst when cross-compiling.
3721 emacs_cv_localtime_cache=yes])
3722 else
3723         # If we lack tzset, report that localtime does not cache TZ,
3724         # since we can't invalidate the cache if we don't have tzset.
3725         emacs_cv_localtime_cache=no
3726 fi])dnl
3727 AC_MSG_RESULT($emacs_cv_localtime_cache)
3728 if test $emacs_cv_localtime_cache = yes; then
3729   AC_DEFINE(LOCALTIME_CACHE, 1,
3730             [Define to 1 if localtime caches TZ.])
3733 ok_so_far=yes
3734 AC_CHECK_FUNC(socket, , ok_so_far=no)
3735 if test $ok_so_far = yes; then
3736   AC_CHECK_HEADER(netinet/in.h, , ok_so_far=no)
3738 if test $ok_so_far = yes; then
3739   AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
3741 if test $ok_so_far = yes; then
3742 dnl Fixme: Not used.  Should this be HAVE_SOCKETS?
3743   AC_DEFINE(HAVE_INET_SOCKETS, 1,
3744             [Define to 1 if you have inet sockets.])
3747 dnl Check for a Solaris 2.4 vfork bug that Autoconf misses (through 2.69).
3748 dnl This can be removed once we assume Autoconf 2.70.
3749 case $canonical in
3750   *-solaris2.4 | *-solaris2.4.*)
3751     dnl Disable the Autoconf-generated vfork test.
3752     : ${ac_cv_func_vfork_works=no};;
3753 esac
3755 AC_FUNC_FORK
3757 AC_CHECK_FUNCS(snprintf)
3759 dnl Check this late.  It depends on what other libraries (lrsvg, Gtk+ etc)
3760 dnl Emacs uses.
3761 XGSELOBJ=
3762 AC_MSG_CHECKING([whether GLib is linked in])
3763 AC_LINK_IFELSE([AC_LANG_PROGRAM(
3764         [[#include <glib.h>
3765         ]],
3766         [[g_print ("Hello world");]])],
3767      [links_glib=yes],
3768      [links_glib=no])
3769 AC_MSG_RESULT([$links_glib])
3770 if test "${links_glib}" = "yes"; then
3771   AC_DEFINE(HAVE_GLIB, 1, [Define to 1 if GLib is linked in.])
3772   if test "$HAVE_NS" = no;then
3773     XGSELOBJ=xgselect.o
3774   fi
3776 AC_SUBST(XGSELOBJ)
3778 dnl Adapted from Haible's version.
3779 AC_CACHE_CHECK([for nl_langinfo and CODESET], emacs_cv_langinfo_codeset,
3780   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
3781     [[char* cs = nl_langinfo(CODESET);]])],
3782     emacs_cv_langinfo_codeset=yes,
3783     emacs_cv_langinfo_codeset=no)
3784   ])
3785 if test $emacs_cv_langinfo_codeset = yes; then
3786   AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
3787     [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
3790 AC_TYPE_MBSTATE_T
3792 AC_CACHE_CHECK([for C restricted array declarations], emacs_cv_c_restrict_arr,
3793   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[void fred (int x[__restrict]);]], [[]])],
3794                   emacs_cv_c_restrict_arr=yes, emacs_cv_c_restrict_arr=no)])
3795 if test "$emacs_cv_c_restrict_arr" = yes; then
3796   AC_DEFINE(__restrict_arr, __restrict,
3797     [Define to compiler's equivalent of C99 restrict keyword in array
3798      declarations.  Define as empty for no equivalent.])
3801 dnl Fixme: AC_SYS_POSIX_TERMIOS should probably be used, but it's not clear
3802 dnl how the tty code is related to POSIX and/or other versions of termios.
3803 dnl The following looks like a useful start.
3805 dnl AC_SYS_POSIX_TERMIOS
3806 dnl if test $ac_cv_sys_posix_termios = yes; then
3807 dnl    AC_DEFINE(HAVE_TERMIOS, 1, [Define to 1 if you have POSIX-style functions
3808 dnl                                and macros for terminal control.])
3809 dnl    AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.])
3810 dnl fi
3812 dnl Turned on June 1996 supposing nobody will mind it.
3813 dnl MinGW emulates passwd database, so this feature doesn't make sense there.
3814 if test "${opsys}" != "mingw32"; then
3815    AC_DEFINE(AMPERSAND_FULL_NAME, 1, [Define to use the convention that &
3816      in the full name stands for the login id.])
3819 dnl Every platform that uses configure supports this.
3820 dnl There is a create-lockfiles option you can
3821 dnl customize if you do not want the lock files to be written.
3822 dnl So it is not clear that this #define still needs to exist.
3823 AC_DEFINE(CLASH_DETECTION, 1, [Define if you want lock files to be written,
3824   so that Emacs can tell instantly when you try to modify a file that
3825   someone else has modified in his/her Emacs.])
3827 dnl Everybody supports this, except MS.
3828 dnl Seems like the kind of thing we should be testing for, though.
3829 ## Note: PTYs are broken on darwin <6.  Use at your own risk.
3830 if test "${opsys}" != "mingw32"; then
3831   AC_DEFINE(HAVE_PTYS, 1, [Define if the system supports pty devices.])
3834 dnl Everybody supports this, except MS-DOS.
3835 dnl Seems like the kind of thing we should be testing for, though.
3836 dnl Compare with HAVE_INET_SOCKETS (which is unused...) above.
3837 AC_DEFINE(HAVE_SOCKETS, 1, [Define if the system supports
3838   4.2-compatible sockets.])
3840 AH_TEMPLATE(INTERNAL_TERMINAL, [This is substituted when $TERM is "internal".])
3842 AH_TEMPLATE(NULL_DEVICE, [Name of the file to open to get
3843   a null file, or a data sink.])
3844 if test "${opsys}" = "mingw32"; then
3845   AC_DEFINE(NULL_DEVICE, ["NUL:"])
3846 else
3847   AC_DEFINE(NULL_DEVICE, ["/dev/null"])
3850 AH_TEMPLATE(SEPCHAR, [Character that separates PATH elements.])
3851 if test "${opsys}" = "mingw32"; then
3852   AC_DEFINE(SEPCHAR, [';'])
3853 else
3854   AC_DEFINE(SEPCHAR, [':'])
3857 dnl Everybody supports this, except MS-DOS.
3858 AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.])
3860 AC_DEFINE(USER_FULL_NAME, [pw->pw_gecos], [How to get a user's full name.])
3863 AC_DEFINE(DIRECTORY_SEP, ['/'],
3864   [Character that separates directories in a file name.])
3866 if test "${opsys}" = "mingw32"; then
3867   AC_DEFINE(IS_DEVICE_SEP(_c_), [((_c_) == ':')],
3868     [Returns true if character is a device separator.])
3870   AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == '/' || (_c_) == '\\')],
3871     [Returns true if character is a directory separator.])
3873   AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP(_c_))],
3874     [Returns true if character is any form of separator.])
3875 else
3876   AC_DEFINE(IS_DEVICE_SEP(_c_), 0,
3877     [Returns true if character is a device separator.])
3879   AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == DIRECTORY_SEP)],
3880     [Returns true if character is a directory separator.])
3882   AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_))],
3883     [Returns true if character is any form of separator.])
3886 AH_TEMPLATE(NO_EDITRES, [Define if XEditRes should not be used.])
3888 case $opsys in
3889   aix4-2)
3890     dnl Unfortunately without libXmu we cannot support EditRes.
3891     if test x$ac_cv_lib_Xmu_XmuConvertStandardSelection != xyes; then
3892       AC_DEFINE(NO_EDITRES, 1)
3893     fi
3894     ;;
3896   hpux*)
3897     dnl Assar Westerlund <assar@sics.se> says this is necessary for
3898     dnl HP-UX 10.20, and that it works for HP-UX 0 as well.
3899     AC_DEFINE(NO_EDITRES, 1)
3900     ;;
3901 esac
3904 case $opsys in
3905   irix6-5 | sol2* | unixware )
3906     dnl Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
3907     dnl instead, there's a system variable _sys_nsig.  Unfortunately, we
3908     dnl need the constant to dimension an array.  So wire in the appropriate
3909     dnl value here.
3910     AC_DEFINE(NSIG_MINIMUM, 32, [Minimum value of NSIG.])
3911     ;;
3912 esac
3914 emacs_broken_SIGIO=no
3916 case $opsys in
3917   dnl SIGIO exists, but the feature doesn't work in the way Emacs needs.
3918   dnl See eg <http://article.gmane.org/gmane.os.openbsd.ports/46831>.
3919   hpux* | irix6-5 | openbsd | sol2* | unixware )
3920     emacs_broken_SIGIO=yes
3921     ;;
3923   aix4-2)
3924     dnl On AIX Emacs uses the gmalloc.c malloc implementation.  But given
3925     dnl the way this system works, libc functions that return malloced
3926     dnl memory use the libc malloc implementation. Calling xfree or
3927     dnl xrealloc on the results of such functions results in a crash.
3928     dnl
3929     dnl One solution for this could be to define SYSTEM_MALLOC in configure,
3930     dnl but that does not currently work on this system.
3931     dnl
3932     dnl It is possible to completely override the malloc implementation on
3933     dnl AIX, but that involves putting the malloc functions in a shared
3934     dnl library and setting the MALLOCTYPE environment variable to point to
3935     dnl that shared library.
3936     dnl
3937     dnl Emacs currently calls xrealloc on the results of get_current_dir name,
3938     dnl to avoid a crash just use the Emacs implementation for that function.
3939     dnl
3940     dnl FIXME We could change the AC_CHECK_FUNCS call near the start
3941     dnl of this file, so that we do not check for get_current_dir_name
3942     dnl on AIX.  But that might be fragile if something else ends
3943     dnl up testing for get_current_dir_name as a dependency.
3944     AC_DEFINE(BROKEN_GET_CURRENT_DIR_NAME, 1, [Define if
3945       get_current_dir_name should not be used.])
3946     ;;
3948   freebsd)
3949     dnl Circumvent a bug in FreeBSD.  In the following sequence of
3950     dnl writes/reads on a PTY, read(2) returns bogus data:
3951     dnl
3952     dnl write(2)  1022 bytes
3953     dnl write(2)   954 bytes, get EAGAIN
3954     dnl read(2)   1024 bytes in process_read_output
3955     dnl read(2)     11 bytes in process_read_output
3956     dnl
3957     dnl That is, read(2) returns more bytes than have ever been written
3958     dnl successfully.  The 1033 bytes read are the 1022 bytes written
3959     dnl successfully after processing (for example with CRs added if the
3960     dnl terminal is set up that way which it is here).  The same bytes will
3961     dnl be seen again in a later read(2), without the CRs.
3962     AC_DEFINE(BROKEN_PTY_READ_AFTER_EAGAIN, 1, [Define on FreeBSD to
3963       work around an issue when reading from a PTY.])
3964     ;;
3965 esac
3967 case $opsys in
3968   gnu-* | sol2-10 )
3969     dnl FIXME Can't we test if this exists (eg /proc/$$)?
3970     AC_DEFINE(HAVE_PROCFS, 1, [Define if you have the /proc filesystem.])
3971   ;;
3972 esac
3974 case $opsys in
3975   darwin | dragonfly | freebsd | netbsd | openbsd )
3976     AC_DEFINE(DONT_REOPEN_PTY, 1, [Define if process.c does not need to
3977       close a pty to make it a controlling terminal (it is already a
3978       controlling terminal of the subprocess, because we did ioctl TIOCSCTTY).])
3979   ;;
3980 esac
3982 dnl FIXME Surely we can test for this rather than hard-code it.
3983 case $opsys in
3984   netbsd | openbsd) sound_device="/dev/audio" ;;
3985   *) sound_device="/dev/dsp" ;;
3986 esac
3988 dnl Used in sound.c
3989 AC_DEFINE_UNQUOTED(DEFAULT_SOUND_DEVICE, "$sound_device",
3990   [Name of the default sound device.])
3993 dnl Emacs can read input using SIGIO and buffering characters itself,
3994 dnl or using CBREAK mode and making C-g cause SIGINT.
3995 dnl The choice is controlled by the variable interrupt_input.
3997 dnl Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)
3999 dnl Emacs uses the presence of the USABLE_SIGIO macro
4000 dnl to indicate whether or not signal-driven I/O is possible.  It uses
4001 dnl INTERRUPT_INPUT to decide whether to use it by default.
4003 dnl SIGIO can be used only on systems that implement it (4.2 and 4.3).
4004 dnl CBREAK mode has two disadvantages
4005 dnl 1) At least in 4.2, it is impossible to handle the Meta key properly.
4006 dnl I hear that in system V this problem does not exist.
4007 dnl 2) Control-G causes output to be discarded.
4008 dnl I do not know whether this can be fixed in system V.
4010 dnl Another method of doing input is planned but not implemented.
4011 dnl It would have Emacs fork off a separate process
4012 dnl to read the input and send it to the true Emacs process
4013 dnl through a pipe.
4014 case $opsys in
4015   darwin | gnu-linux | gnu-kfreebsd )
4016     AC_DEFINE(INTERRUPT_INPUT, 1, [Define to read input using SIGIO.])
4017   ;;
4018 esac
4021 dnl If the system's imake configuration file defines `NeedWidePrototypes'
4022 dnl as `NO', we must define NARROWPROTO manually.  Such a define is
4023 dnl generated in the Makefile generated by `xmkmf'.  If we don't define
4024 dnl NARROWPROTO, we will see the wrong function prototypes for X functions
4025 dnl taking float or double parameters.
4026 case $opsys in
4027   cygwin|gnu|gnu-linux|gnu-kfreebsd|irix6-5|freebsd|netbsd|openbsd)
4028     AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration
4029       file defines `NeedWidePrototypes' as `NO'.])
4030   ;;
4031 esac
4034 dnl Used in process.c, this must be a loop, even if it only runs once.
4035 dnl (Except on SGI; see below.  Take that, clarity and consistency!)
4036 AH_TEMPLATE(PTY_ITERATION, [How to iterate over PTYs.])
4037 dnl Only used if !PTY_ITERATION.  Iterate from FIRST_PTY_LETTER to z,
4038 dnl trying suffixes 0-16.
4039 AH_TEMPLATE(FIRST_PTY_LETTER, [Letter to use in finding device name of
4040   first PTY, if PTYs are supported.])
4041 AH_TEMPLATE(PTY_OPEN, [How to open a PTY, if non-standard.])
4042 AH_TEMPLATE(PTY_NAME_SPRINTF, [How to get the device name of the control
4043   end of a PTY, if non-standard.])
4044 AH_TEMPLATE(PTY_TTY_NAME_SPRINTF, [How to get device name of the tty
4045   end of a PTY, if non-standard.])
4047 case $opsys in
4048   aix4-2 )
4049     AC_DEFINE(PTY_ITERATION, [int c; for (c = 0; !c ; c++)])
4050     dnl You allocate a pty by opening /dev/ptc to get the master side.
4051     dnl To get the name of the slave side, you just ttyname() the master side.
4052     AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])
4053     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));])
4054     ;;
4056   cygwin )
4057     AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
4058     dnl multi-line AC_DEFINEs are hard. :(
4059     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)])
4060     AC_DEFINE(PTY_NAME_SPRINTF, [])
4061     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
4062     ;;
4064   dnl FIXME?  Maybe use same as freebsd - see bug#12040.
4065   darwin )
4066     AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
4067     dnl Not used, because PTY_ITERATION is defined.
4068     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
4069     dnl Note that openpty may fork via grantpt on Mac OS X 10.4/Darwin 8.
4070     dnl But we don't have to block SIGCHLD because it is blocked in the
4071     dnl implementation of grantpt.
4072     AC_DEFINE(PTY_OPEN, [ do { int slave; if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) fd = -1; else emacs_close (slave); } while (0)])
4073     AC_DEFINE(PTY_NAME_SPRINTF, [])
4074     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
4075     ;;
4077   gnu | openbsd )
4078     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
4079     ;;
4081   gnu-linux | gnu-kfreebsd | dragonfly | freebsd | netbsd )
4082     dnl if HAVE_GRANTPT
4083     if test "x$ac_cv_func_grantpt" = xyes; then
4084       AC_DEFINE(UNIX98_PTYS, 1, [Define if the system has Unix98 PTYs.])
4085       AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
4086       dnl Note that grantpt and unlockpt may fork.  We must block SIGCHLD
4087       dnl to prevent sigchld_handler from intercepting the child's death.
4088       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); }])
4089       dnl if HAVE_POSIX_OPENPT
4090       if test "x$ac_cv_func_posix_openpt" = xyes; then
4091         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)])
4092         AC_DEFINE(PTY_NAME_SPRINTF, [])
4093       dnl if HAVE_GETPT
4094       elif test "x$ac_cv_func_getpt" = xyes; then
4095         AC_DEFINE(PTY_OPEN, [fd = getpt ()])
4096         AC_DEFINE(PTY_NAME_SPRINTF, [])
4097       else
4098         AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
4099       fi
4100     else
4101       AC_DEFINE(FIRST_PTY_LETTER, ['p'])
4102     fi
4103     ;;
4105   hpux*)
4106     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
4107     AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);])
4108     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
4109     ;;
4111   irix6-5 )
4112     dnl It looks like this cannot be right, because it is not a loop.
4113     dnl However, process.c actually does this:
4114     dnl # ifndef __sgi
4115     dnl   continue;
4116     dnl # else
4117     dnl   return -1;
4118     dnl # endif
4119     dnl which presumably makes it OK, since irix == sgi (?).
4120     dnl FIXME it seems like this special treatment is unnecessary?
4121     dnl Why can't irix use a single-trip loop like eg cygwin?
4122     AC_DEFINE(PTY_ITERATION, [])
4123     dnl Not used, because PTY_ITERATION is defined.
4124     AC_DEFINE(FIRST_PTY_LETTER, ['q'])
4125     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); }])
4126     dnl No need to get the pty name at all.
4127     AC_DEFINE(PTY_NAME_SPRINTF, [])
4128     dnl No need to use sprintf to get the tty name--we get that from _getpty.
4129     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
4130     ;;
4132   sol2* )
4133     dnl On SysVr4, grantpt(3) forks a subprocess, so keep sigchld_handler()
4134     dnl from intercepting that death.  If any child but grantpt's should die
4135     dnl within, it should be caught after sigrelse(2).
4136     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); }])
4137     ;;
4139   unixware )
4140     dnl Comments are as per sol2*.
4141     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); }])
4142     ;;
4143 esac
4146 case $opsys in
4147   sol2* | unixware )
4148     dnl This change means that we don't loop through allocate_pty too
4149     dnl many times in the (rare) event of a failure.
4150     AC_DEFINE(FIRST_PTY_LETTER, ['z'])
4151     AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
4152     dnl Push various streams modules onto a PTY channel.  Used in process.c.
4153     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.])
4154     ;;
4155 esac
4158 AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by
4159 "typing" a signal character on the pty.])
4161 case $opsys in
4162   dnl Perry Smith <pedz@ddivt1.austin.ibm.com> says this is correct for AIX.
4163   dnl thomas@mathematik.uni-bremen.de says this is needed for IRIX.
4164   aix4-2 | cygwin | gnu | irix6-5 | dragonfly | freebsd | netbsd | openbsd | darwin )
4165     AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
4166     ;;
4168   dnl 21 Jun 06: Eric Hanchrow <offby1@blarg.net> says this works.
4169   dnl FIXME Does gnu-kfreebsd have linux/version.h?  It seems unlikely...
4170   gnu-linux | gnu-kfreebsd )
4172     AC_MSG_CHECKING([for signals via characters])
4173     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
4174 #include <linux/version.h>
4175 #if LINUX_VERSION_CODE < 0x20400
4176 # error "Linux version too old"
4177 #endif
4178       ]], [[]])], emacs_signals_via_chars=yes, emacs_signals_via_chars=no)
4180     AC_MSG_RESULT([$emacs_signals_via_chars])
4181     test $emacs_signals_via_chars = yes && AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
4182     ;;
4183 esac
4186 dnl Used in lisp.h, emacs.c, vm-limit.c
4187 dnl NEWS.18 describes this as "a number which contains
4188 dnl the high bits to be inclusive or'ed with pointers that are unpacked."
4189 AH_TEMPLATE(DATA_SEG_BITS, [Extra bits to be or'd in with any pointers
4190 stored in a Lisp_Object.])
4191 dnl if Emacs uses fewer than 32 bits for the value field of a LISP_OBJECT.
4193 case $opsys in
4194   aix*)
4195     dnl This works with 32-bit executables; Emacs doesn't support 64-bit.
4196     AC_DEFINE(DATA_SEG_BITS, [0x20000000])
4197     ;;
4198   hpux*)
4199     dnl The data segment on this machine always starts at address 0x40000000.
4200     AC_DEFINE(DATA_SEG_BITS, [0x40000000])
4201     ;;
4202   irix6-5)
4203     AC_DEFINE(DATA_SEG_BITS, [0x10000000])
4204     ;;
4205 esac
4208 AH_TEMPLATE(TAB3, [Undocumented.])
4210 case $opsys in
4211   darwin) AC_DEFINE(TAB3, OXTABS) ;;
4213   gnu | dragonfly | freebsd | netbsd | openbsd )
4214     AC_DEFINE(TABDLY, OXTABS, [Undocumented.])
4215     AC_DEFINE(TAB3, OXTABS)
4216     ;;
4218   gnu-linux | gnu-kfreebsd )
4219     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
4220 #ifndef __ia64__
4221 # error "not ia64"
4222 #endif
4223       ]], [[]])], AC_DEFINE(GC_MARK_SECONDARY_STACK(),
4224         [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)],
4225         [Mark a secondary stack, like the register stack on the ia64.]), [])
4226     ;;
4228   hpux*)
4229     AC_DEFINE(RUN_TIME_REMAP, 1, [Define if emacs.c needs to call
4230       run_time_remap; for HPUX.])
4231     ;;
4232 esac
4235 dnl This won't be used automatically yet.  We also need to know, at least,
4236 dnl that the stack is continuous.
4237 AH_TEMPLATE(GC_SETJMP_WORKS, [Define if setjmp is known to save all
4238   registers relevant for conservative garbage collection in the jmp_buf.])
4241 case $opsys in
4242   dnl Not all the architectures are tested, but there are Debian packages
4243   dnl for SCM and/or Guile on them, so the technique must work.  See also
4244   dnl comments in alloc.c concerning setjmp and gcc.
4245   dnl Fixme: it's probably safe to just use the GCC conditional below.
4246   gnu-linux | gnu-kfreebsd )
4247     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
4248 #if defined __i386__ || defined __sparc__ || defined __mc68000__ \
4249   || defined __alpha__ || defined __mips__ || defined __s390__ \
4250   || defined __arm__ || defined __powerpc__ || defined __amd64__ \
4251   || defined __ia64__ || defined __sh__
4252 /* ok */
4253 #else
4254 # error "setjmp not known to work on this arch"
4255 #endif
4256     ]], [[]])], AC_DEFINE(GC_SETJMP_WORKS, 1))
4257     ;;
4258 esac
4261 if test x$GCC = xyes; then
4262    dnl GC_SETJMP_WORKS is nearly always appropriate for GCC.
4263    AC_DEFINE(GC_SETJMP_WORKS, 1)
4264 else
4265   case $opsys in
4266     dnl irix: Tested on Irix 6.5.  SCM worked on earlier versions.
4267     dragonfly | freebsd | netbsd | openbsd | irix6-5 | sol2* )
4268       AC_DEFINE(GC_SETJMP_WORKS, 1)
4269       ;;
4270   esac
4271 fi                              dnl GCC?
4273 dnl In a weird quirk, MS runtime uses _setjmp and longjmp.
4274 AC_CACHE_CHECK([for _setjmp], [emacs_cv_func__setjmp],
4275   [AC_LINK_IFELSE(
4276      [AC_LANG_PROGRAM(
4277        [[#include <setjmp.h>
4278          #ifdef __MINGW32__
4279          # define _longjmp longjmp
4280          #endif
4281        ]],
4282        [[jmp_buf j;
4283          if (! _setjmp (j))
4284            _longjmp (j, 1);]])],
4285      [emacs_cv_func__setjmp=yes],
4286      [emacs_cv_func__setjmp=no])])
4287 if test $emacs_cv_func__setjmp = yes; then
4288   AC_DEFINE([HAVE__SETJMP], 1, [Define to 1 if _setjmp and _longjmp work.])
4289 else
4290   AC_CACHE_CHECK([for sigsetjmp], [emacs_cv_func_sigsetjmp],
4291     [AC_LINK_IFELSE(
4292        [AC_LANG_PROGRAM(
4293          [[#include <setjmp.h>
4294          ]],
4295          [[sigjmp_buf j;
4296            if (! sigsetjmp (j, 1))
4297              siglongjmp (j, 1);]])],
4298        [emacs_cv_func_sigsetjmp=yes],
4299        [emacs_cv_func_sigsetjmp=no])])
4300   if test $emacs_cv_func_sigsetjmp = yes; then
4301     AC_DEFINE([HAVE_SIGSETJMP], 1,
4302       [Define to 1 if sigsetjmp and siglongjmp work.
4303        The value of this symbol is irrelevant if HAVE__SETJMP is defined.])
4304   fi
4307 case $opsys in
4308   sol2* | unixware )
4309     dnl TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
4310     dnl subprocesses the usual way.  But TIOCSIGNAL does work for PTYs,
4311     dnl and this is all we need.
4312     AC_DEFINE(TIOCSIGSEND, TIOCSIGNAL, [Some platforms redefine this.])
4313     ;;
4314 esac
4317 case $opsys in
4318   hpux* | sol2* )
4319     dnl Used in xfaces.c.
4320     AC_DEFINE(XOS_NEEDS_TIME_H, 1, [Compensate for a bug in Xos.h on
4321       some systems, where it requires time.h.])
4322     ;;
4323 esac
4326 dnl Define symbols to identify the version of Unix this is.
4327 dnl Define all the symbols that apply correctly.
4328 AH_TEMPLATE(DOS_NT, [Define if the system is MS DOS or MS Windows.])
4329 AH_TEMPLATE(MSDOS, [Define if the system is MS DOS.])
4330 AH_TEMPLATE(USG, [Define if the system is compatible with System III.])
4331 AH_TEMPLATE(USG5_4, [Define if the system is compatible with System V Release 4.])
4333 case $opsys in
4334   aix4-2)
4335     AC_DEFINE(USG, [])
4336     dnl This symbol should be defined on AIX Version 3  ???????
4337     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
4338 #ifndef _AIX
4339 # error "_AIX not defined"
4340 #endif
4341     ]], [[]])], [], AC_DEFINE(_AIX, [], [Define if the system is AIX.]))
4342     ;;
4344   cygwin)
4345     AC_DEFINE(CYGWIN, 1, [Define if the system is Cygwin.])
4346     ;;
4348   darwin)
4349     dnl Not __APPLE__, as this may not be defined on non-OSX Darwin.
4350     dnl Not DARWIN, because Panther and lower CoreFoundation.h use DARWIN to
4351     dnl distinguish OS X from pure Darwin.
4352     AC_DEFINE(DARWIN_OS, [], [Define if the system is Darwin.])
4353     ;;
4355   gnu-linux | gnu-kfreebsd )
4356     AC_DEFINE(USG, [])
4357     AC_DEFINE(GNU_LINUX, [], [Define if ths system is compatible with GNU/Linux.])
4358     ;;
4360   hpux*)
4361     AC_DEFINE(USG, [])
4362     AC_DEFINE(HPUX, [], [Define if the system is HPUX.])
4363     ;;
4365   irix6-5)
4366     AC_DEFINE(USG, [])
4367     AC_DEFINE(USG5_4, [])
4368     AC_DEFINE(IRIX6_5, [], [Define if the system is IRIX.])
4369     ;;
4371   mingw32)
4372     AC_DEFINE(DOS_NT, [])
4373     AC_DEFINE(WINDOWSNT, 1, [Define if compiling for native MS Windows.])
4374     if test "x$ac_enable_checking" != "x" ; then
4375       AC_DEFINE(EMACSDEBUG, 1, [Define to 1 to enable w32 debug facilities.])
4376     fi
4377     ;;
4379   sol2*)
4380     AC_DEFINE(USG, [])
4381     AC_DEFINE(USG5_4, [])
4382     AC_DEFINE(SOLARIS2, [], [Define if the system is Solaris.])
4383     ;;
4385   unixware)
4386     AC_DEFINE(USG, [])
4387     AC_DEFINE(USG5_4, [])
4388     ;;
4389 esac
4391 AC_CACHE_CHECK([for usable FIONREAD], [emacs_cv_usable_FIONREAD],
4392   [case $opsys in
4393      aix4-2)
4394        dnl BUILD 9008 - FIONREAD problem still exists in X-Windows.
4395        emacs_cv_usable_FIONREAD=no
4396        ;;
4398      mingw32)
4399        emacs_cv_usable_FIONREAD=yes
4400        ;;
4402      *)
4403        AC_COMPILE_IFELSE(
4404          [AC_LANG_PROGRAM([[#include <sys/types.h>
4405                             #include <sys/ioctl.h>
4406                             #ifdef USG5_4
4407                             # include <sys/filio.h>
4408                             #endif
4409                           ]],
4410                           [[int foo = ioctl (0, FIONREAD, &foo);]])],
4411          [emacs_cv_usable_FIONREAD=yes],
4412          [emacs_cv_usable_FIONREAD=no])
4413        ;;
4414    esac])
4415 if test $emacs_cv_usable_FIONREAD = yes; then
4416   AC_DEFINE([USABLE_FIONREAD], [1], [Define to 1 if FIONREAD is usable.])
4418   if test $emacs_broken_SIGIO = no; then
4419     AC_CACHE_CHECK([for usable SIGIO], [emacs_cv_usable_SIGIO],
4420       [AC_COMPILE_IFELSE(
4421          [AC_LANG_PROGRAM([[#include <fcntl.h>
4422                             #include <signal.h>
4423                           ]],
4424                           [[int foo = SIGIO | F_SETFL | FASYNC;]])],
4425          [emacs_cv_usable_SIGIO=yes],
4426          [emacs_cv_usable_SIGIO=no])],
4427       [emacs_cv_usable_SIGIO=yes],
4428       [emacs_cv_usable_SIGIO=no])
4429     if test $emacs_cv_usable_SIGIO = yes; then
4430       AC_DEFINE([USABLE_SIGIO], [1], [Define to 1 if SIGIO is usable.])
4431     fi
4432   fi
4436 case $opsys in
4437   dnl Emacs supplies its own malloc, but glib calls posix_memalign,
4438   dnl and on Cygwin prior to version 1.7.24 that becomes the
4439   dnl Cygwin-supplied posix_memalign.  As malloc is not the Cygwin
4440   dnl malloc, the Cygwin posix_memalign always returns ENOSYS.  A
4441   dnl workaround is to set G_SLICE=always-malloc.  This is no longer
4442   dnl needed starting with cygwin-1.7.24, and it is no longer
4443   dnl effective starting with glib-2.36. */
4444   cygwin)
4445     AC_DEFINE(G_SLICE_ALWAYS_MALLOC, 1, [Define to set the
4446       G_SLICE environment variable to "always-malloc" at startup.])
4447     ;;
4449   hpux11)
4450     dnl It works to open the pty's tty in the parent (Emacs), then
4451     dnl close and reopen it in the child.
4452     AC_DEFINE(USG_SUBTTY_WORKS, 1, [Define for USG systems where it
4453       works to open a pty's tty in the parent process, then close and
4454       reopen it in the child.])
4455     ;;
4457   irix6-5)
4458     AC_DEFINE(PREFER_VSUSP, 1, [Define if process_send_signal should
4459       use VSUSP instead of VSWTCH.])
4460     ;;
4462   sol2-10)
4463     AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes
4464       on Solaris.])
4465     ;;
4466 esac
4468 # Set up the CFLAGS for real compilation, so we can substitute it.
4469 CFLAGS="$REAL_CFLAGS"
4470 CPPFLAGS="$REAL_CPPFLAGS"
4472 ## Hack to detect a buggy GCC version.
4473 if test "x$GCC" = xyes \
4474    && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \
4475    && test x"`echo $CFLAGS | grep '\-O@<:@23@:>@'`" != x \
4476    && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then
4477    AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'.])
4480 version=$PACKAGE_VERSION
4482 copyright="Copyright (C) 2013 Free Software Foundation, Inc."
4483 AC_DEFINE_UNQUOTED(COPYRIGHT, ["$copyright"],
4484   [Short copyright string for this version of Emacs.])
4485 AC_SUBST(copyright)
4487 ### Specify what sort of things we'll be editing into Makefile and config.h.
4488 ### Use configuration here uncanonicalized to avoid exceeding size limits.
4489 AC_SUBST(version)
4490 AC_SUBST(configuration)
4491 ## Unused?
4492 AC_SUBST(canonical)
4493 AC_SUBST(srcdir)
4494 AC_SUBST(prefix)
4495 AC_SUBST(exec_prefix)
4496 AC_SUBST(bindir)
4497 AC_SUBST(datadir)
4498 AC_SUBST(sharedstatedir)
4499 AC_SUBST(libexecdir)
4500 AC_SUBST(mandir)
4501 AC_SUBST(infodir)
4502 AC_SUBST(lispdir)
4503 AC_SUBST(leimdir)
4504 AC_SUBST(standardlisppath)
4505 AC_SUBST(locallisppath)
4506 AC_SUBST(lisppath)
4507 AC_SUBST(x_default_search_path)
4508 AC_SUBST(etcdir)
4509 AC_SUBST(archlibdir)
4510 AC_SUBST(etcdocdir)
4511 AC_SUBST(bitmapdir)
4512 AC_SUBST(gamedir)
4513 AC_SUBST(gameuser)
4514 ## FIXME? Nothing uses @LD_SWITCH_X_SITE@.
4515 ## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the
4516 ## end of LIBX_BASE, but nothing ever set it.
4517 AC_SUBST(LD_SWITCH_X_SITE)
4518 AC_SUBST(C_SWITCH_X_SITE)
4519 AC_SUBST(GNUSTEP_CFLAGS)
4520 AC_SUBST(CFLAGS)
4521 ## Used in lwlib/Makefile.in.
4522 AC_SUBST(X_TOOLKIT_TYPE)
4523 AC_SUBST(ns_appdir)
4524 AC_SUBST(ns_appbindir)
4525 AC_SUBST(ns_appresdir)
4526 AC_SUBST(ns_appsrc)
4527 AC_SUBST(GNU_OBJC_CFLAGS)
4528 AC_SUBST(OTHER_FILES)
4530 if test -n "${term_header}"; then
4531     AC_DEFINE_UNQUOTED(TERM_HEADER, "${term_header}",
4532         [Define to the header for the built-in window system.])
4535 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION,  "${canonical}",
4536                    [Define to the canonical Emacs configuration name.])
4537 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${emacs_config_options}",
4538                    [Define to the options passed to configure.])
4539 AH_TEMPLATE(config_opsysfile, [Some platforms that do not use configure
4540   define this to include extra configuration information.])
4542 case $opsys in
4543   mingw32)
4544     AC_DEFINE(config_opsysfile, <ms-w32.h>, [])
4545     ;;
4546 esac
4548 XMENU_OBJ=
4549 XOBJ=
4550 FONT_OBJ=
4551 if test "${HAVE_X_WINDOWS}" = "yes" ; then
4552   AC_DEFINE(HAVE_X_WINDOWS, 1,
4553             [Define to 1 if you want to use the X window system.])
4554   XMENU_OBJ=xmenu.o
4555   XOBJ="xterm.o xfns.o xselect.o xrdb.o xsmfns.o xsettings.o"
4556   FONT_OBJ=xfont.o
4557   if test "$HAVE_XFT" = "yes"; then
4558     FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
4559   elif test "$HAVE_FREETYPE" = "yes"; then
4560     FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
4561   fi
4562   AC_SUBST(FONT_OBJ)
4564 AC_SUBST(XMENU_OBJ)
4565 AC_SUBST(XOBJ)
4566 AC_SUBST(FONT_OBJ)
4568 WIDGET_OBJ=
4569 MOTIF_LIBW=
4570 if test "${USE_X_TOOLKIT}" != "none" ; then
4571   WIDGET_OBJ=widget.o
4572   AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
4573   if test "${USE_X_TOOLKIT}" = "LUCID"; then
4574     AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
4575   elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
4576     AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
4577     MOTIF_LIBW=-lXm
4578     case "$opsys" in
4579       gnu-linux)
4580         ## Paul Abrahams <abrahams at equinox.shaysnet.com> says this is needed.
4581         MOTIF_LIBW="$MOTIF_LIBW -lXpm"
4582         ;;
4584       unixware)
4585         ## Richard Anthony Ryan <ryanr at ellingtn.ftc.nrcs.usda.gov>
4586         ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2.
4587         MOTIF_LIBW="MOTIF_LIBW -lXimp"
4588         ;;
4590       aix4-2)
4591         ## olson@mcs.anl.gov says -li18n is needed by -lXm.
4592         MOTIF_LIBW="$MOTIF_LIBW -li18n"
4593         ;;
4594     esac
4595     MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
4596   fi
4598 AC_SUBST(WIDGET_OBJ)
4600 TOOLKIT_LIBW=
4601 case "$USE_X_TOOLKIT" in
4602   MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
4603   LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
4604   none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
4605 esac
4606 AC_SUBST(TOOLKIT_LIBW)
4608 if test "${opsys}" != "mingw32"; then
4609   if test "$USE_X_TOOLKIT" = "none"; then
4610     LIBXT_OTHER="\$(LIBXSM)"
4611     OLDXMENU_TARGET="really-oldXMenu"
4612   else
4613     LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
4614     OLDXMENU_TARGET="really-lwlib"
4615   fi
4617 AC_SUBST(LIBXT_OTHER)
4619 ## The X Menu stuff is present in the X10 distribution, but missing
4620 ## from X11.  If we have X10, just use the installed library;
4621 ## otherwise, use our own copy.
4622 if test "${HAVE_X11}" = "yes" ; then
4623   AC_DEFINE(HAVE_X11, 1,
4624             [Define to 1 if you want to use version 11 of X windows.
4625              Otherwise, Emacs expects to use version 10.])
4627   if test "$USE_X_TOOLKIT" = "none"; then
4628     OLDXMENU="\${oldXMenudir}/libXMenu11.a"
4629   else
4630     OLDXMENU="\${lwlibdir}/liblw.a"
4631   fi
4632   LIBXMENU="\$(OLDXMENU)"
4633   LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
4634   OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}"
4635 else
4636   ## For a syntactically valid Makefile; not actually used for anything.
4637   ## See comments in src/Makefile.in.
4638   OLDXMENU=nothing
4639   ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?).
4640   if test "${HAVE_X_WINDOWS}" = "yes"; then
4641     LIBXMENU="-lXMenu"
4642   else
4643     LIBXMENU=
4644   fi
4645   LIBX_OTHER=
4646   OLDXMENU_DEPS=
4649 if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then
4650   OLDXMENU_TARGET=
4651   OLDXMENU=nothing
4652   LIBXMENU=
4653   OLDXMENU_DEPS=
4656 AC_SUBST(OLDXMENU_TARGET)
4657 AC_SUBST(OLDXMENU)
4658 AC_SUBST(LIBXMENU)
4659 AC_SUBST(LIBX_OTHER)
4660 AC_SUBST(OLDXMENU_DEPS)
4662 if test "${HAVE_MENUS}" = "yes" ; then
4663   AC_DEFINE(HAVE_MENUS, 1,
4664             [Define to 1 if you have mouse menus.  (This is supported in all configurations, but the option to specify it remains.)])
4667 if test "${GNU_MALLOC}" = "yes" ; then
4668   AC_DEFINE(GNU_MALLOC, 1,
4669             [Define to 1 if you want to use the GNU memory allocator.])
4672 RALLOC_OBJ=
4673 if test "${REL_ALLOC}" = "yes" ; then
4674   AC_DEFINE(REL_ALLOC, 1,
4675             [Define REL_ALLOC if you want to use the relocating allocator for
4676              buffer space.])
4678   test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
4680 AC_SUBST(RALLOC_OBJ)
4682 if test "$opsys" = "cygwin"; then
4683   CYGWIN_OBJ="sheap.o cygw32.o"
4684   ## Cygwin differs because of its unexec().
4685   PRE_ALLOC_OBJ=
4686   POST_ALLOC_OBJ=lastfile.o
4687 elif test "$opsys" = "mingw32"; then
4688   CYGWIN_OBJ=
4689   PRE_ALLOC_OBJ=
4690   POST_ALLOC_OBJ=lastfile.o
4691 else
4692   CYGWIN_OBJ=
4693   PRE_ALLOC_OBJ=lastfile.o
4694   POST_ALLOC_OBJ=
4696 AC_SUBST(CYGWIN_OBJ)
4697 AC_SUBST(PRE_ALLOC_OBJ)
4698 AC_SUBST(POST_ALLOC_OBJ)
4700 dnl Call this 'FORTIFY_SOUR' so that it sorts before the 'FORTIFY_SOURCE'
4701 dnl verbatim defined above.  The tricky name is apropos, as this hack
4702 dnl makes Fortify go sour!
4703 AH_VERBATIM([FORTIFY_SOUR],
4704 [/* Without the following workaround, Emacs runs slowly on OS X 10.8.
4705    The workaround disables some useful run-time checking, so it
4706    should be conditional to the platforms with the performance bug.
4707    Perhaps Apple will fix this some day; also see m4/extern-inline.m4.  */
4708 #if defined __APPLE__ && defined __GNUC__
4709 # ifndef _DONT_USE_CTYPE_INLINE_
4710 #  define _DONT_USE_CTYPE_INLINE_
4711 # endif
4712 # ifndef _FORTIFY_SOURCE
4713 #  define _FORTIFY_SOURCE 0
4714 # endif
4715 #endif
4718 # Configure gnulib.  Although this does not affect CFLAGS or LIBS permanently.
4719 # it temporarily reverts them to their pre-pkg-config values,
4720 # because gnulib needs to work with both src (which uses the
4721 # pkg-config stuff) and lib-src (which does not).  For example, gnulib
4722 # may need to determine whether LIB_CLOCK_GETTIME should contain -lrt,
4723 # and it therefore needs to run in an environment where LIBS does not
4724 # already contain -lrt merely because 'pkg-config --libs' printed '-lrt'
4725 # for some package unrelated to lib-src.
4726 SAVE_CFLAGS=$CFLAGS
4727 SAVE_LIBS=$LIBS
4728 CFLAGS=$pre_PKG_CONFIG_CFLAGS
4729 LIBS="$LIB_PTHREAD $pre_PKG_CONFIG_LIBS"
4730 gl_ASSERT_NO_GNULIB_POSIXCHECK
4731 gl_ASSERT_NO_GNULIB_TESTS
4732 gl_INIT
4733 CFLAGS=$SAVE_CFLAGS
4734 LIBS=$SAVE_LIBS
4736 if test "${opsys}" = "mingw32"; then
4737   CPPFLAGS="$CPPFLAGS -DUSE_CRT_DLL=1 -I \${abs_top_srcdir}/nt/inc"
4738   # Remove unneeded switches from the value of CC that goes to Makefiles
4739   CC=`echo $CC | sed -e "s,$GCC_TEST_OPTIONS,,"`
4742 case "$opsys" in
4743   aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
4745   darwin)
4746    ## The -headerpad option tells ld (see man page) to leave room at the
4747    ## end of the header for adding load commands.  Needed for dumping.
4748    ## 0x690 is the total size of 30 segment load commands (at 56
4749    ## each); under Cocoa 31 commands are required.
4750    if test "$HAVE_NS" = "yes"; then
4751      libs_nsgui="-framework AppKit"
4752      if test "$NS_IMPL_COCOA" = "yes"; then
4753         libs_nsgui="$libs_nsgui -framework IOKit"
4754      fi
4755      headerpad_extra=6C8
4756    else
4757      libs_nsgui=
4758      headerpad_extra=690
4759    fi
4760    LD_SWITCH_SYSTEM_TEMACS="-fno-pie -prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
4762    ## This is here because src/Makefile.in did some extra fiddling around
4763    ## with LD_SWITCH_SYSTEM.  It seems cleaner to put this in
4764    ## LD_SWITCH_SYSTEM_TEMACS instead,
4765    test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
4766      LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
4767    ;;
4769   ## LD_SWITCH_X_SITE_RPATH is a -rpath option saying where to
4770   ## find X at run-time.
4771   ## When handled by cpp, this was in LD_SWITCH_SYSTEM.  However, at the
4772   ## point where configure sourced the s/*.h file, LD_SWITCH_X_SITE_RPATH
4773   ## had not yet been defined and was expanded to null.  Hence LD_SWITCH_SYSTEM
4774   ## had different values in configure (in ac_link) and src/Makefile.in.
4775   ## It seems clearer therefore to put this piece in LD_SWITCH_SYSTEM_TEMACS.
4776   gnu*) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_RPATH)" ;;
4778   mingw32)
4779    ## MinGW64 does not prepend an underscore to symbols, so we must
4780    ## pass a different -entry switch to linker.  FIXME: It is better
4781    ## to make the entry points the same by changing unexw32.c.
4782    case "$canonical" in
4783      x86_64-*-*) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,_start -Wl,-Map,./temacs.map" ;;
4784      *) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;;
4785    esac
4786    ;;
4788   openbsd) LD_SWITCH_SYSTEM_TEMACS='-nopie' ;;
4790   *) LD_SWITCH_SYSTEM_TEMACS= ;;
4791 esac
4793 if test x$ac_enable_profiling != x ; then
4794   case $opsys in
4795     *freebsd | gnu-linux) ;;
4796     *) LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS -pg" ;;
4797   esac
4800 LD_SWITCH_SYSTEM_TEMACS="$LDFLAGS_NOCOMBRELOC $LD_SWITCH_SYSTEM_TEMACS"
4802 AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
4804 ## MinGW-specific post-link processing of temacs.
4805 TEMACS_POST_LINK=":"
4806 ADDSECTION=
4807 EMACS_HEAPSIZE=
4808 if test "${opsys}" = "mingw32"; then
4809   TEMACS_POST_LINK="\$(MINGW_TEMACS_POST_LINK)"
4810   ADDSECTION="../nt/addsection\$(EXEEXT)"
4811   ## Preload heap size of temacs.exe in MB.
4812   case "$canonical" in
4813     x86_64-*-*) EMACS_HEAPSIZE=42 ;;
4814     *) EMACS_HEAPSIZE=27 ;;
4815   esac
4818 AC_SUBST(ADDSECTION)
4819 AC_SUBST(TEMACS_POST_LINK)
4820 AC_SUBST(EMACS_HEAPSIZE)
4822 ## Common for all window systems
4823 if test "$window_system" != "none"; then
4824   AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
4825   WINDOW_SYSTEM_OBJ="fontset.o fringe.o image.o"
4828 AC_SUBST(WINDOW_SYSTEM_OBJ)
4830 AH_TOP([/* GNU Emacs site configuration template file.
4832 Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2013
4833   Free Software Foundation, Inc.
4835 This file is part of GNU Emacs.
4837 GNU Emacs is free software: you can redistribute it and/or modify
4838 it under the terms of the GNU General Public License as published by
4839 the Free Software Foundation, either version 3 of the License, or
4840 (at your option) any later version.
4842 GNU Emacs is distributed in the hope that it will be useful,
4843 but WITHOUT ANY WARRANTY; without even the implied warranty of
4844 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4845 GNU General Public License for more details.
4847 You should have received a copy of the GNU General Public License
4848 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
4851 /* No code in Emacs #includes config.h twice, but some bits of code
4852    intended to work with other packages as well (like gmalloc.c)
4853    think they can include it as many times as they like.  */
4854 #ifndef EMACS_CONFIG_H
4855 #define EMACS_CONFIG_H
4856 ])dnl
4858 AH_BOTTOM([#include <conf_post.h>
4860 #endif /* EMACS_CONFIG_H */
4863 Local Variables:
4864 mode: c
4865 End:
4867 ])dnl
4869 #### Report on what we decided to do.
4870 #### Report GTK as a toolkit, even if it doesn't use Xt.
4871 #### It makes printing result more understandable as using GTK sets
4872 #### toolkit_scroll_bars to yes by default.
4873 if test "${HAVE_GTK}" = "yes"; then
4874   USE_X_TOOLKIT="$USE_GTK_TOOLKIT"
4877 if test $USE_ACL -ne 0; then
4878   acl_summary="yes $LIB_ACL"
4879 else
4880   acl_summary=no
4883 echo "
4884 Configured for \`${canonical}'.
4886   Where should the build process find the source code?    ${srcdir}
4887   What compiler should emacs be built with?               ${CC} ${CFLAGS}
4888   Should Emacs use the GNU version of malloc?             ${GNU_MALLOC}${GNU_MALLOC_reason}
4889   Should Emacs use a relocating allocator for buffers?    ${REL_ALLOC}
4890   Should Emacs use mmap(2) for buffer allocation?         $use_mmap_for_buffers
4891   What window system should Emacs use?                    ${window_system}
4892   What toolkit should Emacs use?                          ${USE_X_TOOLKIT}"
4894 if test -n "${x_includes}"; then
4895 echo "  Where do we find X Windows header files?                ${x_includes}"
4896 else
4897 echo "  Where do we find X Windows header files?                Standard dirs"
4899 if test -n "${x_libraries}"; then
4900 echo "  Where do we find X Windows libraries?                   ${x_libraries}"
4901 else
4902 echo "  Where do we find X Windows libraries?                   Standard dirs"
4905 echo "  Does Emacs use -lXaw3d?                                 ${HAVE_XAW3D}"
4906 echo "  Does Emacs use -lXpm?                                   ${HAVE_XPM}"
4907 echo "  Does Emacs use -ljpeg?                                  ${HAVE_JPEG}"
4908 echo "  Does Emacs use -ltiff?                                  ${HAVE_TIFF}"
4909 echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $LIBGIF"
4910 echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
4911 echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
4912 echo "  Does Emacs use imagemagick?                             ${HAVE_IMAGEMAGICK}"
4914 echo "  Does Emacs support sound?                               ${HAVE_SOUND}"
4916 echo "  Does Emacs use -lgpm?                                   ${HAVE_GPM}"
4917 echo "  Does Emacs use -ldbus?                                  ${HAVE_DBUS}"
4918 echo "  Does Emacs use -lgconf?                                 ${HAVE_GCONF}"
4919 echo "  Does Emacs use GSettings?                               ${HAVE_GSETTINGS}"
4920 echo "  Does Emacs use a file notification library?             ${NOTIFY_SUMMARY}"
4921 echo "  Does Emacs use access control lists?                    ${acl_summary}"
4922 echo "  Does Emacs use -lselinux?                               ${HAVE_LIBSELINUX}"
4923 echo "  Does Emacs use -lgnutls?                                ${HAVE_GNUTLS}"
4924 echo "  Does Emacs use -lxml2?                                  ${HAVE_LIBXML2}"
4926 echo "  Does Emacs use -lfreetype?                              ${HAVE_FREETYPE}"
4927 echo "  Does Emacs use -lm17n-flt?                              ${HAVE_M17N_FLT}"
4928 echo "  Does Emacs use -lotf?                                   ${HAVE_LIBOTF}"
4929 echo "  Does Emacs use -lxft?                                   ${HAVE_XFT}"
4930 echo "  Does Emacs directly use zlib?                           ${HAVE_ZLIB}"
4932 echo "  Does Emacs use toolkit scroll bars?                     ${USE_TOOLKIT_SCROLL_BARS}"
4933 echo
4935 if test -n "${EMACSDATA}"; then
4936    echo "  Environment variable EMACSDATA set to:                  $EMACSDATA"
4938 if test -n "${EMACSDOC}"; then
4939    echo "  Environment variable EMACSDOC set to:                   $EMACSDOC"
4942 echo
4944 if test "$HAVE_NS" = "yes"; then
4945    echo
4946    echo "You must run \"${MAKE-make} install\" in order to test the built application.
4947 The installed application will go to nextstep/Emacs.app and can be
4948 run or moved from there."
4949    if test "$EN_NS_SELF_CONTAINED" = "yes"; then
4950       echo "The application will be fully self-contained."
4951     else
4952       echo "The lisp resources for the application will be installed under ${prefix}.
4953 You may need to run \"${MAKE-make} install\" with sudo.  The application will fail
4954 to run if these resources are not installed."
4955    fi
4956    echo
4959 if test "${opsys}" = "cygwin"; then
4960   case `uname -r` in
4961     1.5.*) AC_MSG_WARN([[building Emacs on Cygwin 1.5 is not supported.]])
4962            echo
4963            ;;
4964   esac
4967 # Remove any trailing slashes in these variables.
4968 [test "${prefix}" != NONE &&
4969   prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
4970 test "${exec_prefix}" != NONE &&
4971   exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
4973 if test "$HAVE_NS" = "yes"; then
4974   if test "$NS_IMPL_GNUSTEP" = yes; then
4975     AC_CONFIG_FILES([nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist:nextstep/templates/Info-gnustep.plist.in \
4976       nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop:nextstep/templates/Emacs.desktop.in])
4977     ns_check_file=Resources/Info-gnustep.plist
4978   else
4979     AC_CONFIG_FILES([nextstep/Cocoa/Emacs.base/Contents/Info.plist:nextstep/templates/Info.plist.in \
4980       nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:nextstep/templates/InfoPlist.strings.in])
4981     ns_check_file=Contents/Info.plist
4982   fi
4983   AC_SUBST(ns_check_file)
4986 dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES.
4987 dnl You _can_ use that variable in AC_CONFIG_FILES, so long as any directory
4988 dnl using automake (ie lib/) is explicitly listed and not "hidden" in a variable
4989 dnl (else you get "no `Makefile.am' found for any configure output").
4990 dnl This will work, but you get a config.status that is not quite right
4991 dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html).
4992 dnl That doesn't have any obvious consequences for Emacs, but on the whole
4993 dnl it seems better to just live with the duplication.
4994 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"
4996 AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
4997        doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
4998        doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile \
4999        leim/Makefile nextstep/Makefile nt/Makefile])
5001 dnl test/ is not present in release tarfiles.
5002 opt_makefile=test/automated/Makefile
5004 if test -f "$srcdir/$opt_makefile.in"; then
5005   SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
5006   dnl Again, it's best not to use a variable.  Though you can add
5007   dnl ", [], [opt_makefile='$opt_makefile']" and it should work.
5008   AC_CONFIG_FILES([test/automated/Makefile])
5012 dnl admin/ may or may not be present.
5013 opt_makefile=admin/unidata/Makefile
5015 if test -f "$srcdir/$opt_makefile.in"; then
5016   SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
5017   AC_CONFIG_FILES([admin/unidata/Makefile])
5021 SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'`
5023 AC_SUBST(SUBDIR_MAKEFILES_IN)
5025 dnl You might wonder (I did) why epaths.h is generated by running make,
5026 dnl rather than just letting configure generate it from epaths.in.
5027 dnl One reason is that the various paths are not fully expanded (see above);
5028 dnl eg gamedir=${prefix}/var/games/emacs.
5029 dnl Secondly, the GNU Coding standards require that one should be able
5030 dnl to run `make prefix=/some/where/else' and override the values set
5031 dnl by configure.  This also explains the `move-if-change' test and
5032 dnl the use of force in the `epaths-force' rule in Makefile.in.
5033 AC_CONFIG_COMMANDS([src/epaths.h], [
5034 if test "${opsys}" = "mingw32"; then
5035   ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force-w32
5036 else
5037   ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force
5039 ], [GCC="$GCC" CPPFLAGS="$CPPFLAGS" opsys="$opsys"])
5041 dnl NB we have to cheat and use the ac_... version because abs_top_srcdir
5042 dnl is not yet set, sigh.  Or we could use ../$srcdir/src/.gdbinit,
5043 dnl or a symlink?
5044 AC_CONFIG_COMMANDS([src/.gdbinit], [
5045 if test ! -f src/.gdbinit && test -f "$srcdir/src/.gdbinit"; then
5046   echo "source $ac_abs_top_srcdir/src/.gdbinit" > src/.gdbinit
5050 AC_OUTPUT