* lisp/textmodes/reftex-parse.el (reftex-locate-bibliography-files):
[emacs.git] / configure.ac
blob00c841e77b0c920172defecc469ab9ae3e648c80
1 dnl  Autoconf script for GNU Emacs
2 dnl To rebuild the `configure' script from this, execute the command
3 dnl     autoconf
4 dnl in the directory containing this script.
5 dnl If you changed any AC_DEFINES, also run autoheader.
6 dnl
7 dnl Copyright (C) 1994-1996, 1999-2013 Free Software Foundation, Inc.
8 dnl
9 dnl  This file is part of GNU Emacs.
10 dnl
11 dnl  GNU Emacs is free software: you can redistribute it and/or modify
12 dnl  it under the terms of the GNU General Public License as published by
13 dnl  the Free Software Foundation, either version 3 of the License, or
14 dnl  (at your option) any later version.
15 dnl
16 dnl  GNU Emacs is distributed in the hope that it will be useful,
17 dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of
18 dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 dnl  GNU General Public License for more details.
20 dnl
21 dnl  You should have received a copy of the GNU General Public License
22 dnl  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
24 AC_PREREQ(2.65)
25 AC_INIT(emacs, 24.3.50)
27 dnl This is the documented way to record the args passed to configure,
28 dnl rather than $ac_configure_args.
29 emacs_config_options="$@"
30 ## Add some environment variables, if they were passed via the environment
31 ## rather than on the command-line.
32 for var in CFLAGS CPPFLAGS LDFLAGS; do
33     case "$emacs_config_options" in
34       *$var=*) continue ;;
35     esac
36     eval val="\$${var}"
37     test x"$val" = x && continue
38     emacs_config_options="${emacs_config_options}${emacs_config_options:+ }$var=\"$val\""
39 done
41 AC_CONFIG_HEADER(src/config.h:src/config.in)
42 AC_CONFIG_SRCDIR(src/lisp.h)
43 AC_CONFIG_AUX_DIR(build-aux)
44 dnl Fairly arbitrary, older versions might work too.
45 AM_INIT_AUTOMAKE(1.11)
47 dnl Support for --program-prefix, --program-suffix and
48 dnl --program-transform-name options
49 AC_ARG_PROGRAM
51 dnl It is important that variables on the RHS not be expanded here,
52 dnl hence the single quotes.  This is per the GNU coding standards, see
53 dnl (autoconf) Installation Directory Variables
54 dnl See also epaths.h below.
55 lispdir='${datadir}/emacs/${version}/lisp'
56 leimdir='${datadir}/emacs/${version}/leim'
57 standardlisppath='${lispdir}:${leimdir}'
58 locallisppath='${datadir}/emacs/${version}/site-lisp:'\
59 '${datadir}/emacs/site-lisp'
60 lisppath='${locallisppath}:${standardlisppath}'
61 etcdir='${datadir}/emacs/${version}/etc'
62 archlibdir='${libexecdir}/emacs/${version}/${configuration}'
63 docdir='${datadir}/emacs/${version}/etc'
64 gamedir='${localstatedir}/games/emacs'
66 dnl Special option to disable the most of other options.
67 AC_ARG_WITH(all,
68 [AS_HELP_STRING([--without-all],
69                 [omit almost all features and build
70                 small executable with minimal dependencies])],
71   with_features=$withval,
72   with_features=yes)
74 dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING)
75 dnl Create a new --with option that defaults to being disabled.
76 dnl NAME is the base name of the option.  The shell variable with_NAME
77 dnl   will be set to either the user's value (if the option is
78 dnl   specified; 'yes' for a plain --with-NAME) or to 'no' (if the
79 dnl   option is not specified).  Note that the shell variable name is
80 dnl   constructed as autoconf does, by replacing non-alphanumeric
81 dnl   characters with "_".
82 dnl HELP-STRING is the help text for the option.
83 AC_DEFUN([OPTION_DEFAULT_OFF], [dnl
84   AC_ARG_WITH([$1],[AS_HELP_STRING([--with-$1],[$2])],[],[dnl
85     m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=no])dnl
86 ])dnl
88 dnl OPTION_DEFAULT_ON(NAME, HELP-STRING)
89 dnl Create a new --with option that defaults to $enable_features.
90 dnl NAME is the base name of the option.  The shell variable with_NAME
91 dnl   will be set either to 'no' (for a plain --without-NAME) or to
92 dnl   'yes' (if the option is not specified).  Note that the shell
93 dnl   variable name is constructed as autoconf does, by replacing
94 dnl   non-alphanumeric characters with "_".
95 dnl HELP-STRING is the help text for the option.
96 AC_DEFUN([OPTION_DEFAULT_ON], [dnl
97   AC_ARG_WITH([$1],[AS_HELP_STRING([--without-$1],[$2])],[],[dnl
98    m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=$with_features])dnl
99 ])dnl
101 OPTION_DEFAULT_ON([pop],[don't support POP mail retrieval with movemail])
102 if test "$with_pop" = yes; then
103    AC_DEFINE(MAIL_USE_POP)
105 AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl
107 OPTION_DEFAULT_OFF([kerberos],[support Kerberos-authenticated POP])
108 if test "$with_kerberos" != no; then
109    AC_DEFINE(KERBEROS)
111 AH_TEMPLATE(KERBEROS,
112             [Define to support Kerberos-authenticated POP mail retrieval.])dnl
114 OPTION_DEFAULT_OFF([kerberos5],[support Kerberos version 5 authenticated POP])
115 if test "${with_kerberos5}" != no; then
116   if test "${with_kerberos}" = no; then
117     with_kerberos=yes
118     AC_DEFINE(KERBEROS)
119   fi
120   AC_DEFINE(KERBEROS5, 1, [Define to use Kerberos 5 instead of Kerberos 4.])
123 OPTION_DEFAULT_OFF([hesiod],[support Hesiod to get the POP server host])
124 dnl FIXME hesiod support may not be present, so it seems like an error
125 dnl to define, or at least use, this unconditionally.
126 if test "$with_hesiod" != no; then
127   AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])
130 OPTION_DEFAULT_OFF([mmdf],[support MMDF mailboxes])
131 if test "$with_mmdf" != no; then
132    AC_DEFINE(MAIL_USE_MMDF, 1, [Define to support MMDF mailboxes in movemail.])
135 OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after reading])
136 if test "$with_mail_unlink" != no; then
137    AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail spool after reading.])
140 AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
141     [string giving default POP mail host])],
142     AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.]))
144 OPTION_DEFAULT_ON([sound],[don't compile with sound support])
146 dnl FIXME currently it is not the last.
147 dnl This should be the last --with option, because --with-x is
148 dnl added later on when we find the file name of X, and it's best to
149 dnl keep them together visually.
150 AC_ARG_WITH([x-toolkit],[AS_HELP_STRING([--with-x-toolkit=KIT],
151  [use an X toolkit (KIT one of: yes or gtk, gtk2, gtk3, lucid or athena, motif, no)])],
152 [         case "${withval}" in
153             y | ye | yes )      val=gtk ;;
154             n | no )            val=no  ;;
155             l | lu | luc | luci | lucid )       val=lucid ;;
156             a | at | ath | athe | athen | athena )      val=athena ;;
157             m | mo | mot | moti | motif )       val=motif ;;
158             g | gt | gtk  )     val=gtk ;;
159             gtk2  )     val=gtk2 ;;
160             gtk3  )     val=gtk3 ;;
161             * )
162 AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid;
163 this option's value should be `yes', `no', `lucid', `athena', `motif', `gtk',
164 `gtk2' or `gtk3'.  `yes' and `gtk' are synonyms.
165 `athena' and `lucid' are synonyms.])
166             ;;
167           esac
168           with_x_toolkit=$val
171 OPTION_DEFAULT_OFF([wide-int], [prefer wide Emacs integers (typically 62-bit)])
172 if test "$with_wide_int" = yes; then
173   AC_DEFINE([WIDE_EMACS_INT], 1, [Use long long for EMACS_INT if available.])
176 dnl _ON results in a '--without' option in the --help output, so
177 dnl the help text should refer to "don't compile", etc.
178 OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support])
179 OPTION_DEFAULT_ON([jpeg],[don't compile with JPEG image support])
180 OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support])
181 OPTION_DEFAULT_ON([gif],[don't compile with GIF image support])
182 OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
183 OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
184 OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
185 OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support])
187 OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
188 OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
189 OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
191 OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
192 OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
193 OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
194 OPTION_DEFAULT_OFF([ns],[use NeXTstep (Cocoa or GNUstep) windowing system])
195 OPTION_DEFAULT_OFF([w32], [use native MS Windows GUI in a Cygwin build])
197 OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
198 OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
199 OPTION_DEFAULT_ON([gconf],[don't compile with GConf support])
200 OPTION_DEFAULT_ON([gsettings],[don't compile with GSettings support])
201 OPTION_DEFAULT_ON([selinux],[don't compile with SELinux support])
202 OPTION_DEFAULT_ON([gnutls],[don't use -lgnutls for SSL/TLS support])
203 OPTION_DEFAULT_ON([inotify],[don't compile with inotify (file-watch) support])
205 ## For the times when you want to build Emacs but don't have
206 ## a suitable makeinfo, and can live without the manuals.
207 dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
208 OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
210 ## Makefile.in needs the cache file name.
211 AC_SUBST(cache_file)
213 ## This is an option because I do not know if all info/man support
214 ## compressed files, nor how to test if they do so.
215 OPTION_DEFAULT_ON([compress-info],[don't compress the installed Info pages])
216 if test $with_compress_info = yes; then
217    GZIP_INFO=yes
218 else
219    GZIP_INFO=
221 AC_SUBST(GZIP_INFO)
223 AC_ARG_WITH([pkg-config-prog],dnl
224 [AS_HELP_STRING([--with-pkg-config-prog=FILENAME],
225                   [file name of pkg-config for finding GTK and librsvg])])
226 if test "X${with_pkg_config_prog}" != X; then
227    if test "${with_pkg_config_prog}" != yes; then
228       PKG_CONFIG="${with_pkg_config_prog}"
229    fi
232 AC_ARG_WITH(gameuser,dnl
233 [AS_HELP_STRING([--with-gameuser=USER],[user for shared game score files])])
234 test "X${with_gameuser}" != X && test "${with_gameuser}" != yes \
235   && gameuser="${with_gameuser}"
236 test "X$gameuser" = X && gameuser=games
238 AC_ARG_WITH([gnustep-conf],dnl
239 [AS_HELP_STRING([--with-gnustep-conf=FILENAME],
240    [name of GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])])
241 test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
242   GNUSTEP_CONFIG_FILE="${with_gnustep_conf}"
243 test "X$GNUSTEP_CONFIG_FILE" = "X" && \
244      GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf
246 AC_ARG_ENABLE(ns-self-contained,
247 [AS_HELP_STRING([--disable-ns-self-contained],
248                 [disable self contained build under NeXTstep])],
249    EN_NS_SELF_CONTAINED=$enableval,
250    EN_NS_SELF_CONTAINED=yes)
252 AC_ARG_ENABLE(locallisppath,
253 [AS_HELP_STRING([--enable-locallisppath=PATH],
254                 [directories Emacs should search for lisp files specific
255                  to this site])],
256 if test "${enableval}" = "no"; then
257   locallisppath=
258 elif test "${enableval}" != "yes"; then
259   locallisppath=${enableval}
262 AC_ARG_ENABLE(checking,
263 [AS_HELP_STRING([--enable-checking@<:@=LIST@:>@],
264                 [enable expensive run-time checks.  With LIST,
265                  enable only specific categories of checks.
266                  Categories are: all,yes,no.
267                  Flags are: stringbytes, stringoverrun, stringfreelist,
268                  xmallocoverrun, conslist, glyphs])],
269 [ac_checking_flags="${enableval}"],[])
270 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
271 for check in $ac_checking_flags
273         case $check in
274         # these set all the flags to specific states
275         yes)            ac_enable_checking=1 ;;
276         no)             ac_enable_checking= ;
277                         ac_gc_check_stringbytes= ;
278                         ac_gc_check_string_overrun= ;
279                         ac_gc_check_string_free_list= ;
280                         ac_xmalloc_overrun= ;
281                         ac_gc_check_cons_list= ;
282                         ac_glyphs_debug= ;;
283         all)            ac_enable_checking=1 ;
284                         ac_gc_check_stringbytes=1 ;
285                         ac_gc_check_string_overrun=1 ;
286                         ac_gc_check_string_free_list=1 ;
287                         ac_xmalloc_overrun=1 ;
288                         ac_gc_check_cons_list=1 ;
289                         ac_glyphs_debug=1 ;;
290         # these enable particular checks
291         stringbytes)    ac_gc_check_stringbytes=1 ;;
292         stringoverrun)  ac_gc_check_string_overrun=1 ;;
293         stringfreelist) ac_gc_check_string_free_list=1 ;;
294         xmallocoverrun) ac_xmalloc_overrun=1 ;;
295         conslist)       ac_gc_check_cons_list=1 ;;
296         glyphs)         ac_glyphs_debug=1 ;;
297         *)      AC_MSG_ERROR(unknown check category $check) ;;
298         esac
299 done
300 IFS="$ac_save_IFS"
302 if test x$ac_enable_checking != x ; then
303   AC_DEFINE(ENABLE_CHECKING, 1,
304 [Define to 1 if expensive run-time data type and consistency checks are enabled.])
306 if test x$ac_gc_check_stringbytes != x ; then
307   AC_DEFINE(GC_CHECK_STRING_BYTES, 1,
308 [Define this temporarily to hunt a bug.  If defined, the size of
309    strings is redundantly recorded in sdata structures so that it can
310    be compared to the sizes recorded in Lisp strings.])
312 if test x$ac_gc_check_string_overrun != x ; then
313   AC_DEFINE(GC_CHECK_STRING_OVERRUN, 1,
314 [Define this to check for short string overrun.])
316 if test x$ac_gc_check_string_free_list != x ; then
317   AC_DEFINE(GC_CHECK_STRING_FREE_LIST, 1,
318 [Define this to check the string free list.])
320 if test x$ac_xmalloc_overrun != x ; then
321   AC_DEFINE(XMALLOC_OVERRUN_CHECK, 1,
322 [Define this to check for malloc buffer overrun.])
324 if test x$ac_gc_check_cons_list != x ; then
325   AC_DEFINE(GC_CHECK_CONS_LIST, 1,
326 [Define this to check for errors in cons list.])
328 if test x$ac_glyphs_debug != x ; then
329   AC_DEFINE(GLYPH_DEBUG, 1,
330 [Define this to enable glyphs debugging code.])
333 AC_ARG_ENABLE(check-lisp-object-type,
334 [AS_HELP_STRING([--enable-check-lisp-object-type],
335                 [enable compile time checks for the Lisp_Object data type.
336                 This is useful for development for catching certain types of bugs.])],
337 if test "${enableval}" != "no"; then
338    AC_DEFINE(CHECK_LISP_OBJECT_TYPE, 1,
339    [Define this to enable compile time checks for the Lisp_Object data type.])
343 dnl The name of this option is unfortunate.  It predates, and has no
344 dnl relation to, the "sampling-based elisp profiler" added in 24.3.
345 dnl Actually, it stops it working.
346 dnl http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00393.html
347 AC_ARG_ENABLE(profiling,
348 [AS_HELP_STRING([--enable-profiling],
349                 [build emacs with low-level, gprof profiling support.
350                 Mainly useful for debugging Emacs itself.  May not work on
351                 all platforms.  Stops profiler.el working.])],
352 [ac_enable_profiling="${enableval}"],[])
353 if test x$ac_enable_profiling != x ; then
354    PROFILING_CFLAGS="-DPROFILING=1 -pg"
355 else
356    PROFILING_CFLAGS=
358 AC_SUBST(PROFILING_CFLAGS)
360 AC_ARG_ENABLE(autodepend,
361 [AS_HELP_STRING([--enable-autodepend],
362                 [automatically generate dependencies to .h-files.
363                  Requires GNU Make and Gcc. Enabled if GNU Make and Gcc is
364                  found])],
365 [ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
367 AC_ARG_ENABLE(gtk-deprecation-warnings,
368 [AS_HELP_STRING([--enable-gtk-deprecation-warnings],
369                 [Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])],
370 [ac_enable_gtk_deprecation_warnings="${enableval}"],[])
372 #### Make srcdir absolute, if it isn't already.  It's important to
373 #### avoid running the file name through pwd unnecessarily, since pwd can
374 #### give you automounter prefixes, which can go away.  We do all this
375 #### so Emacs can find its files when run uninstalled.
376 ## Make sure CDPATH doesn't affect cd (in case PWD is relative).
377 unset CDPATH
378 case "${srcdir}" in
379   [[\\/]]* | ?:[[\\/]]*) ;;
380   . )
381     ## We may be able to use the $PWD environment variable to make this
382     ## absolute.  But sometimes PWD is inaccurate.
383     ## Note: we used to use $PWD at the end instead of `pwd`,
384     ## but that tested only for a well-formed and valid PWD,
385     ## it did not object when PWD was well-formed and valid but just wrong.
386     if test ".$PWD" != "." && test ".`(cd "$PWD" ; sh -c pwd)`" = ".`pwd`"  ;
387     then
388       srcdir="$PWD"
389     else
390       srcdir=`(cd "$srcdir"; pwd)`
391     fi
392   ;;
393   *  ) srcdir=`(cd "$srcdir"; pwd)` ;;
394 esac
396 ### Canonicalize the configuration name.
398 AC_CANONICAL_HOST
399 canonical=$host
400 configuration=${host_alias-${build_alias-$host}}
402 dnl This used to use changequote, but, apart from `changequote is evil'
403 dnl per the autoconf manual, we can speed up autoconf somewhat by quoting
404 dnl the great gob of text.  Thus it's not processed for possible expansion.
405 dnl Just make sure the brackets remain balanced.
407 dnl Since Emacs can't find matching pairs of quotes, boundaries are
408 dnl indicated by comments.
409 dnl quotation begins
412 ### If you add support for a new configuration, add code to this
413 ### switch statement to recognize your configuration name and select
414 ### the appropriate operating system file.
416 ### You would hope that you could choose an s/*.h
417 ### file based on the operating system portion.  However, it turns out
418 ### that each s/*.h file is pretty manufacturer-specific.
419 ### So we basically have to have a special case for each
420 ### configuration name.
422 ### As far as handling version numbers on operating systems is
423 ### concerned, make sure things will fail in a fixable way.  If
424 ### /etc/MACHINES doesn't say anything about version numbers, be
425 ### prepared to handle anything reasonably.  If version numbers
426 ### matter, be sure /etc/MACHINES says something about it.
428 opsys='' unported=no
429 case "${canonical}" in
431   ## GNU/Linux and similar ports
432   *-*-linux* )
433     opsys=gnu-linux
434   ;;
436   ## FreeBSD ports
437   *-*-freebsd* )
438     opsys=freebsd
439   ;;
441   ## DragonFly ports
442   *-*-dragonfly* )
443     opsys=dragonfly
444   ;;
446   ## FreeBSD kernel + glibc based userland
447   *-*-kfreebsd*gnu* )
448     opsys=gnu-kfreebsd
449   ;;
451   ## NetBSD ports
452   *-*-netbsd* )
453     opsys=netbsd
454   ;;
456   ## OpenBSD ports
457   *-*-openbsd* )
458     opsys=openbsd
459   ;;
461   ## Apple Darwin / Mac OS X
462   *-apple-darwin* )
463     case "${canonical}" in
464       i[3456]86-* )  ;;
465       powerpc-* )    ;;
466       x86_64-* )     ;;
467       * )            unported=yes ;;
468     esac
469     opsys=darwin
470     ## Use fink packages if available.
471     ## FIXME find a better way to do this: http://debbugs.gnu.org/11507
472 ##    if test -d /sw/include && test -d /sw/lib; then
473 ##      GCC_TEST_OPTIONS="-I/sw/include -L/sw/lib"
474 ##      NON_GCC_TEST_OPTIONS=${GCC_TEST_OPTIONS}
475 ##    fi
476   ;;
478   ## Cygwin ports
479   *-*-cygwin )
480     opsys=cygwin
481   ;;
483   ## HP 9000 series 700 and 800, running HP/UX
484   hppa*-hp-hpux10.2* )
485     opsys=hpux10-20
486   ;;
487   hppa*-hp-hpux1[1-9]* )
488     opsys=hpux11
489     CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
490   ;;
492   ## IBM machines
493   rs6000-ibm-aix4.[23]* )
494     opsys=aix4-2
495   ;;
496   powerpc-ibm-aix4.[23]*  )
497     opsys=aix4-2
498   ;;
499   rs6000-ibm-aix[56]* )
500     opsys=aix4-2
501   ;;
502   powerpc-ibm-aix[56]*  )
503     opsys=aix4-2
504   ;;
506   ## Silicon Graphics machines
507   ## Iris 4D
508   mips-sgi-irix6.5 )
509     opsys=irix6-5
510     # Without defining _LANGUAGE_C, things get masked out in the headers
511     # so that, for instance, grepping for `free' in stdlib.h fails and
512     # AC_HEADER_STD_C fails.   (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m).
513     NON_GCC_TEST_OPTIONS="-D_LANGUAGE_C"
514   ;;
516   ## Suns
517   *-sun-solaris* \
518     | i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
519     | x86_64-*-solaris2*    | x86_64-*-sunos5*)
520     case "${canonical}" in
521       i[3456]86-*-* )   ;;
522       amd64-*-*|x86_64-*-*) ;;
523       sparc* )          ;;
524       * )               unported=yes ;;
525     esac
526     case "${canonical}" in
527       *-sunos5.6* | *-solaris2.6* )
528                 opsys=sol2-6
529                 RANLIB="ar -ts"
530                 ;;
531       *-sunos5.[7-9]* | *-solaris2.[7-9]* )
532                 opsys=sol2-6
533                 emacs_check_sunpro_c=yes
534                 ;;
535       *-sunos5* | *-solaris* )
536                 opsys=sol2-10
537                 emacs_check_sunpro_c=yes
538                 ;;
539     esac
540     ## Watch out for a compiler that we know will not work.
541     case "${canonical}" in
542      *-solaris* | *-sunos5* )
543                 if [ "x$CC" = x/usr/ucb/cc ]; then
544                   ## /usr/ucb/cc doesn't work;
545                   ## we should find some other compiler that does work.
546                   unset CC
547                 fi
548                 ;;
549       *) ;;
550     esac
551   ;;
553   ## Intel 386 machines where we don't care about the manufacturer.
554   i[3456]86-*-* )
555     case "${canonical}" in
556       *-darwin* )               opsys=darwin ;;
557       *-mingw32 )
558                 opsys=mingw32
559                 # MinGW overrides and adds some system headers in nt/inc.
560                 GCC_TEST_OPTIONS="-I $srcdir/nt/inc"
561                 ;;
562       *-sysv4.2uw* )            opsys=unixware ;;
563       *-sysv5uw* )              opsys=unixware ;;
564       *-sysv5OpenUNIX* )        opsys=unixware ;;
565       ## Otherwise, we'll fall through to the generic opsys code at the bottom.
566     esac
567   ;;
569   * )
570     unported=yes
571   ;;
572 esac
574 ### If the code above didn't choose an operating system, just choose
575 ### an operating system based on the configuration name.  You really
576 ### only want to use this when you have no idea what the right
577 ### operating system is; if you know what operating systems a machine
578 ### runs, it's cleaner to make it explicit in the case statement
579 ### above.
580 if test x"${opsys}" = x; then
581   case "${canonical}" in
582     *-gnu* )                            opsys=gnu ;;
583     * )
584       unported=yes
585     ;;
586   esac
590 dnl quotation ends
592 if test $unported = yes; then
593   AC_MSG_ERROR([Emacs hasn't been ported to `${canonical}' systems.
594 Check `etc/MACHINES' for recognized configuration names.])
598 #### Choose a compiler.
600 dnl Sets GCC=yes if using gcc.
601 AC_PROG_CC
602 AM_PROG_CC_C_O
604 if test x$GCC = xyes; then
605   test "x$GCC_TEST_OPTIONS" != x && CC="$CC $GCC_TEST_OPTIONS"
606 else
607   test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
610 dnl This is used in lib/Makefile.am to use nt/gnulib.mk, the
611 dnl alternative to lib/gnulib.mk, so as to avoid generating header files
612 dnl that clash with MinGW.
613 AM_CONDITIONAL([BUILDING_FOR_WINDOWSNT], [test "x$opsys" = "xmingw32"])
615 # Avoid gnulib's tests for HAVE_WORKING_O_NOATIME and HAVE_WORKING_O_NOFOLLOW,
616 # as we don't use them.
617 AC_DEFUN([gl_FCNTL_O_FLAGS])
618 # Avoid gnulib's threadlib module, as we do threads our own way.
619 AC_DEFUN([gl_THREADLIB])
621 # Initialize gnulib right after choosing the compiler.
622 dnl Amongst other things, this sets AR and ARFLAGS.
623 gl_EARLY
625 if test "$ac_test_CFLAGS" != set; then
626   # It's helpful to have C macros available to GDB, so prefer -g3 to -g
627   # if -g3 works and the user does not specify CFLAGS.
628   # This test must follow gl_EARLY; otherwise AC_LINK_IFELSE complains.
629   case $CFLAGS in
630     '-g')
631       emacs_g3_CFLAGS='-g3';;
632     '-g -O2')
633       emacs_g3_CFLAGS='-g3 -O2';;
634     *)
635       emacs_g3_CFLAGS='';;
636   esac
637   if test -n "$emacs_g3_CFLAGS"; then
638     emacs_save_CFLAGS=$CFLAGS
639     CFLAGS=$emacs_g3_CFLAGS
640     AC_CACHE_CHECK([whether $CC accepts $emacs_g3_CFLAGS],
641       [emacs_cv_prog_cc_g3],
642       [AC_LINK_IFELSE([AC_LANG_PROGRAM()],
643          [emacs_cv_prog_cc_g3=yes],
644          [emacs_cv_prog_cc_g3=no])])
645     if test $emacs_cv_prog_cc_g3 != yes; then
646       CFLAGS=$emacs_save_CFLAGS
647     fi
648     if test $opsys = mingw32; then
649       CFLAGS="$CFLAGS -gdwarf-2"
650     fi
651   fi
653   case $CFLAGS in
654     *-O*) ;;
655     *)
656       # No optimization flag was inferred for this non-GCC compiler.
657       # Try -O.  This is needed for xlc on AIX; see Bug#14258.
658       emacs_save_CFLAGS=$CFLAGS
659       test -z "$CFLAGS" || CFLAGS="$CFLAGS "
660       CFLAGS=${CFLAGS}-O
661       AC_CACHE_CHECK([whether $CC accepts -O],
662         [emacs_cv_prog_cc_o],
663         [AC_LINK_IFELSE([AC_LANG_PROGRAM()],
664            [emacs_cv_prog_cc_o=yes],
665            [emacs_cv_prog_cc_o=no])])
666       if test $emacs_cv_prog_cc_o != yes; then
667         CFLAGS=$emacs_save_CFLAGS
668       fi ;;
669   esac
672 AC_ARG_ENABLE([gcc-warnings],
673   [AS_HELP_STRING([--enable-gcc-warnings],
674                   [turn on lots of GCC warnings/errors. This is intended for
675                    developers, and may generate false alarms when used
676                    with older or non-GNU development tools.])],
677   [case $enableval in
678      yes|no) ;;
679      *)      AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
680    esac
681    gl_gcc_warnings=$enableval],
682   [gl_gcc_warnings=no]
685 AC_ARG_ENABLE(link-time-optimization,
686 [AS_HELP_STRING([--enable-link-time-optimization],
687                 [build emacs with link-time optimization.
688                  This is supported only for GCC since 4.5.0.])],
689 if test "${enableval}" != "no"; then
690    AC_MSG_CHECKING([whether link-time optimization is supported])
691    ac_lto_supported=no
692    if test x$GCC = xyes; then
693       CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null`
694       if test x$CPUS != x; then
695          LTO="-flto=$CPUS"
696       else
697          LTO="-flto"
698       fi
699       old_CFLAGS=$CFLAGS
700       CFLAGS="$CFLAGS $LTO"
701       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
702         [ac_lto_supported=yes], [ac_lto_supported=no])
703       CFLAGS="$old_CFLAGS"
704    fi
705    AC_MSG_RESULT([$ac_lto_supported])
706    if test "$ac_lto_supported" = "yes"; then
707       CFLAGS="$CFLAGS $LTO"
708    fi
711 # gl_GCC_VERSION_IFELSE([major], [minor], [run-if-found], [run-if-not-found])
712 # ------------------------------------------------
713 # If $CPP is gcc-MAJOR.MINOR or newer, then run RUN-IF-FOUND.
714 # Otherwise, run RUN-IF-NOT-FOUND.
715 AC_DEFUN([gl_GCC_VERSION_IFELSE],
716   [AC_PREPROC_IFELSE(
717     [AC_LANG_PROGRAM(
718       [[
719 #if ($1) < __GNUC__ || (($1) == __GNUC__ && ($2) <= __GNUC_MINOR__)
720 /* ok */
721 #else
722 # error "your version of gcc is older than $1.$2"
723 #endif
724       ]]),
725     ], [$3], [$4])
726   ]
729 # When compiling with GCC, prefer -isystem to -I when including system
730 # include files, to avoid generating useless diagnostics for the files.
731 if test "$gl_gcc_warnings" != yes; then
732   isystem='-I'
733 else
734   isystem='-isystem '
736   # This, $nw, is the list of warnings we disable.
737   nw=
739   case $with_x_toolkit in
740     lucid | athena | motif)
741        # Old toolkits mishandle 'const'.
742        nw="$nw -Wwrite-strings"
743        ;;
744     *)
745        gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
746        ;;
747   esac
748   AC_SUBST([WERROR_CFLAGS])
750   nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
751   nw="$nw -Woverlength-strings"     # Not a problem these days
752   nw="$nw -Wlogical-op"             # any use of fwrite provokes this
753   nw="$nw -Wformat-nonliteral"      # we do this a lot
754   nw="$nw -Wvla"                    # warnings in gettext.h
755   nw="$nw -Wnested-externs"         # use of XARGMATCH/verify_function__
756   nw="$nw -Wswitch-default"         # Too many warnings for now
757   nw="$nw -Winline"                 # OK to ignore 'inline'
758   nw="$nw -Wjump-misses-init"       # We sometimes safely jump over init.
759   nw="$nw -Wstrict-overflow"        # OK to optimize assuming that
760                                     # signed overflow has undefined behavior
761   nw="$nw -Wsync-nand"              # irrelevant here, and provokes ObjC warning
762   nw="$nw -Wunsafe-loop-optimizations" # OK to suppress unsafe optimizations
764   # Emacs doesn't care about shadowing; see
765   # <http://lists.gnu.org/archive/html/emacs-diffs/2011-11/msg00265.html>.
766   nw="$nw -Wshadow"
768   # Emacs's use of alloca inhibits protecting the stack.
769   nw="$nw -Wstack-protector"
771   # The following line should be removable at some point.
772   nw="$nw -Wsuggest-attribute=pure"
774   # clang is unduly picky about some things.
775   AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang],
776     [AC_COMPILE_IFELSE(
777        [AC_LANG_PROGRAM([[
778             #ifndef __clang__
779               #error "not clang"
780             #endif
781           ]])],
782        [emacs_cv_clang=yes],
783        [emacs_cv_clang=no])])
784   if test $emacs_cv_clang = yes; then
785     nw="$nw -Wcast-align"
786   fi
788   gl_MANYWARN_ALL_GCC([ws])
789   gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
790   for w in $ws; do
791     gl_WARN_ADD([$w])
792   done
793   gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one
794   gl_WARN_ADD([-Wno-sign-compare])     # Too many warnings for now
795   gl_WARN_ADD([-Wno-type-limits])      # Too many warnings for now
796   gl_WARN_ADD([-Wno-switch])           # Too many warnings for now
797   gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
798   gl_WARN_ADD([-Wno-format-nonliteral])
800   # In spite of excluding -Wlogical-op above, it is enabled, as of
801   # gcc 4.5.0 20090517.
802   gl_WARN_ADD([-Wno-logical-op])
804   # More things that clang is unduly picky about.
805   if test $emacs_cv_clang = yes; then
806     gl_WARN_ADD([-Wno-format-extra-args])
807     gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare])
808     gl_WARN_ADD([-Wno-unused-command-line-argument])
809     gl_WARN_ADD([-Wno-unused-value])
810   fi
812   gl_WARN_ADD([-fdiagnostics-show-option])
813   gl_WARN_ADD([-funit-at-a-time])
815   AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
816   AH_VERBATIM([FORTIFY_SOURCE],
817   [/* Enable compile-time and run-time bounds-checking, and some warnings,
818       without upsetting glibc 2.15+. */
819    #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
820    # define _FORTIFY_SOURCE 2
821    #endif
822   ])
823   AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
825   # We use a slightly smaller set of warning options for lib/.
826   # Remove the following and save the result in GNULIB_WARN_CFLAGS.
827   nw=
828   nw="$nw -Wunused-macros"
830   gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
831   AC_SUBST([GNULIB_WARN_CFLAGS])
836 dnl Some other nice autoconf tests.
837 dnl These are commented out, since gl_EARLY and/or Autoconf already does them.
838 dnl AC_PROG_INSTALL
839 dnl AC_PROG_MKDIR_P
840 dnl if test "x$RANLIB" = x; then
841 dnl   AC_PROG_RANLIB
842 dnl fi
845 dnl Sadly, AC_PROG_LN_S is too restrictive.  It also tests whether links
846 dnl can be made to directories.  This is not relevant for our usage, and
847 dnl excludes some cases that work fine for us.  Eg MS Windows or files
848 dnl hosted on AFS, both examples where simple links work, but links to
849 dnl directories fail.  We use a cut-down version instead.
850 dnl AC_PROG_LN_S
852 AC_MSG_CHECKING([whether ln -s works for files in the same directory])
853 rm -f conf$$ conf$$.file
855 LN_S_FILEONLY='cp -p'
857 if (echo >conf$$.file) 2>/dev/null; then
858   if ln -s conf$$.file conf$$ 2>/dev/null; then
859     LN_S_FILEONLY='ln -s'
860   elif ln conf$$.file conf$$ 2>/dev/null; then
861     LN_S_FILEONLY=ln
862   fi
865 rm -f conf$$ conf$$.file
867 if test "$LN_S_FILEONLY" = "ln -s"; then
868    AC_MSG_RESULT([yes])
869 else
870    AC_MSG_RESULT([no, using $LN_S_FILEONLY])
873 AC_SUBST(LN_S_FILEONLY)
876 dnl AC_PROG_LN_S sets LN_S to 'cp -pR' for MinGW, on the premise that 'ln'
877 dnl doesn't support links to directories, as in "ln file dir".  But that
878 dnl use is non-portable, and OTOH MinGW wants to use hard links for Emacs
879 dnl executables at "make install" time.
880 dnl See http://lists.gnu.org/archive/html/emacs-devel/2013-04/msg00475.html
881 dnl for more details.
882 if test "$opsys" = "mingw32"; then
883   LN_S="ln"
886 AC_PATH_PROG(INSTALL_INFO, install-info, :,
887   $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin)
888 dnl Don't use GZIP, which is used by gzip for additional parameters.
889 AC_PATH_PROG(GZIP_PROG, gzip)
891 if test $opsys = gnu-linux; then
892   AC_PATH_PROG(PAXCTL, paxctl,,
893     [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin])
894   if test "X$PAXCTL" != X; then
895     AC_MSG_CHECKING([whether binaries have a PT_PAX_FLAGS header])
896     AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
897       [if $PAXCTL -v conftest$EXEEXT >/dev/null 2>&1; then AC_MSG_RESULT(yes)
898       else AC_MSG_RESULT(no); PAXCTL=""; fi])
899   fi
902 ## Need makeinfo >= 4.7 (?) to build the manuals.
903 AC_PATH_PROG(MAKEINFO, makeinfo, no)
904 dnl By this stage, configure has already checked for egrep and set EGREP,
905 dnl or exited with an error if no egrep was found.
906 if test "$MAKEINFO" != "no"; then
907   case `
908     $MAKEINFO --version 2> /dev/null |
909     $EGREP 'texinfo[[^0-9]]*([[1-4]][[0-9]]+|[[5-9]]|4\.[[7-9]]|4\.[[1-6]][[0-9]]+)'
910   ` in
911     '') MAKEINFO=no;;
912   esac
915 ## Makeinfo is unusual.  For a released Emacs, the manuals are
916 ## pre-built, and not deleted by the normal clean rules.  makeinfo is
917 ## therefore in the category of "special tools" not normally required, which
918 ## configure does not have to check for (eg autoconf itself).
919 ## In a Bazaar checkout on the other hand, the manuals are not included.
920 ## So makeinfo is a requirement to build from Bazaar, and configure
921 ## should test for it as it does for any other build requirement.
922 ## We use the presence of $srcdir/info/emacs to distinguish a release,
923 ## with pre-built manuals, from a Bazaar checkout.
924 HAVE_MAKEINFO=yes
926 if test "$MAKEINFO" = "no"; then
927   MAKEINFO=makeinfo
928   if test "x${with_makeinfo}" = "xno"; then
929     HAVE_MAKEINFO=no
930   elif test ! -e "$srcdir/info/emacs" && test ! -e "$srcdir/info/emacs.info"; then
931     AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.7, and your
932 source tree does not seem to have pre-built manuals in the `info' directory.
933 Either install a suitable version of makeinfo, or re-run configure
934 with the `--without-makeinfo' option to build without the manuals.] )
935   fi
937 AC_SUBST(HAVE_MAKEINFO)
939 dnl Just so that there is only a single place we need to edit.
940 INFO_EXT=.info
941 INFO_OPTS=--no-split
942 AC_SUBST(INFO_EXT)
943 AC_SUBST(INFO_OPTS)
945 dnl Add our options to ac_link now, after it is set up.
947 if test x$GCC = xyes; then
948   test "x$GCC_LINK_TEST_OPTIONS" != x && \
949     ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
950 else
951   test "x$NON_GCC_LINK_TEST_OPTIONS" != x && \
952     ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
955 dnl We need -znocombreloc if we're using a relatively recent GNU ld.
956 dnl If we can link with the flag, it shouldn't do any harm anyhow.
957 dnl (Don't use `-z nocombreloc' as -z takes no arg on Irix.)
958 dnl Treat GCC specially since it just gives a non-fatal `unrecognized option'
959 dnl if not built to support GNU ld.
961 late_LDFLAGS=$LDFLAGS
962 if test x$GCC = xyes; then
963   LDFLAGS="$LDFLAGS -Wl,-znocombreloc"
964 else
965   LDFLAGS="$LDFLAGS -znocombreloc"
968 AC_MSG_CHECKING([for -znocombreloc])
969 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
970   [AC_MSG_RESULT(yes)],
971   LDFLAGS=$late_LDFLAGS
972   [AC_MSG_RESULT(no)])
975 dnl The function dump-emacs will not be defined and temacs will do
976 dnl (load "loadup") automatically unless told otherwise.
977 test "x$CANNOT_DUMP" = "x" && CANNOT_DUMP=no
978 case "$opsys" in
979   your-opsys-here) CANNOT_DUMP=yes ;;
980 esac
982 test "$CANNOT_DUMP" = "yes" && \
983   AC_DEFINE(CANNOT_DUMP, 1, [Define if Emacs cannot be dumped on your system.])
985 AC_SUBST(CANNOT_DUMP)
988 UNEXEC_OBJ=unexelf.o
989 case "$opsys" in
990   # MSDOS uses unexcoff.o
991   aix4-2)
992    UNEXEC_OBJ=unexaix.o
993    ;;
994   cygwin)
995    UNEXEC_OBJ=unexcw.o
996    ;;
997   darwin)
998    UNEXEC_OBJ=unexmacosx.o
999    ;;
1000   hpux10-20 | hpux11)
1001    UNEXEC_OBJ=unexhp9k800.o
1002    ;;
1003   mingw32)
1004    UNEXEC_OBJ=unexw32.o
1005    ;;
1006   sol2-10)
1007    # Use the Solaris dldump() function, called from unexsol.c, to dump
1008    # emacs, instead of the generic ELF dump code found in unexelf.c.
1009    # The resulting binary has a complete symbol table, and is better
1010    # for debugging and other observability tools (debuggers, pstack, etc).
1011    #
1012    # If you encounter a problem using dldump(), please consider sending
1013    # a message to the OpenSolaris tools-linking mailing list:
1014    #      http://mail.opensolaris.org/mailman/listinfo/tools-linking
1015    #
1016    # It is likely that dldump() works with older Solaris too, but this has
1017    # not been tested, so for now this change is for Solaris 10 or newer.
1018    UNEXEC_OBJ=unexsol.o
1019    ;;
1020 esac
1022 LD_SWITCH_SYSTEM=
1023 case "$opsys" in
1024   freebsd|dragonfly)
1025    ## Let `ld' find image libs and similar things in /usr/local/lib.
1026    ## The system compiler, GCC, has apparently been modified to not
1027    ## look there, contrary to what a stock GCC would do.
1028 ### It's not our place to do this.  See bug#10313#17.
1029 ###   LD_SWITCH_SYSTEM=-L/usr/local/lib
1030       :
1031    ;;
1033   gnu-linux)
1034    ## cpp test was "ifdef __mips__", but presumably this is equivalent...
1035    case $host_cpu in mips*) LD_SWITCH_SYSTEM="-G 0";; esac
1036    ;;
1038   netbsd)
1039 ### It's not our place to do this.  See bug#10313#17.
1040 ###   LD_SWITCH_SYSTEM="-Wl,-rpath,/usr/pkg/lib -L/usr/pkg/lib -Wl,-rpath,/usr/local/lib -L/usr/local/lib"
1041       :
1042    ;;
1044   openbsd)
1045    ## Han Boetes <han@boetes.org> says this is necessary,
1046    ## otherwise Emacs dumps core on elf systems.
1047    LD_SWITCH_SYSTEM="-Z"
1048    ;;
1049 esac
1050 AC_SUBST(LD_SWITCH_SYSTEM)
1052 ac_link="$ac_link $LD_SWITCH_SYSTEM"
1054 ## This setting of LD_SWITCH_SYSTEM references LD_SWITCH_X_SITE_RPATH,
1055 ## which has not been defined yet.  When this was handled with cpp,
1056 ## it was expanded to null when configure sourced the s/*.h file.
1057 ## Thus LD_SWITCH_SYSTEM had different values in configure and the Makefiles.
1058 ## FIXME it would be cleaner to put this in LD_SWITCH_SYSTEM_TEMACS
1059 ## (or somesuch), but because it is supposed to go at the _front_
1060 ## of LD_SWITCH_SYSTEM, we cannot do that in exactly the same way.
1061 ## Compare with the gnu-linux case below, which added to the end
1062 ## of LD_SWITCH_SYSTEM, and so can instead go at the front of
1063 ## LD_SWITCH_SYSTEM_TEMACS.
1064 case "$opsys" in
1065   netbsd|openbsd)
1066    LD_SWITCH_SYSTEM="\$(LD_SWITCH_X_SITE_RPATH) $LD_SWITCH_SYSTEM" ;;
1067 esac
1070 C_SWITCH_MACHINE=
1071 case $canonical in
1072  alpha*)
1073   AC_CHECK_DECL([__ELF__])
1074   if test "$ac_cv_have_decl___ELF__" = "yes"; then
1075     ## With ELF, make sure that all common symbols get allocated to in the
1076     ## data section.  Otherwise, the dump of temacs may miss variables in
1077     ## the shared library that have been initialized.  For example, with
1078     ## GNU libc, __malloc_initialized would normally be resolved to the
1079     ## shared library's .bss section, which is fatal.
1080     if test "x$GCC" = "xyes"; then
1081       C_SWITCH_MACHINE="-fno-common"
1082     else
1083       AC_MSG_ERROR([What gives?  Fix me if DEC Unix supports ELF now.])
1084     fi
1085   else
1086     UNEXEC_OBJ=unexalpha.o
1087   fi
1088   ;;
1089 esac
1090 AC_SUBST(C_SWITCH_MACHINE)
1092 AC_SUBST(UNEXEC_OBJ)
1094 C_SWITCH_SYSTEM=
1095 ## Some programs in src produce warnings saying certain subprograms
1096 ## are too complex and need a MAXMEM value greater than 2000 for
1097 ## additional optimization.  --nils@exp-math.uni-essen.de
1098 test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
1099   C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
1100 test "$opsys" = "mingw32" && C_SWITCH_SYSTEM="-mtune=pentium4"
1101 ## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
1102 ## It is redundant in glibc2, since we define _GNU_SOURCE.
1103 AC_SUBST(C_SWITCH_SYSTEM)
1106 LIBS_SYSTEM=
1107 case "$opsys" in
1108   ## IBM's X11R5 uses -lIM and -liconv in AIX 3.2.2.
1109   aix4-2) LIBS_SYSTEM="-lrts -lIM -liconv" ;;
1111   freebsd|dragonfly) LIBS_SYSTEM="-lutil" ;;
1113   hpux*) LIBS_SYSTEM="-l:libdld.sl" ;;
1115   sol2*) LIBS_SYSTEM="-lsocket -lnsl" ;;
1117   ## Motif needs -lgen.
1118   unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
1119 esac
1121 AC_SUBST(LIBS_SYSTEM)
1123 ### Make sure subsequent tests use flags consistent with the build flags.
1125 if test x"${OVERRIDE_CPPFLAGS}" != x; then
1126   CPPFLAGS="${OVERRIDE_CPPFLAGS}"
1127 else
1128   CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
1131 # Suppress obsolescent Autoconf test for size_t; Emacs assumes C89 or better.
1132 AC_DEFUN([AC_TYPE_SIZE_T])
1133 # Likewise for obsolescent test for uid_t, gid_t; Emacs assumes them.
1134 AC_DEFUN([AC_TYPE_UID_T])
1137 LIB_MATH=-lm
1138 dnl Current possibilities handled by sed (aix4-2 -> aix,
1139 dnl gnu-linux -> gnu/linux, etc.):
1140 dnl gnu, gnu/linux, gnu/kfreebsd, aix, cygwin, darwin, hpux, irix.
1141 dnl And special cases: berkeley-unix, usg-unix-v, ms-dos, windows-nt.
1142 SYSTEM_TYPE=`echo $opsys | sed -e 's/[[0-9]].*//' -e 's|-|/|'`
1144 case $opsys in
1145   cygwin )
1146     LIB_MATH=
1147     ;;
1148   darwin )
1149     ## Adding -lm confuses the dynamic linker, so omit it.
1150     LIB_MATH=
1151     ;;
1152   freebsd | dragonfly )
1153     SYSTEM_TYPE=berkeley-unix
1154     ;;
1155   gnu-linux | gnu-kfreebsd )
1156     ;;
1157   hpux10-20 | hpux11 )
1158     ;;
1159   mingw32 )
1160     LIB_MATH=
1161     SYSTEM_TYPE=windows-nt
1162     ;;
1163   dnl NB this may be adjusted below.
1164   netbsd | openbsd )
1165     SYSTEM_TYPE=berkeley-unix
1166     ;;
1168   sol2* | unixware )
1169     SYSTEM_TYPE=usg-unix-v
1170     ;;
1172 esac
1174 AC_SUBST(LIB_MATH)
1175 AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE",
1176   [The type of system you are compiling for; sets `system-type'.])
1179 pre_PKG_CONFIG_CFLAGS=$CFLAGS
1180 pre_PKG_CONFIG_LIBS=$LIBS
1182 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1184 dnl This function definition taken from Gnome 2.0
1185 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
1186 dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
1187 dnl also defines GSTUFF_PKG_ERRORS on error
1188 AC_DEFUN([PKG_CHECK_MODULES], [
1189   succeeded=no
1191   if test "$PKG_CONFIG" = "no" ; then
1192      ifelse([$4], , [AC_MSG_ERROR([
1193       *** 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])
1194   else
1195      PKG_CONFIG_MIN_VERSION=0.9.0
1196      if "$PKG_CONFIG" --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
1197         AC_MSG_CHECKING(for $2)
1199         if "$PKG_CONFIG" --exists "$2" 2>&AS_MESSAGE_LOG_FD &&
1200            $1_CFLAGS=`"$PKG_CONFIG" --cflags "$2" 2>&AS_MESSAGE_LOG_FD` &&
1201            $1_LIBS=`"$PKG_CONFIG" --libs "$2" 2>&AS_MESSAGE_LOG_FD`; then
1202             edit_cflags="
1203               s,///*,/,g
1204               s/^/ /
1205               s/ -I/ $isystem/g
1206               s/^ //
1207             "
1208             $1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"`
1209             $1_LIBS=`AS_ECHO(["$$1_LIBS"]) | sed -e 's,///*,/,g'`
1210             AC_MSG_RESULT([yes CFLAGS='$$1_CFLAGS' LIBS='$$1_LIBS'])
1211             succeeded=yes
1212         else
1213             AC_MSG_RESULT(no)
1214             $1_CFLAGS=""
1215             $1_LIBS=""
1216             ## If we have a custom action on failure, don't print errors, but
1217             ## do set a variable so people can do so.  Do it in a subshell
1218             ## to capture any diagnostics in invoking pkg-config.
1219             $1_PKG_ERRORS=`("$PKG_CONFIG" --print-errors "$2") 2>&1`
1220             ifelse([$4], ,echo "$$1_PKG_ERRORS",)
1221         fi
1223         AC_SUBST($1_CFLAGS)
1224         AC_SUBST($1_LIBS)
1225      else
1226         echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
1227         echo "*** See http://www.freedesktop.org/software/pkgconfig"
1228      fi
1229   fi
1231   if test $succeeded = yes; then
1232      ifelse([$3], , :, [$3])
1233   else
1234      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])
1235   fi
1238 if test "${with_sound}" != "no"; then
1239   # Sound support for GNU/Linux, the free BSDs, and MinGW.
1240   AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h mmsystem.h,
1241     have_sound_header=yes, [], [
1242     #ifdef __MINGW32__
1243     #define WIN32_LEAN_AND_MEAN
1244     #include <windows.h>
1245     #endif
1246     ])
1247   # Emulation library used on NetBSD.
1248   AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
1249   AC_SUBST(LIBSOUND)
1251   ALSA_REQUIRED=1.0.0
1252   ALSA_MODULES="alsa >= $ALSA_REQUIRED"
1253   PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
1254   if test $HAVE_ALSA = yes; then
1255     SAVE_CFLAGS="$CFLAGS"
1256     SAVE_LIBS="$LIBS"
1257     CFLAGS="$ALSA_CFLAGS $CFLAGS"
1258     LIBS="$ALSA_LIBS $LIBS"
1259     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])],
1260                     emacs_alsa_normal=yes,
1261                     emacs_alsa_normal=no)
1262     if test "$emacs_alsa_normal" != yes; then
1263       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]],
1264                      [[snd_lib_error_set_handler (0);]])],
1265                      emacs_alsa_subdir=yes,
1266                      emacs_alsa_subdir=no)
1267       if test "$emacs_alsa_subdir" != yes; then
1268         AC_MSG_ERROR([pkg-config found alsa, but it does not compile.  See config.log for error messages.])
1269       fi
1270       ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
1271     fi
1273     CFLAGS="$SAVE_CFLAGS"
1274     LIBS="$SAVE_LIBS"
1275     LIBSOUND="$LIBSOUND $ALSA_LIBS"
1276     CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
1277     AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
1278   fi
1280   dnl Define HAVE_SOUND if we have sound support.  We know it works and
1281   dnl compiles only on the specified platforms.  For others, it
1282   dnl probably doesn't make sense to try.
1283   if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
1284      case "$opsys" in
1285        dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
1286        gnu-linux|freebsd|netbsd|mingw32)
1287          AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.])
1288          ;;
1289      esac
1290   fi
1292   AC_SUBST(CFLAGS_SOUND)
1295 dnl checks for header files
1296 AC_CHECK_HEADERS_ONCE(
1297   linux/version.h sys/systeminfo.h
1298   coff.h pty.h
1299   sys/resource.h
1300   sys/utsname.h pwd.h utmp.h util.h)
1302 AC_MSG_CHECKING(if personality LINUX32 can be set)
1303 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/personality.h>]], [[personality (PER_LINUX32)]])],
1304                emacs_cv_personality_linux32=yes,
1305                emacs_cv_personality_linux32=no)
1306 AC_MSG_RESULT($emacs_cv_personality_linux32)
1308 if test $emacs_cv_personality_linux32 = yes; then
1309   AC_DEFINE(HAVE_PERSONALITY_LINUX32, 1,
1310             [Define to 1 if personality LINUX32 can be set.])
1313 dnl On Solaris 8 there's a compilation warning for term.h because
1314 dnl it doesn't define `bool'.
1315 AC_CHECK_HEADERS(term.h, , , -)
1316 AC_HEADER_TIME
1317 AC_CHECK_DECLS([sys_siglist], [], [], [[#include <signal.h>
1318                                       ]])
1319 if test $ac_cv_have_decl_sys_siglist != yes; then
1320   # For Tru64, at least:
1321   AC_CHECK_DECLS([__sys_siglist], [], [], [[#include <signal.h>
1322                                           ]])
1323   if test $ac_cv_have_decl___sys_siglist = yes; then
1324     AC_DEFINE(sys_siglist, __sys_siglist,
1325               [Define to any substitute for sys_siglist.])
1326   fi
1328 AC_HEADER_SYS_WAIT
1330 dnl Check for speed_t typedef.
1331 AC_CACHE_CHECK(for speed_t, emacs_cv_speed_t,
1332   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <termios.h>]], [[speed_t x = 1;]])],
1333     emacs_cv_speed_t=yes, emacs_cv_speed_t=no)])
1334 if test $emacs_cv_speed_t = yes; then
1335   AC_DEFINE(HAVE_SPEED_T, 1,
1336            [Define to 1 if `speed_t' is declared by <termios.h>.])
1339 AC_CHECK_HEADERS_ONCE(sys/socket.h)
1340 AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT
1341 #if HAVE_SYS_SOCKET_H
1342 #include <sys/socket.h>
1343 #endif])
1344 AC_CHECK_HEADERS(ifaddrs.h, , , [AC_INCLUDES_DEFAULT
1345 #if HAVE_SYS_SOCKET_H
1346 #include <sys/socket.h>
1347 #endif])
1348 AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT
1349 #if HAVE_SYS_SOCKET_H
1350 #include <sys/socket.h>
1351 #endif])
1353 dnl checks for structure members
1354 AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr,
1355                   struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr,
1356                   struct ifreq.ifr_addr,
1357                   struct ifreq.ifr_addr.sa_len], , ,
1358                  [AC_INCLUDES_DEFAULT
1359 #if HAVE_SYS_SOCKET_H
1360 #include <sys/socket.h>
1361 #endif
1362 #if HAVE_NET_IF_H
1363 #include <net/if.h>
1364 #endif])
1366 dnl Check for endianness.
1367 dnl AC_C_BIGENDIAN is done by gnulib.
1369 dnl check for Make feature
1370 dnl AC_PROG_MAKE_SET is done by Automake.
1372 DEPFLAGS=
1373 MKDEPDIR=":"
1374 deps_frag=deps.mk
1375 dnl check for GNU Make if we have GCC and autodepend is on.
1376 if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
1377    AC_MSG_CHECKING([whether we are using GNU Make])
1378    HAVE_GNU_MAKE=no
1379    testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
1380    if test "x$testval" != x; then
1381       HAVE_GNU_MAKE=yes
1382    else
1383       ac_enable_autodepend=no
1384    fi
1385    AC_MSG_RESULT([$HAVE_GNU_MAKE])
1386    if test $HAVE_GNU_MAKE = yes; then
1387       AC_MSG_CHECKING([whether gcc understands -MMD -MF])
1388       SAVE_CFLAGS="$CFLAGS"
1389       CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
1390       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
1391       CFLAGS="$SAVE_CFLAGS"
1392       test -f deps.d || ac_enable_autodepend=no
1393       rm -rf deps.d
1394       AC_MSG_RESULT([$ac_enable_autodepend])
1395    fi
1396    if test $ac_enable_autodepend = yes; then
1397       DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
1398       ## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe.
1399       MKDEPDIR='${MKDIR_P} ${DEPDIR}'
1400       deps_frag=autodeps.mk
1401    fi
1403 deps_frag=$srcdir/src/$deps_frag
1404 AC_SUBST(MKDEPDIR)
1405 AC_SUBST(DEPFLAGS)
1406 AC_SUBST_FILE(deps_frag)
1409 lisp_frag=$srcdir/src/lisp.mk
1410 AC_SUBST_FILE(lisp_frag)
1413 dnl checks for operating system services
1414 AC_SYS_LONG_FILE_NAMES
1416 #### Choose a window system.
1418 ## We leave window_system equal to none if
1419 ## we end up building without one.  Any new window system should
1420 ## set window_system to an appropriate value and add objects to
1421 ## window-system-specific substs.
1423 window_system=none
1424 AC_PATH_X
1425 if test "$no_x" != yes; then
1426   window_system=x11
1429 LD_SWITCH_X_SITE_RPATH=
1430 if test "${x_libraries}" != NONE; then
1431   if test -n "${x_libraries}"; then
1432     LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
1433     LD_SWITCH_X_SITE_RPATH=-Wl,-rpath,`echo ${x_libraries} | sed -e "s/:/ -Wl,-rpath,/g"`
1434   fi
1435   x_default_search_path=""
1436   x_search_path=${x_libraries}
1437   if test -z "${x_search_path}"; then
1438     x_search_path=/usr/lib
1439   fi
1440   for x_library in `echo ${x_search_path}: | \
1441                     sed -e "s/:/ /g" -e p -e "s:/lib[[^ /]]* :/share :g"`; do
1442     x_search_path="\
1443 ${x_library}/X11/%L/%T/%N%C%S:\
1444 ${x_library}/X11/%l/%T/%N%C%S:\
1445 ${x_library}/X11/%T/%N%C%S:\
1446 ${x_library}/X11/%L/%T/%N%S:\
1447 ${x_library}/X11/%l/%T/%N%S:\
1448 ${x_library}/X11/%T/%N%S"
1449     if test x"${x_default_search_path}" = x; then
1450       x_default_search_path=${x_search_path}
1451     else
1452       x_default_search_path="${x_search_path}:${x_default_search_path}"
1453     fi
1454   done
1456 AC_SUBST(LD_SWITCH_X_SITE_RPATH)
1458 if test "${x_includes}" != NONE && test -n "${x_includes}"; then
1459   C_SWITCH_X_SITE="$isystem"`echo ${x_includes} | sed -e "s/:/ $isystem/g"`
1462 if test x"${x_includes}" = x; then
1463   bitmapdir=/usr/include/X11/bitmaps
1464 else
1465   # accumulate include directories that have X11 bitmap subdirectories
1466   bmd_acc="dummyval"
1467   for bmd in `echo ${x_includes} | sed -e "s/:/ /g"`; do
1468     if test -d "${bmd}/X11/bitmaps"; then
1469       bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps"
1470     fi
1471     if test -d "${bmd}/bitmaps"; then
1472       bmd_acc="${bmd_acc}:${bmd}/bitmaps"
1473     fi
1474   done
1475   if test ${bmd_acc} != "dummyval"; then
1476     bitmapdir=`echo ${bmd_acc} | sed -e "s/^dummyval://"`
1477   fi
1480 HAVE_NS=no
1481 NS_IMPL_COCOA=no
1482 NS_IMPL_GNUSTEP=no
1483 tmp_CPPFLAGS="$CPPFLAGS"
1484 tmp_CFLAGS="$CFLAGS"
1485 CPPFLAGS="$CPPFLAGS -x objective-c"
1486 CFLAGS="$CFLAGS -x objective-c"
1487 GNU_OBJC_CFLAGS=
1488 LIBS_GNUSTEP=
1489 if test "${with_ns}" != no; then
1490   if test "${opsys}" = darwin; then
1491      NS_IMPL_COCOA=yes
1492      ns_appdir=`pwd`/nextstep/Emacs.app
1493      ns_appbindir=${ns_appdir}/Contents/MacOS
1494      ns_appresdir=${ns_appdir}/Contents/Resources
1495      ns_appsrc=Cocoa/Emacs.base
1496   elif test -f $GNUSTEP_CONFIG_FILE; then
1497      NS_IMPL_GNUSTEP=yes
1498      ns_appdir=`pwd`/nextstep/Emacs.app
1499      ns_appbindir=${ns_appdir}
1500      ns_appresdir=${ns_appdir}/Resources
1501      ns_appsrc=GNUstep/Emacs.base
1502      dnl FIXME sourcing this several times in subshells seems inefficient.
1503      GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
1504      GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
1505      dnl I seemed to need these as well with GNUstep-startup 0.25.
1506      GNUSTEP_LOCAL_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_HEADERS)"
1507      GNUSTEP_LOCAL_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_LIBRARIES)"
1508      test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \
1509        GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}"
1510      test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \
1511        GNUSTEP_LOCAL_LIBRARIES="-L${GNUSTEP_LOCAL_LIBRARIES}"
1512      CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1513      CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1514      LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
1515      LIBS_GNUSTEP="-lgnustep-gui -lgnustep-base -lobjc -lpthread"
1516      dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1.
1517      dnl If they had chosen to either define it or not, we could have
1518      dnl just used AC_CHECK_DECL here.
1519      AC_CACHE_CHECK(if GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS,
1520        emacs_cv_objc_exceptions,
1521 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <GNUstepBase/GSConfig.h>]],
1522 [[#if defined BASE_NATIVE_OBJC_EXCEPTIONS && BASE_NATIVE_OBJC_EXCEPTIONS > 0
1524 #else
1525 fail;
1526 #endif]])], emacs_cv_objc_exceptions=yes, emacs_cv_objc_exceptions=no ) )
1527      if test $emacs_cv_objc_exceptions = yes; then
1528        dnl _NATIVE_OBJC_EXCEPTIONS is used by the GNUstep headers.
1529        AC_DEFINE(_NATIVE_OBJC_EXCEPTIONS, 1,
1530          [Define if GNUstep uses ObjC exceptions.])
1531        GNU_OBJC_CFLAGS="-fobjc-exceptions"
1532      fi
1533   fi
1535   dnl This is only used while we test the NS headers, it gets reset below.
1536   CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS"
1538   AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
1539                   [AC_MSG_ERROR([`--with-ns' was specified, but the include
1540   files are missing or cannot be compiled.])])
1542   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AppKit/AppKit.h>],
1543                                      [
1544 #ifdef MAC_OS_X_VERSION_MAX_ALLOWED
1545 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1040
1546  ; /* OK */
1547 #else
1548 #error "OSX 10.4 or newer required"
1549 #endif
1550 #endif
1551                     ])],
1552                     ns_osx_have_104=yes,
1553                     ns_osx_have_104=no)
1554   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <Foundation/NSObjCRuntime.h>],
1555                                      [NSInteger i;])],
1556                     ns_have_nsinteger=yes,
1557                     ns_have_nsinteger=no)
1558   if test $ns_osx_have_104 = no; then
1559      AC_MSG_ERROR([`OSX 10.4 or newer is required']);
1560   fi
1561   if test $ns_have_nsinteger = yes; then
1562     AC_DEFINE(NS_HAVE_NSINTEGER, 1, [Define to 1 if `NSInteger' is defined.])
1563   fi
1566 AC_SUBST(LIBS_GNUSTEP)
1568 INSTALL_ARCH_INDEP_EXTRA=install-etc
1569 ns_self_contained=no
1570 NS_OBJ=
1571 NS_OBJC_OBJ=
1572 if test "${HAVE_NS}" = yes; then
1573   if test "$with_toolkit_scroll_bars" = "no"; then
1574     AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for Nextstep.])
1575   fi
1577   window_system=nextstep
1578   # set up packaging dirs
1579   if test "${EN_NS_SELF_CONTAINED}" = yes; then
1580      ns_self_contained=yes
1581      prefix=${ns_appresdir}
1582      exec_prefix=${ns_appbindir}
1583      dnl This one isn't really used, only archlibdir is.
1584      libexecdir="\${ns_appbindir}/libexec"
1585      archlibdir="\${ns_appbindir}/libexec"
1586      docdir="\${ns_appresdir}/etc"
1587      etcdir="\${ns_appresdir}/etc"
1588      dnl FIXME maybe set datarootdir instead.
1589      dnl That would also get applications, icons, man.
1590      infodir="\${ns_appresdir}/info"
1591      mandir="\${ns_appresdir}/man"
1592      lispdir="\${ns_appresdir}/lisp"
1593      leimdir="\${ns_appresdir}/leim"
1594      INSTALL_ARCH_INDEP_EXTRA=
1595   fi
1596   NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o"
1598 CFLAGS="$tmp_CFLAGS"
1599 CPPFLAGS="$tmp_CPPFLAGS"
1600 AC_SUBST(INSTALL_ARCH_INDEP_EXTRA)
1601 AC_SUBST(ns_self_contained)
1602 AC_SUBST(NS_OBJ)
1603 AC_SUBST(NS_OBJC_OBJ)
1605 HAVE_W32=no
1606 W32_OBJ=
1607 W32_LIBS=
1608 EMACSRES=
1609 CLIENTRES=
1610 CLIENTW=
1611 W32_RES_LINK=
1612 EMACS_MANIFEST=
1613 if test "${with_w32}" != no; then
1614   case "${opsys}" in
1615     cygwin)
1616       AC_CHECK_HEADER([windows.h], [HAVE_W32=yes],
1617              [AC_MSG_ERROR([`--with-w32' was specified, but windows.h
1618                    cannot be found.])])
1619     ;;
1620     mingw32)
1621     ## Using --with-w32 with MinGW is a no-op, but we allow it.
1622     ;;
1623     *)
1624       AC_MSG_ERROR([Using w32 with an autotools build is only supported for Cygwin and MinGW32.])
1625     ;;
1626   esac
1629 if test "${opsys}" = "mingw32"; then
1630   AC_MSG_CHECKING([whether Windows API headers are recent enough])
1631   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1632      #include <windows.h>
1633      #include <usp10.h>]],
1634    [[void test(PIMAGE_NT_HEADERS pHeader)
1635      {PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader);}]])],
1636    [emacs_cv_w32api=yes
1637     HAVE_W32=yes],
1638    emacs_cv_w32api=no)
1639   AC_MSG_RESULT($emacs_cv_w32api)
1640   if test "${emacs_cv_w32api}" = "no"; then
1641     AC_MSG_ERROR([the Windows API headers are too old to support this build.])
1642   fi
1645 FIRSTFILE_OBJ=
1646 NTDIR=
1647 LIBS_ECLIENT=
1648 LIB_WSOCK32=
1649 NTLIB=
1650 CM_OBJ="cm.o"
1651 XARGS_LIMIT=
1652 if test "${HAVE_W32}" = "yes"; then
1653   AC_DEFINE(HAVE_NTGUI, 1, [Define to use native MS Windows GUI.])
1654   AC_CHECK_TOOL(WINDRES, [windres],
1655                 [AC_MSG_ERROR([No resource compiler found.])])
1656   W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o"
1657   W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o"
1658   EMACSRES="emacs.res"
1659   case "$canonical" in
1660     x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;;
1661     *) EMACS_MANIFEST="emacs-x86.manifest" ;;
1662   esac
1663   if test "${opsys}" = "cygwin"; then
1664     W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32"
1665     W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool"
1666     # Tell the linker that emacs.res is an object (which we compile from
1667     # the rc file), not a linker script.
1668     W32_RES_LINK="-Wl,emacs.res"
1669   else
1670     W32_OBJ="$W32_OBJ w32.o w32console.o w32heap.o w32inevt.o w32proc.o"
1671     W32_OBJ="$W32_OBJ w32notify.o"
1672     W32_LIBS="$W32_LIBS -lwinmm -lgdi32 -lcomdlg32"
1673     W32_LIBS="$W32_LIBS -lmpr -lwinspool -lole32 -lcomctl32 -lusp10"
1674     W32_RES_LINK="\$(EMACSRES)"
1675     CLIENTRES="emacsclient.res"
1676     CLIENTW="emacsclientw\$(EXEEXT)"
1677     FIRSTFILE_OBJ=firstfile.o
1678     NTDIR=nt
1679     CM_OBJ=
1680     LIBS_ECLIENT="-lcomctl32"
1681     LIB_WSOCK32="-lwsock32"
1682     NTLIB="ntlib.$ac_objext"
1683     XARGS_LIMIT="-s 10000"
1684   fi
1686 AC_SUBST(W32_OBJ)
1687 AC_SUBST(W32_LIBS)
1688 AC_SUBST(EMACSRES)
1689 AC_SUBST(EMACS_MANIFEST)
1690 AC_SUBST(CLIENTRES)
1691 AC_SUBST(CLIENTW)
1692 AC_SUBST(W32_RES_LINK)
1693 AC_SUBST(FIRSTFILE_OBJ)
1694 AC_SUBST(NTDIR)
1695 AC_SUBST(CM_OBJ)
1696 AC_SUBST(LIBS_ECLIENT)
1697 AC_SUBST(LIB_WSOCK32)
1698 AC_SUBST(NTLIB)
1699 AC_SUBST(XARGS_LIMIT)
1701 if test "${HAVE_W32}" = "yes"; then
1702   window_system=w32
1703   with_xft=no
1706 ## $window_system is now set to the window system we will
1707 ## ultimately use.
1709 term_header=
1710 HAVE_X_WINDOWS=no
1711 HAVE_X11=no
1712 USE_X_TOOLKIT=none
1714 case "${window_system}" in
1715   x11 )
1716     HAVE_X_WINDOWS=yes
1717     HAVE_X11=yes
1718     term_header=xterm.h
1719     case "${with_x_toolkit}" in
1720       athena | lucid ) USE_X_TOOLKIT=LUCID ;;
1721       motif ) USE_X_TOOLKIT=MOTIF ;;
1722       gtk ) with_gtk=yes
1723             term_header=gtkutil.h
1724 dnl Don't set this for GTK.  A lot of tests below assumes Xt when
1725 dnl USE_X_TOOLKIT is set.
1726             USE_X_TOOLKIT=none ;;
1727       gtk2 ) with_gtk2=yes
1728              term_header=gtkutil.h
1729              USE_X_TOOLKIT=none ;;
1730       gtk3 ) with_gtk3=yes
1731              term_header=gtkutil.h
1732              USE_X_TOOLKIT=none ;;
1733       no ) USE_X_TOOLKIT=none ;;
1734 dnl If user did not say whether to use a toolkit, make this decision later:
1735 dnl use the toolkit if we have gtk, or X11R5 or newer.
1736       * ) USE_X_TOOLKIT=maybe ;;
1737     esac
1738   ;;
1739   nextstep )
1740     term_header=nsterm.h
1741   ;;
1742   w32 )
1743     term_header=w32term.h
1744   ;;
1745 esac
1747 if test "$window_system" = none && test "X$with_x" != "Xno"; then
1748    AC_CHECK_PROG(HAVE_XSERVER, X, true, false)
1749    if test "$HAVE_XSERVER" = true ||
1750       test -n "$DISPLAY" ||
1751       test "`echo /usr/lib/libX11.*`" != "/usr/lib/libX11.*"; then
1752         AC_MSG_ERROR([You seem to be running X, but no X development libraries
1753 were found.  You should install the relevant development files for X
1754 and for the toolkit you want, such as Gtk+, Lesstif or Motif.  Also make
1755 sure you have development files for image handling, i.e.
1756 tiff, gif, jpeg, png and xpm.
1757 If you are sure you want Emacs compiled without X window support, pass
1758   --without-x
1759 to configure.])
1760    fi
1763 ### If we're using X11, we should use the X menu package.
1764 HAVE_MENUS=no
1765 case ${HAVE_X11} in
1766   yes ) HAVE_MENUS=yes ;;
1767 esac
1769 # Does the opsystem file prohibit the use of the GNU malloc?
1770 # Assume not, until told otherwise.
1771 GNU_MALLOC=yes
1773 AC_CACHE_CHECK(
1774   [whether malloc is Doug Lea style],
1775   [emacs_cv_var_doug_lea_malloc],
1776   [AC_LINK_IFELSE(
1777      [AC_LANG_PROGRAM(
1778         [[#include <malloc.h>
1779           static void hook (void) {}]],
1780         [[malloc_set_state (malloc_get_state ());
1781           __after_morecore_hook = hook;
1782           __malloc_initialize_hook = hook;]])],
1783      [emacs_cv_var_doug_lea_malloc=yes],
1784      [emacs_cv_var_doug_lea_malloc=no])])
1785 doug_lea_malloc=$emacs_cv_var_doug_lea_malloc
1788 dnl See comments in aix4-2.h about maybe using system malloc there.
1789 system_malloc=no
1790 case "$opsys" in
1791   ## darwin ld insists on the use of malloc routines in the System framework.
1792   darwin|sol2-10) system_malloc=yes ;;
1793 esac
1795 if test "${system_malloc}" = "yes"; then
1796   AC_DEFINE(SYSTEM_MALLOC, 1, [Define to use system malloc.])
1797   GNU_MALLOC=no
1798   GNU_MALLOC_reason="
1799     (The GNU allocators don't work with this system configuration.)"
1800   GMALLOC_OBJ=
1801   VMLIMIT_OBJ=
1802 else
1803   test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
1804   VMLIMIT_OBJ=vm-limit.o
1806   AC_CHECK_HEADERS([sys/vlimit.h])
1807   AC_CACHE_CHECK([for data_start], [emacs_cv_data_start],
1808     [AC_LINK_IFELSE(
1809        [AC_LANG_PROGRAM(
1810          [[extern char data_start[]; char ch;]],
1811          [[return data_start < &ch;]])],
1812        [emacs_cv_data_start=yes],
1813        [emacs_cv_data_start=no])])
1814   if test $emacs_cv_data_start = yes; then
1815     AC_DEFINE([HAVE_DATA_START], 1,
1816       [Define to 1 if data_start is the address of the start
1817        of the main data segment.])
1818   fi
1820 AC_SUBST(GMALLOC_OBJ)
1821 AC_SUBST(VMLIMIT_OBJ)
1823 if test "$doug_lea_malloc" = "yes" ; then
1824   if test "$GNU_MALLOC" = yes ; then
1825     GNU_MALLOC_reason="
1826       (Using Doug Lea's new malloc from the GNU C Library.)"
1827   fi
1828   AC_DEFINE(DOUG_LEA_MALLOC, 1,
1829             [Define to 1 if you are using the GNU C Library.])
1831   ## Use mmap directly for allocating larger buffers.
1832   ## FIXME this comes from src/s/{gnu,gnu-linux}.h:
1833   ## #ifdef DOUG_LEA_MALLOC; #undef REL_ALLOC; #endif
1834   ## Does the AC_FUNC_MMAP test below make this check unnecessary?
1835   case "$opsys" in
1836     gnu*) REL_ALLOC=no ;;
1837   esac
1840 if test x"${REL_ALLOC}" = x; then
1841   REL_ALLOC=${GNU_MALLOC}
1844 use_mmap_for_buffers=no
1845 case "$opsys" in
1846   cygwin|freebsd|irix6-5) use_mmap_for_buffers=yes ;;
1847 esac
1849 AC_FUNC_MMAP
1850 if test $use_mmap_for_buffers = yes; then
1851   AC_DEFINE(USE_MMAP_FOR_BUFFERS, 1, [Define to use mmap to allocate buffer text.])
1852   REL_ALLOC=no
1855 LIBS="$LIBS_SYSTEM $LIBS"
1857 dnl If found, this defines HAVE_LIBDNET, which m/pmax.h checks,
1858 dnl and also adds -ldnet to LIBS, which Autoconf uses for checks.
1859 AC_CHECK_LIB(dnet, dnet_ntoa)
1860 dnl This causes -lresolv to get used in subsequent tests,
1861 dnl which causes failures on some systems such as HPUX 9.
1862 dnl AC_CHECK_LIB(resolv, gethostbyname)
1864 dnl FIXME replace main with a function we actually want from this library.
1865 AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
1867 dnl Check if pthreads is available.
1868 LIB_PTHREAD=
1869 AC_CHECK_HEADERS_ONCE(pthread.h)
1870 if test "$ac_cv_header_pthread_h"; then
1871   dnl gmalloc.c uses pthread_atfork, which is not available on older-style
1872   dnl hosts such as MirBSD 10, so test for pthread_atfork instead of merely
1873   dnl testing for pthread_self if Emacs uses gmalloc.c.
1874   if test "$GMALLOC_OBJ" = gmalloc.o; then
1875     emacs_pthread_function=pthread_atfork
1876   else
1877     emacs_pthread_function=pthread_self
1878   fi
1879   AC_CHECK_LIB(pthread, $emacs_pthread_function, HAVE_PTHREAD=yes)
1881 if test "$HAVE_PTHREAD" = yes; then
1882   case "${canonical}" in
1883     *-hpux*) ;;
1884     *) LIB_PTHREAD="-lpthread"
1885        LIBS="$LIB_PTHREAD $LIBS" ;;
1886   esac
1887   AC_DEFINE(HAVE_PTHREAD, 1, [Define to 1 if you have pthread (-lpthread).])
1889 AC_SUBST([LIB_PTHREAD])
1891 AC_CHECK_LIB(pthreads, cma_open)
1893 ## Note: when using cpp in s/aix4.2.h, this definition depended on
1894 ## HAVE_LIBPTHREADS.  That was not defined earlier in configure when
1895 ## the system file was sourced.  Hence the value of LIBS_SYSTEM
1896 ## added to LIBS in configure would never contain the pthreads part,
1897 ## but the value used in Makefiles might.  FIXME?
1899 ## -lpthreads seems to be necessary for Xlib in X11R6, and should
1900 ## be harmless on older versions of X where it happens to exist.
1901 test "$opsys" = "aix4-2" && \
1902   test $ac_cv_lib_pthreads_cma_open = yes && \
1903   LIBS_SYSTEM="$LIBS_SYSTEM -lpthreads"
1905 dnl Check for need for bigtoc support on IBM AIX
1907 case ${host_os} in
1908 aix*)
1909   AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
1910     case $GCC in
1911     yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
1912     *) gdb_cv_bigtoc=-bbigtoc ;;
1913     esac
1915     LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
1916     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int i;]])], [], [gdb_cv_bigtoc=])
1917   ])
1918   ;;
1919 esac
1921 # Change CFLAGS and CPPFLAGS temporarily so that C_SWITCH_X_SITE gets
1922 # used for the tests that follow.  We set them back to REAL_CFLAGS and
1923 # REAL_CPPFLAGS later on.
1925 REAL_CFLAGS="$CFLAGS"
1926 REAL_CPPFLAGS="$CPPFLAGS"
1928 if test "${HAVE_X11}" = "yes"; then
1929   DEFS="$C_SWITCH_X_SITE $DEFS"
1930   LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
1931   LIBS="-lX11 $LIBS"
1932   CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
1933   CPPFLAGS="$C_SWITCH_X_SITE $CPPFLAGS"
1935   # On Solaris, arrange for LD_RUN_PATH to point to the X libraries for tests.
1936   # This is handled by LD_SWITCH_X_SITE_RPATH during the real build,
1937   # but it's more convenient here to set LD_RUN_PATH since this
1938   # also works on hosts that don't understand LD_SWITCH_X_SITE_RPATH.
1939   if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
1940     LD_RUN_PATH=$x_libraries${LD_RUN_PATH+:}$LD_RUN_PATH
1941     export LD_RUN_PATH
1942   fi
1944   if test "${opsys}" = "gnu-linux"; then
1945     AC_MSG_CHECKING(whether X on GNU/Linux needs -b to link)
1946     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
1947      [[XOpenDisplay ("foo");]])],
1948      [xgnu_linux_first_failure=no],
1949      [xgnu_linux_first_failure=yes])
1950     if test "${xgnu_linux_first_failure}" = "yes"; then
1951       OLD_LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE"
1952       OLD_C_SWITCH_X_SITE="$C_SWITCH_X_SITE"
1953       OLD_CPPFLAGS="$CPPFLAGS"
1954       OLD_LIBS="$LIBS"
1955       LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
1956       C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
1957       CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
1958       LIBS="$LIBS -b i486-linuxaout"
1959       AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
1960        [[XOpenDisplay ("foo");]])],
1961        [xgnu_linux_second_failure=no],
1962        [xgnu_linux_second_failure=yes])
1963       if test "${xgnu_linux_second_failure}" = "yes"; then
1964         # If we get the same failure with -b, there is no use adding -b.
1965         # So take it out.  This plays safe.
1966         LD_SWITCH_X_SITE="$OLD_LD_SWITCH_X_SITE"
1967         C_SWITCH_X_SITE="$OLD_C_SWITCH_X_SITE"
1968         CPPFLAGS="$OLD_CPPFLAGS"
1969         LIBS="$OLD_LIBS"
1970         AC_MSG_RESULT(no)
1971       else
1972         AC_MSG_RESULT(yes)
1973       fi
1974     else
1975       AC_MSG_RESULT(no)
1976     fi
1977   fi
1979   # Reportedly, some broken Solaris systems have XKBlib.h but are missing
1980   # header files included from there.
1981   AC_MSG_CHECKING(for Xkb)
1982   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>
1983 #include <X11/XKBlib.h>]],
1984         [[XkbDescPtr kb = XkbGetKeyboard (0, XkbAllComponentsMask, XkbUseCoreKbd);]])],
1985         emacs_xkb=yes, emacs_xkb=no)
1986   AC_MSG_RESULT($emacs_xkb)
1987   if test $emacs_xkb = yes; then
1988     AC_DEFINE(HAVE_XKB, 1, [Define to 1 if you have the Xkb extension.])
1989   fi
1991   AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
1992 XScreenNumberOfScreen)
1995 if test "${window_system}" = "x11"; then
1996   AC_MSG_CHECKING(X11 version 6)
1997   AC_CACHE_VAL(emacs_cv_x11_version_6,
1998   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]],
1999 [[#if XlibSpecificationRelease < 6
2000 fail;
2001 #endif
2002 ]])], emacs_cv_x11_version_6=yes, emacs_cv_x11_version_6=no)])
2003   if test $emacs_cv_x11_version_6 = yes; then
2004     AC_MSG_RESULT(6 or newer)
2005     AC_DEFINE(HAVE_X11R6, 1,
2006               [Define to 1 if you have the X11R6 or newer version of Xlib.])
2007     AC_DEFINE(HAVE_X_I18N, 1, [Define if you have usable i18n support.])
2008     ## inoue@ainet.or.jp says Solaris has a bug related to X11R6-style
2009     ## XIM support.
2010     case "$opsys" in
2011       sol2-*) : ;;
2012       *) AC_DEFINE(HAVE_X11R6_XIM, 1,
2013            [Define if you have usable X11R6-style XIM support.])
2014          ;;
2015     esac
2016   else
2017     AC_MSG_RESULT(before 6)
2018   fi
2022 ### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
2023 HAVE_RSVG=no
2024 if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" = "mingw32"; then
2025   if test "${with_rsvg}" != "no"; then
2026     RSVG_REQUIRED=2.11.0
2027     RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
2029     PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, HAVE_RSVG=yes, :)
2030     AC_SUBST(RSVG_CFLAGS)
2031     AC_SUBST(RSVG_LIBS)
2033     if test $HAVE_RSVG = yes; then
2034       AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
2035       CFLAGS="$CFLAGS $RSVG_CFLAGS"
2036       LIBS="$RSVG_LIBS $LIBS"
2037     fi
2038   fi
2041 HAVE_IMAGEMAGICK=no
2042 if test "${HAVE_X11}" = "yes"; then
2043   if test "${with_imagemagick}" != "no"; then
2044     ## 6.2.8 is the earliest version known to work, but earlier versions
2045     ## might work - let us know if you find one.
2046     ## 6.0.7 does not work.  See bug#7955.
2047     ## 6.8.2 makes Emacs crash; see Bug#13867.
2048     IMAGEMAGICK_MODULE="Wand >= 6.2.8 Wand != 6.8.2"
2049     PKG_CHECK_MODULES(IMAGEMAGICK, $IMAGEMAGICK_MODULE, HAVE_IMAGEMAGICK=yes, :)
2050     AC_SUBST(IMAGEMAGICK_CFLAGS)
2051     AC_SUBST(IMAGEMAGICK_LIBS)
2053     if test $HAVE_IMAGEMAGICK = yes; then
2054       AC_DEFINE(HAVE_IMAGEMAGICK, 1, [Define to 1 if using imagemagick.])
2055       CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
2056       LIBS="$IMAGEMAGICK_LIBS $LIBS"
2057       AC_CHECK_FUNCS(MagickExportImagePixels MagickMergeImageLayers)
2058     fi
2059   fi
2063 HAVE_GTK=no
2064 GTK_OBJ=
2065 check_gtk2=no
2066 gtk3_pkg_errors=
2067 if test "${opsys}" != "mingw32"; then
2068   if test "${with_gtk3}" = "yes" || test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
2069     GLIB_REQUIRED=2.28
2070     GTK_REQUIRED=3.0
2071     GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
2073     dnl Checks for libraries.
2074     PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
2075     if test "$pkg_check_gtk" = "no" && test "$with_gtk3" = "yes"; then
2076        AC_MSG_ERROR($GTK_PKG_ERRORS)
2077     fi
2078     if test "$pkg_check_gtk" = "yes"; then
2079        AC_DEFINE(HAVE_GTK3, 1, [Define to 1 if using GTK 3 or later.])
2080        GTK_OBJ=emacsgtkfixed.o
2081        term_header=gtkutil.h
2082        USE_GTK_TOOLKIT="GTK3"
2083        if test "x$ac_enable_gtk_deprecation_warnings" = x; then
2084           GTK_CFLAGS="$GTK_CFLAGS -DGDK_DISABLE_DEPRECATION_WARNINGS"
2085           GTK_CFLAGS="$GTK_CFLAGS -DGLIB_DISABLE_DEPRECATION_WARNINGS"
2086        fi
2087     else
2088        check_gtk2=yes
2089        gtk3_pkg_errors="$GTK_PKG_ERRORS "
2090     fi
2091   fi
2093   if test "${with_gtk2}" = "yes" || test "$check_gtk2" = "yes"; then
2094     GLIB_REQUIRED=2.10
2095     GTK_REQUIRED=2.10
2096     GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
2098     dnl Checks for libraries.
2099     PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
2100     if test "$pkg_check_gtk" = "no" &&
2101        { test "$with_gtk" = yes || test "$with_gtk2" = "yes"; }
2102     then
2103       AC_MSG_ERROR($gtk3_pkg_errors$GTK_PKG_ERRORS)
2104     fi
2105     test "$pkg_check_gtk" = "yes" && USE_GTK_TOOLKIT="GTK2"
2106   fi
2109 if test x"$pkg_check_gtk" = xyes; then
2111   AC_SUBST(GTK_CFLAGS)
2112   AC_SUBST(GTK_LIBS)
2113   C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
2114   CFLAGS="$CFLAGS $GTK_CFLAGS"
2115   LIBS="$GTK_LIBS $LIBS"
2116   dnl Try to compile a simple GTK program.
2117   GTK_COMPILES=no
2118   AC_CHECK_FUNCS(gtk_main, GTK_COMPILES=yes)
2119   if test "${GTK_COMPILES}" != "yes"; then
2120     if test "$USE_X_TOOLKIT" != "maybe"; then
2121       AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?]);
2122     fi
2123   else
2124     HAVE_GTK=yes
2125     AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
2126     GTK_OBJ="gtkutil.o $GTK_OBJ"
2127     USE_X_TOOLKIT=none
2128     if "$PKG_CONFIG" --atleast-version=2.10 gtk+-2.0; then
2129       :
2130     else
2131       AC_MSG_WARN([[Your version of Gtk+ will have problems with
2132        closing open displays.  This is no problem if you just use
2133        one display, but if you use more than one and close one of them
2134        Emacs may crash.]])
2135       sleep 3
2136     fi
2137   fi
2140 AC_SUBST(GTK_OBJ)
2143 if test "${HAVE_GTK}" = "yes"; then
2145   dnl  GTK scrollbars resemble toolkit scrollbars a lot, so to avoid
2146   dnl  a lot if #ifdef:s, say we have toolkit scrollbars.
2147   if test "$with_toolkit_scroll_bars" != no; then
2148     with_toolkit_scroll_bars=yes
2149   fi
2151   dnl  Check if we have the old file selection dialog declared and
2152   dnl  in the link library.  In 2.x it may be in the library,
2153   dnl  but not declared if deprecated featured has been selected out.
2154   dnl  AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION.
2155   HAVE_GTK_FILE_SELECTION=no
2156   AC_CHECK_DECL(GTK_TYPE_FILE_SELECTION, HAVE_GTK_FILE_SELECTION=yes,
2157                    HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT
2158 #include <gtk/gtk.h>])
2159   if test "$HAVE_GTK_FILE_SELECTION" = yes; then
2160     AC_CHECK_FUNCS(gtk_file_selection_new)
2161   fi
2163   dnl Same as above for gtk_handle_box.
2164   HAVE_GTK_HANDLE_BOX=no
2165   AC_CHECK_DECL(GTK_TYPE_HANDLE_BOX, HAVE_GTK_HANDLE_BOX=yes,
2166                    HAVE_GTK_HANDLE_BOX=no, [AC_INCLUDES_DEFAULT
2167 #include <gtk/gtk.h>])
2168   if test "$HAVE_GTK_HANDLE_BOX" = yes; then
2169     AC_CHECK_FUNCS(gtk_handle_box_new)
2170   fi
2172   dnl Same as above for gtk_tearoff_menu_item.
2173   HAVE_GTK_TEAROFF_MENU_ITEM=no
2174   AC_CHECK_DECL(GTK_TYPE_TEAROFF_MENU_ITEM, HAVE_GTK_TEAROFF_MENU_ITEM=yes,
2175                    HAVE_GTK_TEAROFF_MENU_ITEM=no, [AC_INCLUDES_DEFAULT
2176 #include <gtk/gtk.h>])
2177   if test "$HAVE_GTK_TEAROFF_MENU_ITEM" = yes; then
2178     AC_CHECK_FUNCS(gtk_tearoff_menu_item_new)
2179   fi
2181   dnl Check for functions introduced in 2.14 and later.
2182   AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \
2183                  gtk_dialog_get_action_area gtk_widget_get_sensitive \
2184                  gtk_widget_get_mapped gtk_adjustment_get_page_size \
2185                  gtk_orientable_set_orientation \
2186                  gtk_window_set_has_resize_grip)
2188  term_header=gtkutil.h
2191 dnl D-Bus has been tested under GNU/Linux only.  Must be adapted for
2192 dnl other platforms.
2193 HAVE_DBUS=no
2194 DBUS_OBJ=
2195 if test "${with_dbus}" = "yes"; then
2196    PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0, HAVE_DBUS=yes, HAVE_DBUS=no)
2197    if test "$HAVE_DBUS" = yes; then
2198      LIBS="$LIBS $DBUS_LIBS"
2199      AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
2200      dnl dbus_watch_get_unix_fd has been introduced in D-Bus 1.1.1.
2201      dnl dbus_type_is_valid and dbus_validate_* have been introduced in
2202      dnl D-Bus 1.5.12.
2203      AC_CHECK_FUNCS(dbus_watch_get_unix_fd \
2204                     dbus_type_is_valid \
2205                     dbus_validate_bus_name \
2206                     dbus_validate_path \
2207                     dbus_validate_interface \
2208                     dbus_validate_member)
2209      DBUS_OBJ=dbusbind.o
2210    fi
2212 AC_SUBST(DBUS_OBJ)
2214 dnl GSettings has been tested under GNU/Linux only.
2215 HAVE_GSETTINGS=no
2216 if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then
2217    PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.26, HAVE_GSETTINGS=yes, HAVE_GSETTINGS=no)
2218    if test "$HAVE_GSETTINGS" = "yes"; then
2219       AC_DEFINE(HAVE_GSETTINGS, 1, [Define to 1 if using GSettings.])
2220       SETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
2221       SETTINGS_LIBS="$GSETTINGS_LIBS"
2222    fi
2225 dnl GConf has been tested under GNU/Linux only.
2226 dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
2227 HAVE_GCONF=no
2228 if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
2229    PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
2230    if test "$HAVE_GCONF" = yes; then
2231       AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
2232       dnl Newer GConf doesn't link with g_objects, so this is not defined.
2233       SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GCONF_CFLAGS"
2234       SETTINGS_LIBS="$SETTINGS_LIBS $GCONF_LIBS"
2235    fi
2238 if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then
2239     PKG_CHECK_MODULES(GOBJECT, gobject-2.0 >= 2.0, HAVE_GOBJECT=yes, HAVE_GOBJECT=no)
2240     if test "$HAVE_GOBJECT" = "yes"; then
2241        SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GOBJECT_CFLAGS"
2242        SETTINGS_LIBS="$SETTINGS_LIBS $GOBJECT_LIBS"
2243     fi
2244     SAVE_CFLAGS="$CFLAGS"
2245     SAVE_LIBS="$LIBS"
2246     CFLAGS="$SETTINGS_CFLAGS $CFLAGS"
2247     LIBS="$SETTINGS_LIBS $LIBS"
2248     AC_CHECK_FUNCS([g_type_init])
2249     CFLAGS="$SAVE_CFLAGS"
2250     LIBS="$SAVE_LIBS"
2252 AC_SUBST(SETTINGS_CFLAGS)
2253 AC_SUBST(SETTINGS_LIBS)
2256 dnl SELinux is available for GNU/Linux only.
2257 HAVE_LIBSELINUX=no
2258 LIBSELINUX_LIBS=
2259 if test "${with_selinux}" = "yes"; then
2260    AC_CHECK_LIB([selinux], [lgetfilecon], HAVE_LIBSELINUX=yes, HAVE_LIBSELINUX=no)
2261    if test "$HAVE_LIBSELINUX" = yes; then
2262       AC_DEFINE(HAVE_LIBSELINUX, 1, [Define to 1 if using SELinux.])
2263       LIBSELINUX_LIBS=-lselinux
2264    fi
2266 AC_SUBST(LIBSELINUX_LIBS)
2268 HAVE_GNUTLS=no
2269 HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY=no
2270 if test "${with_gnutls}" = "yes" ; then
2271   PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no)
2272   if test "${HAVE_GNUTLS}" = "yes"; then
2273     AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
2274   fi
2276   OLD_CFLAGS=$CFLAGS
2277   OLD_LIBS=$LIBS
2278   CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
2279   LIBS="$LIBGNUTLS_LIBS $LIBS"
2280   AC_CHECK_FUNCS(gnutls_certificate_set_verify_function, HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY=yes)
2282   if test "${HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY}" = "yes"; then
2283     AC_DEFINE(HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY, 1, [Define if using GnuTLS certificate verification callbacks.])
2284   fi
2286   # Windows loads GnuTLS dynamically
2287   if test "${opsys}" = "mingw32"; then
2288     CFLAGS=$OLD_CFLAGS
2289     LIBS=$OLD_LIBS
2290     LIBGNUTLS_LIBS=
2291   fi
2294 AC_SUBST(LIBGNUTLS_LIBS)
2295 AC_SUBST(LIBGNUTLS_CFLAGS)
2297 dnl inotify is only available on GNU/Linux.
2298 if test "${with_inotify}" = "yes"; then
2299    AC_CHECK_HEADERS(sys/inotify.h)
2300    if test "$ac_cv_header_sys_inotify_h" = yes ; then
2301      AC_CHECK_FUNC(inotify_init1)
2302    fi
2304 if test "$ac_cv_func_inotify_init1" = yes; then
2305   AC_DEFINE(HAVE_INOTIFY, 1, [Define to 1 to use inotify.])
2308 dnl Do not put whitespace before the #include statements below.
2309 dnl Older compilers (eg sunos4 cc) choke on it.
2310 HAVE_XAW3D=no
2311 LUCID_LIBW=
2312 if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
2313   if test "$with_xaw3d" != no; then
2314     AC_CACHE_VAL(emacs_cv_xaw3d,
2315     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2316 #include <X11/Intrinsic.h>
2317 #include <X11/Xaw3d/Simple.h>]],
2318       [[]])],
2319       [AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb,
2320                     emacs_cv_xaw3d=yes, emacs_cv_xaw3d=no)],
2321       emacs_cv_xaw3d=no)])
2322   else
2323     emacs_cv_xaw3d=no
2324   fi
2325   if test $emacs_cv_xaw3d = yes; then
2326     AC_MSG_CHECKING(for xaw3d)
2327     AC_MSG_RESULT([yes; using Lucid toolkit])
2328     USE_X_TOOLKIT=LUCID
2329     HAVE_XAW3D=yes
2330     LUCID_LIBW=-lXaw3d
2331     AC_DEFINE(HAVE_XAW3D, 1,
2332               [Define to 1 if you have the Xaw3d library (-lXaw3d).])
2333   else
2334     AC_MSG_CHECKING(for xaw3d)
2335     AC_MSG_RESULT(no)
2336     AC_MSG_CHECKING(for libXaw)
2337     AC_CACHE_VAL(emacs_cv_xaw,
2338     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2339 #include <X11/Intrinsic.h>
2340 #include <X11/Xaw/Simple.h>]],
2341       [[]])],
2342       emacs_cv_xaw=yes,
2343       emacs_cv_xaw=no)])
2344     if test $emacs_cv_xaw = yes; then
2345       AC_MSG_RESULT([yes; using Lucid toolkit])
2346       USE_X_TOOLKIT=LUCID
2347       LUCID_LIBW=-lXaw
2348     elif test x"${USE_X_TOOLKIT}" = xLUCID; then
2349       AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
2350     else
2351       AC_MSG_ERROR([No X toolkit could be found.
2352 If you are sure you want Emacs compiled without an X toolkit, pass
2353   --with-x-toolkit=no
2354 to configure.  Otherwise, install the development libraries for the toolkit
2355 that you want to use (e.g. Gtk+) and re-run configure.])
2356     fi
2357   fi
2360 X_TOOLKIT_TYPE=$USE_X_TOOLKIT
2362 LIBXTR6=
2363 if test "${USE_X_TOOLKIT}" != "none"; then
2364   AC_MSG_CHECKING(X11 toolkit version)
2365   AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
2366   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Intrinsic.h>]],
2367 [[#if XtSpecificationRelease < 6
2368 fail;
2369 #endif
2370 ]])], emacs_cv_x11_toolkit_version_6=yes, emacs_cv_x11_toolkit_version_6=no)])
2371   HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6
2372   if test $emacs_cv_x11_toolkit_version_6 = yes; then
2373     AC_MSG_RESULT(6 or newer)
2374     AC_DEFINE(HAVE_X11XTR6, 1,
2375               [Define to 1 if you have the X11R6 or newer version of Xt.])
2376     LIBXTR6="-lSM -lICE"
2377     case "$opsys" in
2378       ## Use libw.a along with X11R6 Xt.
2379       unixware) LIBXTR6="$LIBXTR6 -lw" ;;
2380     esac
2381   else
2382     AC_MSG_RESULT(before 6)
2383   fi
2385 dnl If using toolkit, check whether libXmu.a exists.
2386 dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
2387   OLDLIBS="$LIBS"
2388   if test x$HAVE_X11XTR6 = xyes; then
2389     LIBS="-lXt -lSM -lICE $LIBS"
2390   else
2391     LIBS="-lXt $LIBS"
2392   fi
2393   AC_CHECK_LIB(Xmu, XmuConvertStandardSelection)
2394   test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS"
2395   dnl ac_cv_lib_Xmu_XmuConvertStandardSelection is also referenced below.
2397 AC_SUBST(LIBXTR6)
2399 dnl FIXME the logic here seems weird, but this is what cpp was doing.
2400 dnl Why not just test for libxmu in the normal way?
2401 LIBXMU=-lXmu
2402 case $opsys in
2403   ## These systems don't supply Xmu.
2404   hpux* | aix4-2 )
2405     test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
2406     ;;
2407   mingw32 )
2408     LIBXMU=
2409     ;;
2410 esac
2411 AC_SUBST(LIBXMU)
2413 # On Irix 6.5, at least, we need XShapeQueryExtension from -lXext for Xaw3D.
2414 if test "${HAVE_X11}" = "yes"; then
2415   if test "${USE_X_TOOLKIT}" != "none"; then
2416     AC_CHECK_LIB(Xext, XShapeQueryExtension)
2417   fi
2420 LIBXP=
2421 if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2422   # OpenMotif may be installed in such a way on some GNU/Linux systems.
2423   if test -d /usr/include/openmotif; then
2424     CPPFLAGS="-I/usr/include/openmotif $CPPFLAGS"
2425     emacs_cv_openmotif=yes
2426     case "$canonical" in
2427       x86_64-*-linux-gnu* | powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*)
2428       test -d /usr/lib64/openmotif && LDFLAGS="-L/usr/lib64/openmotif $LDFLAGS"
2429       ;;
2430       *)
2431       test -d /usr/lib/openmotif && LDFLAGS="-L/usr/lib/openmotif $LDFLAGS"
2432     esac
2433   else
2434     emacs_cv_openmotif=no
2435   fi
2436   AC_CACHE_CHECK(for (Open)Motif version 2.1, emacs_cv_motif_version_2_1,
2437   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <Xm/Xm.h>]],
2438     [[#if XmVERSION > 2 || (XmVERSION == 2 && XmREVISION >= 1)
2439 int x = 5;
2440 #else
2441 Motif version prior to 2.1.
2442 #endif]])],
2443     emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)])
2444   if test $emacs_cv_motif_version_2_1 = yes; then
2445     AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp)
2446     if test x$emacs_cv_openmotif = xyes; then
2447       REAL_CPPFLAGS="-I/usr/include/openmotif $REAL_CPPFLAGS"
2448     fi
2449   else
2450     AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif,
2451     # We put this in CFLAGS temporarily to precede other -I options
2452     # that might be in CFLAGS temporarily.
2453     # We put this in CPPFLAGS where it precedes the other -I options.
2454     OLD_CPPFLAGS=$CPPFLAGS
2455     OLD_CFLAGS=$CFLAGS
2456     CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CPPFLAGS"
2457     CFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CFLAGS"
2458     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include </usr/X11R6/LessTif/Motif1.2/include/Xm/Xm.h>]],
2459       [[int x = 5;]])],
2460       emacs_cv_lesstif=yes, emacs_cv_lesstif=no)])
2461     if test $emacs_cv_lesstif = yes; then
2462       # Make sure this -I option remains in CPPFLAGS after it is set
2463       # back to REAL_CPPFLAGS.
2464       # There is no need to change REAL_CFLAGS, because REAL_CFLAGS does not
2465       # have those other -I options anyway.  Ultimately, having this
2466       # directory ultimately in CPPFLAGS will be enough.
2467       REAL_CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $REAL_CPPFLAGS"
2468       LDFLAGS="-L/usr/X11R6/LessTif/Motif1.2/lib $LDFLAGS"
2469     else
2470       CFLAGS=$OLD_CFLAGS
2471       CPPFLAGS=$OLD_CPPFLAGS
2472     fi
2473   fi
2474   AC_CHECK_HEADER([Xm/BulletinB.h], [],
2475     [AC_MSG_ERROR([Motif toolkit requested but requirements not found.])])
2478 dnl Use toolkit scroll bars if configured for GTK or X toolkit and either
2479 dnl using Motif or Xaw3d is available, and unless
2480 dnl --with-toolkit-scroll-bars=no was specified.
2482 AH_TEMPLATE(USE_TOOLKIT_SCROLL_BARS,
2483             [Define to 1 if we should use toolkit scroll bars.])dnl
2484 USE_TOOLKIT_SCROLL_BARS=no
2485 if test "${with_toolkit_scroll_bars}" != "no"; then
2486   if test "${USE_X_TOOLKIT}" != "none"; then
2487     if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2488       AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2489       HAVE_XAW3D=no
2490       USE_TOOLKIT_SCROLL_BARS=yes
2491     elif test "${HAVE_XAW3D}" = "yes" || test "${USE_X_TOOLKIT}" = "LUCID"; then
2492       AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2493       USE_TOOLKIT_SCROLL_BARS=yes
2494     fi
2495   elif test "${HAVE_GTK}" = "yes"; then
2496     AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2497     USE_TOOLKIT_SCROLL_BARS=yes
2498   elif test "${HAVE_NS}" = "yes"; then
2499     AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2500     USE_TOOLKIT_SCROLL_BARS=yes
2501   elif test "${HAVE_W32}" = "yes"; then
2502     AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2503     USE_TOOLKIT_SCROLL_BARS=yes
2504   fi
2507 dnl See if XIM is available.
2508 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2509           #include <X11/Xlib.h>
2510           #include <X11/Xresource.h>]],
2511          [[XIMProc  callback;]])],
2512          [HAVE_XIM=yes
2513          AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
2514          HAVE_XIM=no)
2516 dnl `--with-xim' now controls only the initial value of use_xim at run time.
2518 if test "${with_xim}" != "no"; then
2519   AC_DEFINE(USE_XIM, 1,
2520             [Define to 1 if we should use XIM, if it is available.])
2524 if test "${HAVE_XIM}" != "no"; then
2525   late_CFLAGS=$CFLAGS
2526   if test "$GCC" = yes; then
2527     CFLAGS="$CFLAGS --pedantic-errors"
2528   fi
2529   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2530 #include <X11/Xlib.h>
2531 #include <X11/Xresource.h>]],
2532 [[Display *display;
2533 XrmDatabase db;
2534 char *res_name;
2535 char *res_class;
2536 XIMProc  callback;
2537 XPointer *client_data;
2538 #ifndef __GNUC__
2539 /* If we're not using GCC, it's probably not XFree86, and this is
2540    probably right, but we can't use something like --pedantic-errors.  */
2541 extern Bool XRegisterIMInstantiateCallback(Display*, XrmDatabase, char*,
2542                                            char*, XIMProc, XPointer*);
2543 #endif
2544 (void)XRegisterIMInstantiateCallback(display, db, res_name, res_class, callback,
2545    client_data);]])],
2546     [emacs_cv_arg6_star=yes])
2547   AH_TEMPLATE(XRegisterIMInstantiateCallback_arg6,
2548          [Define to the type of the 6th arg of XRegisterIMInstantiateCallback,
2549 either XPointer or XPointer*.])dnl
2550   if test "$emacs_cv_arg6_star" = yes; then
2551     AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer*])
2552   else
2553     AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer])
2554   fi
2555   CFLAGS=$late_CFLAGS
2558 ### Start of font-backend (under any platform) section.
2559 # (nothing here yet -- this is a placeholder)
2560 ### End of font-backend (under any platform) section.
2562 ### Start of font-backend (under X11) section.
2563 if test "${HAVE_X11}" = "yes"; then
2564    PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2.0, HAVE_FC=yes, HAVE_FC=no)
2566    ## Use -lXft if available, unless `--with-xft=no'.
2567    HAVE_XFT=maybe
2568     if test "${HAVE_FC}" = "no" || test "x${with_x}" = "xno"; then
2569       with_xft="no";
2570     fi
2571     if test "x${with_xft}" != "xno"; then
2573       PKG_CHECK_MODULES(XFT, xft >= 0.13.0, , HAVE_XFT=no)
2574       ## Because xftfont.c uses XRenderQueryExtension, we also
2575       ## need to link to -lXrender.
2576       HAVE_XRENDER=no
2577       AC_CHECK_LIB(Xrender, XRenderQueryExtension, HAVE_XRENDER=yes)
2578       if test "$HAVE_XFT" != no && test "$HAVE_XRENDER" != no; then
2579         OLD_CPPFLAGS="$CPPFLAGS"
2580         OLD_CFLAGS="$CFLAGS"
2581         OLD_LIBS="$LIBS"
2582         CPPFLAGS="$CPPFLAGS $XFT_CFLAGS"
2583         CFLAGS="$CFLAGS $XFT_CFLAGS"
2584         XFT_LIBS="-lXrender $XFT_LIBS"
2585         LIBS="$XFT_LIBS $LIBS"
2586         AC_CHECK_HEADER(X11/Xft/Xft.h,
2587           AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS))
2589         if test "${HAVE_XFT}" = "yes"; then
2590           AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
2591             AC_SUBST(XFT_LIBS)
2592           C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
2593         else
2594           CPPFLAGS="$OLD_CPPFLAGS"
2595           CFLAGS="$OLD_CFLAGS"
2596           LIBS="$OLD_LIBS"
2597         fi                        # "${HAVE_XFT}" = "yes"
2598       fi                          # "$HAVE_XFT" != no
2599     fi                            # "x${with_xft}" != "xno"
2601     ## We used to allow building with FreeType and without Xft.
2602     ## However, the ftx font backend driver is not in good shape.
2603     if test "$HAVE_XFT" != "yes"; then
2604        dnl For the "Does Emacs use" message at the end.
2605        HAVE_XFT=no
2606        HAVE_FREETYPE=no
2607     else
2608        dnl Strict linkers fail with
2609        dnl ftfont.o: undefined reference to symbol 'FT_New_Face'
2610        dnl if -lfreetype is not specified.
2611        dnl The following is needed to set FREETYPE_LIBS.
2612        PKG_CHECK_MODULES(FREETYPE, freetype2, HAVE_FREETYPE=yes,
2613                          HAVE_FREETYPE=no)
2615        test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype)
2616     fi
2618     HAVE_LIBOTF=no
2619     if test "${HAVE_FREETYPE}" = "yes"; then
2620       AC_DEFINE(HAVE_FREETYPE, 1,
2621                 [Define to 1 if using the freetype and fontconfig libraries.])
2622       if test "${with_libotf}" != "no"; then
2623         PKG_CHECK_MODULES(LIBOTF, libotf, HAVE_LIBOTF=yes,
2624                           HAVE_LIBOTF=no)
2625         if test "$HAVE_LIBOTF" = "yes"; then
2626           AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.])
2627           AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
2628                        HAVE_OTF_GET_VARIATION_GLYPHS=yes,
2629                        HAVE_OTF_GET_VARIATION_GLYPHS=no)
2630           if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
2631             AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1,
2632                       [Define to 1 if libotf has OTF_get_variation_glyphs.])
2633           fi
2634         fi
2635       fi
2636     dnl FIXME should there be an error if HAVE_FREETYPE != yes?
2637     dnl Does the new font backend require it, or can it work without it?
2638     fi
2640     HAVE_M17N_FLT=no
2641     if test "${HAVE_LIBOTF}" = yes; then
2642       if test "${with_m17n_flt}" != "no"; then
2643         PKG_CHECK_MODULES(M17N_FLT, m17n-flt, HAVE_M17N_FLT=yes, HAVE_M17N_FLT=no)
2644         if test "$HAVE_M17N_FLT" = "yes"; then
2645           AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
2646         fi
2647       fi
2648     fi
2649 else
2650     HAVE_XFT=no
2651     HAVE_FREETYPE=no
2652     HAVE_LIBOTF=no
2653     HAVE_M17N_FLT=no
2656 ### End of font-backend (under X11) section.
2658 AC_SUBST(FREETYPE_CFLAGS)
2659 AC_SUBST(FREETYPE_LIBS)
2660 AC_SUBST(FONTCONFIG_CFLAGS)
2661 AC_SUBST(FONTCONFIG_LIBS)
2662 AC_SUBST(LIBOTF_CFLAGS)
2663 AC_SUBST(LIBOTF_LIBS)
2664 AC_SUBST(M17N_FLT_CFLAGS)
2665 AC_SUBST(M17N_FLT_LIBS)
2667 ### Use -lXpm if available, unless `--with-xpm=no'.
2668 ### mingw32 doesn't use -lXpm, since it loads the library dynamically.
2669 HAVE_XPM=no
2670 LIBXPM=
2671 if test "${HAVE_W32}" = "yes" && test "${opsys}" = "cygwin"; then
2672   if test "${with_xpm}" != "no"; then
2673     SAVE_CPPFLAGS="$CPPFLAGS"
2674     SAVE_LDFLAGS="$LDFLAGS"
2675     CPPFLAGS="$CPPFLAGS -I/usr/include/noX"
2676     LDFLAGS="$LDFLAGS -L/usr/lib/noX"
2677     AC_CHECK_HEADER(X11/xpm.h,
2678       [AC_CHECK_LIB(Xpm, XpmReadFileToImage, HAVE_XPM=yes)])
2679     if test "${HAVE_XPM}" = "yes"; then
2680       AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
2681       AC_EGREP_CPP(no_return_alloc_pixels,
2682       [#include "X11/xpm.h"
2683 #ifndef XpmReturnAllocPixels
2684 no_return_alloc_pixels
2685 #endif
2686       ], HAVE_XPM=no, HAVE_XPM=yes)
2688       if test "${HAVE_XPM}" = "yes"; then
2689         REAL_CPPFLAGS="$REAL_CPPFLAGS -I/usr/include/noX"
2690         AC_MSG_RESULT(yes)
2691       else
2692         AC_MSG_RESULT(no)
2693         CPPFLAGS="$SAVE_CPPFLAGS"
2694         LDFLAGS="$SAVE_LDFLAGS"
2695       fi
2696     fi
2697   fi
2699   if test "${HAVE_XPM}" = "yes"; then
2700     AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
2701     LIBXPM=-lXpm
2702   fi
2705 if test "${HAVE_X11}" = "yes"; then
2706   if test "${with_xpm}" != "no"; then
2707     AC_CHECK_HEADER(X11/xpm.h,
2708       [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
2709     if test "${HAVE_XPM}" = "yes"; then
2710       AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
2711       AC_EGREP_CPP(no_return_alloc_pixels,
2712       [#include "X11/xpm.h"
2713 #ifndef XpmReturnAllocPixels
2714 no_return_alloc_pixels
2715 #endif
2716       ], HAVE_XPM=no, HAVE_XPM=yes)
2718       if test "${HAVE_XPM}" = "yes"; then
2719         AC_MSG_RESULT(yes)
2720       else
2721         AC_MSG_RESULT(no)
2722       fi
2723     fi
2724   fi
2726   if test "${HAVE_XPM}" = "yes"; then
2727     AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
2728     LIBXPM=-lXpm
2729   fi
2732 ### FIXME: Perhaps regroup to minimize code duplication due to MinGW's
2733 ### slightly different requirements wrt image libraries (it doesn't
2734 ### use -lXpm because it loads the xpm shared library dynamically at
2735 ### run time).
2736 if test "${opsys}" = "mingw32"; then
2737   if test "${with_xpm}" != "no"; then
2738     AC_CHECK_HEADER(X11/xpm.h, HAVE_XPM=yes, HAVE_XPM=no, [
2739 #define FOR_MSW 1])
2740   fi
2742   if test "${HAVE_XPM}" = "yes"; then
2743     AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
2744   fi
2747 AC_SUBST(LIBXPM)
2749 ### Use -ljpeg if available, unless `--with-jpeg=no'.
2750 ### mingw32 doesn't use -ljpeg, since it loads the library dynamically.
2751 HAVE_JPEG=no
2752 LIBJPEG=
2753 if test "${opsys}" = "mingw32"; then
2754   if test "${with_jpeg}" != "no"; then
2755     dnl Checking for jpeglib.h can lose because of a redefinition of
2756     dnl HAVE_STDLIB_H.
2757     AC_CHECK_HEADER(jerror.h, HAVE_JPEG=yes, HAVE_JPEG=no)
2758   fi
2759   AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
2760   if test "${HAVE_JPEG}" = "yes"; then
2761     AC_DEFINE(HAVE_JPEG)
2762     AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
2763         [#include <jpeglib.h>
2764          version=JPEG_LIB_VERSION
2766         [AC_DEFINE(HAVE_JPEG)],
2767         [AC_MSG_WARN([libjpeg found, but not version 6b or later])
2768         HAVE_JPEG=no])
2769   fi
2770 elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
2771   if test "${with_jpeg}" != "no"; then
2772     dnl Checking for jpeglib.h can lose because of a redefinition of
2773     dnl  HAVE_STDLIB_H.
2774     AC_CHECK_HEADER(jerror.h,
2775       [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
2776   fi
2778   AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
2779   if test "${HAVE_JPEG}" = "yes"; then
2780     AC_DEFINE(HAVE_JPEG)
2781     AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
2782         [#include <jpeglib.h>
2783          version=JPEG_LIB_VERSION
2785         [AC_DEFINE(HAVE_JPEG)],
2786         [AC_MSG_WARN([libjpeg found, but not version 6b or later])
2787         HAVE_JPEG=no])
2788   fi
2789   if test "${HAVE_JPEG}" = "yes"; then
2790     LIBJPEG=-ljpeg
2791   fi
2793 AC_SUBST(LIBJPEG)
2795 ### Use -lpng if available, unless `--with-png=no'.
2796 ### mingw32 doesn't use -lpng, since it loads the library dynamically.
2797 HAVE_PNG=no
2798 LIBPNG=
2799 if test "${opsys}" = "mingw32"; then
2800   if test "${with_png}" != "no"; then
2801     AC_CHECK_HEADER(png.h, HAVE_PNG=yes, HAVE_PNG=no)
2802   fi
2803   if test "${HAVE_PNG}" = "yes"; then
2804     AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
2806     AC_CHECK_DECL(png_longjmp,
2807       [],
2808       [AC_DEFINE(PNG_DEPSTRUCT, [],
2809          [Define to empty to suppress deprecation warnings when building
2810           with --enable-gcc-warnings and with libpng versions before 1.5,
2811           which lack png_longjmp.])],
2812       [[#ifdef HAVE_LIBPNG_PNG_H
2813         # include <libpng/png.h>
2814         #else
2815         # include <png.h>
2816         #endif
2817       ]])
2818   fi
2819 elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
2820   if test "${with_png}" != "no"; then
2821     # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
2822     # in /usr/include/libpng.
2823     AC_CHECK_HEADERS(png.h libpng/png.h, break)
2824     if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
2825       AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm)
2826     fi
2827   fi
2829   if test "${HAVE_PNG}" = "yes"; then
2830     AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
2831     LIBPNG="-lpng -lz -lm"
2833     AC_CHECK_DECL(png_longjmp,
2834       [],
2835       [AC_DEFINE(PNG_DEPSTRUCT, [],
2836          [Define to empty to suppress deprecation warnings when building
2837           with --enable-gcc-warnings and with libpng versions before 1.5,
2838           which lack png_longjmp.])],
2839       [[#ifdef HAVE_LIBPNG_PNG_H
2840         # include <libpng/png.h>
2841         #else
2842         # include <png.h>
2843         #endif
2844       ]])
2845   fi
2847 AC_SUBST(LIBPNG)
2849 ### Use -ltiff if available, unless `--with-tiff=no'.
2850 ### mingw32 doesn't use -ltiff, since it loads the library dynamically.
2851 HAVE_TIFF=no
2852 LIBTIFF=
2853 if test "${opsys}" = "mingw32"; then
2854   if test "${with_tiff}" != "no"; then
2855     AC_CHECK_HEADER(tiffio.h, HAVE_TIFF=yes, HAVE_TIFF=no)
2856   fi
2857   if test "${HAVE_TIFF}" = "yes"; then
2858     AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
2859   fi
2860 elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
2861   if test "${with_tiff}" != "no"; then
2862     AC_CHECK_HEADER(tiffio.h,
2863       [tifflibs="-lz -lm"
2864       # At least one tiff package requires the jpeg library.
2865       if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
2866       AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)])
2867   fi
2869   if test "${HAVE_TIFF}" = "yes"; then
2870     AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
2871     dnl FIXME -lz -lm, as per libpng?
2872     LIBTIFF=-ltiff
2873   fi
2875 AC_SUBST(LIBTIFF)
2877 ### Use -lgif or -lungif if available, unless `--with-gif=no'.
2878 ### mingw32 doesn't use -lgif/-lungif, since it loads the library dynamically.
2879 HAVE_GIF=no
2880 LIBGIF=
2881 if test "${opsys}" = "mingw32"; then
2882   if test "${with_gif}" != "no"; then
2883     AC_CHECK_HEADER(gif_lib.h, HAVE_GIF=yes, HAVE_GIF=no)
2884   fi
2885   if test "${HAVE_GIF}" = "yes"; then
2886     AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
2887   fi
2888 elif test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no" \
2889         || test "${HAVE_W32}" = "yes"; then
2890   AC_CHECK_HEADER(gif_lib.h,
2891 # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
2892 # Earlier versions can crash Emacs.
2893     [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])
2895   if test "$HAVE_GIF" = yes; then
2896     LIBGIF=-lgif
2897   elif test "$HAVE_GIF" = maybe; then
2898 # If gif_lib.h but no libgif, try libungif.
2899     AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no)
2900     test "$HAVE_GIF" = yes && LIBGIF=-lungif
2901   fi
2903   if test "${HAVE_GIF}" = "yes"; then
2904     AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
2905   fi
2907 AC_SUBST(LIBGIF)
2909 dnl Check for required libraries.
2910 if test "${HAVE_X11}" = "yes"; then
2911   MISSING=""
2912   WITH_NO=""
2913   test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
2914     MISSING="libXpm" && WITH_NO="--with-xpm=no"
2915   test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
2916     MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
2917   test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
2918     MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
2919   test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
2920     MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
2921   test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
2922     MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
2924   if test "X${MISSING}" != X; then
2925     AC_MSG_ERROR([The following required libraries were not found:
2926     $MISSING
2927 Maybe some development libraries/packages are missing?
2928 If you don't want to link with them give
2929     $WITH_NO
2930 as options to configure])
2931   fi
2934 ### Use -lgpm if available, unless `--with-gpm=no'.
2935 HAVE_GPM=no
2936 LIBGPM=
2937 if test "${with_gpm}" != "no"; then
2938   AC_CHECK_HEADER(gpm.h,
2939     [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
2941   if test "${HAVE_GPM}" = "yes"; then
2942     AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
2943     LIBGPM=-lgpm
2944   fi
2946 AC_SUBST(LIBGPM)
2948 dnl Check for malloc/malloc.h on darwin
2949 AC_CHECK_HEADERS_ONCE(malloc/malloc.h)
2951 GNUSTEP_CFLAGS=
2952 ### Use NeXTstep API to implement GUI.
2953 if test "${HAVE_NS}" = "yes"; then
2954   AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.])
2955   if test "${NS_IMPL_COCOA}" = "yes"; then
2956     AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under MacOS X.])
2957   fi
2958   if test "${NS_IMPL_GNUSTEP}" = "yes"; then
2959     AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
2960     # See also .m.o rule in Makefile.in */
2961     # FIXME: are all these flags really needed?  Document here why.  */
2962     GNUSTEP_CFLAGS="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
2963     ## Extra CFLAGS applied to src/*.m files.
2964     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"
2965   fi
2966   # We also have mouse menus.
2967   HAVE_MENUS=yes
2968   OTHER_FILES=ns-app
2971 if test "${HAVE_W32}" = "yes"; then
2972   HAVE_MENUS=yes
2975 ### Use session management (-lSM -lICE) if available
2976 HAVE_X_SM=no
2977 LIBXSM=
2978 if test "${HAVE_X11}" = "yes"; then
2979   AC_CHECK_HEADER(X11/SM/SMlib.h,
2980     [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
2982   if test "${HAVE_X_SM}" = "yes"; then
2983     AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
2984     LIBXSM="-lSM -lICE"
2985     case "$LIBS" in
2986       *-lSM*) ;;
2987       *)      LIBS="$LIBXSM $LIBS" ;;
2988     esac
2989   fi
2991 AC_SUBST(LIBXSM)
2993 ### Use XRandr (-lXrandr) if available
2994 HAVE_XRANDR=no
2995 if test "${HAVE_X11}" = "yes"; then
2996   XRANDR_REQUIRED=1.2.2
2997   XRANDR_MODULES="xrandr >= $XRANDR_REQUIRED"
2998   PKG_CHECK_MODULES(XRANDR, $XRANDR_MODULES, HAVE_XRANDR=yes, HAVE_XRANDR=no)
2999   if test $HAVE_XRANDR = no; then
3000     # Test old way in case pkg-config doesn't have it (older machines).
3001     AC_CHECK_HEADER(X11/extensions/Xrandr.h,
3002       [AC_CHECK_LIB(Xrandr, XRRQueryExtension, HAVE_XRANDR=yes)])
3003     if test $HAVE_XRANDR = yes; then
3004       XRANDR_LIBS=-lXrandr
3005       AC_SUBST(XRANDR_LIBS)
3006     fi
3007   fi
3008   if test $HAVE_XRANDR = yes; then
3009     SAVE_CFLAGS="$CFLAGS"
3010     SAVE_LIBS="$LIBS"
3011     CFLAGS="$XRANDR_CFLAGS $CFLAGS"
3012     LIBS="$XRANDR_LIBS $LIBS"
3013     AC_CHECK_FUNCS(XRRGetOutputPrimary XRRGetScreenResourcesCurrent)
3014     CFLAGS="$SAVE_CFLAGS"
3015     LIBS="$SAVE_LIBS"
3017     AC_DEFINE(HAVE_XRANDR, 1, [Define to 1 if you have the XRandr extension.])
3018   fi
3021 ### Use Xinerama (-lXinerama) if available
3022 HAVE_XINERAMA=no
3023 if test "${HAVE_X11}" = "yes"; then
3024   XINERAMA_REQUIRED=1.0.2
3025   XINERAMA_MODULES="xinerama >= $XINERAMA_REQUIRED"
3026   PKG_CHECK_MODULES(XINERAMA, $XINERAMA_MODULES, HAVE_XINERAMA=yes,
3027                     HAVE_XINERAMA=no)
3028   if test $HAVE_XINERAMA = no; then
3029     # Test old way in case pkg-config doesn't have it (older machines).
3030     AC_CHECK_HEADER(X11/extensions/Xinerama.h,
3031       [AC_CHECK_LIB(Xinerama, XineramaQueryExtension, HAVE_XINERAMA=yes)])
3032     if test $HAVE_XINERAMA = yes; then
3033       XINERAMA_LIBS=-lXinerama
3034       AC_SUBST(XINERAMA_LIBS)
3035     fi
3036   fi
3037   if test $HAVE_XINERAMA = yes; then
3038     AC_DEFINE(HAVE_XINERAMA, 1, [Define to 1 if you have the Xinerama extension.])
3039   fi
3043 ### Use libxml (-lxml2) if available
3044 ### mingw32 doesn't use -lxml2, since it loads the library dynamically.
3045 HAVE_LIBXML2=no
3046 if test "${with_xml2}" != "no"; then
3047   ### I'm not sure what the version number should be, so I just guessed.
3048   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 > 2.6.17, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
3049   if test "${HAVE_LIBXML2}" = "yes"; then
3050     if test "${opsys}" != "mingw32"; then
3051       LIBS="$LIBXML2_LIBS $LIBS"
3052       AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
3053     else
3054       LIBXML2_LIBS=""
3055     fi
3056     if test "${HAVE_LIBXML2}" = "yes"; then
3057       AC_DEFINE(HAVE_LIBXML2, 1, [Define to 1 if you have the libxml library (-lxml2).])
3058     else
3059       LIBXML2_LIBS=""
3060       LIBXML2_CFLAGS=""
3061     fi
3062   fi
3064 AC_SUBST(LIBXML2_LIBS)
3065 AC_SUBST(LIBXML2_CFLAGS)
3067 # If netdb.h doesn't declare h_errno, we must declare it by hand.
3068 # On MinGW, that is provided by nt/inc/sys/socket.h and w32.c.
3069 if test "${opsys}" = "mingw32"; then
3070   emacs_cv_netdb_declares_h_errno=yes
3072 AC_CACHE_CHECK(whether netdb declares h_errno,
3073                emacs_cv_netdb_declares_h_errno,
3074 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
3075   [[return h_errno;]])],
3076   emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
3077 if test $emacs_cv_netdb_declares_h_errno = yes; then
3078   AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
3081 # sqrt and other floating-point functions such as fmod and frexp
3082 # are found in -lm on most systems, but mingw32 doesn't use -lm.
3083 if test "${opsys}" != "mingw32"; then
3084   AC_CHECK_LIB(m, sqrt)
3087 # Check for mail-locking functions in a "mail" library.  Probably this should
3088 # have the same check as for liblockfile below.
3089 AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
3090 if test $have_mail = yes; then
3091   LIBS_MAIL=-lmail
3092   LIBS="$LIBS_MAIL $LIBS"
3093   AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library (-lmail).])
3094 else
3095   LIBS_MAIL=
3097 dnl Debian, at least:
3098 AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
3099 if test $have_lockfile = yes; then
3100    LIBS_MAIL=-llockfile
3101    LIBS="$LIBS_MAIL $LIBS"
3102    AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' library (-llockfile).])
3103 else
3104 # If we have the shared liblockfile, assume we must use it for mail
3105 # locking (e.g. Debian).  If we couldn't link against liblockfile
3106 # (no liblockfile.a installed), ensure that we don't need to.
3107   dnl This works for files generally, not just executables.
3108   dnl Should we look elsewhere for it?  Maybe examine /etc/ld.so.conf?
3109   AC_CHECK_PROG(liblockfile, liblockfile.so, yes, no,
3110                 /usr/lib:/lib:/usr/local/lib:$LD_LIBRARY_PATH)
3111   if test $ac_cv_prog_liblockfile = yes; then
3112     AC_MSG_ERROR([Shared liblockfile found but can't link against it.
3113 This probably means that movemail could lose mail.
3114 There may be a `development' package to install containing liblockfile.])
3115   fi
3117 AC_CHECK_HEADERS_ONCE(maillock.h)
3118 AC_SUBST(LIBS_MAIL)
3120 ## Define MAIL_USE_FLOCK (or LOCKF) if the mailer uses flock (or lockf) to
3121 ## interlock access to the mail spool.  The alternative is a lock file named
3122 ## /usr/spool/mail/$USER.lock.
3123 mail_lock=no
3124 case "$opsys" in
3125   aix4-2) mail_lock="lockf" ;;
3127   gnu|freebsd|dragonfly|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
3129   ## On GNU/Linux systems, both methods are used by various mail programs.
3130   ## I assume most people are using newer mailers that have heard of flock.
3131   ## Change this if you need to.
3132   ## Debian contains a patch which says: ``On Debian/GNU/Linux systems,
3133   ## configure gets the right answers, and that means *NOT* using flock.
3134   ## Using flock is guaranteed to be the wrong thing. See Debian Policy
3135   ## for details.'' and then uses `#ifdef DEBIAN'.  Unfortunately the
3136   ## Debian maintainer hasn't provided a clean fix for Emacs.
3137   ## movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
3138   ## HAVE_MAILLOCK_H are defined, so the following appears to be the
3139   ## correct logic.  -- fx
3140   ## We must check for HAVE_LIBLOCKFILE too, as movemail does.
3141   ## liblockfile is a Free Software replacement for libmail, used on
3142   ## Debian systems and elsewhere. -rfr.
3143   gnu-*)
3144     mail_lock="flock"
3145     if test $have_mail = yes || test $have_lockfile = yes; then
3146       test $ac_cv_header_maillock_h = yes && mail_lock=no
3147     fi
3148     ;;
3150   mingw32)
3151     mail_lock="none-needed" ;;
3152 esac
3154 BLESSMAIL_TARGET=
3155 case "$mail_lock" in
3156   flock) AC_DEFINE(MAIL_USE_FLOCK, 1, [Define if the mailer uses flock to interlock the mail spool.]) ;;
3158   lockf) AC_DEFINE(MAIL_USE_LOCKF, 1, [Define if the mailer uses lockf to interlock the mail spool.]) ;;
3160   none-needed) ;;
3162   *) BLESSMAIL_TARGET="need-blessmail" ;;
3163 esac
3164 AC_SUBST(BLESSMAIL_TARGET)
3167 AC_CHECK_FUNCS(gethostname \
3168 getrusage get_current_dir_name \
3169 lrand48 \
3170 select getpagesize setlocale \
3171 utimes getrlimit setrlimit shutdown getaddrinfo \
3172 strsignal setitimer \
3173 sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
3174 gai_strerror mkstemp getline getdelim sync \
3175 difftime posix_memalign \
3176 getpwent endpwent getgrent endgrent \
3177 touchlock \
3178 cfmakeraw cfsetspeed copysign __executable_start)
3180 ## Eric Backus <ericb@lsid.hp.com> says, HP-UX 9.x on HP 700 machines
3181 ## has a broken `rint' in some library versions including math library
3182 ## version number A.09.05.
3183 ## You can fix the math library by installing patch number PHSS_4630.
3184 ## But we can fix it more reliably for Emacs by just not using rint.
3185 ## We also skip HAVE_RANDOM - see comments in src/conf_post.h.
3186 case $opsys in
3187    hpux*) : ;;
3188    *) AC_CHECK_FUNCS(random rint) ;;
3189 esac
3191 dnl Cannot use AC_CHECK_FUNCS
3192 AC_CACHE_CHECK([for __builtin_unwind_init],
3193                emacs_cv_func___builtin_unwind_init,
3194 [AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_unwind_init ();])],
3195                 emacs_cv_func___builtin_unwind_init=yes,
3196                 emacs_cv_func___builtin_unwind_init=no)])
3197 if test $emacs_cv_func___builtin_unwind_init = yes; then
3198   AC_DEFINE(HAVE___BUILTIN_UNWIND_INIT, 1,
3199             [Define to 1 if you have the `__builtin_unwind_init' function.])
3202 AC_CHECK_HEADERS_ONCE(sys/un.h)
3204 AC_FUNC_FSEEKO
3206 # UNIX98 PTYs.
3207 AC_CHECK_FUNCS(grantpt)
3209 # PTY-related GNU extensions.
3210 AC_CHECK_FUNCS(getpt posix_openpt)
3212 # Check this now, so that we will NOT find the above functions in ncurses.
3213 # That is because we have not set up to link ncurses in lib-src.
3214 # It's better to believe a function is not available
3215 # than to expect to find it in ncurses.
3216 # Also we need tputs and friends to be able to build at all.
3217 AC_MSG_CHECKING([for library containing tputs])
3218 # Run a test program that contains a call to tputs, a call that is
3219 # never executed.  This tests whether a pre-'main' dynamic linker
3220 # works with the library.  It's too much trouble to actually call
3221 # tputs in the test program, due to portability hassles.  When
3222 # cross-compiling, assume the test program will run if it links.
3223 AC_DEFUN([tputs_link_source], [
3224   AC_LANG_SOURCE(
3225      [[extern void tputs (const char *, int, int (*)(int));
3226        int main (int argc, char **argv)
3227        {
3228           if (argc == 10000)
3229             tputs (argv[0], 0, 0);
3230           return 0;
3231        }]])
3233 if test "${opsys}" = "mingw32"; then
3234   msg='none required'
3235 else
3236   # Maybe curses should be tried earlier?
3237   # See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9736#35
3238   for tputs_library in '' tinfo ncurses terminfo termcap curses; do
3239     OLIBS=$LIBS
3240     if test -z "$tputs_library"; then
3241       LIBS_TERMCAP=
3242       msg='none required'
3243     else
3244       LIBS_TERMCAP=-l$tputs_library
3245       msg=$LIBS_TERMCAP
3246       LIBS="$LIBS_TERMCAP $LIBS"
3247     fi
3248     AC_RUN_IFELSE([tputs_link_source], [], [msg=no],
3249       [AC_LINK_IFELSE([tputs_link_source], [], [msg=no])])
3250     LIBS=$OLIBS
3251     if test "X$msg" != Xno; then
3252       break
3253     fi
3254   done
3256 AC_MSG_RESULT([$msg])
3257 if test "X$msg" = Xno; then
3258   AC_MSG_ERROR([The required function `tputs' was not found in any library.
3259 The following libraries were tried (in order):
3260   libtinfo, libncurses, libterminfo, libtermcap, libcurses
3261 Please try installing whichever of these libraries is most appropriate
3262 for your system, together with its header files.
3263 For example, a libncurses-dev(el) or similar package.])
3266 ## Use termcap instead of terminfo?
3267 ## Only true for: freebsd < 40000, ms-w32, msdos, netbsd < 599002500.
3268 TERMINFO=yes
3269 ## FIXME?  In the cases below where we unconditionally set
3270 ## LIBS_TERMCAP="-lncurses", this overrides LIBS_TERMCAP = -ltinfo,
3271 ## if that was found above to have tputs.
3272 ## Should we use the gnu* logic everywhere?
3273 case "$opsys" in
3274   ## darwin: Prevents crashes when running Emacs in Terminal.app under 10.2.
3275   ##  The ncurses library has been moved out of the System framework in
3276   ##  Mac OS X 10.2.  So if configure detects it, set the command-line
3277   ##  option to use it.
3278   darwin) LIBS_TERMCAP="-lncurses" ;;
3280   gnu*) test -z "$LIBS_TERMCAP" && LIBS_TERMCAP="-lncurses" ;;
3282   freebsd)
3283     AC_MSG_CHECKING([whether FreeBSD is new enough to use terminfo])
3284     AC_CACHE_VAL(emacs_cv_freebsd_terminfo,
3285     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <osreldate.h>]],
3286 [[#if __FreeBSD_version < 400000
3287 fail;
3288 #endif
3289 ]])], emacs_cv_freebsd_terminfo=yes, emacs_cv_freebsd_terminfo=no)])
3291     AC_MSG_RESULT($emacs_cv_freebsd_terminfo)
3293     if test $emacs_cv_freebsd_terminfo = yes; then
3294       LIBS_TERMCAP="-lncurses"
3295     else
3296       TERMINFO=no
3297       LIBS_TERMCAP="-ltermcap"
3298     fi
3299     ;;
3301   mingw32)
3302     TERMINFO=no
3303     LIBS_TERMCAP=
3304     ;;
3306   netbsd)
3307     if test "x$LIBS_TERMCAP" != "x-lterminfo"; then
3308       TERMINFO=no
3309       LIBS_TERMCAP="-ltermcap"
3310     fi
3311     ;;
3313   openbsd | dragonfly) LIBS_TERMCAP="-lncurses" ;;
3315   ## hpux: Make sure we get select from libc rather than from libcurses
3316   ##  because libcurses on HPUX 10.10 has a broken version of select.
3317   ##  We used to use -lc -lcurses, but this may be cleaner.
3318   ## FIXME?  But TERMINFO = yes on hpux (it used to be explicitly
3319   # set that way, now it uses the default).  Isn't this a contradiction?
3320   hpux*) LIBS_TERMCAP="-ltermcap" ;;
3322 esac
3324 TERMCAP_OBJ=tparam.o
3325 if test $TERMINFO = yes; then
3326   AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.])
3327   TERMCAP_OBJ=terminfo.o
3329 AC_SUBST(LIBS_TERMCAP)
3330 AC_SUBST(TERMCAP_OBJ)
3333 # Do we have res_init, for detecting changes in /etc/resolv.conf?
3334 # On Darwin, res_init appears not to be useful: see bug#562 and
3335 # http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01467.html
3336 resolv=no
3338 if test $opsys != darwin; then
3340   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
3341 #include <arpa/nameser.h>
3342 #include <resolv.h>]],
3343     [[return res_init();]])],
3344     have_res_init=yes, have_res_init=no)
3345   if test "$have_res_init" = no; then
3346     OLIBS="$LIBS"
3347     LIBS="$LIBS -lresolv"
3348     AC_MSG_CHECKING(for res_init with -lresolv)
3349     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
3350 #include <arpa/nameser.h>
3351 #include <resolv.h>]],
3352       [[return res_init();]])],
3353       have_res_init=yes, have_res_init=no)
3354     AC_MSG_RESULT($have_res_init)
3355     if test "$have_res_init" = yes ; then
3356       resolv=yes
3357     fi
3358     LIBS="$OLIBS"
3359   fi
3361   if test "$have_res_init" = yes; then
3362     AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if res_init is available.])
3363   fi
3364 fi                              dnl !darwin
3366 # Do we need the Hesiod library to provide the support routines?
3367 dnl FIXME?  Should we be skipping this on Darwin too?
3368 LIBHESIOD=
3369 if test "$with_hesiod" != no ; then
3370   # Don't set $LIBS here -- see comments above.  FIXME which comments?
3371   AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
3372      [AC_CHECK_LIB(resolv, res_send, resolv=yes,
3373                   [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
3374   if test "$resolv" = yes ; then
3375     RESOLVLIB=-lresolv
3376   else
3377     RESOLVLIB=
3378   fi
3379   AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
3380         hesiod=yes, :, $RESOLVLIB)])
3382   if test x"$hesiod" = xyes; then
3383     AC_DEFINE(HAVE_LIBHESIOD, 1,
3384               [Define to 1 if you have the hesiod library (-lhesiod).])
3385     LIBHESIOD=-lhesiod
3386   fi
3388 AC_SUBST(LIBHESIOD)
3390 # Do we need libresolv (due to res_init or Hesiod)?
3391 if test "$resolv" = yes && test $opsys != darwin; then
3392   AC_DEFINE(HAVE_LIBRESOLV, 1,
3393             [Define to 1 if you have the resolv library (-lresolv).])
3394   LIBRESOLV=-lresolv
3395 else
3396   LIBRESOLV=
3398 AC_SUBST(LIBRESOLV)
3400 # These tell us which Kerberos-related libraries to use.
3401 COM_ERRLIB=
3402 CRYPTOLIB=
3403 KRB5LIB=
3404 DESLIB=
3405 KRB4LIB=
3407 if test "${with_kerberos}" != no; then
3408   AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no)
3409   if test $have_com_err = yes; then
3410     COM_ERRLIB=-lcom_err
3411     LIBS="$COM_ERRLIB $LIBS"
3412     AC_DEFINE(HAVE_LIBCOM_ERR, 1, [Define to 1 if you have the `com_err' library (-lcom_err).])
3413   fi
3414   AC_CHECK_LIB(crypto, mit_des_cbc_encrypt, have_crypto=yes, have_crypto=no)
3415   if test $have_crypto = yes; then
3416     CRYPTOLIB=-lcrypto
3417     LIBS="$CRYPTOLIB $LIBS"
3418     AC_DEFINE(HAVE_LIBCRYPTO, 1, [Define to 1 if you have the `crypto' library (-lcrypto).])
3419   fi
3420   AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt, have_k5crypto=yes, have_k5crypto=no)
3421   if test $have_k5crypto = yes; then
3422     CRYPTOLIB=-lk5crypto
3423     LIBS="$CRYPTOLIB $LIBS"
3424     AC_DEFINE(HAVE_LIBK5CRYPTO, 1, [Define to 1 if you have the `k5crypto' library (-lk5crypto).])
3425   fi
3426   AC_CHECK_LIB(krb5, krb5_init_context, have_krb5=yes, have_krb5=no)
3427   if test $have_krb5=yes; then
3428     KRB5LIB=-lkrb5
3429     LIBS="$KRB5LIB $LIBS"
3430     AC_DEFINE(HAVE_LIBKRB5, 1, [Define to 1 if you have the `krb5' library (-lkrb5).])
3431   fi
3432   dnl FIXME Simplify.  Does not match 22 logic, thanks to default_off?
3433   if test "${with_kerberos5}" = no; then
3434     AC_CHECK_LIB(des425, des_cbc_encrypt, have_des425=yes, have_des425=no )
3435     if test $have_des425 = yes; then
3436       DESLIB=-ldes425
3437       LIBS="$DESLIB $LIBS"
3438       AC_DEFINE(HAVE_LIBDES425, 1, [Define to 1 if you have the `des425' library (-ldes425).])
3439     else
3440       AC_CHECK_LIB(des, des_cbc_encrypt, have_des=yes, have_des=no)
3441       if test $have_des = yes; then
3442         DESLIB=-ldes
3443         LIBS="$DESLIB $LIBS"
3444         AC_DEFINE(HAVE_LIBDES, 1, [Define to 1 if you have the `des' library (-ldes).])
3445       fi
3446     fi
3447     AC_CHECK_LIB(krb4, krb_get_cred, have_krb4=yes, have_krb4=no)
3448     if test $have_krb4 = yes; then
3449       KRB4LIB=-lkrb4
3450       LIBS="$KRB4LIB $LIBS"
3451       AC_DEFINE(HAVE_LIBKRB4, 1, [Define to 1 if you have the `krb4' library (-lkrb4).])
3452     else
3453       AC_CHECK_LIB(krb, krb_get_cred, have_krb=yes, have_krb=no)
3454       if test $have_krb = yes; then
3455         KRB4LIB=-lkrb
3456         LIBS="$KRB4LIB $LIBS"
3457         AC_DEFINE(HAVE_LIBKRB, 1, [Define to 1 if you have the `krb' library (-lkrb).])
3458       fi
3459     fi
3460   fi
3462   if test "${with_kerberos5}" != no; then
3463     AC_CHECK_HEADERS(krb5.h,
3464       [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,,
3465                         [#include <krb5.h>])])
3466   else
3467     AC_CHECK_HEADERS(des.h,,
3468                      [AC_CHECK_HEADERS(kerberosIV/des.h,,
3469                                        [AC_CHECK_HEADERS(kerberos/des.h)])])
3470     AC_CHECK_HEADERS(krb.h,,
3471                      [AC_CHECK_HEADERS(kerberosIV/krb.h,,
3472                                        [AC_CHECK_HEADERS(kerberos/krb.h)])])
3473   fi
3474   AC_CHECK_HEADERS(com_err.h)
3477 AC_SUBST(COM_ERRLIB)
3478 AC_SUBST(CRYPTOLIB)
3479 AC_SUBST(KRB5LIB)
3480 AC_SUBST(DESLIB)
3481 AC_SUBST(KRB4LIB)
3483 AC_CHECK_FUNCS_ONCE(tzset)
3484 AC_MSG_CHECKING(whether localtime caches TZ)
3485 AC_CACHE_VAL(emacs_cv_localtime_cache,
3486 [if test x$ac_cv_func_tzset = xyes; then
3487 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <time.h>
3488 char TZ_GMT0[] = "TZ=GMT0";
3489 char TZ_PST8[] = "TZ=PST8";
3490 main()
3492   time_t now = time ((time_t *) 0);
3493   int hour_GMT0, hour_unset;
3494   if (putenv (TZ_GMT0) != 0)
3495     exit (1);
3496   hour_GMT0 = localtime (&now)->tm_hour;
3497   unsetenv("TZ");
3498   hour_unset = localtime (&now)->tm_hour;
3499   if (putenv (TZ_PST8) != 0)
3500     exit (1);
3501   if (localtime (&now)->tm_hour == hour_GMT0)
3502     exit (1);
3503   unsetenv("TZ");
3504   if (localtime (&now)->tm_hour != hour_unset)
3505     exit (1);
3506   exit (0);
3507 }]])], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
3508 [# If we have tzset, assume the worst when cross-compiling.
3509 emacs_cv_localtime_cache=yes])
3510 else
3511         # If we lack tzset, report that localtime does not cache TZ,
3512         # since we can't invalidate the cache if we don't have tzset.
3513         emacs_cv_localtime_cache=no
3514 fi])dnl
3515 AC_MSG_RESULT($emacs_cv_localtime_cache)
3516 if test $emacs_cv_localtime_cache = yes; then
3517   AC_DEFINE(LOCALTIME_CACHE, 1,
3518             [Define to 1 if localtime caches TZ.])
3521 ok_so_far=yes
3522 AC_CHECK_FUNC(socket, , ok_so_far=no)
3523 if test $ok_so_far = yes; then
3524   AC_CHECK_HEADER(netinet/in.h, , ok_so_far=no)
3526 if test $ok_so_far = yes; then
3527   AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
3529 if test $ok_so_far = yes; then
3530 dnl Fixme: Not used.  Should this be HAVE_SOCKETS?
3531   AC_DEFINE(HAVE_INET_SOCKETS, 1,
3532             [Define to 1 if you have inet sockets.])
3535 if test -f /usr/lpp/X11/bin/smt.exp; then
3536   AC_DEFINE(HAVE_AIX_SMT_EXP, 1,
3537             [Define to 1 if the file /usr/lpp/X11/bin/smt.exp exists.])
3540 AC_MSG_CHECKING(whether system supports dynamic ptys)
3541 if test -d /dev/pts && ls -d /dev/ptmx > /dev/null 2>&1 ; then
3542   AC_MSG_RESULT(yes)
3543   AC_DEFINE(HAVE_DEV_PTMX, 1, [Define to 1 if dynamic ptys are supported.])
3544 else
3545   AC_MSG_RESULT(no)
3548 dnl Check for a Solaris 2.4 vfork bug that Autoconf misses (through 2.69).
3549 dnl This can be removed once we assume Autoconf 2.70.
3550 case $canonical in
3551   *-solaris2.4 | *-solaris2.4.*)
3552     dnl Disable the Autoconf-generated vfork test.
3553     : ${ac_cv_func_vfork_works=no};;
3554 esac
3556 AC_FUNC_FORK
3558 AC_CHECK_FUNCS(snprintf)
3560 dnl Adapted from Haible's version.
3561 AC_CACHE_CHECK([for nl_langinfo and CODESET], emacs_cv_langinfo_codeset,
3562   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
3563     [[char* cs = nl_langinfo(CODESET);]])],
3564     emacs_cv_langinfo_codeset=yes,
3565     emacs_cv_langinfo_codeset=no)
3566   ])
3567 if test $emacs_cv_langinfo_codeset = yes; then
3568   AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
3569     [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
3572 AC_TYPE_MBSTATE_T
3574 AC_CACHE_CHECK([for C restricted array declarations], emacs_cv_c_restrict_arr,
3575   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[void fred (int x[__restrict]);]], [[]])],
3576                   emacs_cv_c_restrict_arr=yes, emacs_cv_c_restrict_arr=no)])
3577 if test "$emacs_cv_c_restrict_arr" = yes; then
3578   AC_DEFINE(__restrict_arr, __restrict,
3579     [Define to compiler's equivalent of C99 restrict keyword in array
3580      declarations.  Define as empty for no equivalent.])
3583 dnl Fixme: AC_SYS_POSIX_TERMIOS should probably be used, but it's not clear
3584 dnl how the tty code is related to POSIX and/or other versions of termios.
3585 dnl The following looks like a useful start.
3587 dnl AC_SYS_POSIX_TERMIOS
3588 dnl if test $ac_cv_sys_posix_termios = yes; then
3589 dnl    AC_DEFINE(HAVE_TERMIOS, 1, [Define to 1 if you have POSIX-style functions
3590 dnl                                and macros for terminal control.])
3591 dnl    AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.])
3592 dnl fi
3594 dnl Turned on June 1996 supposing nobody will mind it.
3595 dnl MinGW emulates passwd database, so this feature doesn't make sense there.
3596 if test "${opsys}" != "mingw32"; then
3597    AC_DEFINE(AMPERSAND_FULL_NAME, 1, [Define to use the convention that &
3598      in the full name stands for the login id.])
3601 dnl Every platform that uses configure supports this.
3602 dnl There is a create-lockfiles option you can
3603 dnl customize if you do not want the lock files to be written.
3604 dnl So it is not clear that this #define still needs to exist.
3605 AC_DEFINE(CLASH_DETECTION, 1, [Define if you want lock files to be written,
3606   so that Emacs can tell instantly when you try to modify a file that
3607   someone else has modified in his/her Emacs.])
3609 dnl Everybody supports this, except MS.
3610 dnl Seems like the kind of thing we should be testing for, though.
3611 ## Note: PTYs are broken on darwin <6.  Use at your own risk.
3612 if test "${opsys}" != "mingw32"; then
3613   AC_DEFINE(HAVE_PTYS, 1, [Define if the system supports pty devices.])
3616 dnl Everybody supports this, except MS-DOS.
3617 dnl Seems like the kind of thing we should be testing for, though.
3618 dnl Compare with HAVE_INET_SOCKETS (which is unused...) above.
3619 AC_DEFINE(HAVE_SOCKETS, 1, [Define if the system supports
3620   4.2-compatible sockets.])
3622 AH_TEMPLATE(INTERNAL_TERMINAL, [This is substituted when $TERM is "internal".])
3624 AH_TEMPLATE(NULL_DEVICE, [Name of the file to open to get
3625   a null file, or a data sink.])
3626 if test "${opsys}" = "mingw32"; then
3627   AC_DEFINE(NULL_DEVICE, ["NUL:"])
3628 else
3629   AC_DEFINE(NULL_DEVICE, ["/dev/null"])
3632 AH_TEMPLATE(SEPCHAR, [Character that separates PATH elements.])
3633 if test "${opsys}" = "mingw32"; then
3634   AC_DEFINE(SEPCHAR, [';'])
3635 else
3636   AC_DEFINE(SEPCHAR, [':'])
3639 dnl Everybody supports this, except MS-DOS.
3640 AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.])
3642 AC_DEFINE(USER_FULL_NAME, [pw->pw_gecos], [How to get a user's full name.])
3645 AC_DEFINE(DIRECTORY_SEP, ['/'],
3646   [Character that separates directories in a file name.])
3648 AH_TEMPLATE(DEVICE_SEP, [Character that separates a device in a file name.])
3649 if test "${opsys}" = "mingw32"; then
3650   dnl Only used on MS platforms.
3651   AC_DEFINE(DEVICE_SEP, ':')
3652   AC_DEFINE(IS_DEVICE_SEP(_c_), [((_c_) == DEVICE_SEP)],
3653     [Returns true if character is a device separator.])
3655   AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == '/' || (_c_) == '\\')],
3656     [Returns true if character is a directory separator.])
3658   AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP(_c_))],
3659     [Returns true if character is any form of separator.])
3660 else
3661   AC_DEFINE(IS_DEVICE_SEP(_c_), 0,
3662     [Returns true if character is a device separator.])
3664   AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == DIRECTORY_SEP)],
3665     [Returns true if character is a directory separator.])
3667   AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_))],
3668     [Returns true if character is any form of separator.])
3671 AH_TEMPLATE(NO_EDITRES, [Define if XEditRes should not be used.])
3673 case $opsys in
3674   aix4-2)
3675     dnl Unfortunately without libXmu we cannot support EditRes.
3676     if test x$ac_cv_lib_Xmu_XmuConvertStandardSelection != xyes; then
3677       AC_DEFINE(NO_EDITRES, 1)
3678     fi
3679     ;;
3681   hpux*)
3682     dnl Assar Westerlund <assar@sics.se> says this is necessary for
3683     dnl HP-UX 10.20, and that it works for HP-UX 0 as well.
3684     AC_DEFINE(NO_EDITRES, 1)
3685     ;;
3686 esac
3689 case $opsys in
3690   irix6-5 | sol2* | unixware )
3691     dnl Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
3692     dnl instead, there's a system variable _sys_nsig.  Unfortunately, we
3693     dnl need the constant to dimension an array.  So wire in the appropriate
3694     dnl value here.
3695     AC_DEFINE(NSIG_MINIMUM, 32, [Minimum value of NSIG.])
3696     ;;
3697 esac
3699 emacs_broken_SIGIO=no
3701 case $opsys in
3702   dnl SIGIO exists, but the feature doesn't work in the way Emacs needs.
3703   dnl See eg <http://article.gmane.org/gmane.os.openbsd.ports/46831>.
3704   hpux* | irix6-5 | openbsd | sol2* | unixware )
3705     emacs_broken_SIGIO=yes
3706     ;;
3708   aix4-2)
3709     dnl On AIX Emacs uses the gmalloc.c malloc implementation.  But given
3710     dnl the way this system works, libc functions that return malloced
3711     dnl memory use the libc malloc implementation. Calling xfree or
3712     dnl xrealloc on the results of such functions results in a crash.
3713     dnl
3714     dnl One solution for this could be to define SYSTEM_MALLOC in configure,
3715     dnl but that does not currently work on this system.
3716     dnl
3717     dnl It is possible to completely override the malloc implementation on
3718     dnl AIX, but that involves putting the malloc functions in a shared
3719     dnl library and setting the MALLOCTYPE environment variable to point to
3720     dnl that shared library.
3721     dnl
3722     dnl Emacs currently calls xrealloc on the results of get_current_dir name,
3723     dnl to avoid a crash just use the Emacs implementation for that function.
3724     dnl
3725     dnl FIXME We could change the AC_CHECK_FUNCS call near the start
3726     dnl of this file, so that we do not check for get_current_dir_name
3727     dnl on AIX.  But that might be fragile if something else ends
3728     dnl up testing for get_current_dir_name as a dependency.
3729     AC_DEFINE(BROKEN_GET_CURRENT_DIR_NAME, 1, [Define if
3730       get_current_dir_name should not be used.])
3731     ;;
3733   freebsd)
3734     dnl Circumvent a bug in FreeBSD.  In the following sequence of
3735     dnl writes/reads on a PTY, read(2) returns bogus data:
3736     dnl
3737     dnl write(2)  1022 bytes
3738     dnl write(2)   954 bytes, get EAGAIN
3739     dnl read(2)   1024 bytes in process_read_output
3740     dnl read(2)     11 bytes in process_read_output
3741     dnl
3742     dnl That is, read(2) returns more bytes than have ever been written
3743     dnl successfully.  The 1033 bytes read are the 1022 bytes written
3744     dnl successfully after processing (for example with CRs added if the
3745     dnl terminal is set up that way which it is here).  The same bytes will
3746     dnl be seen again in a later read(2), without the CRs.
3747     AC_DEFINE(BROKEN_PTY_READ_AFTER_EAGAIN, 1, [Define on FreeBSD to
3748       work around an issue when reading from a PTY.])
3749     ;;
3750 esac
3752 case $opsys in
3753   gnu-* | sol2-10 )
3754     dnl FIXME Can't we test if this exists (eg /proc/$$)?
3755     AC_DEFINE(HAVE_PROCFS, 1, [Define if you have the /proc filesystem.])
3756   ;;
3757 esac
3759 case $opsys in
3760   darwin | dragonfly | freebsd | netbsd | openbsd )
3761     AC_DEFINE(DONT_REOPEN_PTY, 1, [Define if process.c does not need to
3762       close a pty to make it a controlling terminal (it is already a
3763       controlling terminal of the subprocess, because we did ioctl TIOCSCTTY).])
3764   ;;
3765 esac
3767 dnl FIXME Surely we can test for this rather than hard-code it.
3768 case $opsys in
3769   netbsd | openbsd) sound_device="/dev/audio" ;;
3770   *) sound_device="/dev/dsp" ;;
3771 esac
3773 dnl Used in sound.c
3774 AC_DEFINE_UNQUOTED(DEFAULT_SOUND_DEVICE, "$sound_device",
3775   [Name of the default sound device.])
3778 dnl Emacs can read input using SIGIO and buffering characters itself,
3779 dnl or using CBREAK mode and making C-g cause SIGINT.
3780 dnl The choice is controlled by the variable interrupt_input.
3782 dnl Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)
3784 dnl Emacs uses the presence of the USABLE_SIGIO macro
3785 dnl to indicate whether or not signal-driven I/O is possible.  It uses
3786 dnl INTERRUPT_INPUT to decide whether to use it by default.
3788 dnl SIGIO can be used only on systems that implement it (4.2 and 4.3).
3789 dnl CBREAK mode has two disadvantages
3790 dnl 1) At least in 4.2, it is impossible to handle the Meta key properly.
3791 dnl I hear that in system V this problem does not exist.
3792 dnl 2) Control-G causes output to be discarded.
3793 dnl I do not know whether this can be fixed in system V.
3795 dnl Another method of doing input is planned but not implemented.
3796 dnl It would have Emacs fork off a separate process
3797 dnl to read the input and send it to the true Emacs process
3798 dnl through a pipe.
3799 case $opsys in
3800   darwin | gnu-linux | gnu-kfreebsd )
3801     AC_DEFINE(INTERRUPT_INPUT, 1, [Define to read input using SIGIO.])
3802   ;;
3803 esac
3806 dnl If the system's imake configuration file defines `NeedWidePrototypes'
3807 dnl as `NO', we must define NARROWPROTO manually.  Such a define is
3808 dnl generated in the Makefile generated by `xmkmf'.  If we don't define
3809 dnl NARROWPROTO, we will see the wrong function prototypes for X functions
3810 dnl taking float or double parameters.
3811 case $opsys in
3812   cygwin|gnu|gnu-linux|gnu-kfreebsd|irix6-5|freebsd|netbsd|openbsd)
3813     AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration
3814       file defines `NeedWidePrototypes' as `NO'.])
3815   ;;
3816 esac
3819 dnl Used in process.c, this must be a loop, even if it only runs once.
3820 dnl (Except on SGI; see below.  Take that, clarity and consistency!)
3821 AH_TEMPLATE(PTY_ITERATION, [How to iterate over PTYs.])
3822 dnl Only used if !PTY_ITERATION.  Iterate from FIRST_PTY_LETTER to z,
3823 dnl trying suffixes 0-16.
3824 AH_TEMPLATE(FIRST_PTY_LETTER, [Letter to use in finding device name of
3825   first PTY, if PTYs are supported.])
3826 AH_TEMPLATE(PTY_OPEN, [How to open a PTY, if non-standard.])
3827 AH_TEMPLATE(PTY_NAME_SPRINTF, [How to get the device name of the control
3828   end of a PTY, if non-standard.])
3829 AH_TEMPLATE(PTY_TTY_NAME_SPRINTF, [How to get device name of the tty
3830   end of a PTY, if non-standard.])
3832 case $opsys in
3833   aix4-2 )
3834     AC_DEFINE(PTY_ITERATION, [int c; for (c = 0; !c ; c++)])
3835     dnl You allocate a pty by opening /dev/ptc to get the master side.
3836     dnl To get the name of the slave side, you just ttyname() the master side.
3837     AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])
3838     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));])
3839     ;;
3841   cygwin )
3842     AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
3843     dnl multi-line AC_DEFINEs are hard. :(
3844     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)])
3845     AC_DEFINE(PTY_NAME_SPRINTF, [])
3846     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
3847     ;;
3849   dnl FIXME?  Maybe use same as freebsd - see bug#12040.
3850   darwin )
3851     AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
3852     dnl Not used, because PTY_ITERATION is defined.
3853     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3854     dnl Note that openpty may fork via grantpt on Mac OS X 10.4/Darwin 8.
3855     dnl But we don't have to block SIGCHLD because it is blocked in the
3856     dnl implementation of grantpt.
3857     AC_DEFINE(PTY_OPEN, [ do { int slave; if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) fd = -1; else emacs_close (slave); } while (0)])
3858     AC_DEFINE(PTY_NAME_SPRINTF, [])
3859     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
3860     ;;
3862   gnu | openbsd )
3863     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3864     ;;
3866   gnu-linux | gnu-kfreebsd | dragonfly | freebsd | netbsd )
3867     dnl if HAVE_GRANTPT
3868     if test "x$ac_cv_func_grantpt" = xyes; then
3869       AC_DEFINE(UNIX98_PTYS, 1, [Define if the system has Unix98 PTYs.])
3870       AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
3871       dnl Note that grantpt and unlockpt may fork.  We must block SIGCHLD
3872       dnl to prevent sigchld_handler from intercepting the child's death.
3873       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); }])
3874       dnl if HAVE_POSIX_OPENPT
3875       if test "x$ac_cv_func_posix_openpt" = xyes; then
3876         AC_DEFINE(PTY_OPEN, [fd = posix_openpt (O_RDWR | O_NOCTTY)])
3877         AC_DEFINE(PTY_NAME_SPRINTF, [])
3878       dnl if HAVE_GETPT
3879       elif test "x$ac_cv_func_getpt" = xyes; then
3880         AC_DEFINE(PTY_OPEN, [fd = getpt ()])
3881         AC_DEFINE(PTY_NAME_SPRINTF, [])
3882       else
3883         AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
3884       fi
3885     else
3886       AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3887     fi
3888     ;;
3890   hpux*)
3891     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3892     AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);])
3893     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
3894     ;;
3896   irix6-5 )
3897     dnl It looks like this cannot be right, because it is not a loop.
3898     dnl However, process.c actually does this:
3899     dnl # ifndef __sgi
3900     dnl   continue;
3901     dnl # else
3902     dnl   return -1;
3903     dnl # endif
3904     dnl which presumably makes it OK, since irix == sgi (?).
3905     dnl FIXME it seems like this special treatment is unnecessary?
3906     dnl Why can't irix use a single-trip loop like eg cygwin?
3907     AC_DEFINE(PTY_ITERATION, [])
3908     dnl Not used, because PTY_ITERATION is defined.
3909     AC_DEFINE(FIRST_PTY_LETTER, ['q'])
3910     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); }])
3911     dnl No need to get the pty name at all.
3912     AC_DEFINE(PTY_NAME_SPRINTF, [])
3913     dnl No need to use sprintf to get the tty name--we get that from _getpty.
3914     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
3915     ;;
3917   sol2* )
3918     dnl On SysVr4, grantpt(3) forks a subprocess, so keep sigchld_handler()
3919     dnl from intercepting that death.  If any child but grantpt's should die
3920     dnl within, it should be caught after sigrelse(2).
3921     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); }])
3922     ;;
3924   unixware )
3925     dnl Comments are as per sol2*.
3926     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); }])
3927     ;;
3928 esac
3931 case $opsys in
3932   sol2* | unixware )
3933     dnl This change means that we don't loop through allocate_pty too
3934     dnl many times in the (rare) event of a failure.
3935     AC_DEFINE(FIRST_PTY_LETTER, ['z'])
3936     AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
3937     dnl Push various streams modules onto a PTY channel.  Used in process.c.
3938     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.])
3939     ;;
3940 esac
3943 AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by
3944 "typing" a signal character on the pty.])
3946 case $opsys in
3947   dnl Perry Smith <pedz@ddivt1.austin.ibm.com> says this is correct for AIX.
3948   dnl thomas@mathematik.uni-bremen.de says this is needed for IRIX.
3949   aix4-2 | cygwin | gnu | irix6-5 | dragonfly | freebsd | netbsd | openbsd | darwin )
3950     AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
3951     ;;
3953   dnl 21 Jun 06: Eric Hanchrow <offby1@blarg.net> says this works.
3954   dnl FIXME Does gnu-kfreebsd have linux/version.h?  It seems unlikely...
3955   gnu-linux | gnu-kfreebsd )
3957     AC_MSG_CHECKING([for signals via characters])
3958     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3959 #include <linux/version.h>
3960 #if LINUX_VERSION_CODE < 0x20400
3961 # error "Linux version too old"
3962 #endif
3963       ]], [[]])], emacs_signals_via_chars=yes, emacs_signals_via_chars=no)
3965     AC_MSG_RESULT([$emacs_signals_via_chars])
3966     test $emacs_signals_via_chars = yes && AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
3967     ;;
3968 esac
3971 dnl Used in lisp.h, emacs.c, vm-limit.c
3972 dnl NEWS.18 describes this as "a number which contains
3973 dnl the high bits to be inclusive or'ed with pointers that are unpacked."
3974 AH_TEMPLATE(DATA_SEG_BITS, [Extra bits to be or'd in with any pointers
3975 stored in a Lisp_Object.])
3976 dnl if Emacs uses fewer than 32 bits for the value field of a LISP_OBJECT.
3978 case $opsys in
3979   aix*)
3980     dnl This works with 32-bit executables; Emacs doesn't support 64-bit.
3981     AC_DEFINE(DATA_SEG_BITS, [0x20000000])
3982     ;;
3983   hpux*)
3984     dnl The data segment on this machine always starts at address 0x40000000.
3985     AC_DEFINE(DATA_SEG_BITS, [0x40000000])
3986     ;;
3987   irix6-5)
3988     AC_DEFINE(DATA_SEG_BITS, [0x10000000])
3989     ;;
3990 esac
3993 AH_TEMPLATE(TAB3, [Undocumented.])
3995 case $opsys in
3996   darwin) AC_DEFINE(TAB3, OXTABS) ;;
3998   gnu | dragonfly | freebsd | netbsd | openbsd )
3999     AC_DEFINE(TABDLY, OXTABS, [Undocumented.])
4000     AC_DEFINE(TAB3, OXTABS)
4001     ;;
4003   gnu-linux | gnu-kfreebsd )
4004     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
4005 #ifndef __ia64__
4006 # error "not ia64"
4007 #endif
4008       ]], [[]])], AC_DEFINE(GC_MARK_SECONDARY_STACK(),
4009         [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)],
4010         [Mark a secondary stack, like the register stack on the ia64.]), [])
4011     ;;
4013   hpux*)
4014     AC_DEFINE(RUN_TIME_REMAP, 1, [Define if emacs.c needs to call
4015       run_time_remap; for HPUX.])
4016     ;;
4017 esac
4020 dnl This won't be used automatically yet.  We also need to know, at least,
4021 dnl that the stack is continuous.
4022 AH_TEMPLATE(GC_SETJMP_WORKS, [Define if setjmp is known to save all
4023   registers relevant for conservative garbage collection in the jmp_buf.])
4026 case $opsys in
4027   dnl Not all the architectures are tested, but there are Debian packages
4028   dnl for SCM and/or Guile on them, so the technique must work.  See also
4029   dnl comments in alloc.c concerning setjmp and gcc.
4030   dnl Fixme: it's probably safe to just use the GCC conditional below.
4031   gnu-linux | gnu-kfreebsd )
4032     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
4033 #if defined __i386__ || defined __sparc__ || defined __mc68000__ \
4034   || defined __alpha__ || defined __mips__ || defined __s390__ \
4035   || defined __arm__ || defined __powerpc__ || defined __amd64__ \
4036   || defined __ia64__ || defined __sh__
4037 /* ok */
4038 #else
4039 # error "setjmp not known to work on this arch"
4040 #endif
4041     ]], [[]])], AC_DEFINE(GC_SETJMP_WORKS, 1))
4042     ;;
4043 esac
4046 if test x$GCC = xyes; then
4047    dnl GC_SETJMP_WORKS is nearly always appropriate for GCC.
4048    AC_DEFINE(GC_SETJMP_WORKS, 1)
4049 else
4050   case $opsys in
4051     dnl irix: Tested on Irix 6.5.  SCM worked on earlier versions.
4052     dragonfly | freebsd | netbsd | openbsd | irix6-5 | sol2* )
4053       AC_DEFINE(GC_SETJMP_WORKS, 1)
4054       ;;
4055   esac
4056 fi                              dnl GCC?
4058 dnl In a weird quirk, MS runtime uses _setjmp and longjmp.
4059 AC_CACHE_CHECK([for _setjmp], [emacs_cv_func__setjmp],
4060   [AC_LINK_IFELSE(
4061      [AC_LANG_PROGRAM(
4062        [[#include <setjmp.h>
4063          #ifdef __MINGW32__
4064          # define _longjmp longjmp
4065          #endif
4066        ]],
4067        [[jmp_buf j;
4068          if (! _setjmp (j))
4069            _longjmp (j, 1);]])],
4070      [emacs_cv_func__setjmp=yes],
4071      [emacs_cv_func__setjmp=no])])
4072 if test $emacs_cv_func__setjmp = yes; then
4073   AC_DEFINE([HAVE__SETJMP], 1, [Define to 1 if _setjmp and _longjmp work.])
4074 else
4075   AC_CACHE_CHECK([for sigsetjmp], [emacs_cv_func_sigsetjmp],
4076     [AC_LINK_IFELSE(
4077        [AC_LANG_PROGRAM(
4078          [[#include <setjmp.h>
4079          ]],
4080          [[sigjmp_buf j;
4081            if (! sigsetjmp (j, 1))
4082              siglongjmp (j, 1);]])],
4083        [emacs_cv_func_sigsetjmp=yes],
4084        [emacs_cv_func_sigsetjmp=no])])
4085   if test $emacs_cv_func_sigsetjmp = yes; then
4086     AC_DEFINE([HAVE_SIGSETJMP], 1,
4087       [Define to 1 if sigsetjmp and siglongjmp work.
4088        The value of this symbol is irrelevant if HAVE__SETJMP is defined.])
4089   fi
4092 case $opsys in
4093   sol2* | unixware )
4094     dnl TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
4095     dnl subprocesses the usual way.  But TIOCSIGNAL does work for PTYs,
4096     dnl and this is all we need.
4097     AC_DEFINE(TIOCSIGSEND, TIOCSIGNAL, [Some platforms redefine this.])
4098     ;;
4099 esac
4102 case $opsys in
4103   hpux* | sol2* )
4104     dnl Used in xfaces.c.
4105     AC_DEFINE(XOS_NEEDS_TIME_H, 1, [Compensate for a bug in Xos.h on
4106       some systems, where it requires time.h.])
4107     ;;
4108 esac
4111 dnl Define symbols to identify the version of Unix this is.
4112 dnl Define all the symbols that apply correctly.
4113 AH_TEMPLATE(DOS_NT, [Define if the system is MS DOS or MS Windows.])
4114 AH_TEMPLATE(MSDOS, [Define if the system is MS DOS.])
4115 AH_TEMPLATE(USG, [Define if the system is compatible with System III.])
4116 AH_TEMPLATE(USG5, [Define if the system is compatible with System V.])
4117 AH_TEMPLATE(USG5_4, [Define if the system is compatible with System V Release 4.])
4119 case $opsys in
4120   aix4-2)
4121     AC_DEFINE(USG, [])
4122     AC_DEFINE(USG5, [])
4123     dnl This symbol should be defined on AIX Version 3  ???????
4124     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
4125 #ifndef _AIX
4126 # error "_AIX not defined"
4127 #endif
4128     ]], [[]])], [], AC_DEFINE(_AIX, [], [Define if the system is AIX.]))
4129     ;;
4131   cygwin)
4132     AC_DEFINE(CYGWIN, 1, [Define if the system is Cygwin.])
4133     ;;
4135   darwin)
4136     dnl Not __APPLE__, as this may not be defined on non-OSX Darwin.
4137     dnl Not DARWIN, because Panther and lower CoreFoundation.h use DARWIN to
4138     dnl distinguish OS X from pure Darwin.
4139     AC_DEFINE(DARWIN_OS, [], [Define if the system is Darwin.])
4140     ;;
4142   gnu-linux | gnu-kfreebsd )
4143     AC_DEFINE(USG, [])
4144     AC_DEFINE(GNU_LINUX, [], [Define if ths system is compatible with GNU/Linux.])
4145     ;;
4147   hpux*)
4148     AC_DEFINE(USG, [])
4149     AC_DEFINE(USG5, [])
4150     AC_DEFINE(HPUX, [], [Define if the system is HPUX.])
4151     ;;
4153   irix6-5)
4154     AC_DEFINE(USG, [])
4155     AC_DEFINE(USG5, [])
4156     AC_DEFINE(USG5_4, [])
4157     AC_DEFINE(IRIX6_5, [], [Define if the system is IRIX.])
4158     ;;
4160   mingw32)
4161     AC_DEFINE(DOS_NT, [])
4162     AC_DEFINE(WINDOWSNT, 1, [Define if compiling for native MS Windows.])
4163     if test "x$ac_enable_checking" != "x" ; then
4164       AC_DEFINE(EMACSDEBUG, 1, [Define to 1 to enable w32 debug facilities.])
4165     fi
4166     ;;
4168   sol2*)
4169     AC_DEFINE(USG, [])
4170     AC_DEFINE(USG5, [])
4171     AC_DEFINE(USG5_4, [])
4172     AC_DEFINE(SOLARIS2, [], [Define if the system is Solaris.])
4173     ;;
4175   unixware)
4176     AC_DEFINE(USG, [])
4177     AC_DEFINE(USG5, [])
4178     AC_DEFINE(USG5_4, [])
4179     ;;
4180 esac
4182 AC_CACHE_CHECK([for usable FIONREAD], [emacs_cv_usable_FIONREAD],
4183   [case $opsys in
4184      aix4-2)
4185        dnl BUILD 9008 - FIONREAD problem still exists in X-Windows.
4186        emacs_cv_usable_FIONREAD=no
4187        ;;
4189      mingw32)
4190        emacs_cv_usable_FIONREAD=yes
4191        ;;
4193      *)
4194        AC_COMPILE_IFELSE(
4195          [AC_LANG_PROGRAM([[#include <sys/types.h>
4196                             #include <sys/ioctl.h>
4197                             #ifdef USG5_4
4198                             # include <sys/filio.h>
4199                             #endif
4200                           ]],
4201                           [[int foo = ioctl (0, FIONREAD, &foo);]])],
4202          [emacs_cv_usable_FIONREAD=yes],
4203          [emacs_cv_usable_FIONREAD=no])
4204        ;;
4205    esac])
4206 if test $emacs_cv_usable_FIONREAD = yes; then
4207   AC_DEFINE([USABLE_FIONREAD], [1], [Define to 1 if FIONREAD is usable.])
4209   if test $emacs_broken_SIGIO = no; then
4210     AC_CACHE_CHECK([for usable SIGIO], [emacs_cv_usable_SIGIO],
4211       [AC_COMPILE_IFELSE(
4212          [AC_LANG_PROGRAM([[#include <fcntl.h>
4213                             #include <signal.h>
4214                           ]],
4215                           [[int foo = SIGIO | F_SETFL | FASYNC;]])],
4216          [emacs_cv_usable_SIGIO=yes],
4217          [emacs_cv_usable_SIGIO=no])],
4218       [emacs_cv_usable_SIGIO=yes],
4219       [emacs_cv_usable_SIGIO=no])
4220     if test $emacs_cv_usable_SIGIO = yes; then
4221       AC_DEFINE([USABLE_SIGIO], [1], [Define to 1 if SIGIO is usable.])
4222     fi
4223   fi
4227 case $opsys in
4228   dnl Emacs supplies its own malloc, but glib (part of Gtk+) calls
4229   dnl memalign and on Cygwin, that becomes the Cygwin-supplied memalign.
4230   dnl As malloc is not the Cygwin malloc, the Cygwin memalign always
4231   dnl returns ENOSYS.  A workaround is to set G_SLICE=always-malloc. */
4232   cygwin)
4233     AC_DEFINE(G_SLICE_ALWAYS_MALLOC, 1, [Define to set the
4234       G_SLICE environment variable to "always-malloc" at startup, if
4235       using GTK.])
4236     ;;
4238   hpux11)
4239     dnl It works to open the pty's tty in the parent (Emacs), then
4240     dnl close and reopen it in the child.
4241     AC_DEFINE(USG_SUBTTY_WORKS, 1, [Define for USG systems where it
4242       works to open a pty's tty in the parent process, then close and
4243       reopen it in the child.])
4244     ;;
4246   irix6-5)
4247     AC_DEFINE(PREFER_VSUSP, 1, [Define if process_send_signal should
4248       use VSUSP instead of VSWTCH.])
4249     ;;
4251   sol2-10)
4252     AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes
4253       on Solaris.])
4254     ;;
4255 esac
4257 # Set up the CFLAGS for real compilation, so we can substitute it.
4258 CFLAGS="$REAL_CFLAGS"
4259 CPPFLAGS="$REAL_CPPFLAGS"
4261 ## Hack to detect a buggy GCC version.
4262 if test "x$GCC" = xyes \
4263    && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \
4264    && test x"`echo $CFLAGS | grep '\-O@<:@23@:>@'`" != x \
4265    && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then
4266    AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'.])
4269 version=$PACKAGE_VERSION
4271 copyright="Copyright (C) 2013 Free Software Foundation, Inc."
4272 AC_DEFINE_UNQUOTED(COPYRIGHT, ["$copyright"],
4273   [Short copyright string for this version of Emacs.])
4274 AC_SUBST(copyright)
4276 ### Specify what sort of things we'll be editing into Makefile and config.h.
4277 ### Use configuration here uncanonicalized to avoid exceeding size limits.
4278 AC_SUBST(version)
4279 AC_SUBST(configuration)
4280 ## Unused?
4281 AC_SUBST(canonical)
4282 AC_SUBST(srcdir)
4283 AC_SUBST(prefix)
4284 AC_SUBST(exec_prefix)
4285 AC_SUBST(bindir)
4286 AC_SUBST(datadir)
4287 AC_SUBST(sharedstatedir)
4288 AC_SUBST(libexecdir)
4289 AC_SUBST(mandir)
4290 AC_SUBST(infodir)
4291 AC_SUBST(lispdir)
4292 AC_SUBST(leimdir)
4293 AC_SUBST(standardlisppath)
4294 AC_SUBST(locallisppath)
4295 AC_SUBST(lisppath)
4296 AC_SUBST(x_default_search_path)
4297 AC_SUBST(etcdir)
4298 AC_SUBST(archlibdir)
4299 AC_SUBST(docdir)
4300 AC_SUBST(bitmapdir)
4301 AC_SUBST(gamedir)
4302 AC_SUBST(gameuser)
4303 ## FIXME? Nothing uses @LD_SWITCH_X_SITE@.
4304 ## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the
4305 ## end of LIBX_BASE, but nothing ever set it.
4306 AC_SUBST(LD_SWITCH_X_SITE)
4307 AC_SUBST(C_SWITCH_X_SITE)
4308 AC_SUBST(GNUSTEP_CFLAGS)
4309 AC_SUBST(CFLAGS)
4310 ## Used in lwlib/Makefile.in.
4311 AC_SUBST(X_TOOLKIT_TYPE)
4312 AC_SUBST(ns_appdir)
4313 AC_SUBST(ns_appbindir)
4314 AC_SUBST(ns_appresdir)
4315 AC_SUBST(ns_appsrc)
4316 AC_SUBST(GNU_OBJC_CFLAGS)
4317 AC_SUBST(OTHER_FILES)
4319 if test -n "${term_header}"; then
4320     AC_DEFINE_UNQUOTED(TERM_HEADER, "${term_header}",
4321         [Define to the header for the built-in window system.])
4324 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION,  "${canonical}",
4325                    [Define to the canonical Emacs configuration name.])
4326 dnl Replace any embedded " characters (bug#13274).
4327 emacs_config_options=`echo "$emacs_config_options " | sed -e 's/--no-create //' -e 's/--no-recursion //' -e 's/ *$//' -e "s/\"/'/g"`
4328 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${emacs_config_options}",
4329                    [Define to the options passed to configure.])
4330 AH_TEMPLATE(config_opsysfile, [Some platforms that do not use configure
4331   define this to include extra configuration information.])
4333 case $opsys in
4334   mingw32)
4335     AC_DEFINE(config_opsysfile, <ms-w32.h>, [])
4336     ;;
4337 esac
4339 XMENU_OBJ=
4340 XOBJ=
4341 FONT_OBJ=
4342 if test "${HAVE_X_WINDOWS}" = "yes" ; then
4343   AC_DEFINE(HAVE_X_WINDOWS, 1,
4344             [Define to 1 if you want to use the X window system.])
4345   XMENU_OBJ=xmenu.o
4346   XOBJ="xterm.o xfns.o xselect.o xrdb.o xsmfns.o xsettings.o xgselect.o"
4347   FONT_OBJ=xfont.o
4348   if test "$HAVE_XFT" = "yes"; then
4349     FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
4350   elif test "$HAVE_FREETYPE" = "yes"; then
4351     FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
4352   fi
4353   AC_SUBST(FONT_OBJ)
4355 AC_SUBST(XMENU_OBJ)
4356 AC_SUBST(XOBJ)
4357 AC_SUBST(FONT_OBJ)
4359 WIDGET_OBJ=
4360 MOTIF_LIBW=
4361 if test "${USE_X_TOOLKIT}" != "none" ; then
4362   WIDGET_OBJ=widget.o
4363   AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
4364   if test "${USE_X_TOOLKIT}" = "LUCID"; then
4365     AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
4366   elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
4367     AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
4368     MOTIF_LIBW=-lXm
4369     case "$opsys" in
4370       gnu-linux)
4371         ## Paul Abrahams <abrahams at equinox.shaysnet.com> says this is needed.
4372         MOTIF_LIBW="$MOTIF_LIBW -lXpm"
4373         ;;
4375       unixware)
4376         ## Richard Anthony Ryan <ryanr at ellingtn.ftc.nrcs.usda.gov>
4377         ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2.
4378         MOTIF_LIBW="MOTIF_LIBW -lXimp"
4379         ;;
4381       aix4-2)
4382         ## olson@mcs.anl.gov says -li18n is needed by -lXm.
4383         MOTIF_LIBW="$MOTIF_LIBW -li18n"
4384         ;;
4385     esac
4386     MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
4387   fi
4389 AC_SUBST(WIDGET_OBJ)
4391 TOOLKIT_LIBW=
4392 case "$USE_X_TOOLKIT" in
4393   MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
4394   LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
4395   none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
4396 esac
4397 AC_SUBST(TOOLKIT_LIBW)
4399 if test "${opsys}" != "mingw32"; then
4400   if test "$USE_X_TOOLKIT" = "none"; then
4401     LIBXT_OTHER="\$(LIBXSM)"
4402     OLDXMENU_TARGET="really-oldXMenu"
4403   else
4404     LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
4405     OLDXMENU_TARGET="really-lwlib"
4406   fi
4408 AC_SUBST(LIBXT_OTHER)
4410 ## The X Menu stuff is present in the X10 distribution, but missing
4411 ## from X11.  If we have X10, just use the installed library;
4412 ## otherwise, use our own copy.
4413 if test "${HAVE_X11}" = "yes" ; then
4414   AC_DEFINE(HAVE_X11, 1,
4415             [Define to 1 if you want to use version 11 of X windows.
4416              Otherwise, Emacs expects to use version 10.])
4418   if test "$USE_X_TOOLKIT" = "none"; then
4419     OLDXMENU="\${oldXMenudir}/libXMenu11.a"
4420   else
4421     OLDXMENU="\${lwlibdir}/liblw.a"
4422   fi
4423   LIBXMENU="\$(OLDXMENU)"
4424   LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
4425   OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}"
4426 else
4427   ## For a syntactically valid Makefile; not actually used for anything.
4428   ## See comments in src/Makefile.in.
4429   OLDXMENU=nothing
4430   ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?).
4431   if test "${HAVE_X_WINDOWS}" = "yes"; then
4432     LIBXMENU="-lXMenu"
4433   else
4434     LIBXMENU=
4435   fi
4436   LIBX_OTHER=
4437   OLDXMENU_DEPS=
4440 if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then
4441   OLDXMENU_TARGET=
4442   OLDXMENU=nothing
4443   LIBXMENU=
4444   OLDXMENU_DEPS=
4447 AC_SUBST(OLDXMENU_TARGET)
4448 AC_SUBST(OLDXMENU)
4449 AC_SUBST(LIBXMENU)
4450 AC_SUBST(LIBX_OTHER)
4451 AC_SUBST(OLDXMENU_DEPS)
4453 if test "${HAVE_MENUS}" = "yes" ; then
4454   AC_DEFINE(HAVE_MENUS, 1,
4455             [Define to 1 if you have mouse menus.
4456              (This is automatic if you use X, but the option to specify it remains.)
4457              It is also defined with other window systems that support xmenu.c.])
4460 if test "${GNU_MALLOC}" = "yes" ; then
4461   AC_DEFINE(GNU_MALLOC, 1,
4462             [Define to 1 if you want to use the GNU memory allocator.])
4465 RALLOC_OBJ=
4466 if test "${REL_ALLOC}" = "yes" ; then
4467   AC_DEFINE(REL_ALLOC, 1,
4468             [Define REL_ALLOC if you want to use the relocating allocator for
4469              buffer space.])
4471   test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
4473 AC_SUBST(RALLOC_OBJ)
4475 if test "$opsys" = "cygwin"; then
4476   CYGWIN_OBJ="sheap.o cygw32.o"
4477   ## Cygwin differs because of its unexec().
4478   PRE_ALLOC_OBJ=
4479   POST_ALLOC_OBJ=lastfile.o
4480 elif test "$opsys" = "mingw32"; then
4481   CYGWIN_OBJ=
4482   PRE_ALLOC_OBJ=
4483   POST_ALLOC_OBJ=lastfile.o
4484 else
4485   CYGWIN_OBJ=
4486   PRE_ALLOC_OBJ=lastfile.o
4487   POST_ALLOC_OBJ=
4489 AC_SUBST(CYGWIN_OBJ)
4490 AC_SUBST(PRE_ALLOC_OBJ)
4491 AC_SUBST(POST_ALLOC_OBJ)
4493 # Configure gnulib.  Although this does not affect CFLAGS or LIBS permanently.
4494 # it temporarily reverts them to their pre-pkg-config values,
4495 # because gnulib needs to work with both src (which uses the
4496 # pkg-config stuff) and lib-src (which does not).  For example, gnulib
4497 # may need to determine whether LIB_CLOCK_GETTIME should contain -lrt,
4498 # and it therefore needs to run in an environment where LIBS does not
4499 # already contain -lrt merely because 'pkg-config --libs' printed '-lrt'
4500 # for some package unrelated to lib-src.
4501 SAVE_CFLAGS=$CFLAGS
4502 SAVE_LIBS=$LIBS
4503 CFLAGS=$pre_PKG_CONFIG_CFLAGS
4504 LIBS="$LIB_PTHREAD $pre_PKG_CONFIG_LIBS"
4505 gl_ASSERT_NO_GNULIB_POSIXCHECK
4506 gl_ASSERT_NO_GNULIB_TESTS
4507 gl_INIT
4508 CFLAGS=$SAVE_CFLAGS
4509 LIBS=$SAVE_LIBS
4511 if test "${opsys}" = "mingw32"; then
4512   CPPFLAGS="$CPPFLAGS -DUSE_CRT_DLL=1 -I $srcdir/nt/inc"
4513   # Remove unneeded switches from the value of CC that goes to Makefiles
4514   CC=`echo $CC | sed -e "s,$GCC_TEST_OPTIONS,,"`
4517 case "$opsys" in
4518   aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
4520   darwin)
4521    ## The -headerpad option tells ld (see man page) to leave room at the
4522    ## end of the header for adding load commands.  Needed for dumping.
4523    ## 0x690 is the total size of 30 segment load commands (at 56
4524    ## each); under Cocoa 31 commands are required.
4525    if test "$HAVE_NS" = "yes"; then
4526      libs_nsgui="-framework AppKit"
4527      if test "$NS_IMPL_COCOA" = "yes"; then
4528         libs_nsgui="$libs_nsgui -framework IOKit"
4529      fi
4530      headerpad_extra=6C8
4531    else
4532      libs_nsgui=
4533      headerpad_extra=690
4534    fi
4535    LD_SWITCH_SYSTEM_TEMACS="-fno-pie -prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
4537    ## This is here because src/Makefile.in did some extra fiddling around
4538    ## with LD_SWITCH_SYSTEM.  It seems cleaner to put this in
4539    ## LD_SWITCH_SYSTEM_TEMACS instead,
4540    test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
4541      LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
4542    ;;
4544   ## LD_SWITCH_X_SITE_RPATH is a -rpath option saying where to
4545   ## find X at run-time.
4546   ## When handled by cpp, this was in LD_SWITCH_SYSTEM.  However, at the
4547   ## point where configure sourced the s/*.h file, LD_SWITCH_X_SITE_RPATH
4548   ## had not yet been defined and was expanded to null.  Hence LD_SWITCH_SYSTEM
4549   ## had different values in configure (in ac_link) and src/Makefile.in.
4550   ## It seems clearer therefore to put this piece in LD_SWITCH_SYSTEM_TEMACS.
4551   gnu*) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_RPATH)" ;;
4553   mingw32)
4554    ## MinGW64 does not prepend an underscore to symbols, so we must
4555    ## pass a different -entry switch to linker.  FIXME: It is better
4556    ## to make the entry points the same by changing unexw32.c.
4557    case "$canonical" in
4558      x86_64-*-*) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,_start -Wl,-Map,./temacs.map" ;;
4559      *) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;;
4560    esac
4561    ;;
4563   openbsd) LD_SWITCH_SYSTEM_TEMACS='-nopie' ;;
4565   *) LD_SWITCH_SYSTEM_TEMACS= ;;
4566 esac
4568 if test x$ac_enable_profiling != x ; then
4569   case $opsys in
4570     *freebsd | gnu-linux) ;;
4571     *) LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS -pg" ;;
4572   esac
4575 AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
4577 ## MinGW-specific post-link processing of temacs.
4578 TEMACS_POST_LINK=":"
4579 ADDSECTION=
4580 EMACS_HEAPSIZE=
4581 if test "${opsys}" = "mingw32"; then
4582   TEMACS_POST_LINK="\$(MINGW_TEMACS_POST_LINK)"
4583   ADDSECTION="../nt/addsection\$(EXEEXT)"
4584   ## Preload heap size of temacs.exe in MB.
4585   case "$canonical" in
4586     x86_64-*-*) EMACS_HEAPSIZE=42 ;;
4587     *) EMACS_HEAPSIZE=27 ;;
4588   esac
4591 AC_SUBST(ADDSECTION)
4592 AC_SUBST(TEMACS_POST_LINK)
4593 AC_SUBST(EMACS_HEAPSIZE)
4595 ## Common for all window systems
4596 if test "$window_system" != "none"; then
4597   AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
4598   WINDOW_SYSTEM_OBJ="fontset.o fringe.o image.o"
4601 AC_SUBST(WINDOW_SYSTEM_OBJ)
4603 AH_TOP([/* GNU Emacs site configuration template file.
4605 Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2013
4606   Free Software Foundation, Inc.
4608 This file is part of GNU Emacs.
4610 GNU Emacs is free software: you can redistribute it and/or modify
4611 it under the terms of the GNU General Public License as published by
4612 the Free Software Foundation, either version 3 of the License, or
4613 (at your option) any later version.
4615 GNU Emacs is distributed in the hope that it will be useful,
4616 but WITHOUT ANY WARRANTY; without even the implied warranty of
4617 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4618 GNU General Public License for more details.
4620 You should have received a copy of the GNU General Public License
4621 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
4624 /* No code in Emacs #includes config.h twice, but some bits of code
4625    intended to work with other packages as well (like gmalloc.c)
4626    think they can include it as many times as they like.  */
4627 #ifndef EMACS_CONFIG_H
4628 #define EMACS_CONFIG_H
4629 ])dnl
4631 AH_BOTTOM([#include <conf_post.h>
4633 #endif /* EMACS_CONFIG_H */
4636 Local Variables:
4637 mode: c
4638 End:
4640 ])dnl
4642 #### Report on what we decided to do.
4643 #### Report GTK as a toolkit, even if it doesn't use Xt.
4644 #### It makes printing result more understandable as using GTK sets
4645 #### toolkit_scroll_bars to yes by default.
4646 if test "${HAVE_GTK}" = "yes"; then
4647   USE_X_TOOLKIT="$USE_GTK_TOOLKIT"
4650 echo "
4651 Configured for \`${canonical}'.
4653   Where should the build process find the source code?    ${srcdir}
4654   What compiler should emacs be built with?               ${CC} ${CFLAGS}
4655   Should Emacs use the GNU version of malloc?             ${GNU_MALLOC}${GNU_MALLOC_reason}
4656   Should Emacs use a relocating allocator for buffers?    ${REL_ALLOC}
4657   Should Emacs use mmap(2) for buffer allocation?         $use_mmap_for_buffers
4658   What window system should Emacs use?                    ${window_system}
4659   What toolkit should Emacs use?                          ${USE_X_TOOLKIT}"
4661 if test -n "${x_includes}"; then
4662 echo "  Where do we find X Windows header files?                ${x_includes}"
4663 else
4664 echo "  Where do we find X Windows header files?                Standard dirs"
4666 if test -n "${x_libraries}"; then
4667 echo "  Where do we find X Windows libraries?                   ${x_libraries}"
4668 else
4669 echo "  Where do we find X Windows libraries?                   Standard dirs"
4672 echo "  Does Emacs use -lXaw3d?                                 ${HAVE_XAW3D}"
4673 echo "  Does Emacs use -lXpm?                                   ${HAVE_XPM}"
4674 echo "  Does Emacs use -ljpeg?                                  ${HAVE_JPEG}"
4675 echo "  Does Emacs use -ltiff?                                  ${HAVE_TIFF}"
4676 echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $LIBGIF"
4677 echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
4678 echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
4679 echo "  Does Emacs use imagemagick?                             ${HAVE_IMAGEMAGICK}"
4681 echo "  Does Emacs use -lgpm?                                   ${HAVE_GPM}"
4682 echo "  Does Emacs use -ldbus?                                  ${HAVE_DBUS}"
4683 echo "  Does Emacs use -lgconf?                                 ${HAVE_GCONF}"
4684 echo "  Does Emacs use GSettings?                               ${HAVE_GSETTINGS}"
4685 echo "  Does Emacs use -lselinux?                               ${HAVE_LIBSELINUX}"
4686 echo "  Does Emacs use -lgnutls?                                ${HAVE_GNUTLS}"
4687 echo "  Does Emacs use -lxml2?                                  ${HAVE_LIBXML2}"
4689 echo "  Does Emacs use -lfreetype?                              ${HAVE_FREETYPE}"
4690 echo "  Does Emacs use -lm17n-flt?                              ${HAVE_M17N_FLT}"
4691 echo "  Does Emacs use -lotf?                                   ${HAVE_LIBOTF}"
4692 echo "  Does Emacs use -lxft?                                   ${HAVE_XFT}"
4694 echo "  Does Emacs use toolkit scroll bars?                     ${USE_TOOLKIT_SCROLL_BARS}"
4695 echo
4697 if test -n "${EMACSDATA}"; then
4698    echo "  Environment variable EMACSDATA set to:                  $EMACSDATA"
4700 if test -n "${EMACSDOC}"; then
4701    echo "  Environment variable EMACSDOC set to:                   $EMACSDOC"
4704 echo
4706 if test "$HAVE_NS" = "yes"; then
4707    echo
4708    echo "You must run \"${MAKE-make} install\" in order to test the built application.
4709 The installed application will go to nextstep/Emacs.app and can be
4710 run or moved from there."
4711    if test "$EN_NS_SELF_CONTAINED" = "yes"; then
4712       echo "The application will be fully self-contained."
4713     else
4714       echo "The lisp resources for the application will be installed under ${prefix}.
4715 You may need to run \"${MAKE-make} install\" with sudo.  The application will fail
4716 to run if these resources are not installed."
4717    fi
4718    echo
4721 if test "${opsys}" = "cygwin"; then
4722   case `uname -r` in
4723     1.5.*) AC_MSG_WARN([[building Emacs on Cygwin 1.5 is not supported.]])
4724            echo
4725            ;;
4726   esac
4729 # Remove any trailing slashes in these variables.
4730 [test "${prefix}" != NONE &&
4731   prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
4732 test "${exec_prefix}" != NONE &&
4733   exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
4735 if test "$HAVE_NS" = "yes"; then
4736   if test "$NS_IMPL_GNUSTEP" = yes; then
4737     AC_CONFIG_FILES([nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist:nextstep/templates/Info-gnustep.plist.in \
4738       nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop:nextstep/templates/Emacs.desktop.in])
4739   else
4740     AC_CONFIG_FILES([nextstep/Cocoa/Emacs.base/Contents/Info.plist:nextstep/templates/Info.plist.in \
4741       nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:nextstep/templates/InfoPlist.strings.in])
4742   fi
4745 dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES.
4746 dnl You _can_ use that variable in AC_CONFIG_FILES, so long as any directory
4747 dnl using automake (ie lib/) is explicitly listed and not "hidden" in a variable
4748 dnl (else you get "no `Makefile.am' found for any configure output").
4749 dnl This will work, but you get a config.status that is not quite right
4750 dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html).
4751 dnl That doesn't have any obvious consequences for Emacs, but on the whole
4752 dnl it seems better to just live with the duplication.
4753 SUBDIR_MAKEFILES="lib/Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile nextstep/Makefile nt/Makefile"
4755 AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
4756        doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
4757        doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile \
4758        leim/Makefile nextstep/Makefile nt/Makefile])
4760 dnl test/ is not present in release tarfiles.
4761 opt_makefile=test/automated/Makefile
4763 if test -f "$srcdir/$opt_makefile.in"; then
4764   SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
4765   dnl Again, it's best not to use a variable.  Though you can add
4766   dnl ", [], [opt_makefile='$opt_makefile']" and it should work.
4767   AC_CONFIG_FILES([test/automated/Makefile])
4771 dnl admin/ may or may not be present.
4772 opt_makefile=admin/unidata/Makefile
4774 if test -f "$srcdir/$opt_makefile.in"; then
4775   SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
4776   AC_CONFIG_FILES([admin/unidata/Makefile])
4780 SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'`
4782 AC_SUBST(SUBDIR_MAKEFILES_IN)
4784 dnl Make the necessary directories, if they don't exist.
4785 AC_CONFIG_COMMANDS([mkdirs], [
4786 for dir in etc lisp ; do
4787   test -d ${dir} || mkdir ${dir}
4788 done
4791 dnl You might wonder (I did) why epaths.h is generated by running make,
4792 dnl rather than just letting configure generate it from epaths.in.
4793 dnl One reason is that the various paths are not fully expanded (see above);
4794 dnl eg gamedir=${prefix}/var/games/emacs.
4795 dnl Secondly, the GNU Coding standards require that one should be able
4796 dnl to run `make prefix=/some/where/else' and override the values set
4797 dnl by configure.  This also explains the `move-if-change' test and
4798 dnl the use of force in the `epaths-force' rule in Makefile.in.
4799 AC_CONFIG_COMMANDS([epaths], [
4800 echo creating src/epaths.h
4801 if test "${opsys}" = "mingw32"; then
4802   ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force-w32
4803 else
4804   ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force
4806 ], [GCC="$GCC" CPPFLAGS="$CPPFLAGS" opsys="$opsys"])
4808 AC_CONFIG_COMMANDS([gdbinit], [
4809 if test ! -f src/.gdbinit && test -f "$srcdir/src/.gdbinit"; then
4810   echo creating src/.gdbinit
4811   echo "source $srcdir/src/.gdbinit" > src/.gdbinit
4815 AC_OUTPUT