Fix the gettimeofday_timezone test.
[emacs.git] / configure.ac
blobc0a8d9905a8473fc677074cf052e305685abb57e
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, except MinGW,
3430 dnl supports this.  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 if test "${opsys}" != "mingw32"; then
3434   AC_DEFINE(CLASH_DETECTION, 1, [Define if you want lock files to be written,
3435     so that Emacs can tell instantly when you try to modify a file that
3436     someone else has modified in his/her Emacs.])
3439 dnl Everybody supports this, except MS.
3440 dnl Seems like the kind of thing we should be testing for, though.
3441 ## Note: PTYs are broken on darwin <6.  Use at your own risk.
3442 if test "${opsys}" != "mingw32"; then
3443   AC_DEFINE(HAVE_PTYS, 1, [Define if the system supports pty devices.])
3446 dnl Everybody supports this, except MS-DOS.
3447 dnl Seems like the kind of thing we should be testing for, though.
3448 dnl Compare with HAVE_INET_SOCKETS (which is unused...) above.
3449 AC_DEFINE(HAVE_SOCKETS, 1, [Define if the system supports
3450   4.2-compatible sockets.])
3452 AH_TEMPLATE(INTERNAL_TERMINAL, [This is substituted when $TERM is "internal".])
3454 if test "${opsys}" = "mingw32"; then
3455   AC_DEFINE(NULL_DEVICE, ["NUL:"], [Name of the file to open to get
3456     a null file, or a data sink.])
3457 else
3458   AC_DEFINE(NULL_DEVICE, ["/dev/null"], [Name of the file to open to get
3459     a null file, or a data sink.])
3462 if test "${opsys}" = "mingw32"; then
3463   AC_DEFINE(SEPCHAR, [';'], [Character that separates PATH elements.])
3464 else
3465   AC_DEFINE(SEPCHAR, [':'], [Character that separates PATH elements.])
3468 dnl Everybody supports this, except MS-DOS.
3469 AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.])
3471 AC_DEFINE(USER_FULL_NAME, [pw->pw_gecos], [How to get a user's full name.])
3474 AC_DEFINE(DIRECTORY_SEP, ['/'],
3475   [Character that separates directories in a file name.])
3477 if test "${opsys}" = "mingw32"; then
3478   dnl Only used on MS platforms.
3479   AC_DEFINE(DEVICE_SEP, ':', [Character that separates a device in a file name.])
3480   AC_DEFINE(IS_DEVICE_SEP(_c_), [((_c_) == DEVICE_SEP)],
3481     [Returns true if character is a device separator.])
3483   AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == '/' || (_c_) == '\\')],
3484     [Returns true if character is a directory separator.])
3486   AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP(_c_))],
3487     [Returns true if character is any form of separator.])
3488 else
3489   AH_TEMPLATE(DEVICE_SEP, [Character that separates a device in a file name.])
3491   AC_DEFINE(IS_DEVICE_SEP(_c_), 0,
3492     [Returns true if character is a device separator.])
3494   AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == DIRECTORY_SEP)],
3495     [Returns true if character is a directory separator.])
3497   AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_))],
3498     [Returns true if character is any form of separator.])
3501 AH_TEMPLATE(NO_EDITRES, [Define if XEditRes should not be used.])
3503 case $opsys in
3504   aix4-2)
3505     dnl Unfortunately without libXmu we cannot support EditRes.
3506     if test x$ac_cv_lib_Xmu_XmuConvertStandardSelection != xyes; then
3507       AC_DEFINE(NO_EDITRES, 1)
3508     fi
3509     ;;
3511   hpux*)
3512     dnl Assar Westerlund <assar@sics.se> says this is necessary for
3513     dnl HP-UX 10.20, and that it works for HP-UX 0 as well.
3514     AC_DEFINE(NO_EDITRES, 1)
3515     ;;
3516 esac
3519 case $opsys in
3520   irix6-5 | sol2* | unixware )
3521     dnl Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
3522     dnl instead, there's a system variable _sys_nsig.  Unfortunately, we
3523     dnl need the constant to dimension an array.  So wire in the appropriate
3524     dnl value here.
3525     AC_DEFINE(NSIG_MINIMUM, 32, [Minimum value of NSIG.])
3526     ;;
3527 esac
3529 emacs_broken_SIGIO=no
3531 case $opsys in
3532   dnl SIGIO exists, but the feature doesn't work in the way Emacs needs.
3533   dnl See eg <http://article.gmane.org/gmane.os.openbsd.ports/46831>.
3534   hpux* | irix6-5 | openbsd | sol2* | unixware )
3535     emacs_broken_SIGIO=yes
3536     ;;
3538   aix4-2)
3539     dnl On AIX Emacs uses the gmalloc.c malloc implementation.  But given
3540     dnl the way this system works, libc functions that return malloced
3541     dnl memory use the libc malloc implementation. Calling xfree or
3542     dnl xrealloc on the results of such functions results in a crash.
3543     dnl
3544     dnl One solution for this could be to define SYSTEM_MALLOC in configure,
3545     dnl but that does not currently work on this system.
3546     dnl
3547     dnl It is possible to completely override the malloc implementation on
3548     dnl AIX, but that involves putting the malloc functions in a shared
3549     dnl library and setting the MALLOCTYPE environment variable to point to
3550     dnl that shared library.
3551     dnl
3552     dnl Emacs currently calls xrealloc on the results of get_current_dir name,
3553     dnl to avoid a crash just use the Emacs implementation for that function.
3554     dnl
3555     dnl FIXME We could change the AC_CHECK_FUNCS call near the start
3556     dnl of this file, so that we do not check for get_current_dir_name
3557     dnl on AIX.  But that might be fragile if something else ends
3558     dnl up testing for get_current_dir_name as a dependency.
3559     AC_DEFINE(BROKEN_GET_CURRENT_DIR_NAME, 1, [Define if
3560       get_current_dir_name should not be used.])
3561     ;;
3563   freebsd)
3564     dnl Circumvent a bug in FreeBSD.  In the following sequence of
3565     dnl writes/reads on a PTY, read(2) returns bogus data:
3566     dnl
3567     dnl write(2)  1022 bytes
3568     dnl write(2)   954 bytes, get EAGAIN
3569     dnl read(2)   1024 bytes in process_read_output
3570     dnl read(2)     11 bytes in process_read_output
3571     dnl
3572     dnl That is, read(2) returns more bytes than have ever been written
3573     dnl successfully.  The 1033 bytes read are the 1022 bytes written
3574     dnl successfully after processing (for example with CRs added if the
3575     dnl terminal is set up that way which it is here).  The same bytes will
3576     dnl be seen again in a later read(2), without the CRs.
3577     AC_DEFINE(BROKEN_PTY_READ_AFTER_EAGAIN, 1, [Define on FreeBSD to
3578       work around an issue when reading from a PTY.])
3579     ;;
3580 esac
3582 case $opsys in
3583   gnu-* | sol2-10 )
3584     dnl FIXME Can't we test if this exists (eg /proc/$$)?
3585     AC_DEFINE(HAVE_PROCFS, 1, [Define if you have the /proc filesystem.])
3586   ;;
3587 esac
3589 case $opsys in
3590   darwin | freebsd | netbsd | openbsd )
3591     AC_DEFINE(DONT_REOPEN_PTY, 1, [Define if process.c does not need to
3592       close a pty to make it a controlling terminal (it is already a
3593       controlling terminal of the subprocess, because we did ioctl TIOCSCTTY).])
3594   ;;
3595 esac
3597 dnl FIXME Surely we can test for this rather than hard-code it.
3598 case $opsys in
3599   netbsd | openbsd) sound_device="/dev/audio" ;;
3600   *) sound_device="/dev/dsp" ;;
3601 esac
3603 dnl Used in sound.c
3604 AC_DEFINE_UNQUOTED(DEFAULT_SOUND_DEVICE, "$sound_device",
3605   [Name of the default sound device.])
3608 dnl Emacs can read input using SIGIO and buffering characters itself,
3609 dnl or using CBREAK mode and making C-g cause SIGINT.
3610 dnl The choice is controlled by the variable interrupt_input.
3612 dnl Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)
3614 dnl Emacs uses the presence of the USABLE_SIGIO macro
3615 dnl to indicate whether or not signal-driven I/O is possible.  It uses
3616 dnl INTERRUPT_INPUT to decide whether to use it by default.
3618 dnl SIGIO can be used only on systems that implement it (4.2 and 4.3).
3619 dnl CBREAK mode has two disadvantages
3620 dnl 1) At least in 4.2, it is impossible to handle the Meta key properly.
3621 dnl I hear that in system V this problem does not exist.
3622 dnl 2) Control-G causes output to be discarded.
3623 dnl I do not know whether this can be fixed in system V.
3625 dnl Another method of doing input is planned but not implemented.
3626 dnl It would have Emacs fork off a separate process
3627 dnl to read the input and send it to the true Emacs process
3628 dnl through a pipe.
3629 case $opsys in
3630   darwin | gnu-linux | gnu-kfreebsd )
3631     AC_DEFINE(INTERRUPT_INPUT, 1, [Define to read input using SIGIO.])
3632   ;;
3633 esac
3636 dnl If the system's imake configuration file defines `NeedWidePrototypes'
3637 dnl as `NO', we must define NARROWPROTO manually.  Such a define is
3638 dnl generated in the Makefile generated by `xmkmf'.  If we don't define
3639 dnl NARROWPROTO, we will see the wrong function prototypes for X functions
3640 dnl taking float or double parameters.
3641 case $opsys in
3642   cygwin|gnu|gnu-linux|gnu-kfreebsd|irix6-5|freebsd|netbsd|openbsd)
3643     AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration
3644       file defines `NeedWidePrototypes' as `NO'.])
3645   ;;
3646 esac
3649 dnl Used in process.c, this must be a loop, even if it only runs once.
3650 dnl (Except on SGI; see below.  Take that, clarity and consistency!)
3651 AH_TEMPLATE(PTY_ITERATION, [How to iterate over PTYs.])
3652 dnl Only used if !PTY_ITERATION.  Iterate from FIRST_PTY_LETTER to z,
3653 dnl trying suffixes 0-16.
3654 AH_TEMPLATE(FIRST_PTY_LETTER, [Letter to use in finding device name of
3655   first PTY, if PTYs are supported.])
3656 AH_TEMPLATE(PTY_OPEN, [How to open a PTY, if non-standard.])
3657 AH_TEMPLATE(PTY_NAME_SPRINTF, [How to get the device name of the control
3658   end of a PTY, if non-standard.])
3659 AH_TEMPLATE(PTY_TTY_NAME_SPRINTF, [How to get device name of the tty
3660   end of a PTY, if non-standard.])
3662 case $opsys in
3663   aix4-2 )
3664     AC_DEFINE(PTY_ITERATION, [int c; for (c = 0; !c ; c++)])
3665     dnl You allocate a pty by opening /dev/ptc to get the master side.
3666     dnl To get the name of the slave side, you just ttyname() the master side.
3667     AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])
3668     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));])
3669     ;;
3671   cygwin )
3672     AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
3673     dnl multi-line AC_DEFINEs are hard. :(
3674     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)])
3675     AC_DEFINE(PTY_NAME_SPRINTF, [])
3676     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
3677     ;;
3679   dnl FIXME?  Maybe use same as freebsd - see bug#12040.
3680   darwin )
3681     AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
3682     dnl Not used, because PTY_ITERATION is defined.
3683     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3684     dnl Note that openpty may fork via grantpt on Mac OS X 10.4/Darwin 8.
3685     dnl But we don't have to block SIGCHLD because it is blocked in the
3686     dnl implementation of grantpt.
3687     AC_DEFINE(PTY_OPEN, [ do { int slave; if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) fd = -1; else emacs_close (slave); } while (0)])
3688     AC_DEFINE(PTY_NAME_SPRINTF, [])
3689     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
3690     ;;
3692   gnu | openbsd )
3693     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3694     ;;
3696   gnu-linux | gnu-kfreebsd | freebsd | netbsd )
3697     dnl if HAVE_GRANTPT
3698     if test "x$ac_cv_func_grantpt" = xyes; then
3699       AC_DEFINE(UNIX98_PTYS, 1, [Define if the system has Unix98 PTYs.])
3700       AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
3701       dnl Note that grantpt and unlockpt may fork.  We must block SIGCHLD
3702       dnl to prevent sigchld_handler from intercepting the child's death.
3703       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); }])
3704       dnl if HAVE_POSIX_OPENPT
3705       if test "x$ac_cv_func_posix_openpt" = xyes; then
3706         AC_DEFINE(PTY_OPEN, [fd = posix_openpt (O_RDWR | O_NOCTTY)])
3707         AC_DEFINE(PTY_NAME_SPRINTF, [])
3708       dnl if HAVE_GETPT
3709       elif test "x$ac_cv_func_getpt" = xyes; then
3710         AC_DEFINE(PTY_OPEN, [fd = getpt ()])
3711         AC_DEFINE(PTY_NAME_SPRINTF, [])
3712       else
3713         AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
3714       fi
3715     else
3716       AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3717     fi
3718     ;;
3720   hpux*)
3721     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3722     AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);])
3723     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
3724     ;;
3726   irix6-5 )
3727     dnl It looks like this cannot be right, because it is not a loop.
3728     dnl However, process.c actually does this:
3729     dnl # ifndef __sgi
3730     dnl   continue;
3731     dnl # else
3732     dnl   return -1;
3733     dnl # endif
3734     dnl which presumably makes it OK, since irix == sgi (?).
3735     dnl FIXME it seems like this special treatment is unnecessary?
3736     dnl Why can't irix use a single-trip loop like eg cygwin?
3737     AC_DEFINE(PTY_ITERATION, [])
3738     dnl Not used, because PTY_ITERATION is defined.
3739     AC_DEFINE(FIRST_PTY_LETTER, ['q'])
3740     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); }])
3741     dnl No need to get the pty name at all.
3742     AC_DEFINE(PTY_NAME_SPRINTF, [])
3743     dnl No need to use sprintf to get the tty name--we get that from _getpty.
3744     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
3745     ;;
3747   sol2* )
3748     dnl On SysVr4, grantpt(3) forks a subprocess, so keep sigchld_handler()
3749     dnl from intercepting that death.  If any child but grantpt's should die
3750     dnl within, it should be caught after sigrelse(2).
3751     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); }])
3752     ;;
3754   unixware )
3755     dnl Comments are as per sol2*.
3756     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); }])
3757     ;;
3758 esac
3761 case $opsys in
3762   sol2* | unixware )
3763     dnl This change means that we don't loop through allocate_pty too
3764     dnl many times in the (rare) event of a failure.
3765     AC_DEFINE(FIRST_PTY_LETTER, ['z'])
3766     AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
3767     dnl Push various streams modules onto a PTY channel.  Used in process.c.
3768     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.])
3769     ;;
3770 esac
3773 AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by
3774 "typing" a signal character on the pty.])
3776 case $opsys in
3777   dnl Perry Smith <pedz@ddivt1.austin.ibm.com> says this is correct for AIX.
3778   dnl thomas@mathematik.uni-bremen.de says this is needed for IRIX.
3779   aix4-2 | cygwin | gnu | irix6-5 | freebsd | netbsd | openbsd | darwin )
3780     AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
3781     ;;
3783   dnl 21 Jun 06: Eric Hanchrow <offby1@blarg.net> says this works.
3784   dnl FIXME Does gnu-kfreebsd have linux/version.h?  It seems unlikely...
3785   gnu-linux | gnu-kfreebsd )
3787     AC_MSG_CHECKING([for signals via characters])
3788     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3789 #include <linux/version.h>
3790 #if LINUX_VERSION_CODE < 0x20400
3791 # error "Linux version too old"
3792 #endif
3793       ]], [[]])], emacs_signals_via_chars=yes, emacs_signals_via_chars=no)
3795     AC_MSG_RESULT([$emacs_signals_via_chars])
3796     test $emacs_signals_via_chars = yes && AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
3797     ;;
3798 esac
3801 dnl Used in lisp.h, emacs.c, vm-limit.c
3802 dnl NEWS.18 describes this as "a number which contains
3803 dnl the high bits to be inclusive or'ed with pointers that are unpacked."
3804 AH_TEMPLATE(DATA_SEG_BITS, [Extra bits to be or'd in with any pointers
3805 stored in a Lisp_Object.])
3806 dnl if Emacs uses fewer than 32 bits for the value field of a LISP_OBJECT.
3808 case $opsys in
3809   aix*)
3810     dnl This works with 32-bit executables; Emacs doesn't support 64-bit.
3811     AC_DEFINE(DATA_SEG_BITS, [0x20000000])
3812     ;;
3813   hpux*)
3814     dnl The data segment on this machine always starts at address 0x40000000.
3815     AC_DEFINE(DATA_SEG_BITS, [0x40000000])
3816     ;;
3817   irix6-5)
3818     AC_DEFINE(DATA_SEG_BITS, [0x10000000])
3819     ;;
3820 esac
3823 AH_TEMPLATE(TAB3, [Undocumented.])
3825 case $opsys in
3826   darwin) AC_DEFINE(TAB3, OXTABS) ;;
3828   gnu | freebsd | netbsd | openbsd )
3829     AC_DEFINE(TABDLY, OXTABS, [Undocumented.])
3830     AC_DEFINE(TAB3, OXTABS)
3831     ;;
3833   gnu-linux | gnu-kfreebsd )
3834     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3835 #ifndef __ia64__
3836 # error "not ia64"
3837 #endif
3838       ]], [[]])], AC_DEFINE(GC_MARK_SECONDARY_STACK(),
3839         [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)],
3840         [Mark a secondary stack, like the register stack on the ia64.]), [])
3841     ;;
3843   hpux*)
3844     AC_DEFINE(RUN_TIME_REMAP, 1, [Define if emacs.c needs to call
3845       run_time_remap; for HPUX.])
3846     ;;
3847 esac
3850 dnl This won't be used automatically yet.  We also need to know, at least,
3851 dnl that the stack is continuous.
3852 AH_TEMPLATE(GC_SETJMP_WORKS, [Define if setjmp is known to save all
3853   registers relevant for conservative garbage collection in the jmp_buf.])
3856 case $opsys in
3857   dnl Not all the architectures are tested, but there are Debian packages
3858   dnl for SCM and/or Guile on them, so the technique must work.  See also
3859   dnl comments in alloc.c concerning setjmp and gcc.
3860   dnl Fixme: it's probably safe to just use the GCC conditional below.
3861   gnu-linux | gnu-kfreebsd )
3862     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3863 #if defined __i386__ || defined __sparc__ || defined __mc68000__ \
3864   || defined __alpha__ || defined __mips__ || defined __s390__ \
3865   || defined __arm__ || defined __powerpc__ || defined __amd64__ \
3866   || defined __ia64__ || defined __sh__
3867 /* ok */
3868 #else
3869 # error "setjmp not known to work on this arch"
3870 #endif
3871     ]], [[]])], AC_DEFINE(GC_SETJMP_WORKS, 1))
3872     ;;
3873 esac
3876 if test x$GCC = xyes; then
3877    dnl GC_SETJMP_WORKS is nearly always appropriate for GCC.
3878    AC_DEFINE(GC_SETJMP_WORKS, 1)
3879 else
3880   case $opsys in
3881     dnl irix: Tested on Irix 6.5.  SCM worked on earlier versions.
3882     freebsd | netbsd | openbsd | irix6-5 | sol2* )
3883       AC_DEFINE(GC_SETJMP_WORKS, 1)
3884       ;;
3885   esac
3886 fi                              dnl GCC?
3888 dnl In a weird quirk, MS runtime uses _setjmp and longjmp.
3889 AC_CACHE_CHECK([for _setjmp], [emacs_cv_func__setjmp],
3890   [AC_LINK_IFELSE(
3891      [AC_LANG_PROGRAM(
3892        [[#include <setjmp.h>
3893          #ifdef __MINGW32__
3894          # define _longjmp longjmp
3895          #endif
3896        ]],
3897        [[jmp_buf j;
3898          if (! _setjmp (j))
3899            _longjmp (j, 1);]])],
3900      [emacs_cv_func__setjmp=yes],
3901      [emacs_cv_func__setjmp=no])])
3902 if test $emacs_cv_func__setjmp = yes; then
3903   AC_DEFINE([HAVE__SETJMP], 1, [Define to 1 if _setjmp and _longjmp work.])
3904 else
3905   AC_CACHE_CHECK([for sigsetjmp], [emacs_cv_func_sigsetjmp],
3906     [AC_LINK_IFELSE(
3907        [AC_LANG_PROGRAM(
3908          [[#include <setjmp.h>
3909          ]],
3910          [[sigjmp_buf j;
3911            if (! sigsetjmp (j, 1))
3912              siglongjmp (j, 1);]])],
3913        [emacs_cv_func_sigsetjmp=yes],
3914        [emacs_cv_func_sigsetjmp=no])])
3915   if test $emacs_cv_func_sigsetjmp = yes; then
3916     AC_DEFINE([HAVE_SIGSETJMP], 1,
3917       [Define to 1 if sigsetjmp and siglongjmp work.
3918        The value of this symbol is irrelevant if HAVE__SETJMP is defined.])
3919   fi
3922 case $opsys in
3923   sol2* | unixware )
3924     dnl TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
3925     dnl subprocesses the usual way.  But TIOCSIGNAL does work for PTYs,
3926     dnl and this is all we need.
3927     AC_DEFINE(TIOCSIGSEND, TIOCSIGNAL, [Some platforms redefine this.])
3928     ;;
3929 esac
3932 case $opsys in
3933   hpux* | sol2* )
3934     dnl Used in xfaces.c.
3935     AC_DEFINE(XOS_NEEDS_TIME_H, 1, [Compensate for a bug in Xos.h on
3936       some systems, where it requires time.h.])
3937     ;;
3938 esac
3941 dnl Define symbols to identify the version of Unix this is.
3942 dnl Define all the symbols that apply correctly.
3943 AH_TEMPLATE(DOS_NT, [Define if the system is MS DOS or MS Windows.])
3944 AH_TEMPLATE(MSDOS, [Define if the system is MS DOS.])
3945 AH_TEMPLATE(USG, [Define if the system is compatible with System III.])
3946 AH_TEMPLATE(USG5, [Define if the system is compatible with System V.])
3947 AH_TEMPLATE(USG5_4, [Define if the system is compatible with System V Release 4.])
3949 case $opsys in
3950   aix4-2)
3951     AC_DEFINE(USG, [])
3952     AC_DEFINE(USG5, [])
3953     dnl This symbol should be defined on AIX Version 3  ???????
3954     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3955 #ifndef _AIX
3956 # error "_AIX not defined"
3957 #endif
3958     ]], [[]])], [], AC_DEFINE(_AIX, [], [Define if the system is AIX.]))
3959     ;;
3961   cygwin)
3962     AC_DEFINE(CYGWIN, 1, [Define if the system is Cygwin.])
3963     ;;
3965   darwin)
3966     dnl Not __APPLE__, as this may not be defined on non-OSX Darwin.
3967     dnl Not DARWIN, because Panther and lower CoreFoundation.h use DARWIN to
3968     dnl distinguish OS X from pure Darwin.
3969     AC_DEFINE(DARWIN_OS, [], [Define if the system is Darwin.])
3970     ;;
3972   gnu-linux | gnu-kfreebsd )
3973     AC_DEFINE(USG, [])
3974     AC_DEFINE(GNU_LINUX, [], [Define if ths system is compatible with GNU/Linux.])
3975     ;;
3977   hpux*)
3978     AC_DEFINE(USG, [])
3979     AC_DEFINE(USG5, [])
3980     AC_DEFINE(HPUX, [], [Define if the system is HPUX.])
3981     ;;
3983   irix6-5)
3984     AC_DEFINE(USG, [])
3985     AC_DEFINE(USG5, [])
3986     AC_DEFINE(USG5_4, [])
3987     AC_DEFINE(IRIX6_5, [], [Define if the system is IRIX.])
3988     ;;
3990   mingw32)
3991     AC_DEFINE(DOS_NT, [])
3992     AC_DEFINE(WINDOWSNT, 1, [Define if compiling for native MS Windows.])
3993     ;;
3995   sol2*)
3996     AC_DEFINE(USG, [])
3997     AC_DEFINE(USG5, [])
3998     AC_DEFINE(USG5_4, [])
3999     AC_DEFINE(SOLARIS2, [], [Define if the system is Solaris.])
4000     ;;
4002   unixware)
4003     AC_DEFINE(USG, [])
4004     AC_DEFINE(USG5, [])
4005     AC_DEFINE(USG5_4, [])
4006     ;;
4007 esac
4009 AC_CACHE_CHECK([for usable FIONREAD], [emacs_cv_usable_FIONREAD],
4010   [case $opsys in
4011      aix4-2)
4012        dnl BUILD 9008 - FIONREAD problem still exists in X-Windows.
4013        emacs_cv_usable_FIONREAD=no
4014        ;;
4016      mingw32)
4017        emacs_cv_usable_FIONREAD=yes
4018        ;;
4020      *)
4021        AC_COMPILE_IFELSE(
4022          [AC_LANG_PROGRAM([[#include <sys/types.h>
4023                             #include <sys/ioctl.h>
4024                             #ifdef USG5_4
4025                             # include <sys/filio.h>
4026                             #endif
4027                           ]],
4028                           [[int foo = ioctl (0, FIONREAD, &foo);]])],
4029          [emacs_cv_usable_FIONREAD=yes],
4030          [emacs_cv_usable_FIONREAD=no])
4031        ;;
4032    esac])
4033 if test $emacs_cv_usable_FIONREAD = yes; then
4034   AC_DEFINE([USABLE_FIONREAD], [1], [Define to 1 if FIONREAD is usable.])
4036   if test $emacs_broken_SIGIO = no; then
4037     AC_CACHE_CHECK([for usable SIGIO], [emacs_cv_usable_SIGIO],
4038       [AC_COMPILE_IFELSE(
4039          [AC_LANG_PROGRAM([[#include <fcntl.h>
4040                             #include <signal.h>
4041                           ]],
4042                           [[int foo = SIGIO | F_SETFL | FASYNC;]])],
4043          [emacs_cv_usable_SIGIO=yes],
4044          [emacs_cv_usable_SIGIO=no])],
4045       [emacs_cv_usable_SIGIO=yes],
4046       [emacs_cv_usable_SIGIO=no])
4047     if test $emacs_cv_usable_SIGIO = yes; then
4048       AC_DEFINE([USABLE_SIGIO], [1], [Define to 1 if SIGIO is usable.])
4049     fi
4050   fi
4054 case $opsys in
4055   dnl Emacs supplies its own malloc, but glib (part of Gtk+) calls
4056   dnl memalign and on Cygwin, that becomes the Cygwin-supplied memalign.
4057   dnl As malloc is not the Cygwin malloc, the Cygwin memalign always
4058   dnl returns ENOSYS.  A workaround is to set G_SLICE=always-malloc. */
4059   cygwin)
4060     AC_DEFINE(G_SLICE_ALWAYS_MALLOC, 1, [Define to set the
4061       G_SLICE environment variable to "always-malloc" at startup, if
4062       using GTK.])
4063     ;;
4065   hpux11)
4066     dnl It works to open the pty's tty in the parent (Emacs), then
4067     dnl close and reopen it in the child.
4068     AC_DEFINE(USG_SUBTTY_WORKS, 1, [Define for USG systems where it
4069       works to open a pty's tty in the parent process, then close and
4070       reopen it in the child.])
4071     ;;
4073   irix6-5)
4074     AC_DEFINE(PREFER_VSUSP, 1, [Define if process_send_signal should
4075       use VSUSP instead of VSWTCH.])
4076     ;;
4078   sol2-10)
4079     AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes
4080       on Solaris.])
4081     ;;
4082 esac
4084 # Set up the CFLAGS for real compilation, so we can substitute it.
4085 CFLAGS="$REAL_CFLAGS"
4086 CPPFLAGS="$REAL_CPPFLAGS"
4088 ## Hack to detect a buggy GCC version.
4089 if test "x$GCC" = xyes \
4090    && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \
4091    && test x"`echo $CFLAGS | grep '\-O@<:@23@:>@'`" != x \
4092    && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then
4093    AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'.])
4096 version=$PACKAGE_VERSION
4098 copyright="Copyright (C) 2013 Free Software Foundation, Inc."
4099 AC_DEFINE_UNQUOTED(COPYRIGHT, ["$copyright"],
4100   [Short copyright string for this version of Emacs.])
4101 AC_SUBST(copyright)
4103 ### Specify what sort of things we'll be editing into Makefile and config.h.
4104 ### Use configuration here uncanonicalized to avoid exceeding size limits.
4105 AC_SUBST(version)
4106 AC_SUBST(configuration)
4107 ## Unused?
4108 AC_SUBST(canonical)
4109 AC_SUBST(srcdir)
4110 AC_SUBST(prefix)
4111 AC_SUBST(exec_prefix)
4112 AC_SUBST(bindir)
4113 AC_SUBST(datadir)
4114 AC_SUBST(sharedstatedir)
4115 AC_SUBST(libexecdir)
4116 AC_SUBST(mandir)
4117 AC_SUBST(infodir)
4118 AC_SUBST(lispdir)
4119 AC_SUBST(leimdir)
4120 AC_SUBST(standardlisppath)
4121 AC_SUBST(locallisppath)
4122 AC_SUBST(lisppath)
4123 AC_SUBST(x_default_search_path)
4124 AC_SUBST(etcdir)
4125 AC_SUBST(archlibdir)
4126 AC_SUBST(docdir)
4127 AC_SUBST(bitmapdir)
4128 AC_SUBST(gamedir)
4129 AC_SUBST(gameuser)
4130 ## FIXME? Nothing uses @LD_SWITCH_X_SITE@.
4131 ## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the
4132 ## end of LIBX_BASE, but nothing ever set it.
4133 AC_SUBST(LD_SWITCH_X_SITE)
4134 AC_SUBST(C_SWITCH_X_SITE)
4135 AC_SUBST(GNUSTEP_CFLAGS)
4136 AC_SUBST(CFLAGS)
4137 ## Used in lwlib/Makefile.in.
4138 AC_SUBST(X_TOOLKIT_TYPE)
4139 AC_SUBST(ns_appdir)
4140 AC_SUBST(ns_appbindir)
4141 AC_SUBST(ns_appresdir)
4142 AC_SUBST(ns_appsrc)
4143 AC_SUBST(GNU_OBJC_CFLAGS)
4144 AC_SUBST(OTHER_FILES)
4146 if test -n "${term_header}"; then
4147     AC_DEFINE_UNQUOTED(TERM_HEADER, "${term_header}",
4148         [Define to the header for the built-in window system.])
4151 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION,  "${canonical}",
4152                    [Define to the canonical Emacs configuration name.])
4153 dnl Replace any embedded " characters (bug#13274).
4154 emacs_config_options=`echo "$emacs_config_options " | sed -e 's/--no-create //' -e 's/--no-recursion //' -e 's/ *$//' -e "s/\"/'/g"`
4155 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${emacs_config_options}",
4156                    [Define to the options passed to configure.])
4157 AH_TEMPLATE(config_opsysfile, [Some platforms that do not use configure
4158   define this to include extra configuration information.])
4160 XMENU_OBJ=
4161 XOBJ=
4162 FONT_OBJ=
4163 if test "${HAVE_X_WINDOWS}" = "yes" ; then
4164   AC_DEFINE(HAVE_X_WINDOWS, 1,
4165             [Define to 1 if you want to use the X window system.])
4166   XMENU_OBJ=xmenu.o
4167   XOBJ="xterm.o xfns.o xselect.o xrdb.o xsmfns.o xsettings.o xgselect.o"
4168   FONT_OBJ=xfont.o
4169   if test "$HAVE_XFT" = "yes"; then
4170     FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
4171   elif test "$HAVE_FREETYPE" = "yes"; then
4172     FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
4173   fi
4174   AC_SUBST(FONT_OBJ)
4176 AC_SUBST(XMENU_OBJ)
4177 AC_SUBST(XOBJ)
4178 AC_SUBST(FONT_OBJ)
4180 WIDGET_OBJ=
4181 MOTIF_LIBW=
4182 if test "${USE_X_TOOLKIT}" != "none" ; then
4183   WIDGET_OBJ=widget.o
4184   AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
4185   if test "${USE_X_TOOLKIT}" = "LUCID"; then
4186     AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
4187   elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
4188     AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
4189     MOTIF_LIBW=-lXm
4190     case "$opsys" in
4191       gnu-linux)
4192         ## Paul Abrahams <abrahams at equinox.shaysnet.com> says this is needed.
4193         MOTIF_LIBW="$MOTIF_LIBW -lXpm"
4194         ;;
4196       unixware)
4197         ## Richard Anthony Ryan <ryanr at ellingtn.ftc.nrcs.usda.gov>
4198         ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2.
4199         MOTIF_LIBW="MOTIF_LIBW -lXimp"
4200         ;;
4202       aix4-2)
4203         ## olson@mcs.anl.gov says -li18n is needed by -lXm.
4204         MOTIF_LIBW="$MOTIF_LIBW -li18n"
4205         ;;
4206     esac
4207     MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
4208   fi
4210 AC_SUBST(WIDGET_OBJ)
4212 TOOLKIT_LIBW=
4213 case "$USE_X_TOOLKIT" in
4214   MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
4215   LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
4216   none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
4217 esac
4218 AC_SUBST(TOOLKIT_LIBW)
4220 if test "${opsys}" != "mingw32"; then
4221   if test "$USE_X_TOOLKIT" = "none"; then
4222     LIBXT_OTHER="\$(LIBXSM)"
4223     OLDXMENU_TARGET="really-oldXMenu"
4224   else
4225     LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
4226     OLDXMENU_TARGET="really-lwlib"
4227   fi
4229 AC_SUBST(LIBXT_OTHER)
4231 ## The X Menu stuff is present in the X10 distribution, but missing
4232 ## from X11.  If we have X10, just use the installed library;
4233 ## otherwise, use our own copy.
4234 if test "${HAVE_X11}" = "yes" ; then
4235   AC_DEFINE(HAVE_X11, 1,
4236             [Define to 1 if you want to use version 11 of X windows.
4237              Otherwise, Emacs expects to use version 10.])
4239   if test "$USE_X_TOOLKIT" = "none"; then
4240     OLDXMENU="\${oldXMenudir}/libXMenu11.a"
4241   else
4242     OLDXMENU="\${lwlibdir}/liblw.a"
4243   fi
4244   LIBXMENU="\$(OLDXMENU)"
4245   LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
4246   OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}"
4247 else
4248   ## For a syntactically valid Makefile; not actually used for anything.
4249   ## See comments in src/Makefile.in.
4250   OLDXMENU=nothing
4251   ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?).
4252   if test "${HAVE_X_WINDOWS}" = "yes"; then
4253     LIBXMENU="-lXMenu"
4254   else
4255     LIBXMENU=
4256   fi
4257   LIBX_OTHER=
4258   OLDXMENU_DEPS=
4261 if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then
4262   OLDXMENU_TARGET=
4263   OLDXMENU=nothing
4264   LIBXMENU=
4265   OLDXMENU_DEPS=
4268 AC_SUBST(OLDXMENU_TARGET)
4269 AC_SUBST(OLDXMENU)
4270 AC_SUBST(LIBXMENU)
4271 AC_SUBST(LIBX_OTHER)
4272 AC_SUBST(OLDXMENU_DEPS)
4274 if test "${HAVE_MENUS}" = "yes" ; then
4275   AC_DEFINE(HAVE_MENUS, 1,
4276             [Define to 1 if you have mouse menus.
4277              (This is automatic if you use X, but the option to specify it remains.)
4278              It is also defined with other window systems that support xmenu.c.])
4281 if test "${GNU_MALLOC}" = "yes" ; then
4282   AC_DEFINE(GNU_MALLOC, 1,
4283             [Define to 1 if you want to use the GNU memory allocator.])
4286 RALLOC_OBJ=
4287 if test "${REL_ALLOC}" = "yes" ; then
4288   AC_DEFINE(REL_ALLOC, 1,
4289             [Define REL_ALLOC if you want to use the relocating allocator for
4290              buffer space.])
4292   test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
4294 AC_SUBST(RALLOC_OBJ)
4296 if test "$opsys" = "cygwin"; then
4297   CYGWIN_OBJ="sheap.o cygw32.o"
4298   ## Cygwin differs because of its unexec().
4299   PRE_ALLOC_OBJ=
4300   POST_ALLOC_OBJ=lastfile.o
4301 elif test "$opsys" = "mingw32"; then
4302   CYGWIN_OBJ=
4303   PRE_ALLOC_OBJ=
4304   POST_ALLOC_OBJ=lastfile.o
4305 else
4306   CYGWIN_OBJ=
4307   PRE_ALLOC_OBJ=lastfile.o
4308   POST_ALLOC_OBJ=
4310 AC_SUBST(CYGWIN_OBJ)
4311 AC_SUBST(PRE_ALLOC_OBJ)
4312 AC_SUBST(POST_ALLOC_OBJ)
4314 # Configure gnulib.  Although this does not affect CFLAGS or LIBS permanently.
4315 # it temporarily reverts them to their pre-pkg-config values,
4316 # because gnulib needs to work with both src (which uses the
4317 # pkg-config stuff) and lib-src (which does not).  For example, gnulib
4318 # may need to determine whether LIB_CLOCK_GETTIME should contain -lrt,
4319 # and it therefore needs to run in an environment where LIBS does not
4320 # already contain -lrt merely because 'pkg-config --libs' printed '-lrt'
4321 # for some package unrelated to lib-src.
4322 SAVE_CFLAGS=$CFLAGS
4323 SAVE_LIBS=$LIBS
4324 CFLAGS=$pre_PKG_CONFIG_CFLAGS
4325 LIBS="$LIB_PTHREAD $pre_PKG_CONFIG_LIBS"
4326 gl_ASSERT_NO_GNULIB_POSIXCHECK
4327 gl_ASSERT_NO_GNULIB_TESTS
4328 gl_INIT
4329 CFLAGS=$SAVE_CFLAGS
4330 LIBS=$SAVE_LIBS
4332 if test "${opsys}" = "mingw32"; then
4333   CPPFLAGS="-DUSE_CRT_DLL=1 -I $srcdir/nt/inc"
4334   # Remove unneeded switches from the value of CC that goes to Makefiles
4335   CC=`echo $CC | sed -e "s,$GCC_TEST_OPTIONS,,"`
4338 case "$opsys" in
4339   aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
4341   darwin)
4342    ## The -headerpad option tells ld (see man page) to leave room at the
4343    ## end of the header for adding load commands.  Needed for dumping.
4344    ## 0x690 is the total size of 30 segment load commands (at 56
4345    ## each); under Cocoa 31 commands are required.
4346    if test "$HAVE_NS" = "yes"; then
4347      libs_nsgui="-framework AppKit"
4348      headerpad_extra=6C8
4349    else
4350      libs_nsgui=
4351      headerpad_extra=690
4352    fi
4353    LD_SWITCH_SYSTEM_TEMACS="-fno-pie -prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
4355    ## This is here because src/Makefile.in did some extra fiddling around
4356    ## with LD_SWITCH_SYSTEM.  It seems cleaner to put this in
4357    ## LD_SWITCH_SYSTEM_TEMACS instead,
4358    test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
4359      LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
4360    ;;
4362   ## LD_SWITCH_X_SITE_RPATH is a -rpath option saying where to
4363   ## find X at run-time.
4364   ## When handled by cpp, this was in LD_SWITCH_SYSTEM.  However, at the
4365   ## point where configure sourced the s/*.h file, LD_SWITCH_X_SITE_RPATH
4366   ## had not yet been defined and was expanded to null.  Hence LD_SWITCH_SYSTEM
4367   ## had different values in configure (in ac_link) and src/Makefile.in.
4368   ## It seems clearer therefore to put this piece in LD_SWITCH_SYSTEM_TEMACS.
4369   gnu*) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_RPATH)" ;;
4371   mingw32)
4372    LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-subsystem,console -Wl,-entry,__start -Wl,-Map,./temacs.map"
4373    ;;
4375   *) LD_SWITCH_SYSTEM_TEMACS= ;;
4376 esac
4378 AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
4380 ## Common for all window systems
4381 if test "$window_system" != "none"; then
4382   AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
4383   WINDOW_SYSTEM_OBJ="fontset.o fringe.o image.o"
4386 AC_SUBST(WINDOW_SYSTEM_OBJ)
4388 AH_TOP([/* GNU Emacs site configuration template file.
4390 Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2013
4391   Free Software Foundation, Inc.
4393 This file is part of GNU Emacs.
4395 GNU Emacs is free software: you can redistribute it and/or modify
4396 it under the terms of the GNU General Public License as published by
4397 the Free Software Foundation, either version 3 of the License, or
4398 (at your option) any later version.
4400 GNU Emacs is distributed in the hope that it will be useful,
4401 but WITHOUT ANY WARRANTY; without even the implied warranty of
4402 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4403 GNU General Public License for more details.
4405 You should have received a copy of the GNU General Public License
4406 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
4409 /* No code in Emacs #includes config.h twice, but some bits of code
4410    intended to work with other packages as well (like gmalloc.c)
4411    think they can include it as many times as they like.  */
4412 #ifndef EMACS_CONFIG_H
4413 #define EMACS_CONFIG_H
4414 ])dnl
4416 AH_BOTTOM([#include <conf_post.h>
4418 #endif /* EMACS_CONFIG_H */
4421 Local Variables:
4422 mode: c
4423 End:
4425 ])dnl
4427 #### Report on what we decided to do.
4428 #### Report GTK as a toolkit, even if it doesn't use Xt.
4429 #### It makes printing result more understandable as using GTK sets
4430 #### toolkit_scroll_bars to yes by default.
4431 if test "${HAVE_GTK}" = "yes"; then
4432   USE_X_TOOLKIT="$USE_GTK_TOOLKIT"
4435 echo "
4436 Configured for \`${canonical}'.
4438   Where should the build process find the source code?    ${srcdir}
4439   What compiler should emacs be built with?               ${CC} ${CFLAGS}
4440   Should Emacs use the GNU version of malloc?             ${GNU_MALLOC}${GNU_MALLOC_reason}
4441   Should Emacs use a relocating allocator for buffers?    ${REL_ALLOC}
4442   Should Emacs use mmap(2) for buffer allocation?         $use_mmap_for_buffers
4443   What window system should Emacs use?                    ${window_system}
4444   What toolkit should Emacs use?                          ${USE_X_TOOLKIT}"
4446 if test -n "${x_includes}"; then
4447 echo "  Where do we find X Windows header files?                ${x_includes}"
4448 else
4449 echo "  Where do we find X Windows header files?                Standard dirs"
4451 if test -n "${x_libraries}"; then
4452 echo "  Where do we find X Windows libraries?                   ${x_libraries}"
4453 else
4454 echo "  Where do we find X Windows libraries?                   Standard dirs"
4457 echo "  Does Emacs use -lXaw3d?                                 ${HAVE_XAW3D}"
4458 echo "  Does Emacs use -lXpm?                                   ${HAVE_XPM}"
4459 echo "  Does Emacs use -ljpeg?                                  ${HAVE_JPEG}"
4460 echo "  Does Emacs use -ltiff?                                  ${HAVE_TIFF}"
4461 echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $LIBGIF"
4462 echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
4463 echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
4464 echo "  Does Emacs use imagemagick?                             ${HAVE_IMAGEMAGICK}"
4466 echo "  Does Emacs use -lgpm?                                   ${HAVE_GPM}"
4467 echo "  Does Emacs use -ldbus?                                  ${HAVE_DBUS}"
4468 echo "  Does Emacs use -lgconf?                                 ${HAVE_GCONF}"
4469 echo "  Does Emacs use GSettings?                               ${HAVE_GSETTINGS}"
4470 echo "  Does Emacs use -lselinux?                               ${HAVE_LIBSELINUX}"
4471 echo "  Does Emacs use -lgnutls?                                ${HAVE_GNUTLS}"
4472 echo "  Does Emacs use -lxml2?                                  ${HAVE_LIBXML2}"
4474 echo "  Does Emacs use -lfreetype?                              ${HAVE_FREETYPE}"
4475 echo "  Does Emacs use -lm17n-flt?                              ${HAVE_M17N_FLT}"
4476 echo "  Does Emacs use -lotf?                                   ${HAVE_LIBOTF}"
4477 echo "  Does Emacs use -lxft?                                   ${HAVE_XFT}"
4479 echo "  Does Emacs use toolkit scroll bars?                     ${USE_TOOLKIT_SCROLL_BARS}"
4480 echo
4482 if test -n "${EMACSDATA}"; then
4483    echo "  Environment variable EMACSDATA set to:                  $EMACSDATA"
4485 if test -n "${EMACSDOC}"; then
4486    echo "  Environment variable EMACSDOC set to:                   $EMACSDOC"
4489 echo
4491 if test "$HAVE_NS" = "yes"; then
4492    echo
4493    echo "You must run \"${MAKE-make} install\" in order to test the built application.
4494 The installed application will go to nextstep/Emacs.app and can be
4495 run or moved from there."
4496    if test "$EN_NS_SELF_CONTAINED" = "yes"; then
4497       echo "The application will be fully self-contained."
4498     else
4499       echo "The lisp resources for the application will be installed under ${prefix}.
4500 You may need to run \"${MAKE-make} install\" with sudo.  The application will fail
4501 to run if these resources are not installed."
4502    fi
4503    echo
4506 if test "${opsys}" = "cygwin"; then
4507   case `uname -r` in
4508     1.5.*) AC_MSG_WARN([[building Emacs on Cygwin 1.5 is not supported.]])
4509            echo
4510            ;;
4511   esac
4514 # Remove any trailing slashes in these variables.
4515 [test "${prefix}" != NONE &&
4516   prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
4517 test "${exec_prefix}" != NONE &&
4518   exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
4520 if test "$HAVE_NS" = "yes"; then
4521   if test "$NS_IMPL_GNUSTEP" = yes; then
4522     AC_CONFIG_FILES([nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist:nextstep/templates/Info-gnustep.plist.in \
4523       nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop:nextstep/templates/Emacs.desktop.in])
4524   else
4525     AC_CONFIG_FILES([nextstep/Cocoa/Emacs.base/Contents/Info.plist:nextstep/templates/Info.plist.in \
4526       nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:nextstep/templates/InfoPlist.strings.in])
4527   fi
4530 dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES.
4531 dnl You _can_ use that variable in AC_CONFIG_FILES, so long as any directory
4532 dnl using automake (ie lib/) is explicitly listed and not "hidden" in a variable
4533 dnl (else you get "no `Makefile.am' found for any configure output").
4534 dnl This will work, but you get a config.status that is not quite right
4535 dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html).
4536 dnl That doesn't have any obvious consequences for Emacs, but on the whole
4537 dnl it seems better to just live with the duplication.
4538 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"
4540 AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
4541        doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
4542        doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile \
4543        leim/Makefile nextstep/Makefile])
4545 dnl test/ is not present in release tarfiles.
4546 opt_makefile=test/automated/Makefile
4548 if test -f "$srcdir/$opt_makefile.in"; then
4549   SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
4550   dnl Again, it's best not to use a variable.  Though you can add
4551   dnl ", [], [opt_makefile='$opt_makefile']" and it should work.
4552   AC_CONFIG_FILES([test/automated/Makefile])
4556 dnl admin/ may or may not be present.
4557 opt_makefile=admin/unidata/Makefile
4559 if test -f "$srcdir/$opt_makefile.in"; then
4560   SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
4561   AC_CONFIG_FILES([admin/unidata/Makefile])
4565 SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'`
4567 AC_SUBST(SUBDIR_MAKEFILES_IN)
4569 dnl Make the necessary directories, if they don't exist.
4570 AC_CONFIG_COMMANDS([mkdirs], [
4571 for dir in etc lisp ; do
4572   test -d ${dir} || mkdir ${dir}
4573 done
4576 dnl You might wonder (I did) why epaths.h is generated by running make,
4577 dnl rather than just letting configure generate it from epaths.in.
4578 dnl One reason is that the various paths are not fully expanded (see above);
4579 dnl eg gamedir=${prefix}/var/games/emacs.
4580 dnl Secondly, the GNU Coding standards require that one should be able
4581 dnl to run `make prefix=/some/where/else' and override the values set
4582 dnl by configure.  This also explains the `move-if-change' test and
4583 dnl the use of force in the `epaths-force' rule in Makefile.in.
4584 AC_CONFIG_COMMANDS([epaths], [
4585 echo creating src/epaths.h
4586 ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force
4587 ], [GCC="$GCC" CPPFLAGS="$CPPFLAGS"])
4589 AC_CONFIG_COMMANDS([gdbinit], [
4590 if test ! -f src/.gdbinit && test -f "$srcdir/src/.gdbinit"; then
4591   echo creating src/.gdbinit
4592   echo "source $srcdir/src/.gdbinit" > src/.gdbinit
4596 AC_OUTPUT