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