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