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