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