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