X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/2bafb7c4a30408ad115a59a64aaee2398a2092a8..92dca4df0956bc153431f79dbfdd0235c1f9fded:/configure.ac diff --git a/configure.ac b/configure.ac index 74ea10dd5c..3267e73fbd 100644 --- a/configure.ac +++ b/configure.ac @@ -25,22 +25,6 @@ AC_PREREQ(2.65) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. AC_INIT(GNU Emacs, 24.4.50, bug-gnu-emacs@gnu.org) -dnl We get MINGW64 with MSYS2 -if test "x$MSYSTEM" = "xMINGW32" -o "x$MSYSTEM" = "xMINGW64" -then - . $srcdir/nt/mingw-cfg.site - - case $srcdir in - /* | ?:*) - # srcdir is an absolute path. In this case, force the format - # "/c/foo/bar", to simplify later conversions to native Windows - # format ("c:/foo/bar") - srcdir=`cd "${srcdir}" && pwd -W` - srcdir="/${srcdir:0:1}${srcdir:2}" - ;; - esac -fi - dnl Set emacs_config_options to the options of 'configure', quoted for the shell, dnl and then quoted again for a C string. Separate options with spaces. dnl Add some environment variables, if they were passed via the environment @@ -84,6 +68,7 @@ AC_CONFIG_HEADERS(src/config.h:src/config.in) AC_CONFIG_SRCDIR(src/lisp.h) AC_CONFIG_AUX_DIR(build-aux) dnl automake 1.13 and later understand this, making -I m4 unnecessary. +dnl With older versions this is a no-op. AC_CONFIG_MACRO_DIR(m4) xcsdkdir= @@ -91,7 +76,7 @@ AC_CHECK_PROGS(XCRUN, [xcrun]) if test -n "$XCRUN"; then if test -z "$MAKE"; then dnl Call the variable MAKE_PROG, not MAKE, to avoid confusion with - dnl SET_MAKE and with the usual MAKE variable that 'make' itself uses. + dnl the usual MAKE variable that 'make' itself uses. AC_CHECK_PROG([MAKE_PROG], [make], [yes]) if test -z "$MAKE_PROG"; then MAKE="$XCRUN MAKE" @@ -101,9 +86,75 @@ if test -n "$XCRUN"; then fi fi +dnl GNU Make is required, so don't test for its individual features. +am_cv_make_support_nested_variables=yes +AC_DEFUN([AC_PROG_MAKE_SET], + [SET_MAKE= + AC_SUBST([SET_MAKE])]) + +dnl Check for GNU Make and possibly set MAKE before running AM_INIT_AUTOMAKE. +[emacs_check_gnu_make () +{ + emacs_makeout=`($1 --version) 2>/dev/null` && + case $emacs_makeout in + 'GNU Make '3.8[1-9]* | 'GNU Make '3.9[0-9]* | \ + 'GNU Make '3.[1-9][0-9][0-9]* | 'GNU Make '[4-9]* | 'GNU Make '[1-9][0-9]* ) + ac_path_MAKE_found=:;; + esac +}] +AC_CACHE_CHECK([for GNU Make], [ac_cv_path_MAKE], + [ac_path_MAKE_found=false + if test -n "$MAKE"; then + emacs_check_gnu_make "$MAKE" + ac_cv_path_MAKE=$MAKE + else + emacs_tried_make=false + emacs_tried_gmake=false + emacs_tried_gnumake=false + AC_PATH_PROGS_FEATURE_CHECK([MAKE], [make gmake gnumake], + [[emacs_check_gnu_make "$ac_path_MAKE" + if $ac_path_MAKE_found; then + # Use the fully-qualified program name only if the basename + # would not resolve to it. + if eval \$emacs_tried_$ac_prog; then + ac_cv_path_MAKE=$ac_path_MAKE + else + ac_cv_path_MAKE=$ac_prog + fi + fi + eval emacs_tried_$ac_prog=:]]) + fi]) +$ac_path_MAKE_found || { +AC_MSG_ERROR([[Building Emacs requires GNU Make, at least version 3.81. +If you have it installed under another name, configure with 'MAKE=...'. +For example, run '$0 MAKE=gnu-make'.]]) +} +MAKE=$ac_cv_path_MAKE + dnl Fairly arbitrary, older versions might work too. AM_INIT_AUTOMAKE(1.11) +dnl Canonicalize the configuration name. +AC_CANONICAL_HOST +canonical=$host +configuration=${host_alias-${build_alias-$host}} + +dnl We get MINGW64 with MSYS2. +case $canonical in + *-mingw*) + . $srcdir/nt/mingw-cfg.site + + case $srcdir in + /* | ?:*) + # srcdir is an absolute path. In this case, force the format + # "/c/foo/bar", to simplify later conversions to native Windows + # format ("c:/foo/bar"). + srcdir=`cd "${srcdir}" && pwd -W` + srcdir="/${srcdir:0:1}${srcdir:2}" + ;; + esac;; +esac + dnl Support for --program-prefix, --program-suffix and dnl --program-transform-name options AC_ARG_PROGRAM @@ -245,6 +296,7 @@ fi dnl _ON results in a '--without' option in the --help output, so dnl the help text should refer to "don't compile", etc. +with_xpm_set=${with_xpm+set} OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support]) OPTION_DEFAULT_ON([jpeg],[don't compile with JPEG image support]) OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support]) @@ -295,6 +347,9 @@ otherwise for the first of `gfile' or `inotify' that is usable.]) dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals]) +## This might be a 'configure' arg. +AC_SUBST([ACLOCAL_PATH]) + ## Makefile.in needs the cache file name. AC_SUBST(cache_file) @@ -336,11 +391,7 @@ fi) AC_ARG_ENABLE(checking, [AS_HELP_STRING([--enable-checking@<:@=LIST@:>@], - [enable expensive run-time checks. With LIST, - enable only specific categories of checks. - Categories are: all,yes,no. - Flags are: stringbytes, stringoverrun, stringfreelist, - xmallocoverrun, conslist, glyphs])], + [enable expensive run-time checks])] [ac_checking_flags="${enableval}"],[]) IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS," for check in $ac_checking_flags @@ -348,27 +399,7 @@ do case $check in # these set all the flags to specific states yes) ac_enable_checking=1 ;; - no) ac_enable_checking= ; - ac_gc_check_stringbytes= ; - ac_gc_check_string_overrun= ; - ac_gc_check_string_free_list= ; - ac_xmalloc_overrun= ; - ac_gc_check_cons_list= ; - ac_glyphs_debug= ;; - all) ac_enable_checking=1 ; - ac_gc_check_stringbytes=1 ; - ac_gc_check_string_overrun=1 ; - ac_gc_check_string_free_list=1 ; - ac_xmalloc_overrun=1 ; - ac_gc_check_cons_list=1 ; - ac_glyphs_debug=1 ;; - # these enable particular checks - stringbytes) ac_gc_check_stringbytes=1 ;; - stringoverrun) ac_gc_check_string_overrun=1 ;; - stringfreelist) ac_gc_check_string_free_list=1 ;; - xmallocoverrun) ac_xmalloc_overrun=1 ;; - conslist) ac_gc_check_cons_list=1 ;; - glyphs) ac_glyphs_debug=1 ;; + all) ac_enable_checking=1 ;; *) AC_MSG_ERROR(unknown check category $check) ;; esac done @@ -378,32 +409,6 @@ if test x$ac_enable_checking != x ; then AC_DEFINE(ENABLE_CHECKING, 1, [Define to 1 if expensive run-time data type and consistency checks are enabled.]) fi -if test x$ac_gc_check_stringbytes != x ; then - AC_DEFINE(GC_CHECK_STRING_BYTES, 1, -[Define this temporarily to hunt a bug. If defined, the size of - strings is redundantly recorded in sdata structures so that it can - be compared to the sizes recorded in Lisp strings.]) -fi -if test x$ac_gc_check_string_overrun != x ; then - AC_DEFINE(GC_CHECK_STRING_OVERRUN, 1, -[Define this to check for short string overrun.]) -fi -if test x$ac_gc_check_string_free_list != x ; then - AC_DEFINE(GC_CHECK_STRING_FREE_LIST, 1, -[Define this to check the string free list.]) -fi -if test x$ac_xmalloc_overrun != x ; then - AC_DEFINE(XMALLOC_OVERRUN_CHECK, 1, -[Define this to check for malloc buffer overrun.]) -fi -if test x$ac_gc_check_cons_list != x ; then - AC_DEFINE(GC_CHECK_CONS_LIST, 1, -[Define this to check for errors in cons list.]) -fi -if test x$ac_glyphs_debug != x ; then - AC_DEFINE(GLYPH_DEBUG, 1, -[Define this to enable glyphs debugging code.]) -fi AC_ARG_ENABLE(check-lisp-object-type, [AS_HELP_STRING([--enable-check-lisp-object-type], @@ -443,12 +448,6 @@ AC_ARG_ENABLE(gtk-deprecation-warnings, [Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])], [ac_enable_gtk_deprecation_warnings="${enableval}"],[]) -### Canonicalize the configuration name. - -AC_CANONICAL_HOST -canonical=$host -configuration=${host_alias-${build_alias-$host}} - dnl This used to use changequote, but, apart from `changequote is evil' dnl per the autoconf manual, we can speed up autoconf somewhat by quoting dnl the great gob of text. Thus it's not processed for possible expansion. @@ -543,7 +542,7 @@ case "${canonical}" in rs6000-ibm-aix[56]* ) opsys=aix4-2 ;; - powerpc-ibm-aix[56]* ) + powerpc-ibm-aix[5-9]* | powerpc-ibm-aix[1-9][0-9]* ) opsys=aix4-2 ;; @@ -572,10 +571,13 @@ case "${canonical}" in opsys=sol2-10 emacs_check_sunpro_c=yes ;; + *-sunos5.[1-5]* | *-solaris2.[1-5]* ) unported=yes ;; + ## Note that Emacs 23.1's NEWS said the following would be dropped. *-sunos5.6* | *-solaris2.6* ) opsys=sol2-6 RANLIB="ar -ts" ;; + ## 5.7 EOL Aug 2008, 5.8 EOL Mar 2012. *-sunos5.[7-9]* | *-solaris2.[7-9]* ) opsys=sol2-6 emacs_check_sunpro_c=yes @@ -652,20 +654,11 @@ Check `etc/MACHINES' for recognized configuration names.]) fi -AC_MSG_CHECKING([whether we are using GNU Make]) -testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'` -if test "x$testval" != x; then - AC_MSG_RESULT([yes]) -else - AC_MSG_RESULT([no]) - AC_MSG_ERROR([Building Emacs requires GNU make. -If you have it installed under another name, configure with 'MAKE=...'. -For example, run './configure MAKE=gmake'.]) -fi - - #### Choose a compiler. +dnl Don't bother to test for C89. +AC_DEFUN([_AC_PROG_CC_C89], [$2]) + dnl Sets GCC=yes if using gcc. AC_PROG_CC([gcc cc cl clang "$XCRUN gcc" "$XCRUN clang"]) if test -n "$XCRUN"; then @@ -673,6 +666,9 @@ if test -n "$XCRUN"; then test -n "$AR" && export AR fi +dnl Emacs needs C99 or later. +gl_PROG_CC_C99 + AM_PROG_CC_C_O if test x$GCC = xyes; then @@ -691,8 +687,6 @@ AC_DEFUN([gl_CRYPTO_CHECK]) # Avoid gnulib's tests for HAVE_WORKING_O_NOATIME and HAVE_WORKING_O_NOFOLLOW, # as we don't use them. AC_DEFUN([gl_FCNTL_O_FLAGS]) -# Avoid gnulib's threadlib module, as we do threads our own way. -AC_DEFUN([gl_THREADLIB]) # Initialize gnulib right after choosing the compiler. dnl Amongst other things, this sets AR and ARFLAGS. @@ -758,32 +752,6 @@ AC_ARG_ENABLE([gcc-warnings], [gl_gcc_warnings=no] ) -AC_ARG_ENABLE(link-time-optimization, -[AS_HELP_STRING([--enable-link-time-optimization], - [build emacs with link-time optimization. - This is supported only for GCC since 4.5.0.])], -if test "${enableval}" != "no"; then - AC_MSG_CHECKING([whether link-time optimization is supported]) - ac_lto_supported=no - if test x$GCC = xyes; then - CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null` - if test x$CPUS != x; then - LTO="-flto=$CPUS" - else - LTO="-flto" - fi - old_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $LTO" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], - [ac_lto_supported=yes], [ac_lto_supported=no]) - CFLAGS="$old_CFLAGS" - fi - AC_MSG_RESULT([$ac_lto_supported]) - if test "$ac_lto_supported" = "yes"; then - CFLAGS="$CFLAGS $LTO" - fi -fi) - # clang is unduly picky about some things. AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang], [AC_COMPILE_IFELSE( @@ -864,6 +832,7 @@ else for w in $ws; do gl_WARN_ADD([$w]) done + gl_WARN_ADD([-Wredundant-decls]) # Prefer this, as we don't use Bison. gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one gl_WARN_ADD([-Wno-sign-compare]) # Too many warnings for now gl_WARN_ADD([-Wno-type-limits]) # Too many warnings for now @@ -909,7 +878,61 @@ edit_cflags=" s/^ // " - +AC_ARG_ENABLE(link-time-optimization, +[AS_HELP_STRING([--enable-link-time-optimization], + [build emacs with link-time optimization. + This requires GCC 4.5.0 or later, or clang. + (Note that clang support is experimental - see INSTALL.) + It also makes Emacs harder to debug, and when we tried it + with GCC 4.9.0 x86-64 it made Emacs slower, so it's not + recommended for typical use.])], +if test "${enableval}" != "no"; then + ac_lto_supported=no + if test $emacs_cv_clang = yes; then + AC_MSG_CHECKING([whether link-time optimization is supported by clang]) + GOLD_PLUGIN=`$CC -print-file-name=LLVMgold.so 2>/dev/null` + if test -x "$GOLD_PLUGIN"; then + LTO="-flto" + fi + elif test x$GCC = xyes; then + AC_MSG_CHECKING([whether link-time optimization is supported by gcc]) + CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null` + if test x$CPUS != x; then + LTO="-flto=$CPUS" + else + LTO="-flto" + fi + else + AC_MSG_ERROR([Link-time optimization is not supported with your compiler.]) + fi + if test -z "$LTO"; then + ac_lto_supported=no + else + old_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $LTO" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], + [ac_lto_supported=yes], [ac_lto_supported=no]) + CFLAGS="$old_CFLAGS" + fi + AC_MSG_RESULT([$ac_lto_supported]) + if test "$ac_lto_supported" = "yes"; then + CFLAGS="$CFLAGS $LTO" + if test x$emacs_cv_clang = xyes; then + AC_MSG_WARN([Please read INSTALL before using link-time optimization with clang]) + # WARNING: 'ar --plugin ...' doesn't work without + # command, so plugin name is appended to ARFLAGS. + ARFLAGS="cru --plugin $GOLD_PLUGIN" + RANLIB="$RANLIB --plugin $GOLD_PLUGIN" + else + dnl The following is needed for GCC 4.9.0. The GCC 4.9.0 release notes + dnl suggest that instead of -ffat-lto-objects we should use gcc-ar and + dnl gcc-ranlib in place of ar and ranlib, but gcc-ar makes /usr/bin/ar + dnl dump core on Fedora 20, so play it safe for now. + gl_COMPILER_OPTION_IF([-ffat-lto-objects], + [CFLAGS="$CFLAGS -ffat-lto-objects"]) + fi + fi +fi) dnl Some other nice autoconf tests. dnl These are commented out, since gl_EARLY and/or Autoconf already does them. @@ -971,6 +994,15 @@ if test "$opsys" = "mingw32"; then LN_S="/bin/ln" fi +dnl On some Debian versions, "install-info" prints irritating messages +dnl "This is not dpkg install-info anymore, but GNU install-info" +dnl if called via an absolute file name. +dnl Use the entirely-identical-but-quieter ginstall-info instead if present. +dnl Sadly some people may have an old ginstall-info installed on +dnl non-Debian systems, so we can't use this. +dnl AC_PATH_PROGS(INSTALL_INFO, [ginstall-info install-info], :, +dnl $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin) + AC_PATH_PROG(INSTALL_INFO, install-info, :, $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin) dnl Don't use GZIP, which is used by gzip for additional parameters. @@ -1045,12 +1077,6 @@ with the `--without-makeinfo' option to build without the manuals.] ) fi AC_SUBST(HAVE_MAKEINFO) -dnl Just so that there is only a single place we need to edit. -INFO_EXT=.info -INFO_OPTS=--no-split -AC_SUBST(INFO_EXT) -AC_SUBST(INFO_OPTS) - if test $opsys = mingw32; then DOCMISC_W32=efaq-w32 else @@ -1116,19 +1142,8 @@ AC_CACHE_CHECK([whether addresses are sanitized], dnl The function dump-emacs will not be defined and temacs will do dnl (load "loadup") automatically unless told otherwise. -test "x$CANNOT_DUMP" = "x" && CANNOT_DUMP=no -case "$opsys" in - your-opsys-here) CANNOT_DUMP=yes ;; -esac - -if test "$CANNOT_DUMP" = "yes"; then - AC_DEFINE(CANNOT_DUMP, 1, [Define if Emacs cannot be dumped on your system.]) -elif test "$emacs_cv_sanitize_address" = yes; then - AC_MSG_WARN([[Addresses are sanitized; suggest CANNOT_DUMP=yes]]) -fi - -AC_SUBST(CANNOT_DUMP) - +AC_DEFINE(CANNOT_DUMP, 1, [Define if Emacs cannot be dumped on your system.]) +AC_SUBST(CANNOT_DUMP, yes) UNEXEC_OBJ=unexelf.o case "$opsys" in @@ -1281,7 +1296,7 @@ else CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS" fi -# Suppress obsolescent Autoconf test for size_t; Emacs assumes C89 or better. +# Suppress obsolescent Autoconf test for size_t; Emacs assumes C99 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]) @@ -1337,10 +1352,6 @@ AC_SUBST(LIB_MATH) AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE", [The type of system you are compiling for; sets `system-type'.]) -m4_pattern_forbid([^PKG_]) - -AC_ARG_VAR(PKG_CONFIG_PATH, [Colon-separated list of directories -searched by pkg-config]) pre_PKG_CONFIG_CFLAGS=$CFLAGS pre_PKG_CONFIG_LIBS=$LIBS @@ -1360,7 +1371,18 @@ AC_DEFUN([EMACS_CHECK_MODULES], m4_default([$3], [HAVE_$1=yes])], [m4_default([$4], [HAVE_$1=no])])]) +PKG_CHECK_MODULES([GUILE], [guile-2.2], [], + [PKG_CHECK_MODULES([GUILE], [guile-2.0])]) +AC_SUBST(GUILE_CFLAGS) +AC_SUBST(GUILE_LIBS) + +AC_PATH_PROG(GUILE_SNARF, guile-snarf, no) +if test "$GUILE_SNARF" = "no"; then + AC_MSG_ERROR([guile-snarf not found]) +fi + HAVE_SOUND=no + if test "${with_sound}" != "no"; then # Sound support for GNU/Linux, the free BSDs, and MinGW. AC_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h soundcard.h], @@ -1497,7 +1519,6 @@ dnl Check for endianness. dnl AC_C_BIGENDIAN is done by gnulib. dnl check for Make feature -dnl AC_PROG_MAKE_SET is done by Automake. DEPFLAGS= MKDEPDIR=":" @@ -1519,11 +1540,14 @@ if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then deps_frag=autodeps.mk fi fi +lwlib_deps_frag=$srcdir/lwlib/$deps_frag +oldxmenu_deps_frag=$srcdir/oldXMenu/$deps_frag deps_frag=$srcdir/src/$deps_frag AC_SUBST(MKDEPDIR) AC_SUBST(DEPFLAGS) AC_SUBST_FILE(deps_frag) - +AC_SUBST_FILE(lwlib_deps_frag) +AC_SUBST_FILE(oldxmenu_deps_frag) lisp_frag=$srcdir/src/lisp.mk AC_SUBST_FILE(lisp_frag) @@ -1940,7 +1964,7 @@ doug_lea_malloc=$emacs_cv_var_doug_lea_malloc system_malloc=$emacs_cv_sanitize_address case "$opsys" in ## darwin ld insists on the use of malloc routines in the System framework. - darwin|sol2-10) system_malloc=yes ;; + darwin|mingw32|sol2-10) system_malloc=yes ;; esac GMALLOC_OBJ= @@ -1987,7 +2011,7 @@ if test "$doug_lea_malloc" = "yes" ; then ## #ifdef DOUG_LEA_MALLOC; #undef REL_ALLOC; #endif ## Does the AC_FUNC_MMAP test below make this check unnecessary? case "$opsys" in - gnu*) REL_ALLOC=no ;; + mingw32|gnu*) REL_ALLOC=no ;; esac fi @@ -1997,7 +2021,7 @@ fi use_mmap_for_buffers=no case "$opsys" in - cygwin|freebsd|irix6-5) use_mmap_for_buffers=yes ;; + cygwin|mingw32|freebsd|irix6-5) use_mmap_for_buffers=yes ;; esac AC_FUNC_MMAP @@ -2013,6 +2037,7 @@ AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd") dnl Check for the POSIX thread library. LIB_PTHREAD= +if test "$opsys" != "mingw32"; then AC_CHECK_HEADERS_ONCE(pthread.h) if test "$ac_cv_header_pthread_h"; then dnl gmalloc.c uses pthread_atfork, which is not available on older-style @@ -2026,13 +2051,25 @@ if test "$ac_cv_header_pthread_h"; then OLD_LIBS=$LIBS AC_SEARCH_LIBS([$emacs_pthread_function], [pthread], [AC_DEFINE([HAVE_PTHREAD], [1], - [Define to 1 if you have pthread (-lpthread).])]) - if test "X$LIBS" != "X$OLD_LIBS"; then + [Define to 1 if you have pthread (-lpthread).]) + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in . + case $opsys in + sol*) + AC_DEFINE([_REENTRANT], 1, + [Define to 1 if your system requires this in multithreaded code.]);; + aix4-2) + AC_DEFINE([_THREAD_SAFE], 1, + [Define to 1 if your system requires this in multithreaded code.]);; + esac]) + if test "X$LIBS" != "X$OLD_LIBS"; then eval LIB_PTHREAD=\$ac_cv_search_$emacs_pthread_function fi LIBS=$OLD_LIBS fi AC_SUBST([LIB_PTHREAD]) +fi dnl Check for need for bigtoc support on IBM AIX @@ -2172,11 +2209,9 @@ fi HAVE_IMAGEMAGICK=no if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}" = "yes"; then if test "${with_imagemagick}" != "no"; then - ## 6.2.8 is the earliest version known to work, but earlier versions - ## might work - let us know if you find one. - ## 6.0.7 does not work. See bug#7955. + ## 6.3.5 is the earliest version known to work; see Bug#17339. ## 6.8.2 makes Emacs crash; see Bug#13867. - IMAGEMAGICK_MODULE="Wand >= 6.2.8 Wand != 6.8.2" + IMAGEMAGICK_MODULE="Wand >= 6.3.5 Wand != 6.8.2" EMACS_CHECK_MODULES([IMAGEMAGICK], [$IMAGEMAGICK_MODULE]) AC_SUBST(IMAGEMAGICK_CFLAGS) AC_SUBST(IMAGEMAGICK_LIBS) @@ -2783,14 +2818,17 @@ fi ### Start of font-backend (under X11) section. if test "${HAVE_X11}" = "yes"; then - EMACS_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.2.0], - [HAVE_FC=yes], [HAVE_FC=no]) - - ## Use -lXft if available, unless `--with-xft=no'. - HAVE_XFT=maybe - if test "${HAVE_FC}" = "no" || test "x${with_x}" = "xno"; then + ## Use -lXft if available, unless `--with-xft=no'. + HAVE_XFT=maybe + if test "x${with_x}" = "xno"; then with_xft="no"; fi + + if test "$with_xft" != no; then + EMACS_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.2.0]) + with_xft=$HAVE_FONTCONFIG + fi + if test "x${with_xft}" != "xno"; then EMACS_CHECK_MODULES([XFT], [xft >= 0.13.0], [], [HAVE_XFT=no]) @@ -2924,6 +2962,9 @@ no_return_alloc_pixels fi if test "${HAVE_X11}" = "yes"; then + dnl Avoid Xpm on AIX unless requested, as it crashes; see Bug#17598. + test "$opsys$with_xpm_set" = aix4-2 && with_xpm=no + if test "${with_xpm}" != "no"; then AC_CHECK_HEADER(X11/xpm.h, [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)]) @@ -2947,6 +2988,9 @@ no_return_alloc_pixels if test "${HAVE_XPM}" = "yes"; then AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).]) LIBXPM=-lXpm + elif test "$opsys,$LUCID_LIBW" = aix4-2,-lXaw; then + dnl AIX -lXaw needs -lXpm linked too; see Bug#17598 Message#152. + LIBXPM=-lXpm fi fi @@ -3013,60 +3057,6 @@ elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then fi AC_SUBST(LIBJPEG) -### Use -lpng if available, unless `--with-png=no'. -### mingw32 doesn't use -lpng, since it loads the library dynamically. -HAVE_PNG=no -LIBPNG= -if test "${opsys}" = "mingw32"; then - if test "${with_png}" != "no"; then - AC_CHECK_HEADER(png.h, HAVE_PNG=yes, HAVE_PNG=no) - fi - if test "${HAVE_PNG}" = "yes"; then - AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).]) - - AC_CHECK_DECL(png_longjmp, - [], - [AC_DEFINE(PNG_DEPSTRUCT, [], - [Define to empty to suppress deprecation warnings when building - with --enable-gcc-warnings and with libpng versions before 1.5, - which lack png_longjmp.])], - [[#ifdef HAVE_LIBPNG_PNG_H - # include - #else - # include - #endif - ]]) - fi -elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then - if test "${with_png}" != "no"; then - # Debian unstable as of July 2003 has multiple libpngs, and puts png.h - # in /usr/include/libpng. - AC_CHECK_HEADERS(png.h libpng/png.h, break) - if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then - AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm) - fi - fi - - if test "${HAVE_PNG}" = "yes"; then - AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).]) - LIBPNG="-lpng -lz -lm" - - AC_CHECK_DECL(png_longjmp, - [], - [AC_DEFINE(PNG_DEPSTRUCT, [], - [Define to empty to suppress deprecation warnings when building - with --enable-gcc-warnings and with libpng versions before 1.5, - which lack png_longjmp.])], - [[#ifdef HAVE_LIBPNG_PNG_H - # include - #else - # include - #endif - ]]) - fi -fi -AC_SUBST(LIBPNG) - HAVE_ZLIB=no LIBZ= if test "${with_zlib}" != "no"; then @@ -3086,6 +3076,69 @@ if test "${HAVE_ZLIB}" = "yes"; then fi AC_SUBST(LIBZ) +### Use -lpng if available, unless `--with-png=no'. +HAVE_PNG=no +LIBPNG= +PNG_CFLAGS= +if test "${NS_IMPL_COCOA}" = yes; then + : # Nothing to do +elif test "${with_png}" != no; then + # mingw32 loads the library dynamically. + if test "$opsys" = mingw32; then + AC_CHECK_HEADER([png.h], [HAVE_PNG=yes]) + elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then + AC_MSG_CHECKING([for png]) + png_cflags=`(libpng-config --cflags) 2>&AS_MESSAGE_LOG_FD` && + png_libs=`(libpng-config --libs) 2>&AS_MESSAGE_LOG_FD` || { + # libpng-config does not work; configure by hand. + # Debian unstable as of July 2003 has multiple libpngs, and puts png.h + # in /usr/include/libpng. + if test -r /usr/include/libpng/png.h && + test ! -r /usr/include/png.h; then + png_cflags=-I/usr/include/libpng + else + png_cflags= + fi + png_libs='-lpng' + } + SAVE_CFLAGS=$CFLAGS + SAVE_LIBS=$LIBS + CFLAGS="$CFLAGS $png_cflags" + LIBS="$png_libs -lz -lm $LIBS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include ]], + [[return !png_get_channels (0, 0);]])], + [HAVE_PNG=yes + PNG_CFLAGS=`AS_ECHO(["$png_cflags"]) | sed -e "$edit_cflags"` + LIBPNG=$png_libs + # $LIBPNG requires explicit -lz in some cases. + # We don't know what those cases are, exactly, so play it safe and + # append -lz to any nonempty $LIBPNG, unless we're already using LIBZ. + if test -n "$LIBPNG" && test -z "$LIBZ"; then + LIBPNG="$LIBPNG -lz" + fi]) + CFLAGS=$SAVE_CFLAGS + LIBS=$SAVE_LIBS + AC_MSG_RESULT([$HAVE_PNG]) + fi +fi +if test $HAVE_PNG = yes; then + AC_DEFINE([HAVE_PNG], [1], [Define to 1 if you have the png library.]) + + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $PNG_CFLAGS" + AC_CHECK_DECL([png_longjmp], + [], + [AC_DEFINE([PNG_DEPSTRUCT], [], + [Define to empty to suppress deprecation warnings when building + with --enable-gcc-warnings and with libpng versions before 1.5, + which lack png_longjmp.])], + [[#include + ]]) + CFLAGS=$SAVE_CFLAGS +fi +AC_SUBST(LIBPNG) +AC_SUBST(PNG_CFLAGS) ### Use -ltiff if available, unless `--with-tiff=no'. ### mingw32 doesn't use -ltiff, since it loads the library dynamically. @@ -3272,6 +3325,26 @@ fi AC_SUBST(XINERAMA_CFLAGS) AC_SUBST(XINERAMA_LIBS) +### Use Xfixes (-lXfixes) if available +HAVE_XFIXES=no +if test "${HAVE_X11}" = "yes"; then + XFIXES_REQUIRED=4.0.0 + XFIXES_MODULES="xfixes >= $XFIXES_REQUIRED" + EMACS_CHECK_MODULES([XFIXES], [$XFIXES_MODULES]) + if test $HAVE_XFIXES = no; then + # Test old way in case pkg-config doesn't have it (older machines). + AC_CHECK_HEADER(X11/extensions/Xfixes.h, + [AC_CHECK_LIB(Xfixes, XFixesHideCursor, HAVE_XFIXES=yes)]) + if test $HAVE_XFIXES = yes; then + XFIXES_LIBS=-lXfixes + fi + fi + if test $HAVE_XFIXES = yes; then + AC_DEFINE(HAVE_XFIXES, 1, [Define to 1 if you have the Xfixes extension.]) + fi +fi +AC_SUBST(XFIXES_CFLAGS) +AC_SUBST(XFIXES_LIBS) ### Use libxml (-lxml2) if available ### mingw32 doesn't use -lxml2, since it loads the library dynamically. @@ -3407,15 +3480,15 @@ esac AC_SUBST(BLESSMAIL_TARGET) OLD_LIBS=$LIBS -LIBS="$LIB_MATH $LIBS" +LIBS="$LIB_PTHREAD $LIB_MATH $LIBS" AC_CHECK_FUNCS(accept4 gethostname \ getrusage get_current_dir_name \ lrand48 random rint \ select getpagesize setlocale \ getrlimit setrlimit shutdown getaddrinfo \ -strsignal setitimer \ +pthread_sigmask strsignal setitimer \ sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \ -gai_strerror getline getdelim sync \ +gai_strerror sync \ getpwent endpwent getgrent endgrent \ cfmakeraw cfsetspeed copysign __executable_start log2) LIBS=$OLD_LIBS @@ -3763,14 +3836,6 @@ dnl Fixme: Not used. Should this be HAVE_SOCKETS? [Define to 1 if you have inet sockets.]) fi -dnl Check for a Solaris 2.4 vfork bug that Autoconf misses (through 2.69). -dnl This can be removed once we assume Autoconf 2.70. -case $canonical in - *-solaris2.4 | *-solaris2.4.*) - dnl Disable the Autoconf-generated vfork test. - : ${ac_cv_func_vfork_works=no};; -esac - AC_FUNC_FORK AC_CHECK_FUNCS(snprintf) @@ -4277,7 +4342,7 @@ if test x$GCC = xyes; then else case $opsys in dnl irix: Tested on Irix 6.5. SCM worked on earlier versions. - dragonfly | freebsd | netbsd | openbsd | irix6-5 | sol2* ) + aix* | dragonfly | freebsd | netbsd | openbsd | irix6-5 | sol2* ) AC_DEFINE(GC_SETJMP_WORKS, 1) ;; esac @@ -4696,6 +4761,12 @@ AH_VERBATIM([FORTIFY_SOUR], #endif ]) +# If user asks to omit features, disable optional features that gnulib +# might otherwise enable. +if test "$with_features" = no && test "$enable_acl" != yes; then + enable_acl=no +fi + # Configure gnulib. Although this does not affect CFLAGS or LIBS permanently. # it temporarily reverts them to their pre-pkg-config values, # because gnulib needs to work with both src (which uses the @@ -4757,11 +4828,9 @@ case "$opsys" in gnu*) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_RPATH)" ;; mingw32) - ## MinGW64 does not prepend an underscore to symbols, so we must - ## pass a different -entry switch to linker. FIXME: It is better - ## to make the entry points the same by changing unexw32.c. + ## Is it any better under MinGW64 to relocate emacs into higher addresses? case "$canonical" in - x86_64-*-*) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;; + x86_64-*-*) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x400000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;; *) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;; esac ;; @@ -4782,27 +4851,10 @@ LD_SWITCH_SYSTEM_TEMACS="$LDFLAGS_NOCOMBRELOC $LD_SWITCH_SYSTEM_TEMACS" AC_SUBST(LD_SWITCH_SYSTEM_TEMACS) -## MinGW-specific post-link processing of temacs. -TEMACS_POST_LINK=":" -ADDSECTION= -EMACS_HEAPSIZE= -if test "${opsys}" = "mingw32"; then - TEMACS_POST_LINK="\$(MINGW_TEMACS_POST_LINK)" - ADDSECTION="../nt/addsection\$(EXEEXT)" - ## Preload heap size of temacs.exe in MB. - case "$canonical" in - x86_64-*-*) EMACS_HEAPSIZE=42 ;; - *) EMACS_HEAPSIZE=27 ;; - esac -fi - -AC_SUBST(ADDSECTION) -AC_SUBST(TEMACS_POST_LINK) -AC_SUBST(EMACS_HEAPSIZE) - ## Common for all window systems if test "$window_system" != "none"; then AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.]) + AC_DEFINE(POLL_FOR_INPUT, 1, [Define if you poll periodically to detect C-g.]) WINDOW_SYSTEM_OBJ="fontset.o fringe.o image.o" fi @@ -4905,7 +4957,7 @@ echo " Does Emacs use -lXpm? ${HAVE_XPM}" echo " Does Emacs use -ljpeg? ${HAVE_JPEG}" echo " Does Emacs use -ltiff? ${HAVE_TIFF}" echo " Does Emacs use a gif library? ${HAVE_GIF} $LIBGIF" -echo " Does Emacs use -lpng? ${HAVE_PNG}" +echo " Does Emacs use a png library? ${HAVE_PNG} $LIBPNG" echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}" echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}" @@ -5032,7 +5084,7 @@ if test "${opsys}" = "mingw32"; then ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force-w32 else ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force -fi +fi || AC_MSG_ERROR(['src/epaths.h' could not be made.]) ], [GCC="$GCC" CPPFLAGS="$CPPFLAGS" opsys="$opsys"]) dnl NB we have to cheat and use the ac_... version because abs_top_srcdir @@ -5045,3 +5097,5 @@ fi ]) AC_OUTPUT + +test "$MAKE" = make || AC_MSG_NOTICE([Now you can run '$MAKE'.])