Remove LD_SWITCH_X_SITE_AUX, which is no longer used
[emacs.git] / configure.in
blob0504033141be14b56f70ab15efe8c297102407d2
1 dnl  Autoconf script for GNU Emacs
2 dnl To rebuild the `configure' script from this, execute the command
3 dnl     autoconf
4 dnl in the directory containing this script.
5 dnl If you changed any AC_DEFINES, also run autoheader.
6 dnl
7 dnl Copyright (C) 1994-1996, 1999-2012 Free Software Foundation, Inc.
8 dnl
9 dnl  This file is part of GNU Emacs.
10 dnl
11 dnl  GNU Emacs is free software: you can redistribute it and/or modify
12 dnl  it under the terms of the GNU General Public License as published by
13 dnl  the Free Software Foundation, either version 3 of the License, or
14 dnl  (at your option) any later version.
15 dnl
16 dnl  GNU Emacs is distributed in the hope that it will be useful,
17 dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of
18 dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 dnl  GNU General Public License for more details.
20 dnl
21 dnl  You should have received a copy of the GNU General Public License
22 dnl  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
24 AC_PREREQ(2.65)
25 AC_INIT(emacs, 24.1.50)
26 AC_CONFIG_HEADER(src/config.h:src/config.in)
27 AC_CONFIG_SRCDIR(src/lisp.h)
28 AC_CONFIG_AUX_DIR(build-aux)
29 AM_INIT_AUTOMAKE
31 dnl Support for --program-prefix, --program-suffix and
32 dnl --program-transform-name options
33 AC_ARG_PROGRAM
35 dnl It is important that variables on the RHS not be expanded here,
36 dnl hence the single quotes.  This is per the GNU coding standards, see
37 dnl (autoconf) Installation Directory Variables
38 dnl See also epaths.h below.
39 lispdir='${datadir}/emacs/${version}/lisp'
40 locallisppath='${datadir}/emacs/${version}/site-lisp:'\
41 '${datadir}/emacs/site-lisp'
42 lisppath='${locallisppath}:${lispdir}:${datadir}/emacs/${version}/leim'
43 etcdir='${datadir}/emacs/${version}/etc'
44 archlibdir='${libexecdir}/emacs/${version}/${configuration}'
45 docdir='${datadir}/emacs/${version}/etc'
46 gamedir='${localstatedir}/games/emacs'
48 dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING)
49 dnl Create a new --with option that defaults to being disabled.
50 dnl NAME is the base name of the option.  The shell variable with_NAME
51 dnl   will be set to either the user's value (if the option is
52 dnl   specified; 'yes' for a plain --with-NAME) or to 'no' (if the
53 dnl   option is not specified).  Note that the shell variable name is
54 dnl   constructed as autoconf does, by replacing non-alphanumeric
55 dnl   characters with "_".
56 dnl HELP-STRING is the help text for the option.
57 AC_DEFUN([OPTION_DEFAULT_OFF], [dnl
58   AC_ARG_WITH([$1],[AS_HELP_STRING([--with-$1],[$2])],[],[dnl
59     m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=no])dnl
60 ])dnl
62 dnl OPTION_DEFAULT_ON(NAME, HELP-STRING)
63 dnl Create a new --with option that defaults to being enabled.  NAME
64 dnl   is the base name of the option.  The shell variable with_NAME
65 dnl   will be set either to 'no' (for a plain --without-NAME) or to
66 dnl   'yes' (if the option is not specified).  Note that the shell
67 dnl   variable name is constructed as autoconf does, by replacing
68 dnl   non-alphanumeric characters with "_".
69 dnl HELP-STRING is the help text for the option.
70 AC_DEFUN([OPTION_DEFAULT_ON], [dnl
71   AC_ARG_WITH([$1],[AS_HELP_STRING([--without-$1],[$2])],[],[dnl
72    m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=yes])dnl
73 ])dnl
75 OPTION_DEFAULT_ON([pop],[don't support POP mail retrieval with movemail])
76 if test "$with_pop" = yes; then
77    AC_DEFINE(MAIL_USE_POP)
79 AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl
81 OPTION_DEFAULT_OFF([kerberos],[support Kerberos-authenticated POP])
82 if test "$with_kerberos" != no; then
83    AC_DEFINE(KERBEROS)
85 AH_TEMPLATE(KERBEROS,
86             [Define to support Kerberos-authenticated POP mail retrieval.])dnl
88 OPTION_DEFAULT_OFF([kerberos5],[support Kerberos version 5 authenticated POP])
89 if test "${with_kerberos5}" != no; then
90   if test "${with_kerberos}" = no; then
91     with_kerberos=yes
92     AC_DEFINE(KERBEROS)
93   fi
94   AC_DEFINE(KERBEROS5, 1, [Define to use Kerberos 5 instead of Kerberos 4.])
97 OPTION_DEFAULT_OFF([hesiod],[support Hesiod to get the POP server host])
98 dnl FIXME hesiod support may not be present, so it seems like an error
99 dnl to define, or at least use, this unconditionally.
100 if test "$with_hesiod" != no; then
101   AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])
104 OPTION_DEFAULT_OFF([mmdf],[support MMDF mailboxes])
105 if test "$with_mmdf" != no; then
106    AC_DEFINE(MAIL_USE_MMDF, 1, [Define to support MMDF mailboxes in movemail.])
109 OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after reading])
110 if test "$with_mail_unlink" != no; then
111    AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail spool after reading.])
114 AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
115     [string giving default POP mail host])],
116     AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.]))
118 OPTION_DEFAULT_ON([sound],[don't compile with sound support])
120 OPTION_DEFAULT_ON([sync-input],[process async input synchronously])
121 if test "$with_sync_input" = yes; then
122    AC_DEFINE(SYNC_INPUT, 1, [Process async input synchronously.])
125 dnl FIXME currently it is not the last.
126 dnl This should be the last --with option, because --with-x is
127 dnl added later on when we find the path of X, and it's best to
128 dnl keep them together visually.
129 AC_ARG_WITH([x-toolkit],[AS_HELP_STRING([--with-x-toolkit=KIT],
130  [use an X toolkit (KIT one of: yes or gtk, gtk3, lucid or athena, motif, no)])],
131 [         case "${withval}" in
132             y | ye | yes )      val=gtk ;;
133             n | no )            val=no  ;;
134             l | lu | luc | luci | lucid )       val=lucid ;;
135             a | at | ath | athe | athen | athena )      val=athena ;;
136             m | mo | mot | moti | motif )       val=motif ;;
137             g | gt | gtk  )     val=gtk ;;
138             gtk3  )     val=gtk3 ;;
139             * )
140 AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid;
141 this option's value should be `yes', `no', `lucid', `athena', `motif', `gtk' or
142 `gtk3'.  `yes' and `gtk' are synonyms. `athena' and `lucid' are synonyms.])
143             ;;
144           esac
145           with_x_toolkit=$val
148 OPTION_DEFAULT_OFF([wide-int], [prefer wide Emacs integers (typically 62-bit)])
149 if test "$with_wide_int" = yes; then
150   AC_DEFINE([WIDE_EMACS_INT], 1, [Use long long for EMACS_INT if available.])
153 dnl _ON results in a '--without' option in the --help output, so
154 dnl the help text should refer to "don't compile", etc.
155 OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support])
156 OPTION_DEFAULT_ON([jpeg],[don't compile with JPEG image support])
157 OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support])
158 OPTION_DEFAULT_ON([gif],[don't compile with GIF image support])
159 OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
160 OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
161 OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
162 OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support])
164 OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
165 OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
166 OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
168 OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
169 OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
170 OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
171 OPTION_DEFAULT_OFF([ns],[use NeXTstep (Cocoa or GNUstep) windowing system])
173 OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
174 OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
175 OPTION_DEFAULT_ON([gconf],[don't compile with GConf support])
176 OPTION_DEFAULT_ON([gsettings],[don't compile with GSettings support])
177 OPTION_DEFAULT_ON([selinux],[don't compile with SELinux support])
178 OPTION_DEFAULT_ON([gnutls],[don't use -lgnutls for SSL/TLS support])
180 ## For the times when you want to build Emacs but don't have
181 ## a suitable makeinfo, and can live without the manuals.
182 dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
183 OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
185 ## Makefile.in needs the cache file name.
186 AC_SUBST(cache_file)
188 ## This is an option because I do not know if all info/man support
189 ## compressed files, nor how to test if they do so.
190 OPTION_DEFAULT_ON([compress-info],[don't compress the installed Info pages])
191 if test $with_compress_info = yes; then
192    GZIP_INFO=yes
193 else
194    GZIP_INFO=
196 AC_SUBST(GZIP_INFO)
198 AC_ARG_WITH([pkg-config-prog],dnl
199 [AS_HELP_STRING([--with-pkg-config-prog=PATH],
200                   [path to pkg-config for finding GTK and librsvg])])
201 if test "X${with_pkg_config_prog}" != X; then
202    if test "${with_pkg_config_prog}" != yes; then
203       PKG_CONFIG="${with_pkg_config_prog}"
204    fi
207 CRT_DIR=
208 AC_ARG_WITH([crt-dir],dnl
209 [AS_HELP_STRING([--with-crt-dir=DIR],[directory containing crtn.o etc.
210 The default is /usr/lib, or /usr/lib64 on some platforms.])])
211 CRT_DIR="${with_crt_dir}"
213 AC_ARG_WITH(gameuser,dnl
214 [AS_HELP_STRING([--with-gameuser=USER],[user for shared game score files])])
215 test "X${with_gameuser}" != X && test "${with_gameuser}" != yes \
216   && gameuser="${with_gameuser}"
217 test "X$gameuser" = X && gameuser=games
219 AC_ARG_WITH([gnustep-conf],dnl
220 [AS_HELP_STRING([--with-gnustep-conf=PATH],[path to GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])])
221 test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
222   GNUSTEP_CONFIG_FILE="${with_gnustep_conf}"
223 test "X$GNUSTEP_CONFIG_FILE" = "X" && \
224      GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf
226 AC_ARG_ENABLE(ns-self-contained,
227 [AS_HELP_STRING([--disable-ns-self-contained],
228                 [disable self contained build under NeXTstep])],
229    EN_NS_SELF_CONTAINED=$enableval,
230    EN_NS_SELF_CONTAINED=yes)
232 AC_ARG_ENABLE(asserts,
233 [AS_HELP_STRING([--enable-asserts], [compile code with asserts enabled])],
234       USE_XASSERTS=$enableval,
235       USE_XASSERTS=no)
237 AC_ARG_ENABLE(maintainer-mode,
238 [AS_HELP_STRING([--disable-maintainer-mode],
239                 [disable make rules and dependencies not useful (and sometimes
240                  confusing) to the casual installer])],
241       USE_MAINTAINER_MODE=$enableval,
242       USE_MAINTAINER_MODE=yes)
243 if test $USE_MAINTAINER_MODE = yes; then
244   MAINT=
245 else
246   MAINT=#
248 AC_SUBST(MAINT)
250 AC_ARG_ENABLE(locallisppath,
251 [AS_HELP_STRING([--enable-locallisppath=PATH],
252                 [directories Emacs should search for lisp files specific
253                  to this site])],
254 if test "${enableval}" = "no"; then
255   locallisppath=
256 elif test "${enableval}" != "yes"; then
257   locallisppath=${enableval}
260 AC_ARG_ENABLE(checking,
261 [AS_HELP_STRING([--enable-checking@<:@=LIST@:>@],
262                 [enable expensive run-time checks.  With LIST,
263                  enable only specific categories of checks.
264                  Categories are: all,yes,no.
265                  Flags are: stringbytes, stringoverrun, stringfreelist,
266                  xmallocoverrun, conslist])],
267 [ac_checking_flags="${enableval}"],[])
268 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
269 for check in $ac_checking_flags
271         case $check in
272         # these set all the flags to specific states
273         yes)            ac_enable_checking=1 ;;
274         no)             ac_enable_checking= ;
275                         ac_gc_check_stringbytes= ;
276                         ac_gc_check_string_overrun= ;
277                         ac_gc_check_string_free_list= ;
278                         ac_xmalloc_overrun= ;
279                         ac_gc_check_cons_list= ;;
280         all)            ac_enable_checking=1 ;
281                         ac_gc_check_stringbytes=1 ;
282                         ac_gc_check_string_overrun=1 ;
283                         ac_gc_check_string_free_list=1 ;
284                         ac_xmalloc_overrun=1 ;
285                         ac_gc_check_cons_list=1 ;;
286         # these enable particular checks
287         stringbytes)    ac_gc_check_stringbytes=1 ;;
288         stringoverrun)  ac_gc_check_string_overrun=1 ;;
289         stringfreelist) ac_gc_check_string_free_list=1 ;;
290         xmallocoverrun) ac_xmalloc_overrun=1 ;;
291         conslist)       ac_gc_check_cons_list=1 ;;
292         *)      AC_MSG_ERROR(unknown check category $check) ;;
293         esac
294 done
295 IFS="$ac_save_IFS"
297 if test x$ac_enable_checking != x ; then
298   AC_DEFINE(ENABLE_CHECKING, 1,
299 [Enable expensive run-time checking of data types?])
301 if test x$ac_gc_check_stringbytes != x ; then
302   AC_DEFINE(GC_CHECK_STRING_BYTES, 1,
303 [Define this temporarily to hunt a bug.  If defined, the size of
304    strings is redundantly recorded in sdata structures so that it can
305    be compared to the sizes recorded in Lisp strings.])
307 if test x$ac_gc_check_string_overrun != x ; then
308   AC_DEFINE(GC_CHECK_STRING_OVERRUN, 1,
309 [Define this to check for short string overrun.])
311 if test x$ac_gc_check_string_free_list != x ; then
312   AC_DEFINE(GC_CHECK_STRING_FREE_LIST, 1,
313 [Define this to check the string free list.])
315 if test x$ac_xmalloc_overrun != x ; then
316   AC_DEFINE(XMALLOC_OVERRUN_CHECK, 1,
317 [Define this to check for malloc buffer overrun.])
319 if test x$ac_gc_check_cons_list != x ; then
320   AC_DEFINE(GC_CHECK_CONS_LIST, 1,
321 [Define this to check for errors in cons list.])
324 AC_ARG_ENABLE(use-lisp-union-type,
325 [AS_HELP_STRING([--enable-use-lisp-union-type],
326                 [use a union for the Lisp_Object data type.
327                 This is only useful for development for catching certain types of bugs.])],
328 if test "${enableval}" != "no"; then
329    AC_DEFINE(USE_LISP_UNION_TYPE, 1,
330    [Define this to use a lisp union for the Lisp_Object data type.])
334 AC_ARG_ENABLE(profiling,
335 [AS_HELP_STRING([--enable-profiling],
336                 [build emacs with profiling support.
337                  This might not work on all platforms])],
338 [ac_enable_profiling="${enableval}"],[])
339 if test x$ac_enable_profiling != x ; then
340    PROFILING_CFLAGS="-DPROFILING=1 -pg"
341 else
342    PROFILING_CFLAGS=
344 AC_SUBST(PROFILING_CFLAGS)
346 AC_ARG_ENABLE(autodepend,
347 [AS_HELP_STRING([--enable-autodepend],
348                 [automatically generate dependencies to .h-files.
349                  Requires GNU Make and Gcc. Enabled if GNU Make and Gcc is
350                  found])],
351 [ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
353 #### Make srcdir absolute, if it isn't already.  It's important to
354 #### avoid running the path through pwd unnecessarily, since pwd can
355 #### give you automounter prefixes, which can go away.  We do all this
356 #### so Emacs can find its files when run uninstalled.
357 ## Make sure CDPATH doesn't affect cd (in case PWD is relative).
358 unset CDPATH
359 case "${srcdir}" in
360   /* ) ;;
361   . )
362     ## We may be able to use the $PWD environment variable to make this
363     ## absolute.  But sometimes PWD is inaccurate.
364     ## Note: we used to use ${PWD} at the end instead of `pwd`,
365     ## but that tested only for a well-formed and valid PWD,
366     ## it did not object when PWD was well-formed and valid but just wrong.
367     if test ".${PWD}" != "." && test ".`(cd ${PWD} ; sh -c pwd)`" = ".`pwd`"  ;
368     then
369       srcdir="$PWD"
370     else
371       srcdir="`(cd ${srcdir}; pwd)`"
372     fi
373   ;;
374   *  ) srcdir="`(cd ${srcdir}; pwd)`" ;;
375 esac
377 #### Given the configuration name, set machfile and opsysfile to the
378 #### names of the m/*.h and s/*.h files we should use.
380 ### Canonicalize the configuration name.
382 AC_CANONICAL_HOST
383 canonical=$host
384 configuration=${host_alias-${build_alias-$host}}
386 dnl This used to use changequote, but, apart from `changequote is evil'
387 dnl per the autoconf manual, we can speed up autoconf somewhat by quoting
388 dnl the great gob of text.  Thus it's not processed for possible expansion.
389 dnl Just make sure the brackets remain balanced.
391 dnl Since Emacs can't find matching pairs of quotes, boundaries are
392 dnl indicated by comments.
393 dnl quotation begins
396 ### If you add support for a new configuration, add code to this
397 ### switch statement to recognize your configuration name and select
398 ### the appropriate operating system and machine description files.
400 ### You would hope that you could choose an m/*.h file pretty much
401 ### based on the machine portion of the configuration name, and an s/*.h
402 ### file based on the operating system portion.  However, it turns out
403 ### that each m/*.h file is pretty manufacturer-specific - for
404 ### example mips.h is MIPS
405 ### So we basically have to have a special case for each
406 ### configuration name.
408 ### As far as handling version numbers on operating systems is
409 ### concerned, make sure things will fail in a fixable way.  If
410 ### /etc/MACHINES doesn't say anything about version numbers, be
411 ### prepared to handle anything reasonably.  If version numbers
412 ### matter, be sure /etc/MACHINES says something about it.
414 machine='' opsys='' unported=no
415 case "${canonical}" in
417   ## GNU/Linux and similar ports
418   *-*-linux* )
419     opsys=gnu-linux
420     case ${canonical} in
421       alpha*)   machine=alpha ;;
422       s390x-*)  machine=ibms390x ;;
423       powerpc*) machine=macppc ;;
424       sparc*)   machine=sparc ;;
425       ia64*)    machine=ia64 ;;
426       m68k*)    machine=m68k ;;
427       x86_64*)  machine=amdx86-64 ;;
428     esac
429   ;;
431   ## FreeBSD ports
432   *-*-freebsd* )
433     opsys=freebsd
434     case "${canonical}" in
435       alpha*)           machine=alpha ;;
436       amd64-*|x86_64-*) machine=amdx86-64 ;;
437       ia64-*)           machine=ia64 ;;
438       i[3456]86-*)      machine=intel386 ;;
439       powerpc-*)        machine=macppc ;;
440       sparc-*)          machine=sparc ;;
441       sparc64-*)        machine=sparc ;;
442     esac
443   ;;
445   ## FreeBSD kernel + glibc based userland
446   *-*-kfreebsd*gnu* )
447     opsys=gnu-kfreebsd
448     case "${canonical}" in
449       alpha*)           machine=alpha ;;
450       amd64-*|x86_64-*) machine=amdx86-64 ;;
451       ia64-*)           machine=ia64 ;;
452       i[3456]86-*)      machine=intel386 ;;
453       powerpc-*)        machine=macppc ;;
454       sparc-*)          machine=sparc ;;
455       sparc64-*)        machine=sparc ;;
456     esac
457   ;;
459   ## NetBSD ports
460   *-*-netbsd* )
461     opsys=netbsd
462     case "${canonical}" in
463       alpha*)      machine=alpha ;;
464       x86_64-*)    machine=amdx86-64 ;;
465       i[3456]86-*) machine=intel386 ;;
466       m68k-*)      machine=m68k ;;
467       powerpc-*)   machine=macppc ;;
468       sparc*-)     machine=sparc ;;
469       vax-*)       machine=vax ;;
470     esac
471   ;;
473   ## OpenBSD ports
474   *-*-openbsd* )
475     opsys=openbsd
476     case "${canonical}" in
477       alpha*)    machine=alpha ;;
478       x86_64-*)  machine=amdx86-64 ;;
479       i386-*)    machine=intel386 ;;
480       powerpc-*) machine=macppc ;;
481       sparc*)    machine=sparc ;;
482       vax-*)     machine=vax ;;
483     esac
484   ;;
486   ## Apple Darwin / Mac OS X
487   *-apple-darwin* )
488     case "${canonical}" in
489       i[3456]86-* )  machine=intel386 ;;
490       powerpc-* )    machine=macppc ;;
491       x86_64-* )     machine=amdx86-64 ;;
492       * )            unported=yes ;;
493     esac
494     opsys=darwin
495     # Define CPP as follows to make autoconf work correctly.
496     CPP="${CC-cc} -E -no-cpp-precomp"
497     # Use fink packages if available.
498     if test -d /sw/include && test -d /sw/lib; then
499       GCC_TEST_OPTIONS="-I/sw/include -L/sw/lib"
500       CPP="${CPP} ${GCC_TEST_OPTIONS}"
501       NON_GCC_TEST_OPTIONS=${GCC_TEST_OPTIONS}
502     fi
503   ;;
505   ## HP 9000 series 700 and 800, running HP/UX
506   hppa*-hp-hpux10.2* )
507     opsys=hpux10-20
508   ;;
509   hppa*-hp-hpux1[1-9]* )
510     opsys=hpux11
511     CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
512   ;;
514   ## IBM machines
515   rs6000-ibm-aix4.[23]* )
516     machine=ibmrs6000 opsys=aix4-2
517   ;;
518   powerpc-ibm-aix4.[23]*  )
519     machine=ibmrs6000 opsys=aix4-2
520   ;;
521   rs6000-ibm-aix[56]* )
522     machine=ibmrs6000 opsys=aix4-2
523   ;;
524   powerpc-ibm-aix[56]*  )
525     machine=ibmrs6000 opsys=aix4-2
526   ;;
528   ## Silicon Graphics machines
529   ## Iris 4D
530   mips-sgi-irix6.5 )
531     opsys=irix6-5
532     # Without defining _LANGUAGE_C, things get masked out in the headers
533     # so that, for instance, grepping for `free' in stdlib.h fails and
534     # AC_HEADER_STD_C fails.   (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m).
535     NON_GNU_CPP="/lib/cpp -D_LANGUAGE_C"
536     NON_GCC_TEST_OPTIONS="-D_LANGUAGE_C"
537   ;;
539   ## Suns
540   *-sun-solaris* \
541     | i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
542     | x86_64-*-solaris2*    | x86_64-*-sunos5*)
543     case "${canonical}" in
544       i[3456]86-*-* )     machine=intel386 ;;
545       amd64-*-*|x86_64-*-*)     machine=amdx86-64 ;;
546       sparc* )          machine=sparc ;;
547       * )               unported=yes ;;
548     esac
549     case "${canonical}" in
550       *-sunos5.6* | *-solaris2.6* )
551                 opsys=sol2-6
552                 NON_GNU_CPP=/usr/ccs/lib/cpp
553                 RANLIB="ar -ts"
554                 ;;
555       *-sunos5.[7-9]* | *-solaris2.[7-9]* )
556                 opsys=sol2-6
557                 emacs_check_sunpro_c=yes
558                 NON_GNU_CPP=/usr/ccs/lib/cpp
559                 ;;
560       *-sunos5* | *-solaris* )
561                 opsys=sol2-10
562                 emacs_check_sunpro_c=yes
563                 NON_GNU_CPP=/usr/ccs/lib/cpp
564                 ;;
565     esac
566     ## Watch out for a compiler that we know will not work.
567     case "${canonical}" in
568      *-solaris* | *-sunos5* )
569                 if [ "x$CC" = x/usr/ucb/cc ]; then
570                   ## /usr/ucb/cc doesn't work;
571                   ## we should find some other compiler that does work.
572                   unset CC
573                 fi
574                 ;;
575       *) ;;
576     esac
577   ;;
579   ## Intel 386 machines where we don't care about the manufacturer.
580   i[3456]86-*-* )
581     machine=intel386
582     case "${canonical}" in
583       *-cygwin )                opsys=cygwin ;;
584       *-darwin* )               opsys=darwin
585                                 CPP="${CC-cc} -E -no-cpp-precomp"
586                                 ;;
587       *-sysv4.2uw* )            opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
588       *-sysv5uw* )              opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
589       *-sysv5OpenUNIX* )        opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
590       ## Otherwise, we'll fall through to the generic opsys code at the bottom.
591     esac
592   ;;
594   * )
595     unported=yes
596   ;;
597 esac
599 ### If the code above didn't choose an operating system, just choose
600 ### an operating system based on the configuration name.  You really
601 ### only want to use this when you have no idea what the right
602 ### operating system is; if you know what operating systems a machine
603 ### runs, it's cleaner to make it explicit in the case statement
604 ### above.
605 if test x"${opsys}" = x; then
606   case "${canonical}" in
607     *-gnu* )                            opsys=gnu ;;
608     * )
609       unported=yes
610     ;;
611   esac
615 dnl quotation ends
617 if test $unported = yes; then
618   AC_MSG_ERROR([Emacs hasn't been ported to `${canonical}' systems.
619 Check `etc/MACHINES' for recognized configuration names.])
622 if test -n "$machine"; then
623   machfile="m/${machine}.h"
624 else
625   machfile=
627 opsysfile="s/${opsys}.h"
630 #### Choose a compiler.
631 test -n "$CC" && cc_specified=yes
633 # Save the value of CFLAGS that the user specified.
634 SPECIFIED_CFLAGS="$CFLAGS"
636 dnl Sets GCC=yes if using gcc.
637 AC_PROG_CC
638 AM_PROG_CC_C_O
640 # Initialize gnulib right after verifying that the C compiler works.
641 gl_EARLY
643 # On Suns, sometimes $CPP names a directory.
644 if test -n "$CPP" && test -d "$CPP"; then
645   CPP=
648 ## If not using gcc, and on Solaris, and no CPP specified, see if
649 ## using a Sun compiler, which needs -Xs to prevent whitespace.
650 if test x"$GCC" != xyes && test x"$emacs_check_sunpro_c" = xyes && \
651  test x"$CPP" = x; then
652   AC_MSG_CHECKING([whether we are using a Sun C compiler])
653   AC_CACHE_VAL(emacs_cv_sunpro_c,
654   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
655 [[#ifndef __SUNPRO_C
656 fail;
657 #endif
658 ]])], emacs_cv_sunpro_c=yes, emacs_cv_sunpro_c=no)])
659   AC_MSG_RESULT($emacs_cv_sunpro_c)
661   if test x"$emacs_cv_sunpro_c" = xyes; then
662     NON_GNU_CPP="$CC -E -Xs"
663   fi
666 #### Some systems specify a CPP to use unless we are using GCC.
667 #### Now that we know whether we are using GCC, we can decide whether
668 #### to use that one.
669 if test "x$NON_GNU_CPP" != x && test x$GCC != xyes && test "x$CPP" = x
670 then
671   CPP="$NON_GNU_CPP"
674 #### Some systems specify a CC to use unless we are using GCC.
675 #### Now that we know whether we are using GCC, we can decide whether
676 #### to use that one.
677 if test "x$NON_GNU_CC" != x && test x$GCC != xyes &&
678   test x$cc_specified != xyes
679 then
680   CC="$NON_GNU_CC"
683 if test x$GCC = xyes; then
684   test "x$GCC_TEST_OPTIONS" != x && CC="$CC $GCC_TEST_OPTIONS"
685 else
686   test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
689 AC_ARG_ENABLE([gcc-warnings],
690   [AS_HELP_STRING([--enable-gcc-warnings],
691                   [turn on lots of GCC warnings (for developers)])],
692   [case $enableval in
693      yes|no) ;;
694      *)      AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
695    esac
696    gl_gcc_warnings=$enableval],
697   [gl_gcc_warnings=no]
700 # gl_GCC_VERSION_IFELSE([major], [minor], [run-if-found], [run-if-not-found])
701 # ------------------------------------------------
702 # If $CPP is gcc-MAJOR.MINOR or newer, then run RUN-IF-FOUND.
703 # Otherwise, run RUN-IF-NOT-FOUND.
704 AC_DEFUN([gl_GCC_VERSION_IFELSE],
705   [AC_PREPROC_IFELSE(
706     [AC_LANG_PROGRAM(
707       [[
708 #if ($1) < __GNUC__ || (($1) == __GNUC__ && ($2) <= __GNUC_MINOR__)
709 /* ok */
710 #else
711 # error "your version of gcc is older than $1.$2"
712 #endif
713       ]]),
714     ], [$3], [$4])
715   ]
718 # When compiling with GCC, prefer -isystem to -I when including system
719 # include files, to avoid generating useless diagnostics for the files.
720 if test "$gl_gcc_warnings" != yes; then
721   isystem='-I'
722 else
723   isystem='-isystem '
725   # This, $nw, is the list of warnings we disable.
726   nw=
728   case $with_x_toolkit in
729     lucid | athena | motif)
730        # Old toolkits mishandle 'const'.
731        nw="$nw -Wwrite-strings"
732        ;;
733     *)
734        gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
735        ;;
736   esac
737   AC_SUBST([WERROR_CFLAGS])
739   nw="$nw -Waggregate-return"       # anachronistic
740   nw="$nw -Wlong-long"              # C90 is anachronistic
741   nw="$nw -Wc++-compat"             # We don't care about C++ compilers
742   nw="$nw -Wundef"                  # Warns on '#if GNULIB_FOO' etc in gnulib
743   nw="$nw -Wtraditional"            # Warns on #elif which we use often
744   nw="$nw -Wcast-qual"              # Too many warnings for now
745   nw="$nw -Wconversion"             # Too many warnings for now
746   nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
747   nw="$nw -Wsign-conversion"        # Too many warnings for now
748   nw="$nw -Woverlength-strings"     # Not a problem these days
749   nw="$nw -Wtraditional-conversion" # Too many warnings for now
750   nw="$nw -Wpadded"                 # Our structs are not padded
751   nw="$nw -Wredundant-decls"        # We regularly (re)declare getenv etc.
752   nw="$nw -Wlogical-op"             # any use of fwrite provokes this
753   nw="$nw -Wformat-nonliteral"      # Emacs does this a lot
754   nw="$nw -Wvla"                    # warnings in gettext.h
755   nw="$nw -Wnested-externs"         # use of XARGMATCH/verify_function__
756   nw="$nw -Wswitch-enum"            # Too many warnings for now
757   nw="$nw -Wswitch-default"         # Too many warnings for now
758   nw="$nw -Wfloat-equal"            # e.g., ftoastr.c
759   nw="$nw -Winline"                 # e.g., dispnew.c's inlining of row_equal_p
761   # Emacs doesn't care about shadowing; see
762   # <http://lists.gnu.org/archive/html/emacs-diffs/2011-11/msg00265.html>.
763   nw="$nw -Wshadow"
765   # The following lines should be removable at some point.
766   nw="$nw -Wstack-protector"
767   nw="$nw -Wstrict-overflow"
768   nw="$nw -Wsuggest-attribute=const"
769   nw="$nw -Wsuggest-attribute=pure"
771   gl_MANYWARN_ALL_GCC([ws])
772   gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
773   for w in $ws; do
774     gl_WARN_ADD([$w])
775   done
776   gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one
777   gl_WARN_ADD([-Wno-sign-compare])     # Too many warnings for now
778   gl_WARN_ADD([-Wno-type-limits])      # Too many warnings for now
779   gl_WARN_ADD([-Wno-switch])           # Too many warnings for now
780   gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
781   gl_WARN_ADD([-Wno-format-nonliteral])
783   # In spite of excluding -Wlogical-op above, it is enabled, as of
784   # gcc 4.5.0 20090517.
785   gl_WARN_ADD([-Wno-logical-op])
787   gl_WARN_ADD([-fdiagnostics-show-option])
788   gl_WARN_ADD([-funit-at-a-time])
790   AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
791   AC_DEFINE([_FORTIFY_SOURCE], [2],
792     [enable compile-time and run-time bounds-checking, and some warnings])
793   AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
795   # We use a slightly smaller set of warning options for lib/.
796   # Remove the following and save the result in GNULIB_WARN_CFLAGS.
797   nw=
798   nw="$nw -Wunused-macros"
800   gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
801   AC_SUBST([GNULIB_WARN_CFLAGS])
806 #### Some other nice autoconf tests.
808 dnl checks for programs
809 AC_PROG_CPP
810 AC_PROG_INSTALL
811 if test "x$RANLIB" = x; then
812   AC_PROG_RANLIB
815 ## Although we're running on an amd64 kernel, we're actually compiling for
816 ## the x86 architecture.  The user should probably have provided an
817 ## explicit --build to `configure', but if everything else than the kernel
818 ## is running in i386 mode, we can help them out.
819 if test "$machine" = "amdx86-64"; then
820   AC_CHECK_DECL([i386])
821   if test "$ac_cv_have_decl_i386" = "yes"; then
822     canonical=`echo "$canonical" | sed -e 's/^amd64/i386/' -e 's/^x86_64/i386/'`
823     machine=intel386
824     machfile="m/${machine}.h"
825   fi
828 AC_PATH_PROG(INSTALL_INFO, install-info)
829 AC_PATH_PROG(INSTALL_INFO, install-info,, /usr/sbin)
830 AC_PATH_PROG(INSTALL_INFO, install-info,:, /sbin)
831 dnl Don't use GZIP, which is used by gzip for additional parameters.
832 AC_PATH_PROG(GZIP_PROG, gzip)
835 ## Need makeinfo >= 4.7 (?) to build the manuals.
836 AC_PATH_PROG(MAKEINFO, makeinfo, no)
837 dnl By this stage, configure has already checked for egrep and set EGREP,
838 dnl or exited with an error if no egrep was found.
839 if test "$MAKEINFO" != "no" && \
840   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
841    MAKEINFO=no
844 ## Makeinfo is unusual.  For a released Emacs, the manuals are
845 ## pre-built, and not deleted by the normal clean rules.  makeinfo is
846 ## therefore in the category of "special tools" not normally required, which
847 ## configure does not have to check for (eg autoconf itself).
848 ## In a Bazaar checkout on the other hand, the manuals are not included.
849 ## So makeinfo is a requirement to build from Bazaar, and configure
850 ## should test for it as it does for any other build requirement.
851 ## We use the presence of $srcdir/info/emacs to distinguish a release,
852 ## with pre-built manuals, from a Bazaar checkout.
853 HAVE_MAKEINFO=yes
855 if test "$MAKEINFO" = "no"; then
856   MAKEINFO=makeinfo
857   if test "x${with_makeinfo}" = "xno"; then
858     HAVE_MAKEINFO=no
859   elif test ! -e $srcdir/info/emacs; then
860     AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.7, and your
861 source tree does not seem to have pre-built manuals in the `info' directory.
862 Either install a suitable version of makeinfo, or re-run configure
863 with the `--without-makeinfo' option to build without the manuals.] )
864   fi
866 AC_SUBST(HAVE_MAKEINFO)
868 dnl Add our options to ac_link now, after it is set up.
870 if test x$GCC = xyes; then
871   test "x$GCC_LINK_TEST_OPTIONS" != x && \
872     ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
873 else
874   test "x$NON_GCC_LINK_TEST_OPTIONS" != x && \
875     ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
878 dnl We need -znocombreloc if we're using a relatively recent GNU ld.
879 dnl If we can link with the flag, it shouldn't do any harm anyhow.
880 dnl (Don't use `-z nocombreloc' as -z takes no arg on Irix.)
881 dnl Treat GCC specially since it just gives a non-fatal `unrecognized option'
882 dnl if not built to support GNU ld.
884 late_LDFLAGS=$LDFLAGS
885 if test x$GCC = xyes; then
886   LDFLAGS="$LDFLAGS -Wl,-znocombreloc"
887 else
888   LDFLAGS="$LDFLAGS -znocombreloc"
891 AC_MSG_CHECKING([for -znocombreloc])
892 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
893   [AC_MSG_RESULT(yes)],
894   LDFLAGS=$late_LDFLAGS
895   [AC_MSG_RESULT(no)])
898 # The value of CPP is a quoted variable reference, so we need to do this
899 # to get its actual value...
900 CPP=`eval "echo $CPP"`
903 dnl The function dump-emacs will not be defined and temacs will do
904 dnl (load "loadup") automatically unless told otherwise.
905 test "x$CANNOT_DUMP" = "x" && CANNOT_DUMP=no
906 case "$opsys" in
907   your-opsys-here) CANNOT_DUMP=yes ;;
908 esac
910 test "$CANNOT_DUMP" = "yes" && \
911   AC_DEFINE(CANNOT_DUMP, 1, [Define if Emacs cannot be dumped on your system.])
913 AC_SUBST(CANNOT_DUMP)
916 UNEXEC_OBJ=unexelf.o
917 case "$opsys" in
918   # MSDOS uses unexcoff.o
919   # MSWindows uses unexw32.o
920   aix4-2)
921    UNEXEC_OBJ=unexaix.o
922    ;;
923   cygwin)
924    UNEXEC_OBJ=unexcw.o
925    ;;
926   darwin)
927    UNEXEC_OBJ=unexmacosx.o
928    ;;
929   hpux10-20 | hpux11)
930    UNEXEC_OBJ=unexhp9k800.o
931    ;;
932   sol2-10)
933    # Use the Solaris dldump() function, called from unexsol.c, to dump
934    # emacs, instead of the generic ELF dump code found in unexelf.c.
935    # The resulting binary has a complete symbol table, and is better
936    # for debugging and other observability tools (debuggers, pstack, etc).
937    #
938    # If you encounter a problem using dldump(), please consider sending
939    # a message to the OpenSolaris tools-linking mailing list:
940    #      http://mail.opensolaris.org/mailman/listinfo/tools-linking
941    #
942    # It is likely that dldump() works with older Solaris too, but this has
943    # not been tested, so for now this change is for Solaris 10 or newer.
944    UNEXEC_OBJ=unexsol.o
945    ;;
946 esac
948 LD_SWITCH_SYSTEM=
949 case "$opsys" in
950   freebsd)
951    ## Let `ld' find image libs and similar things in /usr/local/lib.
952    ## The system compiler, GCC, has apparently been modified to not
953    ## look there, contrary to what a stock GCC would do.
954    LD_SWITCH_SYSTEM=-L/usr/local/lib
955    ;;
957   gnu-linux)
958    ## cpp test was "ifdef __mips__", but presumably this is equivalent...
959    case $host_cpu in mips*) LD_SWITCH_SYSTEM="-G 0";; esac
960    ;;
962   netbsd)
963    LD_SWITCH_SYSTEM="-Wl,-rpath,/usr/pkg/lib -L/usr/pkg/lib -Wl,-rpath,/usr/local/lib -L/usr/local/lib"
964    ;;
966   openbsd)
967    ## Han Boetes <han@mijncomputer.nl> says this is necessary,
968    ## otherwise Emacs dumps core on elf systems.
969    LD_SWITCH_SYSTEM="-Z"
970    ;;
971 esac
972 AC_SUBST(LD_SWITCH_SYSTEM)
974 ac_link="$ac_link $LD_SWITCH_SYSTEM"
976 ## This setting of LD_SWITCH_SYSTEM references LD_SWITCH_X_SITE_AUX_RPATH,
977 ## which has not been defined yet.  When this was handled with cpp,
978 ## it was expanded to null when configure sourced the s/*.h file.
979 ## Thus LD_SWITCH_SYSTEM had different values in configure and the Makefiles.
980 ## FIXME it would be cleaner to put this in LD_SWITCH_SYSTEM_TEMACS
981 ## (or somesuch), but because it is supposed to go at the _front_
982 ## of LD_SWITCH_SYSTEM, we cannot do that in exactly the same way.
983 ## Compare with the gnu-linux case below, which added to the end
984 ## of LD_SWITCH_SYSTEM, and so can instead go at the front of
985 ## LD_SWITCH_SYSTEM_TEMACS.
986 case "$opsys" in
987   netbsd|openbsd)
988    LD_SWITCH_SYSTEM="\$(LD_SWITCH_X_SITE_AUX_RPATH) $LD_SWITCH_SYSTEM" ;;
989 esac
992 C_SWITCH_MACHINE=
993 if test "$machine" = "alpha"; then
994   AC_CHECK_DECL([__ELF__])
995   if test "$ac_cv_have_decl___ELF__" = "yes"; then
996     ## With ELF, make sure that all common symbols get allocated to in the
997     ## data section.  Otherwise, the dump of temacs may miss variables in
998     ## the shared library that have been initialized.  For example, with
999     ## GNU libc, __malloc_initialized would normally be resolved to the
1000     ## shared library's .bss section, which is fatal.
1001     if test "x$GCC" = "xyes"; then
1002       C_SWITCH_MACHINE="-fno-common"
1003     else
1004       AC_MSG_ERROR([What gives?  Fix me if DEC Unix supports ELF now.])
1005     fi
1006   else
1007     UNEXEC_OBJ=unexalpha.o
1008   fi
1010 AC_SUBST(C_SWITCH_MACHINE)
1012 AC_SUBST(UNEXEC_OBJ)
1014 C_SWITCH_SYSTEM=
1015 ## Some programs in src produce warnings saying certain subprograms
1016 ## are too complex and need a MAXMEM value greater than 2000 for
1017 ## additional optimization.  --nils@exp-math.uni-essen.de
1018 test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
1019   C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
1020 ## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
1021 ## It is redundant in glibc2, since we define _GNU_SOURCE.
1022 AC_SUBST(C_SWITCH_SYSTEM)
1025 LIBS_SYSTEM=
1026 case "$opsys" in
1027   ## IBM's X11R5 uses -lIM and -liconv in AIX 3.2.2.
1028   aix4-2) LIBS_SYSTEM="-lrts -lIM -liconv" ;;
1030   freebsd) LIBS_SYSTEM="-lutil" ;;
1032   hpux*) LIBS_SYSTEM="-l:libdld.sl" ;;
1034   sol2*) LIBS_SYSTEM="-lsocket -lnsl" ;;
1036   ## Motif needs -lgen.
1037   unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
1038 esac
1039 AC_SUBST(LIBS_SYSTEM)
1042 ### Make sure subsequent tests use flags consistent with the build flags.
1044 if test x"${OVERRIDE_CPPFLAGS}" != x; then
1045   CPPFLAGS="${OVERRIDE_CPPFLAGS}"
1046 else
1047   CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
1050 # Suppress obsolescent Autoconf test for size_t; Emacs assumes C89 or better.
1051 AC_DEFUN([AC_TYPE_SIZE_T])
1052 # Likewise for obsolescent test for uid_t, gid_t; Emacs assumes them.
1053 AC_DEFUN([AC_TYPE_UID_T])
1055 dnl Do this early because it can frob feature test macros for Unix-98 &c.
1056 AC_SYS_LARGEFILE
1059 LIB_MATH=-lm
1060 LIB_STANDARD=
1061 START_FILES=
1063 dnl NB do not use CRT_DIR unquoted here, since it might not be set yet.
1064 case $opsys in
1065   cygwin )
1066     LIB_MATH=
1067     START_FILES='pre-crt0.o'
1068     ;;
1069   darwin )
1070     ## Adding -lm confuses the dynamic linker, so omit it.
1071     LIB_MATH=
1072     START_FILES='pre-crt0.o'
1073     ;;
1074   freebsd )
1075     LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o $(CRT_DIR)/crtn.o'
1076     START_FILES='pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtbegin.o'
1077     ;;
1078   gnu-linux | gnu-kfreebsd )
1079     LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtn.o'
1080     START_FILES='pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o'
1081     ;;
1082   hpux10-20 | hpux11 )
1083     LIB_STANDARD=-lc
1084     START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o'
1085     ;;
1086   dnl NB this may be adjusted below.
1087   netbsd | openbsd )
1088     LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o'
1089     START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crtbegin.o'
1090     ;;
1091 esac
1093 AC_SUBST(LIB_MATH)
1094 AC_SUBST(START_FILES)
1096 dnl Not all platforms use crtn.o files.  Check if the current one does.
1097 crt_files=
1099 for file in x $LIB_STANDARD $START_FILES; do
1100   case "$file" in
1101     *CRT_DIR*) crt_files="$crt_files `echo $file | sed -e 's|.*/||'`" ;;
1102   esac
1103 done
1105 if test "x$crt_files" != x; then
1107   ## If user specified a crt-dir, use that unconditionally.
1108   crt_gcc=no
1110   if test "X$CRT_DIR" = "X"; then
1112     CRT_DIR=/usr/lib            # default
1114     case "$canonical" in
1115       x86_64-*-linux-gnu* | s390x-*-linux-gnu*)
1116       ## On x86-64 and s390x GNU/Linux distributions, the standard library
1117       ## can be in a variety of places.  We only try /usr/lib64 and /usr/lib.
1118       ## For anything else (eg /usr/lib32), it is up the user to specify
1119       ## the location (bug#5655).
1120       ## Test for crtn.o, not just the directory, because sometimes the
1121       ## directory exists but does not have the relevant files (bug#1287).
1122       ## FIXME better to test for binary compatibility somehow.
1123       test -e /usr/lib64/crtn.o && CRT_DIR=/usr/lib64
1124       ;;
1126       powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*) CRT_DIR=/usr/lib64 ;;
1127     esac
1129     case "$opsys" in
1130       hpux10-20) CRT_DIR=/lib ;;
1131     esac
1133     test "x${GCC}" = xyes && crt_gcc=yes
1135   fi                            # CRT_DIR = ""
1137   crt_missing=
1139   for file in $crt_files; do
1141     ## If we're using gcc, try to determine it automatically by asking
1142     ## gcc.  [If this doesn't work, CRT_DIR will remain at the
1143     ## system-dependent default from above.]
1144     if test $crt_gcc = yes && test ! -e $CRT_DIR/$file; then
1146        crt_file=`$CC --print-file-name=$file 2>/dev/null`
1147        case "$crt_file" in
1148          */*)
1149            CRT_DIR=`AS_DIRNAME(["$crt_file"])`
1150            ;;
1151        esac
1152     fi
1154     dnl We expect all the files to be in a single directory, so after the
1155     dnl first there is no point asking gcc.
1156     crt_gcc=no
1158     test -e $CRT_DIR/$file || crt_missing="$crt_missing $file"
1159   done                          # $crt_files
1161   test "x$crt_missing" = x || \
1162     AC_MSG_ERROR([Required file(s) not found:$crt_missing
1163 Try using the --with-crt-dir option.])
1165 fi                              # crt_files != ""
1167 AC_SUBST(CRT_DIR)
1169 case $opsys in
1170   netbsd | openbsd )
1171     if test -f $CRT_DIR/crti.o; then
1173         test -f $CRT_DIR/crtn.o || \
1174           AC_MSG_ERROR([Required file not found: crtn.o])
1176         LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o $(CRT_DIR)/crtn.o'
1177         START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtbegin.o'
1178     fi
1179     ;;
1180 esac
1183 dnl This function definition taken from Gnome 2.0
1184 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
1185 dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
1186 dnl also defines GSTUFF_PKG_ERRORS on error
1187 AC_DEFUN([PKG_CHECK_MODULES], [
1188   succeeded=no
1190   AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1192   if test "$PKG_CONFIG" = "no" ; then
1193      ifelse([$4], , [AC_MSG_ERROR([
1194       *** 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])
1195   else
1196      PKG_CONFIG_MIN_VERSION=0.9.0
1197      if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
1198         AC_MSG_CHECKING(for $2)
1200         if $PKG_CONFIG --exists "$2" 2>&AS_MESSAGE_LOG_FD &&
1201            $1_CFLAGS=`$PKG_CONFIG --cflags "$2" 2>&AS_MESSAGE_LOG_FD` &&
1202            $1_LIBS=`$PKG_CONFIG --libs "$2" 2>&AS_MESSAGE_LOG_FD`; then
1203             edit_cflags="
1204               s,///*,/,g
1205               s/^/ /
1206               s/ -I/ $isystem/g
1207               s/^ //
1208             "
1209             $1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"`
1210             $1_LIBS=`AS_ECHO(["$$1_LIBS"]) | sed -e 's,///*,/,g'`
1211             AC_MSG_RESULT([yes CFLAGS='$$1_CFLAGS' LIBS='$$1_LIBS'])
1212             succeeded=yes
1213         else
1214             AC_MSG_RESULT(no)
1215             $1_CFLAGS=""
1216             $1_LIBS=""
1217             ## If we have a custom action on failure, don't print errors, but
1218             ## do set a variable so people can do so.
1219             $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
1220             ifelse([$4], ,echo $$1_PKG_ERRORS,)
1221         fi
1223         AC_SUBST($1_CFLAGS)
1224         AC_SUBST($1_LIBS)
1225      else
1226         echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
1227         echo "*** See http://www.freedesktop.org/software/pkgconfig"
1228      fi
1229   fi
1231   if test $succeeded = yes; then
1232      ifelse([$3], , :, [$3])
1233   else
1234      ifelse([$4], , [AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.])], [$4])
1235   fi
1239 if test "${with_sound}" != "no"; then
1240   # Sound support for GNU/Linux and the free BSDs.
1241   AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h,
1242     have_sound_header=yes)
1243   # Emulation library used on NetBSD.
1244   AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
1245   AC_SUBST(LIBSOUND)
1247   ALSA_REQUIRED=1.0.0
1248   ALSA_MODULES="alsa >= $ALSA_REQUIRED"
1249   PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
1250   if test $HAVE_ALSA = yes; then
1251     SAVE_CFLAGS="$CFLAGS"
1252     SAVE_LIBS="$LIBS"
1253     CFLAGS="$ALSA_CFLAGS $CFLAGS"
1254     LIBS="$ALSA_LIBS $LIBS"
1255     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])],
1256                     emacs_alsa_normal=yes,
1257                     emacs_alsa_normal=no)
1258     if test "$emacs_alsa_normal" != yes; then
1259       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]],
1260                      [[snd_lib_error_set_handler (0);]])],
1261                      emacs_alsa_subdir=yes,
1262                      emacs_alsa_subdir=no)
1263       if test "$emacs_alsa_subdir" != yes; then
1264         AC_MSG_ERROR([pkg-config found alsa, but it does not compile.  See config.log for error messages.])
1265       fi
1266       ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
1267     fi
1269     CFLAGS="$SAVE_CFLAGS"
1270     LIBS="$SAVE_LIBS"
1271     LIBSOUND="$LIBSOUND $ALSA_LIBS"
1272     CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
1273     AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
1274   fi
1276   dnl Define HAVE_SOUND if we have sound support.  We know it works and
1277   dnl compiles only on the specified platforms.  For others, it
1278   dnl probably doesn't make sense to try.
1279   if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
1280      case "$opsys" in
1281        dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
1282        gnu-linux|freebsd|netbsd)
1283          AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.])
1284          ;;
1285      esac
1286   fi
1288   AC_SUBST(CFLAGS_SOUND)
1291 dnl checks for header files
1292 AC_CHECK_HEADERS(sys/select.h sys/time.h unistd.h utime.h \
1293   linux/version.h sys/systeminfo.h \
1294   stdio_ext.h fcntl.h coff.h pty.h sys/mman.h \
1295   sys/vlimit.h sys/resource.h locale.h sys/_mbstate_t.h \
1296   sys/utsname.h pwd.h utmp.h dirent.h util.h)
1298 AC_MSG_CHECKING(if personality LINUX32 can be set)
1299 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/personality.h>]], [[personality (PER_LINUX32)]])],
1300                emacs_cv_personality_linux32=yes,
1301                emacs_cv_personality_linux32=no)
1302 AC_MSG_RESULT($emacs_cv_personality_linux32)
1304 if test $emacs_cv_personality_linux32 = yes; then
1305   AC_DEFINE(HAVE_PERSONALITY_LINUX32, 1,
1306             [Define to 1 if personality LINUX32 can be set.])
1309 dnl On Solaris 8 there's a compilation warning for term.h because
1310 dnl it doesn't define `bool'.
1311 AC_CHECK_HEADERS(term.h, , , -)
1312 AC_HEADER_TIME
1313 AC_CHECK_DECLS([sys_siglist])
1314 if test $ac_cv_have_decl_sys_siglist != yes; then
1315   # For Tru64, at least:
1316   AC_CHECK_DECLS([__sys_siglist])
1317   if test $ac_cv_have_decl___sys_siglist = yes; then
1318     AC_DEFINE(sys_siglist, __sys_siglist,
1319               [Define to any substitute for sys_siglist.])
1320   fi
1322 AC_HEADER_SYS_WAIT
1324 dnl Some systems have utime.h but don't declare the struct anyplace.
1325 AC_CACHE_CHECK(for struct utimbuf, emacs_cv_struct_utimbuf,
1326 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef TIME_WITH_SYS_TIME
1327 #include <sys/time.h>
1328 #include <time.h>
1329 #else
1330 #ifdef HAVE_SYS_TIME_H
1331 #include <sys/time.h>
1332 #else
1333 #include <time.h>
1334 #endif
1335 #endif
1336 #ifdef HAVE_UTIME_H
1337 #include <utime.h>
1338 #endif]], [[static struct utimbuf x; x.actime = x.modtime;]])],
1339   emacs_cv_struct_utimbuf=yes, emacs_cv_struct_utimbuf=no))
1340 if test $emacs_cv_struct_utimbuf = yes; then
1341   AC_DEFINE(HAVE_STRUCT_UTIMBUF, 1, [Define to 1 if `struct utimbuf' is declared by <utime.h>.])
1344 dnl Check for speed_t typedef.
1345 AC_CACHE_CHECK(for speed_t, emacs_cv_speed_t,
1346   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <termios.h>]], [[speed_t x = 1;]])],
1347     emacs_cv_speed_t=yes, emacs_cv_speed_t=no)])
1348 if test $emacs_cv_speed_t = yes; then
1349   AC_DEFINE(HAVE_SPEED_T, 1,
1350            [Define to 1 if `speed_t' is declared by <termios.h>.])
1353 AC_CACHE_CHECK(for struct timeval, emacs_cv_struct_timeval,
1354 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef TIME_WITH_SYS_TIME
1355 #include <sys/time.h>
1356 #include <time.h>
1357 #else
1358 #ifdef HAVE_SYS_TIME_H
1359 #include <sys/time.h>
1360 #else
1361 #include <time.h>
1362 #endif
1363 #endif]], [[static struct timeval x; x.tv_sec = x.tv_usec;]])],
1364   emacs_cv_struct_timeval=yes, emacs_cv_struct_timeval=no))
1365 HAVE_TIMEVAL=$emacs_cv_struct_timeval
1366 if test $emacs_cv_struct_timeval = yes; then
1367   AC_DEFINE(HAVE_TIMEVAL, 1, [Define to 1 if `struct timeval' is declared by <sys/time.h>.])
1370 AC_CACHE_CHECK(for struct exception, emacs_cv_struct_exception,
1371 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
1372 [[static struct exception x; x.arg1 = x.arg2 = x.retval; x.name = ""; x.type = 1;]])],
1373   emacs_cv_struct_exception=yes, emacs_cv_struct_exception=no))
1374 HAVE_EXCEPTION=$emacs_cv_struct_exception
1375 if test $emacs_cv_struct_exception != yes; then
1376   AC_DEFINE(NO_MATHERR, 1, [Define to 1 if you don't have struct exception in math.h.])
1379 AC_CHECK_HEADERS(sys/socket.h)
1380 AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT
1381 #if HAVE_SYS_SOCKET_H
1382 #include <sys/socket.h>
1383 #endif])
1384 AC_CHECK_HEADERS(ifaddrs.h, , , [AC_INCLUDES_DEFAULT
1385 #if HAVE_SYS_SOCKET_H
1386 #include <sys/socket.h>
1387 #endif])
1388 AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT
1389 #if HAVE_SYS_SOCKET_H
1390 #include <sys/socket.h>
1391 #endif])
1392 AC_CHECK_FUNCS(getifaddrs freeifaddrs)
1394 dnl checks for structure members
1395 AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr,
1396                   struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr,
1397                   struct ifreq.ifr_addr,
1398                   struct ifreq.ifr_addr.sa_len], , ,
1399                  [AC_INCLUDES_DEFAULT
1400 #if HAVE_SYS_SOCKET_H
1401 #include <sys/socket.h>
1402 #endif
1403 #if HAVE_NET_IF_H
1404 #include <net/if.h>
1405 #endif])
1407 dnl checks for compiler characteristics
1409 dnl Testing __STDC__ to determine prototype support isn't good enough.
1410 dnl DEC C, for instance, doesn't define it with default options, and
1411 dnl is used on 64-bit systems (OSF Alphas).  Similarly for volatile
1412 dnl and void *.
1413 AC_C_PROTOTYPES
1414 AC_C_VOLATILE
1415 AC_C_CONST
1416 AC_CACHE_CHECK([for void * support], emacs_cv_void_star,
1417   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[void * foo;]])],
1418                    emacs_cv_void_star=yes, emacs_cv_void_star=no)])
1419 if test $emacs_cv_void_star = yes; then
1420   AC_DEFINE(POINTER_TYPE, void)
1421 else
1422   AC_DEFINE(POINTER_TYPE, char)
1424 AH_TEMPLATE(POINTER_TYPE,
1425             [Define as `void' if your compiler accepts `void *'; otherwise
1426              define as `char'.])dnl
1428 dnl Check for endianness.
1429 AC_C_BIGENDIAN
1431 AC_CACHE_CHECK([for  __attribute__ ((__aligned__ (expr)))],
1432   [emacs_cv_attribute_aligned],
1433   [AC_COMPILE_IFELSE(
1434      [AC_LANG_PROGRAM(
1435         [[char __attribute__ ((__aligned__ (1 << 3))) c;]],
1436         [[]])],
1437      [emacs_cv_attribute_aligned=yes],
1438      [emacs_cv_attribute_aligned=no])])
1439 if test $emacs_cv_attribute_aligned = yes; then
1440   AC_DEFINE([HAVE_ATTRIBUTE_ALIGNED], 1,
1441     [Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works.])
1444 dnl check for Make feature
1445 AC_PROG_MAKE_SET
1447 DEPFLAGS=
1448 MKDEPDIR=":"
1449 deps_frag=deps.mk
1450 dnl check for GNU Make if we have GCC and autodepend is on.
1451 if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
1452    AC_MSG_CHECKING([whether we are using GNU Make])
1453    HAVE_GNU_MAKE=no
1454    testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
1455    if test "x$testval" != x; then
1456       HAVE_GNU_MAKE=yes
1457    else
1458       ac_enable_autodepend=no
1459    fi
1460    AC_MSG_RESULT([$HAVE_GNU_MAKE])
1461    if test $HAVE_GNU_MAKE = yes; then
1462       AC_MSG_CHECKING([whether gcc understands -MMD -MF])
1463       SAVE_CFLAGS="$CFLAGS"
1464       CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
1465       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
1466       CFLAGS="$SAVE_CFLAGS"
1467       test -f deps.d || ac_enable_autodepend=no
1468       rm -rf deps.d
1469       AC_MSG_RESULT([$ac_enable_autodepend])
1470    fi
1471    if test $ac_enable_autodepend = yes; then
1472       DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
1473       ## In parallel builds, another make might create depdir between
1474       ## the first test and mkdir, so stick another test on the end.
1475       ## Or use install-sh -d?  mkdir -p is not portable.
1476       MKDEPDIR='test -d ${DEPDIR} || mkdir ${DEPDIR} || test -d ${DEPDIR}'
1477       deps_frag=autodeps.mk
1478    fi
1480 deps_frag=$srcdir/src/$deps_frag
1481 AC_SUBST(MKDEPDIR)
1482 AC_SUBST(DEPFLAGS)
1483 AC_SUBST_FILE(deps_frag)
1486 lisp_frag=$srcdir/src/lisp.mk
1487 AC_SUBST_FILE(lisp_frag)
1490 dnl checks for operating system services
1491 AC_SYS_LONG_FILE_NAMES
1493 #### Choose a window system.
1495 AC_PATH_X
1496 if test "$no_x" = yes; then
1497   window_system=none
1498 else
1499   window_system=x11
1502 LD_SWITCH_X_SITE_AUX_RPATH=
1503 if test "${x_libraries}" != NONE; then
1504   if test -n "${x_libraries}"; then
1505     LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
1506     LD_SWITCH_X_SITE_AUX_RPATH=-Wl,-rpath`echo ${x_libraries} | sed -e "s/:/ -Wl,-rpath/g"`
1507   fi
1508   x_default_search_path=""
1509   x_search_path=${x_libraries}
1510   if test -z "${x_search_path}"; then
1511     x_search_path=/usr/lib
1512   fi
1513   for x_library in `echo ${x_search_path}: | \
1514                     sed -e "s/:/ /g" -e p -e "s:/lib[[^ /]]* :/share :g"`; do
1515     x_search_path="\
1516 ${x_library}/X11/%L/%T/%N%C%S:\
1517 ${x_library}/X11/%l/%T/%N%C%S:\
1518 ${x_library}/X11/%T/%N%C%S:\
1519 ${x_library}/X11/%L/%T/%N%S:\
1520 ${x_library}/X11/%l/%T/%N%S:\
1521 ${x_library}/X11/%T/%N%S"
1522     if test x"${x_default_search_path}" = x; then
1523       x_default_search_path=${x_search_path}
1524     else
1525       x_default_search_path="${x_search_path}:${x_default_search_path}"
1526     fi
1527   done
1529 AC_SUBST(LD_SWITCH_X_SITE_AUX_RPATH)
1531 if test "${x_includes}" != NONE && test -n "${x_includes}"; then
1532   C_SWITCH_X_SITE="$isystem"`echo ${x_includes} | sed -e "s/:/ $isystem/g"`
1535 if test x"${x_includes}" = x; then
1536   bitmapdir=/usr/include/X11/bitmaps
1537 else
1538   # accumulate include directories that have X11 bitmap subdirectories
1539   bmd_acc="dummyval"
1540   for bmd in `echo ${x_includes} | sed -e "s/:/ /g"`; do
1541     if test -d "${bmd}/X11/bitmaps"; then
1542       bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps"
1543     fi
1544     if test -d "${bmd}/bitmaps"; then
1545       bmd_acc="${bmd_acc}:${bmd}/bitmaps"
1546     fi
1547   done
1548   if test ${bmd_acc} != "dummyval"; then
1549     bitmapdir=`echo ${bmd_acc} | sed -e "s/^dummyval://"`
1550   fi
1553 HAVE_NS=no
1554 NS_IMPL_COCOA=no
1555 NS_IMPL_GNUSTEP=no
1556 tmp_CPPFLAGS="$CPPFLAGS"
1557 tmp_CFLAGS="$CFLAGS"
1558 CPPFLAGS="$CPPFLAGS -x objective-c"
1559 CFLAGS="$CFLAGS -x objective-c"
1560 TEMACS_LDFLAGS2="\${LDFLAGS}"
1561 GNU_OBJC_CFLAGS=
1562 dnl I don't think it's especially important, but src/Makefile.in
1563 dnl (now the only user of ns_appdir) used to go to the trouble of adding a
1564 dnl trailing "/" to it, so now we do it here.
1565 if test "${with_ns}" != no; then
1566   if test "${opsys}" = darwin; then
1567      NS_IMPL_COCOA=yes
1568      ns_appdir=`pwd`/nextstep/Emacs.app
1569      ns_appbindir=${ns_appdir}/Contents/MacOS/
1570      ns_appresdir=${ns_appdir}/Contents/Resources
1571      ns_appsrc=${srcdir}/nextstep/Cocoa/Emacs.base
1572   elif test -f $GNUSTEP_CONFIG_FILE; then
1573      NS_IMPL_GNUSTEP=yes
1574      ns_appdir=`pwd`/nextstep/Emacs.app
1575      ns_appbindir=${ns_appdir}/
1576      ns_appresdir=${ns_appdir}/Resources
1577      ns_appsrc=${srcdir}/nextstep/GNUstep/Emacs.base
1578      dnl FIXME sourcing this several times in subshells seems inefficient.
1579      GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
1580      GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
1581      dnl I seemed to need these as well with GNUstep-startup 0.25.
1582      GNUSTEP_LOCAL_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_HEADERS)"
1583      GNUSTEP_LOCAL_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_LIBRARIES)"
1584      test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \
1585        GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}"
1586      test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \
1587        GNUSTEP_LOCAL_LIBRARIES="-L${GNUSTEP_LOCAL_LIBRARIES}"
1588      CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1589      CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1590      LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
1591      LIB_STANDARD=
1592      START_FILES=
1593      TEMACS_LDFLAGS2=
1594      dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1.
1595      dnl If they had chosen to either define it or not, we could have
1596      dnl just used AC_CHECK_DECL here.
1597      AC_CACHE_CHECK(if GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS,
1598        emacs_cv_objc_exceptions,
1599 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <GNUstepBase/GSConfig.h>]],
1600 [[#if defined BASE_NATIVE_OBJC_EXCEPTIONS && BASE_NATIVE_OBJC_EXCEPTIONS > 0
1602 #else
1603 fail;
1604 #endif]])], emacs_cv_objc_exceptions=yes, emacs_cv_objc_exceptions=no ) )
1605      if test $emacs_cv_objc_exceptions = yes; then
1606        dnl _NATIVE_OBJC_EXCEPTIONS is used by the GNUstep headers.
1607        AC_DEFINE(_NATIVE_OBJC_EXCEPTIONS, 1,
1608          [Define if GNUstep uses ObjC exceptions.])
1609        GNU_OBJC_CFLAGS="-fobjc-exceptions"
1610      fi
1611   fi
1613   dnl This is only used while we test the NS headers, it gets reset below.
1614   CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS"
1616   AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
1617                   [AC_MSG_ERROR([`--with-ns' was specified, but the include
1618   files are missing or cannot be compiled.])])
1619   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <Foundation/NSObjCRuntime.h>],
1620                                      [NSInteger i;])],
1621                     ns_have_nsinteger=yes,
1622                     ns_have_nsinteger=no)
1623   if test $ns_have_nsinteger = yes; then
1624     AC_DEFINE(NS_HAVE_NSINTEGER, 1, [Define to 1 if `NSInteger' is defined.])
1625   fi
1627 AC_SUBST(TEMACS_LDFLAGS2)
1629 ns_frag=/dev/null
1630 NS_OBJ=
1631 NS_OBJC_OBJ=
1632 if test "${HAVE_NS}" = yes; then
1633   if test "$with_toolkit_scroll_bars" = "no"; then
1634     AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for Nextstep.])
1635   fi
1637   window_system=nextstep
1638   with_xft=no
1639   # set up packaging dirs
1640   if test "${EN_NS_SELF_CONTAINED}" = yes; then
1641      prefix=${ns_appresdir}
1642      exec_prefix=${ns_appbindir}
1643      libexecdir=${ns_appbindir}/libexec
1644   fi
1645   ns_frag=$srcdir/src/ns.mk
1646   NS_OBJ="fontset.o fringe.o image.o"
1647   NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o"
1649 CFLAGS="$tmp_CFLAGS"
1650 CPPFLAGS="$tmp_CPPFLAGS"
1651 AC_SUBST(NS_OBJ)
1652 AC_SUBST(NS_OBJC_OBJ)
1653 AC_SUBST(LIB_STANDARD)
1654 AC_SUBST_FILE(ns_frag)
1656 case "${window_system}" in
1657   x11 )
1658     HAVE_X_WINDOWS=yes
1659     HAVE_X11=yes
1660     case "${with_x_toolkit}" in
1661       athena | lucid ) USE_X_TOOLKIT=LUCID ;;
1662       motif ) USE_X_TOOLKIT=MOTIF ;;
1663       gtk ) with_gtk=yes
1664 dnl Don't set this for GTK.  A lot of tests below assumes Xt when
1665 dnl USE_X_TOOLKIT is set.
1666             USE_X_TOOLKIT=none ;;
1667       gtk3 ) with_gtk3=yes
1668              USE_X_TOOLKIT=none ;;
1669       no ) USE_X_TOOLKIT=none ;;
1670 dnl If user did not say whether to use a toolkit, make this decision later:
1671 dnl use the toolkit if we have gtk, or X11R5 or newer.
1672       * ) USE_X_TOOLKIT=maybe ;;
1673     esac
1674   ;;
1675   nextstep | none )
1676     HAVE_X_WINDOWS=no
1677     HAVE_X11=no
1678     USE_X_TOOLKIT=none
1679   ;;
1680 esac
1682 if test "$window_system" = none && test "X$with_x" != "Xno"; then
1683    AC_CHECK_PROG(HAVE_XSERVER, X, true, false)
1684    if test "$HAVE_XSERVER" = true ||
1685       test -n "$DISPLAY" ||
1686       test "`echo /usr/lib/libX11.*`" != "/usr/lib/libX11.*"; then
1687         AC_MSG_ERROR([You seem to be running X, but no X development libraries
1688 were found.  You should install the relevant development files for X
1689 and for the toolkit you want, such as Gtk+, Lesstif or Motif.  Also make
1690 sure you have development files for image handling, i.e.
1691 tiff, gif, jpeg, png and xpm.
1692 If you are sure you want Emacs compiled without X window support, pass
1693   --without-x
1694 to configure.])
1695    fi
1698 ### If we're using X11, we should use the X menu package.
1699 HAVE_MENUS=no
1700 case ${HAVE_X11} in
1701   yes ) HAVE_MENUS=yes ;;
1702 esac
1704 # Do the opsystem or machine files prohibit the use of the GNU malloc?
1705 # Assume not, until told otherwise.
1706 GNU_MALLOC=yes
1708 AC_CACHE_CHECK(
1709   [whether malloc is Doug Lea style],
1710   [emacs_cv_var_doug_lea_malloc],
1711   [AC_LINK_IFELSE(
1712      [AC_LANG_PROGRAM(
1713         [[#include <malloc.h>
1714           static void hook (void) {}]],
1715         [[malloc_set_state (malloc_get_state ());
1716           __after_morecore_hook = hook;
1717           __malloc_initialize_hook = hook;]])],
1718      [emacs_cv_var_doug_lea_malloc=yes],
1719      [emacs_cv_var_doug_lea_malloc=no])])
1720 doug_lea_malloc=$emacs_cv_var_doug_lea_malloc
1723 dnl See comments in aix4-2.h about maybe using system malloc there.
1724 system_malloc=no
1725 case "$opsys" in
1726   ## darwin ld insists on the use of malloc routines in the System framework.
1727   darwin|sol2-10) system_malloc=yes ;;
1728 esac
1730 if test "${system_malloc}" = "yes"; then
1731   AC_DEFINE(SYSTEM_MALLOC, 1, [Define to use system malloc.])
1732   GNU_MALLOC=no
1733   GNU_MALLOC_reason="
1734     (The GNU allocators don't work with this system configuration.)"
1735   GMALLOC_OBJ=
1736   VMLIMIT_OBJ=
1737 else
1738   test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
1739   VMLIMIT_OBJ=vm-limit.o
1741 AC_SUBST(GMALLOC_OBJ)
1742 AC_SUBST(VMLIMIT_OBJ)
1744 if test "$doug_lea_malloc" = "yes" ; then
1745   if test "$GNU_MALLOC" = yes ; then
1746     GNU_MALLOC_reason="
1747       (Using Doug Lea's new malloc from the GNU C Library.)"
1748   fi
1749   AC_DEFINE(DOUG_LEA_MALLOC, 1,
1750             [Define to 1 if you are using the GNU C Library.])
1752   ## Use mmap directly for allocating larger buffers.
1753   ## FIXME this comes from src/s/{gnu,gnu-linux}.h:
1754   ## #ifdef DOUG_LEA_MALLOC; #undef REL_ALLOC; #endif
1755   ## Does the AC_FUNC_MMAP test below make this check unnecessary?
1756   case "$opsys" in
1757     gnu*) REL_ALLOC=no ;;
1758   esac
1761 if test x"${REL_ALLOC}" = x; then
1762   REL_ALLOC=${GNU_MALLOC}
1765 use_mmap_for_buffers=no
1766 case "$opsys" in
1767   cygwin|freebsd|irix6-5) use_mmap_for_buffers=yes ;;
1768 esac
1770 AC_FUNC_MMAP
1771 if test $use_mmap_for_buffers = yes; then
1772   AC_DEFINE(USE_MMAP_FOR_BUFFERS, 1, [Define to use mmap to allocate buffer text.])
1773   REL_ALLOC=no
1776 LIBS="$LIBS_SYSTEM $LIBS"
1778 dnl If found, this defines HAVE_LIBDNET, which m/pmax.h checks,
1779 dnl and also adds -ldnet to LIBS, which Autoconf uses for checks.
1780 AC_CHECK_LIB(dnet, dnet_ntoa)
1781 dnl This causes -lresolv to get used in subsequent tests,
1782 dnl which causes failures on some systems such as HPUX 9.
1783 dnl AC_CHECK_LIB(resolv, gethostbyname)
1785 dnl FIXME replace main with a function we actually want from this library.
1786 AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
1788 dnl Check if pthreads is available.
1789 LIB_PTHREAD=
1790 AC_CHECK_HEADERS(pthread.h)
1791 if test "$ac_cv_header_pthread_h"; then
1792   dnl gmalloc.c uses pthread_atfork, which is not available on older-style
1793   dnl hosts such as MirBSD 10, so test for pthread_atfork instead of merely
1794   dnl testing for pthread_self if Emacs uses gmalloc.c.
1795   if test "$GMALLOC_OBJ" = gmalloc.o; then
1796     emacs_pthread_function=pthread_atfork
1797   else
1798     emacs_pthread_function=pthread_self
1799   fi
1800   AC_CHECK_LIB(pthread, $emacs_pthread_function, HAVE_PTHREAD=yes)
1802 if test "$HAVE_PTHREAD" = yes; then
1803   case "${canonical}" in
1804     *-hpux*) ;;
1805     *) LIB_PTHREAD="-lpthread"
1806        LIBS="$LIB_PTHREAD $LIBS" ;;
1807   esac
1808   AC_DEFINE(HAVE_PTHREAD, 1, [Define to 1 if you have pthread (-lpthread).])
1810 AC_SUBST([LIB_PTHREAD])
1812 AC_CHECK_LIB(pthreads, cma_open)
1814 ## Note: when using cpp in s/aix4.2.h, this definition depended on
1815 ## HAVE_LIBPTHREADS.  That was not defined earlier in configure when
1816 ## the system file was sourced.  Hence the value of LIBS_SYSTEM
1817 ## added to LIBS in configure would never contain the pthreads part,
1818 ## but the value used in Makefiles might.  FIXME?
1820 ## -lpthreads seems to be necessary for Xlib in X11R6, and should
1821 ## be harmless on older versions of X where it happens to exist.
1822 test "$opsys" = "aix4-2" && \
1823   test $ac_cv_lib_pthreads_cma_open = yes && \
1824   LIBS_SYSTEM="$LIBS_SYSTEM -lpthreads"
1826 dnl Check for need for bigtoc support on IBM AIX
1828 case ${host_os} in
1829 aix*)
1830   AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
1831     case $GCC in
1832     yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
1833     *) gdb_cv_bigtoc=-bbigtoc ;;
1834     esac
1836     LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
1837     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int i;]])], [], [gdb_cv_bigtoc=])
1838   ])
1839   ;;
1840 esac
1842 # Change CFLAGS and CPPFLAGS temporarily so that C_SWITCH_X_SITE gets
1843 # used for the tests that follow.  We set them back to REAL_CFLAGS and
1844 # REAL_CPPFLAGS later on.
1846 REAL_CFLAGS="$CFLAGS"
1847 REAL_CPPFLAGS="$CPPFLAGS"
1849 if test "${HAVE_X11}" = "yes"; then
1850   DEFS="$C_SWITCH_X_SITE $DEFS"
1851   LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
1852   LIBS="-lX11 $LIBS"
1853   CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
1854   CPPFLAGS="$C_SWITCH_X_SITE $CPPFLAGS"
1856   # On Solaris, arrange for LD_RUN_PATH to point to the X libraries for tests.
1857   # This is handled by LD_SWITCH_X_SITE_AUX_RPATH during the real build,
1858   # but it's more convenient here to set LD_RUN_PATH since this
1859   # also works on hosts that don't understand LD_SWITCH_X_SITE_AUX_RPATH.
1860   if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
1861     LD_RUN_PATH=$x_libraries${LD_RUN_PATH+:}$LD_RUN_PATH
1862     export LD_RUN_PATH
1863   fi
1865   if test "${opsys}" = "gnu-linux"; then
1866     AC_MSG_CHECKING(whether X on GNU/Linux needs -b to link)
1867     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
1868      [[XOpenDisplay ("foo");]])],
1869      [xgnu_linux_first_failure=no],
1870      [xgnu_linux_first_failure=yes])
1871     if test "${xgnu_linux_first_failure}" = "yes"; then
1872       OLD_LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE"
1873       OLD_C_SWITCH_X_SITE="$C_SWITCH_X_SITE"
1874       OLD_CPPFLAGS="$CPPFLAGS"
1875       OLD_LIBS="$LIBS"
1876       LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
1877       C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
1878       CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
1879       LIBS="$LIBS -b i486-linuxaout"
1880       AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
1881        [[XOpenDisplay ("foo");]])],
1882        [xgnu_linux_second_failure=no],
1883        [xgnu_linux_second_failure=yes])
1884       if test "${xgnu_linux_second_failure}" = "yes"; then
1885         # If we get the same failure with -b, there is no use adding -b.
1886         # So take it out.  This plays safe.
1887         LD_SWITCH_X_SITE="$OLD_LD_SWITCH_X_SITE"
1888         C_SWITCH_X_SITE="$OLD_C_SWITCH_X_SITE"
1889         CPPFLAGS="$OLD_CPPFLAGS"
1890         LIBS="$OLD_LIBS"
1891         AC_MSG_RESULT(no)
1892       else
1893         AC_MSG_RESULT(yes)
1894       fi
1895     else
1896       AC_MSG_RESULT(no)
1897     fi
1898   fi
1900   # Reportedly, some broken Solaris systems have XKBlib.h but are missing
1901   # header files included from there.
1902   AC_MSG_CHECKING(for Xkb)
1903   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>
1904 #include <X11/XKBlib.h>]],
1905         [[XkbDescPtr kb = XkbGetKeyboard (0, XkbAllComponentsMask, XkbUseCoreKbd);]])],
1906         emacs_xkb=yes, emacs_xkb=no)
1907   AC_MSG_RESULT($emacs_xkb)
1908   if test $emacs_xkb = yes; then
1909     AC_DEFINE(HAVE_XKBGETKEYBOARD, 1, [Define to 1 if you have the XkbGetKeyboard function.])
1910   fi
1912   AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
1913 XScreenNumberOfScreen XSetWMProtocols)
1916 if test "${window_system}" = "x11"; then
1917   AC_MSG_CHECKING(X11 version 6)
1918   AC_CACHE_VAL(emacs_cv_x11_version_6,
1919   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]],
1920 [[#if XlibSpecificationRelease < 6
1921 fail;
1922 #endif
1923 ]])], emacs_cv_x11_version_6=yes, emacs_cv_x11_version_6=no)])
1924   if test $emacs_cv_x11_version_6 = yes; then
1925     AC_MSG_RESULT(6 or newer)
1926     AC_DEFINE(HAVE_X11R6, 1,
1927               [Define to 1 if you have the X11R6 or newer version of Xlib.])
1928     AC_DEFINE(HAVE_X_I18N, 1, [Define if you have usable i18n support.])
1929     ## inoue@ainet.or.jp says Solaris has a bug related to X11R6-style
1930     ## XIM support.
1931     case "$opsys" in
1932       sol2-*) : ;;
1933       *) AC_DEFINE(HAVE_X11R6_XIM, 1,
1934            [Define if you have usable X11R6-style XIM support.])
1935          ;;
1936     esac
1937   else
1938     AC_MSG_RESULT(before 6)
1939   fi
1943 ### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
1944 HAVE_RSVG=no
1945 if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes"; then
1946   if test "${with_rsvg}" != "no"; then
1947     RSVG_REQUIRED=2.11.0
1948     RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
1950     PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, HAVE_RSVG=yes, :)
1951     AC_SUBST(RSVG_CFLAGS)
1952     AC_SUBST(RSVG_LIBS)
1954     if test $HAVE_RSVG = yes; then
1955       AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
1956       CFLAGS="$CFLAGS $RSVG_CFLAGS"
1957       LIBS="$RSVG_LIBS $LIBS"
1958     fi
1959   fi
1962 HAVE_IMAGEMAGICK=no
1963 if test "${HAVE_X11}" = "yes"; then
1964   if test "${with_imagemagick}" != "no"; then
1965     ## 6.2.8 is the earliest version known to work, but earlier versions
1966     ## might work - let us know if you find one.
1967     ## 6.0.7 does not work.  See bug#7955.
1968     IMAGEMAGICK_MODULE="Wand >= 6.2.8"
1969     PKG_CHECK_MODULES(IMAGEMAGICK, $IMAGEMAGICK_MODULE, HAVE_IMAGEMAGICK=yes, :)
1970     AC_SUBST(IMAGEMAGICK_CFLAGS)
1971     AC_SUBST(IMAGEMAGICK_LIBS)
1973     if test $HAVE_IMAGEMAGICK = yes; then
1974       AC_DEFINE(HAVE_IMAGEMAGICK, 1, [Define to 1 if using imagemagick.])
1975       CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
1976       LIBS="$IMAGEMAGICK_LIBS $LIBS"
1977       AC_CHECK_FUNCS(MagickExportImagePixels)
1978     fi
1979   fi
1983 HAVE_GTK=no
1984 GTK_OBJ=
1985 if test "${with_gtk3}" = "yes"; then
1986   GLIB_REQUIRED=2.28
1987   GTK_REQUIRED=3.0
1988   GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
1990   dnl Checks for libraries.
1991   PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
1992   if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
1993      AC_MSG_ERROR($GTK_PKG_ERRORS)
1994   fi
1995   AC_DEFINE(HAVE_GTK3, 1, [Define to 1 if using GTK 3 or later.])
1996   GTK_OBJ=emacsgtkfixed.o
1999 if test "$pkg_check_gtk" != "yes"; then
2000   HAVE_GTK=no
2001 if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
2002   GLIB_REQUIRED=2.10
2003   GTK_REQUIRED=2.10
2004   GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
2006   dnl Checks for libraries.
2007   PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
2008   if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
2009      AC_MSG_ERROR($GTK_PKG_ERRORS)
2010   fi
2014 if test x"$pkg_check_gtk" = xyes; then
2016   AC_SUBST(GTK_CFLAGS)
2017   AC_SUBST(GTK_LIBS)
2018   C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
2019   CFLAGS="$CFLAGS $GTK_CFLAGS"
2020   LIBS="$GTK_LIBS $LIBS"
2021   dnl Try to compile a simple GTK program.
2022   GTK_COMPILES=no
2023   AC_CHECK_FUNCS(gtk_main, GTK_COMPILES=yes)
2024   if test "${GTK_COMPILES}" != "yes"; then
2025     if test "$USE_X_TOOLKIT" != "maybe"; then
2026       AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?]);
2027     fi
2028   else
2029     HAVE_GTK=yes
2030     AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
2031     GTK_OBJ="gtkutil.o $GTK_OBJ"
2032     USE_X_TOOLKIT=none
2033     if $PKG_CONFIG --atleast-version=2.10 gtk+-2.0; then
2034       :
2035     else
2036       AC_MSG_WARN([[Your version of Gtk+ will have problems with
2037        closing open displays.  This is no problem if you just use
2038        one display, but if you use more than one and close one of them
2039        Emacs may crash.]])
2040       sleep 3
2041     fi
2042   fi
2045 AC_SUBST(GTK_OBJ)
2048 if test "${HAVE_GTK}" = "yes"; then
2050   dnl  GTK scrollbars resemble toolkit scrollbars a lot, so to avoid
2051   dnl  a lot if #ifdef:s, say we have toolkit scrollbars.
2052   if test "$with_toolkit_scroll_bars" != no; then
2053     with_toolkit_scroll_bars=yes
2054   fi
2056   dnl  Check if we have the old file selection dialog declared and
2057   dnl  in the link library.  In 2.x it may be in the library,
2058   dnl  but not declared if deprecated featured has been selected out.
2059   dnl  AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION.
2060   HAVE_GTK_FILE_SELECTION=no
2061   AC_CHECK_DECL(GTK_TYPE_FILE_SELECTION, HAVE_GTK_FILE_SELECTION=yes,
2062                    HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT
2063 #include <gtk/gtk.h>])
2064   if test "$HAVE_GTK_FILE_SELECTION" = yes; then
2065     AC_CHECK_FUNCS(gtk_file_selection_new)
2066   fi
2069   dnl Check for functions introduced in 2.14 and later.
2070   AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \
2071                  gtk_dialog_get_action_area gtk_widget_get_sensitive \
2072                  gtk_widget_get_mapped gtk_adjustment_get_page_size \
2073                  gtk_orientable_set_orientation \
2074                  gtk_window_set_has_resize_grip)
2077 dnl D-Bus has been tested under GNU/Linux only.  Must be adapted for
2078 dnl other platforms.
2079 HAVE_DBUS=no
2080 DBUS_OBJ=
2081 if test "${with_dbus}" = "yes"; then
2082    PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0, HAVE_DBUS=yes, HAVE_DBUS=no)
2083    if test "$HAVE_DBUS" = yes; then
2084      LIBS="$LIBS $DBUS_LIBS"
2085      AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
2086      dnl dbus_watch_get_unix_fd has been introduced in D-Bus 1.1.1.
2087      dnl dbus_validate_* have been introduced in D-Bus 1.5.12.
2088      AC_CHECK_FUNCS(dbus_watch_get_unix_fd \
2089                     dbus_validate_bus_name \
2090                     dbus_validate_path \
2091                     dbus_validate_interface \
2092                     dbus_validate_member)
2093      DBUS_OBJ=dbusbind.o
2094    fi
2096 AC_SUBST(DBUS_OBJ)
2098 dnl GSettings has been tested under GNU/Linux only.
2099 HAVE_GSETTINGS=no
2100 if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then
2101    PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.26, HAVE_GSETTINGS=yes, HAVE_GSETTINGS=no)
2102    if test "$HAVE_GSETTINGS" = "yes"; then
2103       AC_DEFINE(HAVE_GSETTINGS, 1, [Define to 1 if using GSettings.])
2104       SETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
2105       SETTINGS_LIBS="$GSETTINGS_LIBS"
2106    fi
2109 dnl GConf has been tested under GNU/Linux only.
2110 dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
2111 HAVE_GCONF=no
2112 if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
2113    PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
2114    if test "$HAVE_GCONF" = yes; then
2115       AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
2116       dnl Newer GConf doesn't link with g_objects, so this is not defined.
2117       SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GCONF_CFLAGS"
2118       SETTINGS_LIBS="$SETTINGS_LIBS $GCONF_LIBS"
2119    fi
2122 if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then
2123     SAVE_CFLAGS="$CFLAGS"
2124     SAVE_LIBS="$LIBS"
2125     CFLAGS="$SETTINGS_CFLAGS $CFLAGS"
2126     LIBS="$SETTINGS_LIBS $LIBS"
2127     AC_CHECK_FUNCS([g_type_init])
2128     CFLAGS="$SAVE_CFLAGS"
2129     LIBS="$SAVE_LIBS"
2131 AC_SUBST(SETTINGS_CFLAGS)
2132 AC_SUBST(SETTINGS_LIBS)
2135 dnl SELinux is available for GNU/Linux only.
2136 HAVE_LIBSELINUX=no
2137 LIBSELINUX_LIBS=
2138 if test "${with_selinux}" = "yes"; then
2139    AC_CHECK_LIB([selinux], [lgetfilecon], HAVE_LIBSELINUX=yes, HAVE_LIBSELINUX=no)
2140    if test "$HAVE_LIBSELINUX" = yes; then
2141       AC_DEFINE(HAVE_LIBSELINUX, 1, [Define to 1 if using SELinux.])
2142       LIBSELINUX_LIBS=-lselinux
2143    fi
2145 AC_SUBST(LIBSELINUX_LIBS)
2147 HAVE_GNUTLS=no
2148 HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY=no
2149 if test "${with_gnutls}" = "yes" ; then
2150   PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no)
2151   if test "${HAVE_GNUTLS}" = "yes"; then
2152     AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
2153   fi
2155   CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
2156   LIBS="$LIBGNUTLS_LIBS $LIBS"
2157   AC_CHECK_FUNCS(gnutls_certificate_set_verify_function, HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY=yes)
2159   if test "${HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY}" = "yes"; then
2160     AC_DEFINE(HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY, 1, [Define if using GnuTLS certificate verification callbacks.])
2161   fi
2164 AC_SUBST(LIBGNUTLS_LIBS)
2165 AC_SUBST(LIBGNUTLS_CFLAGS)
2167 dnl Do not put whitespace before the #include statements below.
2168 dnl Older compilers (eg sunos4 cc) choke on it.
2169 HAVE_XAW3D=no
2170 LUCID_LIBW=
2171 if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
2172   if test "$with_xaw3d" != no; then
2173     AC_MSG_CHECKING(for xaw3d)
2174     AC_CACHE_VAL(emacs_cv_xaw3d,
2175     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2176 #include <X11/Intrinsic.h>
2177 #include <X11/Xaw3d/Simple.h>]],
2178       [[]])],
2179       [AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb,
2180                     emacs_cv_xaw3d=yes, emacs_cv_xaw3d=no)],
2181       emacs_cv_xaw3d=no)])
2182   else
2183     emacs_cv_xaw3d=no
2184   fi
2185   if test $emacs_cv_xaw3d = yes; then
2186     AC_MSG_RESULT([yes; using Lucid toolkit])
2187     USE_X_TOOLKIT=LUCID
2188     HAVE_XAW3D=yes
2189     LUCID_LIBW=-lXaw3d
2190     AC_DEFINE(HAVE_XAW3D, 1,
2191               [Define to 1 if you have the Xaw3d library (-lXaw3d).])
2192   else
2193     AC_MSG_RESULT(no)
2194     AC_MSG_CHECKING(for libXaw)
2195     AC_CACHE_VAL(emacs_cv_xaw,
2196     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2197 #include <X11/Intrinsic.h>
2198 #include <X11/Xaw/Simple.h>]],
2199       [[]])],
2200       emacs_cv_xaw=yes,
2201       emacs_cv_xaw=no)])
2202     if test $emacs_cv_xaw = yes; then
2203       AC_MSG_RESULT([yes; using Lucid toolkit])
2204       USE_X_TOOLKIT=LUCID
2205       LUCID_LIBW=-lXaw
2206     elif test x"${USE_X_TOOLKIT}" = xLUCID; then
2207       AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
2208     else
2209       AC_MSG_ERROR([No X toolkit could be found.
2210 If you are sure you want Emacs compiled without an X toolkit, pass
2211   --with-x-toolkit=no
2212 to configure.  Otherwise, install the development libraries for the toolkit
2213 that you want to use (e.g. Gtk+) and re-run configure.])
2214     fi
2215   fi
2218 X_TOOLKIT_TYPE=$USE_X_TOOLKIT
2220 LIBXTR6=
2221 if test "${USE_X_TOOLKIT}" != "none"; then
2222   AC_MSG_CHECKING(X11 toolkit version)
2223   AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
2224   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Intrinsic.h>]],
2225 [[#if XtSpecificationRelease < 6
2226 fail;
2227 #endif
2228 ]])], emacs_cv_x11_toolkit_version_6=yes, emacs_cv_x11_toolkit_version_6=no)])
2229   HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6
2230   if test $emacs_cv_x11_toolkit_version_6 = yes; then
2231     AC_MSG_RESULT(6 or newer)
2232     AC_DEFINE(HAVE_X11XTR6, 1,
2233               [Define to 1 if you have the X11R6 or newer version of Xt.])
2234     LIBXTR6="-lSM -lICE"
2235     case "$opsys" in
2236       ## Use libw.a along with X11R6 Xt.
2237       unixware) LIBXTR6="$LIBXTR6 -lw" ;;
2238     esac
2239   else
2240     AC_MSG_RESULT(before 6)
2241   fi
2243 dnl If using toolkit, check whether libXmu.a exists.
2244 dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
2245   OLDLIBS="$LIBS"
2246   if test x$HAVE_X11XTR6 = xyes; then
2247     LIBS="-lXt -lSM -lICE $LIBS"
2248   else
2249     LIBS="-lXt $LIBS"
2250   fi
2251   AC_CHECK_LIB(Xmu, XmuConvertStandardSelection)
2252   test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS"
2254 AC_SUBST(LIBXTR6)
2256 dnl FIXME the logic here seems weird, but this is what cpp was doing.
2257 dnl Why not just test for libxmu in the normal way?
2258 LIBXMU=-lXmu
2259 case $opsys in
2260   ## These systems don't supply Xmu.
2261   hpux* | aix4-2 )
2262     test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
2263     ;;
2264 esac
2265 AC_SUBST(LIBXMU)
2267 # On Irix 6.5, at least, we need XShapeQueryExtension from -lXext for Xaw3D.
2268 if test "${HAVE_X11}" = "yes"; then
2269   if test "${USE_X_TOOLKIT}" != "none"; then
2270     AC_CHECK_LIB(Xext, XShapeQueryExtension)
2271   fi
2274 LIBXP=
2275 if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2276   AC_CACHE_CHECK(for Motif version 2.1, emacs_cv_motif_version_2_1,
2277   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <Xm/Xm.h>]],
2278     [[#if XmVERSION > 2 || (XmVERSION == 2 && XmREVISION >= 1)
2279 int x = 5;
2280 #else
2281 Motif version prior to 2.1.
2282 #endif]])],
2283     emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)])
2284   if test $emacs_cv_motif_version_2_1 = yes; then
2285     AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp)
2286   else
2287     AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif,
2288     # We put this in CFLAGS temporarily to precede other -I options
2289     # that might be in CFLAGS temporarily.
2290     # We put this in CPPFLAGS where it precedes the other -I options.
2291     OLD_CPPFLAGS=$CPPFLAGS
2292     OLD_CFLAGS=$CFLAGS
2293     CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CPPFLAGS"
2294     CFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CFLAGS"
2295     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include </usr/X11R6/LessTif/Motif1.2/include/Xm/Xm.h>]],
2296       [[int x = 5;]])],
2297       emacs_cv_lesstif=yes, emacs_cv_lesstif=no)])
2298     if test $emacs_cv_lesstif = yes; then
2299       # Make sure this -I option remains in CPPFLAGS after it is set
2300       # back to REAL_CPPFLAGS.
2301       # There is no need to change REAL_CFLAGS, because REAL_CFLAGS does not
2302       # have those other -I options anyway.  Ultimately, having this
2303       # directory ultimately in CPPFLAGS will be enough.
2304       REAL_CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $REAL_CPPFLAGS"
2305       LDFLAGS="-L/usr/X11R6/LessTif/Motif1.2/lib $LDFLAGS"
2306     else
2307       CFLAGS=$OLD_CFLAGS
2308       CPPFLAGS=$OLD_CPPFLAGS
2309     fi
2310   fi
2311   AC_CHECK_HEADER([Xm/BulletinB.h], [],
2312     [AC_MSG_ERROR([Motif toolkit requested but requirements not found.])])
2315 dnl Use toolkit scroll bars if configured for GTK or X toolkit and either
2316 dnl using Motif or Xaw3d is available, and unless
2317 dnl --with-toolkit-scroll-bars=no was specified.
2319 AH_TEMPLATE(USE_TOOLKIT_SCROLL_BARS,
2320             [Define to 1 if we should use toolkit scroll bars.])dnl
2321 USE_TOOLKIT_SCROLL_BARS=no
2322 if test "${with_toolkit_scroll_bars}" != "no"; then
2323   if test "${USE_X_TOOLKIT}" != "none"; then
2324     if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2325       AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2326       HAVE_XAW3D=no
2327       USE_TOOLKIT_SCROLL_BARS=yes
2328     elif test "${HAVE_XAW3D}" = "yes" || test "${USE_X_TOOLKIT}" = "LUCID"; then
2329       AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2330       USE_TOOLKIT_SCROLL_BARS=yes
2331     fi
2332   elif test "${HAVE_GTK}" = "yes"; then
2333     AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2334     USE_TOOLKIT_SCROLL_BARS=yes
2335   elif test "${HAVE_NS}" = "yes"; then
2336     AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2337     USE_TOOLKIT_SCROLL_BARS=yes
2338   fi
2341 dnl See if XIM is available.
2342 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2343           #include <X11/Xlib.h>
2344           #include <X11/Xresource.h>]],
2345          [[XIMProc  callback;]])],
2346          [HAVE_XIM=yes
2347          AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
2348          HAVE_XIM=no)
2350 dnl `--with-xim' now controls only the initial value of use_xim at run time.
2352 if test "${with_xim}" != "no"; then
2353   AC_DEFINE(USE_XIM, 1,
2354             [Define to 1 if we should use XIM, if it is available.])
2358 if test "${HAVE_XIM}" != "no"; then
2359   late_CFLAGS=$CFLAGS
2360   if test "$GCC" = yes; then
2361     CFLAGS="$CFLAGS --pedantic-errors"
2362   fi
2363   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2364 #include <X11/Xlib.h>
2365 #include <X11/Xresource.h>]],
2366 [[Display *display;
2367 XrmDatabase db;
2368 char *res_name;
2369 char *res_class;
2370 XIMProc  callback;
2371 XPointer *client_data;
2372 #ifndef __GNUC__
2373 /* If we're not using GCC, it's probably not XFree86, and this is
2374    probably right, but we can't use something like --pedantic-errors.  */
2375 extern Bool XRegisterIMInstantiateCallback(Display*, XrmDatabase, char*,
2376                                            char*, XIMProc, XPointer*);
2377 #endif
2378 (void)XRegisterIMInstantiateCallback(display, db, res_name, res_class, callback,
2379    client_data);]])],
2380     [emacs_cv_arg6_star=yes])
2381   AH_TEMPLATE(XRegisterIMInstantiateCallback_arg6,
2382          [Define to the type of the 6th arg of XRegisterIMInstantiateCallback,
2383 either XPointer or XPointer*.])dnl
2384   if test "$emacs_cv_arg6_star" = yes; then
2385     AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer*])
2386   else
2387     AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer])
2388   fi
2389   CFLAGS=$late_CFLAGS
2392 ### Start of font-backend (under any platform) section.
2393 # (nothing here yet -- this is a placeholder)
2394 ### End of font-backend (under any platform) section.
2396 ### Start of font-backend (under X11) section.
2397 if test "${HAVE_X11}" = "yes"; then
2398    PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2.0, HAVE_FC=yes, HAVE_FC=no)
2400    ## Use -lXft if available, unless `--with-xft=no'.
2401    HAVE_XFT=maybe
2402     if test "${HAVE_FC}" = "no" || test "x${with_x}" = "xno"; then
2403       with_xft="no";
2404     fi
2405     if test "x${with_xft}" != "xno"; then
2407       PKG_CHECK_MODULES(XFT, xft >= 0.13.0, , HAVE_XFT=no)
2408       ## Because xftfont.c uses XRenderQueryExtension, we also
2409       ## need to link to -lXrender.
2410       HAVE_XRENDER=no
2411       AC_CHECK_LIB(Xrender, XRenderQueryExtension, HAVE_XRENDER=yes)
2412       if test "$HAVE_XFT" != no && test "$HAVE_XRENDER" != no; then
2413         OLD_CPPFLAGS="$CPPFLAGS"
2414         OLD_CFLAGS="$CFLAGS"
2415         OLD_LIBS="$LIBS"
2416         CPPFLAGS="$CPPFLAGS $XFT_CFLAGS"
2417         CFLAGS="$CFLAGS $XFT_CFLAGS"
2418         XFT_LIBS="-lXrender $XFT_LIBS"
2419         LIBS="$XFT_LIBS $LIBS"
2420         AC_CHECK_HEADER(X11/Xft/Xft.h,
2421           AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS))
2423         if test "${HAVE_XFT}" = "yes"; then
2424           AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
2425             AC_SUBST(XFT_LIBS)
2426           C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
2427         else
2428           CPPFLAGS="$OLD_CPPFLAGS"
2429           CFLAGS="$OLD_CFLAGS"
2430           LIBS="$OLD_LIBS"
2431         fi                        # "${HAVE_XFT}" = "yes"
2432       fi                          # "$HAVE_XFT" != no
2433     fi                            # "x${with_xft}" != "xno"
2435     ## We used to allow building with FreeType and without Xft.
2436     ## However, the ftx font backend driver is not in good shape.
2437     if test "$HAVE_XFT" != "yes"; then
2438        dnl For the "Does Emacs use" message at the end.
2439        HAVE_XFT=no
2440        HAVE_FREETYPE=no
2441     else
2442        dnl Strict linkers fail with
2443        dnl ftfont.o: undefined reference to symbol 'FT_New_Face'
2444        dnl if -lfreetype is not specified.
2445        dnl The following is needed to set FREETYPE_LIBS.
2446        PKG_CHECK_MODULES(FREETYPE, freetype2, HAVE_FREETYPE=yes,
2447                          HAVE_FREETYPE=no)
2449        test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype)
2450     fi
2452     HAVE_LIBOTF=no
2453     if test "${HAVE_FREETYPE}" = "yes"; then
2454       AC_DEFINE(HAVE_FREETYPE, 1,
2455                 [Define to 1 if using the freetype and fontconfig libraries.])
2456       if test "${with_libotf}" != "no"; then
2457         PKG_CHECK_MODULES(LIBOTF, libotf, HAVE_LIBOTF=yes,
2458                           HAVE_LIBOTF=no)
2459         if test "$HAVE_LIBOTF" = "yes"; then
2460           AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.])
2461           AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
2462                        HAVE_OTF_GET_VARIATION_GLYPHS=yes,
2463                        HAVE_OTF_GET_VARIATION_GLYPHS=no)
2464           if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
2465             AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1,
2466                       [Define to 1 if libotf has OTF_get_variation_glyphs.])
2467           fi
2468         fi
2469       fi
2470     dnl FIXME should there be an error if HAVE_FREETYPE != yes?
2471     dnl Does the new font backend require it, or can it work without it?
2472     fi
2474     HAVE_M17N_FLT=no
2475     if test "${HAVE_LIBOTF}" = yes; then
2476       if test "${with_m17n_flt}" != "no"; then
2477         PKG_CHECK_MODULES(M17N_FLT, m17n-flt, HAVE_M17N_FLT=yes, HAVE_M17N_FLT=no)
2478         if test "$HAVE_M17N_FLT" = "yes"; then
2479           AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
2480         fi
2481       fi
2482     fi
2483 else
2484     HAVE_XFT=no
2485     HAVE_FREETYPE=no
2486     HAVE_LIBOTF=no
2487     HAVE_M17N_FLT=no
2490 ### End of font-backend (under X11) section.
2492 AC_SUBST(FREETYPE_CFLAGS)
2493 AC_SUBST(FREETYPE_LIBS)
2494 AC_SUBST(FONTCONFIG_CFLAGS)
2495 AC_SUBST(FONTCONFIG_LIBS)
2496 AC_SUBST(LIBOTF_CFLAGS)
2497 AC_SUBST(LIBOTF_LIBS)
2498 AC_SUBST(M17N_FLT_CFLAGS)
2499 AC_SUBST(M17N_FLT_LIBS)
2501 ### Use -lXpm if available, unless `--with-xpm=no'.
2502 HAVE_XPM=no
2503 LIBXPM=
2504 if test "${HAVE_X11}" = "yes"; then
2505   if test "${with_xpm}" != "no"; then
2506     AC_CHECK_HEADER(X11/xpm.h,
2507       [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
2508     if test "${HAVE_XPM}" = "yes"; then
2509       AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
2510       AC_EGREP_CPP(no_return_alloc_pixels,
2511       [#include "X11/xpm.h"
2512 #ifndef XpmReturnAllocPixels
2513 no_return_alloc_pixels
2514 #endif
2515       ], HAVE_XPM=no, HAVE_XPM=yes)
2517       if test "${HAVE_XPM}" = "yes"; then
2518         AC_MSG_RESULT(yes)
2519       else
2520         AC_MSG_RESULT(no)
2521       fi
2522     fi
2523   fi
2525   if test "${HAVE_XPM}" = "yes"; then
2526     AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
2527     LIBXPM=-lXpm
2528   fi
2530 AC_SUBST(LIBXPM)
2532 ### Use -ljpeg if available, unless `--with-jpeg=no'.
2533 HAVE_JPEG=no
2534 LIBJPEG=
2535 if test "${HAVE_X11}" = "yes"; then
2536   if test "${with_jpeg}" != "no"; then
2537     dnl Checking for jpeglib.h can lose because of a redefinition of
2538     dnl  HAVE_STDLIB_H.
2539     AC_CHECK_HEADER(jerror.h,
2540       [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
2541   fi
2543   AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
2544   if test "${HAVE_JPEG}" = "yes"; then
2545     AC_DEFINE(HAVE_JPEG)
2546     AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
2547         [#include <jpeglib.h>
2548          version=JPEG_LIB_VERSION
2550         [AC_DEFINE(HAVE_JPEG)],
2551         [AC_MSG_WARN([libjpeg found, but not version 6b or later])
2552         HAVE_JPEG=no])
2553   fi
2554   if test "${HAVE_JPEG}" = "yes"; then
2555     LIBJPEG=-ljpeg
2556   fi
2558 AC_SUBST(LIBJPEG)
2560 ### Use -lpng if available, unless `--with-png=no'.
2561 HAVE_PNG=no
2562 LIBPNG=
2563 if test "${HAVE_X11}" = "yes"; then
2564   if test "${with_png}" != "no"; then
2565     # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
2566     # in /usr/include/libpng.
2567     AC_CHECK_HEADERS(png.h libpng/png.h)
2568     if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
2569       AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm)
2570     fi
2571   fi
2573   if test "${HAVE_PNG}" = "yes"; then
2574     AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
2575     LIBPNG="-lpng -lz -lm"
2576   fi
2578 AC_SUBST(LIBPNG)
2580 ### Use -ltiff if available, unless `--with-tiff=no'.
2581 HAVE_TIFF=no
2582 LIBTIFF=
2583 if test "${HAVE_X11}" = "yes"; then
2584   if test "${with_tiff}" != "no"; then
2585     AC_CHECK_HEADER(tiffio.h,
2586       [tifflibs="-lz -lm"
2587       # At least one tiff package requires the jpeg library.
2588       if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
2589       AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)])
2590   fi
2592   if test "${HAVE_TIFF}" = "yes"; then
2593     AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
2594     dnl FIXME -lz -lm, as per libpng?
2595     LIBTIFF=-ltiff
2596   fi
2598 AC_SUBST(LIBTIFF)
2600 ### Use -lgif or -lungif if available, unless `--with-gif=no'.
2601 HAVE_GIF=no
2602 LIBGIF=
2603 if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no"; then
2604   AC_CHECK_HEADER(gif_lib.h,
2605 # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
2606 # Earlier versions can crash Emacs.
2607     [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])
2609   if test "$HAVE_GIF" = yes; then
2610     LIBGIF=-lgif
2611   elif test "$HAVE_GIF" = maybe; then
2612 # If gif_lib.h but no libgif, try libungif.
2613     AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no)
2614     test "$HAVE_GIF" = yes && LIBGIF=-lungif
2615   fi
2617   if test "${HAVE_GIF}" = "yes"; then
2618     AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
2619   fi
2621 AC_SUBST(LIBGIF)
2623 dnl Check for required libraries.
2624 if test "${HAVE_X11}" = "yes"; then
2625   MISSING=""
2626   WITH_NO=""
2627   test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
2628     MISSING="libXpm" && WITH_NO="--with-xpm=no"
2629   test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
2630     MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
2631   test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
2632     MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
2633   test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
2634     MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
2635   test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
2636     MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
2638   if test "X${MISSING}" != X; then
2639     AC_MSG_ERROR([The following required libraries were not found:
2640     $MISSING
2641 Maybe some development libraries/packages are missing?
2642 If you don't want to link with them give
2643     $WITH_NO
2644 as options to configure])
2645   fi
2648 ### Use -lgpm if available, unless `--with-gpm=no'.
2649 HAVE_GPM=no
2650 LIBGPM=
2651 if test "${with_gpm}" != "no"; then
2652   AC_CHECK_HEADER(gpm.h,
2653     [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
2655   if test "${HAVE_GPM}" = "yes"; then
2656     AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
2657     LIBGPM=-lgpm
2658   fi
2660 AC_SUBST(LIBGPM)
2662 dnl Check for malloc/malloc.h on darwin
2663 AC_CHECK_HEADER(malloc/malloc.h, [AC_DEFINE(HAVE_MALLOC_MALLOC_H, 1, [Define to 1 if you have the <malloc/malloc.h> header file.])])
2665 GNUSTEP_CFLAGS=
2666 ### Use NeXTstep API to implement GUI.
2667 if test "${HAVE_NS}" = "yes"; then
2668   AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.])
2669   if test "${NS_IMPL_COCOA}" = "yes"; then
2670     AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under MacOS X.])
2671   fi
2672   if test "${NS_IMPL_GNUSTEP}" = "yes"; then
2673     AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
2674     # See also .m.o rule in Makefile.in */
2675     # FIXME: are all these flags really needed?  Document here why.  */
2676     GNUSTEP_CFLAGS="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
2677     ## Extra CFLAGS applied to src/*.m files.
2678     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"
2679   fi
2680   # We also have mouse menus.
2681   HAVE_MENUS=yes
2682   OTHER_FILES=ns-app
2686 ### Use session management (-lSM -lICE) if available
2687 HAVE_X_SM=no
2688 LIBXSM=
2689 if test "${HAVE_X11}" = "yes"; then
2690   AC_CHECK_HEADER(X11/SM/SMlib.h,
2691     [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
2693   if test "${HAVE_X_SM}" = "yes"; then
2694     AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
2695     LIBXSM="-lSM -lICE"
2696     case "$LIBS" in
2697       *-lSM*) ;;
2698       *)      LIBS="$LIBXSM $LIBS" ;;
2699     esac
2700   fi
2702 AC_SUBST(LIBXSM)
2704 ### Use libxml (-lxml2) if available
2705 HAVE_LIBXML2=no
2706 if test "${with_xml2}" != "no"; then
2707   ### I'm not sure what the version number should be, so I just guessed.
2708   PKG_CHECK_MODULES(LIBXML2, libxml-2.0 > 2.6.17, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
2709   if test "${HAVE_LIBXML2}" = "yes"; then
2710     LIBS="$LIBXML2_LIBS $LIBS"
2711     AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
2712     if test "${HAVE_LIBXML2}" = "yes"; then
2713       AC_DEFINE(HAVE_LIBXML2, 1, [Define to 1 if you have the libxml library (-lxml2).])
2714     else
2715       LIBXML2_LIBS=""
2716       LIBXML2_CFLAGS=""
2717     fi
2718   fi
2720 AC_SUBST(LIBXML2_LIBS)
2721 AC_SUBST(LIBXML2_CFLAGS)
2723 # If netdb.h doesn't declare h_errno, we must declare it by hand.
2724 AC_CACHE_CHECK(whether netdb declares h_errno,
2725                emacs_cv_netdb_declares_h_errno,
2726 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
2727   [[return h_errno;]])],
2728   emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
2729 if test $emacs_cv_netdb_declares_h_errno = yes; then
2730   AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
2733 # fmod, logb, and frexp are found in -lm on most systems.
2734 # On HPUX 9.01, -lm does not contain logb, so check for sqrt.
2735 AC_CHECK_LIB(m, sqrt)
2737 # Check for mail-locking functions in a "mail" library.  Probably this should
2738 # have the same check as for liblockfile below.
2739 AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
2740 if test $have_mail = yes; then
2741   LIBS_MAIL=-lmail
2742   LIBS="$LIBS_MAIL $LIBS"
2743   AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library (-lmail).])
2744 else
2745   LIBS_MAIL=
2747 dnl Debian, at least:
2748 AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
2749 if test $have_lockfile = yes; then
2750    LIBS_MAIL=-llockfile
2751    LIBS="$LIBS_MAIL $LIBS"
2752    AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' library (-llockfile).])
2753 else
2754 # If we have the shared liblockfile, assume we must use it for mail
2755 # locking (e.g. Debian).  If we couldn't link against liblockfile
2756 # (no liblockfile.a installed), ensure that we don't need to.
2757   dnl This works for files generally, not just executables.
2758   dnl Should we look elsewhere for it?  Maybe examine /etc/ld.so.conf?
2759   AC_CHECK_PROG(liblockfile, liblockfile.so, yes, no,
2760                 /usr/lib:/lib:/usr/local/lib:$LD_LIBRARY_PATH)
2761   if test $ac_cv_prog_liblockfile = yes; then
2762     AC_MSG_ERROR([Shared liblockfile found but can't link against it.
2763 This probably means that movemail could lose mail.
2764 There may be a `development' package to install containing liblockfile.])
2765   fi
2767 AC_CHECK_FUNCS(touchlock)
2768 AC_CHECK_HEADERS(maillock.h)
2769 AC_SUBST(LIBS_MAIL)
2771 ## Define MAIL_USE_FLOCK (or LOCKF) if the mailer uses flock (or lockf) to
2772 ## interlock access to the mail spool.  The alternative is a lock file named
2773 ## /usr/spool/mail/$USER.lock.
2774 mail_lock=no
2775 case "$opsys" in
2776   aix4-2) mail_lock="lockf" ;;
2778   gnu|freebsd|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
2780   ## On GNU/Linux systems, both methods are used by various mail programs.
2781   ## I assume most people are using newer mailers that have heard of flock.
2782   ## Change this if you need to.
2783   ## Debian contains a patch which says: ``On Debian/GNU/Linux systems,
2784   ## configure gets the right answers, and that means *NOT* using flock.
2785   ## Using flock is guaranteed to be the wrong thing. See Debian Policy
2786   ## for details.'' and then uses `#ifdef DEBIAN'.  Unfortunately the
2787   ## Debian maintainer hasn't provided a clean fix for Emacs.
2788   ## movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
2789   ## HAVE_MAILLOCK_H are defined, so the following appears to be the
2790   ## correct logic.  -- fx
2791   ## We must check for HAVE_LIBLOCKFILE too, as movemail does.
2792   ## liblockfile is a Free Software replacement for libmail, used on
2793   ## Debian systems and elsewhere. -rfr.
2794   gnu-*)
2795     mail_lock="flock"
2796     if test $have_mail = yes || test $have_lockfile = yes; then
2797       test $ac_cv_header_maillock_h = yes && mail_lock=no
2798     fi
2799     ;;
2800 esac
2802 BLESSMAIL_TARGET=
2803 case "$mail_lock" in
2804   flock) AC_DEFINE(MAIL_USE_FLOCK, 1, [Define if the mailer uses flock to interlock the mail spool.]) ;;
2806   lockf) AC_DEFINE(MAIL_USE_LOCKF, 1, [Define if the mailer uses lockf to interlock the mail spool.]) ;;
2808   *) BLESSMAIL_TARGET="need-blessmail" ;;
2809 esac
2810 AC_SUBST(BLESSMAIL_TARGET)
2813 AC_CHECK_FUNCS(gethostname getdomainname \
2814 rename closedir mkdir rmdir sysinfo getrusage get_current_dir_name \
2815 random lrand48 logb frexp fmod rint cbrt ftime setsid \
2816 strerror fpathconf select euidaccess getpagesize tzset setlocale \
2817 utimes getrlimit setrlimit setpgid getcwd getwd shutdown getaddrinfo \
2818 __fpending mblen mbrlen mbsinit strsignal setitimer ualarm \
2819 sendto recvfrom getsockopt setsockopt getsockname getpeername \
2820 gai_strerror mkstemp getline getdelim mremap fsync sync \
2821 difftime mempcpy mblen mbrlen posix_memalign \
2822 getpwent endpwent getgrent endgrent \
2823 cfmakeraw cfsetspeed copysign __executable_start)
2825 dnl Cannot use AC_CHECK_FUNCS
2826 AC_CACHE_CHECK([for __builtin_unwind_init],
2827                emacs_cv_func___builtin_unwind_init,
2828 [AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_unwind_init ();])],
2829                 emacs_cv_func___builtin_unwind_init=yes,
2830                 emacs_cv_func___builtin_unwind_init=no)])
2831 if test $emacs_cv_func___builtin_unwind_init = yes; then
2832   AC_DEFINE(HAVE___BUILTIN_UNWIND_INIT, 1,
2833             [Define to 1 if you have the `__builtin_unwind_init' function.])
2836 AC_CHECK_HEADERS(sys/un.h)
2838 AC_FUNC_FSEEKO
2840 AC_FUNC_GETPGRP
2842 # UNIX98 PTYs.
2843 AC_CHECK_FUNCS(grantpt)
2845 # PTY-related GNU extensions.
2846 AC_CHECK_FUNCS(getpt)
2848 # Check this now, so that we will NOT find the above functions in ncurses.
2849 # That is because we have not set up to link ncurses in lib-src.
2850 # It's better to believe a function is not available
2851 # than to expect to find it in ncurses.
2852 # Also we need tputs and friends to be able to build at all.
2853 AC_MSG_CHECKING([for library containing tputs])
2854 # Run a test program that contains a call to tputs, a call that is
2855 # never executed.  This tests whether a pre-'main' dynamic linker
2856 # works with the library.  It's too much trouble to actually call
2857 # tputs in the test program, due to portability hassles.  When
2858 # cross-compiling, assume the test program will run if it links.
2859 AC_DEFUN([tputs_link_source], [
2860   AC_LANG_SOURCE(
2861      [[extern void tputs (const char *, int, int (*)(int));
2862        int main (int argc, char **argv)
2863        {
2864           if (argc == 10000)
2865             tputs (argv[0], 0, 0);
2866           return 0;
2867        }]])
2869 # Maybe curses should be tried earlier?
2870 # See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9736#35
2871 for tputs_library in '' ncurses terminfo termcap curses; do
2872   OLIBS=$LIBS
2873   if test -z "$tputs_library"; then
2874     LIBS_TERMCAP=
2875     msg='none required'
2876   else
2877     LIBS_TERMCAP=-l$tputs_library
2878     msg=$LIBS_TERMCAP
2879     LIBS="$LIBS_TERMCAP $LIBS"
2880   fi
2881   AC_RUN_IFELSE([tputs_link_source], [], [msg=no],
2882     [AC_LINK_IFELSE([tputs_link_source], [], [msg=no])])
2883   LIBS=$OLIBS
2884   if test "X$msg" != Xno; then
2885     break
2886   fi
2887 done
2888 AC_MSG_RESULT([$msg])
2889 if test "X$msg" = Xno; then
2890   AC_MSG_ERROR([The required function `tputs' was not found in any library.
2891 These libraries were tried: libncurses, libterminfo, libtermcap, libcurses.
2892 Please try installing whichever of these libraries is most appropriate
2893 for your system, together with its header files.
2894 For example, a libncurses-dev(el) or similar package.])
2896 # Must define this when any termcap library is found.
2897 AC_DEFINE(HAVE_LIBNCURSES, 1,
2898           [Define to 1 if you have the `ncurses' library (-lncurses).])
2899 ## FIXME This was the cpp logic, but I am not sure it is right.
2900 ## The above test has not necessarily found libncurses.
2901 HAVE_LIBNCURSES=yes
2903 ## Use terminfo instead of termcap?
2904 ## Note only system files NOT using terminfo are:
2905 ## freebsd < 40000, ms-w32, msdos, netbsd < 599002500, and
2906 ## darwin|gnu without ncurses.
2907 TERMINFO=no
2908 case "$opsys" in
2909   ## cygwin: Fewer environment variables to go wrong, more terminal types.
2910   ## hpux10-20: Use the system provided termcap(3) library.
2911   ## openbsd: David Mazieres <dm@reeducation-labor.lcs.mit.edu> says this
2912   ##  is necessary.  Otherwise Emacs dumps core when run -nw.
2913   aix4-2|cygwin|hpux*|irix6-5|openbsd|sol2*|unixware) TERMINFO=yes ;;
2915   ## darwin: Prevents crashes when running Emacs in Terminal.app under 10.2.
2916   ##  The ncurses library has been moved out of the System framework in
2917   ##  Mac OS X 10.2.  So if configure detects it, set the command-line
2918   ##  option to use it.
2919   darwin|gnu*)
2920     ## (HAVE_LIBNCURSES was not always true, but is since 2010-03-18.)
2921     if test "x$HAVE_LIBNCURSES" = "xyes"; then
2922       TERMINFO=yes
2923       LIBS_TERMCAP="-lncurses"
2924     fi
2925     ;;
2927   freebsd)
2928     AC_MSG_CHECKING([whether FreeBSD is new enough to use terminfo])
2929     AC_CACHE_VAL(emacs_cv_freebsd_terminfo,
2930     [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <osreldate.h>]],
2931 [[#if __FreeBSD_version < 400000
2932 fail;
2933 #endif
2934 ]])], emacs_cv_freebsd_terminfo=yes, emacs_cv_freebsd_terminfo=no)])
2936     AC_MSG_RESULT($emacs_cv_freebsd_terminfo)
2938     if test $emacs_cv_freebsd_terminfo = yes; then
2939       TERMINFO=yes
2940       LIBS_TERMCAP="-lncurses"
2941     else
2942       LIBS_TERMCAP="-ltermcap"
2943     fi
2944     ;;
2946   netbsd)
2947     if test $ac_cv_search_tputs = -lterminfo; then
2948       TERMINFO=yes
2949       LIBS_TERMCAP="-lterminfo"
2950     else
2951       LIBS_TERMCAP="-ltermcap"
2952     fi
2953     ;;
2955 esac
2957 case "$opsys" in
2958   ## hpux: Make sure we get select from libc rather than from libcurses
2959   ##  because libcurses on HPUX 10.10 has a broken version of select.
2960   ##  We used to use -lc -lcurses, but this may be cleaner.
2961   hpux*) LIBS_TERMCAP="-ltermcap" ;;
2963   openbsd) LIBS_TERMCAP="-lncurses" ;;
2965   ## Must use system termcap, if we use any termcap.  It does special things.
2966   sol2*) test "$TERMINFO" != yes && LIBS_TERMCAP="-ltermcap" ;;
2967 esac
2969 TERMCAP_OBJ=tparam.o
2970 if test $TERMINFO = yes; then
2971   AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.])
2972   TERMCAP_OBJ=terminfo.o
2974 AC_SUBST(LIBS_TERMCAP)
2975 AC_SUBST(TERMCAP_OBJ)
2978 # Do we have res_init, for detecting changes in /etc/resolv.conf?
2979 resolv=no
2980 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
2981 #include <arpa/nameser.h>
2982 #include <resolv.h>]],
2983     [[return res_init();]])],
2984     have_res_init=yes, have_res_init=no)
2985 if test "$have_res_init" = no; then
2986   OLIBS="$LIBS"
2987   LIBS="$LIBS -lresolv"
2988   AC_MSG_CHECKING(for res_init with -lresolv)
2989   AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
2990 #include <arpa/nameser.h>
2991 #include <resolv.h>]],
2992     [[return res_init();]])],
2993     have_res_init=yes, have_res_init=no)
2994   AC_MSG_RESULT($have_res_init)
2995   if test "$have_res_init" = yes ; then
2996     resolv=yes
2997   fi
2998   LIBS="$OLIBS"
3001 if test "$have_res_init" = yes; then
3002   AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if res_init is available.])
3005 # Do we need the Hesiod library to provide the support routines?
3006 LIBHESIOD=
3007 if test "$with_hesiod" != no ; then
3008   # Don't set $LIBS here -- see comments above.  FIXME which comments?
3009   AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
3010      [AC_CHECK_LIB(resolv, res_send, resolv=yes,
3011                   [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
3012   if test "$resolv" = yes ; then
3013     RESOLVLIB=-lresolv
3014   else
3015     RESOLVLIB=
3016   fi
3017   AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
3018         hesiod=yes, :, $RESOLVLIB)])
3020   if test x"$hesiod" = xyes; then
3021     AC_DEFINE(HAVE_LIBHESIOD, 1,
3022               [Define to 1 if you have the hesiod library (-lhesiod).])
3023     LIBHESIOD=-lhesiod
3024   fi
3026 AC_SUBST(LIBHESIOD)
3028 # Do we need libresolv (due to res_init or Hesiod)?
3029 if test "$resolv" = yes ; then
3030   AC_DEFINE(HAVE_LIBRESOLV, 1,
3031             [Define to 1 if you have the resolv library (-lresolv).])
3032   LIBRESOLV=-lresolv
3033 else
3034   LIBRESOLV=
3036 AC_SUBST(LIBRESOLV)
3038 # These tell us which Kerberos-related libraries to use.
3039 COM_ERRLIB=
3040 CRYPTOLIB=
3041 KRB5LIB=
3042 DESLIB=
3043 KRB4LIB=
3045 if test "${with_kerberos}" != no; then
3046   AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no)
3047   if test $have_com_err = yes; then
3048     COM_ERRLIB=-lcom_err
3049     LIBS="$COM_ERRLIB $LIBS"
3050     AC_DEFINE(HAVE_LIBCOM_ERR, 1, [Define to 1 if you have the `com_err' library (-lcom_err).])
3051   fi
3052   AC_CHECK_LIB(crypto, mit_des_cbc_encrypt, have_crypto=yes, have_crypto=no)
3053   if test $have_crypto = yes; then
3054     CRYPTOLIB=-lcrypto
3055     LIBS="$CRYPTOLIB $LIBS"
3056     AC_DEFINE(HAVE_LIBCRYPTO, 1, [Define to 1 if you have the `crypto' library (-lcrypto).])
3057   fi
3058   AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt, have_k5crypto=yes, have_k5crypto=no)
3059   if test $have_k5crypto = yes; then
3060     CRYPTOLIB=-lk5crypto
3061     LIBS="$CRYPTOLIB $LIBS"
3062     AC_DEFINE(HAVE_LIBK5CRYPTO, 1, [Define to 1 if you have the `k5crypto' library (-lk5crypto).])
3063   fi
3064   AC_CHECK_LIB(krb5, krb5_init_context, have_krb5=yes, have_krb5=no)
3065   if test $have_krb5=yes; then
3066     KRB5LIB=-lkrb5
3067     LIBS="$KRB5LIB $LIBS"
3068     AC_DEFINE(HAVE_LIBKRB5, 1, [Define to 1 if you have the `krb5' library (-lkrb5).])
3069   fi
3070   dnl FIXME Simplify.  Does not match 22 logic, thanks to default_off?
3071   if test "${with_kerberos5}" = no; then
3072     AC_CHECK_LIB(des425, des_cbc_encrypt, have_des425=yes, have_des425=no )
3073     if test $have_des425 = yes; then
3074       DESLIB=-ldes425
3075       LIBS="$DESLIB $LIBS"
3076       AC_DEFINE(HAVE_LIBDES425, 1, [Define to 1 if you have the `des425' library (-ldes425).])
3077     else
3078       AC_CHECK_LIB(des, des_cbc_encrypt, have_des=yes, have_des=no)
3079       if test $have_des = yes; then
3080         DESLIB=-ldes
3081         LIBS="$DESLIB $LIBS"
3082         AC_DEFINE(HAVE_LIBDES, 1, [Define to 1 if you have the `des' library (-ldes).])
3083       fi
3084     fi
3085     AC_CHECK_LIB(krb4, krb_get_cred, have_krb4=yes, have_krb4=no)
3086     if test $have_krb4 = yes; then
3087       KRB4LIB=-lkrb4
3088       LIBS="$KRB4LIB $LIBS"
3089       AC_DEFINE(HAVE_LIBKRB4, 1, [Define to 1 if you have the `krb4' library (-lkrb4).])
3090     else
3091       AC_CHECK_LIB(krb, krb_get_cred, have_krb=yes, have_krb=no)
3092       if test $have_krb = yes; then
3093         KRB4LIB=-lkrb
3094         LIBS="$KRB4LIB $LIBS"
3095         AC_DEFINE(HAVE_LIBKRB, 1, [Define to 1 if you have the `krb' library (-lkrb).])
3096       fi
3097     fi
3098   fi
3100   if test "${with_kerberos5}" != no; then
3101     AC_CHECK_HEADERS(krb5.h,
3102       [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,,
3103                         [#include <krb5.h>])])
3104   else
3105     AC_CHECK_HEADERS(des.h,,
3106                      [AC_CHECK_HEADERS(kerberosIV/des.h,,
3107                                        [AC_CHECK_HEADERS(kerberos/des.h)])])
3108     AC_CHECK_HEADERS(krb.h,,
3109                      [AC_CHECK_HEADERS(kerberosIV/krb.h,,
3110                                        [AC_CHECK_HEADERS(kerberos/krb.h)])])
3111   fi
3112   AC_CHECK_HEADERS(com_err.h)
3115 AC_SUBST(COM_ERRLIB)
3116 AC_SUBST(CRYPTOLIB)
3117 AC_SUBST(KRB5LIB)
3118 AC_SUBST(DESLIB)
3119 AC_SUBST(KRB4LIB)
3121 AC_MSG_CHECKING(whether localtime caches TZ)
3122 AC_CACHE_VAL(emacs_cv_localtime_cache,
3123 [if test x$ac_cv_func_tzset = xyes; then
3124 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <time.h>
3125 char TZ_GMT0[] = "TZ=GMT0";
3126 char TZ_PST8[] = "TZ=PST8";
3127 main()
3129   time_t now = time ((time_t *) 0);
3130   int hour_GMT0, hour_unset;
3131   if (putenv (TZ_GMT0) != 0)
3132     exit (1);
3133   hour_GMT0 = localtime (&now)->tm_hour;
3134   unsetenv("TZ");
3135   hour_unset = localtime (&now)->tm_hour;
3136   if (putenv (TZ_PST8) != 0)
3137     exit (1);
3138   if (localtime (&now)->tm_hour == hour_GMT0)
3139     exit (1);
3140   unsetenv("TZ");
3141   if (localtime (&now)->tm_hour != hour_unset)
3142     exit (1);
3143   exit (0);
3144 }]])], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
3145 [# If we have tzset, assume the worst when cross-compiling.
3146 emacs_cv_localtime_cache=yes])
3147 else
3148         # If we lack tzset, report that localtime does not cache TZ,
3149         # since we can't invalidate the cache if we don't have tzset.
3150         emacs_cv_localtime_cache=no
3151 fi])dnl
3152 AC_MSG_RESULT($emacs_cv_localtime_cache)
3153 if test $emacs_cv_localtime_cache = yes; then
3154   AC_DEFINE(LOCALTIME_CACHE, 1,
3155             [Define to 1 if localtime caches TZ.])
3158 if test "x$HAVE_TIMEVAL" = xyes; then
3159   AC_CHECK_FUNCS(gettimeofday)
3160   if test $ac_cv_func_gettimeofday = yes; then
3161     AC_CACHE_CHECK(whether gettimeofday can accept two arguments,
3162                    emacs_cv_gettimeofday_two_arguments,
3163     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3164 #ifdef TIME_WITH_SYS_TIME
3165 #include <sys/time.h>
3166 #include <time.h>
3167 #else
3168 #ifdef HAVE_SYS_TIME_H
3169 #include <sys/time.h>
3170 #else
3171 #include <time.h>
3172 #endif
3173 #endif]],
3174       [[struct timeval time;
3175        gettimeofday (&time, 0);]])],
3176       emacs_cv_gettimeofday_two_arguments=yes,
3177       emacs_cv_gettimeofday_two_arguments=no)])
3178     if test $emacs_cv_gettimeofday_two_arguments = no; then
3179       AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT, 1,
3180                 [Define to 1 if gettimeofday accepts only one argument.])
3181     fi
3182   fi
3185 ok_so_far=yes
3186 AC_CHECK_FUNC(socket, , ok_so_far=no)
3187 if test $ok_so_far = yes; then
3188   AC_CHECK_HEADER(netinet/in.h, , ok_so_far=no)
3190 if test $ok_so_far = yes; then
3191   AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
3193 if test $ok_so_far = yes; then
3194 dnl Fixme: Not used.  Should this be HAVE_SOCKETS?
3195   AC_DEFINE(HAVE_INET_SOCKETS, 1,
3196             [Define to 1 if you have inet sockets.])
3199 if test -f /usr/lpp/X11/bin/smt.exp; then
3200   AC_DEFINE(HAVE_AIX_SMT_EXP, 1,
3201             [Define to 1 if the file /usr/lpp/X11/bin/smt.exp exists.])
3204 AC_MSG_CHECKING(whether system supports dynamic ptys)
3205 if test -d /dev/pts && ls -d /dev/ptmx > /dev/null 2>&1 ; then
3206   AC_MSG_RESULT(yes)
3207   AC_DEFINE(HAVE_DEV_PTMX, 1, [Define to 1 if dynamic ptys are supported.])
3208 else
3209   AC_MSG_RESULT(no)
3212 AC_FUNC_FORK
3214 AC_CHECK_FUNCS(snprintf)
3216 dnl Adapted from Haible's version.
3217 AC_CACHE_CHECK([for nl_langinfo and CODESET], emacs_cv_langinfo_codeset,
3218   [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
3219     [[char* cs = nl_langinfo(CODESET);]])],
3220     emacs_cv_langinfo_codeset=yes,
3221     emacs_cv_langinfo_codeset=no)
3222   ])
3223 if test $emacs_cv_langinfo_codeset = yes; then
3224   AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
3225     [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
3228 AC_TYPE_MBSTATE_T
3230 AC_CACHE_CHECK([for C restricted array declarations], emacs_cv_c_restrict_arr,
3231   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[void fred (int x[__restrict]);]], [[]])],
3232                   emacs_cv_c_restrict_arr=yes, emacs_cv_c_restrict_arr=no)])
3233 if test "$emacs_cv_c_restrict_arr" = yes; then
3234   AC_DEFINE(__restrict_arr, __restrict,
3235     [Define to compiler's equivalent of C99 restrict keyword in array
3236      declarations.  Define as empty for no equivalent.])
3239 dnl Fixme: AC_SYS_POSIX_TERMIOS should probably be used, but it's not clear
3240 dnl how the tty code is related to POSIX and/or other versions of termios.
3241 dnl The following looks like a useful start.
3243 dnl AC_SYS_POSIX_TERMIOS
3244 dnl if test $ac_cv_sys_posix_termios = yes; then
3245 dnl    AC_DEFINE(HAVE_TERMIOS, 1, [Define to 1 if you have POSIX-style functions
3246 dnl                                and macros for terminal control.])
3247 dnl    AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.])
3248 dnl fi
3250 # Set up the CFLAGS for real compilation, so we can substitute it.
3251 CFLAGS="$REAL_CFLAGS"
3252 CPPFLAGS="$REAL_CPPFLAGS"
3254 ## Hack to detect a buggy GCC version.
3255 if test "x$GCC" = xyes \
3256    && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \
3257    && test x"`echo $CFLAGS | grep '\-O@<:@23@:>@'`" != x \
3258    && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then
3259    AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'.])
3262 version=$PACKAGE_VERSION
3264 ### Specify what sort of things we'll be editing into Makefile and config.h.
3265 ### Use configuration here uncanonicalized to avoid exceeding size limits.
3266 AC_SUBST(version)
3267 AC_SUBST(configuration)
3268 ## Unused?
3269 AC_SUBST(canonical)
3270 AC_SUBST(srcdir)
3271 AC_SUBST(prefix)
3272 AC_SUBST(exec_prefix)
3273 AC_SUBST(bindir)
3274 AC_SUBST(datadir)
3275 AC_SUBST(sharedstatedir)
3276 AC_SUBST(libexecdir)
3277 AC_SUBST(mandir)
3278 AC_SUBST(infodir)
3279 AC_SUBST(lispdir)
3280 AC_SUBST(locallisppath)
3281 AC_SUBST(lisppath)
3282 AC_SUBST(x_default_search_path)
3283 AC_SUBST(etcdir)
3284 AC_SUBST(archlibdir)
3285 AC_SUBST(docdir)
3286 AC_SUBST(bitmapdir)
3287 AC_SUBST(gamedir)
3288 AC_SUBST(gameuser)
3289 ## FIXME? Nothing uses @LD_SWITCH_X_SITE@.
3290 ## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the
3291 ## end of LIBX_BASE, but nothing ever set it.
3292 AC_SUBST(LD_SWITCH_X_SITE)
3293 AC_SUBST(C_SWITCH_X_SITE)
3294 AC_SUBST(GNUSTEP_CFLAGS)
3295 AC_SUBST(CFLAGS)
3296 ## Used in lwlib/Makefile.in.
3297 AC_SUBST(X_TOOLKIT_TYPE)
3298 if test -n "${machfile}"; then
3299   M_FILE="\$(srcdir)/${machfile}"
3300 else
3301   M_FILE=
3303 S_FILE="\$(srcdir)/${opsysfile}"
3304 AC_SUBST(M_FILE)
3305 AC_SUBST(S_FILE)
3306 AC_SUBST(ns_appdir)
3307 AC_SUBST(ns_appbindir)
3308 AC_SUBST(ns_appresdir)
3309 AC_SUBST(ns_appsrc)
3310 AC_SUBST(GNU_OBJC_CFLAGS)
3311 AC_SUBST(OTHER_FILES)
3313 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION,  "${canonical}",
3314                    [Define to the canonical Emacs configuration name.])
3315 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${ac_configure_args}",
3316                    [Define to the options passed to configure.])
3317 if test -n "$machfile"; then
3318   AC_DEFINE_UNQUOTED(config_machfile,  "${machfile}",
3319                      [Define to the used machine dependent file.])
3321 AC_DEFINE_UNQUOTED(config_opsysfile, "${opsysfile}",
3322                    [Define to the used os dependent file.])
3324 XMENU_OBJ=
3325 XOBJ=
3326 FONT_OBJ=
3327 if test "${HAVE_X_WINDOWS}" = "yes" ; then
3328   AC_DEFINE(HAVE_X_WINDOWS, 1,
3329             [Define to 1 if you want to use the X window system.])
3330   XMENU_OBJ=xmenu.o
3331   XOBJ="xterm.o xfns.o xselect.o xrdb.o fontset.o xsmfns.o fringe.o image.o xsettings.o xgselect.o"
3332   FONT_OBJ=xfont.o
3333   if test "$HAVE_XFT" = "yes"; then
3334     FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
3335   elif test "$HAVE_FREETYPE" = "yes"; then
3336     FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
3337   fi
3338   AC_SUBST(FONT_OBJ)
3340 AC_SUBST(XMENU_OBJ)
3341 AC_SUBST(XOBJ)
3342 AC_SUBST(FONT_OBJ)
3344 WIDGET_OBJ=
3345 MOTIF_LIBW=
3346 if test "${USE_X_TOOLKIT}" != "none" ; then
3347   WIDGET_OBJ=widget.o
3348   AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
3349   if test "${USE_X_TOOLKIT}" = "LUCID"; then
3350     AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
3351   elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
3352     AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
3353     MOTIF_LIBW=-lXm
3354     case "$opsys" in
3355       gnu-linux)
3356         ## Paul Abrahams <abrahams at equinox.shaysnet.com> says this is needed.
3357         MOTIF_LIBW="$MOTIF_LIBW -lXpm"
3358         ;;
3360       unixware)
3361         ## Richard Anthony Ryan <ryanr at ellingtn.ftc.nrcs.usda.gov>
3362         ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2.
3363         MOTIF_LIBW="MOTIF_LIBW -lXimp"
3364         ;;
3366       aix4-2)
3367         ## olson@mcs.anl.gov says -li18n is needed by -lXm.
3368         MOTIF_LIBW="$MOTIF_LIBW -li18n"
3369         ;;
3370     esac
3371     MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
3372   fi
3374 AC_SUBST(WIDGET_OBJ)
3376 TOOLKIT_LIBW=
3377 case "$USE_X_TOOLKIT" in
3378   MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
3379   LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
3380   none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
3381 esac
3382 AC_SUBST(TOOLKIT_LIBW)
3384 if test "$USE_X_TOOLKIT" = "none"; then
3385   LIBXT_OTHER="\$(LIBXSM)"
3386   OLDXMENU_TARGET="really-oldXMenu"
3387 else
3388   LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
3389   OLDXMENU_TARGET="really-lwlib"
3391 AC_SUBST(LIBXT_OTHER)
3393 ## The X Menu stuff is present in the X10 distribution, but missing
3394 ## from X11.  If we have X10, just use the installed library;
3395 ## otherwise, use our own copy.
3396 if test "${HAVE_X11}" = "yes" ; then
3397   AC_DEFINE(HAVE_X11, 1,
3398             [Define to 1 if you want to use version 11 of X windows.
3399              Otherwise, Emacs expects to use version 10.])
3401   if test "$USE_X_TOOLKIT" = "none"; then
3402     OLDXMENU="\${oldXMenudir}/libXMenu11.a"
3403   else
3404     OLDXMENU="\${lwlibdir}/liblw.a"
3405   fi
3406   LIBXMENU="\$(OLDXMENU)"
3407   LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
3408   OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}"
3409 else
3410   ## For a syntactically valid Makefile; not actually used for anything.
3411   ## See comments in src/Makefile.in.
3412   OLDXMENU=nothing
3413   ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?).
3414   if test "${HAVE_X_WINDOWS}" = "yes"; then
3415     LIBXMENU="-lXMenu"
3416   else
3417     LIBXMENU=
3418   fi
3419   LIBX_OTHER=
3420   OLDXMENU_DEPS=
3423 if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then
3424   OLDXMENU_TARGET=
3425   OLDXMENU=nothing
3426   LIBXMENU=
3427   OLDXMENU_DEPS=
3430 AC_SUBST(OLDXMENU_TARGET)
3431 AC_SUBST(OLDXMENU)
3432 AC_SUBST(LIBXMENU)
3433 AC_SUBST(LIBX_OTHER)
3434 AC_SUBST(OLDXMENU_DEPS)
3436 if test "${HAVE_MENUS}" = "yes" ; then
3437   AC_DEFINE(HAVE_MENUS, 1,
3438             [Define to 1 if you have mouse menus.
3439              (This is automatic if you use X, but the option to specify it remains.)
3440              It is also defined with other window systems that support xmenu.c.])
3443 if test "${GNU_MALLOC}" = "yes" ; then
3444   AC_DEFINE(GNU_MALLOC, 1,
3445             [Define to 1 if you want to use the GNU memory allocator.])
3448 RALLOC_OBJ=
3449 if test "${REL_ALLOC}" = "yes" ; then
3450   AC_DEFINE(REL_ALLOC, 1,
3451             [Define REL_ALLOC if you want to use the relocating allocator for
3452              buffer space.])
3454   test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
3456 AC_SUBST(RALLOC_OBJ)
3458 if test "$opsys" = "cygwin"; then
3459   CYGWIN_OBJ="sheap.o"
3460   ## Cygwin differs because of its unexec().
3461   PRE_ALLOC_OBJ=
3462   POST_ALLOC_OBJ=lastfile.o
3463 else
3464   CYGWIN_OBJ=
3465   PRE_ALLOC_OBJ=lastfile.o
3466   POST_ALLOC_OBJ=
3468 AC_SUBST(CYGWIN_OBJ)
3469 AC_SUBST(PRE_ALLOC_OBJ)
3470 AC_SUBST(POST_ALLOC_OBJ)
3472 # Configure gnulib here, now that we know LIBS.
3473 gl_ASSERT_NO_GNULIB_POSIXCHECK
3474 gl_ASSERT_NO_GNULIB_TESTS
3475 gl_INIT
3477 case "$opsys" in
3478   aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
3480   darwin)
3481    ## The -headerpad option tells ld (see man page) to leave room at the
3482    ## end of the header for adding load commands.  Needed for dumping.
3483    ## 0x690 is the total size of 30 segment load commands (at 56
3484    ## each); under Cocoa 31 commands are required.
3485    if test "$HAVE_NS" = "yes"; then
3486      libs_nsgui="-framework AppKit"
3487      headerpad_extra=6C8
3488    else
3489      libs_nsgui=
3490      headerpad_extra=690
3491    fi
3492    LD_SWITCH_SYSTEM_TEMACS="-fno-pie -prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
3494    ## This is here because src/Makefile.in did some extra fiddling around
3495    ## with LD_SWITCH_SYSTEM.  The cpp logic was:
3496    ##   #ifndef LD_SWITCH_SYSTEM
3497    ##   #if !defined (__GNUC__) && ((defined (BSD_SYSTEM) && !defined (COFF)))
3498    ## Since all the *bsds define LD_SWITCH_SYSTEM, this simplifies to:
3499    ## not using gcc, darwin system not on an alpha (ie darwin, since
3500    ## darwin + alpha does not occur).
3501    ## Because this was done in src/Makefile.in, the resulting part of
3502    ## LD_SWITCH_SYSTEM was not used in configure (ie, in ac_link).
3503    ## It therefore seems cleaner to put this in LD_SWITCH_SYSTEM_TEMACS,
3504    ## rather than LD_SWITCH_SYSTEM.
3505    test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
3506      LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
3507    ;;
3509   ## LD_SWITCH_X_SITE_AUX_RPATH is a -rpath option saying where to
3510   ## find X at run-time.
3511   ## When handled by cpp, this was in LD_SWITCH_SYSTEM.  However, at the
3512   ## point where configure sourced the s/*.h file, LD_SWITCH_X_SITE_AUX_RPATH
3513   ## had not yet been defined and was expanded to null.  Hence LD_SWITCH_SYSTEM
3514   ## had different values in configure (in ac_link) and src/Makefile.in.
3515   ## It seems clearer therefore to put this piece in LD_SWITCH_SYSTEM_TEMACS.
3516   gnu*) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_AUX_RPATH)" ;;
3518   *) LD_SWITCH_SYSTEM_TEMACS= ;;
3519 esac
3521 if test "$NS_IMPL_GNUSTEP" = "yes"; then
3522   LD_SWITCH_SYSTEM_TEMACS="${LD_SWITCH_SYSTEM_TEMACS} -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES} -lgnustep-gui -lgnustep-base -lobjc -lpthread"
3525 AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
3528 LD_FIRSTFLAG=
3529 ORDINARY_LINK=
3530 case "$opsys" in
3531   ## gnu: GNU needs its own crt0.
3532   aix4-2|cygwin|darwin|gnu|hpux*|irix6-5|sol2*|unixware) ORDINARY_LINK=yes ;;
3534   ## On post 1.3 releases of NetBSD, gcc -nostdlib also clears the
3535   ## library search parth, i.e. it won't search /usr/lib for libc and
3536   ## friends.  Using -nostartfiles instead avoids this problem, and
3537   ## will also work on earlier NetBSD releases.
3538   netbsd|openbsd) LD_FIRSTFLAG="-nostartfiles" ;;
3540   ## macpcc: NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp> says
3541   ##   MkLinux/LinuxPPC needs this.
3542   ## ibms390x only supports opsys = gnu-linux so it can be added here.
3543   gnu-*)
3544     case "$machine" in
3545       macppc|ibms390x) LD_FIRSTFLAG="-nostdlib" ;;
3546     esac
3547     ;;
3548 esac
3551 if test "x$ORDINARY_LINK" = "xyes"; then
3553   LD_FIRSTFLAG=""
3554   AC_DEFINE(ORDINARY_LINK, 1, [Define if the C compiler is the linker.])
3556 ## The system files defining neither ORDINARY_LINK nor LD_FIRSTFLAG are:
3557 ## freebsd, gnu-* not on macppc|ibms390x.
3558 elif test "x$GCC" = "xyes" && test "x$LD_FIRSTFLAG" = "x"; then
3560   ## Versions of GCC >= 2.0 put their library, libgcc.a, in obscure
3561   ## places that are difficult to figure out at make time.  Fortunately,
3562   ## these same versions allow you to pass arbitrary flags on to the
3563   ## linker, so there is no reason not to use it as a linker.
3564   ##
3565   ## Well, it is not quite perfect.  The "-nostdlib" keeps GCC from
3566   ## searching for libraries in its internal directories, so we have to
3567   ## ask GCC explicitly where to find libgcc.a (LIB_GCC below).
3568   LD_FIRSTFLAG="-nostdlib"
3571 ## FIXME? What setting of EDIT_LDFLAGS should this have?
3572 test "$NS_IMPL_GNUSTEP" = "yes" && LD_FIRSTFLAG="-rdynamic"
3574 AC_SUBST(LD_FIRSTFLAG)
3577 ## FIXME? The logic here is not precisely the same as that above.
3578 ## There is no check here for a pre-defined LD_FIRSTFLAG.
3579 ## Should we only be setting LIB_GCC if LD ~ -nostdlib?
3580 LIB_GCC=
3581 if test "x$GCC" = "xyes" && test "x$ORDINARY_LINK" != "xyes"; then
3583   case "$opsys" in
3584     freebsd|netbsd|openbsd) LIB_GCC= ;;
3586     gnu-*)
3587       ## armin76@gentoo.org reported that the lgcc_s flag is necessary to
3588       ## build on ARM EABI under GNU/Linux.  (Bug#5518)
3589       case $host_cpu in
3590       arm*)
3591         LIB_GCC="-lgcc_s"
3592         ;;
3593       *)
3594         ## FIXME? s/gnu-linux.h used to define LIB_GCC as below, then
3595         ## immediately undefine it again and redefine it to empty.
3596         ## Was the C_SWITCH_X_SITE part really necessary?
3597 ##      LIB_GCC=`$CC $C_SWITCH_X_SITE -print-libgcc-file-name`
3598         LIB_GCC=
3599         ;;
3600       esac
3601       ;;
3603     ## Ask GCC where to find libgcc.a.
3604     *) LIB_GCC=`$CC -print-libgcc-file-name 2> /dev/null` ;;
3605   esac
3606 fi                              dnl if $GCC
3607 AC_SUBST(LIB_GCC)
3610 ## If we're using X11/GNUstep, define some consequences.
3611 if test "$HAVE_X_WINDOWS" = "yes" || test "$HAVE_NS" = "yes"; then
3612   AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
3613   AC_DEFINE(HAVE_MOUSE, 1, [Define if you have mouse support.])
3617 AH_TOP([/* GNU Emacs site configuration template file.
3619 Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2012
3620   Free Software Foundation, Inc.
3622 This file is part of GNU Emacs.
3624 GNU Emacs is free software: you can redistribute it and/or modify
3625 it under the terms of the GNU General Public License as published by
3626 the Free Software Foundation, either version 3 of the License, or
3627 (at your option) any later version.
3629 GNU Emacs is distributed in the hope that it will be useful,
3630 but WITHOUT ANY WARRANTY; without even the implied warranty of
3631 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3632 GNU General Public License for more details.
3634 You should have received a copy of the GNU General Public License
3635 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
3638 /* No code in Emacs #includes config.h twice, but some bits of code
3639    intended to work with other packages as well (like gmalloc.c)
3640    think they can include it as many times as they like.  */
3641 #ifndef EMACS_CONFIG_H
3642 #define EMACS_CONFIG_H
3643 ])dnl
3645 AH_BOTTOM([
3646 /* On AIX 3 this must be included before any other include file.  */
3647 #include <alloca.h>
3648 #if ! HAVE_ALLOCA
3649 # error "alloca not available on this machine"
3650 #endif
3652 /* Define AMPERSAND_FULL_NAME if you use the convention
3653    that & in the full name stands for the login id.  */
3654 /* Turned on June 1996 supposing nobody will mind it.  */
3655 #define AMPERSAND_FULL_NAME
3657 /* `subprocesses' should be defined if you want to
3658    have code for asynchronous subprocesses
3659    (as used in M-x compile and M-x shell).
3660    Only MSDOS does not support this (it overrides
3661    this in its config_opsysfile below).  */
3663 #define subprocesses
3665 /* Include the os and machine dependent files.  */
3666 #include config_opsysfile
3667 #ifdef config_machfile
3668 # include config_machfile
3669 #endif
3671 /* GNUstep needs a bit more pure memory.  Of the existing knobs,
3672    SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems.
3673   (There is probably a better place to do this, but right now the
3674    Cocoa side does this in s/darwin.h and we cannot parallel this
3675    exactly since GNUstep is multi-OS.  */
3676 #if defined HAVE_NS && defined NS_IMPL_GNUSTEP
3677 #  define SYSTEM_PURESIZE_EXTRA 30000
3678 #endif
3680 #ifdef emacs /* Don't do this for lib-src.  */
3681 /* Tell regex.c to use a type compatible with Emacs.  */
3682 #define RE_TRANSLATE_TYPE Lisp_Object
3683 #define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
3684 #ifdef make_number
3685 /* If make_number is a macro, use it.  */
3686 #define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0)))
3687 #else
3688 /* If make_number is a function, avoid it.  */
3689 #define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0))
3690 #endif
3691 #endif
3693 /* These default definitions are good for almost all machines.
3694    Any exceptions should override them in m/MACHINE.h.
3695    They must be usable in preprocessor conditionals.  */
3697 #ifndef BITS_PER_CHAR
3698 #define BITS_PER_CHAR 8
3699 #endif
3701 #ifndef BITS_PER_SHORT
3702 #define BITS_PER_SHORT 16
3703 #endif
3705 #ifndef BITS_PER_INT
3706 #define BITS_PER_INT 32
3707 #endif
3709 #ifndef BITS_PER_LONG
3710 #ifdef _LP64
3711 #define BITS_PER_LONG 64
3712 #else
3713 #define BITS_PER_LONG 32
3714 #endif
3715 #endif
3717 #if !defined BITS_PER_LONG_LONG && HAVE_LONG_LONG_INT
3718 #define BITS_PER_LONG_LONG 64
3719 #endif
3721 /* Define if the compiler supports function prototypes.  It may do so but
3722    not define __STDC__ (e.g. DEC C by default) or may define it as zero.  */
3723 #undef PROTOTYPES
3725 #include <string.h>
3726 #include <stdlib.h>
3728 #if defined __GNUC__ && (__GNUC__ > 2 \
3729                          || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5))
3730 #define NO_RETURN       __attribute__ ((__noreturn__))
3731 #else
3732 #define NO_RETURN       /* nothing */
3733 #endif
3735 #if __GNUC__ >= 3  /* On GCC 3.0 we might get a warning.  */
3736 #define NO_INLINE __attribute__((noinline))
3737 #else
3738 #define NO_INLINE
3739 #endif
3741 #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1))
3742 #define EXTERNALLY_VISIBLE __attribute__((externally_visible))
3743 #else
3744 #define EXTERNALLY_VISIBLE
3745 #endif
3747 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
3748 # define ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
3749 #else
3750 # define ATTRIBUTE_FORMAT(spec) /* empty */
3751 #endif
3753 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
3754 # define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
3755    ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
3756 #else
3757 # define ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
3758    ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
3759 #endif
3761 /* Some versions of GNU/Linux define noinline in their headers.  */
3762 #ifdef noinline
3763 #undef noinline
3764 #endif
3766 /* These won't be used automatically yet.  We also need to know, at least,
3767    that the stack is continuous.  */
3768 #ifdef __GNUC__
3769 #  ifndef GC_SETJMP_WORKS
3770   /* GC_SETJMP_WORKS is nearly always appropriate for GCC.  */
3771 #    define GC_SETJMP_WORKS 1
3772 #  endif
3773 #endif
3775 #endif /* EMACS_CONFIG_H */
3778 Local Variables:
3779 mode: c
3780 End:
3782 ])dnl
3784 #### Report on what we decided to do.
3785 #### Report GTK as a toolkit, even if it doesn't use Xt.
3786 #### It makes printing result more understandable as using GTK sets
3787 #### toolkit_scroll_bars to yes by default.
3788 if test "${HAVE_GTK}" = "yes"; then
3789   USE_X_TOOLKIT=GTK
3792 and_machfile=
3793 if test -n "$machfile"; then
3794   and_machfile=" and \`${machfile}'"
3797 echo "
3798 Configured for \`${canonical}'.
3800   Where should the build process find the source code?    ${srcdir}
3801   What operating system and machine description files should Emacs use?
3802         \`${opsysfile}'${and_machfile}
3803   What compiler should emacs be built with?               ${CC} ${CFLAGS}
3804   Should Emacs use the GNU version of malloc?             ${GNU_MALLOC}${GNU_MALLOC_reason}
3805   Should Emacs use a relocating allocator for buffers?    ${REL_ALLOC}
3806   Should Emacs use mmap(2) for buffer allocation?         $use_mmap_for_buffers
3807   What window system should Emacs use?                    ${window_system}
3808   What toolkit should Emacs use?                          ${USE_X_TOOLKIT}"
3810 if test -n "${x_includes}"; then
3811 echo "  Where do we find X Windows header files?                ${x_includes}"
3812 else
3813 echo "  Where do we find X Windows header files?                Standard dirs"
3815 if test -n "${x_libraries}"; then
3816 echo "  Where do we find X Windows libraries?                   ${x_libraries}"
3817 else
3818 echo "  Where do we find X Windows libraries?                   Standard dirs"
3821 echo "  Does Emacs use -lXaw3d?                                 ${HAVE_XAW3D}"
3822 echo "  Does Emacs use -lXpm?                                   ${HAVE_XPM}"
3823 echo "  Does Emacs use -ljpeg?                                  ${HAVE_JPEG}"
3824 echo "  Does Emacs use -ltiff?                                  ${HAVE_TIFF}"
3825 echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $LIBGIF"
3826 echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
3827 echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
3828 echo "  Does Emacs use imagemagick?                             ${HAVE_IMAGEMAGICK}"
3830 echo "  Does Emacs use -lgpm?                                   ${HAVE_GPM}"
3831 echo "  Does Emacs use -ldbus?                                  ${HAVE_DBUS}"
3832 echo "  Does Emacs use -lgconf?                                 ${HAVE_GCONF}"
3833 echo "  Does Emacs use GSettings?                               ${HAVE_GSETTINGS}"
3834 echo "  Does Emacs use -lselinux?                               ${HAVE_LIBSELINUX}"
3835 echo "  Does Emacs use -lgnutls?                                ${HAVE_GNUTLS}"
3836 echo "  Does Emacs use -lxml2?                                  ${HAVE_LIBXML2}"
3838 echo "  Does Emacs use -lfreetype?                              ${HAVE_FREETYPE}"
3839 echo "  Does Emacs use -lm17n-flt?                              ${HAVE_M17N_FLT}"
3840 echo "  Does Emacs use -lotf?                                   ${HAVE_LIBOTF}"
3841 echo "  Does Emacs use -lxft?                                   ${HAVE_XFT}"
3843 echo "  Does Emacs use toolkit scroll bars?                     ${USE_TOOLKIT_SCROLL_BARS}"
3844 echo
3846 if test -n "${EMACSDATA}"; then
3847    echo "  Environment variable EMACSDATA set to:                  $EMACSDATA"
3849 if test -n "${EMACSDOC}"; then
3850    echo "  Environment variable EMACSDOC set to:                   $EMACSDOC"
3853 if test $USE_XASSERTS = yes; then
3854    echo "  Compiling with asserts turned on."
3855    CPPFLAGS="$CPPFLAGS -DXASSERTS=1"
3858 echo
3860 if test "$HAVE_NS" = "yes"; then
3861    echo
3862    echo "You must run \"${MAKE-make} install\" in order to test the built application.
3863 The installed application will go to nextstep/Emacs.app and can be
3864 run or moved from there."
3865    if test "$EN_NS_SELF_CONTAINED" = "yes"; then
3866       echo "The application will be fully self-contained."
3867     else
3868       echo "The lisp resources for the application will be installed under ${prefix}.
3869 You may need to run \"${MAKE-make} install\" with sudo.  The application will fail
3870 to run if these resources are not installed."
3871    fi
3872    echo
3875 if test "${opsys}" = "cygwin"; then
3876   case `uname -r` in
3877     1.5.*) AC_MSG_WARN([[building Emacs on Cygwin 1.5 is not supported.]])
3878            echo
3879            ;;
3880   esac
3883 # Remove any trailing slashes in these variables.
3884 [test "${prefix}" != NONE &&
3885   prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
3886 test "${exec_prefix}" != NONE &&
3887   exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
3889 dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES.
3890 dnl You _can_ use that variable in AC_CONFIG_FILES, so long as any directory
3891 dnl using automake (ie lib/) is explicitly listed and not "hidden" in a variable
3892 dnl (else you get "no `Makefile.am' found for any configure output").
3893 dnl This will work, but you get a config.status that is not quite right
3894 dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html).
3895 dnl That doesn't have any obvious consequences for Emacs, but on the whole
3896 dnl it seems better to just live with the duplication.
3897 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"
3899 AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
3900        doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
3901        doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile \
3902        leim/Makefile])
3904 dnl test/ is not present in release tarfiles.
3905 opt_makefile=test/automated/Makefile
3907 if test -f $srcdir/${opt_makefile}.in; then
3908   SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
3909   dnl Again, it's best not to use a variable.  Though you can add
3910   dnl ", [], [opt_makefile='$opt_makefile']" and it should work.
3911   AC_CONFIG_FILES([test/automated/Makefile])
3915 dnl admin/ may or may not be present.
3916 opt_makefile=admin/unidata/Makefile
3918 if test -f $srcdir/${opt_makefile}.in; then
3919   SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
3920   AC_CONFIG_FILES([admin/unidata/Makefile])
3924 SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'`
3926 AC_SUBST(SUBDIR_MAKEFILES_IN)
3928 dnl Make the necessary directories, if they don't exist.
3929 AC_CONFIG_COMMANDS([mkdirs], [
3930 for dir in etc lisp ; do
3931   test -d ${dir} || mkdir ${dir}
3932 done
3935 dnl You might wonder (I did) why epaths.h is generated by running make,
3936 dnl rather than just letting configure generate it from epaths.in.
3937 dnl One reason is that the various paths are not fully expanded (see above);
3938 dnl eg gamedir=${prefix}/var/games/emacs.
3939 dnl Secondly, the GNU Coding standards require that one should be able
3940 dnl to run `make prefix=/some/where/else' and override the values set
3941 dnl by configure.  This also explains the `move-if-change' test and
3942 dnl the use of force in the `epaths-force' rule in Makefile.in.
3943 AC_CONFIG_COMMANDS([epaths], [
3944 echo creating src/epaths.h
3945 ${MAKE-make} epaths-force
3946 ], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"])
3948 AC_CONFIG_COMMANDS([gdbinit], [
3949 if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
3950   echo creating src/.gdbinit
3951   echo source $srcdir/src/.gdbinit > src/.gdbinit
3955 AC_OUTPUT
3957 dnl configure.in ends here