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