Deactivate the mark on more copy operations, and indicate the copied region.
[emacs.git] / configure.ac
blobb43087a0aa3d4ead81ea705d0b2e0c15b1a9c47c
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-2012 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.1.50)
26 AC_CONFIG_HEADER(src/config.h:src/config.in)
27 AC_CONFIG_SRCDIR(src/lisp.h)
28 AC_CONFIG_AUX_DIR(build-aux)
29 AM_INIT_AUTOMAKE
31 dnl Support for --program-prefix, --program-suffix and
32 dnl --program-transform-name options
33 AC_ARG_PROGRAM
35 dnl It is important that variables on the RHS not be expanded here,
36 dnl hence the single quotes.  This is per the GNU coding standards, see
37 dnl (autoconf) Installation Directory Variables
38 dnl See also epaths.h below.
39 lispdir='${datadir}/emacs/${version}/lisp'
40 leimdir='${datadir}/emacs/${version}/leim'
41 standardlisppath='${lispdir}:${leimdir}'
42 locallisppath='${datadir}/emacs/${version}/site-lisp:'\
43 '${datadir}/emacs/site-lisp'
44 lisppath='${locallisppath}:${standardlisppath}'
45 etcdir='${datadir}/emacs/${version}/etc'
46 archlibdir='${libexecdir}/emacs/${version}/${configuration}'
47 docdir='${datadir}/emacs/${version}/etc'
48 gamedir='${localstatedir}/games/emacs'
50 dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING)
51 dnl Create a new --with option that defaults to being disabled.
52 dnl NAME is the base name of the option.  The shell variable with_NAME
53 dnl   will be set to either the user's value (if the option is
54 dnl   specified; 'yes' for a plain --with-NAME) or to 'no' (if the
55 dnl   option is not specified).  Note that the shell variable name is
56 dnl   constructed as autoconf does, by replacing non-alphanumeric
57 dnl   characters with "_".
58 dnl HELP-STRING is the help text for the option.
59 AC_DEFUN([OPTION_DEFAULT_OFF], [dnl
60   AC_ARG_WITH([$1],[AS_HELP_STRING([--with-$1],[$2])],[],[dnl
61     m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=no])dnl
62 ])dnl
64 dnl OPTION_DEFAULT_ON(NAME, HELP-STRING)
65 dnl Create a new --with option that defaults to being enabled.  NAME
66 dnl   is the base name of the option.  The shell variable with_NAME
67 dnl   will be set either to 'no' (for a plain --without-NAME) or to
68 dnl   'yes' (if the option is not specified).  Note that the shell
69 dnl   variable name is constructed as autoconf does, by replacing
70 dnl   non-alphanumeric characters with "_".
71 dnl HELP-STRING is the help text for the option.
72 AC_DEFUN([OPTION_DEFAULT_ON], [dnl
73   AC_ARG_WITH([$1],[AS_HELP_STRING([--without-$1],[$2])],[],[dnl
74    m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=yes])dnl
75 ])dnl
77 OPTION_DEFAULT_ON([pop],[don't support POP mail retrieval with movemail])
78 if test "$with_pop" = yes; then
79    AC_DEFINE(MAIL_USE_POP)
81 AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl
83 OPTION_DEFAULT_OFF([kerberos],[support Kerberos-authenticated POP])
84 if test "$with_kerberos" != no; then
85    AC_DEFINE(KERBEROS)
87 AH_TEMPLATE(KERBEROS,
88             [Define to support Kerberos-authenticated POP mail retrieval.])dnl
90 OPTION_DEFAULT_OFF([kerberos5],[support Kerberos version 5 authenticated POP])
91 if test "${with_kerberos5}" != no; then
92   if test "${with_kerberos}" = no; then
93     with_kerberos=yes
94     AC_DEFINE(KERBEROS)
95   fi
96   AC_DEFINE(KERBEROS5, 1, [Define to use Kerberos 5 instead of Kerberos 4.])
99 OPTION_DEFAULT_OFF([hesiod],[support Hesiod to get the POP server host])
100 dnl FIXME hesiod support may not be present, so it seems like an error
101 dnl to define, or at least use, this unconditionally.
102 if test "$with_hesiod" != no; then
103   AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])
106 OPTION_DEFAULT_OFF([mmdf],[support MMDF mailboxes])
107 if test "$with_mmdf" != no; then
108    AC_DEFINE(MAIL_USE_MMDF, 1, [Define to support MMDF mailboxes in movemail.])
111 OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after reading])
112 if test "$with_mail_unlink" != no; then
113    AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail spool after reading.])
116 AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
117     [string giving default POP mail host])],
118     AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.]))
120 OPTION_DEFAULT_ON([sound],[don't compile with sound support])
122 OPTION_DEFAULT_ON([sync-input],[process async input synchronously])
123 if test "$with_sync_input" = yes; then
124    AC_DEFINE(SYNC_INPUT, 1, [Process async input synchronously.])
127 dnl FIXME currently it is not the last.
128 dnl This should be the last --with option, because --with-x is
129 dnl added later on when we find the path of X, and it's best to
130 dnl keep them together visually.
131 AC_ARG_WITH([x-toolkit],[AS_HELP_STRING([--with-x-toolkit=KIT],
132  [use an X toolkit (KIT one of: yes or gtk, gtk3, lucid or athena, motif, no)])],
133 [         case "${withval}" in
134             y | ye | yes )      val=gtk ;;
135             n | no )            val=no  ;;
136             l | lu | luc | luci | lucid )       val=lucid ;;
137             a | at | ath | athe | athen | athena )      val=athena ;;
138             m | mo | mot | moti | motif )       val=motif ;;
139             g | gt | gtk  )     val=gtk ;;
140             gtk3  )     val=gtk3 ;;
141             * )
142 AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid;
143 this option's value should be `yes', `no', `lucid', `athena', `motif', `gtk' or
144 `gtk3'.  `yes' and `gtk' are synonyms. `athena' and `lucid' are synonyms.])
145             ;;
146           esac
147           with_x_toolkit=$val
150 OPTION_DEFAULT_OFF([wide-int], [prefer wide Emacs integers (typically 62-bit)])
151 if test "$with_wide_int" = yes; then
152   AC_DEFINE([WIDE_EMACS_INT], 1, [Use long long for EMACS_INT if available.])
155 dnl _ON results in a '--without' option in the --help output, so
156 dnl the help text should refer to "don't compile", etc.
157 OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support])
158 OPTION_DEFAULT_ON([jpeg],[don't compile with JPEG image support])
159 OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support])
160 OPTION_DEFAULT_ON([gif],[don't compile with GIF image support])
161 OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
162 OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
163 OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
164 OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support])
166 OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
167 OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
168 OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
170 OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
171 OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
172 OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
173 OPTION_DEFAULT_OFF([ns],[use NeXTstep (Cocoa or GNUstep) windowing system])
175 OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
176 OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
177 OPTION_DEFAULT_ON([gconf],[don't compile with GConf support])
178 OPTION_DEFAULT_ON([gsettings],[don't compile with GSettings support])
179 OPTION_DEFAULT_ON([selinux],[don't compile with SELinux support])
180 OPTION_DEFAULT_ON([gnutls],[don't use -lgnutls for SSL/TLS support])
182 ## For the times when you want to build Emacs but don't have
183 ## a suitable makeinfo, and can live without the manuals.
184 dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
185 OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
187 ## Makefile.in needs the cache file name.
188 AC_SUBST(cache_file)
190 ## This is an option because I do not know if all info/man support
191 ## compressed files, nor how to test if they do so.
192 OPTION_DEFAULT_ON([compress-info],[don't compress the installed Info pages])
193 if test $with_compress_info = yes; then
194    GZIP_INFO=yes
195 else
196    GZIP_INFO=
198 AC_SUBST(GZIP_INFO)
200 AC_ARG_WITH([pkg-config-prog],dnl
201 [AS_HELP_STRING([--with-pkg-config-prog=PATH],
202                   [path to pkg-config for finding GTK and librsvg])])
203 if test "X${with_pkg_config_prog}" != X; then
204    if test "${with_pkg_config_prog}" != yes; then
205       PKG_CONFIG="${with_pkg_config_prog}"
206    fi
209 CRT_DIR=
210 AC_ARG_WITH([crt-dir],dnl
211 [AS_HELP_STRING([--with-crt-dir=DIR],[directory containing crtn.o etc.
212 The default is /usr/lib, or /usr/lib64 on some platforms.])])
213 CRT_DIR="${with_crt_dir}"
215 AC_ARG_WITH(gameuser,dnl
216 [AS_HELP_STRING([--with-gameuser=USER],[user for shared game score files])])
217 test "X${with_gameuser}" != X && test "${with_gameuser}" != yes \
218   && gameuser="${with_gameuser}"
219 test "X$gameuser" = X && gameuser=games
221 AC_ARG_WITH([gnustep-conf],dnl
222 [AS_HELP_STRING([--with-gnustep-conf=PATH],[path to GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])])
223 test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
224   GNUSTEP_CONFIG_FILE="${with_gnustep_conf}"
225 test "X$GNUSTEP_CONFIG_FILE" = "X" && \
226      GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf
228 AC_ARG_ENABLE(ns-self-contained,
229 [AS_HELP_STRING([--disable-ns-self-contained],
230                 [disable self contained build under NeXTstep])],
231    EN_NS_SELF_CONTAINED=$enableval,
232    EN_NS_SELF_CONTAINED=yes)
234 AC_ARG_ENABLE(locallisppath,
235 [AS_HELP_STRING([--enable-locallisppath=PATH],
236                 [directories Emacs should search for lisp files specific
237                  to this site])],
238 if test "${enableval}" = "no"; then
239   locallisppath=
240 elif test "${enableval}" != "yes"; then
241   locallisppath=${enableval}
244 AC_ARG_ENABLE(checking,
245 [AS_HELP_STRING([--enable-checking@<:@=LIST@:>@],
246                 [enable expensive run-time checks.  With LIST,
247                  enable only specific categories of checks.
248                  Categories are: all,yes,no.
249                  Flags are: stringbytes, stringoverrun, stringfreelist,
250                  xmallocoverrun, conslist, glyphs])],
251 [ac_checking_flags="${enableval}"],[])
252 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
253 for check in $ac_checking_flags
255         case $check in
256         # these set all the flags to specific states
257         yes)            ac_enable_checking=1 ;;
258         no)             ac_enable_checking= ;
259                         ac_gc_check_stringbytes= ;
260                         ac_gc_check_string_overrun= ;
261                         ac_gc_check_string_free_list= ;
262                         ac_xmalloc_overrun= ;
263                         ac_gc_check_cons_list= ;
264                         ac_glyphs_debug= ;;
265         all)            ac_enable_checking=1 ;
266                         ac_gc_check_stringbytes=1 ;
267                         ac_gc_check_string_overrun=1 ;
268                         ac_gc_check_string_free_list=1 ;
269                         ac_xmalloc_overrun=1 ;
270                         ac_gc_check_cons_list=1 ;
271                         ac_glyphs_debug=1 ;;
272         # these enable particular checks
273         stringbytes)    ac_gc_check_stringbytes=1 ;;
274         stringoverrun)  ac_gc_check_string_overrun=1 ;;
275         stringfreelist) ac_gc_check_string_free_list=1 ;;
276         xmallocoverrun) ac_xmalloc_overrun=1 ;;
277         conslist)       ac_gc_check_cons_list=1 ;;
278         glyphs)         ac_glyphs_debug=1 ;;
279         *)      AC_MSG_ERROR(unknown check category $check) ;;
280         esac
281 done
282 IFS="$ac_save_IFS"
284 if test x$ac_enable_checking != x ; then
285   AC_DEFINE(ENABLE_CHECKING, 1,
286 [Define to 1 if expensive run-time data type and consistency checks are enabled.])
288 if test x$ac_gc_check_stringbytes != x ; then
289   AC_DEFINE(GC_CHECK_STRING_BYTES, 1,
290 [Define this temporarily to hunt a bug.  If defined, the size of
291    strings is redundantly recorded in sdata structures so that it can
292    be compared to the sizes recorded in Lisp strings.])
294 if test x$ac_gc_check_string_overrun != x ; then
295   AC_DEFINE(GC_CHECK_STRING_OVERRUN, 1,
296 [Define this to check for short string overrun.])
298 if test x$ac_gc_check_string_free_list != x ; then
299   AC_DEFINE(GC_CHECK_STRING_FREE_LIST, 1,
300 [Define this to check the string free list.])
302 if test x$ac_xmalloc_overrun != x ; then
303   AC_DEFINE(XMALLOC_OVERRUN_CHECK, 1,
304 [Define this to check for malloc buffer overrun.])
306 if test x$ac_gc_check_cons_list != x ; then
307   AC_DEFINE(GC_CHECK_CONS_LIST, 1,
308 [Define this to check for errors in cons list.])
310 if test x$ac_glyphs_debug != x ; then
311   AC_DEFINE(GLYPH_DEBUG, 1,
312 [Define this to enable glyphs debugging code.])
315 AC_ARG_ENABLE(check-lisp-object-type,
316 [AS_HELP_STRING([--enable-check-lisp-object-type],
317                 [enable compile time checks for the Lisp_Object data type.
318                 This is useful for development for catching certain types of bugs.])],
319 if test "${enableval}" != "no"; then
320    AC_DEFINE(CHECK_LISP_OBJECT_TYPE, 1,
321    [Define this to enable compile time checks for the Lisp_Object data type.])
325 AC_ARG_ENABLE(profiling,
326 [AS_HELP_STRING([--enable-profiling],
327                 [build emacs with profiling support.
328                  This might not work on all platforms])],
329 [ac_enable_profiling="${enableval}"],[])
330 if test x$ac_enable_profiling != x ; then
331    PROFILING_CFLAGS="-DPROFILING=1 -pg"
332 else
333    PROFILING_CFLAGS=
335 AC_SUBST(PROFILING_CFLAGS)
337 AC_ARG_ENABLE(autodepend,
338 [AS_HELP_STRING([--enable-autodepend],
339                 [automatically generate dependencies to .h-files.
340                  Requires GNU Make and Gcc. Enabled if GNU Make and Gcc is
341                  found])],
342 [ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
344 #### Make srcdir absolute, if it isn't already.  It's important to
345 #### avoid running the path through pwd unnecessarily, since pwd can
346 #### give you automounter prefixes, which can go away.  We do all this
347 #### so Emacs can find its files when run uninstalled.
348 ## Make sure CDPATH doesn't affect cd (in case PWD is relative).
349 unset CDPATH
350 case "${srcdir}" in
351   /* ) ;;
352   . )
353     ## We may be able to use the $PWD environment variable to make this
354     ## absolute.  But sometimes PWD is inaccurate.
355     ## Note: we used to use ${PWD} at the end instead of `pwd`,
356     ## but that tested only for a well-formed and valid PWD,
357     ## it did not object when PWD was well-formed and valid but just wrong.
358     if test ".${PWD}" != "." && test ".`(cd ${PWD} ; sh -c pwd)`" = ".`pwd`"  ;
359     then
360       srcdir="$PWD"
361     else
362       srcdir="`(cd ${srcdir}; pwd)`"
363     fi
364   ;;
365   *  ) srcdir="`(cd ${srcdir}; pwd)`" ;;
366 esac
368 #### Given the configuration name, set opsysfile to the
369 #### name of s/*.h file we should use.
371 ### Canonicalize the configuration name.
373 AC_CANONICAL_HOST
374 canonical=$host
375 configuration=${host_alias-${build_alias-$host}}
377 dnl This used to use changequote, but, apart from `changequote is evil'
378 dnl per the autoconf manual, we can speed up autoconf somewhat by quoting
379 dnl the great gob of text.  Thus it's not processed for possible expansion.
380 dnl Just make sure the brackets remain balanced.
382 dnl Since Emacs can't find matching pairs of quotes, boundaries are
383 dnl indicated by comments.
384 dnl quotation begins
387 ### If you add support for a new configuration, add code to this
388 ### switch statement to recognize your configuration name and select
389 ### the appropriate operating system file.
391 ### You would hope that you could choose an s/*.h
392 ### file based on the operating system portion.  However, it turns out
393 ### that each s/*.h file is pretty manufacturer-specific.
394 ### So we basically have to have a special case for each
395 ### configuration name.
397 ### As far as handling version numbers on operating systems is
398 ### concerned, make sure things will fail in a fixable way.  If
399 ### /etc/MACHINES doesn't say anything about version numbers, be
400 ### prepared to handle anything reasonably.  If version numbers
401 ### matter, be sure /etc/MACHINES says something about it.
403 opsys='' unported=no
404 case "${canonical}" in
406   ## GNU/Linux and similar ports
407   *-*-linux* )
408     opsys=gnu-linux
409   ;;
411   ## FreeBSD ports
412   *-*-freebsd* )
413     opsys=freebsd
414   ;;
416   ## FreeBSD kernel + glibc based userland
417   *-*-kfreebsd*gnu* )
418     opsys=gnu-kfreebsd
419   ;;
421   ## NetBSD ports
422   *-*-netbsd* )
423     opsys=netbsd
424   ;;
426   ## OpenBSD ports
427   *-*-openbsd* )
428     opsys=openbsd
429   ;;
431   ## Apple Darwin / Mac OS X
432   *-apple-darwin* )
433     case "${canonical}" in
434       i[3456]86-* )  ;;
435       powerpc-* )    ;;
436       x86_64-* )     ;;
437       * )            unported=yes ;;
438     esac
439     opsys=darwin
440     ## Use fink packages if available.
441     ## FIXME find a better way to do this: http://debbugs.gnu.org/11507
442 ##    if test -d /sw/include && test -d /sw/lib; then
443 ##      GCC_TEST_OPTIONS="-I/sw/include -L/sw/lib"
444 ##      NON_GCC_TEST_OPTIONS=${GCC_TEST_OPTIONS}
445 ##    fi
446   ;;
448   ## HP 9000 series 700 and 800, running HP/UX
449   hppa*-hp-hpux10.2* )
450     opsys=hpux10-20
451   ;;
452   hppa*-hp-hpux1[1-9]* )
453     opsys=hpux11
454     CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
455   ;;
457   ## IBM machines
458   rs6000-ibm-aix4.[23]* )
459     opsys=aix4-2
460   ;;
461   powerpc-ibm-aix4.[23]*  )
462     opsys=aix4-2
463   ;;
464   rs6000-ibm-aix[56]* )
465     opsys=aix4-2
466   ;;
467   powerpc-ibm-aix[56]*  )
468     opsys=aix4-2
469   ;;
471   ## Silicon Graphics machines
472   ## Iris 4D
473   mips-sgi-irix6.5 )
474     opsys=irix6-5
475     # Without defining _LANGUAGE_C, things get masked out in the headers
476     # so that, for instance, grepping for `free' in stdlib.h fails and
477     # AC_HEADER_STD_C fails.   (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m).
478     NON_GCC_TEST_OPTIONS="-D_LANGUAGE_C"
479   ;;
481   ## Suns
482   *-sun-solaris* \
483     | i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
484     | x86_64-*-solaris2*    | x86_64-*-sunos5*)
485     case "${canonical}" in
486       i[3456]86-*-* )   ;;
487       amd64-*-*|x86_64-*-*) ;;
488       sparc* )          ;;
489       * )               unported=yes ;;
490     esac
491     case "${canonical}" in
492       *-sunos5.6* | *-solaris2.6* )
493                 opsys=sol2-6
494                 RANLIB="ar -ts"
495                 ;;
496       *-sunos5.[7-9]* | *-solaris2.[7-9]* )
497                 opsys=sol2-6
498                 emacs_check_sunpro_c=yes
499                 ;;
500       *-sunos5* | *-solaris* )
501                 opsys=sol2-10
502                 emacs_check_sunpro_c=yes
503                 ;;
504     esac
505     ## Watch out for a compiler that we know will not work.
506     case "${canonical}" in
507      *-solaris* | *-sunos5* )
508                 if [ "x$CC" = x/usr/ucb/cc ]; then
509                   ## /usr/ucb/cc doesn't work;
510                   ## we should find some other compiler that does work.
511                   unset CC
512                 fi
513                 ;;
514       *) ;;
515     esac
516   ;;
518   ## Intel 386 machines where we don't care about the manufacturer.
519   i[3456]86-*-* )
520     case "${canonical}" in
521       *-cygwin )                opsys=cygwin ;;
522       *-darwin* )               opsys=darwin ;;
523       *-sysv4.2uw* )            opsys=unixware ;;
524       *-sysv5uw* )              opsys=unixware ;;
525       *-sysv5OpenUNIX* )        opsys=unixware ;;
526       ## Otherwise, we'll fall through to the generic opsys code at the bottom.
527     esac
528   ;;
530   * )
531     unported=yes
532   ;;
533 esac
535 ### If the code above didn't choose an operating system, just choose
536 ### an operating system based on the configuration name.  You really
537 ### only want to use this when you have no idea what the right
538 ### operating system is; if you know what operating systems a machine
539 ### runs, it's cleaner to make it explicit in the case statement
540 ### above.
541 if test x"${opsys}" = x; then
542   case "${canonical}" in
543     *-gnu* )                            opsys=gnu ;;
544     * )
545       unported=yes
546     ;;
547   esac
551 dnl quotation ends
553 if test $unported = yes; then
554   AC_MSG_ERROR([Emacs hasn't been ported to `${canonical}' systems.
555 Check `etc/MACHINES' for recognized configuration names.])
558 opsysfile="s/${opsys}.h"
561 #### Choose a compiler.
563 dnl Sets GCC=yes if using gcc.
564 AC_PROG_CC
565 AM_PROG_CC_C_O
567 if test x$GCC = xyes; then
568   test "x$GCC_TEST_OPTIONS" != x && CC="$CC $GCC_TEST_OPTIONS"
569 else
570   test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
573 # Initialize gnulib right after choosing the compiler.
574 gl_EARLY
576 AC_ARG_ENABLE([gcc-warnings],
577   [AS_HELP_STRING([--enable-gcc-warnings],
578                   [turn on lots of GCC warnings. This is intended for
579                    developers, and may generate false alarms when used
580                    with older or non-GNU development tools.])],
581   [case $enableval in
582      yes|no) ;;
583      *)      AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
584    esac
585    gl_gcc_warnings=$enableval],
586   [gl_gcc_warnings=no]
589 AC_ARG_ENABLE(link-time-optimization,
590 [AS_HELP_STRING([--enable-link-time-optimization],
591                 [build emacs with link-time optimization.
592                  This is supported only for GCC since 4.5.0.])],
593 if test "${enableval}" != "no"; then
594    AC_MSG_CHECKING([whether link-time optimization is supported])
595    ac_lto_supported=no
596    if test x$GCC = xyes; then
597       CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null`
598       if test x$CPUS != x; then
599          LTO="-flto=$CPUS"
600       else
601          LTO="-flto"
602       fi
603       old_CFLAGS=$CFLAGS
604       CFLAGS="$CFLAGS $LTO"
605       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
606         [ac_lto_supported=yes], [ac_lto_supported=no])
607       CFLAGS="$old_CFLAGS"
608    fi
609    AC_MSG_RESULT([$ac_lto_supported])
610    if test "$ac_lto_supported" = "yes"; then
611       CFLAGS="$CFLAGS $LTO"
612    fi
615 # gl_GCC_VERSION_IFELSE([major], [minor], [run-if-found], [run-if-not-found])
616 # ------------------------------------------------
617 # If $CPP is gcc-MAJOR.MINOR or newer, then run RUN-IF-FOUND.
618 # Otherwise, run RUN-IF-NOT-FOUND.
619 AC_DEFUN([gl_GCC_VERSION_IFELSE],
620   [AC_PREPROC_IFELSE(
621     [AC_LANG_PROGRAM(
622       [[
623 #if ($1) < __GNUC__ || (($1) == __GNUC__ && ($2) <= __GNUC_MINOR__)
624 /* ok */
625 #else
626 # error "your version of gcc is older than $1.$2"
627 #endif
628       ]]),
629     ], [$3], [$4])
630   ]
633 # When compiling with GCC, prefer -isystem to -I when including system
634 # include files, to avoid generating useless diagnostics for the files.
635 if test "$gl_gcc_warnings" != yes; then
636   isystem='-I'
637 else
638   isystem='-isystem '
640   # This, $nw, is the list of warnings we disable.
641   nw=
643   case $with_x_toolkit in
644     lucid | athena | motif)
645        # Old toolkits mishandle 'const'.
646        nw="$nw -Wwrite-strings"
647        ;;
648     *)
649        gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
650        ;;
651   esac
652   AC_SUBST([WERROR_CFLAGS])
654   nw="$nw -Waggregate-return"       # anachronistic
655   nw="$nw -Wlong-long"              # C90 is anachronistic
656   nw="$nw -Wc++-compat"             # We don't care about C++ compilers
657   nw="$nw -Wundef"                  # Warns on '#if GNULIB_FOO' etc in gnulib
658   nw="$nw -Wtraditional"            # Warns on #elif which we use often
659   nw="$nw -Wcast-qual"              # Too many warnings for now
660   nw="$nw -Wconversion"             # Too many warnings for now
661   nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
662   nw="$nw -Wsign-conversion"        # Too many warnings for now
663   nw="$nw -Woverlength-strings"     # Not a problem these days
664   nw="$nw -Wtraditional-conversion" # Too many warnings for now
665   nw="$nw -Wunreachable-code"       # so buggy that it's now silently ignored
666   nw="$nw -Wpadded"                 # Our structs are not padded
667   nw="$nw -Wredundant-decls"        # we regularly (re)declare functions
668   nw="$nw -Wlogical-op"             # any use of fwrite provokes this
669   nw="$nw -Wformat-nonliteral"      # we do this a lot
670   nw="$nw -Wvla"                    # warnings in gettext.h
671   nw="$nw -Wnested-externs"         # use of XARGMATCH/verify_function__
672   nw="$nw -Wswitch-enum"            # Too many warnings for now
673   nw="$nw -Wswitch-default"         # Too many warnings for now
674   nw="$nw -Wfloat-equal"            # warns about high-quality code
675   nw="$nw -Winline"                 # OK to ignore 'inline'
676   nw="$nw -Wsync-nand"              # irrelevant here, and provokes ObjC warning
677   nw="$nw -Wunsafe-loop-optimizations" # OK to suppress unsafe optimizations
679   # Emacs doesn't care about shadowing; see
680   # <http://lists.gnu.org/archive/html/emacs-diffs/2011-11/msg00265.html>.
681   nw="$nw -Wshadow"
683   # The following lines should be removable at some point.
684   nw="$nw -Wstack-protector"
685   nw="$nw -Wstrict-overflow"
686   nw="$nw -Wsuggest-attribute=pure"
688   gl_MANYWARN_ALL_GCC([ws])
689   gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
690   for w in $ws; do
691     gl_WARN_ADD([$w])
692   done
693   gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one
694   gl_WARN_ADD([-Wno-sign-compare])     # Too many warnings for now
695   gl_WARN_ADD([-Wno-type-limits])      # Too many warnings for now
696   gl_WARN_ADD([-Wno-switch])           # Too many warnings for now
697   gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
698   gl_WARN_ADD([-Wno-format-nonliteral])
700   # In spite of excluding -Wlogical-op above, it is enabled, as of
701   # gcc 4.5.0 20090517.
702   gl_WARN_ADD([-Wno-logical-op])
704   gl_WARN_ADD([-fdiagnostics-show-option])
705   gl_WARN_ADD([-funit-at-a-time])
707   AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
708   AC_DEFINE([_FORTIFY_SOURCE], [2],
709     [enable compile-time and run-time bounds-checking, and some warnings])
710   AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
712   # We use a slightly smaller set of warning options for lib/.
713   # Remove the following and save the result in GNULIB_WARN_CFLAGS.
714   nw=
715   nw="$nw -Wunused-macros"
717   gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
718   AC_SUBST([GNULIB_WARN_CFLAGS])
723 dnl Some other nice autoconf tests.
724 dnl These are commented out, since gl_EARLY and/or Autoconf already does them.
725 dnl AC_PROG_INSTALL
726 dnl AC_PROG_MKDIR_P
727 dnl if test "x$RANLIB" = x; then
728 dnl   AC_PROG_RANLIB
729 dnl fi
731 AC_PATH_PROG(INSTALL_INFO, install-info, :,
732   $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin)
733 dnl Don't use GZIP, which is used by gzip for additional parameters.
734 AC_PATH_PROG(GZIP_PROG, gzip)
736 if test $opsys = gnu-linux; then
737   AC_PATH_PROG(PAXCTL, paxctl,,
738     [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin])
741 ## Need makeinfo >= 4.7 (?) to build the manuals.
742 AC_PATH_PROG(MAKEINFO, makeinfo, no)
743 dnl By this stage, configure has already checked for egrep and set EGREP,
744 dnl or exited with an error if no egrep was found.
745 if test "$MAKEINFO" != "no" && \
746   test x"`$MAKEINFO --version 2> /dev/null | $EGREP 'texinfo[[^0-9]]*([[1-4]][[0-9]]+|[[5-9]]|4\.[[7-9]]|4\.[[1-6]][[0-9]]+)'`" = x; then
747    MAKEINFO=no
750 ## Makeinfo is unusual.  For a released Emacs, the manuals are
751 ## pre-built, and not deleted by the normal clean rules.  makeinfo is
752 ## therefore in the category of "special tools" not normally required, which
753 ## configure does not have to check for (eg autoconf itself).
754 ## In a Bazaar checkout on the other hand, the manuals are not included.
755 ## So makeinfo is a requirement to build from Bazaar, and configure
756 ## should test for it as it does for any other build requirement.
757 ## We use the presence of $srcdir/info/emacs to distinguish a release,
758 ## with pre-built manuals, from a Bazaar checkout.
759 HAVE_MAKEINFO=yes
761 if test "$MAKEINFO" = "no"; then
762   MAKEINFO=makeinfo
763   if test "x${with_makeinfo}" = "xno"; then
764     HAVE_MAKEINFO=no
765   elif test ! -e $srcdir/info/emacs; then
766     AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.7, and your
767 source tree does not seem to have pre-built manuals in the `info' directory.
768 Either install a suitable version of makeinfo, or re-run configure
769 with the `--without-makeinfo' option to build without the manuals.] )
770   fi
772 AC_SUBST(HAVE_MAKEINFO)
774 dnl Just so that there is only a single place we need to edit.
775 INFO_EXT=.info
776 INFO_OPTS=--no-split
777 AC_SUBST(INFO_EXT)
778 AC_SUBST(INFO_OPTS)
780 dnl Add our options to ac_link now, after it is set up.
782 if test x$GCC = xyes; then
783   test "x$GCC_LINK_TEST_OPTIONS" != x && \
784     ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
785 else
786   test "x$NON_GCC_LINK_TEST_OPTIONS" != x && \
787     ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
790 dnl We need -znocombreloc if we're using a relatively recent GNU ld.
791 dnl If we can link with the flag, it shouldn't do any harm anyhow.
792 dnl (Don't use `-z nocombreloc' as -z takes no arg on Irix.)
793 dnl Treat GCC specially since it just gives a non-fatal `unrecognized option'
794 dnl if not built to support GNU ld.
796 late_LDFLAGS=$LDFLAGS
797 if test x$GCC = xyes; then
798   LDFLAGS="$LDFLAGS -Wl,-znocombreloc"
799 else
800   LDFLAGS="$LDFLAGS -znocombreloc"
803 AC_MSG_CHECKING([for -znocombreloc])
804 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
805   [AC_MSG_RESULT(yes)],
806   LDFLAGS=$late_LDFLAGS
807   [AC_MSG_RESULT(no)])
810 dnl The function dump-emacs will not be defined and temacs will do
811 dnl (load "loadup") automatically unless told otherwise.
812 test "x$CANNOT_DUMP" = "x" && CANNOT_DUMP=no
813 case "$opsys" in
814   your-opsys-here) CANNOT_DUMP=yes ;;
815 esac
817 test "$CANNOT_DUMP" = "yes" && \
818   AC_DEFINE(CANNOT_DUMP, 1, [Define if Emacs cannot be dumped on your system.])
820 AC_SUBST(CANNOT_DUMP)
823 UNEXEC_OBJ=unexelf.o
824 case "$opsys" in
825   # MSDOS uses unexcoff.o
826   # MSWindows uses unexw32.o
827   aix4-2)
828    UNEXEC_OBJ=unexaix.o
829    ;;
830   cygwin)
831    UNEXEC_OBJ=unexcw.o
832    ;;
833   darwin)
834    UNEXEC_OBJ=unexmacosx.o
835    ;;
836   hpux10-20 | hpux11)
837    UNEXEC_OBJ=unexhp9k800.o
838    ;;
839   sol2-10)
840    # Use the Solaris dldump() function, called from unexsol.c, to dump
841    # emacs, instead of the generic ELF dump code found in unexelf.c.
842    # The resulting binary has a complete symbol table, and is better
843    # for debugging and other observability tools (debuggers, pstack, etc).
844    #
845    # If you encounter a problem using dldump(), please consider sending
846    # a message to the OpenSolaris tools-linking mailing list:
847    #      http://mail.opensolaris.org/mailman/listinfo/tools-linking
848    #
849    # It is likely that dldump() works with older Solaris too, but this has
850    # not been tested, so for now this change is for Solaris 10 or newer.
851    UNEXEC_OBJ=unexsol.o
852    ;;
853 esac
855 LD_SWITCH_SYSTEM=
856 case "$opsys" in
857   freebsd)
858    ## Let `ld' find image libs and similar things in /usr/local/lib.
859    ## The system compiler, GCC, has apparently been modified to not
860    ## look there, contrary to what a stock GCC would do.
861 ### It's not our place to do this.  See bug#10313#17.
862 ###   LD_SWITCH_SYSTEM=-L/usr/local/lib
863       :
864    ;;
866   gnu-linux)
867    ## cpp test was "ifdef __mips__", but presumably this is equivalent...
868    case $host_cpu in mips*) LD_SWITCH_SYSTEM="-G 0";; esac
869    ;;
871   netbsd)
872 ### It's not our place to do this.  See bug#10313#17.
873 ###   LD_SWITCH_SYSTEM="-Wl,-rpath,/usr/pkg/lib -L/usr/pkg/lib -Wl,-rpath,/usr/local/lib -L/usr/local/lib"
874       :
875    ;;
877   openbsd)
878    ## Han Boetes <han@mijncomputer.nl> says this is necessary,
879    ## otherwise Emacs dumps core on elf systems.
880    LD_SWITCH_SYSTEM="-Z"
881    ;;
882 esac
883 AC_SUBST(LD_SWITCH_SYSTEM)
885 ac_link="$ac_link $LD_SWITCH_SYSTEM"
887 ## This setting of LD_SWITCH_SYSTEM references LD_SWITCH_X_SITE_RPATH,
888 ## which has not been defined yet.  When this was handled with cpp,
889 ## it was expanded to null when configure sourced the s/*.h file.
890 ## Thus LD_SWITCH_SYSTEM had different values in configure and the Makefiles.
891 ## FIXME it would be cleaner to put this in LD_SWITCH_SYSTEM_TEMACS
892 ## (or somesuch), but because it is supposed to go at the _front_
893 ## of LD_SWITCH_SYSTEM, we cannot do that in exactly the same way.
894 ## Compare with the gnu-linux case below, which added to the end
895 ## of LD_SWITCH_SYSTEM, and so can instead go at the front of
896 ## LD_SWITCH_SYSTEM_TEMACS.
897 case "$opsys" in
898   netbsd|openbsd)
899    LD_SWITCH_SYSTEM="\$(LD_SWITCH_X_SITE_RPATH) $LD_SWITCH_SYSTEM" ;;
900 esac
903 C_SWITCH_MACHINE=
904 case $canonical in
905  alpha*)
906   AC_CHECK_DECL([__ELF__])
907   if test "$ac_cv_have_decl___ELF__" = "yes"; then
908     ## With ELF, make sure that all common symbols get allocated to in the
909     ## data section.  Otherwise, the dump of temacs may miss variables in
910     ## the shared library that have been initialized.  For example, with
911     ## GNU libc, __malloc_initialized would normally be resolved to the
912     ## shared library's .bss section, which is fatal.
913     if test "x$GCC" = "xyes"; then
914       C_SWITCH_MACHINE="-fno-common"
915     else
916       AC_MSG_ERROR([What gives?  Fix me if DEC Unix supports ELF now.])
917     fi
918   else
919     UNEXEC_OBJ=unexalpha.o
920   fi
921   ;;
922 esac
923 AC_SUBST(C_SWITCH_MACHINE)
925 AC_SUBST(UNEXEC_OBJ)
927 C_SWITCH_SYSTEM=
928 ## Some programs in src produce warnings saying certain subprograms
929 ## are too complex and need a MAXMEM value greater than 2000 for
930 ## additional optimization.  --nils@exp-math.uni-essen.de
931 test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
932   C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
933 ## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
934 ## It is redundant in glibc2, since we define _GNU_SOURCE.
935 AC_SUBST(C_SWITCH_SYSTEM)
938 LIBS_SYSTEM=
939 case "$opsys" in
940   ## IBM's X11R5 uses -lIM and -liconv in AIX 3.2.2.
941   aix4-2) LIBS_SYSTEM="-lrts -lIM -liconv" ;;
943   freebsd) LIBS_SYSTEM="-lutil" ;;
945   hpux*) LIBS_SYSTEM="-l:libdld.sl" ;;
947   sol2*) LIBS_SYSTEM="-lsocket -lnsl" ;;
949   ## Motif needs -lgen.
950   unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
951 esac
952 AC_SUBST(LIBS_SYSTEM)
955 ### Make sure subsequent tests use flags consistent with the build flags.
957 if test x"${OVERRIDE_CPPFLAGS}" != x; then
958   CPPFLAGS="${OVERRIDE_CPPFLAGS}"
959 else
960   CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
963 # Suppress obsolescent Autoconf test for size_t; Emacs assumes C89 or better.
964 AC_DEFUN([AC_TYPE_SIZE_T])
965 # Likewise for obsolescent test for uid_t, gid_t; Emacs assumes them.
966 AC_DEFUN([AC_TYPE_UID_T])
969 LIB_MATH=-lm
970 LIB_STANDARD=
971 START_FILES=
972 dnl Current possibilities handled by sed (aix4-2 -> aix,
973 dnl gnu-linux -> gnu/linux, etc.):
974 dnl gnu, gnu/linux, gnu/kfreebsd, aix, cygwin, darwin, hpux, irix.
975 dnl And special cases: berkeley-unix, usg-unix-v, ms-dos, windows-nt.
976 SYSTEM_TYPE=`echo $opsys | sed -e 's/[[0-9]].*//' -e 's|-|/|'`
978 dnl NB do not use CRT_DIR unquoted here, since it might not be set yet.
979 case $opsys in
980   cygwin )
981     LIB_MATH=
982     START_FILES='pre-crt0.o'
983     ;;
984   darwin )
985     ## Adding -lm confuses the dynamic linker, so omit it.
986     LIB_MATH=
987     START_FILES='pre-crt0.o'
988     ;;
989   freebsd )
990     LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o $(CRT_DIR)/crtn.o'
991     START_FILES='pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtbegin.o'
992     SYSTEM_TYPE=berkeley-unix
993     ;;
994   gnu-linux | gnu-kfreebsd )
995     LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtn.o'
996     START_FILES='pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o'
997     ;;
998   hpux10-20 | hpux11 )
999     LIB_STANDARD=-lc
1000     START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o'
1001     ;;
1002   dnl NB this may be adjusted below.
1003   netbsd | openbsd )
1004     LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o'
1005     START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crtbegin.o'
1006     SYSTEM_TYPE=berkeley-unix
1007     ;;
1009   sol2* | unixware )
1010     SYSTEM_TYPE=usg-unix-v
1011     ;;
1013 esac
1015 AC_SUBST(LIB_MATH)
1016 AC_SUBST(START_FILES)
1017 AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE",
1018   [The type of system you are compiling for; sets `system-type'.])
1020 dnl Not all platforms use crtn.o files.  Check if the current one does.
1021 crt_files=
1023 for file in x $LIB_STANDARD $START_FILES; do
1024   case "$file" in
1025     *CRT_DIR*) crt_files="$crt_files `echo $file | sed -e 's|.*/||'`" ;;
1026   esac
1027 done
1029 if test "x$crt_files" != x; then
1031   ## If user specified a crt-dir, use that unconditionally.
1032   crt_gcc=no
1034   if test "X$CRT_DIR" = "X"; then
1036     CRT_DIR=/usr/lib            # default
1038     case "$canonical" in
1039       x86_64-*-linux-gnu* | s390x-*-linux-gnu*)
1040       ## On x86-64 and s390x GNU/Linux distributions, the standard library
1041       ## can be in a variety of places.  We only try /usr/lib64 and /usr/lib.
1042       ## For anything else (eg /usr/lib32), it is up the user to specify
1043       ## the location (bug#5655).
1044       ## Test for crtn.o, not just the directory, because sometimes the
1045       ## directory exists but does not have the relevant files (bug#1287).
1046       ## FIXME better to test for binary compatibility somehow.
1047       test -e /usr/lib64/crtn.o && CRT_DIR=/usr/lib64
1048       ;;
1050       powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*) CRT_DIR=/usr/lib64 ;;
1051     esac
1053     case "$opsys" in
1054       hpux10-20) CRT_DIR=/lib ;;
1055     esac
1057     test "x${GCC}" = xyes && crt_gcc=yes
1059   fi                            # CRT_DIR = ""
1061   crt_missing=
1063   for file in $crt_files; do
1065     ## If we're using gcc, try to determine it automatically by asking
1066     ## gcc.  [If this doesn't work, CRT_DIR will remain at the
1067     ## system-dependent default from above.]
1068     if test $crt_gcc = yes && test ! -e $CRT_DIR/$file; then
1070        crt_file=`$CC --print-file-name=$file 2>/dev/null`
1071        case "$crt_file" in
1072          */*)
1073            CRT_DIR=`AS_DIRNAME(["$crt_file"])`
1074            ;;
1075        esac
1076     fi
1078     dnl We expect all the files to be in a single directory, so after the
1079     dnl first there is no point asking gcc.
1080     crt_gcc=no
1082     test -e $CRT_DIR/$file || crt_missing="$crt_missing $file"
1083   done                          # $crt_files
1085   test "x$crt_missing" = x || \
1086     AC_MSG_ERROR([Required file(s) not found:$crt_missing
1087 Try using the --with-crt-dir option.])
1089 fi                              # crt_files != ""
1091 AC_SUBST(CRT_DIR)
1093 case $opsys in
1094   netbsd | openbsd )
1095     if test -f $CRT_DIR/crti.o; then
1097         test -f $CRT_DIR/crtn.o || \
1098           AC_MSG_ERROR([Required file not found: crtn.o])
1100         LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o $(CRT_DIR)/crtn.o'
1101         START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtbegin.o'
1102     fi
1103     ;;
1104 esac
1107 pre_PKG_CONFIG_CFLAGS=$CFLAGS
1108 pre_PKG_CONFIG_LIBS=$LIBS
1110 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1112 dnl This function definition taken from Gnome 2.0
1113 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
1114 dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
1115 dnl also defines GSTUFF_PKG_ERRORS on error
1116 AC_DEFUN([PKG_CHECK_MODULES], [
1117   succeeded=no
1119   if test "$PKG_CONFIG" = "no" ; then
1120      ifelse([$4], , [AC_MSG_ERROR([
1121       *** The pkg-config script could not be found. Make sure it is in your path, or give the full path to 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])
1122   else
1123      PKG_CONFIG_MIN_VERSION=0.9.0
1124      if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
1125         AC_MSG_CHECKING(for $2)
1127         if $PKG_CONFIG --exists "$2" 2>&AS_MESSAGE_LOG_FD &&
1128            $1_CFLAGS=`$PKG_CONFIG --cflags "$2" 2>&AS_MESSAGE_LOG_FD` &&
1129            $1_LIBS=`$PKG_CONFIG --libs "$2" 2>&AS_MESSAGE_LOG_FD`; then
1130             edit_cflags="
1131               s,///*,/,g
1132               s/^/ /
1133               s/ -I/ $isystem/g
1134               s/^ //
1135             "
1136             $1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"`
1137             $1_LIBS=`AS_ECHO(["$$1_LIBS"]) | sed -e 's,///*,/,g'`
1138             AC_MSG_RESULT([yes CFLAGS='$$1_CFLAGS' LIBS='$$1_LIBS'])
1139             succeeded=yes
1140         else
1141             AC_MSG_RESULT(no)
1142             $1_CFLAGS=""
1143             $1_LIBS=""
1144             ## If we have a custom action on failure, don't print errors, but
1145             ## do set a variable so people can do so.
1146             $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
1147             ifelse([$4], ,echo $$1_PKG_ERRORS,)
1148         fi
1150         AC_SUBST($1_CFLAGS)
1151         AC_SUBST($1_LIBS)
1152      else
1153         echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
1154         echo "*** See http://www.freedesktop.org/software/pkgconfig"
1155      fi
1156   fi
1158   if test $succeeded = yes; then
1159      ifelse([$3], , :, [$3])
1160   else
1161      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])
1162   fi
1166 if test "${with_sound}" != "no"; then
1167   # Sound support for GNU/Linux and the free BSDs.
1168   AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h,
1169     have_sound_header=yes)
1170   # Emulation library used on NetBSD.
1171   AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
1172   AC_SUBST(LIBSOUND)
1174   ALSA_REQUIRED=1.0.0
1175   ALSA_MODULES="alsa >= $ALSA_REQUIRED"
1176   PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
1177   if test $HAVE_ALSA = yes; then
1178     SAVE_CFLAGS="$CFLAGS"
1179     SAVE_LIBS="$LIBS"
1180     CFLAGS="$ALSA_CFLAGS $CFLAGS"
1181     LIBS="$ALSA_LIBS $LIBS"
1182     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])],
1183                     emacs_alsa_normal=yes,
1184                     emacs_alsa_normal=no)
1185     if test "$emacs_alsa_normal" != yes; then
1186       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]],
1187                      [[snd_lib_error_set_handler (0);]])],
1188                      emacs_alsa_subdir=yes,
1189                      emacs_alsa_subdir=no)
1190       if test "$emacs_alsa_subdir" != yes; then
1191         AC_MSG_ERROR([pkg-config found alsa, but it does not compile.  See config.log for error messages.])
1192       fi
1193       ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
1194     fi
1196     CFLAGS="$SAVE_CFLAGS"
1197     LIBS="$SAVE_LIBS"
1198     LIBSOUND="$LIBSOUND $ALSA_LIBS"
1199     CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
1200     AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
1201   fi
1203   dnl Define HAVE_SOUND if we have sound support.  We know it works and
1204   dnl compiles only on the specified platforms.  For others, it
1205   dnl probably doesn't make sense to try.
1206   if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
1207      case "$opsys" in
1208        dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
1209        gnu-linux|freebsd|netbsd)
1210          AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.])
1211          ;;
1212      esac
1213   fi
1215   AC_SUBST(CFLAGS_SOUND)
1218 dnl checks for header files
1219 AC_CHECK_HEADERS_ONCE(
1220   linux/version.h sys/systeminfo.h
1221   stdio_ext.h fcntl.h coff.h pty.h
1222   sys/vlimit.h sys/resource.h
1223   sys/utsname.h pwd.h utmp.h dirent.h util.h)
1225 AC_MSG_CHECKING(if personality LINUX32 can be set)
1226 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/personality.h>]], [[personality (PER_LINUX32)]])],
1227                emacs_cv_personality_linux32=yes,
1228                emacs_cv_personality_linux32=no)
1229 AC_MSG_RESULT($emacs_cv_personality_linux32)
1231 if test $emacs_cv_personality_linux32 = yes; then
1232   AC_DEFINE(HAVE_PERSONALITY_LINUX32, 1,
1233             [Define to 1 if personality LINUX32 can be set.])
1236 dnl On Solaris 8 there's a compilation warning for term.h because
1237 dnl it doesn't define `bool'.
1238 AC_CHECK_HEADERS(term.h, , , -)
1239 AC_HEADER_TIME
1240 AC_CHECK_DECLS([sys_siglist])
1241 if test $ac_cv_have_decl_sys_siglist != yes; then
1242   # For Tru64, at least:
1243   AC_CHECK_DECLS([__sys_siglist])
1244   if test $ac_cv_have_decl___sys_siglist = yes; then
1245     AC_DEFINE(sys_siglist, __sys_siglist,
1246               [Define to any substitute for sys_siglist.])
1247   fi
1249 AC_HEADER_SYS_WAIT
1251 dnl Check for speed_t typedef.
1252 AC_CACHE_CHECK(for speed_t, emacs_cv_speed_t,
1253   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <termios.h>]], [[speed_t x = 1;]])],
1254     emacs_cv_speed_t=yes, emacs_cv_speed_t=no)])
1255 if test $emacs_cv_speed_t = yes; then
1256   AC_DEFINE(HAVE_SPEED_T, 1,
1257            [Define to 1 if `speed_t' is declared by <termios.h>.])
1260 AC_CACHE_CHECK(for struct exception, emacs_cv_struct_exception,
1261 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
1262 [[static struct exception x; x.arg1 = x.arg2 = x.retval; x.name = ""; x.type = 1;]])],
1263   emacs_cv_struct_exception=yes, emacs_cv_struct_exception=no))
1264 HAVE_EXCEPTION=$emacs_cv_struct_exception
1265 dnl Define on Darwin so emacs symbols will not conflict with those
1266 dnl in the System framework.  Otherwise -prebind will not work.
1267 if test $emacs_cv_struct_exception != yes || test $opsys = darwin; then
1268   AC_DEFINE(NO_MATHERR, 1, [Define to 1 if you don't have struct exception in math.h.])
1271 AC_CHECK_HEADERS_ONCE(sys/socket.h)
1272 AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT
1273 #if HAVE_SYS_SOCKET_H
1274 #include <sys/socket.h>
1275 #endif])
1276 AC_CHECK_HEADERS(ifaddrs.h, , , [AC_INCLUDES_DEFAULT
1277 #if HAVE_SYS_SOCKET_H
1278 #include <sys/socket.h>
1279 #endif])
1280 AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT
1281 #if HAVE_SYS_SOCKET_H
1282 #include <sys/socket.h>
1283 #endif])
1285 dnl checks for structure members
1286 AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr,
1287                   struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr,
1288                   struct ifreq.ifr_addr,
1289                   struct ifreq.ifr_addr.sa_len], , ,
1290                  [AC_INCLUDES_DEFAULT
1291 #if HAVE_SYS_SOCKET_H
1292 #include <sys/socket.h>
1293 #endif
1294 #if HAVE_NET_IF_H
1295 #include <net/if.h>
1296 #endif])
1298 dnl Check for endianness.
1299 dnl AC_C_BIGENDIAN is done by gnulib.
1301 dnl check for Make feature
1302 dnl AC_PROG_MAKE_SET is done by Automake.
1304 DEPFLAGS=
1305 MKDEPDIR=":"
1306 deps_frag=deps.mk
1307 dnl check for GNU Make if we have GCC and autodepend is on.
1308 if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
1309    AC_MSG_CHECKING([whether we are using GNU Make])
1310    HAVE_GNU_MAKE=no
1311    testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
1312    if test "x$testval" != x; then
1313       HAVE_GNU_MAKE=yes
1314    else
1315       ac_enable_autodepend=no
1316    fi
1317    AC_MSG_RESULT([$HAVE_GNU_MAKE])
1318    if test $HAVE_GNU_MAKE = yes; then
1319       AC_MSG_CHECKING([whether gcc understands -MMD -MF])
1320       SAVE_CFLAGS="$CFLAGS"
1321       CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
1322       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
1323       CFLAGS="$SAVE_CFLAGS"
1324       test -f deps.d || ac_enable_autodepend=no
1325       rm -rf deps.d
1326       AC_MSG_RESULT([$ac_enable_autodepend])
1327    fi
1328    if test $ac_enable_autodepend = yes; then
1329       DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
1330       ## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe.
1331       MKDEPDIR='${MKDIR_P} ${DEPDIR}'
1332       deps_frag=autodeps.mk
1333    fi
1335 deps_frag=$srcdir/src/$deps_frag
1336 AC_SUBST(MKDEPDIR)
1337 AC_SUBST(DEPFLAGS)
1338 AC_SUBST_FILE(deps_frag)
1341 lisp_frag=$srcdir/src/lisp.mk
1342 AC_SUBST_FILE(lisp_frag)
1345 dnl checks for operating system services
1346 AC_SYS_LONG_FILE_NAMES
1348 #### Choose a window system.
1350 AC_PATH_X
1351 if test "$no_x" = yes; then
1352   window_system=none
1353 else
1354   window_system=x11
1357 LD_SWITCH_X_SITE_RPATH=
1358 if test "${x_libraries}" != NONE; then
1359   if test -n "${x_libraries}"; then
1360     LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
1361     LD_SWITCH_X_SITE_RPATH=-Wl,-rpath,`echo ${x_libraries} | sed -e "s/:/ -Wl,-rpath,/g"`
1362   fi
1363   x_default_search_path=""
1364   x_search_path=${x_libraries}
1365   if test -z "${x_search_path}"; then
1366     x_search_path=/usr/lib
1367   fi
1368   for x_library in `echo ${x_search_path}: | \
1369                     sed -e "s/:/ /g" -e p -e "s:/lib[[^ /]]* :/share :g"`; do
1370     x_search_path="\
1371 ${x_library}/X11/%L/%T/%N%C%S:\
1372 ${x_library}/X11/%l/%T/%N%C%S:\
1373 ${x_library}/X11/%T/%N%C%S:\
1374 ${x_library}/X11/%L/%T/%N%S:\
1375 ${x_library}/X11/%l/%T/%N%S:\
1376 ${x_library}/X11/%T/%N%S"
1377     if test x"${x_default_search_path}" = x; then
1378       x_default_search_path=${x_search_path}
1379     else
1380       x_default_search_path="${x_search_path}:${x_default_search_path}"
1381     fi
1382   done
1384 AC_SUBST(LD_SWITCH_X_SITE_RPATH)
1386 if test "${x_includes}" != NONE && test -n "${x_includes}"; then
1387   C_SWITCH_X_SITE="$isystem"`echo ${x_includes} | sed -e "s/:/ $isystem/g"`
1390 if test x"${x_includes}" = x; then
1391   bitmapdir=/usr/include/X11/bitmaps
1392 else
1393   # accumulate include directories that have X11 bitmap subdirectories
1394   bmd_acc="dummyval"
1395   for bmd in `echo ${x_includes} | sed -e "s/:/ /g"`; do
1396     if test -d "${bmd}/X11/bitmaps"; then
1397       bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps"
1398     fi
1399     if test -d "${bmd}/bitmaps"; then
1400       bmd_acc="${bmd_acc}:${bmd}/bitmaps"
1401     fi
1402   done
1403   if test ${bmd_acc} != "dummyval"; then
1404     bitmapdir=`echo ${bmd_acc} | sed -e "s/^dummyval://"`
1405   fi
1408 HAVE_NS=no
1409 NS_IMPL_COCOA=no
1410 NS_IMPL_GNUSTEP=no
1411 tmp_CPPFLAGS="$CPPFLAGS"
1412 tmp_CFLAGS="$CFLAGS"
1413 CPPFLAGS="$CPPFLAGS -x objective-c"
1414 CFLAGS="$CFLAGS -x objective-c"
1415 TEMACS_LDFLAGS2="\${LDFLAGS}"
1416 GNU_OBJC_CFLAGS=
1417 if test "${with_ns}" != no; then
1418   if test "${opsys}" = darwin; then
1419      NS_IMPL_COCOA=yes
1420      ns_appdir=`pwd`/nextstep/Emacs.app
1421      ns_appbindir=${ns_appdir}/Contents/MacOS
1422      ns_appresdir=${ns_appdir}/Contents/Resources
1423      ns_appsrc=${srcdir}/nextstep/Cocoa/Emacs.base
1424   elif test -f $GNUSTEP_CONFIG_FILE; then
1425      NS_IMPL_GNUSTEP=yes
1426      ns_appdir=`pwd`/nextstep/Emacs.app
1427      ns_appbindir=${ns_appdir}
1428      ns_appresdir=${ns_appdir}/Resources
1429      ns_appsrc=${srcdir}/nextstep/GNUstep/Emacs.base
1430      dnl FIXME sourcing this several times in subshells seems inefficient.
1431      GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
1432      GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
1433      dnl I seemed to need these as well with GNUstep-startup 0.25.
1434      GNUSTEP_LOCAL_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_HEADERS)"
1435      GNUSTEP_LOCAL_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_LIBRARIES)"
1436      test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \
1437        GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}"
1438      test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \
1439        GNUSTEP_LOCAL_LIBRARIES="-L${GNUSTEP_LOCAL_LIBRARIES}"
1440      CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1441      CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1442      LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
1443      LIB_STANDARD=
1444      START_FILES=
1445      TEMACS_LDFLAGS2=
1446      dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1.
1447      dnl If they had chosen to either define it or not, we could have
1448      dnl just used AC_CHECK_DECL here.
1449      AC_CACHE_CHECK(if GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS,
1450        emacs_cv_objc_exceptions,
1451 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <GNUstepBase/GSConfig.h>]],
1452 [[#if defined BASE_NATIVE_OBJC_EXCEPTIONS && BASE_NATIVE_OBJC_EXCEPTIONS > 0
1454 #else
1455 fail;
1456 #endif]])], emacs_cv_objc_exceptions=yes, emacs_cv_objc_exceptions=no ) )
1457      if test $emacs_cv_objc_exceptions = yes; then
1458        dnl _NATIVE_OBJC_EXCEPTIONS is used by the GNUstep headers.
1459        AC_DEFINE(_NATIVE_OBJC_EXCEPTIONS, 1,
1460          [Define if GNUstep uses ObjC exceptions.])
1461        GNU_OBJC_CFLAGS="-fobjc-exceptions"
1462      fi
1463   fi
1465   dnl This is only used while we test the NS headers, it gets reset below.
1466   CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS"
1468   AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
1469                   [AC_MSG_ERROR([`--with-ns' was specified, but the include
1470   files are missing or cannot be compiled.])])
1471   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <Foundation/NSObjCRuntime.h>],
1472                                      [NSInteger i;])],
1473                     ns_have_nsinteger=yes,
1474                     ns_have_nsinteger=no)
1475   if test $ns_have_nsinteger = yes; then
1476     AC_DEFINE(NS_HAVE_NSINTEGER, 1, [Define to 1 if `NSInteger' is defined.])
1477   fi
1479 AC_SUBST(TEMACS_LDFLAGS2)
1481 INSTALL_ARCH_INDEP_EXTRA=install-etc
1482 ns_self_contained=no
1483 ns_frag=/dev/null
1484 NS_OBJ=
1485 NS_OBJC_OBJ=
1486 if test "${HAVE_NS}" = yes; then
1487   if test "$with_toolkit_scroll_bars" = "no"; then
1488     AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for Nextstep.])
1489   fi
1491   window_system=nextstep
1492   with_xft=no
1493   # set up packaging dirs
1494   if test "${EN_NS_SELF_CONTAINED}" = yes; then
1495      ns_self_contained=yes
1496      prefix=${ns_appresdir}
1497      exec_prefix=${ns_appbindir}
1498      dnl This one isn't really used, only archlibdir is.
1499      libexecdir="\${ns_appbindir}/libexec"
1500      archlibdir="\${ns_appbindir}/libexec"
1501      docdir="\${ns_appresdir}/etc"
1502      etcdir="\${ns_appresdir}/etc"
1503      dnl FIXME maybe set datarootdir instead.
1504      dnl That would also get applications, icons, man.
1505      infodir="\${ns_appresdir}/info"
1506      mandir="\${ns_appresdir}/man"
1507      lispdir="\${ns_appresdir}/lisp"
1508      leimdir="\${ns_appresdir}/leim"
1509      INSTALL_ARCH_INDEP_EXTRA=
1510   fi
1511   ns_frag=$srcdir/src/ns.mk
1512   NS_OBJ="fontset.o fringe.o image.o"
1513   NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o"
1515 CFLAGS="$tmp_CFLAGS"
1516 CPPFLAGS="$tmp_CPPFLAGS"
1517 AC_SUBST(INSTALL_ARCH_INDEP_EXTRA)
1518 AC_SUBST(ns_self_contained)
1519 AC_SUBST(NS_OBJ)
1520 AC_SUBST(NS_OBJC_OBJ)
1521 AC_SUBST(LIB_STANDARD)
1522 AC_SUBST_FILE(ns_frag)
1524 case "${window_system}" in
1525   x11 )
1526     HAVE_X_WINDOWS=yes
1527     HAVE_X11=yes
1528     case "${with_x_toolkit}" in
1529       athena | lucid ) USE_X_TOOLKIT=LUCID ;;
1530       motif ) USE_X_TOOLKIT=MOTIF ;;
1531       gtk ) with_gtk=yes
1532 dnl Don't set this for GTK.  A lot of tests below assumes Xt when
1533 dnl USE_X_TOOLKIT is set.
1534             USE_X_TOOLKIT=none ;;
1535       gtk3 ) with_gtk3=yes
1536              USE_X_TOOLKIT=none ;;
1537       no ) USE_X_TOOLKIT=none ;;
1538 dnl If user did not say whether to use a toolkit, make this decision later:
1539 dnl use the toolkit if we have gtk, or X11R5 or newer.
1540       * ) USE_X_TOOLKIT=maybe ;;
1541     esac
1542   ;;
1543   nextstep | none )
1544     HAVE_X_WINDOWS=no
1545     HAVE_X11=no
1546     USE_X_TOOLKIT=none
1547   ;;
1548 esac
1550 if test "$window_system" = none && test "X$with_x" != "Xno"; then
1551    AC_CHECK_PROG(HAVE_XSERVER, X, true, false)
1552    if test "$HAVE_XSERVER" = true ||
1553       test -n "$DISPLAY" ||
1554       test "`echo /usr/lib/libX11.*`" != "/usr/lib/libX11.*"; then
1555         AC_MSG_ERROR([You seem to be running X, but no X development libraries
1556 were found.  You should install the relevant development files for X
1557 and for the toolkit you want, such as Gtk+, Lesstif or Motif.  Also make
1558 sure you have development files for image handling, i.e.
1559 tiff, gif, jpeg, png and xpm.
1560 If you are sure you want Emacs compiled without X window support, pass
1561   --without-x
1562 to configure.])
1563    fi
1566 ### If we're using X11, we should use the X menu package.
1567 HAVE_MENUS=no
1568 case ${HAVE_X11} in
1569   yes ) HAVE_MENUS=yes ;;
1570 esac
1572 # Does the opsystem file prohibit the use of the GNU malloc?
1573 # Assume not, until told otherwise.
1574 GNU_MALLOC=yes
1576 AC_CACHE_CHECK(
1577   [whether malloc is Doug Lea style],
1578   [emacs_cv_var_doug_lea_malloc],
1579   [AC_LINK_IFELSE(
1580      [AC_LANG_PROGRAM(
1581         [[#include <malloc.h>
1582           static void hook (void) {}]],
1583         [[malloc_set_state (malloc_get_state ());
1584           __after_morecore_hook = hook;
1585           __malloc_initialize_hook = hook;]])],
1586      [emacs_cv_var_doug_lea_malloc=yes],
1587      [emacs_cv_var_doug_lea_malloc=no])])
1588 doug_lea_malloc=$emacs_cv_var_doug_lea_malloc
1591 dnl See comments in aix4-2.h about maybe using system malloc there.
1592 system_malloc=no
1593 case "$opsys" in
1594   ## darwin ld insists on the use of malloc routines in the System framework.
1595   darwin|sol2-10) system_malloc=yes ;;
1596 esac
1598 if test "${system_malloc}" = "yes"; then
1599   AC_DEFINE(SYSTEM_MALLOC, 1, [Define to use system malloc.])
1600   GNU_MALLOC=no
1601   GNU_MALLOC_reason="
1602     (The GNU allocators don't work with this system configuration.)"
1603   GMALLOC_OBJ=
1604   VMLIMIT_OBJ=
1605 else
1606   test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
1607   VMLIMIT_OBJ=vm-limit.o
1609 AC_SUBST(GMALLOC_OBJ)
1610 AC_SUBST(VMLIMIT_OBJ)
1612 if test "$doug_lea_malloc" = "yes" ; then
1613   if test "$GNU_MALLOC" = yes ; then
1614     GNU_MALLOC_reason="
1615       (Using Doug Lea's new malloc from the GNU C Library.)"
1616   fi
1617   AC_DEFINE(DOUG_LEA_MALLOC, 1,
1618             [Define to 1 if you are using the GNU C Library.])
1620   ## Use mmap directly for allocating larger buffers.
1621   ## FIXME this comes from src/s/{gnu,gnu-linux}.h:
1622   ## #ifdef DOUG_LEA_MALLOC; #undef REL_ALLOC; #endif
1623   ## Does the AC_FUNC_MMAP test below make this check unnecessary?
1624   case "$opsys" in
1625     gnu*) REL_ALLOC=no ;;
1626   esac
1629 if test x"${REL_ALLOC}" = x; then
1630   REL_ALLOC=${GNU_MALLOC}
1633 use_mmap_for_buffers=no
1634 case "$opsys" in
1635   cygwin|freebsd|irix6-5) use_mmap_for_buffers=yes ;;
1636 esac
1638 AC_FUNC_MMAP
1639 if test $use_mmap_for_buffers = yes; then
1640   AC_DEFINE(USE_MMAP_FOR_BUFFERS, 1, [Define to use mmap to allocate buffer text.])
1641   REL_ALLOC=no
1644 LIBS="$LIBS_SYSTEM $LIBS"
1646 dnl If found, this defines HAVE_LIBDNET, which m/pmax.h checks,
1647 dnl and also adds -ldnet to LIBS, which Autoconf uses for checks.
1648 AC_CHECK_LIB(dnet, dnet_ntoa)
1649 dnl This causes -lresolv to get used in subsequent tests,
1650 dnl which causes failures on some systems such as HPUX 9.
1651 dnl AC_CHECK_LIB(resolv, gethostbyname)
1653 dnl FIXME replace main with a function we actually want from this library.
1654 AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
1656 dnl Check if pthreads is available.
1657 LIB_PTHREAD=
1658 AC_CHECK_HEADERS_ONCE(pthread.h)
1659 if test "$ac_cv_header_pthread_h"; then
1660   dnl gmalloc.c uses pthread_atfork, which is not available on older-style
1661   dnl hosts such as MirBSD 10, so test for pthread_atfork instead of merely
1662   dnl testing for pthread_self if Emacs uses gmalloc.c.
1663   if test "$GMALLOC_OBJ" = gmalloc.o; then
1664     emacs_pthread_function=pthread_atfork
1665   else
1666     emacs_pthread_function=pthread_self
1667   fi
1668   AC_CHECK_LIB(pthread, $emacs_pthread_function, HAVE_PTHREAD=yes)
1670 if test "$HAVE_PTHREAD" = yes; then
1671   case "${canonical}" in
1672     *-hpux*) ;;
1673     *) LIB_PTHREAD="-lpthread"
1674        LIBS="$LIB_PTHREAD $LIBS" ;;
1675   esac
1676   AC_DEFINE(HAVE_PTHREAD, 1, [Define to 1 if you have pthread (-lpthread).])
1678 AC_SUBST([LIB_PTHREAD])
1680 AC_CHECK_LIB(pthreads, cma_open)
1682 ## Note: when using cpp in s/aix4.2.h, this definition depended on
1683 ## HAVE_LIBPTHREADS.  That was not defined earlier in configure when
1684 ## the system file was sourced.  Hence the value of LIBS_SYSTEM
1685 ## added to LIBS in configure would never contain the pthreads part,
1686 ## but the value used in Makefiles might.  FIXME?
1688 ## -lpthreads seems to be necessary for Xlib in X11R6, and should
1689 ## be harmless on older versions of X where it happens to exist.
1690 test "$opsys" = "aix4-2" && \
1691   test $ac_cv_lib_pthreads_cma_open = yes && \
1692   LIBS_SYSTEM="$LIBS_SYSTEM -lpthreads"
1694 dnl Check for need for bigtoc support on IBM AIX
1696 case ${host_os} in
1697 aix*)
1698   AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
1699     case $GCC in
1700     yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
1701     *) gdb_cv_bigtoc=-bbigtoc ;;
1702     esac
1704     LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
1705     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int i;]])], [], [gdb_cv_bigtoc=])
1706   ])
1707   ;;
1708 esac
1710 # Change CFLAGS and CPPFLAGS temporarily so that C_SWITCH_X_SITE gets
1711 # used for the tests that follow.  We set them back to REAL_CFLAGS and
1712 # REAL_CPPFLAGS later on.
1714 REAL_CFLAGS="$CFLAGS"
1715 REAL_CPPFLAGS="$CPPFLAGS"
1717 if test "${HAVE_X11}" = "yes"; then
1718   DEFS="$C_SWITCH_X_SITE $DEFS"
1719   LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
1720   LIBS="-lX11 $LIBS"
1721   CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
1722   CPPFLAGS="$C_SWITCH_X_SITE $CPPFLAGS"
1724   # On Solaris, arrange for LD_RUN_PATH to point to the X libraries for tests.
1725   # This is handled by LD_SWITCH_X_SITE_RPATH during the real build,
1726   # but it's more convenient here to set LD_RUN_PATH since this
1727   # also works on hosts that don't understand LD_SWITCH_X_SITE_RPATH.
1728   if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
1729     LD_RUN_PATH=$x_libraries${LD_RUN_PATH+:}$LD_RUN_PATH
1730     export LD_RUN_PATH
1731   fi
1733   if test "${opsys}" = "gnu-linux"; then
1734     AC_MSG_CHECKING(whether X on GNU/Linux needs -b to link)
1735     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
1736      [[XOpenDisplay ("foo");]])],
1737      [xgnu_linux_first_failure=no],
1738      [xgnu_linux_first_failure=yes])
1739     if test "${xgnu_linux_first_failure}" = "yes"; then
1740       OLD_LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE"
1741       OLD_C_SWITCH_X_SITE="$C_SWITCH_X_SITE"
1742       OLD_CPPFLAGS="$CPPFLAGS"
1743       OLD_LIBS="$LIBS"
1744       LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
1745       C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
1746       CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
1747       LIBS="$LIBS -b i486-linuxaout"
1748       AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
1749        [[XOpenDisplay ("foo");]])],
1750        [xgnu_linux_second_failure=no],
1751        [xgnu_linux_second_failure=yes])
1752       if test "${xgnu_linux_second_failure}" = "yes"; then
1753         # If we get the same failure with -b, there is no use adding -b.
1754         # So take it out.  This plays safe.
1755         LD_SWITCH_X_SITE="$OLD_LD_SWITCH_X_SITE"
1756         C_SWITCH_X_SITE="$OLD_C_SWITCH_X_SITE"
1757         CPPFLAGS="$OLD_CPPFLAGS"
1758         LIBS="$OLD_LIBS"
1759         AC_MSG_RESULT(no)
1760       else
1761         AC_MSG_RESULT(yes)
1762       fi
1763     else
1764       AC_MSG_RESULT(no)
1765     fi
1766   fi
1768   # Reportedly, some broken Solaris systems have XKBlib.h but are missing
1769   # header files included from there.
1770   AC_MSG_CHECKING(for Xkb)
1771   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>
1772 #include <X11/XKBlib.h>]],
1773         [[XkbDescPtr kb = XkbGetKeyboard (0, XkbAllComponentsMask, XkbUseCoreKbd);]])],
1774         emacs_xkb=yes, emacs_xkb=no)
1775   AC_MSG_RESULT($emacs_xkb)
1776   if test $emacs_xkb = yes; then
1777     AC_DEFINE(HAVE_XKBGETKEYBOARD, 1, [Define to 1 if you have the XkbGetKeyboard function.])
1778   fi
1780   AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
1781 XScreenNumberOfScreen)
1784 if test "${window_system}" = "x11"; then
1785   AC_MSG_CHECKING(X11 version 6)
1786   AC_CACHE_VAL(emacs_cv_x11_version_6,
1787   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]],
1788 [[#if XlibSpecificationRelease < 6
1789 fail;
1790 #endif
1791 ]])], emacs_cv_x11_version_6=yes, emacs_cv_x11_version_6=no)])
1792   if test $emacs_cv_x11_version_6 = yes; then
1793     AC_MSG_RESULT(6 or newer)
1794     AC_DEFINE(HAVE_X11R6, 1,
1795               [Define to 1 if you have the X11R6 or newer version of Xlib.])
1796     AC_DEFINE(HAVE_X_I18N, 1, [Define if you have usable i18n support.])
1797     ## inoue@ainet.or.jp says Solaris has a bug related to X11R6-style
1798     ## XIM support.
1799     case "$opsys" in
1800       sol2-*) : ;;
1801       *) AC_DEFINE(HAVE_X11R6_XIM, 1,
1802            [Define if you have usable X11R6-style XIM support.])
1803          ;;
1804     esac
1805   else
1806     AC_MSG_RESULT(before 6)
1807   fi
1811 ### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
1812 HAVE_RSVG=no
1813 if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes"; then
1814   if test "${with_rsvg}" != "no"; then
1815     RSVG_REQUIRED=2.11.0
1816     RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
1818     PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, HAVE_RSVG=yes, :)
1819     AC_SUBST(RSVG_CFLAGS)
1820     AC_SUBST(RSVG_LIBS)
1822     if test $HAVE_RSVG = yes; then
1823       AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
1824       CFLAGS="$CFLAGS $RSVG_CFLAGS"
1825       LIBS="$RSVG_LIBS $LIBS"
1826     fi
1827   fi
1830 HAVE_IMAGEMAGICK=no
1831 if test "${HAVE_X11}" = "yes"; then
1832   if test "${with_imagemagick}" != "no"; then
1833     ## 6.2.8 is the earliest version known to work, but earlier versions
1834     ## might work - let us know if you find one.
1835     ## 6.0.7 does not work.  See bug#7955.
1836     IMAGEMAGICK_MODULE="Wand >= 6.2.8"
1837     PKG_CHECK_MODULES(IMAGEMAGICK, $IMAGEMAGICK_MODULE, HAVE_IMAGEMAGICK=yes, :)
1838     AC_SUBST(IMAGEMAGICK_CFLAGS)
1839     AC_SUBST(IMAGEMAGICK_LIBS)
1841     if test $HAVE_IMAGEMAGICK = yes; then
1842       AC_DEFINE(HAVE_IMAGEMAGICK, 1, [Define to 1 if using imagemagick.])
1843       CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
1844       LIBS="$IMAGEMAGICK_LIBS $LIBS"
1845       AC_CHECK_FUNCS(MagickExportImagePixels MagickMergeImageLayers)
1846     fi
1847   fi
1851 HAVE_GTK=no
1852 GTK_OBJ=
1853 if test "${with_gtk3}" = "yes"; then
1854   GLIB_REQUIRED=2.28
1855   GTK_REQUIRED=3.0
1856   GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
1858   dnl Checks for libraries.
1859   PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
1860   if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
1861      AC_MSG_ERROR($GTK_PKG_ERRORS)
1862   fi
1863   AC_DEFINE(HAVE_GTK3, 1, [Define to 1 if using GTK 3 or later.])
1864   GTK_OBJ=emacsgtkfixed.o
1867 if test "$pkg_check_gtk" != "yes"; then
1868   HAVE_GTK=no
1869 if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
1870   GLIB_REQUIRED=2.10
1871   GTK_REQUIRED=2.10
1872   GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
1874   dnl Checks for libraries.
1875   PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
1876   if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
1877      AC_MSG_ERROR($GTK_PKG_ERRORS)
1878   fi
1882 if test x"$pkg_check_gtk" = xyes; then
1884   AC_SUBST(GTK_CFLAGS)
1885   AC_SUBST(GTK_LIBS)
1886   C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
1887   CFLAGS="$CFLAGS $GTK_CFLAGS"
1888   LIBS="$GTK_LIBS $LIBS"
1889   dnl Try to compile a simple GTK program.
1890   GTK_COMPILES=no
1891   AC_CHECK_FUNCS(gtk_main, GTK_COMPILES=yes)
1892   if test "${GTK_COMPILES}" != "yes"; then
1893     if test "$USE_X_TOOLKIT" != "maybe"; then
1894       AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?]);
1895     fi
1896   else
1897     HAVE_GTK=yes
1898     AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
1899     GTK_OBJ="gtkutil.o $GTK_OBJ"
1900     USE_X_TOOLKIT=none
1901     if $PKG_CONFIG --atleast-version=2.10 gtk+-2.0; then
1902       :
1903     else
1904       AC_MSG_WARN([[Your version of Gtk+ will have problems with
1905        closing open displays.  This is no problem if you just use
1906        one display, but if you use more than one and close one of them
1907        Emacs may crash.]])
1908       sleep 3
1909     fi
1910   fi
1913 AC_SUBST(GTK_OBJ)
1916 if test "${HAVE_GTK}" = "yes"; then
1918   dnl  GTK scrollbars resemble toolkit scrollbars a lot, so to avoid
1919   dnl  a lot if #ifdef:s, say we have toolkit scrollbars.
1920   if test "$with_toolkit_scroll_bars" != no; then
1921     with_toolkit_scroll_bars=yes
1922   fi
1924   dnl  Check if we have the old file selection dialog declared and
1925   dnl  in the link library.  In 2.x it may be in the library,
1926   dnl  but not declared if deprecated featured has been selected out.
1927   dnl  AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION.
1928   HAVE_GTK_FILE_SELECTION=no
1929   AC_CHECK_DECL(GTK_TYPE_FILE_SELECTION, HAVE_GTK_FILE_SELECTION=yes,
1930                    HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT
1931 #include <gtk/gtk.h>])
1932   if test "$HAVE_GTK_FILE_SELECTION" = yes; then
1933     AC_CHECK_FUNCS(gtk_file_selection_new)
1934   fi
1937   dnl Check for functions introduced in 2.14 and later.
1938   AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \
1939                  gtk_dialog_get_action_area gtk_widget_get_sensitive \
1940                  gtk_widget_get_mapped gtk_adjustment_get_page_size \
1941                  gtk_orientable_set_orientation \
1942                  gtk_window_set_has_resize_grip)
1945 dnl D-Bus has been tested under GNU/Linux only.  Must be adapted for
1946 dnl other platforms.
1947 HAVE_DBUS=no
1948 DBUS_OBJ=
1949 if test "${with_dbus}" = "yes"; then
1950    PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0, HAVE_DBUS=yes, HAVE_DBUS=no)
1951    if test "$HAVE_DBUS" = yes; then
1952      LIBS="$LIBS $DBUS_LIBS"
1953      AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
1954      dnl dbus_watch_get_unix_fd has been introduced in D-Bus 1.1.1.
1955      dnl dbus_type_is_valid and dbus_validate_* have been introduced in
1956      dnl D-Bus 1.5.12.
1957      AC_CHECK_FUNCS(dbus_watch_get_unix_fd \
1958                     dbus_type_is_valid \
1959                     dbus_validate_bus_name \
1960                     dbus_validate_path \
1961                     dbus_validate_interface \
1962                     dbus_validate_member)
1963      DBUS_OBJ=dbusbind.o
1964    fi
1966 AC_SUBST(DBUS_OBJ)
1968 dnl GSettings has been tested under GNU/Linux only.
1969 HAVE_GSETTINGS=no
1970 if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then
1971    PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.26, HAVE_GSETTINGS=yes, HAVE_GSETTINGS=no)
1972    if test "$HAVE_GSETTINGS" = "yes"; then
1973       AC_DEFINE(HAVE_GSETTINGS, 1, [Define to 1 if using GSettings.])
1974       SETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
1975       SETTINGS_LIBS="$GSETTINGS_LIBS"
1976    fi
1979 dnl GConf has been tested under GNU/Linux only.
1980 dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
1981 HAVE_GCONF=no
1982 if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
1983    PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
1984    if test "$HAVE_GCONF" = yes; then
1985       AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
1986       dnl Newer GConf doesn't link with g_objects, so this is not defined.
1987       SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GCONF_CFLAGS"
1988       SETTINGS_LIBS="$SETTINGS_LIBS $GCONF_LIBS"
1989    fi
1992 if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then
1993     SAVE_CFLAGS="$CFLAGS"
1994     SAVE_LIBS="$LIBS"
1995     CFLAGS="$SETTINGS_CFLAGS $CFLAGS"
1996     LIBS="$SETTINGS_LIBS $LIBS"
1997     AC_CHECK_FUNCS([g_type_init])
1998     CFLAGS="$SAVE_CFLAGS"
1999     LIBS="$SAVE_LIBS"
2001 AC_SUBST(SETTINGS_CFLAGS)
2002 AC_SUBST(SETTINGS_LIBS)
2005 dnl SELinux is available for GNU/Linux only.
2006 HAVE_LIBSELINUX=no
2007 LIBSELINUX_LIBS=
2008 if test "${with_selinux}" = "yes"; then
2009    AC_CHECK_LIB([selinux], [lgetfilecon], HAVE_LIBSELINUX=yes, HAVE_LIBSELINUX=no)
2010    if test "$HAVE_LIBSELINUX" = yes; then
2011       AC_DEFINE(HAVE_LIBSELINUX, 1, [Define to 1 if using SELinux.])
2012       LIBSELINUX_LIBS=-lselinux
2013    fi
2015 AC_SUBST(LIBSELINUX_LIBS)
2017 HAVE_GNUTLS=no
2018 HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY=no
2019 if test "${with_gnutls}" = "yes" ; then
2020   PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no)
2021   if test "${HAVE_GNUTLS}" = "yes"; then
2022     AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
2023   fi
2025   CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
2026   LIBS="$LIBGNUTLS_LIBS $LIBS"
2027   AC_CHECK_FUNCS(gnutls_certificate_set_verify_function, HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY=yes)
2029   if test "${HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY}" = "yes"; then
2030     AC_DEFINE(HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY, 1, [Define if using GnuTLS certificate verification callbacks.])
2031   fi
2034 AC_SUBST(LIBGNUTLS_LIBS)
2035 AC_SUBST(LIBGNUTLS_CFLAGS)
2037 dnl Do not put whitespace before the #include statements below.
2038 dnl Older compilers (eg sunos4 cc) choke on it.
2039 HAVE_XAW3D=no
2040 LUCID_LIBW=
2041 if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
2042   if test "$with_xaw3d" != no; then
2043     AC_MSG_CHECKING(for xaw3d)
2044     AC_CACHE_VAL(emacs_cv_xaw3d,
2045     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2046 #include <X11/Intrinsic.h>
2047 #include <X11/Xaw3d/Simple.h>]],
2048       [[]])],
2049       [AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb,
2050                     emacs_cv_xaw3d=yes, emacs_cv_xaw3d=no)],
2051       emacs_cv_xaw3d=no)])
2052   else
2053     emacs_cv_xaw3d=no
2054   fi
2055   if test $emacs_cv_xaw3d = yes; then
2056     AC_MSG_RESULT([yes; using Lucid toolkit])
2057     USE_X_TOOLKIT=LUCID
2058     HAVE_XAW3D=yes
2059     LUCID_LIBW=-lXaw3d
2060     AC_DEFINE(HAVE_XAW3D, 1,
2061               [Define to 1 if you have the Xaw3d library (-lXaw3d).])
2062   else
2063     AC_MSG_RESULT(no)
2064     AC_MSG_CHECKING(for libXaw)
2065     AC_CACHE_VAL(emacs_cv_xaw,
2066     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2067 #include <X11/Intrinsic.h>
2068 #include <X11/Xaw/Simple.h>]],
2069       [[]])],
2070       emacs_cv_xaw=yes,
2071       emacs_cv_xaw=no)])
2072     if test $emacs_cv_xaw = yes; then
2073       AC_MSG_RESULT([yes; using Lucid toolkit])
2074       USE_X_TOOLKIT=LUCID
2075       LUCID_LIBW=-lXaw
2076     elif test x"${USE_X_TOOLKIT}" = xLUCID; then
2077       AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
2078     else
2079       AC_MSG_ERROR([No X toolkit could be found.
2080 If you are sure you want Emacs compiled without an X toolkit, pass
2081   --with-x-toolkit=no
2082 to configure.  Otherwise, install the development libraries for the toolkit
2083 that you want to use (e.g. Gtk+) and re-run configure.])
2084     fi
2085   fi
2088 X_TOOLKIT_TYPE=$USE_X_TOOLKIT
2090 LIBXTR6=
2091 if test "${USE_X_TOOLKIT}" != "none"; then
2092   AC_MSG_CHECKING(X11 toolkit version)
2093   AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
2094   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Intrinsic.h>]],
2095 [[#if XtSpecificationRelease < 6
2096 fail;
2097 #endif
2098 ]])], emacs_cv_x11_toolkit_version_6=yes, emacs_cv_x11_toolkit_version_6=no)])
2099   HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6
2100   if test $emacs_cv_x11_toolkit_version_6 = yes; then
2101     AC_MSG_RESULT(6 or newer)
2102     AC_DEFINE(HAVE_X11XTR6, 1,
2103               [Define to 1 if you have the X11R6 or newer version of Xt.])
2104     LIBXTR6="-lSM -lICE"
2105     case "$opsys" in
2106       ## Use libw.a along with X11R6 Xt.
2107       unixware) LIBXTR6="$LIBXTR6 -lw" ;;
2108     esac
2109   else
2110     AC_MSG_RESULT(before 6)
2111   fi
2113 dnl If using toolkit, check whether libXmu.a exists.
2114 dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
2115   OLDLIBS="$LIBS"
2116   if test x$HAVE_X11XTR6 = xyes; then
2117     LIBS="-lXt -lSM -lICE $LIBS"
2118   else
2119     LIBS="-lXt $LIBS"
2120   fi
2121   AC_CHECK_LIB(Xmu, XmuConvertStandardSelection)
2122   test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS"
2123   dnl ac_cv_lib_Xmu_XmuConvertStandardSelection is also referenced below.
2125 AC_SUBST(LIBXTR6)
2127 dnl FIXME the logic here seems weird, but this is what cpp was doing.
2128 dnl Why not just test for libxmu in the normal way?
2129 LIBXMU=-lXmu
2130 case $opsys in
2131   ## These systems don't supply Xmu.
2132   hpux* | aix4-2 )
2133     test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
2134     ;;
2135 esac
2136 AC_SUBST(LIBXMU)
2138 # On Irix 6.5, at least, we need XShapeQueryExtension from -lXext for Xaw3D.
2139 if test "${HAVE_X11}" = "yes"; then
2140   if test "${USE_X_TOOLKIT}" != "none"; then
2141     AC_CHECK_LIB(Xext, XShapeQueryExtension)
2142   fi
2145 LIBXP=
2146 if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2147   AC_CACHE_CHECK(for Motif version 2.1, emacs_cv_motif_version_2_1,
2148   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <Xm/Xm.h>]],
2149     [[#if XmVERSION > 2 || (XmVERSION == 2 && XmREVISION >= 1)
2150 int x = 5;
2151 #else
2152 Motif version prior to 2.1.
2153 #endif]])],
2154     emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)])
2155   if test $emacs_cv_motif_version_2_1 = yes; then
2156     AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp)
2157   else
2158     AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif,
2159     # We put this in CFLAGS temporarily to precede other -I options
2160     # that might be in CFLAGS temporarily.
2161     # We put this in CPPFLAGS where it precedes the other -I options.
2162     OLD_CPPFLAGS=$CPPFLAGS
2163     OLD_CFLAGS=$CFLAGS
2164     CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CPPFLAGS"
2165     CFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CFLAGS"
2166     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include </usr/X11R6/LessTif/Motif1.2/include/Xm/Xm.h>]],
2167       [[int x = 5;]])],
2168       emacs_cv_lesstif=yes, emacs_cv_lesstif=no)])
2169     if test $emacs_cv_lesstif = yes; then
2170       # Make sure this -I option remains in CPPFLAGS after it is set
2171       # back to REAL_CPPFLAGS.
2172       # There is no need to change REAL_CFLAGS, because REAL_CFLAGS does not
2173       # have those other -I options anyway.  Ultimately, having this
2174       # directory ultimately in CPPFLAGS will be enough.
2175       REAL_CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $REAL_CPPFLAGS"
2176       LDFLAGS="-L/usr/X11R6/LessTif/Motif1.2/lib $LDFLAGS"
2177     else
2178       CFLAGS=$OLD_CFLAGS
2179       CPPFLAGS=$OLD_CPPFLAGS
2180     fi
2181   fi
2182   AC_CHECK_HEADER([Xm/BulletinB.h], [],
2183     [AC_MSG_ERROR([Motif toolkit requested but requirements not found.])])
2186 dnl Use toolkit scroll bars if configured for GTK or X toolkit and either
2187 dnl using Motif or Xaw3d is available, and unless
2188 dnl --with-toolkit-scroll-bars=no was specified.
2190 AH_TEMPLATE(USE_TOOLKIT_SCROLL_BARS,
2191             [Define to 1 if we should use toolkit scroll bars.])dnl
2192 USE_TOOLKIT_SCROLL_BARS=no
2193 if test "${with_toolkit_scroll_bars}" != "no"; then
2194   if test "${USE_X_TOOLKIT}" != "none"; then
2195     if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2196       AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2197       HAVE_XAW3D=no
2198       USE_TOOLKIT_SCROLL_BARS=yes
2199     elif test "${HAVE_XAW3D}" = "yes" || test "${USE_X_TOOLKIT}" = "LUCID"; then
2200       AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2201       USE_TOOLKIT_SCROLL_BARS=yes
2202     fi
2203   elif test "${HAVE_GTK}" = "yes"; then
2204     AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2205     USE_TOOLKIT_SCROLL_BARS=yes
2206   elif test "${HAVE_NS}" = "yes"; then
2207     AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2208     USE_TOOLKIT_SCROLL_BARS=yes
2209   fi
2212 dnl See if XIM is available.
2213 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2214           #include <X11/Xlib.h>
2215           #include <X11/Xresource.h>]],
2216          [[XIMProc  callback;]])],
2217          [HAVE_XIM=yes
2218          AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
2219          HAVE_XIM=no)
2221 dnl `--with-xim' now controls only the initial value of use_xim at run time.
2223 if test "${with_xim}" != "no"; then
2224   AC_DEFINE(USE_XIM, 1,
2225             [Define to 1 if we should use XIM, if it is available.])
2229 if test "${HAVE_XIM}" != "no"; then
2230   late_CFLAGS=$CFLAGS
2231   if test "$GCC" = yes; then
2232     CFLAGS="$CFLAGS --pedantic-errors"
2233   fi
2234   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2235 #include <X11/Xlib.h>
2236 #include <X11/Xresource.h>]],
2237 [[Display *display;
2238 XrmDatabase db;
2239 char *res_name;
2240 char *res_class;
2241 XIMProc  callback;
2242 XPointer *client_data;
2243 #ifndef __GNUC__
2244 /* If we're not using GCC, it's probably not XFree86, and this is
2245    probably right, but we can't use something like --pedantic-errors.  */
2246 extern Bool XRegisterIMInstantiateCallback(Display*, XrmDatabase, char*,
2247                                            char*, XIMProc, XPointer*);
2248 #endif
2249 (void)XRegisterIMInstantiateCallback(display, db, res_name, res_class, callback,
2250    client_data);]])],
2251     [emacs_cv_arg6_star=yes])
2252   AH_TEMPLATE(XRegisterIMInstantiateCallback_arg6,
2253          [Define to the type of the 6th arg of XRegisterIMInstantiateCallback,
2254 either XPointer or XPointer*.])dnl
2255   if test "$emacs_cv_arg6_star" = yes; then
2256     AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer*])
2257   else
2258     AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer])
2259   fi
2260   CFLAGS=$late_CFLAGS
2263 ### Start of font-backend (under any platform) section.
2264 # (nothing here yet -- this is a placeholder)
2265 ### End of font-backend (under any platform) section.
2267 ### Start of font-backend (under X11) section.
2268 if test "${HAVE_X11}" = "yes"; then
2269    PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2.0, HAVE_FC=yes, HAVE_FC=no)
2271    ## Use -lXft if available, unless `--with-xft=no'.
2272    HAVE_XFT=maybe
2273     if test "${HAVE_FC}" = "no" || test "x${with_x}" = "xno"; then
2274       with_xft="no";
2275     fi
2276     if test "x${with_xft}" != "xno"; then
2278       PKG_CHECK_MODULES(XFT, xft >= 0.13.0, , HAVE_XFT=no)
2279       ## Because xftfont.c uses XRenderQueryExtension, we also
2280       ## need to link to -lXrender.
2281       HAVE_XRENDER=no
2282       AC_CHECK_LIB(Xrender, XRenderQueryExtension, HAVE_XRENDER=yes)
2283       if test "$HAVE_XFT" != no && test "$HAVE_XRENDER" != no; then
2284         OLD_CPPFLAGS="$CPPFLAGS"
2285         OLD_CFLAGS="$CFLAGS"
2286         OLD_LIBS="$LIBS"
2287         CPPFLAGS="$CPPFLAGS $XFT_CFLAGS"
2288         CFLAGS="$CFLAGS $XFT_CFLAGS"
2289         XFT_LIBS="-lXrender $XFT_LIBS"
2290         LIBS="$XFT_LIBS $LIBS"
2291         AC_CHECK_HEADER(X11/Xft/Xft.h,
2292           AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS))
2294         if test "${HAVE_XFT}" = "yes"; then
2295           AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
2296             AC_SUBST(XFT_LIBS)
2297           C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
2298         else
2299           CPPFLAGS="$OLD_CPPFLAGS"
2300           CFLAGS="$OLD_CFLAGS"
2301           LIBS="$OLD_LIBS"
2302         fi                        # "${HAVE_XFT}" = "yes"
2303       fi                          # "$HAVE_XFT" != no
2304     fi                            # "x${with_xft}" != "xno"
2306     ## We used to allow building with FreeType and without Xft.
2307     ## However, the ftx font backend driver is not in good shape.
2308     if test "$HAVE_XFT" != "yes"; then
2309        dnl For the "Does Emacs use" message at the end.
2310        HAVE_XFT=no
2311        HAVE_FREETYPE=no
2312     else
2313        dnl Strict linkers fail with
2314        dnl ftfont.o: undefined reference to symbol 'FT_New_Face'
2315        dnl if -lfreetype is not specified.
2316        dnl The following is needed to set FREETYPE_LIBS.
2317        PKG_CHECK_MODULES(FREETYPE, freetype2, HAVE_FREETYPE=yes,
2318                          HAVE_FREETYPE=no)
2320        test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype)
2321     fi
2323     HAVE_LIBOTF=no
2324     if test "${HAVE_FREETYPE}" = "yes"; then
2325       AC_DEFINE(HAVE_FREETYPE, 1,
2326                 [Define to 1 if using the freetype and fontconfig libraries.])
2327       if test "${with_libotf}" != "no"; then
2328         PKG_CHECK_MODULES(LIBOTF, libotf, HAVE_LIBOTF=yes,
2329                           HAVE_LIBOTF=no)
2330         if test "$HAVE_LIBOTF" = "yes"; then
2331           AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.])
2332           AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
2333                        HAVE_OTF_GET_VARIATION_GLYPHS=yes,
2334                        HAVE_OTF_GET_VARIATION_GLYPHS=no)
2335           if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
2336             AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1,
2337                       [Define to 1 if libotf has OTF_get_variation_glyphs.])
2338           fi
2339         fi
2340       fi
2341     dnl FIXME should there be an error if HAVE_FREETYPE != yes?
2342     dnl Does the new font backend require it, or can it work without it?
2343     fi
2345     HAVE_M17N_FLT=no
2346     if test "${HAVE_LIBOTF}" = yes; then
2347       if test "${with_m17n_flt}" != "no"; then
2348         PKG_CHECK_MODULES(M17N_FLT, m17n-flt, HAVE_M17N_FLT=yes, HAVE_M17N_FLT=no)
2349         if test "$HAVE_M17N_FLT" = "yes"; then
2350           AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
2351         fi
2352       fi
2353     fi
2354 else
2355     HAVE_XFT=no
2356     HAVE_FREETYPE=no
2357     HAVE_LIBOTF=no
2358     HAVE_M17N_FLT=no
2361 ### End of font-backend (under X11) section.
2363 AC_SUBST(FREETYPE_CFLAGS)
2364 AC_SUBST(FREETYPE_LIBS)
2365 AC_SUBST(FONTCONFIG_CFLAGS)
2366 AC_SUBST(FONTCONFIG_LIBS)
2367 AC_SUBST(LIBOTF_CFLAGS)
2368 AC_SUBST(LIBOTF_LIBS)
2369 AC_SUBST(M17N_FLT_CFLAGS)
2370 AC_SUBST(M17N_FLT_LIBS)
2372 ### Use -lXpm if available, unless `--with-xpm=no'.
2373 HAVE_XPM=no
2374 LIBXPM=
2375 if test "${HAVE_X11}" = "yes"; then
2376   if test "${with_xpm}" != "no"; then
2377     AC_CHECK_HEADER(X11/xpm.h,
2378       [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
2379     if test "${HAVE_XPM}" = "yes"; then
2380       AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
2381       AC_EGREP_CPP(no_return_alloc_pixels,
2382       [#include "X11/xpm.h"
2383 #ifndef XpmReturnAllocPixels
2384 no_return_alloc_pixels
2385 #endif
2386       ], HAVE_XPM=no, HAVE_XPM=yes)
2388       if test "${HAVE_XPM}" = "yes"; then
2389         AC_MSG_RESULT(yes)
2390       else
2391         AC_MSG_RESULT(no)
2392       fi
2393     fi
2394   fi
2396   if test "${HAVE_XPM}" = "yes"; then
2397     AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
2398     LIBXPM=-lXpm
2399   fi
2401 AC_SUBST(LIBXPM)
2403 ### Use -ljpeg if available, unless `--with-jpeg=no'.
2404 HAVE_JPEG=no
2405 LIBJPEG=
2406 if test "${HAVE_X11}" = "yes"; then
2407   if test "${with_jpeg}" != "no"; then
2408     dnl Checking for jpeglib.h can lose because of a redefinition of
2409     dnl  HAVE_STDLIB_H.
2410     AC_CHECK_HEADER(jerror.h,
2411       [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
2412   fi
2414   AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
2415   if test "${HAVE_JPEG}" = "yes"; then
2416     AC_DEFINE(HAVE_JPEG)
2417     AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
2418         [#include <jpeglib.h>
2419          version=JPEG_LIB_VERSION
2421         [AC_DEFINE(HAVE_JPEG)],
2422         [AC_MSG_WARN([libjpeg found, but not version 6b or later])
2423         HAVE_JPEG=no])
2424   fi
2425   if test "${HAVE_JPEG}" = "yes"; then
2426     LIBJPEG=-ljpeg
2427   fi
2429 AC_SUBST(LIBJPEG)
2431 ### Use -lpng if available, unless `--with-png=no'.
2432 HAVE_PNG=no
2433 LIBPNG=
2434 if test "${HAVE_X11}" = "yes"; then
2435   if test "${with_png}" != "no"; then
2436     # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
2437     # in /usr/include/libpng.
2438     AC_CHECK_HEADERS(png.h libpng/png.h, break)
2439     if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
2440       AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm)
2441     fi
2442   fi
2444   if test "${HAVE_PNG}" = "yes"; then
2445     AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
2446     LIBPNG="-lpng -lz -lm"
2448     AC_CHECK_DECL(png_longjmp,
2449       [],
2450       [AC_DEFINE(PNG_DEPSTRUCT, [],
2451          [Define to empty to suppress deprecation warnings when building
2452           with --enable-gcc-warnings and with libpng versions before 1.5,
2453           which lack png_longjmp.])],
2454       [[#ifdef HAVE_LIBPNG_PNG_H
2455         # include <libpng/png.h>
2456         #else
2457         # include <png.h>
2458         #endif
2459       ]])
2460   fi
2462 AC_SUBST(LIBPNG)
2464 ### Use -ltiff if available, unless `--with-tiff=no'.
2465 HAVE_TIFF=no
2466 LIBTIFF=
2467 if test "${HAVE_X11}" = "yes"; then
2468   if test "${with_tiff}" != "no"; then
2469     AC_CHECK_HEADER(tiffio.h,
2470       [tifflibs="-lz -lm"
2471       # At least one tiff package requires the jpeg library.
2472       if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
2473       AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)])
2474   fi
2476   if test "${HAVE_TIFF}" = "yes"; then
2477     AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
2478     dnl FIXME -lz -lm, as per libpng?
2479     LIBTIFF=-ltiff
2480   fi
2482 AC_SUBST(LIBTIFF)
2484 ### Use -lgif or -lungif if available, unless `--with-gif=no'.
2485 HAVE_GIF=no
2486 LIBGIF=
2487 if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no"; then
2488   AC_CHECK_HEADER(gif_lib.h,
2489 # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
2490 # Earlier versions can crash Emacs.
2491     [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])
2493   if test "$HAVE_GIF" = yes; then
2494     LIBGIF=-lgif
2495   elif test "$HAVE_GIF" = maybe; then
2496 # If gif_lib.h but no libgif, try libungif.
2497     AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no)
2498     test "$HAVE_GIF" = yes && LIBGIF=-lungif
2499   fi
2501   if test "${HAVE_GIF}" = "yes"; then
2502     AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
2503   fi
2505 AC_SUBST(LIBGIF)
2507 dnl Check for required libraries.
2508 if test "${HAVE_X11}" = "yes"; then
2509   MISSING=""
2510   WITH_NO=""
2511   test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
2512     MISSING="libXpm" && WITH_NO="--with-xpm=no"
2513   test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
2514     MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
2515   test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
2516     MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
2517   test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
2518     MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
2519   test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
2520     MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
2522   if test "X${MISSING}" != X; then
2523     AC_MSG_ERROR([The following required libraries were not found:
2524     $MISSING
2525 Maybe some development libraries/packages are missing?
2526 If you don't want to link with them give
2527     $WITH_NO
2528 as options to configure])
2529   fi
2532 ### Use -lgpm if available, unless `--with-gpm=no'.
2533 HAVE_GPM=no
2534 LIBGPM=
2535 if test "${with_gpm}" != "no"; then
2536   AC_CHECK_HEADER(gpm.h,
2537     [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
2539   if test "${HAVE_GPM}" = "yes"; then
2540     AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
2541     LIBGPM=-lgpm
2542   fi
2544 AC_SUBST(LIBGPM)
2546 dnl Check for malloc/malloc.h on darwin
2547 AC_CHECK_HEADERS_ONCE(malloc/malloc.h)
2549 GNUSTEP_CFLAGS=
2550 ### Use NeXTstep API to implement GUI.
2551 if test "${HAVE_NS}" = "yes"; then
2552   AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.])
2553   if test "${NS_IMPL_COCOA}" = "yes"; then
2554     AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under MacOS X.])
2555   fi
2556   if test "${NS_IMPL_GNUSTEP}" = "yes"; then
2557     AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
2558     # See also .m.o rule in Makefile.in */
2559     # FIXME: are all these flags really needed?  Document here why.  */
2560     GNUSTEP_CFLAGS="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
2561     ## Extra CFLAGS applied to src/*.m files.
2562     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"
2563   fi
2564   # We also have mouse menus.
2565   HAVE_MENUS=yes
2566   OTHER_FILES=ns-app
2570 ### Use session management (-lSM -lICE) if available
2571 HAVE_X_SM=no
2572 LIBXSM=
2573 if test "${HAVE_X11}" = "yes"; then
2574   AC_CHECK_HEADER(X11/SM/SMlib.h,
2575     [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
2577   if test "${HAVE_X_SM}" = "yes"; then
2578     AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
2579     LIBXSM="-lSM -lICE"
2580     case "$LIBS" in
2581       *-lSM*) ;;
2582       *)      LIBS="$LIBXSM $LIBS" ;;
2583     esac
2584   fi
2586 AC_SUBST(LIBXSM)
2588 ### Use libxml (-lxml2) if available
2589 HAVE_LIBXML2=no
2590 if test "${with_xml2}" != "no"; then
2591   ### I'm not sure what the version number should be, so I just guessed.
2592   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 > 2.6.17, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
2593   if test "${HAVE_LIBXML2}" = "yes"; then
2594     LIBS="$LIBXML2_LIBS $LIBS"
2595     AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
2596     if test "${HAVE_LIBXML2}" = "yes"; then
2597       AC_DEFINE(HAVE_LIBXML2, 1, [Define to 1 if you have the libxml library (-lxml2).])
2598     else
2599       LIBXML2_LIBS=""
2600       LIBXML2_CFLAGS=""
2601     fi
2602   fi
2604 AC_SUBST(LIBXML2_LIBS)
2605 AC_SUBST(LIBXML2_CFLAGS)
2607 # If netdb.h doesn't declare h_errno, we must declare it by hand.
2608 AC_CACHE_CHECK(whether netdb declares h_errno,
2609                emacs_cv_netdb_declares_h_errno,
2610 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
2611   [[return h_errno;]])],
2612   emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
2613 if test $emacs_cv_netdb_declares_h_errno = yes; then
2614   AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
2617 # fmod, logb, and frexp are found in -lm on most systems.
2618 # On HPUX 9.01, -lm does not contain logb, so check for sqrt.
2619 AC_CHECK_LIB(m, sqrt)
2621 # Check for mail-locking functions in a "mail" library.  Probably this should
2622 # have the same check as for liblockfile below.
2623 AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
2624 if test $have_mail = yes; then
2625   LIBS_MAIL=-lmail
2626   LIBS="$LIBS_MAIL $LIBS"
2627   AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library (-lmail).])
2628 else
2629   LIBS_MAIL=
2631 dnl Debian, at least:
2632 AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
2633 if test $have_lockfile = yes; then
2634    LIBS_MAIL=-llockfile
2635    LIBS="$LIBS_MAIL $LIBS"
2636    AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' library (-llockfile).])
2637 else
2638 # If we have the shared liblockfile, assume we must use it for mail
2639 # locking (e.g. Debian).  If we couldn't link against liblockfile
2640 # (no liblockfile.a installed), ensure that we don't need to.
2641   dnl This works for files generally, not just executables.
2642   dnl Should we look elsewhere for it?  Maybe examine /etc/ld.so.conf?
2643   AC_CHECK_PROG(liblockfile, liblockfile.so, yes, no,
2644                 /usr/lib:/lib:/usr/local/lib:$LD_LIBRARY_PATH)
2645   if test $ac_cv_prog_liblockfile = yes; then
2646     AC_MSG_ERROR([Shared liblockfile found but can't link against it.
2647 This probably means that movemail could lose mail.
2648 There may be a `development' package to install containing liblockfile.])
2649   fi
2651 AC_CHECK_HEADERS_ONCE(maillock.h)
2652 AC_SUBST(LIBS_MAIL)
2654 ## Define MAIL_USE_FLOCK (or LOCKF) if the mailer uses flock (or lockf) to
2655 ## interlock access to the mail spool.  The alternative is a lock file named
2656 ## /usr/spool/mail/$USER.lock.
2657 mail_lock=no
2658 case "$opsys" in
2659   aix4-2) mail_lock="lockf" ;;
2661   gnu|freebsd|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
2663   ## On GNU/Linux systems, both methods are used by various mail programs.
2664   ## I assume most people are using newer mailers that have heard of flock.
2665   ## Change this if you need to.
2666   ## Debian contains a patch which says: ``On Debian/GNU/Linux systems,
2667   ## configure gets the right answers, and that means *NOT* using flock.
2668   ## Using flock is guaranteed to be the wrong thing. See Debian Policy
2669   ## for details.'' and then uses `#ifdef DEBIAN'.  Unfortunately the
2670   ## Debian maintainer hasn't provided a clean fix for Emacs.
2671   ## movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
2672   ## HAVE_MAILLOCK_H are defined, so the following appears to be the
2673   ## correct logic.  -- fx
2674   ## We must check for HAVE_LIBLOCKFILE too, as movemail does.
2675   ## liblockfile is a Free Software replacement for libmail, used on
2676   ## Debian systems and elsewhere. -rfr.
2677   gnu-*)
2678     mail_lock="flock"
2679     if test $have_mail = yes || test $have_lockfile = yes; then
2680       test $ac_cv_header_maillock_h = yes && mail_lock=no
2681     fi
2682     ;;
2683 esac
2685 BLESSMAIL_TARGET=
2686 case "$mail_lock" in
2687   flock) AC_DEFINE(MAIL_USE_FLOCK, 1, [Define if the mailer uses flock to interlock the mail spool.]) ;;
2689   lockf) AC_DEFINE(MAIL_USE_LOCKF, 1, [Define if the mailer uses lockf to interlock the mail spool.]) ;;
2691   *) BLESSMAIL_TARGET="need-blessmail" ;;
2692 esac
2693 AC_SUBST(BLESSMAIL_TARGET)
2696 AC_CHECK_FUNCS(gethostname \
2697 closedir getrusage get_current_dir_name \
2698 lrand48 logb frexp fmod cbrt setsid \
2699 fpathconf select euidaccess getpagesize setlocale \
2700 utimes getrlimit setrlimit setpgid getcwd shutdown getaddrinfo \
2701 __fpending strsignal setitimer \
2702 sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
2703 gai_strerror mkstemp getline getdelim fsync sync \
2704 difftime posix_memalign \
2705 getpwent endpwent getgrent endgrent \
2706 touchlock \
2707 cfmakeraw cfsetspeed copysign __executable_start)
2709 dnl FIXME Fragile: something else may test for getwd as a dependency.
2710 dnl Change to defining BROKEN_xxx ?
2711 dnl getwd appears to be buggy on SVR4.2, so we don't use it.
2712 if test $opsys != unixware; then
2713   AC_CHECK_FUNCS(getwd)
2716 dnl FIXME Fragile: see above.
2717 ## Eric Backus <ericb@lsid.hp.com> says, HP-UX 9.x on HP 700 machines
2718 ## has a broken `rint' in some library versions including math library
2719 ## version number A.09.05.
2720 ## You can fix the math library by installing patch number PHSS_4630.
2721 ## But we can fix it more reliably for Emacs by just not using rint.
2722 ## We also skip HAVE_RANDOM - see comments in src/s/hpux10-20.h.
2723 case $opsys in
2724    hpux*) : ;;
2725    *) AC_CHECK_FUNCS(random rint) ;;
2726 esac
2728 dnl Cannot use AC_CHECK_FUNCS
2729 AC_CACHE_CHECK([for __builtin_unwind_init],
2730                emacs_cv_func___builtin_unwind_init,
2731 [AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_unwind_init ();])],
2732                 emacs_cv_func___builtin_unwind_init=yes,
2733                 emacs_cv_func___builtin_unwind_init=no)])
2734 if test $emacs_cv_func___builtin_unwind_init = yes; then
2735   AC_DEFINE(HAVE___BUILTIN_UNWIND_INIT, 1,
2736             [Define to 1 if you have the `__builtin_unwind_init' function.])
2739 AC_CHECK_HEADERS_ONCE(sys/un.h)
2741 AC_FUNC_FSEEKO
2743 AC_FUNC_GETPGRP
2745 # UNIX98 PTYs.
2746 AC_CHECK_FUNCS(grantpt)
2748 # PTY-related GNU extensions.
2749 AC_CHECK_FUNCS(getpt)
2751 # Check this now, so that we will NOT find the above functions in ncurses.
2752 # That is because we have not set up to link ncurses in lib-src.
2753 # It's better to believe a function is not available
2754 # than to expect to find it in ncurses.
2755 # Also we need tputs and friends to be able to build at all.
2756 AC_MSG_CHECKING([for library containing tputs])
2757 # Run a test program that contains a call to tputs, a call that is
2758 # never executed.  This tests whether a pre-'main' dynamic linker
2759 # works with the library.  It's too much trouble to actually call
2760 # tputs in the test program, due to portability hassles.  When
2761 # cross-compiling, assume the test program will run if it links.
2762 AC_DEFUN([tputs_link_source], [
2763   AC_LANG_SOURCE(
2764      [[extern void tputs (const char *, int, int (*)(int));
2765        int main (int argc, char **argv)
2766        {
2767           if (argc == 10000)
2768             tputs (argv[0], 0, 0);
2769           return 0;
2770        }]])
2772 # Maybe curses should be tried earlier?
2773 # See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9736#35
2774 for tputs_library in '' tinfo ncurses terminfo termcap curses; do
2775   OLIBS=$LIBS
2776   if test -z "$tputs_library"; then
2777     LIBS_TERMCAP=
2778     msg='none required'
2779   else
2780     LIBS_TERMCAP=-l$tputs_library
2781     msg=$LIBS_TERMCAP
2782     LIBS="$LIBS_TERMCAP $LIBS"
2783   fi
2784   AC_RUN_IFELSE([tputs_link_source], [], [msg=no],
2785     [AC_LINK_IFELSE([tputs_link_source], [], [msg=no])])
2786   LIBS=$OLIBS
2787   if test "X$msg" != Xno; then
2788     break
2789   fi
2790 done
2791 AC_MSG_RESULT([$msg])
2792 if test "X$msg" = Xno; then
2793   AC_MSG_ERROR([The required function `tputs' was not found in any library.
2794 The following libraries were tried (in order):
2795   libtinfo, libncurses, libterminfo, libtermcap, libcurses
2796 Please try installing whichever of these libraries is most appropriate
2797 for your system, together with its header files.
2798 For example, a libncurses-dev(el) or similar package.])
2801 ## Use termcap instead of terminfo?
2802 ## Only true for: freebsd < 40000, ms-w32, msdos, netbsd < 599002500.
2803 TERMINFO=yes
2804 ## FIXME?  In the cases below where we unconditionally set
2805 ## LIBS_TERMCAP="-lncurses", this overrides LIBS_TERMCAP = -ltinfo,
2806 ## if that was found above to have tputs.
2807 ## Should we use the gnu* logic everywhere?
2808 case "$opsys" in
2809   ## darwin: Prevents crashes when running Emacs in Terminal.app under 10.2.
2810   ##  The ncurses library has been moved out of the System framework in
2811   ##  Mac OS X 10.2.  So if configure detects it, set the command-line
2812   ##  option to use it.
2813   darwin) LIBS_TERMCAP="-lncurses" ;;
2815   gnu*) test -z "$LIBS_TERMCAP" && LIBS_TERMCAP="-lncurses" ;;
2817   freebsd)
2818     AC_MSG_CHECKING([whether FreeBSD is new enough to use terminfo])
2819     AC_CACHE_VAL(emacs_cv_freebsd_terminfo,
2820     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <osreldate.h>]],
2821 [[#if __FreeBSD_version < 400000
2822 fail;
2823 #endif
2824 ]])], emacs_cv_freebsd_terminfo=yes, emacs_cv_freebsd_terminfo=no)])
2826     AC_MSG_RESULT($emacs_cv_freebsd_terminfo)
2828     if test $emacs_cv_freebsd_terminfo = yes; then
2829       LIBS_TERMCAP="-lncurses"
2830     else
2831       TERMINFO=no
2832       LIBS_TERMCAP="-ltermcap"
2833     fi
2834     ;;
2836   netbsd)
2837     if test "x$LIBS_TERMCAP" != "x-lterminfo"; then
2838       TERMINFO=no
2839       LIBS_TERMCAP="-ltermcap"
2840     fi
2841     ;;
2843   openbsd) LIBS_TERMCAP="-lncurses" ;;
2845   ## hpux: Make sure we get select from libc rather than from libcurses
2846   ##  because libcurses on HPUX 10.10 has a broken version of select.
2847   ##  We used to use -lc -lcurses, but this may be cleaner.
2848   ## FIXME?  But TERMINFO = yes on hpux (it used to be explicitly
2849   # set that way, now it uses the default).  Isn't this a contradiction?
2850   hpux*) LIBS_TERMCAP="-ltermcap" ;;
2852 esac
2854 TERMCAP_OBJ=tparam.o
2855 if test $TERMINFO = yes; then
2856   AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.])
2857   TERMCAP_OBJ=terminfo.o
2859 AC_SUBST(LIBS_TERMCAP)
2860 AC_SUBST(TERMCAP_OBJ)
2863 # Do we have res_init, for detecting changes in /etc/resolv.conf?
2864 # On Darwin, res_init appears not to be useful: see bug#562 and
2865 # http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01467.html
2866 resolv=no
2868 if test $opsys != darwin; then
2870   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
2871 #include <arpa/nameser.h>
2872 #include <resolv.h>]],
2873     [[return res_init();]])],
2874     have_res_init=yes, have_res_init=no)
2875   if test "$have_res_init" = no; then
2876     OLIBS="$LIBS"
2877     LIBS="$LIBS -lresolv"
2878     AC_MSG_CHECKING(for res_init with -lresolv)
2879     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
2880 #include <arpa/nameser.h>
2881 #include <resolv.h>]],
2882       [[return res_init();]])],
2883       have_res_init=yes, have_res_init=no)
2884     AC_MSG_RESULT($have_res_init)
2885     if test "$have_res_init" = yes ; then
2886       resolv=yes
2887     fi
2888     LIBS="$OLIBS"
2889   fi
2891   if test "$have_res_init" = yes; then
2892     AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if res_init is available.])
2893   fi
2894 fi                              dnl !darwin
2896 # Do we need the Hesiod library to provide the support routines?
2897 dnl FIXME?  Should we be skipping this on Darwin too?
2898 LIBHESIOD=
2899 if test "$with_hesiod" != no ; then
2900   # Don't set $LIBS here -- see comments above.  FIXME which comments?
2901   AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
2902      [AC_CHECK_LIB(resolv, res_send, resolv=yes,
2903                   [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
2904   if test "$resolv" = yes ; then
2905     RESOLVLIB=-lresolv
2906   else
2907     RESOLVLIB=
2908   fi
2909   AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
2910         hesiod=yes, :, $RESOLVLIB)])
2912   if test x"$hesiod" = xyes; then
2913     AC_DEFINE(HAVE_LIBHESIOD, 1,
2914               [Define to 1 if you have the hesiod library (-lhesiod).])
2915     LIBHESIOD=-lhesiod
2916   fi
2918 AC_SUBST(LIBHESIOD)
2920 # Do we need libresolv (due to res_init or Hesiod)?
2921 if test "$resolv" = yes && test $opsys != darwin; then
2922   AC_DEFINE(HAVE_LIBRESOLV, 1,
2923             [Define to 1 if you have the resolv library (-lresolv).])
2924   LIBRESOLV=-lresolv
2925 else
2926   LIBRESOLV=
2928 AC_SUBST(LIBRESOLV)
2930 # These tell us which Kerberos-related libraries to use.
2931 COM_ERRLIB=
2932 CRYPTOLIB=
2933 KRB5LIB=
2934 DESLIB=
2935 KRB4LIB=
2937 if test "${with_kerberos}" != no; then
2938   AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no)
2939   if test $have_com_err = yes; then
2940     COM_ERRLIB=-lcom_err
2941     LIBS="$COM_ERRLIB $LIBS"
2942     AC_DEFINE(HAVE_LIBCOM_ERR, 1, [Define to 1 if you have the `com_err' library (-lcom_err).])
2943   fi
2944   AC_CHECK_LIB(crypto, mit_des_cbc_encrypt, have_crypto=yes, have_crypto=no)
2945   if test $have_crypto = yes; then
2946     CRYPTOLIB=-lcrypto
2947     LIBS="$CRYPTOLIB $LIBS"
2948     AC_DEFINE(HAVE_LIBCRYPTO, 1, [Define to 1 if you have the `crypto' library (-lcrypto).])
2949   fi
2950   AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt, have_k5crypto=yes, have_k5crypto=no)
2951   if test $have_k5crypto = yes; then
2952     CRYPTOLIB=-lk5crypto
2953     LIBS="$CRYPTOLIB $LIBS"
2954     AC_DEFINE(HAVE_LIBK5CRYPTO, 1, [Define to 1 if you have the `k5crypto' library (-lk5crypto).])
2955   fi
2956   AC_CHECK_LIB(krb5, krb5_init_context, have_krb5=yes, have_krb5=no)
2957   if test $have_krb5=yes; then
2958     KRB5LIB=-lkrb5
2959     LIBS="$KRB5LIB $LIBS"
2960     AC_DEFINE(HAVE_LIBKRB5, 1, [Define to 1 if you have the `krb5' library (-lkrb5).])
2961   fi
2962   dnl FIXME Simplify.  Does not match 22 logic, thanks to default_off?
2963   if test "${with_kerberos5}" = no; then
2964     AC_CHECK_LIB(des425, des_cbc_encrypt, have_des425=yes, have_des425=no )
2965     if test $have_des425 = yes; then
2966       DESLIB=-ldes425
2967       LIBS="$DESLIB $LIBS"
2968       AC_DEFINE(HAVE_LIBDES425, 1, [Define to 1 if you have the `des425' library (-ldes425).])
2969     else
2970       AC_CHECK_LIB(des, des_cbc_encrypt, have_des=yes, have_des=no)
2971       if test $have_des = yes; then
2972         DESLIB=-ldes
2973         LIBS="$DESLIB $LIBS"
2974         AC_DEFINE(HAVE_LIBDES, 1, [Define to 1 if you have the `des' library (-ldes).])
2975       fi
2976     fi
2977     AC_CHECK_LIB(krb4, krb_get_cred, have_krb4=yes, have_krb4=no)
2978     if test $have_krb4 = yes; then
2979       KRB4LIB=-lkrb4
2980       LIBS="$KRB4LIB $LIBS"
2981       AC_DEFINE(HAVE_LIBKRB4, 1, [Define to 1 if you have the `krb4' library (-lkrb4).])
2982     else
2983       AC_CHECK_LIB(krb, krb_get_cred, have_krb=yes, have_krb=no)
2984       if test $have_krb = yes; then
2985         KRB4LIB=-lkrb
2986         LIBS="$KRB4LIB $LIBS"
2987         AC_DEFINE(HAVE_LIBKRB, 1, [Define to 1 if you have the `krb' library (-lkrb).])
2988       fi
2989     fi
2990   fi
2992   if test "${with_kerberos5}" != no; then
2993     AC_CHECK_HEADERS(krb5.h,
2994       [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,,
2995                         [#include <krb5.h>])])
2996   else
2997     AC_CHECK_HEADERS(des.h,,
2998                      [AC_CHECK_HEADERS(kerberosIV/des.h,,
2999                                        [AC_CHECK_HEADERS(kerberos/des.h)])])
3000     AC_CHECK_HEADERS(krb.h,,
3001                      [AC_CHECK_HEADERS(kerberosIV/krb.h,,
3002                                        [AC_CHECK_HEADERS(kerberos/krb.h)])])
3003   fi
3004   AC_CHECK_HEADERS(com_err.h)
3007 AC_SUBST(COM_ERRLIB)
3008 AC_SUBST(CRYPTOLIB)
3009 AC_SUBST(KRB5LIB)
3010 AC_SUBST(DESLIB)
3011 AC_SUBST(KRB4LIB)
3013 AC_CHECK_FUNCS_ONCE(tzset)
3014 AC_MSG_CHECKING(whether localtime caches TZ)
3015 AC_CACHE_VAL(emacs_cv_localtime_cache,
3016 [if test x$ac_cv_func_tzset = xyes; then
3017 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <time.h>
3018 char TZ_GMT0[] = "TZ=GMT0";
3019 char TZ_PST8[] = "TZ=PST8";
3020 main()
3022   time_t now = time ((time_t *) 0);
3023   int hour_GMT0, hour_unset;
3024   if (putenv (TZ_GMT0) != 0)
3025     exit (1);
3026   hour_GMT0 = localtime (&now)->tm_hour;
3027   unsetenv("TZ");
3028   hour_unset = localtime (&now)->tm_hour;
3029   if (putenv (TZ_PST8) != 0)
3030     exit (1);
3031   if (localtime (&now)->tm_hour == hour_GMT0)
3032     exit (1);
3033   unsetenv("TZ");
3034   if (localtime (&now)->tm_hour != hour_unset)
3035     exit (1);
3036   exit (0);
3037 }]])], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
3038 [# If we have tzset, assume the worst when cross-compiling.
3039 emacs_cv_localtime_cache=yes])
3040 else
3041         # If we lack tzset, report that localtime does not cache TZ,
3042         # since we can't invalidate the cache if we don't have tzset.
3043         emacs_cv_localtime_cache=no
3044 fi])dnl
3045 AC_MSG_RESULT($emacs_cv_localtime_cache)
3046 if test $emacs_cv_localtime_cache = yes; then
3047   AC_DEFINE(LOCALTIME_CACHE, 1,
3048             [Define to 1 if localtime caches TZ.])
3051 ok_so_far=yes
3052 AC_CHECK_FUNC(socket, , ok_so_far=no)
3053 if test $ok_so_far = yes; then
3054   AC_CHECK_HEADER(netinet/in.h, , ok_so_far=no)
3056 if test $ok_so_far = yes; then
3057   AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
3059 if test $ok_so_far = yes; then
3060 dnl Fixme: Not used.  Should this be HAVE_SOCKETS?
3061   AC_DEFINE(HAVE_INET_SOCKETS, 1,
3062             [Define to 1 if you have inet sockets.])
3065 if test -f /usr/lpp/X11/bin/smt.exp; then
3066   AC_DEFINE(HAVE_AIX_SMT_EXP, 1,
3067             [Define to 1 if the file /usr/lpp/X11/bin/smt.exp exists.])
3070 AC_MSG_CHECKING(whether system supports dynamic ptys)
3071 if test -d /dev/pts && ls -d /dev/ptmx > /dev/null 2>&1 ; then
3072   AC_MSG_RESULT(yes)
3073   AC_DEFINE(HAVE_DEV_PTMX, 1, [Define to 1 if dynamic ptys are supported.])
3074 else
3075   AC_MSG_RESULT(no)
3078 AC_FUNC_FORK
3080 AC_CHECK_FUNCS(snprintf)
3082 dnl Adapted from Haible's version.
3083 AC_CACHE_CHECK([for nl_langinfo and CODESET], emacs_cv_langinfo_codeset,
3084   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
3085     [[char* cs = nl_langinfo(CODESET);]])],
3086     emacs_cv_langinfo_codeset=yes,
3087     emacs_cv_langinfo_codeset=no)
3088   ])
3089 if test $emacs_cv_langinfo_codeset = yes; then
3090   AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
3091     [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
3094 AC_TYPE_MBSTATE_T
3096 AC_CACHE_CHECK([for C restricted array declarations], emacs_cv_c_restrict_arr,
3097   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[void fred (int x[__restrict]);]], [[]])],
3098                   emacs_cv_c_restrict_arr=yes, emacs_cv_c_restrict_arr=no)])
3099 if test "$emacs_cv_c_restrict_arr" = yes; then
3100   AC_DEFINE(__restrict_arr, __restrict,
3101     [Define to compiler's equivalent of C99 restrict keyword in array
3102      declarations.  Define as empty for no equivalent.])
3105 dnl Fixme: AC_SYS_POSIX_TERMIOS should probably be used, but it's not clear
3106 dnl how the tty code is related to POSIX and/or other versions of termios.
3107 dnl The following looks like a useful start.
3109 dnl AC_SYS_POSIX_TERMIOS
3110 dnl if test $ac_cv_sys_posix_termios = yes; then
3111 dnl    AC_DEFINE(HAVE_TERMIOS, 1, [Define to 1 if you have POSIX-style functions
3112 dnl                                and macros for terminal control.])
3113 dnl    AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.])
3114 dnl fi
3116 dnl Every platform that uses configure (ie every non-MS platform)
3117 dnl supports this.  There is a create-lockfiles option you can
3118 dnl customize if you do not want the lock files to be written.
3119 dnl So it is not clear that this #define still needs to exist.
3120 AC_DEFINE(CLASH_DETECTION, 1, [Define if you want lock files to be written,
3121   so that Emacs can tell instantly when you try to modify a file that
3122   someone else has modified in his/her Emacs.])
3124 dnl Everybody supports this, except MS.
3125 dnl Seems like the kind of thing we should be testing for, though.
3126 ## Note: PTYs are broken on darwin <6.  Use at your own risk.
3127 AC_DEFINE(HAVE_PTYS, 1, [Define if the system supports pty devices.])
3129 dnl Everybody supports this, except MS-DOS.
3130 dnl Seems like the kind of thing we should be testing for, though.
3131 dnl Compare with HAVE_INET_SOCKETS (which is unused...) above.
3132 AC_DEFINE(HAVE_SOCKETS, 1, [Define if the system supports
3133   4.2-compatible sockets.])
3136 AH_TEMPLATE(NO_EDITRES, [Define if XEditRes should not be used.])
3138 case $opsys in
3139   aix4-2)
3140     dnl Unfortunately without libXmu we cannot support EditRes.
3141     if test x$ac_cv_lib_Xmu_XmuConvertStandardSelection != xyes; then
3142       AC_DEFINE(NO_EDITRES, 1)
3143     fi
3144     ;;
3146   hpux*)
3147     dnl Assar Westerlund <assar@sics.se> says this is necessary for
3148     dnl HP-UX 10.20, and that it works for HP-UX 0 as well.
3149     AC_DEFINE(NO_EDITRES, 1)
3150     ;;
3151 esac
3154 case $opsys in
3155   darwin | gnu | hpux* | *bsd )
3156     AC_DEFINE(NO_TERMIO, 1, [Define if termio.h should not be included.])
3157     ;;
3159   irix6-5 | sol2* | unixware )
3160     dnl Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
3161     dnl instead, there's a system variable _sys_nsig.  Unfortunately, we
3162     dnl need the constant to dimension an array.  So wire in the appropriate
3163     dnl value here.
3164     AC_DEFINE(NSIG_MINIMUM, 32, [Minimum value of NSIG.])
3165     ;;
3166 esac
3169 case $opsys in
3170   dnl SIGIO exists, but the feature doesn't work in the way Emacs needs.
3171   dnl See eg <http://article.gmane.org/gmane.os.openbsd.ports/46831>.
3172   hpux* | irix6-5 | openbsd | sol2* | unixware )
3173     AC_DEFINE(BROKEN_SIGIO, 1, [Define if SIGIO should not be used.])
3174     ;;
3176   aix4-2)
3177     dnl BUILD 9008 - FIONREAD problem still exists in X-Windows.
3178     AC_DEFINE(BROKEN_FIONREAD, 1, [Define if FIONREAD should not be used.])
3179     dnl As we define BROKEN_FIONREAD, SIGIO will be undefined in systty.h.
3180     dnl But, on AIX, SIGAIO, SIGPTY, and SIGPOLL are defined as SIGIO,
3181     dnl which causes compilation error at init_signals in sysdep.c.
3182     dnl So, we define these macros so that syssignal.h detects them
3183     dnl and undefine SIGAIO, SIGPTY and SIGPOLL.
3184     AC_DEFINE(BROKEN_SIGAIO, 1, [Define if SIGAIO should not be used.])
3185     AC_DEFINE(BROKEN_SIGPOLL,1, [Define if SIGPOLL should not be used.])
3186     AC_DEFINE(BROKEN_SIGPTY, 1, [Define if SIGPTY should not be used.])
3188     dnl On AIX Emacs uses the gmalloc.c malloc implementation.  But given
3189     dnl the way this system works, libc functions that return malloced
3190     dnl memory use the libc malloc implementation. Calling xfree or
3191     dnl xrealloc on the results of such functions results in a crash.
3192     dnl
3193     dnl One solution for this could be to define SYSTEM_MALLOC in configure,
3194     dnl but that does not currently work on this system.
3195     dnl
3196     dnl It is possible to completely override the malloc implementation on
3197     dnl AIX, but that involves putting the malloc functions in a shared
3198     dnl library and setting the MALLOCTYPE environment variable to point to
3199     dnl that shared library.
3200     dnl
3201     dnl Emacs currently calls xrealloc on the results of get_current_dir name,
3202     dnl to avoid a crash just use the Emacs implementation for that function.
3203     dnl
3204     dnl FIXME We could change the AC_CHECK_FUNCS call near the start
3205     dnl of this file, so that we do not check for get_current_dir_name
3206     dnl on AIX.  But that might be fragile if something else ends
3207     dnl up testing for get_current_dir_name as a dependency.
3208     AC_DEFINE(BROKEN_GET_CURRENT_DIR_NAME, 1, [Define if
3209       get_current_dir_name should not be used.])
3210     ;;
3212   freebsd)
3213     dnl Circumvent a bug in FreeBSD.  In the following sequence of
3214     dnl writes/reads on a PTY, read(2) returns bogus data:
3215     dnl
3216     dnl write(2)  1022 bytes
3217     dnl write(2)   954 bytes, get EAGAIN
3218     dnl read(2)   1024 bytes in process_read_output
3219     dnl read(2)     11 bytes in process_read_output
3220     dnl
3221     dnl That is, read(2) returns more bytes than have ever been written
3222     dnl successfully.  The 1033 bytes read are the 1022 bytes written
3223     dnl successfully after processing (for example with CRs added if the
3224     dnl terminal is set up that way which it is here).  The same bytes will
3225     dnl be seen again in a later read(2), without the CRs.
3226     AC_DEFINE(BROKEN_PTY_READ_AFTER_EAGAIN, 1, [Define on FreeBSD to
3227       work around an issue when reading from a PTY.])
3228     ;;
3230   dnl Define the following so emacs symbols will not conflict with those
3231   dnl in the System framework.  Otherwise -prebind will not work.
3232   darwin)
3233     AC_DEFINE(NO_ABORT, 1, [Do not define abort in emacs.c.])
3234     ;;
3235 esac
3237 case $opsys in
3238   gnu-* | sol2-10 )
3239     dnl FIXME Can't we test if this exists (eg /proc/$$)?
3240     AC_DEFINE(HAVE_PROCFS, 1, [Define if you have the /proc filesystem.])
3241   ;;
3242 esac
3244 case $opsys in
3245   darwin | freebsd | netbsd | openbsd )
3246     AC_DEFINE(DONT_REOPEN_PTY, 1, [Define if process.c does not need to
3247       close a pty to make it a controlling terminal (it is already a
3248       controlling terminal of the subprocess, because we did ioctl TIOCSCTTY).])
3249   ;;
3250 esac
3252 dnl FIXME Surely we can test for this rather than hard-code it.
3253 case $opsys in
3254   netbsd | openbsd) sound_device="/dev/audio" ;;
3255   *) sound_device="/dev/dsp" ;;
3256 esac
3258 dnl Used in sound.c
3259 AC_DEFINE_UNQUOTED(DEFAULT_SOUND_DEVICE, "$sound_device",
3260   [Name of the default sound device.])
3263 dnl Emacs can read input using SIGIO and buffering characters itself,
3264 dnl or using CBREAK mode and making C-g cause SIGINT.
3265 dnl The choice is controlled by the variable interrupt_input.
3267 dnl Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)
3269 dnl Emacs uses the presence or absence of the SIGIO and BROKEN_SIGIO macros
3270 dnl to indicate whether or not signal-driven I/O is possible.  It uses
3271 dnl INTERRUPT_INPUT to decide whether to use it by default.
3273 dnl SIGIO can be used only on systems that implement it (4.2 and 4.3).
3274 dnl CBREAK mode has two disadvantages
3275 dnl 1) At least in 4.2, it is impossible to handle the Meta key properly.
3276 dnl I hear that in system V this problem does not exist.
3277 dnl 2) Control-G causes output to be discarded.
3278 dnl I do not know whether this can be fixed in system V.
3280 dnl Another method of doing input is planned but not implemented.
3281 dnl It would have Emacs fork off a separate process
3282 dnl to read the input and send it to the true Emacs process
3283 dnl through a pipe.
3284 case $opsys in
3285   darwin | gnu-linux | gnu-kfreebsd )
3286     AC_DEFINE(INTERRUPT_INPUT, 1, [Define to read input using SIGIO.])
3287   ;;
3288 esac
3291 dnl If the system's imake configuration file defines `NeedWidePrototypes'
3292 dnl as `NO', we must define NARROWPROTO manually.  Such a define is
3293 dnl generated in the Makefile generated by `xmkmf'.  If we don't define
3294 dnl NARROWPROTO, we will see the wrong function prototypes for X functions
3295 dnl taking float or double parameters.
3296 case $opsys in
3297   cygwin|gnu|gnu-linux|gnu-kfreebsd|irix6-5|freebsd|netbsd|openbsd)
3298     AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration
3299       file defines `NeedWidePrototypes' as `NO'.])
3300   ;;
3301 esac
3304 dnl Used in process.c, this must be a loop, even if it only runs once.
3305 dnl (Except on SGI; see below.  Take that, clarity and consistency!)
3306 AH_TEMPLATE(PTY_ITERATION, [How to iterate over PTYs.])
3307 dnl Only used if !PTY_ITERATION.  Iterate from FIRST_PTY_LETTER to z,
3308 dnl trying suffixes 0-16.
3309 AH_TEMPLATE(FIRST_PTY_LETTER, [Letter to use in finding device name of
3310   first PTY, if PTYs are supported.])
3311 AH_TEMPLATE(PTY_OPEN, [How to open a PTY, if non-standard.])
3312 AH_TEMPLATE(PTY_NAME_SPRINTF, [How to get the device name of the control
3313   end of a PTY, if non-standard.])
3314 AH_TEMPLATE(PTY_TTY_NAME_SPRINTF, [How to get device name of the tty
3315   end of a PTY, if non-standard.])
3317 case $opsys in
3318   aix4-2 )
3319     AC_DEFINE(PTY_ITERATION, [int c; for (c = 0; !c ; c++)] )
3320     dnl You allocate a pty by opening /dev/ptc to get the master side.
3321     dnl To get the name of the slave side, you just ttyname() the master side.
3322     AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");] )
3323     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));] )
3324     ;;
3326   cygwin )
3327     AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)] )
3328     dnl multi-line AC_DEFINEs are hard. :(
3329     AC_DEFINE(PTY_OPEN, [ do { int dummy; SIGMASKTYPE mask; mask = sigblock (sigmask (SIGCHLD)); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; sigsetmask (mask); if (fd >= 0) emacs_close (dummy); } while (0)] )
3330     AC_DEFINE(PTY_NAME_SPRINTF, [] )
3331     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [] )
3332     ;;
3334   darwin )
3335     AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)] )
3336     dnl Not used, because PTY_ITERATION is defined.
3337     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3338     dnl Note that openpty may fork via grantpt on Mac OS X 10.4/Darwin 8.
3339     dnl But we don't have to block SIGCHLD because it is blocked in the
3340     dnl implementation of grantpt.
3341     AC_DEFINE(PTY_OPEN, [ do { int slave; if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) fd = -1; else emacs_close (slave); } while (0)] )
3342     AC_DEFINE(PTY_NAME_SPRINTF, [] )
3343     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [] )
3344     ;;
3346   gnu | freebsd | netbsd | openbsd )
3347     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3348     ;;
3350   gnu-linux | gnu-kfreebsd )
3351     dnl if HAVE_GRANTPT
3352     if test "x$ac_cv_func_grantpt" = xyes; then
3353       AC_DEFINE(UNIX98_PTYS, 1, [Define if the system has Unix98 PTYs.])
3354       AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)] )
3355       dnl Note that grantpt and unlockpt may fork.  We must block SIGCHLD
3356       dnl to prevent sigchld_handler from intercepting the child's death.
3357       AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname; sigblock (sigmask (SIGCHLD)); if (grantpt (fd) == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname(fd))) { sigunblock (sigmask (SIGCHLD)); close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); sigunblock (sigmask (SIGCHLD)); }] )
3358       dnl if HAVE_GETPT
3359       if test "x$ac_cv_func_getpt" = xyes; then
3360         AC_DEFINE(PTY_OPEN, [fd = getpt ()])
3361         AC_DEFINE(PTY_NAME_SPRINTF, [] )
3362       else
3363         AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");] )
3364       fi
3365     else
3366       AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3367     fi
3368     ;;
3370   hpux*)
3371     AC_DEFINE(FIRST_PTY_LETTER, ['p'])
3372     AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);] )
3373     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);] )
3374     ;;
3376   irix6-5 )
3377     dnl It looks like this cannot be right, because it is not a loop.
3378     dnl However, process.c actually does this:
3379     dnl # ifndef __sgi
3380     dnl   continue;
3381     dnl # else
3382     dnl   return -1;
3383     dnl # endif
3384     dnl which presumably makes it OK, since irix == sgi (?).
3385     dnl FIXME it seems like this special treatment is unnecessary?
3386     dnl Why can't irix use a single-trip loop like eg cygwin?
3387     AC_DEFINE(PTY_ITERATION, [])
3388     dnl Not used, because PTY_ITERATION is defined.
3389     AC_DEFINE(FIRST_PTY_LETTER, ['q'])
3390     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(SIGCLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCLD, &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); }] )
3391     dnl No need to get the pty name at all.
3392     AC_DEFINE(PTY_NAME_SPRINTF, [] )
3393     dnl No need to use sprintf to get the tty name--we get that from _getpty.
3394     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [] )
3395     ;;
3397   sol2* )
3398     dnl Uses sigblock/sigunblock rather than sighold/sigrelse,
3399     dnl which appear to be BSD4.1 specific.  It may also be appropriate
3400     dnl for SVR4.x (x<2) but I'm not sure.   fnf@cygnus.com
3401     dnl On SysVr4, grantpt(3) forks a subprocess, so keep sigchld_handler()
3402     dnl from intercepting that death.  If any child but grantpt's should die
3403     dnl within, it should be caught after sigrelse(2).
3404     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; sigblock (sigmask (SIGCLD)); if (grantpt (fd) == -1) { emacs_close (fd); return -1; } sigunblock (sigmask (SIGCLD)); if (unlockpt (fd) == -1) { emacs_close (fd); return -1; } if (!(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, sizeof pty_name, "%s", ptyname); }] )
3405     ;;
3407   unixware )
3408     dnl Comments are as per sol2*.
3409     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; sigblock(sigmask(SIGCLD)); if (grantpt(fd) == -1) fatal("could not grant slave pty"); sigunblock(sigmask(SIGCLD)); 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); }] )
3410     ;;
3411 esac
3414 case $opsys in
3415   sol2* | unixware )
3416     dnl This change means that we don't loop through allocate_pty too
3417     dnl many times in the (rare) event of a failure.
3418     AC_DEFINE(FIRST_PTY_LETTER, ['z'])
3419     AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");] )
3420     dnl Push various streams modules onto a PTY channel.  Used in process.c.
3421     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.])
3422     ;;
3423 esac
3426 AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by
3427 "typing" a signal character on the pty.])
3429 case $opsys in
3430   dnl Perry Smith <pedz@ddivt1.austin.ibm.com> says this is correct for AIX.
3431   dnl thomas@mathematik.uni-bremen.de says this is needed for IRIX.
3432   aix4-2 | cygwin | gnu | irix6-5 | freebsd | netbsd | openbsd )
3433     AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
3434     ;;
3436   dnl 21 Jun 06: Eric Hanchrow <offby1@blarg.net> says this works.
3437   dnl FIXME Does gnu-kfreebsd have linux/version.h?  It seems unlikely...
3438   gnu-linux | gnu-kfreebsd )
3440     AC_MSG_CHECKING([for signals via characters])
3441     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3442 #include <linux/version.h>
3443 #if LINUX_VERSION_CODE < 0x20400
3444 # error "Linux version too old"
3445 #endif
3446       ]], [[]])], emacs_signals_via_chars=yes, emacs_signals_via_chars=no)
3448     AC_MSG_RESULT([$emacs_signals_via_chars])
3449     test $emacs_signals_via_chars = yes && AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
3450     ;;
3451 esac
3454 dnl Used in dispnew.c
3455 AH_TEMPLATE(PENDING_OUTPUT_COUNT, [Number of chars of output in the
3456 buffer of a stdio stream.])
3458 dnl FIXME just PENDING_OUTPUT_COUNT should suffice.
3459 AH_TEMPLATE(GNU_LIBRARY_PENDING_OUTPUT_COUNT, [Value of
3460 PENDING_OUTPUT_COUNT if using the GNU C library.])
3462 case $opsys in
3463   cygwin | darwin | freebsd | netbsd | openbsd )
3464     AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->_p - (FILE)->_bf._base)])
3465     ;;
3467   unixware)
3468     AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->__ptr - (FILE)->__base)])
3469     ;;
3471   gnu | gnu-linux | gnu-kfreebsd )
3472     AC_MSG_CHECKING([for style of pending output formalism])
3473     dnl In autoconf 2.67 and later, we could use a single test
3474     dnl since the preprocessed output is accessible in "conftest.i".
3475     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3476 #include <stdio.h>
3477 #if !defined (_IO_STDIO_H) && !defined (_STDIO_USES_IOSTREAM)
3478 # error "stdio definitions not found"
3479 #endif
3480       ]], [[]])], emacs_pending_output=new, emacs_pending_output=unknown)
3482       if test $emacs_pending_output = unknown; then
3483         case $opsys in
3484           gnu-linux | gnu-kfreebsd)
3485             AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3486 #include <stdio.h>
3487 #ifndef __UCLIBC__
3488 # error "not using uclibc"
3489 #endif
3490             ]], [[]])], emacs_pending_output=uclibc, emacs_pending_output=old)
3491             ;;
3492         esac
3493       fi
3495       AC_MSG_RESULT([$emacs_pending_output])
3497       case $emacs_pending_output in
3498         new)
3499           dnl New C libio names.
3500           AC_DEFINE(GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE),
3501             [((FILE)->_IO_write_ptr - (FILE)->_IO_write_base)])
3502           ;;
3503         uclibc)
3504           dnl Using the uClibc library.
3505           AC_DEFINE(GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE),
3506             [((FILE)->__bufpos - (FILE)->__bufstart)])
3507           ;;
3508         old)
3509           dnl Old C++ iostream names.
3510           AC_DEFINE(GNU_LIBRARY_PENDING_OUTPUT_COUNT(FILE),
3511             [((FILE)->_pptr - (FILE)->_pbase)])
3512           ;;
3513       esac
3514     ;;
3515 esac
3518 dnl Used in vm-limit.c
3519 AH_TEMPLATE(DATA_START, [Address of the start of the data segment.])
3520 dnl Used in lisp.h, emacs.c, mem-limits.h
3521 dnl NEWS.18 describes this as "a number which contains
3522 dnl the high bits to be inclusive or'ed with pointers that are unpacked."
3523 AH_TEMPLATE(DATA_SEG_BITS, [Extra bits to be or'd in with any pointers
3524 stored in a Lisp_Object.])
3525 dnl if Emacs uses fewer than 32 bits for the value field of a LISP_OBJECT.
3527 case $opsys in
3528   gnu)
3529     dnl libc defines data_start.
3530     AC_DEFINE(DATA_START, [({ extern int data_start; (char *) &data_start; })])
3531     ;;
3533   hpux*)
3534     dnl The data segment on this machine always starts at address 0x40000000.
3535     AC_DEFINE(DATA_START, [0x40000000])
3536     AC_DEFINE(DATA_SEG_BITS, [0x40000000])
3537     ;;
3538   irix6-5)
3539     AC_DEFINE(DATA_START, [0x10000000])
3540     AC_DEFINE(DATA_SEG_BITS, [0x10000000])
3541     ;;
3542 esac
3545 AH_TEMPLATE(ULIMIT_BREAK_VALUE, [Undocumented.])
3546 AH_TEMPLATE(TAB3, [Undocumented.])
3548 case $opsys in
3549   darwin) AC_DEFINE(TAB3, OXTABS) ;;
3551   gnu | freebsd | netbsd | openbsd )
3552     AC_DEFINE(TABDLY, OXTABS, [Undocumented.] )
3553     AC_DEFINE(TAB3, OXTABS)
3554     ;;
3556   gnu-linux | gnu-kfreebsd )
3557     dnl libc-linux/sysdeps/linux/i386/ulimit.c says that due to shared
3558     dnl library, we cannot get the maximum address for brk.
3559     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3560 #ifndef __i386__
3561 # error "not i386"
3562 #endif
3563       ]], [[]])], AC_DEFINE(ULIMIT_BREAK_VALUE, [(32*1024*1024)]), [])
3565     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3566 #ifndef __ia64__
3567 # error "not ia64"
3568 #endif
3569       ]], [[]])], AC_DEFINE(GC_MARK_SECONDARY_STACK(),
3570         [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)],
3571         [Mark a secondary stack, like the register stack on the ia64.]), [])
3572     ;;
3574   hpux*)
3575     AC_DEFINE(RUN_TIME_REMAP, 1, [Define if emacs.c needs to call
3576       run_time_remap; for HPUX.])
3577     ;;
3579   irix6-5)
3580     dnl Ulimit(UL_GMEMLIM) is busted...
3581     AC_DEFINE(ULIMIT_BREAK_VALUE, [0x14000000])
3582     ;;
3583 esac
3586 dnl These won't be used automatically yet.  We also need to know, at least,
3587 dnl that the stack is continuous.
3588 AH_TEMPLATE(GC_SETJMP_WORKS, [Define if setjmp is known to save all
3589   registers relevant for conservative garbage collection in the jmp_buf.])
3591 AH_TEMPLATE(GC_MARK_STACK, [Define to GC_USE_GCPROS_AS_BEFORE if
3592   conservative garbage collection is not known to work.])
3595 case $opsys in
3596   aix4-2 | hpux* | unixware)
3597     dnl Conservative garbage collection has not been tested, so for now
3598     dnl play it safe and stick with the old-fashioned way of marking.
3599     AC_DEFINE(GC_MARK_STACK, [GC_USE_GCPROS_AS_BEFORE])
3600     ;;
3602   dnl Not all the architectures are tested, but there are Debian packages
3603   dnl for SCM and/or Guile on them, so the technique must work.  See also
3604   dnl comments in alloc.c concerning setjmp and gcc.
3605   dnl Fixme: it's probably safe to just use the GCC conditional below.
3606   gnu-linux | gnu-kfreebsd )
3607     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3608 #if defined __i386__ || defined __sparc__ || defined __mc68000__ \
3609   || defined __alpha__ || defined __mips__ || defined __s390__ \
3610   || defined __arm__ || defined __powerpc__ || defined __amd64__ \
3611   || defined __ia64__ || defined __sh__
3612 /* ok */
3613 #else
3614 # error "setjmp not known to work on this arch"
3615 #endif
3616     ]], [[]])], AC_DEFINE(GC_SETJMP_WORKS, 1),
3617       AC_DEFINE(GC_MARK_STACK, [GC_USE_GCPROS_AS_BEFORE]) )
3618     ;;
3619 esac
3622 if test x$GCC = xyes; then
3623    dnl GC_SETJMP_WORKS is nearly always appropriate for GCC.
3624    AC_DEFINE(GC_SETJMP_WORKS, 1)
3625 else
3626   case $opsys in
3627     dnl irix: Tested on Irix 6.5.  SCM worked on earlier versions.
3628     freebsd | netbsd | openbsd | irix6-5 | sol2* )
3629       AC_DEFINE(GC_SETJMP_WORKS, 1)
3630       ;;
3631   esac
3632 fi                              dnl GCC?
3635 dnl Used in xfaces.c.
3636 case $opsys in
3637   hpux* | sol2* )
3638     AC_DEFINE(XOS_NEEDS_TIME_H, 1, [Compensate for a bug in Xos.h on
3639       some systems, where it requires time.h.])
3640     ;;
3641 esac
3644 dnl Define symbols to identify the version of Unix this is.
3645 dnl Define all the symbols that apply correctly.
3646 AH_TEMPLATE(BSD4_2, [Define if the system is compatible with BSD 4.2.])
3647 AH_TEMPLATE(BSD_SYSTEM, [Define if the system is compatible with BSD 4.2.])
3648 AH_TEMPLATE(USG, [Define if the system is compatible with System III.])
3649 AH_TEMPLATE(USG5, [Define if the system is compatible with System V.])
3651 case $opsys in
3652   aix4-2)
3653     AC_DEFINE(USG, [])
3654     AC_DEFINE(USG5, [])
3655     dnl This symbol should be defined on AIX Version 3  ???????
3656     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3657 #ifndef _AIX
3658 # error "_AIX not defined"
3659 #endif
3660     ]], [[]])], [], AC_DEFINE(_AIX, [], [Define if the system is AIX.]))
3661     ;;
3663   cygwin)
3664     opsysfile=
3665     AC_DEFINE(CYGWIN, 1, [Define if the system is Cygwin.])
3666     ;;
3668   darwin)
3669     dnl BSD4_3 and BSD4_4 are already defined in sys/param.h.
3670     AC_DEFINE(BSD4_2, [])
3671     AC_DEFINE(BSD_SYSTEM, [])
3672     dnl More specific than the above two.  We cannot use __APPLE__ as this
3673     dnl may not be defined on non-OSX Darwin, and we cannot define DARWIN
3674     dnl here because Panther and lower CoreFoundation.h uses DARWIN to
3675     dnl distinguish OS X from pure Darwin.
3676     AC_DEFINE(DARWIN_OS, [], [Define if the system is Darwin.])
3677     ;;
3679   freebsd)
3680     AC_DEFINE(BSD4_2, [])
3681     dnl Hack to avoid calling AC_PREPROC_IFELSE multiple times.
3682     dnl Would not be needed with autoconf >= 2.67, where the
3683     dnl preprocessed output is accessible in "conftest.i".
3684     AC_DEFINE(BSD_SYSTEM_AHB, 1, [Define if AH_BOTTOM should change BSD_SYSTEM.])
3685     ;;
3687   gnu | netbsd | openbsd )
3688     AC_DEFINE(BSD4_2, [])
3689     AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
3690 #ifndef BSD_SYSTEM
3691 # error "BSD_SYSTEM not defined"
3692 #endif
3693     ]], [[]])], [], AC_DEFINE(BSD_SYSTEM, 43) )
3694     ;;
3696   gnu-linux | gnu-kfreebsd )
3697     AC_DEFINE(USG, [])
3698     AC_DEFINE(GNU_LINUX, [], [Define if ths system is compatible with GNU/Linux.])
3699     ;;
3701   hpux*)
3702     AC_DEFINE(USG, [])
3703     AC_DEFINE(USG5, [])
3704     AC_DEFINE(HPUX, [], [Define if the system is HPUX.])
3705     ;;
3707   irix6-5)
3708     AC_DEFINE(USG, [])
3709     AC_DEFINE(USG5, [])
3710     AC_DEFINE(IRIX6_5, [], [Define if the system is IRIX.])
3711     ;;
3713   sol2*)
3714     AC_DEFINE(USG, [])
3715     AC_DEFINE(USG5, [])
3716     AC_DEFINE(SOLARIS2, [], [Define if the system is Solaris.])
3717     ;;
3719   unixware)
3720     AC_DEFINE(USG, [])
3721     AC_DEFINE(USG5, [])
3722     ;;
3723 esac
3726 case $opsys in
3727   dnl Emacs supplies its own malloc, but glib (part of Gtk+) calls
3728   dnl memalign and on Cygwin, that becomes the Cygwin-supplied memalign.
3729   dnl As malloc is not the Cygwin malloc, the Cygwin memalign always
3730   dnl returns ENOSYS.  A workaround is to set G_SLICE=always-malloc. */
3731   cygwin)
3732     AC_DEFINE(G_SLICE_ALWAYS_MALLOC, 1, [Define to set the
3733       G_SLICE environment variable to "always-malloc" at startup, if
3734       using GTK.])
3735     ;;
3737   gnu) opsysfile= ;;
3739   gnu-kfreebsd) opsysfile="s/gnu-linux.h" ;;
3741   hpux11)
3742     dnl See comments in sysdep.c:sys_signal.
3743     dnl SA_RESTART resets the timeout of `select' on hpux11.
3744     dnl Defining BROKEN_SA_RESTART is not the same as undef'ing SA_RESTART.
3745     AC_DEFINE(BROKEN_SA_RESTART, 1, [Define if SA_RESTART should only
3746       be used in batch mode.])
3747     dnl It works to open the pty's tty in the parent (Emacs), then
3748     dnl close and reopen it in the child.
3749     AC_DEFINE(USG_SUBTTY_WORKS, 1, [Define for USG systems where it
3750       works to open a pty's tty in the parent process, then close and
3751       reopen it in the child.])
3753     opsysfile="s/hpux10-20.h"
3754     ;;
3756   irix6-5)
3757     AC_DEFINE(PREFER_VSUSP, 1, [Define if process_send_signal should
3758       use VSUSP instead of VSWTCH.])
3759     AC_DEFINE(SETPGRP_RELEASES_CTTY, 1, [Define if process.c:child_setup
3760       should not call setpgrp.])
3761     ;;
3763   openbsd) opsysfile="s/netbsd.h" ;;
3765   sol2-10)
3766     AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes
3767       on Solaris.])
3768     opsysfile="s/sol2-6.h"
3769     ;;
3770 esac
3772 # Set up the CFLAGS for real compilation, so we can substitute it.
3773 CFLAGS="$REAL_CFLAGS"
3774 CPPFLAGS="$REAL_CPPFLAGS"
3776 ## Hack to detect a buggy GCC version.
3777 if test "x$GCC" = xyes \
3778    && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \
3779    && test x"`echo $CFLAGS | grep '\-O@<:@23@:>@'`" != x \
3780    && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then
3781    AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'.])
3784 version=$PACKAGE_VERSION
3786 ### Specify what sort of things we'll be editing into Makefile and config.h.
3787 ### Use configuration here uncanonicalized to avoid exceeding size limits.
3788 AC_SUBST(version)
3789 AC_SUBST(configuration)
3790 ## Unused?
3791 AC_SUBST(canonical)
3792 AC_SUBST(srcdir)
3793 AC_SUBST(prefix)
3794 AC_SUBST(exec_prefix)
3795 AC_SUBST(bindir)
3796 AC_SUBST(datadir)
3797 AC_SUBST(sharedstatedir)
3798 AC_SUBST(libexecdir)
3799 AC_SUBST(mandir)
3800 AC_SUBST(infodir)
3801 AC_SUBST(lispdir)
3802 AC_SUBST(leimdir)
3803 AC_SUBST(standardlisppath)
3804 AC_SUBST(locallisppath)
3805 AC_SUBST(lisppath)
3806 AC_SUBST(x_default_search_path)
3807 AC_SUBST(etcdir)
3808 AC_SUBST(archlibdir)
3809 AC_SUBST(docdir)
3810 AC_SUBST(bitmapdir)
3811 AC_SUBST(gamedir)
3812 AC_SUBST(gameuser)
3813 ## FIXME? Nothing uses @LD_SWITCH_X_SITE@.
3814 ## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the
3815 ## end of LIBX_BASE, but nothing ever set it.
3816 AC_SUBST(LD_SWITCH_X_SITE)
3817 AC_SUBST(C_SWITCH_X_SITE)
3818 AC_SUBST(GNUSTEP_CFLAGS)
3819 AC_SUBST(CFLAGS)
3820 ## Used in lwlib/Makefile.in.
3821 AC_SUBST(X_TOOLKIT_TYPE)
3822 if test -n "${opsysfile}"; then
3823   S_FILE="\$(srcdir)/${opsysfile}"
3824 else
3825   S_FILE=
3827 AC_SUBST(S_FILE)
3828 AC_SUBST(ns_appdir)
3829 AC_SUBST(ns_appbindir)
3830 AC_SUBST(ns_appresdir)
3831 AC_SUBST(ns_appsrc)
3832 AC_SUBST(GNU_OBJC_CFLAGS)
3833 AC_SUBST(OTHER_FILES)
3835 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION,  "${canonical}",
3836                    [Define to the canonical Emacs configuration name.])
3837 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${ac_configure_args}",
3838                    [Define to the options passed to configure.])
3839 if test -n "$opsysfile"; then
3840   AC_DEFINE_UNQUOTED(config_opsysfile, "${opsysfile}",
3841                      [Define to the used os dependent file.])
3844 XMENU_OBJ=
3845 XOBJ=
3846 FONT_OBJ=
3847 if test "${HAVE_X_WINDOWS}" = "yes" ; then
3848   AC_DEFINE(HAVE_X_WINDOWS, 1,
3849             [Define to 1 if you want to use the X window system.])
3850   XMENU_OBJ=xmenu.o
3851   XOBJ="xterm.o xfns.o xselect.o xrdb.o fontset.o xsmfns.o fringe.o image.o xsettings.o xgselect.o"
3852   FONT_OBJ=xfont.o
3853   if test "$HAVE_XFT" = "yes"; then
3854     FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
3855   elif test "$HAVE_FREETYPE" = "yes"; then
3856     FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
3857   fi
3858   AC_SUBST(FONT_OBJ)
3860 AC_SUBST(XMENU_OBJ)
3861 AC_SUBST(XOBJ)
3862 AC_SUBST(FONT_OBJ)
3864 WIDGET_OBJ=
3865 MOTIF_LIBW=
3866 if test "${USE_X_TOOLKIT}" != "none" ; then
3867   WIDGET_OBJ=widget.o
3868   AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
3869   if test "${USE_X_TOOLKIT}" = "LUCID"; then
3870     AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
3871   elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
3872     AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
3873     MOTIF_LIBW=-lXm
3874     case "$opsys" in
3875       gnu-linux)
3876         ## Paul Abrahams <abrahams at equinox.shaysnet.com> says this is needed.
3877         MOTIF_LIBW="$MOTIF_LIBW -lXpm"
3878         ;;
3880       unixware)
3881         ## Richard Anthony Ryan <ryanr at ellingtn.ftc.nrcs.usda.gov>
3882         ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2.
3883         MOTIF_LIBW="MOTIF_LIBW -lXimp"
3884         ;;
3886       aix4-2)
3887         ## olson@mcs.anl.gov says -li18n is needed by -lXm.
3888         MOTIF_LIBW="$MOTIF_LIBW -li18n"
3889         ;;
3890     esac
3891     MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
3892   fi
3894 AC_SUBST(WIDGET_OBJ)
3896 TOOLKIT_LIBW=
3897 case "$USE_X_TOOLKIT" in
3898   MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
3899   LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
3900   none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
3901 esac
3902 AC_SUBST(TOOLKIT_LIBW)
3904 if test "$USE_X_TOOLKIT" = "none"; then
3905   LIBXT_OTHER="\$(LIBXSM)"
3906   OLDXMENU_TARGET="really-oldXMenu"
3907 else
3908   LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
3909   OLDXMENU_TARGET="really-lwlib"
3911 AC_SUBST(LIBXT_OTHER)
3913 ## The X Menu stuff is present in the X10 distribution, but missing
3914 ## from X11.  If we have X10, just use the installed library;
3915 ## otherwise, use our own copy.
3916 if test "${HAVE_X11}" = "yes" ; then
3917   AC_DEFINE(HAVE_X11, 1,
3918             [Define to 1 if you want to use version 11 of X windows.
3919              Otherwise, Emacs expects to use version 10.])
3921   if test "$USE_X_TOOLKIT" = "none"; then
3922     OLDXMENU="\${oldXMenudir}/libXMenu11.a"
3923   else
3924     OLDXMENU="\${lwlibdir}/liblw.a"
3925   fi
3926   LIBXMENU="\$(OLDXMENU)"
3927   LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
3928   OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}"
3929 else
3930   ## For a syntactically valid Makefile; not actually used for anything.
3931   ## See comments in src/Makefile.in.
3932   OLDXMENU=nothing
3933   ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?).
3934   if test "${HAVE_X_WINDOWS}" = "yes"; then
3935     LIBXMENU="-lXMenu"
3936   else
3937     LIBXMENU=
3938   fi
3939   LIBX_OTHER=
3940   OLDXMENU_DEPS=
3943 if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then
3944   OLDXMENU_TARGET=
3945   OLDXMENU=nothing
3946   LIBXMENU=
3947   OLDXMENU_DEPS=
3950 AC_SUBST(OLDXMENU_TARGET)
3951 AC_SUBST(OLDXMENU)
3952 AC_SUBST(LIBXMENU)
3953 AC_SUBST(LIBX_OTHER)
3954 AC_SUBST(OLDXMENU_DEPS)
3956 if test "${HAVE_MENUS}" = "yes" ; then
3957   AC_DEFINE(HAVE_MENUS, 1,
3958             [Define to 1 if you have mouse menus.
3959              (This is automatic if you use X, but the option to specify it remains.)
3960              It is also defined with other window systems that support xmenu.c.])
3963 if test "${GNU_MALLOC}" = "yes" ; then
3964   AC_DEFINE(GNU_MALLOC, 1,
3965             [Define to 1 if you want to use the GNU memory allocator.])
3968 RALLOC_OBJ=
3969 if test "${REL_ALLOC}" = "yes" ; then
3970   AC_DEFINE(REL_ALLOC, 1,
3971             [Define REL_ALLOC if you want to use the relocating allocator for
3972              buffer space.])
3974   test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
3976 AC_SUBST(RALLOC_OBJ)
3978 if test "$opsys" = "cygwin"; then
3979   CYGWIN_OBJ="sheap.o"
3980   ## Cygwin differs because of its unexec().
3981   PRE_ALLOC_OBJ=
3982   POST_ALLOC_OBJ=lastfile.o
3983 else
3984   CYGWIN_OBJ=
3985   PRE_ALLOC_OBJ=lastfile.o
3986   POST_ALLOC_OBJ=
3988 AC_SUBST(CYGWIN_OBJ)
3989 AC_SUBST(PRE_ALLOC_OBJ)
3990 AC_SUBST(POST_ALLOC_OBJ)
3992 # Configure gnulib.  Although this does not affect CFLAGS or LIBS permanently.
3993 # it temporarily reverts them to their pre-pkg-config values,
3994 # because gnulib needs to work with both src (which uses the
3995 # pkg-config stuff) and lib-src (which does not).  For example, gnulib
3996 # may need to determine whether LIB_CLOCK_GETTIME should contain -lrt,
3997 # and it therefore needs to run in an environment where LIBS does not
3998 # already contain -lrt merely because 'pkg-config --libs' printed '-lrt'
3999 # for some package unrelated to lib-src.
4000 SAVE_CFLAGS=$CFLAGS
4001 SAVE_LIBS=$LIBS
4002 CFLAGS=$pre_PKG_CONFIG_CFLAGS
4003 LIBS="$LIB_PTHREAD $pre_PKG_CONFIG_LIBS"
4004 gl_ASSERT_NO_GNULIB_POSIXCHECK
4005 gl_ASSERT_NO_GNULIB_TESTS
4006 gl_INIT
4007 CFLAGS=$SAVE_CFLAGS
4008 LIBS=$SAVE_LIBS
4010 case "$opsys" in
4011   aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
4013   darwin)
4014    ## The -headerpad option tells ld (see man page) to leave room at the
4015    ## end of the header for adding load commands.  Needed for dumping.
4016    ## 0x690 is the total size of 30 segment load commands (at 56
4017    ## each); under Cocoa 31 commands are required.
4018    if test "$HAVE_NS" = "yes"; then
4019      libs_nsgui="-framework AppKit"
4020      headerpad_extra=6C8
4021    else
4022      libs_nsgui=
4023      headerpad_extra=690
4024    fi
4025    LD_SWITCH_SYSTEM_TEMACS="-fno-pie -prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
4027    ## This is here because src/Makefile.in did some extra fiddling around
4028    ## with LD_SWITCH_SYSTEM.  The cpp logic was:
4029    ##   #ifndef LD_SWITCH_SYSTEM
4030    ##   #if !defined (__GNUC__) && ((defined (BSD_SYSTEM) && !defined (COFF)))
4031    ## Since all the *bsds define LD_SWITCH_SYSTEM, this simplifies to:
4032    ## not using gcc, darwin.
4033    ## Because this was done in src/Makefile.in, the resulting part of
4034    ## LD_SWITCH_SYSTEM was not used in configure (ie, in ac_link).
4035    ## It therefore seems cleaner to put this in LD_SWITCH_SYSTEM_TEMACS,
4036    ## rather than LD_SWITCH_SYSTEM.
4037    test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
4038      LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
4039    ;;
4041   ## LD_SWITCH_X_SITE_RPATH is a -rpath option saying where to
4042   ## find X at run-time.
4043   ## When handled by cpp, this was in LD_SWITCH_SYSTEM.  However, at the
4044   ## point where configure sourced the s/*.h file, LD_SWITCH_X_SITE_RPATH
4045   ## had not yet been defined and was expanded to null.  Hence LD_SWITCH_SYSTEM
4046   ## had different values in configure (in ac_link) and src/Makefile.in.
4047   ## It seems clearer therefore to put this piece in LD_SWITCH_SYSTEM_TEMACS.
4048   gnu*) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_RPATH)" ;;
4050   *) LD_SWITCH_SYSTEM_TEMACS= ;;
4051 esac
4053 if test "$NS_IMPL_GNUSTEP" = "yes"; then
4054   LD_SWITCH_SYSTEM_TEMACS="${LD_SWITCH_SYSTEM_TEMACS} -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES} -lgnustep-gui -lgnustep-base -lobjc -lpthread"
4057 AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
4060 LD_FIRSTFLAG=
4061 ORDINARY_LINK=
4062 case "$opsys" in
4063   ## gnu: GNU needs its own crt0.
4064   aix4-2|cygwin|darwin|gnu|hpux*|irix6-5|sol2*|unixware) ORDINARY_LINK=yes ;;
4066   ## On post 1.3 releases of NetBSD, gcc -nostdlib also clears the
4067   ## library search parth, i.e. it won't search /usr/lib for libc and
4068   ## friends.  Using -nostartfiles instead avoids this problem, and
4069   ## will also work on earlier NetBSD releases.
4070   netbsd|openbsd) LD_FIRSTFLAG="-nostartfiles" ;;
4072   ## powerpc*: NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp> says
4073   ##   MkLinux/LinuxPPC needs this.
4074   ## s390x-* only supports opsys = gnu-linux so it can be added here.
4075   gnu-*)
4076     case "$canonical" in
4077       powerpc*|s390x-*) LD_FIRSTFLAG="-nostdlib" ;;
4078     esac
4079     ;;
4080 esac
4083 if test "x$ORDINARY_LINK" = "xyes"; then
4085   LD_FIRSTFLAG=""
4086   AC_DEFINE(ORDINARY_LINK, 1, [Define if the C compiler is the linker.])
4088 ## The system files defining neither ORDINARY_LINK nor LD_FIRSTFLAG are:
4089 ## freebsd, gnu-* not on powerpc*|s390x*.
4090 elif test "x$GCC" = "xyes" && test "x$LD_FIRSTFLAG" = "x"; then
4092   ## Versions of GCC >= 2.0 put their library, libgcc.a, in obscure
4093   ## places that are difficult to figure out at make time.  Fortunately,
4094   ## these same versions allow you to pass arbitrary flags on to the
4095   ## linker, so there is no reason not to use it as a linker.
4096   ##
4097   ## Well, it is not quite perfect.  The "-nostdlib" keeps GCC from
4098   ## searching for libraries in its internal directories, so we have to
4099   ## ask GCC explicitly where to find libgcc.a (LIB_GCC below).
4100   LD_FIRSTFLAG="-nostdlib"
4103 ## FIXME? What setting of EDIT_LDFLAGS should this have?
4104 test "$NS_IMPL_GNUSTEP" = "yes" && LD_FIRSTFLAG="-rdynamic"
4106 AC_SUBST(LD_FIRSTFLAG)
4109 ## FIXME? The logic here is not precisely the same as that above.
4110 ## There is no check here for a pre-defined LD_FIRSTFLAG.
4111 ## Should we only be setting LIB_GCC if LD ~ -nostdlib?
4112 LIB_GCC=
4113 if test "x$GCC" = "xyes" && test "x$ORDINARY_LINK" != "xyes"; then
4115   case "$opsys" in
4116     freebsd|netbsd|openbsd) LIB_GCC= ;;
4118     gnu-*)
4119       ## armin76@gentoo.org reported that the lgcc_s flag is necessary to
4120       ## build on ARM EABI under GNU/Linux.  (Bug#5518)
4121       case $host_cpu in
4122       arm*)
4123         LIB_GCC="-lgcc_s"
4124         ;;
4125       *)
4126         ## FIXME? s/gnu-linux.h used to define LIB_GCC as below, then
4127         ## immediately undefine it again and redefine it to empty.
4128         ## Was the C_SWITCH_X_SITE part really necessary?
4129 ##      LIB_GCC=`$CC $C_SWITCH_X_SITE -print-libgcc-file-name`
4130         LIB_GCC=
4131         ;;
4132       esac
4133       ;;
4135     ## Ask GCC where to find libgcc.a.
4136     *) LIB_GCC=`$CC -print-libgcc-file-name 2> /dev/null` ;;
4137   esac
4138 fi                              dnl if $GCC
4139 AC_SUBST(LIB_GCC)
4142 ## If we're using X11/GNUstep, define some consequences.
4143 if test "$HAVE_X_WINDOWS" = "yes" || test "$HAVE_NS" = "yes"; then
4144   AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
4145   AC_DEFINE(HAVE_MOUSE, 1, [Define if you have mouse support.])
4149 AH_TOP([/* GNU Emacs site configuration template file.
4151 Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2012
4152   Free Software Foundation, Inc.
4154 This file is part of GNU Emacs.
4156 GNU Emacs is free software: you can redistribute it and/or modify
4157 it under the terms of the GNU General Public License as published by
4158 the Free Software Foundation, either version 3 of the License, or
4159 (at your option) any later version.
4161 GNU Emacs is distributed in the hope that it will be useful,
4162 but WITHOUT ANY WARRANTY; without even the implied warranty of
4163 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4164 GNU General Public License for more details.
4166 You should have received a copy of the GNU General Public License
4167 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
4170 /* No code in Emacs #includes config.h twice, but some bits of code
4171    intended to work with other packages as well (like gmalloc.c)
4172    think they can include it as many times as they like.  */
4173 #ifndef EMACS_CONFIG_H
4174 #define EMACS_CONFIG_H
4175 ])dnl
4177 AH_BOTTOM([
4178 /* On AIX 3 this must be included before any other include file.  */
4179 #include <alloca.h>
4180 #if ! HAVE_ALLOCA
4181 # error "alloca not available on this machine"
4182 #endif
4184 /* This silences a few compilation warnings on FreeBSD.  */
4185 #ifdef BSD_SYSTEM_AHB
4186 #undef BSD_SYSTEM_AHB
4187 #undef BSD_SYSTEM
4188 #if __FreeBSD__ == 1
4189 #define BSD_SYSTEM 199103
4190 #elif __FreeBSD__ == 2
4191 #define BSD_SYSTEM 199306
4192 #elif __FreeBSD__ >= 3
4193 #define BSD_SYSTEM 199506
4194 #endif
4195 #endif
4197 /* Define AMPERSAND_FULL_NAME if you use the convention
4198    that & in the full name stands for the login id.  */
4199 /* Turned on June 1996 supposing nobody will mind it.  */
4200 #define AMPERSAND_FULL_NAME
4202 /* `subprocesses' should be defined if you want to
4203    have code for asynchronous subprocesses
4204    (as used in M-x compile and M-x shell).
4205    Only MSDOS does not support this (it overrides
4206    this in its config_opsysfile below).  */
4208 #define subprocesses
4210 /* Include the os dependent file.  */
4211 #ifdef config_opsysfile
4212 # include config_opsysfile
4213 #endif
4215 /* Mac OS X / GNUstep need a bit more pure memory.  Of the existing knobs,
4216    SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems.  */
4217 #ifdef HAVE_NS
4218 #if defined NS_IMPL_GNUSTEP
4219 #  define SYSTEM_PURESIZE_EXTRA 30000
4220 #elif defined DARWIN_OS
4221 #  define SYSTEM_PURESIZE_EXTRA 200000
4222 #endif
4223 #endif
4225 #ifdef emacs /* Don't do this for lib-src.  */
4226 /* Tell regex.c to use a type compatible with Emacs.  */
4227 #define RE_TRANSLATE_TYPE Lisp_Object
4228 #define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
4229 #ifdef make_number
4230 /* If make_number is a macro, use it.  */
4231 #define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0)))
4232 #else
4233 /* If make_number is a function, avoid it.  */
4234 #define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0))
4235 #endif
4236 #endif
4238 #include <string.h>
4239 #include <stdlib.h>
4241 #if __GNUC__ >= 3  /* On GCC 3.0 we might get a warning.  */
4242 #define NO_INLINE __attribute__((noinline))
4243 #else
4244 #define NO_INLINE
4245 #endif
4247 #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1))
4248 #define EXTERNALLY_VISIBLE __attribute__((externally_visible))
4249 #else
4250 #define EXTERNALLY_VISIBLE
4251 #endif
4253 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
4254 # define ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
4255 #else
4256 # define ATTRIBUTE_FORMAT(spec) /* empty */
4257 #endif
4259 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
4260 # define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
4261    ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
4262 #else
4263 # define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
4264    ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
4265 #endif
4267 #define ATTRIBUTE_CONST _GL_ATTRIBUTE_CONST
4269 /* Some versions of GNU/Linux define noinline in their headers.  */
4270 #ifdef noinline
4271 #undef noinline
4272 #endif
4274 #endif /* EMACS_CONFIG_H */
4277 Local Variables:
4278 mode: c
4279 End:
4281 ])dnl
4283 #### Report on what we decided to do.
4284 #### Report GTK as a toolkit, even if it doesn't use Xt.
4285 #### It makes printing result more understandable as using GTK sets
4286 #### toolkit_scroll_bars to yes by default.
4287 if test "${HAVE_GTK}" = "yes"; then
4288   if test "${with_gtk3}" = "yes"; then
4289     USE_X_TOOLKIT=GTK3
4290   else
4291     USE_X_TOOLKIT=GTK
4292   fi
4295 echo "
4296 Configured for \`${canonical}'.
4298   Where should the build process find the source code?    ${srcdir}
4299   What operating system file should Emacs use?            ${opsysfile-none}
4300   What compiler should emacs be built with?               ${CC} ${CFLAGS}
4301   Should Emacs use the GNU version of malloc?             ${GNU_MALLOC}${GNU_MALLOC_reason}
4302   Should Emacs use a relocating allocator for buffers?    ${REL_ALLOC}
4303   Should Emacs use mmap(2) for buffer allocation?         $use_mmap_for_buffers
4304   What window system should Emacs use?                    ${window_system}
4305   What toolkit should Emacs use?                          ${USE_X_TOOLKIT}"
4307 if test -n "${x_includes}"; then
4308 echo "  Where do we find X Windows header files?                ${x_includes}"
4309 else
4310 echo "  Where do we find X Windows header files?                Standard dirs"
4312 if test -n "${x_libraries}"; then
4313 echo "  Where do we find X Windows libraries?                   ${x_libraries}"
4314 else
4315 echo "  Where do we find X Windows libraries?                   Standard dirs"
4318 echo "  Does Emacs use -lXaw3d?                                 ${HAVE_XAW3D}"
4319 echo "  Does Emacs use -lXpm?                                   ${HAVE_XPM}"
4320 echo "  Does Emacs use -ljpeg?                                  ${HAVE_JPEG}"
4321 echo "  Does Emacs use -ltiff?                                  ${HAVE_TIFF}"
4322 echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $LIBGIF"
4323 echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
4324 echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
4325 echo "  Does Emacs use imagemagick?                             ${HAVE_IMAGEMAGICK}"
4327 echo "  Does Emacs use -lgpm?                                   ${HAVE_GPM}"
4328 echo "  Does Emacs use -ldbus?                                  ${HAVE_DBUS}"
4329 echo "  Does Emacs use -lgconf?                                 ${HAVE_GCONF}"
4330 echo "  Does Emacs use GSettings?                               ${HAVE_GSETTINGS}"
4331 echo "  Does Emacs use -lselinux?                               ${HAVE_LIBSELINUX}"
4332 echo "  Does Emacs use -lgnutls?                                ${HAVE_GNUTLS}"
4333 echo "  Does Emacs use -lxml2?                                  ${HAVE_LIBXML2}"
4335 echo "  Does Emacs use -lfreetype?                              ${HAVE_FREETYPE}"
4336 echo "  Does Emacs use -lm17n-flt?                              ${HAVE_M17N_FLT}"
4337 echo "  Does Emacs use -lotf?                                   ${HAVE_LIBOTF}"
4338 echo "  Does Emacs use -lxft?                                   ${HAVE_XFT}"
4340 echo "  Does Emacs use toolkit scroll bars?                     ${USE_TOOLKIT_SCROLL_BARS}"
4341 echo
4343 if test -n "${EMACSDATA}"; then
4344    echo "  Environment variable EMACSDATA set to:                  $EMACSDATA"
4346 if test -n "${EMACSDOC}"; then
4347    echo "  Environment variable EMACSDOC set to:                   $EMACSDOC"
4350 echo
4352 if test "$HAVE_NS" = "yes"; then
4353    echo
4354    echo "You must run \"${MAKE-make} install\" in order to test the built application.
4355 The installed application will go to nextstep/Emacs.app and can be
4356 run or moved from there."
4357    if test "$EN_NS_SELF_CONTAINED" = "yes"; then
4358       echo "The application will be fully self-contained."
4359     else
4360       echo "The lisp resources for the application will be installed under ${prefix}.
4361 You may need to run \"${MAKE-make} install\" with sudo.  The application will fail
4362 to run if these resources are not installed."
4363    fi
4364    echo
4367 if test "${opsys}" = "cygwin"; then
4368   case `uname -r` in
4369     1.5.*) AC_MSG_WARN([[building Emacs on Cygwin 1.5 is not supported.]])
4370            echo
4371            ;;
4372   esac
4375 # Remove any trailing slashes in these variables.
4376 [test "${prefix}" != NONE &&
4377   prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
4378 test "${exec_prefix}" != NONE &&
4379   exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
4381 dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES.
4382 dnl You _can_ use that variable in AC_CONFIG_FILES, so long as any directory
4383 dnl using automake (ie lib/) is explicitly listed and not "hidden" in a variable
4384 dnl (else you get "no `Makefile.am' found for any configure output").
4385 dnl This will work, but you get a config.status that is not quite right
4386 dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html).
4387 dnl That doesn't have any obvious consequences for Emacs, but on the whole
4388 dnl it seems better to just live with the duplication.
4389 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"
4391 AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
4392        doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
4393        doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile \
4394        leim/Makefile])
4396 dnl test/ is not present in release tarfiles.
4397 opt_makefile=test/automated/Makefile
4399 if test -f $srcdir/${opt_makefile}.in; then
4400   SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
4401   dnl Again, it's best not to use a variable.  Though you can add
4402   dnl ", [], [opt_makefile='$opt_makefile']" and it should work.
4403   AC_CONFIG_FILES([test/automated/Makefile])
4407 dnl admin/ may or may not be present.
4408 opt_makefile=admin/unidata/Makefile
4410 if test -f $srcdir/${opt_makefile}.in; then
4411   SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
4412   AC_CONFIG_FILES([admin/unidata/Makefile])
4416 SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'`
4418 AC_SUBST(SUBDIR_MAKEFILES_IN)
4420 dnl Make the necessary directories, if they don't exist.
4421 AC_CONFIG_COMMANDS([mkdirs], [
4422 for dir in etc lisp ; do
4423   test -d ${dir} || mkdir ${dir}
4424 done
4427 dnl You might wonder (I did) why epaths.h is generated by running make,
4428 dnl rather than just letting configure generate it from epaths.in.
4429 dnl One reason is that the various paths are not fully expanded (see above);
4430 dnl eg gamedir=${prefix}/var/games/emacs.
4431 dnl Secondly, the GNU Coding standards require that one should be able
4432 dnl to run `make prefix=/some/where/else' and override the values set
4433 dnl by configure.  This also explains the `move-if-change' test and
4434 dnl the use of force in the `epaths-force' rule in Makefile.in.
4435 AC_CONFIG_COMMANDS([epaths], [
4436 echo creating src/epaths.h
4437 ${MAKE-make} epaths-force
4438 ], [GCC="$GCC" CPPFLAGS="$CPPFLAGS"])
4440 AC_CONFIG_COMMANDS([gdbinit], [
4441 if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
4442   echo creating src/.gdbinit
4443   echo source $srcdir/src/.gdbinit > src/.gdbinit
4447 AC_OUTPUT