X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/40697cd9ed9e6ee943c81f18f40ead453bb79b1e..e5d84bfe065f1d8172165ee2bdd15193f7447d8a:/configure.in diff --git a/configure.in b/configure.in index 68404bf0bc..20dbf2b509 100644 --- a/configure.in +++ b/configure.in @@ -22,9 +22,10 @@ dnl You should have received a copy of the GNU General Public License dnl along with GNU Emacs. If not, see . AC_PREREQ(2.65) -AC_INIT(emacs, 24.0.50) +AC_INIT(emacs, 24.0.92) AC_CONFIG_HEADER(src/config.h:src/config.in) AC_CONFIG_SRCDIR(src/lisp.h) +AC_CONFIG_AUX_DIR(build-aux) AM_INIT_AUTOMAKE dnl Support for --program-prefix, --program-suffix and @@ -144,6 +145,11 @@ this option's value should be `yes', `no', `lucid', `athena', `motif', `gtk' or with_x_toolkit=$val ]) +OPTION_DEFAULT_OFF([wide-int], [prefer wide Emacs integers (typically 62-bit)]) +if test "$with_wide_int" = yes; then + AC_DEFINE([WIDE_EMACS_INT], 1, [Use long long for EMACS_INT if available.]) +fi + dnl _ON results in a '--without' option in the --help output, so dnl the help text should refer to "don't compile", etc. OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support]) @@ -167,6 +173,7 @@ OPTION_DEFAULT_OFF([ns],[use NeXTstep (Cocoa or GNUstep) windowing system]) OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console]) OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support]) OPTION_DEFAULT_ON([gconf],[don't compile with GConf support]) +OPTION_DEFAULT_ON([gsettings],[don't compile with GSettings support]) OPTION_DEFAULT_ON([selinux],[don't compile with SELinux support]) OPTION_DEFAULT_ON([gnutls],[don't use -lgnutls for SSL/TLS support]) @@ -175,6 +182,9 @@ OPTION_DEFAULT_ON([gnutls],[don't use -lgnutls for SSL/TLS support]) dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals]) +## Makefile.in needs the cache file name. +AC_SUBST(cache_file) + ## This is an option because I do not know if all info/man support ## compressed files, nor how to test if they do so. OPTION_DEFAULT_ON([compress-info],[don't compress the installed Info pages]) @@ -225,8 +235,8 @@ AC_ARG_ENABLE(asserts, USE_XASSERTS=no) AC_ARG_ENABLE(maintainer-mode, -[AS_HELP_STRING([--enable-maintainer-mode], - [enable make rules and dependencies not useful (and sometimes +[AS_HELP_STRING([--disable-maintainer-mode], + [disable make rules and dependencies not useful (and sometimes confusing) to the casual installer])], USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=yes) @@ -364,17 +374,6 @@ case "${srcdir}" in * ) srcdir="`(cd ${srcdir}; pwd)`" ;; esac -#### Check if the source directory already has a configured system in it. -if test `pwd` != `(cd ${srcdir} && pwd)` \ - && test -f "${srcdir}/src/config.h" ; then - AC_MSG_WARN([[The directory tree `${srcdir}' is being used - as a build directory right now; it has been configured in its own - right. To configure in another directory as well, you MUST - use GNU make. If you do not have GNU make, then you must - now do `make distclean' in ${srcdir}, - and then run $0 again.]]) -fi - #### Given the configuration name, set machfile and opsysfile to the #### names of the m/*.h and s/*.h files we should use. @@ -415,12 +414,11 @@ dnl quotation begins machine='' opsys='' unported=no case "${canonical}" in - ## GNU/Linux ports - *-*-linux-gnu*) + ## GNU/Linux and similar ports + *-*-linux* ) opsys=gnu-linux case ${canonical} in alpha*) machine=alpha ;; - s390-*) machine=ibms390 ;; s390x-*) machine=ibms390x ;; powerpc*) machine=macppc ;; sparc*) machine=sparc ;; @@ -513,17 +511,6 @@ case "${canonical}" in CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS" ;; - ia64*-hp-hpux1[1-9]* ) - machine=hp800 opsys=hpux11 - ## FIXME. Peter O'Gorman reports that dumping using unexelf.o doesn't - ## work either: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6811 - CANNOT_DUMP=yes - ;; - - hppa*-*-linux-gnu* ) - machine=hp800 opsys=gnu-linux - ;; - ## IBM machines rs6000-ibm-aix4.[23]* ) machine=ibmrs6000 opsys=aix4-2 @@ -541,7 +528,7 @@ case "${canonical}" in ## Silicon Graphics machines ## Iris 4D mips-sgi-irix6.5 ) - machine=iris4d opsys=irix6-5 + opsys=irix6-5 # Without defining _LANGUAGE_C, things get masked out in the headers # so that, for instance, grepping for `free' in stdlib.h fails and # AC_HEADER_STD_C fails. (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m). @@ -989,51 +976,18 @@ fi # Suppress obsolescent Autoconf test for size_t; Emacs assumes C89 or better. AC_DEFUN([AC_TYPE_SIZE_T]) +# Likewise for obsolescent test for uid_t, gid_t; Emacs assumes them. +AC_DEFUN([AC_TYPE_UID_T]) dnl Do this early because it can frob feature test macros for Unix-98 &c. AC_SYS_LARGEFILE -## If user specified a crt-dir, use that unconditionally. -if test "X$CRT_DIR" = "X"; then - - case "$canonical" in - x86_64-*-linux-gnu* | s390x-*-linux-gnu*) - ## On x86-64 and s390x GNU/Linux distributions, the standard library - ## can be in a variety of places. We only try /usr/lib64 and /usr/lib. - ## For anything else (eg /usr/lib32), it is up the user to specify - ## the location (bug#5655). - ## Test for crtn.o, not just the directory, because sometimes the - ## directory exists but does not have the relevant files (bug#1287). - ## FIXME better to test for binary compatibility somehow. - test -e /usr/lib64/crtn.o && CRT_DIR=/usr/lib64 - ;; - - powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*) CRT_DIR=/usr/lib64 ;; - esac - - case "$opsys" in - hpux10-20) CRT_DIR=/lib ;; - esac - - ## Default is /usr/lib. - test "X$CRT_DIR" = "X" && CRT_DIR=/usr/lib - -else - - ## Some platforms don't use any of these files, so it is not - ## appropriate to put this test outside the if block. - test -e $CRT_DIR/crtn.o || test -e $CRT_DIR/crt0.o || \ - AC_MSG_ERROR([crt*.o not found in specified location.]) - -fi - -AC_SUBST(CRT_DIR) - LIB_MATH=-lm LIB_STANDARD= START_FILES= +dnl NB do not use CRT_DIR unquoted here, since it might not be set yet. case $opsys in cygwin ) LIB_MATH= @@ -1056,19 +1010,102 @@ case $opsys in LIB_STANDARD=-lc START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o' ;; + dnl NB this may be adjusted below. + netbsd | openbsd ) + LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o' + START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crtbegin.o' + ;; +esac + +AC_SUBST(LIB_MATH) +AC_SUBST(START_FILES) + +dnl Not all platforms use crtn.o files. Check if the current one does. +crt_files= + +for file in x $LIB_STANDARD $START_FILES; do + case "$file" in + *CRT_DIR*) crt_files="$crt_files `echo $file | sed -e 's|.*/||'`" ;; + esac +done + +if test "x$crt_files" != x; then + + ## If user specified a crt-dir, use that unconditionally. + crt_gcc=no + + if test "X$CRT_DIR" = "X"; then + + CRT_DIR=/usr/lib # default + + case "$canonical" in + x86_64-*-linux-gnu* | s390x-*-linux-gnu*) + ## On x86-64 and s390x GNU/Linux distributions, the standard library + ## can be in a variety of places. We only try /usr/lib64 and /usr/lib. + ## For anything else (eg /usr/lib32), it is up the user to specify + ## the location (bug#5655). + ## Test for crtn.o, not just the directory, because sometimes the + ## directory exists but does not have the relevant files (bug#1287). + ## FIXME better to test for binary compatibility somehow. + test -e /usr/lib64/crtn.o && CRT_DIR=/usr/lib64 + ;; + + powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*) CRT_DIR=/usr/lib64 ;; + esac + + case "$opsys" in + hpux10-20) CRT_DIR=/lib ;; + esac + + test "x${GCC}" = xyes && crt_gcc=yes + + fi # CRT_DIR = "" + + crt_missing= + + for file in $crt_files; do + + ## If we're using gcc, try to determine it automatically by asking + ## gcc. [If this doesn't work, CRT_DIR will remain at the + ## system-dependent default from above.] + if test $crt_gcc = yes && test ! -e $CRT_DIR/$file; then + + crt_file=`$CC --print-file-name=$file 2>/dev/null` + case "$crt_file" in + */*) + CRT_DIR=`AS_DIRNAME(["$crt_file"])` + ;; + esac + fi + + dnl We expect all the files to be in a single directory, so after the + dnl first there is no point asking gcc. + crt_gcc=no + + test -e $CRT_DIR/$file || crt_missing="$crt_missing $file" + done # $crt_files + + test "x$crt_missing" = x || \ + AC_MSG_ERROR([Required file(s) not found:$crt_missing +Try using the --with-crt-dir option.]) + +fi # crt_files != "" + +AC_SUBST(CRT_DIR) + +case $opsys in netbsd | openbsd ) if test -f $CRT_DIR/crti.o; then - LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o $(CRT_DIR)/crtn.o' + + test -f $CRT_DIR/crtn.o || \ + AC_MSG_ERROR([Required file not found: crtn.o]) + + LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o $(CRT_DIR)/crtn.o' START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crti.o $(CRT_DIR)/crtbegin.o' - else - LIB_STANDARD='-lgcc -lc -lgcc $(CRT_DIR)/crtend.o' - START_FILES='pre-crt0.o $(CRT_DIR)/crt0.o $(CRT_DIR)/crtbegin.o' fi ;; esac -AC_SUBST(LIB_MATH) -AC_SUBST(START_FILES) dnl This function definition taken from Gnome 2.0 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) @@ -1178,7 +1215,7 @@ fi dnl checks for header files AC_CHECK_HEADERS(sys/select.h sys/time.h unistd.h utime.h \ - linux/version.h sys/systeminfo.h limits.h \ + linux/version.h sys/systeminfo.h \ stdio_ext.h fcntl.h coff.h pty.h sys/mman.h \ sys/vlimit.h sys/resource.h locale.h sys/_mbstate_t.h \ sys/utsname.h pwd.h utmp.h dirent.h util.h) @@ -1197,7 +1234,6 @@ fi dnl On Solaris 8 there's a compilation warning for term.h because dnl it doesn't define `bool'. AC_CHECK_HEADERS(term.h, , , -) -AC_HEADER_STDC AC_HEADER_TIME AC_CHECK_DECLS([sys_siglist]) if test $ac_cv_have_decl_sys_siglist != yes; then @@ -1265,21 +1301,26 @@ if test $emacs_cv_struct_exception != yes; then AC_DEFINE(NO_MATHERR, 1, [Define to 1 if you don't have struct exception in math.h.]) fi +AC_CHECK_HEADERS(sys/socket.h) AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT #if HAVE_SYS_SOCKET_H #include #endif]) +AC_CHECK_HEADERS(ifaddrs.h, , , [AC_INCLUDES_DEFAULT +#if HAVE_SYS_SOCKET_H +#include +#endif]) +AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT +#if HAVE_SYS_SOCKET_H +#include +#endif]) +AC_CHECK_FUNCS(getifaddrs freeifaddrs) dnl checks for structure members -AC_STRUCT_TM -AC_STRUCT_TIMEZONE -AC_CHECK_MEMBER(struct tm.tm_gmtoff, - [AC_DEFINE(HAVE_TM_GMTOFF, 1, - [Define to 1 if `tm_gmtoff' is member of `struct tm'.])],, - [#include ]) AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr, struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr, - struct ifreq.ifr_addr], , , + struct ifreq.ifr_addr, + struct ifreq.ifr_addr.sa_len], , , [AC_INCLUDES_DEFAULT #if HAVE_SYS_SOCKET_H #include @@ -1297,9 +1338,6 @@ dnl and void *. AC_C_PROTOTYPES AC_C_VOLATILE AC_C_CONST -dnl This isn't useful because we can't turn on use of `inline' unless -dnl the compiler groks `extern inline'. -dnl AC_C_INLINE AC_CACHE_CHECK([for void * support], emacs_cv_void_star, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[void * foo;]])], emacs_cv_void_star=yes, emacs_cv_void_star=no)]) @@ -1312,7 +1350,7 @@ AH_TEMPLATE(POINTER_TYPE, [Define as `void' if your compiler accepts `void *'; otherwise define as `char'.])dnl -dnl Check for endianess +dnl Check for endianness. AC_C_BIGENDIAN AC_CACHE_CHECK([for __attribute__ ((__aligned__ (expr)))], @@ -1338,7 +1376,7 @@ dnl check for GNU Make if we have GCC and autodepend is on. if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then AC_MSG_CHECKING([whether we are using GNU Make]) HAVE_GNU_MAKE=no - testval=`make --version 2>/dev/null | grep 'GNU Make'` + testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'` if test "x$testval" != x; then HAVE_GNU_MAKE=yes else @@ -1348,7 +1386,7 @@ if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then if test $HAVE_GNU_MAKE = yes; then AC_MSG_CHECKING([whether gcc understands -MMD -MF]) SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -MMD -MF deps.d" + CFLAGS="$CFLAGS -MMD -MF deps.d -MP" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no) CFLAGS="$SAVE_CFLAGS" test -f deps.d || ac_enable_autodepend=no @@ -1356,7 +1394,7 @@ if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then AC_MSG_RESULT([$ac_enable_autodepend]) fi if test $ac_enable_autodepend = yes; then - DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d' + DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP' ## In parallel builds, another make might create depdir between ## the first test and mkdir, so stick another test on the end. ## Or use install-sh -d? mkdir -p is not portable. @@ -1370,6 +1408,10 @@ AC_SUBST(DEPFLAGS) AC_SUBST_FILE(deps_frag) +lisp_frag=$srcdir/src/lisp.mk +AC_SUBST_FILE(lisp_frag) + + dnl checks for operating system services AC_SYS_LONG_FILE_NAMES @@ -1453,6 +1495,7 @@ tmp_CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS -x objective-c" CFLAGS="$CFLAGS -x objective-c" TEMACS_LDFLAGS2="\${LDFLAGS}" +GNU_OBJC_CFLAGS= dnl I don't think it's especially important, but src/Makefile.in dnl (now the only user of ns_appdir) used to go to the trouble of adding a dnl trailing "/" to it, so now we do it here. @@ -1485,7 +1528,28 @@ if test "${with_ns}" != no; then LIB_STANDARD= START_FILES= TEMACS_LDFLAGS2= + dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1. + dnl If they had chosen to either define it or not, we could have + dnl just used AC_CHECK_DECL here. + AC_CACHE_CHECK(if GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS, + emacs_cv_objc_exceptions, +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], +[[#if defined BASE_NATIVE_OBJC_EXCEPTIONS && BASE_NATIVE_OBJC_EXCEPTIONS > 0 +1; +#else +fail; +#endif]])], emacs_cv_objc_exceptions=yes, emacs_cv_objc_exceptions=no ) ) + if test $emacs_cv_objc_exceptions = yes; then + dnl _NATIVE_OBJC_EXCEPTIONS is used by the GNUstep headers. + AC_DEFINE(_NATIVE_OBJC_EXCEPTIONS, 1, + [Define if GNUstep uses ObjC exceptions.]) + GNU_OBJC_CFLAGS="-fobjc-exceptions" + fi fi + + dnl This is only used while we test the NS headers, it gets reset below. + CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS" + AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes], [AC_MSG_ERROR([`--with-ns' was specified, but the include files are missing or cannot be compiled.])]) @@ -1503,26 +1567,23 @@ AC_SUBST(TEMACS_LDFLAGS2) ns_frag=/dev/null NS_OBJ= NS_OBJC_OBJ= -NS_SUPPORT= if test "${HAVE_NS}" = yes; then window_system=nextstep with_xft=no # set up packaging dirs - exec_prefix=${ns_appbindir} - libexecdir=${ns_appbindir}/libexec if test "${EN_NS_SELF_CONTAINED}" = yes; then prefix=${ns_appresdir} + exec_prefix=${ns_appbindir} + libexecdir=${ns_appbindir}/libexec fi ns_frag=$srcdir/src/ns.mk NS_OBJ="fontset.o fringe.o image.o" NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o" - NS_SUPPORT="\${lispsource}/emacs-lisp/easymenu.elc \${lispsource}/term/ns-win.elc" fi CFLAGS="$tmp_CFLAGS" CPPFLAGS="$tmp_CPPFLAGS" AC_SUBST(NS_OBJ) AC_SUBST(NS_OBJC_OBJ) -AC_SUBST(NS_SUPPORT) AC_SUBST(LIB_STANDARD) AC_SUBST_FILE(ns_frag) @@ -1534,7 +1595,7 @@ case "${window_system}" in athena | lucid ) USE_X_TOOLKIT=LUCID ;; motif ) USE_X_TOOLKIT=MOTIF ;; gtk ) with_gtk=yes -dnl Dont set this for GTK. A lot of tests below assumes Xt when +dnl Don't set this for GTK. A lot of tests below assumes Xt when dnl USE_X_TOOLKIT is set. USE_X_TOOLKIT=none ;; gtk3 ) with_gtk3=yes @@ -1655,6 +1716,22 @@ dnl AC_CHECK_LIB(resolv, gethostbyname) dnl FIXME replace main with a function we actually want from this library. AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd") +dnl Check if pthreads is available. +LIB_PTHREAD= +AC_CHECK_HEADERS(pthread.h) +if test "$ac_cv_header_pthread_h"; then + AC_CHECK_LIB(pthread, pthread_self, HAVE_PTHREAD=yes) +fi +if test "$HAVE_PTHREAD" = yes; then + case "${canonical}" in + *-hpux*) ;; + *) LIB_PTHREAD="-lpthread" + LIBS="$LIB_PTHREAD $LIBS" ;; + esac + AC_DEFINE(HAVE_PTHREAD, 1, [Define to 1 if you have pthread (-lpthread).]) +fi +AC_SUBST([LIB_PTHREAD]) + AC_CHECK_LIB(pthreads, cma_open) ## Note: when using cpp in s/aix4.2.h, this definition depended on @@ -1712,9 +1789,9 @@ if test "${HAVE_X11}" = "yes"; then AC_MSG_CHECKING(whether X on GNU/Linux needs -b to link) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[XOpenDisplay ("foo");]])], - [xlinux_first_failure=no], - [xlinux_first_failure=yes]) - if test "${xlinux_first_failure}" = "yes"; then + [xgnu_linux_first_failure=no], + [xgnu_linux_first_failure=yes]) + if test "${xgnu_linux_first_failure}" = "yes"; then OLD_LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE" OLD_C_SWITCH_X_SITE="$C_SWITCH_X_SITE" OLD_CPPFLAGS="$CPPFLAGS" @@ -1725,9 +1802,9 @@ if test "${HAVE_X11}" = "yes"; then LIBS="$LIBS -b i486-linuxaout" AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[XOpenDisplay ("foo");]])], - [xlinux_second_failure=no], - [xlinux_second_failure=yes]) - if test "${xlinux_second_failure}" = "yes"; then + [xgnu_linux_second_failure=no], + [xgnu_linux_second_failure=yes]) + if test "${xgnu_linux_second_failure}" = "yes"; then # If we get the same failure with -b, there is no use adding -b. # So take it out. This plays safe. LD_SWITCH_X_SITE="$OLD_LD_SWITCH_X_SITE" @@ -1788,7 +1865,7 @@ fi ### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified. HAVE_RSVG=no -if test "${HAVE_X11}" = "yes" || test "${NS_IMPL_GNUSTEP}" = "yes"; then +if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes"; then if test "${with_rsvg}" != "no"; then RSVG_REQUIRED=2.11.0 RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED" @@ -1827,6 +1904,7 @@ fi HAVE_GTK=no +GTK_OBJ= if test "${with_gtk3}" = "yes"; then GLIB_REQUIRED=2.28 GTK_REQUIRED=3.0 @@ -1838,13 +1916,14 @@ if test "${with_gtk3}" = "yes"; then AC_MSG_ERROR($GTK_PKG_ERRORS) fi AC_DEFINE(HAVE_GTK3, 1, [Define to 1 if using GTK 3 or later.]) + GTK_OBJ=emacsgtkfixed.o fi if test "$pkg_check_gtk" != "yes"; then HAVE_GTK=no if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then - GLIB_REQUIRED=2.6 - GTK_REQUIRED=2.6 + GLIB_REQUIRED=2.10 + GTK_REQUIRED=2.10 GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED" dnl Checks for libraries. @@ -1855,7 +1934,6 @@ if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then fi fi -GTK_OBJ= if test x"$pkg_check_gtk" = xyes; then AC_SUBST(GTK_CFLAGS) @@ -1873,7 +1951,7 @@ if test x"$pkg_check_gtk" = xyes; then else HAVE_GTK=yes AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.]) - GTK_OBJ=gtkutil.o + GTK_OBJ="gtkutil.o $GTK_OBJ" USE_X_TOOLKIT=none if $PKG_CONFIG --atleast-version=2.10 gtk+-2.0; then : @@ -1910,28 +1988,13 @@ if test "${HAVE_GTK}" = "yes"; then AC_CHECK_FUNCS(gtk_file_selection_new) fi - dnl Check if pthreads are available. Emacs only needs this when using - dnl gtk_file_chooser under Gnome. - HAVE_GTK_AND_PTHREAD=no - AC_CHECK_HEADERS(pthread.h) - if test "$ac_cv_header_pthread_h"; then - AC_CHECK_LIB(pthread, pthread_self, HAVE_GTK_AND_PTHREAD=yes) - fi - if test "$HAVE_GTK_AND_PTHREAD" = yes; then - case "${canonical}" in - *-hpux*) ;; - *) GTK_LIBS="$GTK_LIBS -lpthread" ;; - esac - AC_DEFINE(HAVE_GTK_AND_PTHREAD, 1, - [Define to 1 if you have GTK and pthread (-lpthread).]) - fi dnl Check for functions introduced in 2.14 and later. AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \ gtk_dialog_get_action_area gtk_widget_get_sensitive \ gtk_widget_get_mapped gtk_adjustment_get_page_size \ - gtk_orientable_set_orientation) - + gtk_orientable_set_orientation \ + gtk_window_set_has_resize_grip) fi dnl D-Bus has been tested under GNU/Linux only. Must be adapted for @@ -1950,6 +2013,17 @@ if test "${with_dbus}" = "yes"; then fi AC_SUBST(DBUS_OBJ) +dnl GSettings has been tested under GNU/Linux only. +HAVE_GSETTINGS=no +if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then + PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.26, HAVE_GSETTINGS=yes, HAVE_GSETTINGS=no) + if test "$HAVE_GSETTINGS" = "yes"; then + AC_DEFINE(HAVE_GSETTINGS, 1, [Define to 1 if using GSettings.]) + SETTINGS_CFLAGS="$GSETTINGS_CFLAGS" + SETTINGS_LIBS="$GSETTINGS_LIBS" + fi +fi + dnl GConf has been tested under GNU/Linux only. dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6. HAVE_GCONF=no @@ -1958,10 +2032,24 @@ if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then if test "$HAVE_GCONF" = yes; then AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.]) dnl Newer GConf doesn't link with g_objects, so this is not defined. - AC_CHECK_FUNCS([g_type_init]) + SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GCONF_CFLAGS" + SETTINGS_LIBS="$SETTINGS_LIBS $GCONF_LIBS" fi fi +if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then + SAVE_CFLAGS="$CFLAGS" + SAVE_LDFLAGS="$LDFLAGS" + CFLAGS="$SETTINGS_CFLAGS $CFLAGS" + LDFLAGS="$SETTINGS_LIBS $LDFLAGS" + AC_CHECK_FUNCS([g_type_init]) + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" +fi +AC_SUBST(SETTINGS_CFLAGS) +AC_SUBST(SETTINGS_LIBS) + + dnl SELinux is available for GNU/Linux only. HAVE_LIBSELINUX=no LIBSELINUX_LIBS= @@ -1977,7 +2065,7 @@ AC_SUBST(LIBSELINUX_LIBS) HAVE_GNUTLS=no HAVE_GNUTLS_CALLBACK_CERTIFICATE_VERIFY=no if test "${with_gnutls}" = "yes" ; then - PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.2.4], HAVE_GNUTLS=yes, HAVE_GNUTLS=no) + PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no) if test "${HAVE_GNUTLS}" = "yes"; then AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.]) fi @@ -2036,8 +2124,11 @@ if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then elif test x"${USE_X_TOOLKIT}" = xLUCID; then AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files]) else - AC_MSG_RESULT([no; do not use toolkit by default]) - USE_X_TOOLKIT=none + AC_MSG_ERROR([No X toolkit could be found. +If you are sure you want Emacs compiled without an X toolkit, pass + --with-x-toolkit=no +to configure. Otherwise, install the development libraries for the toolkit +that you want to use (e.g. Gtk+) and re-run configure.]) fi fi fi @@ -2348,7 +2439,7 @@ no_return_alloc_pixels fi if test "${HAVE_XPM}" = "yes"; then - AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm libary (-lXpm).]) + AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).]) LIBXPM=-lXpm fi fi @@ -2473,7 +2564,6 @@ fi ### Use -lgpm if available, unless `--with-gpm=no'. HAVE_GPM=no LIBGPM= -MOUSE_SUPPORT= if test "${with_gpm}" != "no"; then AC_CHECK_HEADER(gpm.h, [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)]) @@ -2481,8 +2571,6 @@ if test "${with_gpm}" != "no"; then if test "${HAVE_GPM}" = "yes"; then AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).]) LIBGPM=-lgpm - ## May be reset below. - MOUSE_SUPPORT="\$(GPM_MOUSE_SUPPORT)" fi fi AC_SUBST(LIBGPM) @@ -2496,14 +2584,16 @@ if test "${HAVE_NS}" = "yes"; then AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.]) if test "${NS_IMPL_COCOA}" = "yes"; then AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under MacOS X.]) - GNU_OBJC_CFLAGS= fi if test "${NS_IMPL_GNUSTEP}" = "yes"; then AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.]) # See also .m.o rule in Makefile.in */ # FIXME: are all these flags really needed? Document here why. */ - C_SWITCH_X_SYSTEM="-D_REENTRANT -fPIC -fno-strict-aliasing" - GNU_OBJC_CFLAGS="-fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE" + dnl FIXME this should be renamed to GNUSTEP_CFLAGS, and only + dnl used in src/Makefile.in. + C_SWITCH_X_SYSTEM="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}" + ## Extra CFLAGS applied to src/*.m files. + GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE" fi if test "${NS_HAVE_NSINTEGER}" = "yes"; then AC_DEFINE(NS_HAVE_NSINTEGER, 1, [Define to 1 if `NSInteger' is defined.]) @@ -2533,6 +2623,7 @@ fi AC_SUBST(LIBXSM) ### Use libxml (-lxml2) if available +HAVE_LIBXML2=no if test "${with_xml2}" != "no"; then ### I'm not sure what the version number should be, so I just guessed. PKG_CHECK_MODULES(LIBXML2, libxml-2.0 > 2.6.17, HAVE_LIBXML2=yes, HAVE_LIBXML2=no) @@ -2560,15 +2651,6 @@ if test $emacs_cv_netdb_declares_h_errno = yes; then AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.]) fi -AC_FUNC_ALLOCA - -dnl src/alloca.c has been removed. Could also check if $ALLOCA is set? -dnl FIXME is there an autoconf test that does the right thing, without -dnl needing to call A_M_E afterwards? -if test x"$ac_cv_func_alloca_works" != xyes; then - AC_MSG_ERROR( [a system implementation of alloca is required] ) -fi - # fmod, logb, and frexp are found in -lm on most systems. # On HPUX 9.01, -lm does not contain logb, so check for sqrt. AC_CHECK_LIB(m, sqrt) @@ -2649,16 +2731,16 @@ esac AC_SUBST(BLESSMAIL_TARGET) -AC_CHECK_FUNCS(gethostname getdomainname dup2 \ +AC_CHECK_FUNCS(gethostname getdomainname \ rename closedir mkdir rmdir sysinfo getrusage get_current_dir_name \ random lrand48 logb frexp fmod rint cbrt ftime setsid \ strerror fpathconf select euidaccess getpagesize tzset setlocale \ utimes getrlimit setrlimit setpgid getcwd getwd shutdown getaddrinfo \ -__fpending mblen mbrlen mbsinit strsignal setitimer ualarm strchr strrchr \ +__fpending mblen mbrlen mbsinit strsignal setitimer ualarm \ sendto recvfrom getsockopt setsockopt getsockname getpeername \ -gai_strerror mkstemp getline getdelim mremap memmove fsync sync \ -memset memcmp difftime memcpy mempcpy mblen mbrlen posix_memalign \ -cfmakeraw cfsetspeed isnan copysign __executable_start) +gai_strerror mkstemp getline getdelim mremap fsync sync \ +difftime mempcpy mblen mbrlen posix_memalign \ +cfmakeraw cfsetspeed copysign __executable_start) dnl Cannot use AC_CHECK_FUNCS AC_CACHE_CHECK([for __builtin_unwind_init], @@ -2677,11 +2759,6 @@ AC_FUNC_FSEEKO AC_FUNC_GETPGRP -# Configure gnulib. -gl_ASSERT_NO_GNULIB_POSIXCHECK -gl_ASSERT_NO_GNULIB_TESTS -gl_INIT - # UNIX98 PTYs. AC_CHECK_FUNCS(grantpt) @@ -2694,11 +2771,15 @@ AC_CHECK_FUNCS(getpt) # than to expect to find it in ncurses. # Also we need tputs and friends to be able to build at all. have_tputs_et_al=true -AC_SEARCH_LIBS(tputs, [ncurses terminfo termcap], , have_tputs_et_al=false) +# Maybe curses should be tried earlier? +# See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9736#35 +AC_SEARCH_LIBS(tputs, [ncurses terminfo termcap curses], , have_tputs_et_al=false) if test "$have_tputs_et_al" != true; then - AC_MSG_ERROR([I couldn't find termcap functions (tputs and friends). -Maybe some development libraries/packages are missing? Try installing -libncurses-dev(el), libterminfo-dev(el) or similar.]) + AC_MSG_ERROR([The required function `tputs' was not found in any library. +These libraries were tried: libncurses, libterminfo, libtermcap, libcurses. +Please try installing whichever of these libraries is most appropriate +for your system, together with its header files. +For example, a libncurses-dev(el) or similar package.]) fi # Must define this when any termcap library is found. AC_DEFINE(HAVE_LIBNCURSES, 1, @@ -2930,10 +3011,6 @@ AC_SUBST(KRB5LIB) AC_SUBST(DESLIB) AC_SUBST(KRB4LIB) -# Solaris requires -lintl if you want strerror (which calls dgettext) -# to return localized messages. -AC_CHECK_LIB(intl, dgettext) - AC_MSG_CHECKING(whether localtime caches TZ) AC_CACHE_VAL(emacs_cv_localtime_cache, [if test x$ac_cv_func_tzset = xyes; then @@ -3027,6 +3104,8 @@ fi AC_FUNC_FORK +AC_CHECK_FUNCS(snprintf) + dnl Adapted from Haible's version. AC_CACHE_CHECK([for nl_langinfo and CODESET], emacs_cv_langinfo_codeset, [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], @@ -3061,8 +3140,6 @@ dnl and macros for terminal control.]) dnl AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.]) dnl fi -dnl Fixme: Use AC_FUNC_MEMCMP since memcmp is used. (Needs libobj replacement.) - # Set up the CFLAGS for real compilation, so we can substitute it. CFLAGS="$REAL_CFLAGS" CPPFLAGS="$REAL_CPPFLAGS" @@ -3285,6 +3362,10 @@ AC_SUBST(CYGWIN_OBJ) AC_SUBST(PRE_ALLOC_OBJ) AC_SUBST(POST_ALLOC_OBJ) +# Configure gnulib here, now that we know LIBS. +gl_ASSERT_NO_GNULIB_POSIXCHECK +gl_ASSERT_NO_GNULIB_TESTS +gl_INIT case "$opsys" in aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;; @@ -3301,7 +3382,7 @@ case "$opsys" in libs_nsgui= headerpad_extra=690 fi - LD_SWITCH_SYSTEM_TEMACS="-prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra" + LD_SWITCH_SYSTEM_TEMACS="-fno-pie -prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra" ## This is here because src/Makefile.in did some extra fiddling around ## with LD_SWITCH_SYSTEM. The cpp logic was: @@ -3418,23 +3499,11 @@ fi dnl if $GCC AC_SUBST(LIB_GCC) -TOOLTIP_SUPPORT= -WINDOW_SUPPORT= ## If we're using X11/GNUstep, define some consequences. if test "$HAVE_X_WINDOWS" = "yes" || test "$HAVE_NS" = "yes"; then AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.]) AC_DEFINE(HAVE_MOUSE, 1, [Define if you have mouse support.]) - MOUSE_SUPPORT="\$(REAL_MOUSE_SUPPORT)" - TOOLTIP_SUPPORT="\${lispsource}/mouse.elc" - - WINDOW_SUPPORT="\$(BASE_WINDOW_SUPPORT)" - test "$HAVE_X_WINDOWS" = "yes" && \ - WINDOW_SUPPORT="$WINDOW_SUPPORT \$(X_WINDOW_SUPPORT)" - fi -AC_SUBST(MOUSE_SUPPORT) -AC_SUBST(TOOLTIP_SUPPORT) -AC_SUBST(WINDOW_SUPPORT) AH_TOP([/* GNU Emacs site configuration template file. @@ -3466,21 +3535,17 @@ along with GNU Emacs. If not, see . */ ])dnl AH_BOTTOM([ +/* On AIX 3 this must be included before any other include file. */ +#include +#if ! HAVE_ALLOCA +# error "alloca not available on this machine" +#endif + /* Define AMPERSAND_FULL_NAME if you use the convention that & in the full name stands for the login id. */ /* Turned on June 1996 supposing nobody will mind it. */ #define AMPERSAND_FULL_NAME -/* If using GNU, then support inline function declarations. */ -/* Don't try to switch on inline handling as detected by AC_C_INLINE - generally, because even if non-gcc compilers accept `inline', they - may reject `extern inline'. */ -#if defined (__GNUC__) -#define INLINE __inline__ -#else -#define INLINE -#endif - /* `subprocesses' should be defined if you want to have code for asynchronous subprocesses (as used in M-x compile and M-x shell). @@ -3518,7 +3583,8 @@ AH_BOTTOM([ #endif /* These default definitions are good for almost all machines. - The exceptions override them in m/MACHINE.h. */ + Any exceptions should override them in m/MACHINE.h. + They must be usable in preprocessor conditionals. */ #ifndef BITS_PER_CHAR #define BITS_PER_CHAR 8 @@ -3528,9 +3594,6 @@ AH_BOTTOM([ #define BITS_PER_SHORT 16 #endif -/* Note that lisp.h uses this in a preprocessor conditional, so it - would not work to use sizeof. That being so, we do all of them - without sizeof, for uniformity's sake. */ #ifndef BITS_PER_INT #define BITS_PER_INT 32 #endif @@ -3543,6 +3606,10 @@ AH_BOTTOM([ #endif #endif +#if !defined BITS_PER_LONG_LONG && HAVE_LONG_LONG_INT +#define BITS_PER_LONG_LONG 64 +#endif + /* Define if the compiler supports function prototypes. It may do so but not define __STDC__ (e.g. DEC C by default) or may define it as zero. */ #undef PROTOTYPES @@ -3550,28 +3617,6 @@ AH_BOTTOM([ #include #include -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#else -# include -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -#endif - -#ifndef HAVE_STRCHR -#define strchr(a, b) index (a, b) -#endif - -#ifndef HAVE_STRRCHR -#define strrchr(a, b) rindex (a, b) -#endif - #if defined __GNUC__ && (__GNUC__ > 2 \ || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) #define NO_RETURN __attribute__ ((__noreturn__)) @@ -3617,9 +3662,6 @@ void *alloca (size_t); /* GC_SETJMP_WORKS is nearly always appropriate for GCC. */ # define GC_SETJMP_WORKS 1 # endif -# ifndef GC_LISP_OBJECT_ALIGNMENT -# define GC_LISP_OBJECT_ALIGNMENT (__alignof__ (Lisp_Object)) -# endif #endif #endif /* EMACS_CONFIG_H */ @@ -3680,6 +3722,7 @@ echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGI echo " Does Emacs use -lgpm? ${HAVE_GPM}" echo " Does Emacs use -ldbus? ${HAVE_DBUS}" echo " Does Emacs use -lgconf? ${HAVE_GCONF}" +echo " Does Emacs use GSettings? ${HAVE_GSETTINGS}" echo " Does Emacs use -lselinux? ${HAVE_LIBSELINUX}" echo " Does Emacs use -lgnutls? ${HAVE_GNUTLS}" echo " Does Emacs use -lxml2? ${HAVE_LIBXML2}" @@ -3692,6 +3735,13 @@ echo " Does Emacs use -lxft? ${HAVE_XFT}" echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}" echo +if test -n "${EMACSDATA}"; then + echo " Environment variable EMACSDATA set to: $EMACSDATA" +fi +if test -n "${EMACSDOC}"; then + echo " Environment variable EMACSDOC set to: $EMACSDOC" +fi + if test $USE_XASSERTS = yes; then echo " Compiling with asserts turned on." CPPFLAGS="$CPPFLAGS -DXASSERTS=1" @@ -3701,14 +3751,14 @@ echo if test "$HAVE_NS" = "yes"; then echo - echo "You must run \"make install\" in order to test the built application. + echo "You must run \"${MAKE-make} install\" in order to test the built application. The installed application will go to nextstep/Emacs.app and can be run or moved from there." if test "$EN_NS_SELF_CONTAINED" = "yes"; then echo "The application will be fully self-contained." else echo "The lisp resources for the application will be installed under ${prefix}. -You may need to run \"make install\" with sudo. The application will fail +You may need to run \"${MAKE-make} install\" with sudo. The application will fail to run if these resources are not installed." fi echo @@ -3721,10 +3771,34 @@ fi test "${exec_prefix}" != NONE && exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`] +dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES. +dnl You _can_ use that variable in AC_CONFIG_FILES, so long as any directory +dnl using automake (ie lib/) is explicitly listed and not "hidden" in a variable +dnl (else you get "no `Makefile.am' found for any configure output"). +dnl This will work, but you get a config.status that is not quite right +dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html). +dnl That doesn't have any obvious consequences for Emacs, but on the whole +dnl it seems better to just live with the duplication. +SUBDIR_MAKEFILES="lib/Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile" + AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \ - doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \ - doc/lispref/Makefile src/Makefile \ - lwlib/Makefile lisp/Makefile leim/Makefile test/automated/Makefile]) + doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \ + doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile \ + leim/Makefile]) + +dnl test/ is not present in release tarfiles. +opt_makefile=test/automated/Makefile + +if test -f $srcdir/${opt_makefile}.in; then + SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile" + dnl Again, it's best not to use a variable. Though you can add + dnl ", [], [opt_makefile='$opt_makefile']" and it should work. + AC_CONFIG_FILES([test/automated/Makefile]) +fi + +SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'` + +AC_SUBST(SUBDIR_MAKEFILES_IN) dnl Make the necessary directories, if they don't exist. AC_CONFIG_COMMANDS([mkdirs], [