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