Split smie-indent-calculate into more manageable chunks.
[emacs.git] / configure.in
blob2e31641f25f00af50d1e414f598a227f0567c6df
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, 1995, 1996, 1999, 2000, 2001, 2002, 2003, 2004,
8 dnl    2005, 2006, 2007, 2008, 2009, 2010
9 dnl    Free Software Foundation, Inc.
10 dnl
11 dnl  This file is part of GNU Emacs.
12 dnl
13 dnl  GNU Emacs is free software: you can redistribute it and/or modify
14 dnl  it under the terms of the GNU General Public License as published by
15 dnl  the Free Software Foundation, either version 3 of the License, or
16 dnl  (at your option) any later version.
17 dnl
18 dnl  GNU Emacs is distributed in the hope that it will be useful,
19 dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of
20 dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 dnl  GNU General Public License for more details.
22 dnl
23 dnl  You should have received a copy of the GNU General Public License
24 dnl  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
26 AC_PREREQ(2.62)
27 AC_INIT(emacs, 24.0.50)
28 AC_CONFIG_HEADER(src/config.h:src/config.in)
29 AC_CONFIG_SRCDIR(src/lisp.h)
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 gameuser=games
50 dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING)
51 dnl Create a new --with option that defaults to being disabled.
52 dnl NAME is the base name of the option.  The shell variable with_NAME
53 dnl   will be set to either the user's value (if the option is
54 dnl   specified; 'yes' for a plain --with-NAME) or to 'no' (if the
55 dnl   option is not specified).  Note that the shell variable name is
56 dnl   constructed as autoconf does, by replacing non-alphanumeric
57 dnl   characters with "_".
58 dnl HELP-STRING is the help text for the option.
59 AC_DEFUN([OPTION_DEFAULT_OFF], [dnl
60   AC_ARG_WITH([$1],[AS_HELP_STRING([--with-$1],[$2])],[],[dnl
61     m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=no])dnl
62 ])dnl
64 dnl OPTION_DEFAULT_ON(NAME, HELP-STRING)
65 dnl Create a new --with option that defaults to being enabled.  NAME
66 dnl   is the base name of the option.  The shell variable with_NAME
67 dnl   will be set either to 'no' (for a plain --without-NAME) or to
68 dnl   'yes' (if the option is not specified).  Note that the shell
69 dnl   variable name is constructed as autoconf does, by replacing
70 dnl   non-alphanumeric characters with "_".
71 dnl HELP-STRING is the help text for the option.
72 AC_DEFUN([OPTION_DEFAULT_ON], [dnl
73   AC_ARG_WITH([$1],[AS_HELP_STRING([--without-$1],[$2])],[],[dnl
74    m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=yes])dnl
75 ])dnl
77 OPTION_DEFAULT_ON([pop],[don't support POP mail retrieval with movemail])
78 if test "$with_pop" = yes; then
79    AC_DEFINE(MAIL_USE_POP)
81 AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl
83 OPTION_DEFAULT_OFF([kerberos],[support Kerberos-authenticated POP])
84 if test "$with_kerberos" != no; then
85    AC_DEFINE(KERBEROS)
87 AH_TEMPLATE(KERBEROS,
88             [Define to support Kerberos-authenticated POP mail retrieval.])dnl
90 OPTION_DEFAULT_OFF([kerberos5],[support Kerberos version 5 authenticated POP])
91 if test "${with_kerberos5}" != no; then
92   if test "${with_kerberos}" = no; then
93     with_kerberos=yes
94     AC_DEFINE(KERBEROS)
95   fi
96   AC_DEFINE(KERBEROS5, 1, [Define to use Kerberos 5 instead of Kerberos 4.])
99 OPTION_DEFAULT_OFF([hesiod],[support Hesiod to get the POP server host])
100 dnl FIXME hesiod support may not be present, so it seems like an error
101 dnl to define, or at least use, this unconditionally.
102 if test "$with_hesiod" != no; then
103   AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])
106 OPTION_DEFAULT_OFF([mmdf],[support MMDF mailboxes])
107 if test "$with_mmdf" != no; then
108    AC_DEFINE(MAIL_USE_MMDF, 1, [Define to support MMDF mailboxes in movemail.])
111 OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after reading])
112 if test "$with_mail_unlink" != no; then
113    AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail spool after reading.])
116 AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
117     [string giving default POP mail host])],
118     AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.]))
120 OPTION_DEFAULT_ON([sound],[don't compile with sound support])
122 OPTION_DEFAULT_ON([sync-input],[process async input synchronously])
123 if test "$with_sync_input" = yes; then
124    AC_DEFINE(SYNC_INPUT, 1, [Process async input synchronously.])
127 dnl FIXME currently it is not the last.
128 dnl This should be the last --with option, because --with-x is
129 dnl added later on when we find the path of X, and it's best to
130 dnl keep them together visually.
131 AC_ARG_WITH([x-toolkit],[AS_HELP_STRING([--with-x-toolkit=KIT],
132  [use an X toolkit (KIT one of: yes or gtk, lucid or athena, motif, no)])],
133 [         case "${withval}" in
134             y | ye | yes )      val=gtk ;;
135             n | no )            val=no  ;;
136             l | lu | luc | luci | lucid )       val=lucid ;;
137             a | at | ath | athe | athen | athena )      val=athena ;;
138             m | mo | mot | moti | motif )       val=motif ;;
139             g | gt | gtk  )     val=gtk ;;
140             * )
141 AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid;
142 this option's value should be `yes', `no', `lucid', `athena', `motif' or `gtk'.
143 `yes' and `gtk' are synonyms. `athena' and `lucid' are synonyms.])
144             ;;
145           esac
146           with_x_toolkit=$val
149 dnl _ON results in a '--without' option in the --help output, so
150 dnl the help text should refer to "don't compile", etc.
151 OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support])
152 OPTION_DEFAULT_ON([jpeg],[don't compile with JPEG image support])
153 OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support])
154 OPTION_DEFAULT_ON([gif],[don't compile with GIF image support])
155 OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
156 OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
158 OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
159 OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
160 OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
162 OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
163 OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
164 OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
165 OPTION_DEFAULT_OFF([ns],[use nextstep (Cocoa or GNUstep) windowing system])
167 OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
168 OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
169 OPTION_DEFAULT_ON([gconf],[don't compile with GConf support])
170 OPTION_DEFAULT_ON([selinux],[don't compile with SELinux support])
172 ## For the times when you want to build Emacs but don't have
173 ## a suitable makeinfo, and can live without the manuals.
174 dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
175 OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
177 AC_ARG_WITH([pkg-config-prog],dnl
178 [AS_HELP_STRING([--with-pkg-config-prog=PATH],
179                   [path to pkg-config for finding GTK and librsvg])])
180 if test "X${with_pkg_config_prog}" != X; then
181    if test "${with_pkg_config_prog}" != yes; then
182       PKG_CONFIG="${with_pkg_config_prog}"
183    fi
186 CRT_DIR=
187 AC_ARG_WITH([crt-dir],dnl
188 [AS_HELP_STRING([--with-crt-dir=DIR],[directory containing crtn.o etc.
189 The default is /usr/lib, or /usr/lib64 on some platforms.])])
190 CRT_DIR="${with_crt_dir}"
192 AC_ARG_WITH([gnustep-conf],dnl
193 [AS_HELP_STRING([--with-gnustep-conf=PATH],[path to GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])])
194 test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
195   GNUSTEP_CONFIG_FILE="${with_gnustep_conf}"
196 test "X$GNUSTEP_CONFIG_FILE" = "X" && \
197      GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf
199 AC_ARG_ENABLE(ns-self-contained,
200 [AS_HELP_STRING([--disable-ns-self-contained],
201                 [disable self contained build under NeXTstep])],
202    EN_NS_SELF_CONTAINED=$enableval,
203    EN_NS_SELF_CONTAINED=yes)
205 AC_ARG_ENABLE(asserts,
206 [AS_HELP_STRING([--enable-asserts], [compile code with asserts enabled])],
207       USE_XASSERTS=$enableval,
208       USE_XASSERTS=no)
210 AC_ARG_ENABLE(maintainer-mode,
211 [AS_HELP_STRING([--enable-maintainer-mode],
212                 [enable make rules and dependencies not useful (and sometimes
213                  confusing) to the casual installer])],
214       USE_MAINTAINER_MODE=$enableval,
215       USE_MAINTAINER_MODE=no)
216 if test $USE_MAINTAINER_MODE = yes; then
217   MAINT=
218 else
219   MAINT=#
221 AC_SUBST(MAINT)
223 AC_ARG_ENABLE(locallisppath,
224 [AS_HELP_STRING([--enable-locallisppath=PATH],
225                 [directories Emacs should search for lisp files specific
226                  to this site])],
227 if test "${enableval}" = "no"; then
228   locallisppath=
229 elif test "${enableval}" != "yes"; then
230   locallisppath=${enableval}
233 AC_ARG_ENABLE(checking,
234 [AS_HELP_STRING([--enable-checking@<:@=LIST@:>@],
235                 [enable expensive run-time checks.  With LIST,
236                  enable only specific categories of checks.
237                  Categories are: all,yes,no.
238                  Flags are: stringbytes, stringoverrun, stringfreelist,
239                  xmallocoverrun, conslist])],
240 [ac_checking_flags="${enableval}"],[])
241 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
242 for check in $ac_checking_flags
244         case $check in
245         # these set all the flags to specific states
246         yes)            ac_enable_checking=1 ;;
247         no)             ac_enable_checking= ;
248                         ac_gc_check_stringbytes= ;
249                         ac_gc_check_string_overrun= ;
250                         ac_gc_check_string_free_list= ;
251                         ac_xmalloc_overrun= ;
252                         ac_gc_check_cons_list= ;;
253         all)            ac_enable_checking=1 ;
254                         ac_gc_check_stringbytes=1 ;
255                         ac_gc_check_string_overrun=1 ;
256                         ac_gc_check_string_free_list=1 ;
257                         ac_xmalloc_overrun=1 ;
258                         ac_gc_check_cons_list=1 ;;
259         # these enable particular checks
260         stringbytes)    ac_gc_check_stringbytes=1 ;;
261         stringoverrun)  ac_gc_check_string_overrun=1 ;;
262         stringfreelist) ac_gc_check_string_free_list=1 ;;
263         xmallocoverrun) ac_xmalloc_overrun=1 ;;
264         conslist)       ac_gc_check_cons_list=1 ;;
265         *)      AC_MSG_ERROR(unknown check category $check) ;;
266         esac
267 done
268 IFS="$ac_save_IFS"
270 if test x$ac_enable_checking != x ; then
271   AC_DEFINE(ENABLE_CHECKING, 1,
272 [Enable expensive run-time checking of data types?])
274 if test x$ac_gc_check_stringbytes != x ; then
275   AC_DEFINE(GC_CHECK_STRING_BYTES, 1,
276 [Define this temporarily to hunt a bug.  If defined, the size of
277    strings is redundantly recorded in sdata structures so that it can
278    be compared to the sizes recorded in Lisp strings.])
280 if test x$ac_gc_check_stringoverrun != x ; then
281   AC_DEFINE(GC_CHECK_STRING_OVERRUN, 1,
282 [Define this to check for short string overrun.])
284 if test x$ac_gc_check_string_free_list != x ; then
285   AC_DEFINE(GC_CHECK_STRING_FREE_LIST, 1,
286 [Define this to check the string free list.])
288 if test x$ac_xmalloc_overrun != x ; then
289   AC_DEFINE(XMALLOC_OVERRUN_CHECK, 1,
290 [Define this to check for malloc buffer overrun.])
292 if test x$ac_gc_check_cons_list != x ; then
293   AC_DEFINE(GC_CHECK_CONS_LIST, 1,
294 [Define this to check for errors in cons list.])
297 AC_ARG_ENABLE(profiling,
298 [AS_HELP_STRING([--enable-profiling],
299                 [build emacs with profiling support.
300                  This might not work on all platforms])],
301 [ac_enable_profiling="${enableval}"],[])
302 if test x$ac_enable_profiling != x ; then
303    PROFILING_CFLAGS="-DPROFILING=1 -pg"
304    PROFILING_LDFLAGS="-pg"
305 else
306    PROFILING_CFLAGS=
307    PROFILING_LDFLAGS=
310 AC_ARG_ENABLE(autodepend,
311 [AS_HELP_STRING([--enable-autodepend],
312                 [automatically generate dependencies to .h-files.
313                  Requires GNU Make and Gcc. Enabled if GNU Make and Gcc is
314                  found])],
315 [ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
317 #### Make srcdir absolute, if it isn't already.  It's important to
318 #### avoid running the path through pwd unnecessarily, since pwd can
319 #### give you automounter prefixes, which can go away.  We do all this
320 #### so Emacs can find its files when run uninstalled.
321 ## Make sure CDPATH doesn't affect cd (in case PWD is relative).
322 unset CDPATH
323 case "${srcdir}" in
324   /* ) ;;
325   . )
326     ## We may be able to use the $PWD environment variable to make this
327     ## absolute.  But sometimes PWD is inaccurate.
328     ## Note: we used to use ${PWD} at the end instead of `pwd`,
329     ## but that tested only for a well-formed and valid PWD,
330     ## it did not object when PWD was well-formed and valid but just wrong.
331     if test ".${PWD}" != "." && test ".`(cd ${PWD} ; sh -c pwd)`" = ".`pwd`"  ;
332     then
333       srcdir="$PWD"
334     else
335       srcdir="`(cd ${srcdir}; pwd)`"
336     fi
337   ;;
338   *  ) srcdir="`(cd ${srcdir}; pwd)`" ;;
339 esac
341 #### Check if the source directory already has a configured system in it.
342 if test `pwd` != `(cd ${srcdir} && pwd)` \
343    && test -f "${srcdir}/src/config.h" ; then
344   AC_MSG_WARN([[The directory tree `${srcdir}' is being used
345    as a build directory right now; it has been configured in its own
346    right.  To configure in another directory as well, you MUST
347    use GNU make.  If you do not have GNU make, then you must
348    now do `make distclean' in ${srcdir},
349    and then run $0 again.]])
352 #### Given the configuration name, set machfile and opsysfile to the
353 #### names of the m/*.h and s/*.h files we should use.
355 ### Canonicalize the configuration name.
357 AC_CANONICAL_HOST
358 canonical=$host
359 configuration=${host_alias-${build_alias-$host}}
361 dnl This used to use changequote, but, apart from `changequote is evil'
362 dnl per the autoconf manual, we can speed up autoconf somewhat by quoting
363 dnl the great gob of text.  Thus it's not processed for possible expansion.
364 dnl Just make sure the brackets remain balanced.
366 dnl Since Emacs can't find matching pairs of quotes, boundaries are
367 dnl indicated by comments.
368 dnl quotation begins
371 ### If you add support for a new configuration, add code to this
372 ### switch statement to recognize your configuration name and select
373 ### the appropriate operating system and machine description files.
375 ### You would hope that you could choose an m/*.h file pretty much
376 ### based on the machine portion of the configuration name, and an s/*.h
377 ### file based on the operating system portion.  However, it turns out
378 ### that each m/*.h file is pretty manufacturer-specific - for
379 ### example mips.h is MIPS
380 ### So we basically have to have a special case for each
381 ### configuration name.
383 ### As far as handling version numbers on operating systems is
384 ### concerned, make sure things will fail in a fixable way.  If
385 ### /etc/MACHINES doesn't say anything about version numbers, be
386 ### prepared to handle anything reasonably.  If version numbers
387 ### matter, be sure /etc/MACHINES says something about it.
389 machine='' opsys='' unported=no
390 case "${canonical}" in
392   ## FreeBSD ports
393   *-*-freebsd* )
394     opsys=freebsd
395     case "${canonical}" in
396       alpha*)           machine=alpha ;;
397       amd64-*|x86_64-*) machine=amdx86-64 ;;
398       arm*)             machine=arm ;;
399       ia64-*)           machine=ia64 ;;
400       i[3456]86-*)      machine=intel386 ;;
401       powerpc-*)        machine=macppc ;;
402       sparc-*)          machine=sparc ;;
403       sparc64-*)        machine=sparc ;;
404     esac
405   ;;
407   ## FreeBSD kernel + glibc based userland
408   *-*-kfreebsd*gnu* )
409     opsys=gnu-kfreebsd
410     case "${canonical}" in
411       alpha*)           machine=alpha ;;
412       amd64-*|x86_64-*) machine=amdx86-64 ;;
413       ia64-*)           machine=ia64 ;;
414       i[3456]86-*)      machine=intel386 ;;
415       powerpc-*)        machine=macppc ;;
416       sparc-*)          machine=sparc ;;
417       sparc64-*)        machine=sparc ;;
418     esac
419   ;;
421   ## NetBSD ports
422   *-*-netbsd* )
423     opsys=netbsd
424     case "${canonical}" in
425       alpha*)      machine=alpha ;;
426       x86_64-*)    machine=amdx86-64 ;;
427       arm-*)       machine=arm ;;
428       hppa-*)      machine=hp800 ;;
429       i[3456]86-*) machine=intel386 ;;
430       m68k-*)      machine=m68k ;;
431       powerpc-*)   machine=macppc ;;
432       mips-*)      machine=mips ;;
433       mipse[bl]-*) machine=mips ;;
434       sparc*-)     machine=sparc ;;
435       vax-*)       machine=vax ;;
436     esac
437   ;;
439   ## OpenBSD ports
440   *-*-openbsd* )
441     opsys=openbsd
442     case "${canonical}" in
443       alpha*)    machine=alpha ;;
444       x86_64-*)  machine=amdx86-64 ;;
445       arm-*)     machine=arm ;;
446       hppa-*)    machine=hp800 ;;
447       i386-*)    machine=intel386 ;;
448       powerpc-*) machine=macppc ;;
449       sparc*)    machine=sparc ;;
450       vax-*)     machine=vax ;;
451     esac
452   ;;
454   alpha*-*-linux-gnu* )
455     machine=alpha opsys=gnu-linux
456   ;;
458   arm*-*-linux-gnu* )
459     machine=arm opsys=gnu-linux
460   ;;
462   ## Apple Darwin / Mac OS X
463   *-apple-darwin* )
464     case "${canonical}" in
465       i[3456]86-* )  machine=intel386 ;;
466       powerpc-* )    machine=macppc ;;
467       x86_64-* )     machine=amdx86-64 ;;
468       * )            unported=yes ;;
469     esac
470     opsys=darwin
471     # Define CPP as follows to make autoconf work correctly.
472     CPP="${CC-cc} -E -no-cpp-precomp"
473     # Use fink packages if available.
474     if test -d /sw/include && test -d /sw/lib; then
475       GCC_TEST_OPTIONS="-I/sw/include -L/sw/lib"
476       CPP="${CPP} ${GCC_TEST_OPTIONS}"
477       NON_GCC_TEST_OPTIONS=${GCC_TEST_OPTIONS}
478     fi
479   ;;
481   ## HP 9000 series 700 and 800, running HP/UX
482   hppa*-hp-hpux10.2* )
483     machine=hp800 opsys=hpux10-20
484   ;;
485   hppa*-hp-hpux1[1-9]* )
486     machine=hp800 opsys=hpux11
487     CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
488   ;;
490   hppa*-*-linux-gnu* )
491     machine=hp800 opsys=gnu-linux
492   ;;
494   ## IBM machines
495   s390-*-linux-gnu* )
496     machine=ibms390 opsys=gnu-linux
497   ;;
498   s390x-*-linux-gnu* )
499     machine=ibms390x opsys=gnu-linux
500   ;;
501   rs6000-ibm-aix4.[23]* )
502     machine=ibmrs6000 opsys=aix4-2
503   ;;
504   powerpc-ibm-aix4.[23]*  )
505     machine=ibmrs6000 opsys=aix4-2
506   ;;
507   rs6000-ibm-aix[56]* )
508     machine=ibmrs6000 opsys=aix4-2
509   ;;
510   powerpc-ibm-aix[56]*  )
511     machine=ibmrs6000 opsys=aix4-2
512   ;;
514   ## Macintosh PowerPC
515   powerpc*-*-linux-gnu* )
516     machine=macppc opsys=gnu-linux
517   ;;
519   ## Silicon Graphics machines
520   ## Iris 4D
521   mips-sgi-irix6.5 )
522     machine=iris4d opsys=irix6-5
523     # Without defining _LANGUAGE_C, things get masked out in the headers
524     # so that, for instance, grepping for `free' in stdlib.h fails and
525     # AC_HEADER_STD_C fails.   (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m).
526     NON_GNU_CPP="/lib/cpp -D_LANGUAGE_C"
527     NON_GCC_TEST_OPTIONS="-D_LANGUAGE_C"
528   ;;
530   ## Suns
531   sparc-*-linux-gnu* | sparc64-*-linux-gnu* )
532     machine=sparc opsys=gnu-linux
533   ;;
535   *-sun-solaris* \
536     | i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
537     | x86_64-*-solaris2*    | x86_64-*-sunos5*)
538     case "${canonical}" in
539       i[3456]86-*-* )     machine=intel386 ;;
540       amd64-*-*|x86_64-*-*)     machine=amdx86-64 ;;
541       sparc* )          machine=sparc ;;
542       * )               unported=yes ;;
543     esac
544     case "${canonical}" in
545       *-sunos5.6* | *-solaris2.6* )
546                 opsys=sol2-6
547                 NON_GNU_CPP=/usr/ccs/lib/cpp
548                 RANLIB="ar -ts"
549                 ;;
550       *-sunos5.[7-9]* | *-solaris2.[7-9]* )
551                 opsys=sol2-6
552                 emacs_check_sunpro_c=yes
553                 NON_GNU_CPP=/usr/ccs/lib/cpp
554                 ;;
555       *-sunos5* | *-solaris* )
556                 opsys=sol2-10
557                 emacs_check_sunpro_c=yes
558                 NON_GNU_CPP=/usr/ccs/lib/cpp
559                 ;;
560     esac
561     ## Watch out for a compiler that we know will not work.
562     case "${canonical}" in
563      *-solaris* | *-sunos5* )
564                 if [ "x$CC" = x/usr/ucb/cc ]; then
565                   ## /usr/ucb/cc doesn't work;
566                   ## we should find some other compiler that does work.
567                   unset CC
568                 fi
569                 ;;
570       *) ;;
571     esac
572   ;;
574   ## IA-64
575   ia64*-*-linux* )
576     machine=ia64 opsys=gnu-linux
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       *-linux-gnu* )            opsys=gnu-linux ;;
588       *-sysv4.2uw* )            opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
589       *-sysv5uw* )              opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
590       *-sysv5OpenUNIX* )        opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
591       ## Otherwise, we'll fall through to the generic opsys code at the bottom.
592     esac
593   ;;
595   ## m68k Linux-based GNU system
596   m68k-*-linux-gnu* )
597     machine=m68k opsys=gnu-linux
598   ;;
600   ## Mips Linux-based GNU system
601   mips-*-linux-gnu* | mipsel-*-linux-gnu* \
602     | mips64-*-linux-gnu* | mips64el-*-linux-gnu* )
603     machine=mips opsys=gnu-linux
604   ;;
606   ## AMD x86-64 Linux-based GNU system
607   x86_64-*-linux-gnu* )
608     machine=amdx86-64 opsys=gnu-linux
609   ;;
611   ## Tensilica Xtensa Linux-based GNU system
612   xtensa*-*-linux-gnu* )
613     machine=xtensa opsys=gnu-linux
614     ;;
616   ## SuperH Linux-based GNU system
617   sh[34]*-*-linux-gnu* )
618     machine=sh3 opsys=gnu-linux
619   ;;
621   * )
622     unported=yes
623   ;;
624 esac
626 ### If the code above didn't choose an operating system, just choose
627 ### an operating system based on the configuration name.  You really
628 ### only want to use this when you have no idea what the right
629 ### operating system is; if you know what operating systems a machine
630 ### runs, it's cleaner to make it explicit in the case statement
631 ### above.
632 if test x"${opsys}" = x; then
633   case "${canonical}" in
634     *-gnu* )                            opsys=gnu ;;
635     * )
636       unported=yes
637     ;;
638   esac
642 dnl quotation ends
644 if test $unported = yes; then
645   AC_MSG_ERROR([Emacs hasn't been ported to `${canonical}' systems.
646 Check `etc/MACHINES' for recognized configuration names.])
649 machfile="m/${machine}.h"
650 opsysfile="s/${opsys}.h"
653 #### Choose a compiler.
654 test -n "$CC" && cc_specified=yes
656 # Save the value of CFLAGS that the user specified.
657 SPECIFIED_CFLAGS="$CFLAGS"
659 dnl Sets GCC=yes if using gcc.
660 AC_PROG_CC
662 # On Suns, sometimes $CPP names a directory.
663 if test -n "$CPP" && test -d "$CPP"; then
664   CPP=
667 ## If not using gcc, and on Solaris, and no CPP specified, see if
668 ## using a Sun compiler, which needs -Xs to prevent whitespace.
669 if test x"$GCC" != xyes && test x"$emacs_check_sunpro_c" = xyes && \
670  test x"$CPP" = x; then
671   AC_MSG_CHECKING([whether we are using a Sun C compiler])
672   AC_CACHE_VAL(emacs_cv_sunpro_c,
673   [AC_TRY_LINK([],
674 [#ifndef __SUNPRO_C
675 fail;
676 #endif
677 ], emacs_cv_sunpro_c=yes, emacs_cv_sunpro_c=no)])
678   AC_MSG_RESULT($emacs_cv_sunpro_c)
680   if test x"$emacs_cv_sunpro_c" = xyes; then
681     NON_GNU_CPP="$CC -E -Xs"
682   fi
685 #### Some systems specify a CPP to use unless we are using GCC.
686 #### Now that we know whether we are using GCC, we can decide whether
687 #### to use that one.
688 if test "x$NON_GNU_CPP" != x && test x$GCC != xyes && test "x$CPP" = x
689 then
690   CPP="$NON_GNU_CPP"
693 #### Some systems specify a CC to use unless we are using GCC.
694 #### Now that we know whether we are using GCC, we can decide whether
695 #### to use that one.
696 if test "x$NON_GNU_CC" != x && test x$GCC != xyes &&
697   test x$cc_specified != xyes
698 then
699   CC="$NON_GNU_CC"
702 if test x$GCC = xyes && test "x$GCC_TEST_OPTIONS" != x
703 then
704   CC="$CC $GCC_TEST_OPTIONS"
707 if test x$GCC = x && test "x$NON_GCC_TEST_OPTIONS" != x
708 then
709   CC="$CC $NON_GCC_TEST_OPTIONS"
712 dnl checks for Unix variants
713 AC_USE_SYSTEM_EXTENSIONS
715 ### Use -Wno-pointer-sign if the compiler supports it
716 AC_MSG_CHECKING([whether gcc understands -Wno-pointer-sign])
717 SAVE_CFLAGS="$CFLAGS"
718 CFLAGS="$CFLAGS -Wno-pointer-sign"
719 AC_TRY_COMPILE([], [], has_option=yes, has_option=no,)
720 if test $has_option = yes; then
721    C_WARNINGS_SWITCH="-Wno-pointer-sign $C_WARNINGS_SWITCH"
723 AC_MSG_RESULT($has_option)
724 CFLAGS="$SAVE_CFLAGS"
725 unset has_option
726 unset SAVE_CFLAGS
728 ### Use -Wdeclaration-after-statement if the compiler supports it
729 AC_MSG_CHECKING([whether gcc understands -Wdeclaration-after-statement])
730 SAVE_CFLAGS="$CFLAGS"
731 CFLAGS="$CFLAGS -Wdeclaration-after-statement"
732 AC_TRY_COMPILE([], [], has_option=yes, has_option=no,)
733 if test $has_option = yes; then
734    C_WARNINGS_SWITCH="-Wdeclaration-after-statement $C_WARNINGS_SWITCH"
736 AC_MSG_RESULT($has_option)
737 CFLAGS="$SAVE_CFLAGS"
738 unset has_option
739 unset SAVE_CFLAGS
741 #### Some other nice autoconf tests.
743 dnl checks for programs
744 AC_PROG_CPP
745 AC_PROG_INSTALL
746 if test "x$RANLIB" = x; then
747   AC_PROG_RANLIB
750 ## Although we're running on an amd64 kernel, we're actually compiling for
751 ## the x86 architecture.  The user should probably have provided an
752 ## explicit --build to `configure', but if everything else than the kernel
753 ## is running in i386 mode, we can help them out.
754 if test "$machine" = "amdx86-64"; then
755   AC_CHECK_DECL([i386])
756   if test "$ac_cv_have_decl_i386" = "yes"; then
757     canonical=`echo "$canonical" | sed -e 's/^amd64/i386/' -e 's/^x86_64/i386/'`
758     machine=intel386
759     machfile="m/${machine}.h"
760   fi
763 AC_PATH_PROG(INSTALL_INFO, install-info)
764 AC_PATH_PROG(INSTALL_INFO, install-info,, /usr/sbin)
765 AC_PATH_PROG(INSTALL_INFO, install-info,:, /sbin)
766 dnl Don't use GZIP, which is used by gzip for additional parameters.
767 AC_PATH_PROG(GZIP_PROG, gzip)
770 ## Need makeinfo >= 4.6 (?) to build the manuals.
771 AC_PATH_PROG(MAKEINFO, makeinfo, no)
772 dnl By this stage, configure has already checked for egrep and set EGREP,
773 dnl or exited with an error if no egrep was found.
774 if test "$MAKEINFO" != "no" && \
775   test x"`$MAKEINFO --version 2> /dev/null | $EGREP 'texinfo[[^0-9]]*([[1-4]][[0-9]]+|[[5-9]]|4\.[[6-9]]|4\.[[1-5]][[0-9]]+)'`" = x; then
776    MAKEINFO=no
779 ## Makeinfo is unusual.  For a released Emacs, the manuals are
780 ## pre-built, and not deleted by the normal clean rules.  makeinfo is
781 ## therefore in the category of "special tools" not normally required, which
782 ## configure does not have to check for (eg autoconf itself).
783 ## In a Bazaar checkout on the other hand, the manuals are not included.
784 ## So makeinfo is a requirement to build from Bazaar, and configure
785 ## should test for it as it does for any other build requirement.
786 ## We use the presence of $srcdir/info/emacs to distinguish a release,
787 ## with pre-built manuals, from a Bazaar checkout.
788 if test "$MAKEINFO" = "no"; then
789   if test "x${with_makeinfo}" = "xno"; then
790     MAKEINFO=off
791   elif test ! -e $srcdir/info/emacs; then
792     AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.6, and your
793 source tree does not seem to have pre-built manuals in the `info' directory.
794 Either install a suitable version of makeinfo, or re-run configure
795 with the `--without-makeinfo' option to build without the manuals.] )
796   fi
799 dnl Add our options to ac_link now, after it is set up.
801 if test x$GCC = xyes && test "x$GCC_LINK_TEST_OPTIONS" != x
802 then
803   ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
806 if test x$GCC = x && test "x$NON_GCC_LINK_TEST_OPTIONS" != x
807 then
808   ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
811 dnl We need -znocombreloc if we're using a relatively recent GNU ld.
812 dnl If we can link with the flag, it shouldn't do any harm anyhow.
813 dnl (Don't use `-z nocombreloc' as -z takes no arg on Irix.)
814 dnl Treat GCC specially since it just gives a non-fatal `unrecognized option'
815 dnl if not built to support GNU ld.
817 late_LDFLAGS=$LDFLAGS
818 if test "$GCC" = yes; then
819   LDFLAGS="$LDFLAGS -Wl,-znocombreloc"
820 else
821   LDFLAGS="$LDFLAGS -znocombreloc"
824 AC_MSG_CHECKING([for -znocombreloc])
825 AC_LINK_IFELSE([main(){return 0;}],
826   [AC_MSG_RESULT(yes)],
827   LDFLAGS=$late_LDFLAGS
828   [AC_MSG_RESULT(no)])
830 #### Extract some information from the operating system and machine files.
832 AC_CHECKING([the machine- and system-dependent files to find out
833  - which libraries the lib-src programs will want, and
834  - whether the GNU malloc routines are usable])
836 ### First figure out CFLAGS (which we use for running the compiler here)
837 ### and REAL_CFLAGS (which we use for real compilation).
838 ### The two are the same except on a few systems, where they are made
839 ### different to work around various lossages.  For example,
840 ### GCC 2.5 on GNU/Linux needs them to be different because it treats -g
841 ### as implying static linking.
843 ### If the CFLAGS env var is specified, we use that value
844 ### instead of the default.
846 ### It's not important that this name contain the PID; you can't run
847 ### two configures in the same directory and have anything work
848 ### anyway.
849 tempcname="conftest.c"
851 echo '
852 #include "'${srcdir}'/src/'${opsysfile}'"
853 #include "'${srcdir}'/src/'${machfile}'"
855 configure___ LIBX=-lX11
857 configure___ unexec=UNEXEC
859 #ifdef CANNOT_DUMP
860 configure___ cannot_dump=yes
861 #else
862 configure___ cannot_dump=no
863 #endif
865 #ifdef SYSTEM_MALLOC
866 configure___ system_malloc=yes
867 #else
868 configure___ system_malloc=no
869 #endif
871 #ifdef USE_MMAP_FOR_BUFFERS
872 configure___ use_mmap_for_buffers=yes
873 #else
874 configure___ use_mmap_for_buffers=no
875 #endif
877 #ifndef C_OPTIMIZE_SWITCH
878 #ifdef __GNUC__
879 #define C_OPTIMIZE_SWITCH -O2
880 #else
881 #define C_OPTIMIZE_SWITCH -O
882 #endif
883 #endif
885 #ifndef C_WARNINGS_SWITCH
886 #define C_WARNINGS_SWITCH ${C_WARNINGS_SWITCH}
887 #endif
889 #ifdef THIS_IS_CONFIGURE
891 /* Get the CFLAGS for tests in configure.  */
892 #ifdef __GNUC__
893 configure___ CFLAGS=-g C_OPTIMIZE_SWITCH '${SPECIFIED_CFLAGS}'
894 #else
895 configure___ CFLAGS='${SPECIFIED_CFLAGS}'
896 #endif
898 #else /* not THIS_IS_CONFIGURE */
900 /* Get the CFLAGS for real compilation.  */
901 #ifdef __GNUC__
902 configure___ REAL_CFLAGS=-g C_OPTIMIZE_SWITCH C_WARNINGS_SWITCH ${PROFILING_CFLAGS} '${SPECIFIED_CFLAGS}'
903 #else
904 configure___ REAL_CFLAGS='${SPECIFIED_CFLAGS}'
905 #endif
907 #endif /* not THIS_IS_CONFIGURE */
908 ' > ${tempcname}
910 LDFLAGS="${LDFLAGS} ${PROFILING_LDFLAGS}"
912 # The value of CPP is a quoted variable reference, so we need to do this
913 # to get its actual value...
914 CPP=`eval "echo $CPP"`
915 [eval `${CPP} -Isrc ${tempcname} \
916        | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'`
917 if test "x$SPECIFIED_CFLAGS" = x; then
918   eval `${CPP} -Isrc -DTHIS_IS_CONFIGURE ${tempcname} \
919          | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'`
920 else
921   REAL_CFLAGS="$CFLAGS"
923 rm ${tempcname}
926 AC_SUBST(cannot_dump)
929 LD_SWITCH_SYSTEM=
930 case "$opsys" in
931   freebsd)
932    ## Let `ld' find image libs and similar things in /usr/local/lib.
933    ## The system compiler, GCC, has apparently been modified to not
934    ## look there, contrary to what a stock GCC would do.
935    LD_SWITCH_SYSTEM=-L/usr/local/lib
936    ;;
938   gnu-linux)
939    ## cpp test was "ifdef __mips__", but presumably this is equivalent...
940    test "$machine" = "mips" && LD_SWITCH_SYSTEM="-G 0"
941    ;;
943   netbsd)
944    LD_SWITCH_SYSTEM="-Wl,-rpath,/usr/pkg/lib -L/usr/pkg/lib -Wl,-rpath,/usr/local/lib -L/usr/local/lib"
945    ;;
947   openbsd)
948    ## Han Boetes <han@mijncomputer.nl> says this is necessary,
949    ## otherwise Emacs dumps core on elf systems.
950    LD_SWITCH_SYSTEM="-Z"
951    ;;
952 esac
953 AC_SUBST(LD_SWITCH_SYSTEM)
955 ac_link="$ac_link $LD_SWITCH_SYSTEM"
957 ## This setting of LD_SWITCH_SYSTEM references LD_SWITCH_X_SITE_AUX,
958 ## which has not been defined yet.  When this was handled with cpp,
959 ## it was expanded to null when configure sourced the s/*.h file.
960 ## Thus LD_SWITCH_SYSTEM had different values in configure and the Makefiles.
961 ## FIXME it would be cleaner to put this in LD_SWITCH_SYSTEM_TEMACS
962 ## (or somesuch), but because it is supposed to go at the _front_
963 ## of LD_SWITCH_SYSTEM, we cannot do that in exactly the same way.
964 ## Compare with the gnu-linux case below, which added to the end
965 ## of LD_SWITCH_SYSTEM, and so can instead go at the front of
966 ## LD_SWITCH_SYSTEM_TEMACS.
967 case "$opsys" in
968   netbsd|openbsd)
969    ## _AUX_RPATH is like _AUX, but uses -rpath instead of -R.
970    LD_SWITCH_SYSTEM="\$(LD_SWITCH_X_SITE_AUX_RPATH) $LD_SWITCH_SYSTEM" ;;
971 esac
974 C_SWITCH_MACHINE=
975 if test "$machine" = "alpha"; then
976   AC_CHECK_DECL([__ELF__])
977   if test "$ac_cv_have_decl___ELF__" = "yes"; then
978     ## With ELF, make sure that all common symbols get allocated to in the
979     ## data section.  Otherwise, the dump of temacs may miss variables in
980     ## the shared library that have been initialized.  For example, with
981     ## GNU libc, __malloc_initialized would normally be resolved to the
982     ## shared library's .bss section, which is fatal.
983     if test "x$GCC" = "xyes"; then
984       C_SWITCH_MACHINE="-fno-common"
985     else
986       AC_MSG_ERROR([What gives?  Fix me if DEC Unix supports ELF now.])
987     fi
988   fi
990 AC_SUBST(C_SWITCH_MACHINE)
993 C_SWITCH_SYSTEM=
994 ## Some programs in src produce warnings saying certain subprograms
995 ## are too complex and need a MAXMEM value greater than 2000 for
996 ## additional optimization.  --nils@exp-math.uni-essen.de
997 test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
998   C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
999 ## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
1000 ## It is redundant in glibc2, since we define _GNU_SOURCE.
1001 AC_SUBST(C_SWITCH_SYSTEM)
1004 LIBS_SYSTEM=
1005 case "$opsys" in
1006   ## IBM's X11R5 uses -lIM and -liconv in AIX 3.2.2.
1007   aix4-2) LIBS_SYSTEM="-lrts -lIM -liconv" ;;
1009   freebsd) LIBS_SYSTEM="-lutil" ;;
1011   hpux*) LIBS_SYSTEM="-l:libdld.sl" ;;
1013   sol2*) LIBS_SYSTEM="-lsocket -lnsl -lkstat" ;;
1015   ## Motif needs -lgen.
1016   unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
1017 esac
1018 AC_SUBST(LIBS_SYSTEM)
1021 ### Make sure subsequent tests use flags consistent with the build flags.
1023 if test x"${OVERRIDE_CPPFLAGS}" != x; then
1024   CPPFLAGS="${OVERRIDE_CPPFLAGS}"
1025 else
1026   CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
1029 dnl For AC_FUNC_GETLOADAVG, at least:
1030 AC_CONFIG_LIBOBJ_DIR(src)
1032 dnl Do this early because it can frob feature test macros for Unix-98 &c.
1033 AC_SYS_LARGEFILE
1036 ## If user specified a crt-dir, use that unconditionally.
1037 if test "X$CRT_DIR" = "X"; then
1039   case "$canonical" in
1040     x86_64-*-linux-gnu* | s390x-*-linux-gnu*)
1041     ## On x86-64 and s390x GNU/Linux distributions, the standard library
1042     ## can be in a variety of places.  We only try /usr/lib64 and /usr/lib.
1043     ## For anything else (eg /usr/lib32), it is up the user to specify
1044     ## the location (bug#5655).
1045     ## Test for crtn.o, not just the directory, because sometimes the
1046     ## directory exists but does not have the relevant files (bug#1287).
1047     ## FIXME better to test for binary compatibility somehow.
1048     test -e /usr/lib64/crtn.o && CRT_DIR=/usr/lib64
1049     ;;
1051     powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*) CRT_DIR=/usr/lib64 ;;
1052   esac
1054   case "$opsys" in
1055     hpux10-20) CRT_DIR=/lib ;;
1056   esac
1058   ## Default is /usr/lib.
1059   test "X$CRT_DIR" = "X" && CRT_DIR=/usr/lib
1061 else
1063   ## Some platforms don't use any of these files, so it is not
1064   ## appropriate to put this test outside the if block.
1065   test -e $CRT_DIR/crtn.o || test -e $CRT_DIR/crt0.o || \
1066     AC_MSG_ERROR([crt*.o not found in specified location.])
1070 AC_SUBST(CRT_DIR)
1072 LIB_MATH=-lm
1073 LIB_STANDARD=
1074 START_FILES=
1076 case $opsys in
1077   cygwin )
1078     LIB_MATH=
1079     START_FILES='ecrt0.o'
1080     ;;
1081   darwin )
1082     ## Adding -lm confuses the dynamic linker, so omit it.
1083     LIB_MATH=
1084     START_FILES='pre-crt0.o'
1085     ;;
1086   freebsd )
1087     LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o $(CRT_DIR)/crtn.o'
1088     START_FILES='pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtbegin.o'
1089     ;;
1090   gnu-linux | gnu-kfreebsd )
1091     LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtn.o'
1092     START_FILES='pre-crt0.o $(CRT_DIR)/crt1.o $(CRT_DIR)/crti.o'
1093     ;;
1094   hpux10-20 | hpux11 )
1095     LIB_STANDARD=-lc
1096     START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o'
1097     ;;
1098   netbsd | openbsd )
1099     if test -f $CRT_DIR/crti.o; then
1100         LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o $(CRT_DIR)/crtn.o'
1101         START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtbegin.o'
1102     else
1103         LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o'
1104         START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crtbegin.o'
1105     fi
1106     ;;
1107 esac
1109 AC_SUBST(LIB_MATH)
1110 AC_SUBST(START_FILES)
1112 dnl This function definition taken from Gnome 2.0
1113 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
1114 dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
1115 dnl also defines GSTUFF_PKG_ERRORS on error
1116 AC_DEFUN([PKG_CHECK_MODULES], [
1117   succeeded=no
1119   AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1121   if test "$PKG_CONFIG" = "no" ; then
1122      ifelse([$4], , [AC_MSG_ERROR([
1123       *** 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])
1124   else
1125      PKG_CONFIG_MIN_VERSION=0.9.0
1126      if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
1127         AC_MSG_CHECKING(for $2)
1129         if $PKG_CONFIG --exists "$2" 2>&AS_MESSAGE_LOG_FD; then
1130             AC_MSG_RESULT(yes)
1131             succeeded=yes
1133             AC_MSG_CHECKING($1_CFLAGS)
1134             $1_CFLAGS=`$PKG_CONFIG --cflags "$2"|sed -e 's,///*,/,g'`
1135             AC_MSG_RESULT($$1_CFLAGS)
1137             AC_MSG_CHECKING($1_LIBS)
1138             $1_LIBS=`$PKG_CONFIG --libs "$2"|sed -e 's,///*,/,g'`
1139             AC_MSG_RESULT($$1_LIBS)
1140         else
1141             AC_MSG_RESULT(no)
1142             $1_CFLAGS=""
1143             $1_LIBS=""
1144             ## If we have a custom action on failure, don't print errors, but
1145             ## do set a variable so people can do so.
1146             $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
1147             ifelse([$4], ,echo $$1_PKG_ERRORS,)
1148         fi
1150         AC_SUBST($1_CFLAGS)
1151         AC_SUBST($1_LIBS)
1152      else
1153         echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
1154         echo "*** See http://www.freedesktop.org/software/pkgconfig"
1155      fi
1156   fi
1158   if test $succeeded = yes; then
1159      ifelse([$3], , :, [$3])
1160   else
1161      ifelse([$4], , [AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.])], [$4])
1162   fi
1166 if test "${with_sound}" != "no"; then
1167   # Sound support for GNU/Linux and the free BSDs.
1168   AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h soundcard.h)
1169   # Emulation library used on NetBSD.
1170   AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
1171   AC_SUBST(LIBSOUND)
1173   ALSA_REQUIRED=1.0.0
1174   ALSA_MODULES="alsa >= $ALSA_REQUIRED"
1175   PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
1176   if test $HAVE_ALSA = yes; then
1177     SAVE_CFLAGS="$CFLAGS"
1178     SAVE_LDFLAGS="$LDFLAGS"
1179     CFLAGS="$ALSA_CFLAGS $CFLAGS"
1180     LDFLAGS="$ALSA_LIBS $LDFLAGS"
1181     AC_TRY_COMPILE([#include <asoundlib.h>], [snd_lib_error_set_handler (0);],
1182                     emacs_alsa_normal=yes,
1183                     emacs_alsa_normal=no)
1184     if test "$emacs_alsa_normal" != yes; then
1185       AC_TRY_COMPILE([#include <alsa/asoundlib.h>],
1186                      [snd_lib_error_set_handler (0);],
1187                      emacs_alsa_subdir=yes,
1188                      emacs_alsa_subdir=no)
1189       if test "$emacs_alsa_subdir" != yes; then
1190         AC_MSG_ERROR([pkg-config found alsa, but it does not compile.  See config.log for error messages.])
1191       fi
1192       ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
1193     fi
1195     CFLAGS="$SAVE_CFLAGS"
1196     LDFLAGS="$SAVE_LDFLAGS"
1197     LIBSOUND="$LIBSOUND $ALSA_LIBS"
1198     CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
1199     AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
1200   fi
1201   AC_SUBST(CFLAGS_SOUND)
1204 dnl checks for header files
1205 AC_CHECK_HEADERS(sys/select.h sys/timeb.h sys/time.h unistd.h utime.h \
1206   linux/version.h sys/systeminfo.h termios.h limits.h string.h stdlib.h \
1207   stdio_ext.h fcntl.h strings.h coff.h pty.h sys/mman.h \
1208   sys/param.h sys/vlimit.h sys/resource.h locale.h sys/_mbstate_t.h \
1209   sys/utsname.h pwd.h utmp.h)
1211 AC_MSG_CHECKING(if personality LINUX32 can be set)
1212 AC_TRY_COMPILE([#include <sys/personality.h>], [personality (PER_LINUX32)],
1213                emacs_cv_personality_linux32=yes,
1214                emacs_cv_personality_linux32=no)
1215 AC_MSG_RESULT($emacs_cv_personality_linux32)
1217 if test $emacs_cv_personality_linux32 = yes; then
1218   AC_DEFINE(HAVE_PERSONALITY_LINUX32, 1,
1219             [Define to 1 if personality LINUX32 can be set.])
1222 dnl On Solaris 8 there's a compilation warning for term.h because
1223 dnl it doesn't define `bool'.
1224 AC_CHECK_HEADERS(term.h, , , -)
1225 AC_HEADER_STDC
1226 AC_HEADER_TIME
1227 AC_CHECK_DECLS([sys_siglist])
1228 if test $ac_cv_have_decl_sys_siglist != yes; then
1229   # For Tru64, at least:
1230   AC_CHECK_DECLS([__sys_siglist])
1231   if test $ac_cv_have_decl___sys_siglist = yes; then
1232     AC_DEFINE(sys_siglist, __sys_siglist,
1233               [Define to any substitute for sys_siglist.])
1234   fi
1236 AC_HEADER_SYS_WAIT
1238 dnl Some systems have utime.h but don't declare the struct anyplace.
1239 AC_CACHE_CHECK(for struct utimbuf, emacs_cv_struct_utimbuf,
1240 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
1241 #include <sys/time.h>
1242 #include <time.h>
1243 #else
1244 #ifdef HAVE_SYS_TIME_H
1245 #include <sys/time.h>
1246 #else
1247 #include <time.h>
1248 #endif
1249 #endif
1250 #ifdef HAVE_UTIME_H
1251 #include <utime.h>
1252 #endif], [static struct utimbuf x; x.actime = x.modtime;],
1253   emacs_cv_struct_utimbuf=yes, emacs_cv_struct_utimbuf=no))
1254 if test $emacs_cv_struct_utimbuf = yes; then
1255   AC_DEFINE(HAVE_STRUCT_UTIMBUF, 1, [Define to 1 if `struct utimbuf' is declared by <utime.h>.])
1258 dnl checks for typedefs
1259 AC_TYPE_SIGNAL
1261 dnl Check for speed_t typedef.
1262 AC_CACHE_CHECK(for speed_t, emacs_cv_speed_t,
1263   [AC_TRY_COMPILE([#include <termios.h>], [speed_t x = 1;],
1264     emacs_cv_speed_t=yes, emacs_cv_speed_t=no)])
1265 if test $emacs_cv_speed_t = yes; then
1266   AC_DEFINE(HAVE_SPEED_T, 1,
1267            [Define to 1 if `speed_t' is declared by <termios.h>.])
1270 AC_CACHE_CHECK(for struct timeval, emacs_cv_struct_timeval,
1271 AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
1272 #include <sys/time.h>
1273 #include <time.h>
1274 #else
1275 #ifdef HAVE_SYS_TIME_H
1276 #include <sys/time.h>
1277 #else
1278 #include <time.h>
1279 #endif
1280 #endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
1281   emacs_cv_struct_timeval=yes, emacs_cv_struct_timeval=no))
1282 HAVE_TIMEVAL=$emacs_cv_struct_timeval
1283 if test $emacs_cv_struct_timeval = yes; then
1284   AC_DEFINE(HAVE_TIMEVAL, 1, [Define to 1 if `struct timeval' is declared by <sys/time.h>.])
1287 AC_CACHE_CHECK(for struct exception, emacs_cv_struct_exception,
1288 AC_TRY_COMPILE([#include <math.h>],
1289 [static struct exception x; x.arg1 = x.arg2 = x.retval; x.name = ""; x.type = 1;],
1290   emacs_cv_struct_exception=yes, emacs_cv_struct_exception=no))
1291 HAVE_EXCEPTION=$emacs_cv_struct_exception
1292 if test $emacs_cv_struct_exception != yes; then
1293   AC_DEFINE(NO_MATHERR, 1, [Define to 1 if you don't have struct exception in math.h.])
1296 AC_CHECK_HEADERS(sys/socket.h)
1297 AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT
1298 #if HAVE_SYS_SOCKET_H
1299 #include <sys/socket.h>
1300 #endif])
1302 dnl checks for structure members
1303 AC_STRUCT_TM
1304 AC_STRUCT_TIMEZONE
1305 AC_CHECK_MEMBER(struct tm.tm_gmtoff,
1306                 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
1307                            [Define to 1 if `tm_gmtoff' is member of `struct tm'.])],,
1308                 [#include <time.h>])
1309 AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr,
1310                   struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr,
1311                   struct ifreq.ifr_addr], , ,
1312                  [AC_INCLUDES_DEFAULT
1313 #if HAVE_SYS_SOCKET_H
1314 #include <sys/socket.h>
1315 #endif
1316 #if HAVE_NET_IF_H
1317 #include <net/if.h>
1318 #endif])
1320 dnl checks for compiler characteristics
1322 dnl Testing __STDC__ to determine prototype support isn't good enough.
1323 dnl DEC C, for instance, doesn't define it with default options, and
1324 dnl is used on 64-bit systems (OSF Alphas).  Similarly for volatile
1325 dnl and void *.
1326 AC_C_PROTOTYPES
1327 AC_C_VOLATILE
1328 AC_C_CONST
1329 dnl This isn't useful because we can't turn on use of `inline' unless
1330 dnl the compiler groks `extern inline'.
1331 dnl AC_C_INLINE
1332 AC_CACHE_CHECK([for void * support], emacs_cv_void_star,
1333   [AC_TRY_COMPILE(, [void * foo;],
1334                    emacs_cv_void_star=yes, emacs_cv_void_star=no)])
1335 if test $emacs_cv_void_star = yes; then
1336   AC_DEFINE(POINTER_TYPE, void)
1337 else
1338   AC_DEFINE(POINTER_TYPE, char)
1340 AH_TEMPLATE(POINTER_TYPE,
1341             [Define as `void' if your compiler accepts `void *'; otherwise
1342              define as `char'.])dnl
1346 dnl This could be used for targets which can have both byte sexes.
1347 dnl We could presumably replace the hardwired WORDS_BIG_ENDIAN generally.
1348 dnl AC_C_BIGENDIAN
1350 dnl check for Make feature
1351 AC_PROG_MAKE_SET
1353 DEPFLAGS=
1354 MKDEPDIR=":"
1355 deps_frag=deps.mk
1356 dnl check for GNU Make if we have GCC and autodepend is on.
1357 if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
1358    AC_MSG_CHECKING([whether we are using GNU Make])
1359    HAVE_GNU_MAKE=no
1360    testval=`make --version 2>/dev/null | grep 'GNU Make'`
1361    if test "x$testval" != x; then
1362       HAVE_GNU_MAKE=yes
1363    else
1364       ac_enable_autodepend=no
1365    fi
1366    AC_MSG_RESULT([$HAVE_GNU_MAKE])
1367    if test $HAVE_GNU_MAKE = yes; then
1368       AC_MSG_CHECKING([whether gcc understands -MMD -MF])
1369       SAVE_CFLAGS="$CFLAGS"
1370       CFLAGS="$CFLAGS -MMD -MF deps.d"
1371       AC_TRY_COMPILE([], [], , ac_enable_autodepend=no)
1372       CFLAGS="$SAVE_CFLAGS"
1373       test -f deps.d || ac_enable_autodepend=no
1374       rm -rf deps.d
1375       AC_MSG_RESULT([$ac_enable_autodepend])
1376    fi
1377    if test $ac_enable_autodepend = yes; then
1378       DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d'
1379       ## In parallel builds, another make might create depdir between
1380       ## the first test and mkdir, so stick another test on the end.
1381       ## Or use mkinstalldirs?  mkdir -p is not portable.
1382       MKDEPDIR='test -d ${DEPDIR} || mkdir ${DEPDIR} || test -d ${DEPDIR}'
1383       deps_frag=autodeps.mk
1384    fi
1386 deps_frag=$srcdir/src/$deps_frag
1387 AC_SUBST(MKDEPDIR)
1388 AC_SUBST(DEPFLAGS)
1389 AC_SUBST_FILE(deps_frag)
1392 dnl checks for operating system services
1393 AC_SYS_LONG_FILE_NAMES
1395 #### Choose a window system.
1397 AC_PATH_X
1398 if test "$no_x" = yes; then
1399   window_system=none
1400 else
1401   window_system=x11
1404 ## Workaround for bug in autoconf <= 2.62.
1405 ## http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01551.html
1406 ## No need to do anything special for these standard directories.
1407 if test -n "${x_libraries}" && test x"${x_libraries}" != xNONE; then
1409    x_libraries=`echo :${x_libraries}: | sed -e 's|:/usr/lib64:|:|g' -e 's|:/lib64:|:|g' -e 's|^:||' -e 's|:$||'`
1413 LD_SWITCH_X_SITE_AUX=
1414 LD_SWITCH_X_SITE_AUX_RPATH=
1415 if test "${x_libraries}" != NONE; then
1416   if test -n "${x_libraries}"; then
1417     LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
1418     LD_SWITCH_X_SITE_AUX=-R`echo ${x_libraries} | sed -e "s/:/ -R/g"`
1419     LD_SWITCH_X_SITE_AUX_RPATH=`echo ${LD_SWITCH_X_SITE_AUX} | sed -e 's/-R/-Wl,-rpath,/'`
1420   fi
1421   x_default_search_path=""
1422   x_search_path=${x_libraries}
1423   if test -z "${x_search_path}"; then
1424     x_search_path=/usr/lib
1425   fi
1426   for x_library in `echo ${x_search_path}: | \
1427                     sed -e "s/:/ /g" -e p -e "s:/lib[[^ /]]* :/share :g"`; do
1428     x_search_path="\
1429 ${x_library}/X11/%L/%T/%N%C%S:\
1430 ${x_library}/X11/%l/%T/%N%C%S:\
1431 ${x_library}/X11/%T/%N%C%S:\
1432 ${x_library}/X11/%L/%T/%N%S:\
1433 ${x_library}/X11/%l/%T/%N%S:\
1434 ${x_library}/X11/%T/%N%S"
1435     if test x"${x_default_search_path}" = x; then
1436       x_default_search_path=${x_search_path}
1437     else
1438       x_default_search_path="${x_search_path}:${x_default_search_path}"
1439     fi
1440   done
1442 AC_SUBST(LD_SWITCH_X_SITE_AUX)
1443 AC_SUBST(LD_SWITCH_X_SITE_AUX_RPATH)
1445 if test "${x_includes}" != NONE && test -n "${x_includes}"; then
1446   C_SWITCH_X_SITE=-I`echo ${x_includes} | sed -e "s/:/ -I/g"`
1449 if test x"${x_includes}" = x; then
1450   bitmapdir=/usr/include/X11/bitmaps
1451 else
1452   # accumulate include directories that have X11 bitmap subdirectories
1453   bmd_acc="dummyval"
1454   for bmd in `echo ${x_includes} | sed -e "s/:/ /g"`; do
1455     if test -d "${bmd}/X11/bitmaps"; then
1456       bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps"
1457     fi
1458     if test -d "${bmd}/bitmaps"; then
1459       bmd_acc="${bmd_acc}:${bmd}/bitmaps"
1460     fi
1461   done
1462   if test ${bmd_acc} != "dummyval"; then
1463     bitmapdir=`echo ${bmd_acc} | sed -e "s/^dummyval://"`
1464   fi
1467 HAVE_NS=no
1468 NS_IMPL_COCOA=no
1469 NS_IMPL_GNUSTEP=no
1470 tmp_CPPFLAGS="$CPPFLAGS"
1471 tmp_CFLAGS="$CFLAGS"
1472 CPPFLAGS="$CPPFLAGS -x objective-c"
1473 CFLAGS="$CFLAGS -x objective-c"
1474 TEMACS_LDFLAGS2="\${LDFLAGS}"
1475 dnl I don't think it's especially important, but src/Makefile.in
1476 dnl (now the only user of ns_appdir) used to go to the trouble of adding a
1477 dnl trailing "/" to it, so now we do it here.
1478 if test "${with_ns}" != no; then
1479   if test "${opsys}" = darwin; then
1480      NS_IMPL_COCOA=yes
1481      ns_appdir=`pwd`/nextstep/Emacs.app/
1482      ns_appbindir=${ns_appdir}Contents/MacOS/
1483      ns_appresdir=${ns_appdir}Contents/Resources
1484      ns_appsrc=${srcdir}/nextstep/Cocoa/Emacs.base
1485   elif test -f $GNUSTEP_CONFIG_FILE; then
1486      NS_IMPL_GNUSTEP=yes
1487      ns_appdir=`pwd`/nextstep/Emacs.app/
1488      ns_appbindir=${ns_appdir}
1489      ns_appresdir=${ns_appdir}Resources
1490      ns_appsrc=${srcdir}/nextstep/GNUstep/Emacs.base
1491      dnl FIXME sourcing this several times in subshells seems inefficient.
1492      GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
1493      GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
1494      dnl I seemed to need these as well with GNUstep-startup 0.25.
1495      GNUSTEP_LOCAL_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_HEADERS)"
1496      GNUSTEP_LOCAL_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_LIBRARIES)"
1497      test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \
1498        GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}"
1499      test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \
1500        GNUSTEP_LOCAL_LIBRARIES="-L${GNUSTEP_LOCAL_LIBRARIES}"
1501      CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1502      CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1503      REAL_CFLAGS="$REAL_CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1504      LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
1505      LIB_STANDARD=
1506      START_FILES=
1507      TEMACS_LDFLAGS2=
1508   fi
1509   AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
1510                   [AC_MSG_ERROR([`--with-ns' was specified, but the include
1511   files are missing or cannot be compiled.])])
1512   NS_HAVE_NSINTEGER=yes
1513   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <Foundation/NSObjCRuntime.h>],
1514                                      [NSInteger i;])],
1515                     ns_have_nsinteger=yes,
1516                     ns_have_nsinteger=no)
1517   if test $ns_have_nsinteger = no; then
1518     NS_HAVE_NSINTEGER=no
1519   fi
1521 AC_SUBST(TEMACS_LDFLAGS2)
1523 ns_frag=/dev/null
1524 NS_OBJ=
1525 NS_SUPPORT=
1526 if test "${HAVE_NS}" = yes; then
1527   window_system=nextstep
1528   with_xft=no
1529   # set up packaging dirs
1530   exec_prefix=${ns_appbindir}
1531   libexecdir=${ns_appbindir}/libexec
1532   if test "${EN_NS_SELF_CONTAINED}" = yes; then
1533      prefix=${ns_appresdir}
1534   fi
1535   ns_frag=$srcdir/src/ns.mk
1536   NS_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o fontset.o fringe.o image.o"
1537   NS_SUPPORT="\${lispsource}emacs-lisp/easymenu.elc \${lispsource}term/ns-win.elc"
1539 CFLAGS="$tmp_CFLAGS"
1540 CPPFLAGS="$tmp_CPPFLAGS"
1541 AC_SUBST(NS_OBJ)
1542 AC_SUBST(NS_SUPPORT)
1543 AC_SUBST(LIB_STANDARD)
1544 AC_SUBST_FILE(ns_frag)
1546 case "${window_system}" in
1547   x11 )
1548     HAVE_X_WINDOWS=yes
1549     HAVE_X11=yes
1550     case "${with_x_toolkit}" in
1551       athena | lucid ) USE_X_TOOLKIT=LUCID ;;
1552       motif ) USE_X_TOOLKIT=MOTIF ;;
1553       gtk ) with_gtk=yes
1554 dnl Dont set this for GTK.  A lot of tests below assumes Xt when
1555 dnl USE_X_TOOLKIT is set.
1556             USE_X_TOOLKIT=none ;;
1557       no ) USE_X_TOOLKIT=none ;;
1558 dnl If user did not say whether to use a toolkit, make this decision later:
1559 dnl use the toolkit if we have gtk, or X11R5 or newer.
1560       * ) USE_X_TOOLKIT=maybe ;;
1561     esac
1562   ;;
1563   nextstep | none )
1564     HAVE_X_WINDOWS=no
1565     HAVE_X11=no
1566     USE_X_TOOLKIT=none
1567   ;;
1568 esac
1570 if test "$window_system" = none && test "X$with_x" != "Xno"; then
1571    AC_CHECK_PROG(HAVE_XSERVER, X, true, false)
1572    if test "$HAVE_XSERVER" = true ||
1573       test -n "$DISPLAY" ||
1574       test "`echo /usr/lib/libX11.*`" != "/usr/lib/libX11.*"; then
1575         AC_MSG_ERROR([You seem to be running X, but no X development libraries
1576 were found.  You should install the relevant development files for X
1577 and for the toolkit you want, such as Gtk+, Lesstif or Motif.  Also make
1578 sure you have development files for image handling, i.e.
1579 tiff, gif, jpeg, png and xpm.
1580 If you are sure you want Emacs compiled without X window support, pass
1581   --without-x
1582 to configure.])
1583    fi
1586 ### If we're using X11, we should use the X menu package.
1587 HAVE_MENUS=no
1588 case ${HAVE_X11} in
1589   yes ) HAVE_MENUS=yes ;;
1590 esac
1592 # Do the opsystem or machine files prohibit the use of the GNU malloc?
1593 # Assume not, until told otherwise.
1594 GNU_MALLOC=yes
1595 doug_lea_malloc=yes
1596 AC_CHECK_FUNC(malloc_get_state, ,doug_lea_malloc=no)
1597 AC_CHECK_FUNC(malloc_set_state, ,doug_lea_malloc=no)
1598 AC_CACHE_CHECK(whether __after_morecore_hook exists,
1599                emacs_cv_var___after_morecore_hook,
1600 [AC_TRY_LINK([extern void (* __after_morecore_hook)();],[__after_morecore_hook = 0],
1601   emacs_cv_var___after_morecore_hook=yes,
1602   emacs_cv_var___after_morecore_hook=no)])
1603 if test $emacs_cv_var___after_morecore_hook = no; then
1604   doug_lea_malloc=no
1607 if test "${system_malloc}" = "yes"; then
1608   GNU_MALLOC=no
1609   GNU_MALLOC_reason="
1610     (The GNU allocators don't work with this system configuration.)"
1611   GMALLOC_OBJ=
1612   VMLIMIT_OBJ=
1613 else
1614   test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
1615   VMLIMIT_OBJ=vm-limit.o
1617 AC_SUBST(GMALLOC_OBJ)
1618 AC_SUBST(VMLIMIT_OBJ)
1620 if test "$doug_lea_malloc" = "yes" ; then
1621   if test "$GNU_MALLOC" = yes ; then
1622     GNU_MALLOC_reason="
1623       (Using Doug Lea's new malloc from the GNU C Library.)"
1624   fi
1625   AC_DEFINE(DOUG_LEA_MALLOC, 1,
1626             [Define to 1 if you are using the GNU C Library.])
1628   ## Use mmap directly for allocating larger buffers.
1629   ## FIXME this comes from src/s/{gnu,gnu-linux}.h:
1630   ## #ifdef DOUG_LEA_MALLOC; #undef REL_ALLOC; #endif
1631   ## Does the AC_FUNC_MMAP test below make this check unecessary?
1632   case "$opsys" in
1633     gnu*) REL_ALLOC=no ;;
1634   esac
1637 if test x"${REL_ALLOC}" = x; then
1638   REL_ALLOC=${GNU_MALLOC}
1641 dnl For now, need to use an explicit `#define USE_MMAP_FOR_BUFFERS 1'
1642 dnl the system configuration file (s/*.h) to turn the use of mmap
1643 dnl in the relocating allocator on.
1645 AC_FUNC_MMAP
1646 if test $use_mmap_for_buffers = yes; then
1647   REL_ALLOC=no
1650 LIBS="$LIBS_SYSTEM $LIBS"
1652 dnl If found, this defines HAVE_LIBDNET, which m/pmax.h checks,
1653 dnl and also adds -ldnet to LIBS, which Autoconf uses for checks.
1654 AC_CHECK_LIB(dnet, dnet_ntoa)
1655 dnl This causes -lresolv to get used in subsequent tests,
1656 dnl which causes failures on some systems such as HPUX 9.
1657 dnl AC_CHECK_LIB(resolv, gethostbyname)
1659 dnl FIXME replace main with a function we actually want from this library.
1660 AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
1662 AC_CHECK_LIB(pthreads, cma_open)
1664 ## Note: when using cpp in s/aix4.2.h, this definition depended on
1665 ## HAVE_LIBPTHREADS.  That was not defined earlier in configure when
1666 ## the system file was sourced.  Hence the value of LIBS_SYSTEM
1667 ## added to LIBS in configure would never contain the pthreads part,
1668 ## but the value used in Makefiles might.  FIXME?
1670 ## -lpthreads seems to be necessary for Xlib in X11R6, and should
1671 ## be harmless on older versions of X where it happens to exist.
1672 test "$opsys" = "aix4-2" && \
1673   test $ac_cv_lib_pthreads_cma_open = yes && \
1674   LIBS_SYSTEM="$LIBS_SYSTEM -lpthreads"
1676 dnl Check for need for bigtoc support on IBM AIX
1678 case ${host_os} in
1679 aix*)
1680   AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
1681     case $GCC in
1682     yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
1683     *) gdb_cv_bigtoc=-bbigtoc ;;
1684     esac
1686     LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
1687     AC_TRY_LINK([], [int i;], [], [gdb_cv_bigtoc=])
1688   ])
1689   ;;
1690 esac
1692 # Change CFLAGS and CPPFLAGS temporarily so that C_SWITCH_X_SITE gets
1693 # used for the tests that follow.  We set them back to REAL_CFLAGS and
1694 # REAL_CPPFLAGS later on.
1696 REAL_CPPFLAGS="$CPPFLAGS"
1698 if test "${HAVE_X11}" = "yes"; then
1699   DEFS="$C_SWITCH_X_SITE $DEFS"
1700   LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
1701   LIBS="$LIBX $LIBS"
1702   CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
1703   CPPFLAGS="$C_SWITCH_X_SITE $CPPFLAGS"
1705   # On Solaris, arrange for LD_RUN_PATH to point to the X libraries for tests.
1706   # This is handled by LD_SWITCH_X_SITE_AUX during the real build,
1707   # but it's more convenient here to set LD_RUN_PATH
1708   # since this also works on hosts that don't understand LD_SWITCH_X_SITE_AUX.
1709   if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
1710     LD_RUN_PATH=$x_libraries${LD_RUN_PATH+:}$LD_RUN_PATH
1711     export LD_RUN_PATH
1712   fi
1714   if test "${opsys}" = "gnu-linux"; then
1715     AC_MSG_CHECKING(whether X on GNU/Linux needs -b to link)
1716     AC_TRY_LINK([],
1717      [XOpenDisplay ("foo");],
1718      [xlinux_first_failure=no],
1719      [xlinux_first_failure=yes])
1720     if test "${xlinux_first_failure}" = "yes"; then
1721       OLD_LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE"
1722       OLD_C_SWITCH_X_SITE="$C_SWITCH_X_SITE"
1723       OLD_CPPFLAGS="$CPPFLAGS"
1724       OLD_LIBS="$LIBS"
1725       LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
1726       C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
1727       CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
1728       LIBS="$LIBS -b i486-linuxaout"
1729       AC_TRY_LINK([],
1730        [XOpenDisplay ("foo");],
1731        [xlinux_second_failure=no],
1732        [xlinux_second_failure=yes])
1733       if test "${xlinux_second_failure}" = "yes"; then
1734         # If we get the same failure with -b, there is no use adding -b.
1735         # So take it out.  This plays safe.
1736         LD_SWITCH_X_SITE="$OLD_LD_SWITCH_X_SITE"
1737         C_SWITCH_X_SITE="$OLD_C_SWITCH_X_SITE"
1738         CPPFLAGS="$OLD_CPPFLAGS"
1739         LIBS="$OLD_LIBS"
1740         AC_MSG_RESULT(no)
1741       else
1742         AC_MSG_RESULT(yes)
1743       fi
1744     else
1745       AC_MSG_RESULT(no)
1746     fi
1747   fi
1749   # Reportedly, some broken Solaris systems have XKBlib.h but are missing
1750   # header files included from there.
1751   AC_MSG_CHECKING(for Xkb)
1752   AC_TRY_LINK([#include <X11/Xlib.h>
1753 #include <X11/XKBlib.h>],
1754         [XkbDescPtr kb = XkbGetKeyboard (0, XkbAllComponentsMask, XkbUseCoreKbd);],
1755         emacs_xkb=yes, emacs_xkb=no)
1756   AC_MSG_RESULT($emacs_xkb)
1757   if test $emacs_xkb = yes; then
1758     AC_DEFINE(HAVE_XKBGETKEYBOARD, 1, [Define to 1 if you have the XkbGetKeyboard function.])
1759   fi
1761   AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
1762 XScreenNumberOfScreen XSetWMProtocols)
1765 if test "${window_system}" = "x11"; then
1766   AC_MSG_CHECKING(X11 version 6)
1767   AC_CACHE_VAL(emacs_cv_x11_version_6,
1768   [AC_TRY_LINK([#include <X11/Xlib.h>],
1769 [#if XlibSpecificationRelease < 6
1770 fail;
1771 #endif
1772 ], emacs_cv_x11_version_6=yes, emacs_cv_x11_version_6=no)])
1773   if test $emacs_cv_x11_version_6 = yes; then
1774     AC_MSG_RESULT(6 or newer)
1775     AC_DEFINE(HAVE_X11R6, 1,
1776               [Define to 1 if you have the X11R6 or newer version of Xlib.])
1777   else
1778     AC_MSG_RESULT(before 6)
1779   fi
1783 ### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
1784 HAVE_RSVG=no
1785 if test "${HAVE_X11}" = "yes" || test "${NS_IMPL_GNUSTEP}" = "yes"; then
1786   if test "${with_rsvg}" != "no"; then
1787     RSVG_REQUIRED=2.11.0
1788     RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
1790     PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, :, :)
1791     AC_SUBST(RSVG_CFLAGS)
1792     AC_SUBST(RSVG_LIBS)
1794     if test ".${RSVG_CFLAGS}" != "."; then
1795       HAVE_RSVG=yes
1796       AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
1797       CFLAGS="$CFLAGS $RSVG_CFLAGS"
1798       LIBS="$RSVG_LIBS $LIBS"
1799     fi
1800   fi
1804 HAVE_GTK=no
1805 if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
1806   GLIB_REQUIRED=2.6
1807   GTK_REQUIRED=2.6
1808   GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
1810   dnl Checks for libraries.
1811   PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
1812   if test "$pkg_check_gtk" = "no" && test "$USE_X_TOOLKIT" != "maybe"; then
1813      AC_MSG_ERROR($GTK_PKG_ERRORS)
1814   fi
1818 GTK_OBJ=
1819 if test x"$pkg_check_gtk" = xyes; then
1821   AC_SUBST(GTK_CFLAGS)
1822   AC_SUBST(GTK_LIBS)
1823   C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
1824   CFLAGS="$CFLAGS $GTK_CFLAGS"
1825   LIBS="$GTK_LIBS $LIBS"
1826   dnl Try to compile a simple GTK program.
1827   GTK_COMPILES=no
1828   AC_CHECK_FUNCS(gtk_main, GTK_COMPILES=yes)
1829   if test "${GTK_COMPILES}" != "yes"; then
1830     if test "$USE_X_TOOLKIT" != "maybe"; then
1831       AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log.  Maybe some x11-devel files missing?]);
1832     fi
1833   else
1834     HAVE_GTK=yes
1835     AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
1836     GTK_OBJ=gtkutil.o
1837     USE_X_TOOLKIT=none
1838     if $PKG_CONFIG --atleast-version=2.10 gtk+-2.0; then
1839       :
1840     else
1841       AC_MSG_WARN([[Your version of Gtk+ will have problems with
1842        closing open displays.  This is no problem if you just use
1843        one display, but if you use more than one and close one of them
1844        Emacs may crash.]])
1845       sleep 3
1846     fi
1847   fi
1850 AC_SUBST(GTK_OBJ)
1853 if test "${HAVE_GTK}" = "yes"; then
1855   dnl  GTK scrollbars resemble toolkit scrollbars a lot, so to avoid
1856   dnl  a lot if #ifdef:s, say we have toolkit scrollbars.
1857   if test "$with_toolkit_scroll_bars" != no; then
1858     with_toolkit_scroll_bars=yes
1859   fi
1861   dnl  Check if we can use multiple displays with this GTK version.
1862   dnl  If gdk_display_open exists, assume all others are there also.
1863   HAVE_GTK_MULTIDISPLAY=no
1864   AC_CHECK_FUNCS(gdk_display_open, HAVE_GTK_MULTIDISPLAY=yes)
1865   if test "${HAVE_GTK_MULTIDISPLAY}" = "yes"; then
1866     AC_DEFINE(HAVE_GTK_MULTIDISPLAY, 1,
1867               [Define to 1 if GTK can handle more than one display.])
1868   fi
1870   dnl  Check if we have the old file selection dialog declared and
1871   dnl  in the link library.  In 2.x it may be in the library,
1872   dnl  but not declared if deprecated featured has been selected out.
1873   dnl  AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION.
1874   HAVE_GTK_FILE_SELECTION=no
1875   AC_CHECK_DECL(GTK_TYPE_FILE_SELECTION, HAVE_GTK_FILE_SELECTION=yes,
1876                    HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT
1877 #include <gtk/gtk.h>])
1878   if test "$HAVE_GTK_FILE_SELECTION" = yes; then
1879     AC_CHECK_FUNCS(gtk_file_selection_new, HAVE_GTK_FILE_SELECTION=yes,
1880                    HAVE_GTK_FILE_SELECTION=no)
1881   fi
1883   dnl  Check if we have the new file chooser dialog
1884   HAVE_GTK_FILE_CHOOSER=no
1885   AC_CHECK_DECL(GTK_TYPE_FILE_CHOOSER, HAVE_GTK_FILE_CHOOSER=yes,
1886                 HAVE_GTK_FILE_CHOOSER=no, [AC_INCLUDES_DEFAULT
1887 #include <gtk/gtk.h>])
1888   if test "$HAVE_GTK_FILE_CHOOSER" = yes; then
1889     AC_CHECK_FUNCS(gtk_file_chooser_dialog_new, HAVE_GTK_FILE_CHOOSER=yes,
1890                    HAVE_GTK_FILE_CHOOSER=no)
1891   fi
1893   if test "$HAVE_GTK_FILE_SELECTION" = yes \
1894      && test "$HAVE_GTK_FILE_CHOOSER" = yes;  then
1895     AC_DEFINE(HAVE_GTK_FILE_BOTH, 1,
1896               [Define to 1 if GTK has both file selection and chooser dialog.])
1897   fi
1899   dnl Check if pthreads are available.  Emacs only needs this when using
1900   dnl gtk_file_chooser under Gnome.
1901   if test "$HAVE_GTK_FILE_CHOOSER" = yes; then
1902     HAVE_GTK_AND_PTHREAD=no
1903     AC_CHECK_HEADERS(pthread.h)
1904     if test "$ac_cv_header_pthread_h"; then
1905       AC_CHECK_LIB(pthread, pthread_self, HAVE_GTK_AND_PTHREAD=yes)
1906     fi
1907     if test "$HAVE_GTK_AND_PTHREAD" = yes; then
1908       case "${canonical}" in
1909         *-hpux*) ;;
1910         *) GTK_LIBS="$GTK_LIBS -lpthread" ;;
1911       esac
1912       AC_DEFINE(HAVE_GTK_AND_PTHREAD, 1,
1913                [Define to 1 if you have GTK and pthread (-lpthread).])
1914     fi
1915   fi
1918 dnl D-Bus has been tested under GNU/Linux only.  Must be adapted for
1919 dnl other platforms.  Support for higher D-Bus versions than 1.0 is
1920 dnl also not configured.
1921 HAVE_DBUS=no
1922 DBUS_OBJ=
1923 if test "${with_dbus}" = "yes"; then
1924    PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0, HAVE_DBUS=yes, HAVE_DBUS=no)
1925    if test "$HAVE_DBUS" = yes; then
1926      LIBS="$LIBS $DBUS_LIBS"
1927      AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
1928      AC_CHECK_FUNCS([dbus_watch_get_unix_fd])
1929      DBUS_OBJ=dbusbind.o
1930    fi
1932 AC_SUBST(DBUS_OBJ)
1934 dnl GConf has been tested under GNU/Linux only.
1935 dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
1936 HAVE_GCONF=no
1937 if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
1938    PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
1939    if test "$HAVE_GCONF" = yes; then
1940       AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
1941    fi
1944 dnl SELinux is available for GNU/Linux only.
1945 HAVE_LIBSELINUX=no
1946 LIBSELINUX_LIBS=
1947 if test "${with_selinux}" = "yes"; then
1948    AC_CHECK_LIB([selinux], [lgetfilecon], HAVE_LIBSELINUX=yes, HAVE_LIBSELINUX=no)
1949    if test "$HAVE_LIBSELINUX" = yes; then
1950       AC_DEFINE(HAVE_LIBSELINUX, 1, [Define to 1 if using SELinux.])
1951       LIBSELINUX_LIBS=-lselinux
1952    fi
1954 AC_SUBST(LIBSELINUX_LIBS)
1956 dnl Do not put whitespace before the #include statements below.
1957 dnl Older compilers (eg sunos4 cc) choke on it.
1958 HAVE_XAW3D=no
1959 LUCID_LIBW=
1960 if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
1961   if test "$with_xaw3d" != no; then
1962     AC_MSG_CHECKING(for xaw3d)
1963     AC_CACHE_VAL(emacs_cv_xaw3d,
1964     [AC_TRY_LINK([
1965 #include <X11/Intrinsic.h>
1966 #include <X11/Xaw3d/Simple.h>],
1967       [],
1968       emacs_cv_xaw3d=yes,
1969       emacs_cv_xaw3d=no)])
1970   else
1971     emacs_cv_xaw3d=no
1972   fi
1973   if test $emacs_cv_xaw3d = yes; then
1974     AC_MSG_RESULT([yes; using Lucid toolkit])
1975     USE_X_TOOLKIT=LUCID
1976     HAVE_XAW3D=yes
1977     LUCID_LIBW=-lXaw3d
1978     AC_DEFINE(HAVE_XAW3D, 1,
1979               [Define to 1 if you have the Xaw3d library (-lXaw3d).])
1980   else
1981     AC_MSG_RESULT(no)
1982     AC_MSG_CHECKING(for libXaw)
1983     AC_CACHE_VAL(emacs_cv_xaw,
1984     [AC_TRY_LINK([
1985 #include <X11/Intrinsic.h>
1986 #include <X11/Xaw/Simple.h>],
1987       [],
1988       emacs_cv_xaw=yes,
1989       emacs_cv_xaw=no)])
1990     if test $emacs_cv_xaw = yes; then
1991       AC_MSG_RESULT([yes; using Lucid toolkit])
1992       USE_X_TOOLKIT=LUCID
1993       LUCID_LIBW=-lXaw
1994     elif test x"${USE_X_TOOLKIT}" = xLUCID; then
1995       AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
1996     else
1997       AC_MSG_RESULT([no; do not use toolkit by default])
1998       USE_X_TOOLKIT=none
1999     fi
2000   fi
2003 X_TOOLKIT_TYPE=$USE_X_TOOLKIT
2005 LIBXTR6=
2006 if test "${USE_X_TOOLKIT}" != "none"; then
2007   AC_MSG_CHECKING(X11 toolkit version)
2008   AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
2009   [AC_TRY_LINK([#include <X11/Intrinsic.h>],
2010 [#if XtSpecificationRelease < 6
2011 fail;
2012 #endif
2013 ], emacs_cv_x11_toolkit_version_6=yes, emacs_cv_x11_toolkit_version_6=no)])
2014   HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6
2015   if test $emacs_cv_x11_toolkit_version_6 = yes; then
2016     AC_MSG_RESULT(6 or newer)
2017     AC_DEFINE(HAVE_X11XTR6, 1,
2018               [Define to 1 if you have the X11R6 or newer version of Xt.])
2019     LIBXTR6="-lSM -lICE"
2020     case "$opsys" in
2021       ## Use libw.a along with X11R6 Xt.
2022       unixware) LIBXTR6="$LIBXTR6 -lw" ;;
2023     esac
2024   else
2025     AC_MSG_RESULT(before 6)
2026   fi
2028 dnl If using toolkit, check whether libXmu.a exists.
2029 dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
2030   OLDLIBS="$LIBS"
2031   if test x$HAVE_X11XTR6 = xyes; then
2032     LIBS="-lXt -lSM -lICE $LIBS"
2033   else
2034     LIBS="-lXt $LIBS"
2035   fi
2036   AC_CHECK_LIB(Xmu, XmuConvertStandardSelection)
2037   test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS"
2039 AC_SUBST(LIBXTR6)
2041 dnl FIXME the logic here seems weird, but this is what cpp was doing.
2042 dnl Why not just test for libxmu in the normal way?
2043 LIBXMU=-lXmu
2044 case "$machine" in
2045   ## These machines don't supply Xmu.
2046   hpux* | aix4-2 )
2047     test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
2048     ;;
2049 esac
2050 AC_SUBST(LIBXMU)
2052 # On Irix 6.5, at least, we need XShapeQueryExtension from -lXext for Xaw3D.
2053 if test "${HAVE_X11}" = "yes"; then
2054   if test "${USE_X_TOOLKIT}" != "none"; then
2055     AC_CHECK_LIB(Xext, XShapeQueryExtension)
2056   fi
2059 LIBXP=
2060 if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2061   AC_CACHE_CHECK(for Motif version 2.1, emacs_cv_motif_version_2_1,
2062   [AC_TRY_COMPILE([#include <Xm/Xm.h>],
2063     [#if XmVERSION > 2 || (XmVERSION == 2 && XmREVISION >= 1)
2064 int x = 5;
2065 #else
2066 Motif version prior to 2.1.
2067 #endif],
2068     emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)])
2069   if test $emacs_cv_motif_version_2_1 = yes; then
2070     AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp)
2071   else
2072     AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif,
2073     # We put this in CFLAGS temporarily to precede other -I options
2074     # that might be in CFLAGS temporarily.
2075     # We put this in CPPFLAGS where it precedes the other -I options.
2076     OLD_CPPFLAGS=$CPPFLAGS
2077     OLD_CFLAGS=$CFLAGS
2078     CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CPPFLAGS"
2079     CFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CFLAGS"
2080     [AC_TRY_COMPILE([#include </usr/X11R6/LessTif/Motif1.2/include/Xm/Xm.h>],
2081       [int x = 5;],
2082       emacs_cv_lesstif=yes, emacs_cv_lesstif=no)])
2083     if test $emacs_cv_lesstif = yes; then
2084       # Make sure this -I option remains in CPPFLAGS after it is set
2085       # back to REAL_CPPFLAGS.
2086       # There is no need to change REAL_CFLAGS, because REAL_CFLAGS does not
2087       # have those other -I options anyway.  Ultimately, having this
2088       # directory ultimately in CPPFLAGS will be enough.
2089       REAL_CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $REAL_CPPFLAGS"
2090       LDFLAGS="-L/usr/X11R6/LessTif/Motif1.2/lib $LDFLAGS"
2091     else
2092       CFLAGS=$OLD_CFLAGS
2093       CPPFLAGS=$OLD_CPPFLAGS
2094     fi
2095   fi
2098 dnl Use toolkit scroll bars if configured for GTK or X toolkit and either
2099 dnl using Motif or Xaw3d is available, and unless
2100 dnl --with-toolkit-scroll-bars=no was specified.
2102 AH_TEMPLATE(USE_TOOLKIT_SCROLL_BARS,
2103             [Define to 1 if we should use toolkit scroll bars.])dnl
2104 USE_TOOLKIT_SCROLL_BARS=no
2105 if test "${with_toolkit_scroll_bars}" != "no"; then
2106   if test "${USE_X_TOOLKIT}" != "none"; then
2107     if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2108       AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2109       HAVE_XAW3D=no
2110       USE_TOOLKIT_SCROLL_BARS=yes
2111     elif test "${HAVE_XAW3D}" = "yes"; then
2112       AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2113       USE_TOOLKIT_SCROLL_BARS=yes
2114     fi
2115   elif test "${HAVE_GTK}" = "yes"; then
2116     AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2117     USE_TOOLKIT_SCROLL_BARS=yes
2118   elif test "${HAVE_NS}" = "yes"; then
2119     AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2120     USE_TOOLKIT_SCROLL_BARS=yes
2121   fi
2124 dnl See if XIM is available.
2125 AC_TRY_COMPILE([
2126           #include <X11/Xlib.h>
2127           #include <X11/Xresource.h>],
2128          [XIMProc  callback;],
2129          [HAVE_XIM=yes
2130          AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
2131          HAVE_XIM=no)
2133 dnl `--with-xim' now controls only the initial value of use_xim at run time.
2135 if test "${with_xim}" != "no"; then
2136   AC_DEFINE(USE_XIM, 1,
2137             [Define to 1 if we should use XIM, if it is available.])
2141 if test "${HAVE_XIM}" != "no"; then
2142   late_CFLAGS=$CFLAGS
2143   if test "$GCC" = yes; then
2144     CFLAGS="$CFLAGS --pedantic-errors"
2145   fi
2146   AC_TRY_COMPILE([
2147 #include <X11/Xlib.h>
2148 #include <X11/Xresource.h>],
2149 [Display *display;
2150 XrmDatabase db;
2151 char *res_name;
2152 char *res_class;
2153 XIMProc  callback;
2154 XPointer *client_data;
2155 #ifndef __GNUC__
2156 /* If we're not using GCC, it's probably not XFree86, and this is
2157    probably right, but we can't use something like --pedantic-errors.  */
2158 extern Bool XRegisterIMInstantiateCallback(Display*, XrmDatabase, char*,
2159                                            char*, XIMProc, XPointer*);
2160 #endif
2161 (void)XRegisterIMInstantiateCallback(display, db, res_name, res_class, callback,
2162    client_data);],
2163     [emacs_cv_arg6_star=yes])
2164   AH_TEMPLATE(XRegisterIMInstantiateCallback_arg6,
2165          [Define to the type of the 6th arg of XRegisterIMInstantiateCallback,
2166 either XPointer or XPointer*.])dnl
2167   if test "$emacs_cv_arg6_star" = yes; then
2168     AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer*])
2169   else
2170     AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer])
2171   fi
2172   CFLAGS=$late_CFLAGS
2175 ### Start of font-backend (under any platform) section.
2176 # (nothing here yet -- this is a placeholder)
2177 ### End of font-backend (under any platform) section.
2179 ### Start of font-backend (under X11) section.
2180 if test "${HAVE_X11}" = "yes"; then
2181    PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2.0, HAVE_FC=yes, HAVE_FC=no)
2183    ## Use -lXft if available, unless `--with-xft=no'.
2184    HAVE_XFT=maybe
2185     if test "${HAVE_FC}" = "no" || test "x${with_x}" = "xno"; then
2186       with_xft="no";
2187     fi
2188     if test "x${with_xft}" != "xno"; then
2190       PKG_CHECK_MODULES(XFT, xft >= 0.13.0, , HAVE_XFT=no)
2191       ## Because xftfont.c uses XRenderQueryExtension, we also
2192       ## need to link to -lXrender.
2193       HAVE_XRENDER=no
2194       AC_CHECK_LIB(Xrender, XRenderQueryExtension, HAVE_XRENDER=yes)
2195       if test "$HAVE_XFT" != no && test "$HAVE_XRENDER" != no; then
2196         OLD_CPPFLAGS="$CPPFLAGS"
2197         OLD_CFLAGS="$CFLAGS"
2198         OLD_LIBS="$LIBS"
2199         CPPFLAGS="$CPPFLAGS $XFT_CFLAGS"
2200         CFLAGS="$CFLAGS $XFT_CFLAGS"
2201         XFT_LIBS="-lXrender $XFT_LIBS"
2202         LIBS="$XFT_LIBS $LIBS"
2203         AC_CHECK_HEADER(X11/Xft/Xft.h,
2204           AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS))
2206         if test "${HAVE_XFT}" = "yes"; then
2207           AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
2208             AC_SUBST(XFT_LIBS)
2209           C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
2210         else
2211           CPPFLAGS="$OLD_CPPFLAGS"
2212           CFLAGS="$OLD_CFLAGS"
2213           LIBS="$OLD_LIBS"
2214         fi                        # "${HAVE_XFT}" = "yes"
2215       fi                          # "$HAVE_XFT" != no
2216     fi                            # "x${with_xft}" != "xno"
2218     dnl For the "Does Emacs use" message at the end.
2219     if test "$HAVE_XFT" != "yes"; then
2220        HAVE_XFT=no
2221     fi
2224     HAVE_FREETYPE=no
2225     ## We used to allow building with FreeType and without Xft.
2226     ## However, the ftx font backend driver is not in good shape.
2227     if test "${HAVE_XFT}" = "yes"; then
2228       dnl As we use Xft, we anyway use freetype.
2229       dnl There's no need for additional CFLAGS and LIBS.
2230       HAVE_FREETYPE=yes
2231       FONTCONFIG_CFLAGS=
2232       FONTCONFIG_LIBS=
2233     fi
2235     HAVE_LIBOTF=no
2236     if test "${HAVE_FREETYPE}" = "yes"; then
2237       AC_DEFINE(HAVE_FREETYPE, 1,
2238                 [Define to 1 if using the freetype and fontconfig libraries.])
2239       if test "${with_libotf}" != "no"; then
2240         PKG_CHECK_MODULES(LIBOTF, libotf, HAVE_LIBOTF=yes,
2241                           HAVE_LIBOTF=no)
2242         if test "$HAVE_LIBOTF" = "yes"; then
2243           AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.])
2244           AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
2245                        HAVE_OTF_GET_VARIATION_GLYPHS=yes,
2246                        HAVE_OTF_GET_VARIATION_GLYPHS=no)
2247           if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
2248             AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1,
2249                       [Define to 1 if libotf has OTF_get_variation_glyphs.])
2250           fi
2251         fi
2252       fi
2253     dnl FIXME should there be an error if HAVE_FREETYPE != yes?
2254     dnl Does the new font backend require it, or can it work without it?
2255     fi
2257     HAVE_M17N_FLT=no
2258     if test "${HAVE_LIBOTF}" = yes; then
2259       if test "${with_m17n_flt}" != "no"; then
2260         PKG_CHECK_MODULES(M17N_FLT, m17n-flt, HAVE_M17N_FLT=yes, HAVE_M17N_FLT=no)
2261         if test "$HAVE_M17N_FLT" = "yes"; then
2262           AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
2263         fi
2264       fi
2265     fi
2266 else
2267     HAVE_XFT=no
2268     HAVE_FREETYPE=no
2269     HAVE_LIBOTF=no
2270     HAVE_M17N_FLT=no
2273 ### End of font-backend (under X11) section.
2275 AC_SUBST(FREETYPE_CFLAGS)
2276 AC_SUBST(FREETYPE_LIBS)
2277 AC_SUBST(FONTCONFIG_CFLAGS)
2278 AC_SUBST(FONTCONFIG_LIBS)
2279 AC_SUBST(LIBOTF_CFLAGS)
2280 AC_SUBST(LIBOTF_LIBS)
2281 AC_SUBST(M17N_FLT_CFLAGS)
2282 AC_SUBST(M17N_FLT_LIBS)
2284 ### Use -lXpm if available, unless `--with-xpm=no'.
2285 HAVE_XPM=no
2286 LIBXPM=
2287 if test "${HAVE_X11}" = "yes"; then
2288   if test "${with_xpm}" != "no"; then
2289     AC_CHECK_HEADER(X11/xpm.h,
2290       [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
2291     if test "${HAVE_XPM}" = "yes"; then
2292       AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
2293       AC_EGREP_CPP(no_return_alloc_pixels,
2294       [#include "X11/xpm.h"
2295 #ifndef XpmReturnAllocPixels
2296 no_return_alloc_pixels
2297 #endif
2298       ], HAVE_XPM=no, HAVE_XPM=yes)
2300       if test "${HAVE_XPM}" = "yes"; then
2301         AC_MSG_RESULT(yes)
2302       else
2303         AC_MSG_RESULT(no)
2304       fi
2305     fi
2306   fi
2308   if test "${HAVE_XPM}" = "yes"; then
2309     AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm libary (-lXpm).])
2310     LIBXPM=-lXpm
2311   fi
2313 AC_SUBST(LIBXPM)
2315 ### Use -ljpeg if available, unless `--with-jpeg=no'.
2316 HAVE_JPEG=no
2317 LIBJPEG=
2318 if test "${HAVE_X11}" = "yes"; then
2319   if test "${with_jpeg}" != "no"; then
2320     dnl Checking for jpeglib.h can lose because of a redefinition of
2321     dnl  HAVE_STDLIB_H.
2322     AC_CHECK_HEADER(jerror.h,
2323       [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
2324   fi
2326   AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
2327   if test "${HAVE_JPEG}" = "yes"; then
2328     AC_DEFINE(HAVE_JPEG)
2329     AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
2330         [#include <jpeglib.h>
2331          version=JPEG_LIB_VERSION
2333         [AC_DEFINE(HAVE_JPEG)],
2334         [AC_MSG_WARN([libjpeg found, but not version 6b or later])
2335         HAVE_JPEG=no])
2336   fi
2337   if test "${HAVE_JPEG}" = "yes"; then
2338     LIBJPEG=-ljpeg
2339   fi
2341 AC_SUBST(LIBJPEG)
2343 ### Use -lpng if available, unless `--with-png=no'.
2344 HAVE_PNG=no
2345 LIBPNG=
2346 if test "${HAVE_X11}" = "yes"; then
2347   if test "${with_png}" != "no"; then
2348     # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
2349     # in /usr/include/libpng.
2350     AC_CHECK_HEADERS(png.h libpng/png.h)
2351     if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
2352       AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm)
2353     fi
2354   fi
2356   if test "${HAVE_PNG}" = "yes"; then
2357     AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
2358     LIBPNG="-lpng -lz -lm"
2359   fi
2361 AC_SUBST(LIBPNG)
2363 ### Use -ltiff if available, unless `--with-tiff=no'.
2364 HAVE_TIFF=no
2365 LIBTIFF=
2366 if test "${HAVE_X11}" = "yes"; then
2367   if test "${with_tiff}" != "no"; then
2368     AC_CHECK_HEADER(tiffio.h,
2369       [tifflibs="-lz -lm"
2370       # At least one tiff package requires the jpeg library.
2371       if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
2372       AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)])
2373   fi
2375   if test "${HAVE_TIFF}" = "yes"; then
2376     AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
2377     dnl FIXME -lz -lm, as per libpng?
2378     LIBTIFF=-ltiff
2379   fi
2381 AC_SUBST(LIBTIFF)
2383 ### Use -lgif or -lungif if available, unless `--with-gif=no'.
2384 HAVE_GIF=no
2385 LIBGIF=
2386 if test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no"; then
2387   AC_CHECK_HEADER(gif_lib.h,
2388 # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
2389 # Earlier versions can crash Emacs.
2390     [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])
2392   if test "$HAVE_GIF" = yes; then
2393     LIBGIF=-lgif
2394   elif test "$HAVE_GIF" = maybe; then
2395 # If gif_lib.h but no libgif, try libungif.
2396     AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no)
2397     test "$HAVE_GIF" = yes && LIBGIF=-lungif
2398   fi
2400   if test "${HAVE_GIF}" = "yes"; then
2401     AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
2402   fi
2404 AC_SUBST(LIBGIF)
2406 dnl Check for required libraries.
2407 if test "${HAVE_X11}" = "yes"; then
2408   MISSING=""
2409   WITH_NO=""
2410   test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
2411     MISSING="libXpm" && WITH_NO="--with-xpm=no"
2412   test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
2413     MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
2414   test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
2415     MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
2416   test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
2417     MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
2418   test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
2419     MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
2421   if test "X${MISSING}" != X; then
2422     AC_MSG_ERROR([The following required libraries were not found:
2423     $MISSING
2424 Maybe some development libraries/packages are missing?
2425 If you don't want to link with them give
2426     $WITH_NO
2427 as options to configure])
2428   fi
2431 ### Use -lgpm if available, unless `--with-gpm=no'.
2432 HAVE_GPM=no
2433 LIBGPM=
2434 MOUSE_SUPPORT=
2435 if test "${with_gpm}" != "no"; then
2436   AC_CHECK_HEADER(gpm.h,
2437     [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
2439   if test "${HAVE_GPM}" = "yes"; then
2440     AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
2441     LIBGPM=-lgpm
2442     ## May be reset below.
2443     MOUSE_SUPPORT="\$(GPM_MOUSE_SUPPORT)"
2444   fi
2446 AC_SUBST(LIBGPM)
2448 dnl Check for malloc/malloc.h on darwin
2449 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.])])
2451 C_SWITCH_X_SYSTEM=
2452 ### Use NeXTstep API to implement GUI.
2453 if test "${HAVE_NS}" = "yes"; then
2454   AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.])
2455   if test "${NS_IMPL_COCOA}" = "yes"; then
2456     AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under MacOS X.])
2457     GNU_OBJC_CFLAGS=
2458   fi
2459   if test "${NS_IMPL_GNUSTEP}" = "yes"; then
2460     AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
2461     # See also .m.o rule in Makefile.in */
2462     # FIXME: are all these flags really needed?  Document here why.  */
2463     C_SWITCH_X_SYSTEM="-D_REENTRANT -fPIC -fno-strict-aliasing"
2464     GNU_OBJC_CFLAGS="-fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
2465   fi
2466   if test "${NS_HAVE_NSINTEGER}" = "yes"; then
2467     AC_DEFINE(NS_HAVE_NSINTEGER, 1, [Define to 1 if `NSInteger' is defined.])
2468   fi
2469   # We also have mouse menus.
2470   HAVE_MENUS=yes
2471   OTHER_FILES=ns-app
2475 ### Use session management (-lSM -lICE) if available
2476 HAVE_X_SM=no
2477 LIBXSM=
2478 if test "${HAVE_X11}" = "yes"; then
2479   AC_CHECK_HEADER(X11/SM/SMlib.h,
2480     [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
2482   if test "${HAVE_X_SM}" = "yes"; then
2483     AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
2484     LIBXSM="-lSM -lICE"
2485     case "$LIBS" in
2486       *-lSM*) ;;
2487       *)      LIBS="$LIBXSM $LIBS" ;;
2488     esac
2489   fi
2491 AC_SUBST(LIBXSM)
2493 # If netdb.h doesn't declare h_errno, we must declare it by hand.
2494 AC_CACHE_CHECK(whether netdb declares h_errno,
2495                emacs_cv_netdb_declares_h_errno,
2496 [AC_TRY_LINK([#include <netdb.h>],
2497   [return h_errno;],
2498   emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
2499 if test $emacs_cv_netdb_declares_h_errno = yes; then
2500   AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
2503 AC_FUNC_ALLOCA
2505 dnl src/alloca.c has been removed.  Could also check if $ALLOCA is set?
2506 dnl FIXME is there an autoconf test that does the right thing, without
2507 dnl needing to call A_M_E afterwards?
2508 if test x"$ac_cv_func_alloca_works" != xyes; then
2509    AC_MSG_ERROR( [a system implementation of alloca is required] )
2512 # fmod, logb, and frexp are found in -lm on most systems.
2513 # On HPUX 9.01, -lm does not contain logb, so check for sqrt.
2514 AC_CHECK_LIB(m, sqrt)
2516 # Check for mail-locking functions in a "mail" library.  Probably this should
2517 # have the same check as for liblockfile below.
2518 AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
2519 if test $have_mail = yes; then
2520   LIBS_MAIL=-lmail
2521   LIBS="$LIBS_MAIL $LIBS"
2522   AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library (-lmail).])
2523 else
2524   LIBS_MAIL=
2526 dnl Debian, at least:
2527 AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
2528 if test $have_lockfile = yes; then
2529    LIBS_MAIL=-llockfile
2530    LIBS="$LIBS_MAIL $LIBS"
2531    AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' library (-llockfile).])
2532 else
2533 # If we have the shared liblockfile, assume we must use it for mail
2534 # locking (e.g. Debian).  If we couldn't link against liblockfile
2535 # (no liblockfile.a installed), ensure that we don't need to.
2536   dnl This works for files generally, not just executables.
2537   dnl Should we look elsewhere for it?  Maybe examine /etc/ld.so.conf?
2538   AC_CHECK_PROG(liblockfile, liblockfile.so, yes, no,
2539                 /usr/lib:/lib:/usr/local/lib:$LD_LIBRARY_PATH)
2540   if test $ac_cv_prog_liblockfile = yes; then
2541     AC_MSG_ERROR([Shared liblockfile found but can't link against it.
2542 This probably means that movemail could lose mail.
2543 There may be a `development' package to install containing liblockfile.])
2544   fi
2546 AC_CHECK_FUNCS(touchlock)
2547 AC_CHECK_HEADERS(maillock.h)
2548 AC_SUBST(LIBS_MAIL)
2550 ## Define MAIL_USE_FLOCK (or LOCKF) if the mailer uses flock (or lockf) to
2551 ## interlock access to the mail spool.  The alternative is a lock file named
2552 ## /usr/spool/mail/$USER.lock.
2553 mail_lock=no
2554 case "$opsys" in
2555   aix4-2) mail_lock="lockf" ;;
2557   gnu|freebsd|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
2559   ## On GNU/Linux systems, both methods are used by various mail programs.
2560   ## I assume most people are using newer mailers that have heard of flock.
2561   ## Change this if you need to.
2562   ## Debian contains a patch which says: ``On Debian/GNU/Linux systems,
2563   ## configure gets the right answers, and that means *NOT* using flock.
2564   ## Using flock is guaranteed to be the wrong thing. See Debian Policy
2565   ## for details.'' and then uses `#ifdef DEBIAN'.  Unfortunately the
2566   ## Debian maintainer hasn't provided a clean fix for Emacs.
2567   ## movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
2568   ## HAVE_MAILLOCK_H are defined, so the following appears to be the
2569   ## correct logic.  -- fx
2570   ## We must check for HAVE_LIBLOCKFILE too, as movemail does.
2571   ## liblockfile is a Free Software replacement for libmail, used on
2572   ## Debian systems and elsewhere. -rfr.
2573   gnu-*)
2574     mail_lock="flock"
2575     if test $have_mail = yes || test $have_lockfile = yes; then
2576       test $ac_cv_header_maillock_h = yes && mail_lock=no
2577     fi
2578     ;;
2579 esac
2581 BLESSMAIL_TARGET=
2582 case "$mail_lock" in
2583   flock) AC_DEFINE(MAIL_USE_FLOCK, 1, [Define if the mailer uses flock to interlock the mail spool.]) ;;
2585   lockf) AC_DEFINE(MAIL_USE_LOCKF, 1, [Define if the mailer uses lockf to interlock the mail spool.]) ;;
2587   *) BLESSMAIL_TARGET="need-blessmail" ;;
2588 esac
2589 AC_SUBST(BLESSMAIL_TARGET)
2592 AC_CHECK_FUNCS(gethostname getdomainname dup2 \
2593 rename closedir mkdir rmdir sysinfo getrusage get_current_dir_name \
2594 random lrand48 bcopy bcmp logb frexp fmod rint cbrt ftime setsid \
2595 strerror fpathconf select mktime euidaccess getpagesize tzset setlocale \
2596 utimes getrlimit setrlimit setpgid getcwd getwd shutdown getaddrinfo \
2597 __fpending mblen mbrlen mbsinit strsignal setitimer ualarm index rindex \
2598 sendto recvfrom getsockopt setsockopt getsockname getpeername \
2599 gai_strerror mkstemp getline getdelim mremap memmove fsync sync bzero \
2600 memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign \
2601 cfmakeraw cfsetspeed isnan copysign)
2603 AC_CHECK_HEADERS(sys/un.h)
2605 AC_FUNC_MKTIME
2606 if test "$ac_cv_func_working_mktime" = no; then
2607   AC_DEFINE(BROKEN_MKTIME, 1, [Define to 1 if the mktime function is broken.])
2610 AC_FUNC_GETLOADAVG
2612 AC_FUNC_FSEEKO
2614 # Configure getopt.
2615 m4_include([m4/getopt.m4])
2616 gl_GETOPT_IFELSE([
2617   gl_GETOPT_SUBSTITUTE_HEADER
2618   gl_PREREQ_GETOPT
2619   GETOPTOBJS='getopt.o getopt1.o'
2621 AC_SUBST(GETOPTOBJS)
2623 AC_FUNC_GETPGRP
2625 AC_FUNC_STRFTIME
2627 # UNIX98 PTYs.
2628 AC_CHECK_FUNCS(grantpt)
2630 # PTY-related GNU extensions.
2631 AC_CHECK_FUNCS(getpt)
2633 # Check this now, so that we will NOT find the above functions in ncurses.
2634 # That is because we have not set up to link ncurses in lib-src.
2635 # It's better to believe a function is not available
2636 # than to expect to find it in ncurses.
2637 # Also we need tputs and friends to be able to build at all.
2638 have_tputs_et_al=true
2639 AC_SEARCH_LIBS(tputs, [ncurses terminfo termcap], , have_tputs_et_al=false)
2640 if test "$have_tputs_et_al" != true; then
2641   AC_MSG_ERROR([I couldn't find termcap functions (tputs and friends).
2642 Maybe some development libraries/packages are missing?  Try installing
2643 libncurses-dev(el), libterminfo-dev(el) or similar.])
2645 # Must define this when any termcap library is found.
2646 AC_DEFINE(HAVE_LIBNCURSES, 1,
2647           [Define to 1 if you have the `ncurses' library (-lncurses).])
2648 ## FIXME This was the cpp logic, but I am not sure it is right.
2649 ## The above test has not necessarily found libncurses.
2650 HAVE_LIBNCURSES=yes
2652 ## Use terminfo instead of termcap?
2653 ## Note only system files NOT using terminfo are:
2654 ## freebsd < 40000, ms-w32, msdos, netbsd < 599002500, and
2655 ## darwin|gnu without ncurses.
2656 TERMINFO=no
2657 LIBS_TERMCAP=
2658 case "$opsys" in
2659   ## cygwin: Fewer environment variables to go wrong, more terminal types.
2660   ## hpux10-20: Use the system provided termcap(3) library.
2661   ## openbsd: David Mazieres <dm@reeducation-labor.lcs.mit.edu> says this
2662   ##  is necessary.  Otherwise Emacs dumps core when run -nw.
2663   aix4-2|cygwin|hpux*|irix6-5|openbsd|sol2*|unixware) TERMINFO=yes ;;
2665   ## darwin: Prevents crashes when running Emacs in Terminal.app under 10.2.
2666   ##  The ncurses library has been moved out of the System framework in
2667   ##  Mac OS X 10.2.  So if configure detects it, set the command-line
2668   ##  option to use it.
2669   darwin|gnu*)
2670     ## (HAVE_LIBNCURSES was not always true, but is since 2010-03-18.)
2671     if test "x$HAVE_LIBNCURSES" = "xyes"; then
2672       TERMINFO=yes
2673       LIBS_TERMCAP="-lncurses"
2674     fi
2675     ;;
2677   freebsd)
2678     AC_MSG_CHECKING([whether FreeBSD is new enough to use terminfo])
2679     AC_CACHE_VAL(emacs_cv_freebsd_terminfo,
2680     [AC_TRY_LINK([#include <osreldate.h>],
2681 [#if __FreeBSD_version < 400000
2682 fail;
2683 #endif
2684 ], emacs_cv_freebsd_terminfo=yes, emacs_cv_freebsd_terminfo=no)])
2686     AC_MSG_RESULT($emacs_cv_freebsd_terminfo)
2688     if test $emacs_cv_freebsd_terminfo = yes; then
2689       TERMINFO=yes
2690       LIBS_TERMCAP="-lncurses"
2691     else
2692       LIBS_TERMCAP="-ltermcap"
2693     fi
2694     ;;
2696   netbsd)
2697     if test $ac_cv_search_tputs = -lterminfo; then
2698       TERMINFO=yes
2699       LIBS_TERMCAP="-lterminfo"
2700     else
2701       LIBS_TERMCAP="-ltermcap"
2702     fi
2703     ;;
2705 esac
2707 case "$opsys" in
2708   ## hpux: Make sure we get select from libc rather than from libcurses
2709   ##  because libcurses on HPUX 10.10 has a broken version of select.
2710   ##  We used to use -lc -lcurses, but this may be cleaner.
2711   hpux*) LIBS_TERMCAP="-ltermcap" ;;
2713   openbsd) LIBS_TERMCAP="-lncurses" ;;
2715   ## Must use system termcap, if we use any termcap.  It does special things.
2716   sol2*) test "$TERMINFO" != yes && LIBS_TERMCAP="-ltermcap" ;;
2717 esac
2719 TERMCAP_OBJ=tparam.o
2720 if test $TERMINFO = yes; then
2721   AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.])
2723   ## Default used to be -ltermcap.  Add a case above if need something else.
2724   test "x$LIBS_TERMCAP" = "x" && LIBS_TERMCAP="-lcurses"
2726   TERMCAP_OBJ=terminfo.o
2728 AC_SUBST(LIBS_TERMCAP)
2729 AC_SUBST(TERMCAP_OBJ)
2732 # Do we have res_init, for detecting changes in /etc/resolv.conf?
2733 resolv=no
2734 AC_TRY_LINK([#include <netinet/in.h>
2735 #include <arpa/nameser.h>
2736 #include <resolv.h>],
2737     [return res_init();],
2738     have_res_init=yes, have_res_init=no)
2739 if test "$have_res_init" = no; then
2740   OLIBS="$LIBS"
2741   LIBS="$LIBS -lresolv"
2742   AC_MSG_CHECKING(for res_init with -lresolv)
2743   AC_TRY_LINK([#include <netinet/in.h>
2744 #include <arpa/nameser.h>
2745 #include <resolv.h>],
2746     [return res_init();],
2747     have_res_init=yes, have_res_init=no)
2748   AC_MSG_RESULT($have_res_init)
2749   if test "$have_res_init" = yes ; then
2750     resolv=yes
2751   fi
2752   LIBS="$OLIBS"
2755 if test "$have_res_init" = yes; then
2756   AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if res_init is available.])
2759 # Do we need the Hesiod library to provide the support routines?
2760 LIBHESIOD=
2761 if test "$with_hesiod" != no ; then
2762   # Don't set $LIBS here -- see comments above.  FIXME which comments?
2763   AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
2764      [AC_CHECK_LIB(resolv, res_send, resolv=yes,
2765                   [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
2766   if test "$resolv" = yes ; then
2767     RESOLVLIB=-lresolv
2768   else
2769     RESOLVLIB=
2770   fi
2771   AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
2772         hesiod=yes, :, $RESOLVLIB)])
2774   if test x"$hesiod" = xyes; then
2775     AC_DEFINE(HAVE_LIBHESIOD, 1,
2776               [Define to 1 if you have the hesiod library (-lhesiod).])
2777     LIBHESIOD=-lhesiod
2778   fi
2780 AC_SUBST(LIBHESIOD)
2782 # Do we need libresolv (due to res_init or Hesiod)?
2783 if test "$resolv" = yes ; then
2784   AC_DEFINE(HAVE_LIBRESOLV, 1,
2785             [Define to 1 if you have the resolv library (-lresolv).])
2786   LIBRESOLV=-lresolv
2787 else
2788   LIBRESOLV=
2790 AC_SUBST(LIBRESOLV)
2792 # These tell us which Kerberos-related libraries to use.
2793 COM_ERRLIB=
2794 CRYPTOLIB=
2795 KRB5LIB=
2796 DESLIB=
2797 KRB4LIB=
2799 if test "${with_kerberos}" != no; then
2800   AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no)
2801   if test $have_com_err = yes; then
2802     COM_ERRLIB=-lcom_err
2803     LIBS="$COM_ERRLIB $LIBS"
2804     AC_DEFINE(HAVE_LIBCOM_ERR, 1, [Define to 1 if you have the `com_err' library (-lcom_err).])
2805   fi
2806   AC_CHECK_LIB(crypto, mit_des_cbc_encrypt, have_crypto=yes, have_crypto=no)
2807   if test $have_crypto = yes; then
2808     CRYPTOLIB=-lcrypto
2809     LIBS="$CRYPTOLIB $LIBS"
2810     AC_DEFINE(HAVE_LIBCRYPTO, 1, [Define to 1 if you have the `crypto' library (-lcrypto).])
2811   fi
2812   AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt, have_k5crypto=yes, have_k5crypto=no)
2813   if test $have_k5crypto = yes; then
2814     CRYPTOLIB=-lk5crypto
2815     LIBS="$CRYPTOLIB $LIBS"
2816     AC_DEFINE(HAVE_LIBK5CRYPTO, 1, [Define to 1 if you have the `k5crypto' library (-lk5crypto).])
2817   fi
2818   AC_CHECK_LIB(krb5, krb5_init_context, have_krb5=yes, have_krb5=no)
2819   if test $have_krb5=yes; then
2820     KRB5LIB=-lkrb5
2821     LIBS="$KRB5LIB $LIBS"
2822     AC_DEFINE(HAVE_LIBKRB5, 1, [Define to 1 if you have the `krb5' library (-lkrb5).])
2823   fi
2824   dnl FIXME Simplify.  Does not match 22 logic, thanks to default_off?
2825   if test "${with_kerberos5}" = no; then
2826     AC_CHECK_LIB(des425, des_cbc_encrypt, have_des425=yes, have_des425=no )
2827     if test $have_des425 = yes; then
2828       DESLIB=-ldes425
2829       LIBS="$DESLIB $LIBS"
2830       AC_DEFINE(HAVE_LIBDES425, 1, [Define to 1 if you have the `des425' library (-ldes425).])
2831     else
2832       AC_CHECK_LIB(des, des_cbc_encrypt, have_des=yes, have_des=no)
2833       if test $have_des = yes; then
2834         DESLIB=-ldes
2835         LIBS="$DESLIB $LIBS"
2836         AC_DEFINE(HAVE_LIBDES, 1, [Define to 1 if you have the `des' library (-ldes).])
2837       fi
2838     fi
2839     AC_CHECK_LIB(krb4, krb_get_cred, have_krb4=yes, have_krb4=no)
2840     if test $have_krb4 = yes; then
2841       KRB4LIB=-lkrb4
2842       LIBS="$KRB4LIB $LIBS"
2843       AC_DEFINE(HAVE_LIBKRB4, 1, [Define to 1 if you have the `krb4' library (-lkrb4).])
2844     else
2845       AC_CHECK_LIB(krb, krb_get_cred, have_krb=yes, have_krb=no)
2846       if test $have_krb = yes; then
2847         KRB4LIB=-lkrb
2848         LIBS="$KRB4LIB $LIBS"
2849         AC_DEFINE(HAVE_LIBKRB, 1, [Define to 1 if you have the `krb' library (-lkrb).])
2850       fi
2851     fi
2852   fi
2854   if test "${with_kerberos5}" != no; then
2855     AC_CHECK_HEADERS(krb5.h,
2856       [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,,
2857                         [#include <krb5.h>])])
2858   else
2859     AC_CHECK_HEADERS(des.h,,
2860                      [AC_CHECK_HEADERS(kerberosIV/des.h,,
2861                                        [AC_CHECK_HEADERS(kerberos/des.h)])])
2862     AC_CHECK_HEADERS(krb.h,,
2863                      [AC_CHECK_HEADERS(kerberosIV/krb.h,,
2864                                        [AC_CHECK_HEADERS(kerberos/krb.h)])])
2865   fi
2866   AC_CHECK_HEADERS(com_err.h)
2869 AC_SUBST(COM_ERRLIB)
2870 AC_SUBST(CRYPTOLIB)
2871 AC_SUBST(KRB5LIB)
2872 AC_SUBST(DESLIB)
2873 AC_SUBST(KRB4LIB)
2875 # Solaris requires -lintl if you want strerror (which calls dgettext)
2876 # to return localized messages.
2877 AC_CHECK_LIB(intl, dgettext)
2879 AC_MSG_CHECKING(whether localtime caches TZ)
2880 AC_CACHE_VAL(emacs_cv_localtime_cache,
2881 [if test x$ac_cv_func_tzset = xyes; then
2882 AC_TRY_RUN([#include <time.h>
2883 extern char **environ;
2884 unset_TZ ()
2886   char **from, **to;
2887   for (to = from = environ; (*to = *from); from++)
2888     if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
2889       to++;
2891 char TZ_GMT0[] = "TZ=GMT0";
2892 char TZ_PST8[] = "TZ=PST8";
2893 main()
2895   time_t now = time ((time_t *) 0);
2896   int hour_GMT0, hour_unset;
2897   if (putenv (TZ_GMT0) != 0)
2898     exit (1);
2899   hour_GMT0 = localtime (&now)->tm_hour;
2900   unset_TZ ();
2901   hour_unset = localtime (&now)->tm_hour;
2902   if (putenv (TZ_PST8) != 0)
2903     exit (1);
2904   if (localtime (&now)->tm_hour == hour_GMT0)
2905     exit (1);
2906   unset_TZ ();
2907   if (localtime (&now)->tm_hour != hour_unset)
2908     exit (1);
2909   exit (0);
2910 }], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
2911 [# If we have tzset, assume the worst when cross-compiling.
2912 emacs_cv_localtime_cache=yes])
2913 else
2914         # If we lack tzset, report that localtime does not cache TZ,
2915         # since we can't invalidate the cache if we don't have tzset.
2916         emacs_cv_localtime_cache=no
2917 fi])dnl
2918 AC_MSG_RESULT($emacs_cv_localtime_cache)
2919 if test $emacs_cv_localtime_cache = yes; then
2920   AC_DEFINE(LOCALTIME_CACHE, 1,
2921             [Define to 1 if localtime caches TZ.])
2924 if test "x$HAVE_TIMEVAL" = xyes; then
2925   AC_CHECK_FUNCS(gettimeofday)
2926   if test $ac_cv_func_gettimeofday = yes; then
2927     AC_CACHE_CHECK(whether gettimeofday can accept two arguments,
2928                    emacs_cv_gettimeofday_two_arguments,
2929     [AC_TRY_COMPILE([
2930 #ifdef TIME_WITH_SYS_TIME
2931 #include <sys/time.h>
2932 #include <time.h>
2933 #else
2934 #ifdef HAVE_SYS_TIME_H
2935 #include <sys/time.h>
2936 #else
2937 #include <time.h>
2938 #endif
2939 #endif],
2940       [struct timeval time;
2941        gettimeofday (&time, 0);],
2942       emacs_cv_gettimeofday_two_arguments=yes,
2943       emacs_cv_gettimeofday_two_arguments=no)])
2944     if test $emacs_cv_gettimeofday_two_arguments = no; then
2945       AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT, 1,
2946                 [Define to 1 if gettimeofday accepts only one argument.])
2947     fi
2948   fi
2951 ok_so_far=yes
2952 AC_CHECK_FUNC(socket, , ok_so_far=no)
2953 if test $ok_so_far = yes; then
2954   AC_CHECK_HEADER(netinet/in.h, , ok_so_far=no)
2956 if test $ok_so_far = yes; then
2957   AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
2959 if test $ok_so_far = yes; then
2960 dnl Fixme: Not used.  Should this be HAVE_SOCKETS?
2961   AC_DEFINE(HAVE_INET_SOCKETS, 1,
2962             [Define to 1 if you have inet sockets.])
2965 AC_CHECK_HEADERS(sys/ioctl.h)
2967 if test -f /usr/lpp/X11/bin/smt.exp; then
2968   AC_DEFINE(HAVE_AIX_SMT_EXP, 1,
2969             [Define to 1 if the file /usr/lpp/X11/bin/smt.exp exists.])
2972 AC_MSG_CHECKING(whether system supports dynamic ptys)
2973 if test -d /dev/pts && ls -d /dev/ptmx > /dev/null 2>&1 ; then
2974   AC_MSG_RESULT(yes)
2975   AC_DEFINE(HAVE_DEV_PTMX, 1, [Define to 1 if dynamic ptys are supported.])
2976 else
2977   AC_MSG_RESULT(no)
2980 AC_FUNC_FORK
2982 dnl Adapted from Haible's version.
2983 AC_CACHE_CHECK([for nl_langinfo and CODESET], emacs_cv_langinfo_codeset,
2984   [AC_TRY_LINK([#include <langinfo.h>],
2985     [char* cs = nl_langinfo(CODESET);],
2986     emacs_cv_langinfo_codeset=yes,
2987     emacs_cv_langinfo_codeset=no)
2988   ])
2989 if test $emacs_cv_langinfo_codeset = yes; then
2990   AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
2991     [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
2994 AC_CHECK_TYPES(size_t)
2996 AC_TYPE_MBSTATE_T
2998 dnl Restrict could probably be used effectively other than in regex.c.
2999 AC_CACHE_CHECK([for C restrict keyword], emacs_cv_c_restrict,
3000   [AC_TRY_COMPILE([void fred (int *restrict x);], [],
3001                   emacs_cv_c_restrict=yes,
3002                   [AC_TRY_COMPILE([void fred (int *__restrict x);], [],
3003                                   emacs_cv_c_restrict=__restrict,
3004                                   emacs_cv_c_restrict=no)])])
3005 case "$emacs_cv_c_restrict" in
3006   yes) emacs_restrict=restrict;;
3007   no) emacs_restrict="";;
3008   *) emacs_restrict="$emacs_cv_c_restrict";;
3009 esac
3010 if test "$emacs_restrict" != __restrict; then
3011   AC_DEFINE_UNQUOTED(__restrict, $emacs_restrict,
3012     [Define to compiler's equivalent of C99 restrict keyword.
3013      Don't define if equivalent is `__restrict'.])
3016 AC_CACHE_CHECK([for C restricted array declarations], emacs_cv_c_restrict_arr,
3017   [AC_TRY_COMPILE([void fred (int x[__restrict]);], [],
3018                   emacs_cv_c_restrict_arr=yes, emacs_cv_c_restrict_arr=no)])
3019 if test "$emacs_cv_c_restrict_arr" = yes; then
3020   AC_DEFINE(__restrict_arr, __restrict,
3021     [Define to compiler's equivalent of C99 restrict keyword in array
3022      declarations.  Define as empty for no equivalent.])
3025 dnl Fixme: AC_SYS_POSIX_TERMIOS should probably be used, but it's not clear
3026 dnl how the tty code is related to POSIX and/or other versions of termios.
3027 dnl The following looks like a useful start.
3029 dnl AC_SYS_POSIX_TERMIOS
3030 dnl if test $ac_cv_sys_posix_termios = yes; then
3031 dnl    AC_DEFINE(HAVE_TERMIOS, 1, [Define to 1 if you have POSIX-style functions
3032 dnl                                and macros for terminal control.])
3033 dnl    AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.])
3034 dnl fi
3036 dnl Fixme: Use AC_FUNC_MEMCMP since memcmp is used.  (Needs libobj replacement.)
3038 # Set up the CFLAGS for real compilation, so we can substitute it.
3039 CFLAGS="$REAL_CFLAGS"
3040 CPPFLAGS="$REAL_CPPFLAGS"
3042 ## Hack to detect a buggy GCC version.
3043 if test "x$GCC" = xyes \
3044    && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \
3045    && test x"`echo $CFLAGS | grep '\-O@<:@23@:>@'`" != x \
3046    && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then
3047    AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'.])
3050 #### Find out which version of Emacs this is.
3051 [version=`grep 'const char emacs_version' ${srcdir}/src/emacs.c \
3052          | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'`]
3053 if test x"${version}" = x; then
3054   AC_MSG_ERROR([can't find current emacs version in `${srcdir}/src/emacs.c'.])
3056 if test x"${version}" != x"$PACKAGE_VERSION"; then
3057   AC_MSG_WARN([version mismatch between `${srcdir}/configure.in' and `${srcdir}/src/emacs.c'.])
3060 ### Specify what sort of things we'll be editing into Makefile and config.h.
3061 ### Use configuration here uncanonicalized to avoid exceeding size limits.
3062 AC_SUBST(version)
3063 AC_SUBST(configuration)
3064 ## Unused?
3065 AC_SUBST(canonical)
3066 AC_SUBST(srcdir)
3067 AC_SUBST(prefix)
3068 AC_SUBST(exec_prefix)
3069 AC_SUBST(bindir)
3070 AC_SUBST(datadir)
3071 AC_SUBST(sharedstatedir)
3072 AC_SUBST(libexecdir)
3073 AC_SUBST(mandir)
3074 AC_SUBST(infodir)
3075 AC_SUBST(lispdir)
3076 AC_SUBST(locallisppath)
3077 AC_SUBST(lisppath)
3078 AC_SUBST(x_default_search_path)
3079 AC_SUBST(etcdir)
3080 AC_SUBST(archlibdir)
3081 AC_SUBST(docdir)
3082 AC_SUBST(bitmapdir)
3083 AC_SUBST(gamedir)
3084 AC_SUBST(gameuser)
3085 AC_SUBST(unexec)
3086 ## FIXME? Nothing uses @LD_SWITCH_X_SITE@.
3087 ## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the
3088 ## end of LIBX_BASE, but nothing ever set it.
3089 AC_SUBST(LD_SWITCH_X_SITE)
3090 AC_SUBST(C_SWITCH_X_SITE)
3091 AC_SUBST(C_SWITCH_X_SYSTEM)
3092 AC_SUBST(CFLAGS)
3093 ## Used in lwlib/Makefile.in.
3094 AC_SUBST(X_TOOLKIT_TYPE)
3095 AC_SUBST(machfile)
3096 AC_SUBST(opsysfile)
3097 AC_SUBST(GETLOADAVG_LIBS)
3098 AC_SUBST(ns_appdir)
3099 AC_SUBST(ns_appbindir)
3100 AC_SUBST(ns_appresdir)
3101 AC_SUBST(ns_appsrc)
3102 AC_SUBST(GNU_OBJC_CFLAGS)
3103 AC_SUBST(OTHER_FILES)
3105 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION,  "${canonical}",
3106                    [Define to the canonical Emacs configuration name.])
3107 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${ac_configure_args}",
3108                    [Define to the options passed to configure.])
3109 AC_DEFINE_UNQUOTED(config_machfile,  "${machfile}",
3110                    [Define to the used machine dependent file.])
3111 AC_DEFINE_UNQUOTED(config_opsysfile, "${opsysfile}",
3112                    [Define to the used os dependent file.])
3114 XMENU_OBJ=
3115 XOBJ=
3116 FONT_OBJ=
3117 if test "${HAVE_X_WINDOWS}" = "yes" ; then
3118   AC_DEFINE(HAVE_X_WINDOWS, 1,
3119             [Define to 1 if you want to use the X window system.])
3120   XMENU_OBJ=xmenu.o
3121   XOBJ="xterm.o xfns.o xselect.o xrdb.o fontset.o xsmfns.o fringe.o image.o xsettings.o xgselect.o"
3122   FONT_OBJ=xfont.o
3123   if test "$HAVE_XFT" = "yes"; then
3124     FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
3125   elif test "$HAVE_FREETYPE" = "yes"; then
3126     FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
3127   fi
3128   AC_SUBST(FONT_OBJ)
3130 AC_SUBST(XMENU_OBJ)
3131 AC_SUBST(XOBJ)
3132 AC_SUBST(FONT_OBJ)
3134 WIDGET_OBJ=
3135 MOTIF_LIBW=
3136 if test "${USE_X_TOOLKIT}" != "none" ; then
3137   WIDGET_OBJ=widget.o
3138   AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
3139   if test "${USE_X_TOOLKIT}" = "LUCID"; then
3140     AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
3141   elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
3142     AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
3143     MOTIF_LIBW=-lXm
3144     case "$opsys" in
3145       gnu-linux)
3146         ## Paul Abrahams <abrahams at equinox.shaysnet.com> says this is needed.
3147         MOTIF_LIBW="$MOTIF_LIBW -lXpm"
3148         ;;
3150       unixware)
3151         ## Richard Anthony Ryan <ryanr at ellingtn.ftc.nrcs.usda.gov>
3152         ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2.
3153         MOTIF_LIBW="MOTIF_LIBW -lXimp"
3154         ;;
3156       aix4-2)
3157         ## olson@mcs.anl.gov says -li18n is needed by -lXm.
3158         MOTIF_LIBW="$MOTIF_LIBW -li18n"
3159         ;;
3160     esac
3161     MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
3162   fi
3164 AC_SUBST(WIDGET_OBJ)
3166 TOOLKIT_LIBW=
3167 case "$USE_X_TOOLKIT" in
3168   MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
3169   LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
3170   none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
3171 esac
3172 AC_SUBST(TOOLKIT_LIBW)
3174 if test "$USE_X_TOOLKIT" = "none"; then
3175   LIBXT_OTHER="\$(LIBXSM)"
3176   OLDXMENU_TARGET="really-oldXMenu"
3177 else
3178   LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
3179   OLDXMENU_TARGET="really-lwlib"
3181 AC_SUBST(LIBXT_OTHER)
3183 ## The X Menu stuff is present in the X10 distribution, but missing
3184 ## from X11.  If we have X10, just use the installed library;
3185 ## otherwise, use our own copy.
3186 if test "${HAVE_X11}" = "yes" ; then
3187   AC_DEFINE(HAVE_X11, 1,
3188             [Define to 1 if you want to use version 11 of X windows.
3189              Otherwise, Emacs expects to use version 10.])
3191   if test "$USE_X_TOOLKIT" = "none"; then
3192     OLDXMENU="\${oldXMenudir}libXMenu11.a"
3193   else
3194     OLDXMENU="\${lwlibdir}liblw.a"
3195   fi
3196   LIBXMENU="\$(OLDXMENU)"
3197   LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
3198   OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}"
3199 else
3200   ## For a syntactically valid Makefile; not actually used for anything.
3201   ## See comments in src/Makefile.in.
3202   OLDXMENU=nothing
3203   ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?).
3204   if test "${HAVE_X_WINDOWS}" = "yes"; then
3205     LIBXMENU="-lXMenu"
3206   else
3207     LIBXMENU=
3208   fi
3209   LIBX_OTHER=
3210   OLDXMENU_DEPS=
3213 if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then
3214   OLDXMENU_TARGET=
3215   OLDXMENU=nothing  
3216   LIBXMENU=
3217   OLDXMENU_DEPS=
3220 AC_SUBST(OLDXMENU_TARGET)
3221 AC_SUBST(OLDXMENU)
3222 AC_SUBST(LIBXMENU)
3223 AC_SUBST(LIBX_OTHER)
3224 AC_SUBST(OLDXMENU_DEPS)
3226 if test "${HAVE_MENUS}" = "yes" ; then
3227   AC_DEFINE(HAVE_MENUS, 1,
3228             [Define to 1 if you have mouse menus.
3229              (This is automatic if you use X, but the option to specify it remains.)
3230              It is also defined with other window systems that support xmenu.c.])
3233 if test "${GNU_MALLOC}" = "yes" ; then
3234   AC_DEFINE(GNU_MALLOC, 1,
3235             [Define to 1 if you want to use the GNU memory allocator.])
3238 RALLOC_OBJ=
3239 if test "${REL_ALLOC}" = "yes" ; then
3240   AC_DEFINE(REL_ALLOC, 1,
3241             [Define REL_ALLOC if you want to use the relocating allocator for
3242              buffer space.])
3244   test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
3246 AC_SUBST(RALLOC_OBJ)
3248 if test "$opsys" = "cygwin"; then
3249   CYGWIN_OBJ="sheap.o"
3250   ## Cygwin differs because of its unexec().
3251   PRE_ALLOC_OBJ=
3252   POST_ALLOC_OBJ=lastfile.o
3253 else
3254   CYGWIN_OBJ=
3255   PRE_ALLOC_OBJ=lastfile.o
3256   POST_ALLOC_OBJ=
3258 AC_SUBST(CYGWIN_OBJ)
3259 AC_SUBST(PRE_ALLOC_OBJ)
3260 AC_SUBST(POST_ALLOC_OBJ)
3263 case "$opsys" in
3264   aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
3266   darwin)
3267    ## The -headerpad option tells ld (see man page) to leave room at the
3268    ## end of the header for adding load commands.  Needed for dumping.
3269    ## 0x690 is the total size of 30 segment load commands (at 56
3270    ## each); under Cocoa 31 commands are required.
3271    if test "$HAVE_NS" = "yes"; then
3272      libs_nsgui="-framework AppKit"
3273      headerpad_extra=6C8
3274    else
3275      libs_nsgui=
3276      headerpad_extra=690
3277    fi
3278    LD_SWITCH_SYSTEM_TEMACS="-prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
3280    ## This is here because src/Makefile.in did some extra fiddling around
3281    ## with LD_SWITCH_SYSTEM.  The cpp logic was:
3282    ##   #ifndef LD_SWITCH_SYSTEM
3283    ##   #if !defined (__GNUC__) && ((defined (BSD_SYSTEM) && !defined (COFF)))
3284    ## Since all the *bsds define LD_SWITCH_SYSTEM, this simplifies to:
3285    ## not using gcc, darwin system not on an alpha (ie darwin, since
3286    ## darwin + alpha does not occur).
3287    ## Because this was done in src/Makefile.in, the resulting part of
3288    ## LD_SWITCH_SYSTEM was not used in configure (ie, in ac_link).
3289    ## It therefore seems cleaner to put this in LD_SWITCH_SYSTEM_TEMACS,
3290    ## rather than LD_SWITCH_SYSTEM.
3291    test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
3292      LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
3293    ;;
3295   ## LD_SWITCH_X_SITE_AUX is a -R option saying where to find X at run-time.
3296   ## When handled by cpp, this was in LD_SWITCH_SYSTEM.  However, at
3297   ## the point where configure sourced the s/*.h file, LD_SWITCH_X_SITE_AUX
3298   ## had not yet been defined and was expanded to null.  Hence LD_SWITCH_SYSTEM
3299   ## had different values in configure (in ac_link) and src/Makefile.in.
3300   ## It seems clearer therefore to put this piece in LD_SWITCH_SYSTEM_TEMACS.
3301   gnu-linux) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_AUX)" ;;
3303   *) LD_SWITCH_SYSTEM_TEMACS= ;;
3304 esac
3306 if test "$NS_IMPL_GNUSTEP" = "yes"; then
3307   LD_SWITCH_SYSTEM_TEMACS="${LD_SWITCH_SYSTEM_TEMACS} -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES} -lgnustep-gui -lgnustep-base -lobjc -lpthread"
3310 AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
3313 LINKER=
3314 ORDINARY_LINK=
3315 case "$opsys" in
3316   ## gnu: GNU needs its own crt0.
3317   aix4-2|darwin|gnu|usg5-4|irix6-5|sol2*|unixware) ORDINARY_LINK=yes ;;
3319   cygwin) LINKER="\$(CC)" ;;
3321   ## On post 1.3 releases of NetBSD, gcc -nostdlib also clears the
3322   ## library search parth, i.e. it won't search /usr/lib for libc and
3323   ## friends.  Using -nostartfiles instead avoids this problem, and
3324   ## will also work on earlier NetBSD releases.
3325   netbsd|openbsd) LINKER="\$(CC) -nostartfiles" ;;
3327   ## macpcc: NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp> says
3328   ##   MkLinux/LinuxPPC needs this.
3329   ## ibms390x only supports opsys = gnu-linux so it can be added here.
3330   gnu-*)
3331     case "$machine" in
3332       macppc|ibms390x) LINKER="\$(CC) -nostdlib" ;;
3333     esac
3334     ;;
3335 esac
3338 PRE_EDIT_LDFLAGS=
3339 POST_EDIT_LDFLAGS=
3340 if test "x$ORDINARY_LINK" = "xyes"; then
3342   LINKER="\$(CC)"
3343   AC_DEFINE(ORDINARY_LINK, 1, [Define if the C compiler is the linker.])
3345 ## The system files defining neither ORDINARY_LINK nor LINKER are:
3346 ## (bsd-common), freebsd, gnu-* not on macppc|ibms390x, hpux*.
3347 elif test "x$GCC" = "xyes" && test "x$LINKER" = "x"; then
3349   ## Versions of GCC >= 2.0 put their library, libgcc.a, in obscure
3350   ## places that are difficult to figure out at make time.  Fortunately,
3351   ## these same versions allow you to pass arbitrary flags on to the
3352   ## linker, so there is no reason not to use it as a linker.
3353   ##
3354   ## Well, it is not quite perfect.  The "-nostdlib" keeps GCC from
3355   ## searching for libraries in its internal directories, so we have to
3356   ## ask GCC explicitly where to find libgcc.a (LIB_GCC below).
3357   LINKER="\$(CC) -nostdlib"
3358   ## GCC passes any argument prefixed with -Xlinker directly to the linker.
3359   ## See prefix-args.c for an explanation of why we do not do this with the
3360   ## shell''s ``for'' construct.  Note that sane people do not have '.' in
3361   ## their paths, so we must use ./prefix-args.
3362   ## TODO either make prefix-args check ORDINARY_LINK internally,
3363   ## or remove it altogether (bug#6184), removing the need for this hack.
3364   PRE_EDIT_LDFLAGS='`./prefix-args -Xlinker'
3365   POST_EDIT_LDFLAGS='`'
3367 AC_SUBST(PRE_EDIT_LDFLAGS)
3368 AC_SUBST(POST_EDIT_LDFLAGS)
3370 test "x$LINKER" = "x" && LINKER=ld
3371 ## FIXME? What setting of EDIT_LDFLAGS should this have?
3372 test "$NS_IMPL_GNUSTEP" = "yes" && LINKER="\$(CC) -rdynamic"
3374 AC_SUBST(LINKER)
3377 ## FIXME? The logic here is not precisely the same as that above.
3378 ## There is no check here for a pre-defined LINKER.
3379 ## Should we only be setting LIB_GCC if LD ~ -nostdlib?
3380 LIB_GCC=
3381 if test "x$GCC" = "xyes" && test "x$ORDINARY_LINK" != "xyes"; then
3383   case "$opsys" in
3384     ## cygwin: don't link against static libgcc.
3385     cygwin|freebsd|netbsd|openbsd) LIB_GCC= ;;
3387     gnu-*)
3388       ## armin76@gentoo.org reported that the lgcc_s flag is necessary to
3389       ## build on ARM EABI under GNU/Linux.  (Bug#5518)
3390       ## Note that m/arm.h never bothered to undefine LIB_GCC first.
3391       if test "$machine" = "arm"; then
3392         LIB_GCC="-lgcc_s"
3393       else
3394         ## FIXME? s/gnu-linux.h used to define LIB_GCC as below, then
3395         ## immediately undefine it again and redefine it to empty.
3396         ## Was the C_SWITCH_X_SITE part really necessary?
3397 ##      LIB_GCC=`$CC $C_SWITCH_X_SITE -print-libgcc-file-name`
3398         LIB_GCC=
3399       fi
3400       ;;
3402     ## Ask GCC where to find libgcc.a.
3403     *) LIB_GCC=`$CC -print-libgcc-file-name 2> /dev/null` ;;
3404   esac
3405 fi                              dnl if $GCC
3406 AC_SUBST(LIB_GCC)
3409 TOOLTIP_SUPPORT=
3410 WINDOW_SUPPORT=
3411 ## If we're using X11/GNUstep, define some consequences.
3412 if test "$HAVE_X_WINDOWS" = "yes" || test "$HAVE_NS" = "yes"; then
3413   AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
3414   AC_DEFINE(HAVE_MOUSE, 1, [Define if you have mouse support.])
3415   MOUSE_SUPPORT="\$(REAL_MOUSE_SUPPORT)"
3416   TOOLTIP_SUPPORT="\${lispsource}mouse.elc"
3418   WINDOW_SUPPORT="\$(BASE_WINDOW_SUPPORT)"
3419   test "$HAVE_X_WINDOWS" = "yes" && \
3420     WINDOW_SUPPORT="$WINDOW_SUPPORT \$(X_WINDOW_SUPPORT)"
3423 AC_SUBST(MOUSE_SUPPORT)
3424 AC_SUBST(TOOLTIP_SUPPORT)
3425 AC_SUBST(WINDOW_SUPPORT)
3428 AH_TOP([/* GNU Emacs site configuration template file.
3429    Copyright (C) 1988, 1993, 1994, 1999, 2000, 2001, 2002, 2004, 2005,
3430      2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
3432 This file is part of GNU Emacs.
3434 GNU Emacs is free software: you can redistribute it and/or modify
3435 it under the terms of the GNU General Public License as published by
3436 the Free Software Foundation, either version 3 of the License, or
3437 (at your option) any later version.
3439 GNU Emacs is distributed in the hope that it will be useful,
3440 but WITHOUT ANY WARRANTY; without even the implied warranty of
3441 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3442 GNU General Public License for more details.
3444 You should have received a copy of the GNU General Public License
3445 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
3448 /* No code in Emacs #includes config.h twice, but some bits of code
3449    intended to work with other packages as well (like gmalloc.c)
3450    think they can include it as many times as they like.  */
3451 #ifndef EMACS_CONFIG_H
3452 #define EMACS_CONFIG_H
3453 ])dnl
3455 AH_BOTTOM([
3456 /* Define AMPERSAND_FULL_NAME if you use the convention
3457    that & in the full name stands for the login id.  */
3458 /* Turned on June 1996 supposing nobody will mind it.  */
3459 #define AMPERSAND_FULL_NAME
3461 /* Define HAVE_SOUND if we have sound support.  We know it works
3462    and compiles only on the specified platforms.   For others,
3463    it probably doesn't make sense to try.  */
3465 #if defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
3466 #ifdef HAVE_MACHINE_SOUNDCARD_H
3467 #define HAVE_SOUND 1
3468 #endif
3469 #ifdef HAVE_SYS_SOUNDCARD_H
3470 #define HAVE_SOUND 1
3471 #endif
3472 #ifdef HAVE_SOUNDCARD_H
3473 #define HAVE_SOUND 1
3474 #endif
3475 #ifdef HAVE_ALSA
3476 #define HAVE_SOUND 1
3477 #endif
3478 #endif /* __FreeBSD__ || __NetBSD__ || __linux__  */
3480 /* If using GNU, then support inline function declarations.  */
3481 /* Don't try to switch on inline handling as detected by AC_C_INLINE
3482    generally, because even if non-gcc compilers accept `inline', they
3483    may reject `extern inline'.  */
3484 #if defined (__GNUC__) && defined (OPTIMIZE)
3485 #define INLINE __inline__
3486 #else
3487 #define INLINE
3488 #endif
3490 /* `subprocesses' should be defined if you want to
3491    have code for asynchronous subprocesses
3492    (as used in M-x compile and M-x shell).
3493    Only MSDOS does not support this (it overrides
3494    this in its config_opsysfile below).  */
3496 #define subprocesses
3498 /* Include the os and machine dependent files.  */
3499 #include config_opsysfile
3500 #include config_machfile
3502 /* Set up some defines, C and LD flags for NeXTstep interface on GNUstep.
3503   (There is probably a better place to do this, but right now the Cocoa
3504    side does this in s/darwin.h and we cannot
3505    parallel this exactly since GNUstep is multi-OS.  */
3506 #ifdef HAVE_NS
3507 # ifdef NS_IMPL_GNUSTEP
3508 /* GNUstep needs a bit more pure memory.  Of the existing knobs,
3509 SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems.  */
3510 #  define SYSTEM_PURESIZE_EXTRA 30000
3511 # endif /* NS_IMPL_GNUSTEP */
3512 #endif /* HAVE_NS */
3514 /* SIGTYPE is the macro we actually use.  */
3515 #ifndef SIGTYPE
3516 #define SIGTYPE RETSIGTYPE
3517 #endif
3519 #ifdef emacs /* Don't do this for lib-src.  */
3520 /* Tell regex.c to use a type compatible with Emacs.  */
3521 #define RE_TRANSLATE_TYPE Lisp_Object
3522 #define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
3523 #ifdef make_number
3524 /* If make_number is a macro, use it.  */
3525 #define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0)))
3526 #else
3527 /* If make_number is a function, avoid it.  */
3528 #define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0))
3529 #endif
3530 #endif
3532 /* Avoid link-time collision with system mktime if we will use our own.  */
3533 #if ! HAVE_MKTIME || BROKEN_MKTIME
3534 #define mktime emacs_mktime
3535 #endif
3537 #define my_strftime nstrftime   /* for strftime.c */
3539 /* The rest of the code currently tests the CPP symbol BSTRING.
3540    Override any claims made by the system-description files.
3541    Note that on some SCO version it is possible to have bcopy and not bcmp.  */
3542 #undef BSTRING
3543 #if defined (HAVE_BCOPY) && defined (HAVE_BCMP)
3544 #define BSTRING
3545 #endif
3547 /* Some of the files of Emacs which are intended for use with other
3548    programs assume that if you have a config.h file, you must declare
3549    the type of getenv.
3551    This declaration shouldn't appear when alloca.s or Makefile.in
3552    includes config.h.  */
3553 #ifndef NOT_C_CODE
3554 extern char *getenv ();
3555 #endif
3557 /* These default definitions are good for almost all machines.
3558    The exceptions override them in m/MACHINE.h.  */
3560 #ifndef BITS_PER_CHAR
3561 #define BITS_PER_CHAR 8
3562 #endif
3564 #ifndef BITS_PER_SHORT
3565 #define BITS_PER_SHORT 16
3566 #endif
3568 /* Note that lisp.h uses this in a preprocessor conditional, so it
3569    would not work to use sizeof.  That being so, we do all of them
3570    without sizeof, for uniformity's sake.  */
3571 #ifndef BITS_PER_INT
3572 #define BITS_PER_INT 32
3573 #endif
3575 #ifndef BITS_PER_LONG
3576 #ifdef _LP64
3577 #define BITS_PER_LONG 64
3578 #else
3579 #define BITS_PER_LONG 32
3580 #endif
3581 #endif
3583 /* Define if the compiler supports function prototypes.  It may do so
3584    but not define __STDC__ (e.g. DEC C by default) or may define it as
3585    zero.  */
3586 #undef PROTOTYPES
3587 /* For mktime.c:  */
3588 #ifndef __P
3589 # if defined PROTOTYPES
3590 #  define __P(args) args
3591 # else
3592 #  define __P(args) ()
3593 # endif  /* GCC.  */
3594 #endif /* __P */
3596 /* Don't include "string.h" or <stdlib.h> in non-C code.  */
3597 #ifndef NOT_C_CODE
3598 #ifdef HAVE_STRING_H
3599 #include "string.h"
3600 #endif
3601 #ifdef HAVE_STRINGS_H
3602 #include "strings.h"  /* May be needed for bcopy & al.  */
3603 #endif
3604 #ifdef HAVE_STDLIB_H
3605 #include <stdlib.h>
3606 #endif
3607 #ifdef HAVE_ALLOCA_H
3608 # include <alloca.h>
3609 #elif defined __GNUC__
3610 # define alloca __builtin_alloca
3611 #elif defined _AIX
3612 # define alloca __alloca
3613 #else
3614 # include <stddef.h>
3615 # ifdef  __cplusplus
3616 extern "C"
3617 # endif
3618 void *alloca (size_t);
3619 #endif
3620 #ifndef HAVE_SIZE_T
3621 typedef unsigned size_t;
3622 #endif
3623 #endif /* NOT_C_CODE */
3625 /* Define HAVE_X_I18N if we have usable i18n support.  */
3627 #ifdef HAVE_X11R6
3628 #define HAVE_X_I18N
3629 #endif
3631 /* Define HAVE_X11R6_XIM if we have usable X11R6-style XIM support.  */
3633 #if defined HAVE_X11R6 && !defined INHIBIT_X11R6_XIM
3634 #define HAVE_X11R6_XIM
3635 #endif
3637 #if defined __GNUC__ && (__GNUC__ > 2 \
3638                          || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5))
3639 #define NO_RETURN       __attribute__ ((__noreturn__))
3640 #else
3641 #define NO_RETURN       /* nothing */
3642 #endif
3644 /* These won't be used automatically yet.  We also need to know, at least,
3645    that the stack is continuous.  */
3646 #ifdef __GNUC__
3647 #  ifndef GC_SETJMP_WORKS
3648   /* GC_SETJMP_WORKS is nearly always appropriate for GCC.  */
3649 #    define GC_SETJMP_WORKS 1
3650 #  endif
3651 #  ifndef GC_LISP_OBJECT_ALIGNMENT
3652 #    define GC_LISP_OBJECT_ALIGNMENT (__alignof__ (Lisp_Object))
3653 #  endif
3654 #endif
3656 #ifndef HAVE_BCOPY
3657 #define bcopy(a,b,s) memcpy (b,a,s)
3658 #endif
3659 #ifndef HAVE_BZERO
3660 #define bzero(a,s) memset (a,0,s)
3661 #endif
3662 #ifndef HAVE_BCMP
3663 #define BCMP memcmp
3664 #endif
3666 #endif /* EMACS_CONFIG_H */
3669 Local Variables:
3670 mode: c
3671 End:
3673 ])dnl
3675 #### Report on what we decided to do.
3676 #### Report GTK as a toolkit, even if it doesn't use Xt.
3677 #### It makes printing result more understandable as using GTK sets
3678 #### toolkit_scroll_bars to yes by default.
3679 if test "${HAVE_GTK}" = "yes"; then
3680   USE_X_TOOLKIT=GTK
3683 echo "
3684 Configured for \`${canonical}'.
3686   Where should the build process find the source code?    ${srcdir}
3687   What operating system and machine description files should Emacs use?
3688         \`${opsysfile}' and \`${machfile}'
3689   What compiler should emacs be built with?               ${CC} ${CFLAGS}
3690   Should Emacs use the GNU version of malloc?             ${GNU_MALLOC}${GNU_MALLOC_reason}
3691   Should Emacs use a relocating allocator for buffers?    ${REL_ALLOC}
3692   Should Emacs use mmap(2) for buffer allocation?         $use_mmap_for_buffers
3693   What window system should Emacs use?                    ${window_system}
3694   What toolkit should Emacs use?                          ${USE_X_TOOLKIT}"
3696 if test -n "${x_includes}"; then
3697 echo "  Where do we find X Windows header files?                ${x_includes}"
3698 else
3699 echo "  Where do we find X Windows header files?                Standard dirs"
3701 if test -n "${x_libraries}"; then
3702 echo "  Where do we find X Windows libraries?                   ${x_libraries}"
3703 else
3704 echo "  Where do we find X Windows libraries?                   Standard dirs"
3707 echo "  Does Emacs use -lXaw3d?                                 ${HAVE_XAW3D}"
3708 echo "  Does Emacs use -lXpm?                                   ${HAVE_XPM}"
3709 echo "  Does Emacs use -ljpeg?                                  ${HAVE_JPEG}"
3710 echo "  Does Emacs use -ltiff?                                  ${HAVE_TIFF}"
3711 echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $LIBGIF"
3712 echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
3713 echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
3714 echo "  Does Emacs use -lgpm?                                   ${HAVE_GPM}"
3715 echo "  Does Emacs use -ldbus?                                  ${HAVE_DBUS}"
3716 echo "  Does Emacs use -lgconf?                                 ${HAVE_GCONF}"
3717 echo "  Does Emacs use -lselinux?                               ${HAVE_LIBSELINUX}"
3719 echo "  Does Emacs use -lfreetype?                              ${HAVE_FREETYPE}"
3720 echo "  Does Emacs use -lm17n-flt?                              ${HAVE_M17N_FLT}"
3721 echo "  Does Emacs use -lotf?                                   ${HAVE_LIBOTF}"
3722 echo "  Does Emacs use -lxft?                                   ${HAVE_XFT}"
3724 echo "  Does Emacs use toolkit scroll bars?                     ${USE_TOOLKIT_SCROLL_BARS}"
3725 echo
3727 if test $USE_XASSERTS = yes; then
3728    echo "  Compiling with asserts turned on."
3729    CPPFLAGS="$CPPFLAGS -DXASSERTS=1"
3732 echo
3734 if test "$HAVE_NS" = "yes"; then
3735    echo
3736    echo "You must run \"make install\" in order to test the built application.
3737 The installed application will go to nextstep/Emacs.app and can be
3738 run or moved from there."
3739    if test "$EN_NS_SELF_CONTAINED" = "yes"; then
3740       echo "The application will be fully self-contained."
3741     else
3742       echo "The lisp resources for the application will be installed under ${prefix}.
3743 You may need to run \"make install\" with sudo.  The application will fail
3744 to run if these resources are not installed."
3745    fi
3746    echo
3749 if test "$HAVE_DBUS" = yes && test "${opsys}" != "gnu-linux"; then
3750   echo "D-Bus integration has been tested for GNU/Linux only."
3751   echo
3755 # Remove any trailing slashes in these variables.
3756 [test "${prefix}" != NONE &&
3757   prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
3758 test "${exec_prefix}" != NONE &&
3759   exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
3761 dnl You might wonder (I did) why epaths.h is generated by running make,
3762 dnl rather than just letting configure generate it from epaths.in.
3763 dnl One reason is that the various paths are not fully expanded (see above);
3764 dnl eg gamedir=${prefix}/var/games/emacs.
3765 dnl Secondly, the GNU Coding standards require that one should be able
3766 dnl to run `make prefix=/some/where/else' and override the values set
3767 dnl by configure.  This also explains the `move-if-change' test and
3768 dnl the use of force in the `epaths-force' rule in Makefile.in.
3769 AC_OUTPUT(Makefile lib-src/Makefile oldXMenu/Makefile \
3770         doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
3771         doc/lispref/Makefile src/Makefile \
3772         lwlib/Makefile lisp/Makefile leim/Makefile, [
3774 ### Make the necessary directories, if they don't exist.
3775 for dir in etc lisp ; do
3776   test -d ${dir} || mkdir ${dir}
3777 done
3779 echo creating src/epaths.h
3780 ${MAKE-make} epaths-force
3782 if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
3783   echo creating src/.gdbinit
3784   echo source $srcdir/src/.gdbinit > src/.gdbinit
3787 ], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"])
3789 m4_if(dnl       Do not change this comment
3790    arch-tag: 156a4dd5-bddc-4d18-96ac-f37742cf6a5e
3791 )dnl