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