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