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