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