X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/d4166523bc8c4565cde24fcda56d3d5cdabb70ce..b6c888cc7afed65f24c023b8e90b73649f438e14:/configure.ac diff --git a/configure.ac b/configure.ac index e4a846402f..41258fcb7a 100644 --- a/configure.ac +++ b/configure.ac @@ -24,18 +24,45 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ(2.65) AC_INIT(emacs, 24.3.50) +test "x$MSYSTEM" = "xMINGW32" && . $srcdir/nt/mingw-cfg.site + +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 +dnl rather than on the command-line. +emacs_config_options= +optsep= dnl This is the documented way to record the args passed to configure, dnl rather than $ac_configure_args. -emacs_config_options="$@" -## Add some environment variables, if they were passed via the environment -## rather than on the command-line. -for var in CFLAGS CPPFLAGS LDFLAGS; do - case "$emacs_config_options" in - *$var=*) continue ;; - esac - eval val="\$${var}" - test x"$val" = x && continue - emacs_config_options="${emacs_config_options}${emacs_config_options:+ }$var=\"$val\"" +for opt in ${1+"$@"} CFLAGS CPPFLAGS LDFLAGS; do + case $opt in + -n | --no-create | --no-recursion) + continue ;; + CFLAGS | CPPFLAGS | LDFLAGS) + eval 'test "${'$opt'+set}" = set' || continue + case " $*" in + *" $opt="*) continue ;; + esac + eval opt=$opt=\$$opt ;; + esac + + emacs_shell_specials=$IFS\''"#$&()*;<>?@<:@\\`{|~' + case $opt in + *[["$emacs_shell_specials"]]*) + case $opt in + *\'*) + emacs_quote_apostrophes="s/'/'\\\\''/g" + opt=`AS_ECHO(["$opt"]) | sed "$emacs_quote_apostrophes"` ;; + esac + opt="'$opt'" + case $opt in + *[['"\\']]*) + emacs_quote_for_c='s/[["\\]]/\\&/g; $!s/$/\\n\\/' + opt=`AS_ECHO(["$opt"]) | sed "$emacs_quote_for_c"` ;; + esac ;; + esac + AS_VAR_APPEND([emacs_config_options], ["$optsep$opt"]) + optsep=' ' done AC_CONFIG_HEADER(src/config.h:src/config.in) @@ -53,14 +80,13 @@ dnl hence the single quotes. This is per the GNU coding standards, see dnl (autoconf) Installation Directory Variables dnl See also epaths.h below. lispdir='${datadir}/emacs/${version}/lisp' -leimdir='${datadir}/emacs/${version}/leim' -standardlisppath='${lispdir}:${leimdir}' +standardlisppath='${lispdir}' locallisppath='${datadir}/emacs/${version}/site-lisp:'\ '${datadir}/emacs/site-lisp' lisppath='${locallisppath}:${standardlisppath}' etcdir='${datadir}/emacs/${version}/etc' archlibdir='${libexecdir}/emacs/${version}/${configuration}' -docdir='${datadir}/emacs/${version}/etc' +etcdocdir='${datadir}/emacs/${version}/etc' gamedir='${localstatedir}/games/emacs' dnl Special option to disable the most of other options. @@ -68,8 +94,8 @@ AC_ARG_WITH(all, [AS_HELP_STRING([--without-all], [omit almost all features and build small executable with minimal dependencies])], - with_features=$withval, - with_features=yes) + [with_features=$withval], + [with_features=yes]) dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING) dnl Create a new --with option that defaults to being disabled. @@ -142,12 +168,12 @@ AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME], AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.])) AC_ARG_WITH([sound],[AS_HELP_STRING([--with-sound=VALUE], - [compile with sound support (VALUE one of: yes, ossaudio, alsa, no; + [compile with sound support (VALUE one of: yes, alsa, oss, bsd-ossaudio, no; default yes). Only for GNU/Linux, FreeBSD, NetBSD, MinGW.])], [ case "${withval}" in - yes|no|ossaudio|alsa) val=$withval ;; + yes|no|alsa|oss|bsd-ossaudio) val=$withval ;; *) AC_MSG_ERROR([`--with-sound=$withval' is invalid; -this option's value should be `yes', `no', `ossaudio', or `alsa'.]) +this option's value should be `yes', `no', `alsa', `oss', or `bsd-ossaudio'.]) ;; esac with_sound=$val @@ -211,6 +237,7 @@ 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]) +OPTION_DEFAULT_ON([zlib],[don't compile with zlib decompression support]) AC_ARG_WITH([file-notification],[AS_HELP_STRING([--with-file-notification=LIB], [use a file notification library (LIB one of: yes, gfile, inotify, w32, no)])], @@ -240,13 +267,9 @@ 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]) -if test $with_compress_info = yes; then - GZIP_INFO=yes -else - GZIP_INFO= -fi -AC_SUBST(GZIP_INFO) +OPTION_DEFAULT_ON([compress-install], + [don't compress some files (.el, .info, etc.) when installing. Equivalent to: +make GZIP_PROG= install]) AC_ARG_WITH([pkg-config-prog],dnl [AS_HELP_STRING([--with-pkg-config-prog=FILENAME], @@ -397,30 +420,6 @@ AC_ARG_ENABLE(gtk-deprecation-warnings, [Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])], [ac_enable_gtk_deprecation_warnings="${enableval}"],[]) -#### Make srcdir absolute, if it isn't already. It's important to -#### avoid running the file name through pwd unnecessarily, since pwd can -#### give you automounter prefixes, which can go away. We do all this -#### so Emacs can find its files when run uninstalled. -## Make sure CDPATH doesn't affect cd (in case PWD is relative). -unset CDPATH -case "${srcdir}" in - [[\\/]]* | ?:[[\\/]]*) ;; - . ) - ## We may be able to use the $PWD environment variable to make this - ## absolute. But sometimes PWD is inaccurate. - ## Note: we used to use $PWD at the end instead of `pwd`, - ## but that tested only for a well-formed and valid PWD, - ## it did not object when PWD was well-formed and valid but just wrong. - if test ".$PWD" != "." && test ".`(cd "$PWD" ; sh -c pwd)`" = ".`pwd`" ; - then - srcdir="$PWD" - else - srcdir=`(cd "$srcdir"; pwd)` - fi - ;; - * ) srcdir=`(cd "$srcdir"; pwd)` ;; -esac - ### Canonicalize the configuration name. AC_CANONICAL_HOST @@ -640,6 +639,8 @@ dnl alternative to lib/gnulib.mk, so as to avoid generating header files dnl that clash with MinGW. AM_CONDITIONAL([BUILDING_FOR_WINDOWSNT], [test "x$opsys" = "xmingw32"]) +# Avoid gnulib's tests for -lcrypto, so that there's no static dependency on it. +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]) @@ -754,10 +755,28 @@ AC_DEFUN([gl_GCC_VERSION_IFELSE], ] ) +# clang is unduly picky about some things. +AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #ifndef __clang__ + #error "not clang" + #endif + ]])], + [emacs_cv_clang=yes], + [emacs_cv_clang=no])]) + # When compiling with GCC, prefer -isystem to -I when including system # include files, to avoid generating useless diagnostics for the files. if test "$gl_gcc_warnings" != yes; then isystem='-I' + if test "$emacs_cv_clang" = yes + then + # Turn off some warnings if supported. + gl_WARN_ADD([-Wno-switch]) + gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare]) + gl_WARN_ADD([-Wno-pointer-sign]) + fi else isystem='-isystem ' @@ -800,16 +819,13 @@ else # The following line should be removable at some point. nw="$nw -Wsuggest-attribute=pure" - # clang is unduly picky about some things. - AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([[ - #ifndef __clang__ - #error "not clang" - #endif - ]])], - [emacs_cv_clang=yes], - [emacs_cv_clang=no])]) + # This part is merely for shortening the command line, + # since -Wno-FOO needs to be added below regardless. + nw="$nw -Wmissing-field-initializers" + nw="$nw -Wswitch" + nw="$nw -Wtype-limits" + nw="$nw -Wunused-parameter" + if test $emacs_cv_clang = yes; then nw="$nw -Wcast-align" fi @@ -838,9 +854,6 @@ else gl_WARN_ADD([-Wno-unused-value]) fi - gl_WARN_ADD([-fdiagnostics-show-option]) - gl_WARN_ADD([-funit-at-a-time]) - AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.]) AH_VERBATIM([FORTIFY_SOURCE], [/* Enable compile-time and run-time bounds-checking, and some warnings, @@ -917,6 +930,9 @@ AC_PATH_PROG(INSTALL_INFO, install-info, :, dnl Don't use GZIP, which is used by gzip for additional parameters. AC_PATH_PROG(GZIP_PROG, gzip) +test $with_compress_install != yes && test -n "$GZIP_PROG" && \ + GZIP_PROG=" # $GZIP_PROG # (disabled by configure --without-compress-install)" + if test $opsys = gnu-linux; then AC_PATH_PROG(PAXCTL, paxctl,, [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin]) @@ -971,6 +987,13 @@ INFO_OPTS=--no-split AC_SUBST(INFO_EXT) AC_SUBST(INFO_OPTS) +if test $opsys = mingw32; then + DOCMISC_W32=efaq-w32 +else + DOCMISC_W32= +fi +AC_SUBST(DOCMISC_W32) + dnl Add our options to ac_link now, after it is set up. if test x$GCC = xyes; then @@ -987,19 +1010,30 @@ dnl (Don't use `-z nocombreloc' as -z takes no arg on Irix.) dnl Treat GCC specially since it just gives a non-fatal `unrecognized option' dnl if not built to support GNU ld. -late_LDFLAGS=$LDFLAGS +dnl For a long time, -znocombreloc was added to LDFLAGS rather than +dnl LD_SWITCH_SYSTEM_TEMACS. That is: +dnl * inappropriate, as LDFLAGS is a user option but this is essential. +dnl Eg "make LDFLAGS=... all" could run into problems, +dnl http://bugs.debian.org/684788 +dnl * unnecessary, since temacs is the only thing that actually needs it. +dnl Indeed this is where it was originally, prior to: +dnl http://lists.gnu.org/archive/html/emacs-pretest-bug/2004-03/msg00170.html +late_LDFLAGS="$LDFLAGS" if test x$GCC = xyes; then - LDFLAGS="$LDFLAGS -Wl,-znocombreloc" + LDFLAGS_NOCOMBRELOC="-Wl,-znocombreloc" else - LDFLAGS="$LDFLAGS -znocombreloc" + LDFLAGS_NOCOMBRELOC="-znocombreloc" fi +LDFLAGS="$LDFLAGS $LDFLAGS_NOCOMBRELOC" + AC_MSG_CHECKING([for -znocombreloc]) AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [AC_MSG_RESULT(yes)], - LDFLAGS=$late_LDFLAGS + LDFLAGS_NOCOMBRELOC= [AC_MSG_RESULT(no)]) +LDFLAGS="$late_LDFLAGS" dnl The function dump-emacs will not be defined and temacs will do dnl (load "loadup") automatically unless told otherwise. @@ -1109,10 +1143,13 @@ case $canonical in if test "x$GCC" = "xyes"; then C_SWITCH_MACHINE="-fno-common" else - AC_MSG_ERROR([What gives? Fix me if DEC Unix supports ELF now.]) + AC_MSG_ERROR([Non-GCC compilers are not supported.]) fi else - UNEXEC_OBJ=unexalpha.o + dnl This was the unexalpha.c case. Removed in 24.1, 2010-07-24, + dnl albeit under the mistaken assumption that said file + dnl was no longer used. + AC_MSG_ERROR([Non-ELF systems are not supported since Emacs 24.1.]) fi ;; esac @@ -1274,12 +1311,15 @@ if test "${with_sound}" != "no"; then #include #endif ]) - if test "${with_sound}" = "ossaudio" || test "${with_sound}" = "yes"; then + test "${with_sound}" = "oss" && test "${have_sound_header}" != "yes" && \ + AC_MSG_ERROR([OSS sound support requested but not found.]) + + if test "${with_sound}" = "bsd-ossaudio" || test "${with_sound}" = "yes"; then # Emulation library used on NetBSD. AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=) - test "${with_sound}" = "ossaudio" && test -z "$LIBSOUND" && \ - AC_MSG_ERROR([ossaudio sound support requested but not found.]) - dnl FIXME? If we did find ossaudio, should we set with_sound=ossaudio? + test "${with_sound}" = "bsd-ossaudio" && test -z "$LIBSOUND" && \ + AC_MSG_ERROR([bsd-ossaudio sound support requested but not found.]) + dnl FIXME? If we did find ossaudio, should we set with_sound=bsd-ossaudio? dnl Traditionally, we go on to check for alsa too. Does that make sense? fi AC_SUBST(LIBSOUND) @@ -1570,7 +1610,10 @@ fail; [AC_MSG_ERROR([`--with-ns' was specified, but the include files are missing or cannot be compiled.])]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], + macfont_file="" + if test "${NS_IMPL_COCOA}" = "yes"; then + AC_MSG_CHECKING([for OSX 10.4 or newer]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], [ #ifdef MAC_OS_X_VERSION_MAX_ALLOWED #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1040 @@ -1582,13 +1625,33 @@ fail; ])], ns_osx_have_104=yes, ns_osx_have_104=no) + AC_MSG_RESULT([$ns_osx_have_104]) + + if test $ns_osx_have_104 = no; then + AC_MSG_ERROR([`OSX 10.4 or newer is required']); + fi + AC_MSG_CHECKING([for OSX 10.5 or newer]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], + [ +#ifdef MAC_OS_X_VERSION_MAX_ALLOWED +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 + ; /* OK */ +#else +#error "OSX 10.5 not found" +#endif +#endif + ])], + ns_osx_have_105=yes, + ns_osx_have_105=no) + AC_MSG_RESULT([$ns_osx_have_105]) + if test $ns_osx_have_105 = yes; then + macfont_file="macfont.o" + fi + fi AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], [NSInteger i;])], ns_have_nsinteger=yes, ns_have_nsinteger=no) - if test $ns_osx_have_104 = no; then - AC_MSG_ERROR([`OSX 10.4 or newer is required']); - fi if test $ns_have_nsinteger = yes; then AC_DEFINE(NS_HAVE_NSINTEGER, 1, [Define to 1 if `NSInteger' is defined.]) fi @@ -1614,17 +1677,17 @@ if test "${HAVE_NS}" = yes; then dnl This one isn't really used, only archlibdir is. libexecdir="\${ns_appbindir}/libexec" archlibdir="\${ns_appbindir}/libexec" - docdir="\${ns_appresdir}/etc" + etcdocdir="\${ns_appresdir}/etc" etcdir="\${ns_appresdir}/etc" dnl FIXME maybe set datarootdir instead. dnl That would also get applications, icons, man. infodir="\${ns_appresdir}/info" mandir="\${ns_appresdir}/man" lispdir="\${ns_appresdir}/lisp" - leimdir="\${ns_appresdir}/leim" INSTALL_ARCH_INDEP_EXTRA= fi - NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o" + + NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o $macfont_file" fi CFLAGS="$tmp_CFLAGS" CPPFLAGS="$tmp_CPPFLAGS" @@ -1739,6 +1802,18 @@ fi ## $window_system is now set to the window system we will ## ultimately use. +if test "$window_system" = none && test "$gl_gcc_warnings" = yes; then + # Too many warnings for now. + nw= + nw="$nw -Wsuggest-attribute=const" + nw="$nw -Wsuggest-attribute=noreturn" + gl_MANYWARN_COMPLEMENT([WARN_CFLAGS], [$WARN_CFLAGS], [$nw]) + + gl_WARN_ADD([-Wno-unused-variable]) + gl_WARN_ADD([-Wno-unused-but-set-variable]) + gl_WARN_ADD([-Wno-unused-but-set-parameter]) +fi + term_header= HAVE_X_WINDOWS=no HAVE_X11=no @@ -1793,12 +1868,6 @@ to configure.]) fi fi -### If we're using X11, we should use the X menu package. -HAVE_MENUS=no -case ${HAVE_X11} in - yes ) HAVE_MENUS=yes ;; -esac - # Does the opsystem file prohibit the use of the GNU malloc? # Assume not, until told otherwise. GNU_MALLOC=yes @@ -1825,12 +1894,14 @@ case "$opsys" in darwin|sol2-10) system_malloc=yes ;; esac +GMALLOC_OBJ= if test "${system_malloc}" = "yes"; then - AC_DEFINE(SYSTEM_MALLOC, 1, [Define to use system malloc.]) + AC_DEFINE([SYSTEM_MALLOC], 1, + [Define to 1 to use the system memory allocator, even if it is not + Doug Lea style.]) GNU_MALLOC=no GNU_MALLOC_reason=" (The GNU allocators don't work with this system configuration.)" - GMALLOC_OBJ= VMLIMIT_OBJ= else test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o @@ -1859,7 +1930,8 @@ if test "$doug_lea_malloc" = "yes" ; then (Using Doug Lea's new malloc from the GNU C Library.)" fi AC_DEFINE(DOUG_LEA_MALLOC, 1, - [Define to 1 if you are using the GNU C Library.]) + [Define to 1 if the system memory allocator is Doug Lea style, + with malloc hooks and malloc_set_state.]) ## Use mmap directly for allocating larger buffers. ## FIXME this comes from src/s/{gnu,gnu-linux}.h: @@ -2065,6 +2137,10 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" = if test $HAVE_RSVG = yes; then AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.]) CFLAGS="$CFLAGS $RSVG_CFLAGS" + # Windows loads librsvg dynamically + if test "${opsys}" = "mingw32"; then + RSVG_LIBS= + fi LIBS="$RSVG_LIBS $LIBS" fi fi @@ -2114,8 +2190,10 @@ if test "${opsys}" != "mingw32"; then gtk_term_header=gtkutil.h USE_GTK_TOOLKIT="GTK3" if test "x$ac_enable_gtk_deprecation_warnings" = x; then - GTK_CFLAGS="$GTK_CFLAGS -DGDK_DISABLE_DEPRECATION_WARNINGS" - GTK_CFLAGS="$GTK_CFLAGS -DGLIB_DISABLE_DEPRECATION_WARNINGS" + AC_DEFINE([GDK_DISABLE_DEPRECATION_WARNINGS], [1], + [Define to 1 to disable GTK+/GDK deprecation warnings.]) + AC_DEFINE([GLIB_DISABLE_DEPRECATION_WARNINGS], [1], + [Define to 1 to disable Glib deprecation warnings.]) fi else check_gtk2=yes @@ -2141,7 +2219,6 @@ fi if test x"$pkg_check_gtk" = xyes; then - AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS" CFLAGS="$CFLAGS $GTK_CFLAGS" @@ -2300,7 +2377,6 @@ if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then SAVE_LIBS="$LIBS" CFLAGS="$SETTINGS_CFLAGS $CFLAGS" LIBS="$SETTINGS_LIBS $LIBS" - AC_CHECK_FUNCS([g_type_init]) CFLAGS="$SAVE_CFLAGS" LIBS="$SAVE_LIBS" fi @@ -2321,8 +2397,15 @@ fi AC_SUBST(LIBSELINUX_LIBS) HAVE_GNUTLS=no +HAVE_GNUTLS3=no if test "${with_gnutls}" = "yes" ; then - PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no) + PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.0.0], HAVE_GNUTLS3=yes, HAVE_GNUTLS3=no) + if test "${HAVE_GNUTLS3}" = "yes"; then + AC_DEFINE(HAVE_GNUTLS3, 1, [Define if using GnuTLS v3.]) + HAVE_GNUTLS="yes" + else + PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no) + fi if test "${HAVE_GNUTLS}" = "yes"; then AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.]) fi @@ -2942,6 +3025,26 @@ elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then fi AC_SUBST(LIBPNG) +HAVE_ZLIB=no +LIBZ= +if test "${with_zlib}" != "no"; then + OLIBS=$LIBS + AC_SEARCH_LIBS([inflateEnd], [z], [HAVE_ZLIB=yes]) + LIBS=$OLIBS + case $ac_cv_search_inflateEnd in + -*) LIBZ=$ac_cv_search_inflateEnd ;; + esac +fi +if test "${HAVE_ZLIB}" = "yes"; then + AC_DEFINE([HAVE_ZLIB], 1, [Define to 1 if you have the zlib library (-lz).]) + ### mingw32 doesn't use -lz, since it loads the library dynamically. + if test "${opsys}" = "mingw32"; then + LIBZ= + fi +fi +AC_SUBST(LIBZ) + + ### Use -ltiff if available, unless `--with-tiff=no'. ### mingw32 doesn't use -ltiff, since it loads the library dynamically. HAVE_TIFF=no @@ -2985,8 +3088,9 @@ elif test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no" \ || test "${HAVE_W32}" = "yes"; then AC_CHECK_HEADER(gif_lib.h, # EGifPutExtensionLast only exists from version libungif-4.1.0b1. -# Earlier versions can crash Emacs. - [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)]) +# Earlier versions can crash Emacs, but version 5.0 removes EGifPutExtensionLast. + [AC_CHECK_LIB(gif, GifMakeMapObject, HAVE_GIF=yes, + [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])]) if test "$HAVE_GIF" = yes; then LIBGIF=-lgif @@ -3059,15 +3163,9 @@ if test "${HAVE_NS}" = "yes"; then ## 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 - # We also have mouse menus. - HAVE_MENUS=yes OTHER_FILES=ns-app fi -if test "${HAVE_W32}" = "yes"; then - HAVE_MENUS=yes -fi - ### Use session management (-lSM -lICE) if available HAVE_X_SM=no LIBXSM= @@ -3281,11 +3379,18 @@ getrlimit setrlimit shutdown getaddrinfo \ strsignal setitimer \ sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \ gai_strerror getline getdelim sync \ -difftime posix_memalign \ +difftime \ getpwent endpwent getgrent endgrent \ touchlock \ cfmakeraw cfsetspeed copysign __executable_start log2) +dnl No need to check for aligned_alloc and posix_memalign if using +dnl gmalloc.o, as it supplies them. Don't use these functions on +dnl Darwin as they are incompatible with unexmacosx.c. +if test -z "$GMALLOC_OBJ" && test "$opsys" != darwin; then + AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break]) +fi + ## Eric Backus says, HP-UX 9.x on HP 700 machines ## has a broken `rint' in some library versions including math library ## version number A.09.05. @@ -3577,6 +3682,8 @@ AC_SUBST(KRB5LIB) AC_SUBST(DESLIB) AC_SUBST(KRB4LIB) +AC_CHECK_HEADERS(valgrind/valgrind.h) + AC_CHECK_FUNCS_ONCE(tzset) AC_MSG_CHECKING(whether localtime caches TZ) AC_CACHE_VAL(emacs_cv_localtime_cache, @@ -3732,12 +3839,22 @@ else AC_DEFINE(NULL_DEVICE, ["/dev/null"]) fi -AH_TEMPLATE(SEPCHAR, [Character that separates PATH elements.]) if test "${opsys}" = "mingw32"; then - AC_DEFINE(SEPCHAR, [';']) + SEPCHAR=';' else - AC_DEFINE(SEPCHAR, [':']) -fi + SEPCHAR=':' +fi +AC_DEFINE_UNQUOTED(SEPCHAR, ['$SEPCHAR'], [Character that separates PATH elements.]) +dnl This is for MinGW, and is used in test/automated/Makefile.in. +dnl The MSYS Bash has heuristics for replacing ':' with ';' when it +dnl decides that a command-line argument to be passed to a MinGW program +dnl is a PATH-style list of directories. But that heuristics plays it +dnl safe, and only does the replacement when it is _absolutely_ sure it +dnl sees a colon-separated list of file names; e.g. ":." is left alone, +dnl which breaks in-tree builds. So we do this manually instead. +dnl Note that we cannot rely on PATH_SEPARATOR, as that one will always +dnl be computed as ':' in MSYS Bash. +AC_SUBST(SEPCHAR) dnl Everybody supports this, except MS-DOS. AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.]) @@ -3801,7 +3918,7 @@ emacs_broken_SIGIO=no case $opsys in dnl SIGIO exists, but the feature doesn't work in the way Emacs needs. dnl See eg . - hpux* | irix6-5 | openbsd | sol2* | unixware | gnu-kfreebsd ) + hpux* | irix6-5 | openbsd | sol2* | unixware ) emacs_broken_SIGIO=yes ;; @@ -3973,7 +4090,7 @@ case $opsys in AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname = 0; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); if (grantpt (fd) != -1 && unlockpt (fd) != -1) ptyname = ptsname(fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (!ptyname) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }]) dnl if HAVE_POSIX_OPENPT if test "x$ac_cv_func_posix_openpt" = xyes; then - AC_DEFINE(PTY_OPEN, [fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY)]) + AC_DEFINE(PTY_OPEN, [do { fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY); if (fd < 0 && errno == EINVAL) fd = posix_openpt (O_RDWR | O_NOCTTY); } while (0)]) AC_DEFINE(PTY_NAME_SPRINTF, []) dnl if HAVE_GETPT elif test "x$ac_cv_func_getpt" = xyes; then @@ -4319,14 +4436,16 @@ fi case $opsys in - dnl Emacs supplies its own malloc, but glib (part of Gtk+) calls - dnl memalign and on Cygwin, that becomes the Cygwin-supplied memalign. - dnl As malloc is not the Cygwin malloc, the Cygwin memalign always - dnl returns ENOSYS. A workaround is to set G_SLICE=always-malloc. */ + dnl Emacs supplies its own malloc, but glib calls posix_memalign, + dnl and on Cygwin prior to version 1.7.24 that becomes the + dnl Cygwin-supplied posix_memalign. As malloc is not the Cygwin + dnl malloc, the Cygwin posix_memalign always returns ENOSYS. A + dnl workaround is to set G_SLICE=always-malloc. This is no longer + dnl needed starting with cygwin-1.7.24, and it is no longer + dnl effective starting with glib-2.36. */ cygwin) AC_DEFINE(G_SLICE_ALWAYS_MALLOC, 1, [Define to set the - G_SLICE environment variable to "always-malloc" at startup, if - using GTK.]) + G_SLICE environment variable to "always-malloc" at startup.]) ;; hpux11) @@ -4383,14 +4502,13 @@ AC_SUBST(libexecdir) AC_SUBST(mandir) AC_SUBST(infodir) AC_SUBST(lispdir) -AC_SUBST(leimdir) AC_SUBST(standardlisppath) AC_SUBST(locallisppath) AC_SUBST(lisppath) AC_SUBST(x_default_search_path) AC_SUBST(etcdir) AC_SUBST(archlibdir) -AC_SUBST(docdir) +AC_SUBST(etcdocdir) AC_SUBST(bitmapdir) AC_SUBST(gamedir) AC_SUBST(gameuser) @@ -4417,8 +4535,6 @@ fi AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "${canonical}", [Define to the canonical Emacs configuration name.]) -dnl Replace any embedded " characters (bug#13274). -emacs_config_options=`echo "$emacs_config_options " | sed -e 's/--no-create //' -e 's/--no-recursion //' -e 's/ *$//' -e "s/\"/'/g"` AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${emacs_config_options}", [Define to the options passed to configure.]) AH_TEMPLATE(config_opsysfile, [Some platforms that do not use configure @@ -4493,63 +4609,29 @@ AC_SUBST(TOOLKIT_LIBW) if test "${opsys}" != "mingw32"; then if test "$USE_X_TOOLKIT" = "none"; then LIBXT_OTHER="\$(LIBXSM)" - OLDXMENU_TARGET="really-oldXMenu" else LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext" - OLDXMENU_TARGET="really-lwlib" fi fi AC_SUBST(LIBXT_OTHER) -## The X Menu stuff is present in the X10 distribution, but missing -## from X11. If we have X10, just use the installed library; -## otherwise, use our own copy. if test "${HAVE_X11}" = "yes" ; then AC_DEFINE(HAVE_X11, 1, - [Define to 1 if you want to use version 11 of X windows. - Otherwise, Emacs expects to use version 10.]) - - if test "$USE_X_TOOLKIT" = "none"; then - OLDXMENU="\${oldXMenudir}/libXMenu11.a" - else - OLDXMENU="\${lwlibdir}/liblw.a" - fi - LIBXMENU="\$(OLDXMENU)" + [Define to 1 if you want to use version 11 of X windows.]) LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)" - OLDXMENU_DEPS="\${OLDXMENU} ../src/\${OLDXMENU}" else - ## For a syntactically valid Makefile; not actually used for anything. - ## See comments in src/Makefile.in. - OLDXMENU=nothing - ## FIXME This case (!HAVE_X11 && HAVE_X_WINDOWS) is no longer possible(?). - if test "${HAVE_X_WINDOWS}" = "yes"; then - LIBXMENU="-lXMenu" - else - LIBXMENU= - fi LIBX_OTHER= - OLDXMENU_DEPS= fi +AC_SUBST(LIBX_OTHER) -if test "$HAVE_GTK" = "yes" || test "$HAVE_MENUS" != "yes"; then - OLDXMENU_TARGET= - OLDXMENU=nothing +if test "$HAVE_GTK" = yes || test "$HAVE_X11" != yes; then LIBXMENU= - OLDXMENU_DEPS= +elif test "$USE_X_TOOLKIT" = none; then + LIBXMENU='$(oldXMenudir)/libXMenu11.a' +else + LIBXMENU='$(lwlibdir)/liblw.a' fi - -AC_SUBST(OLDXMENU_TARGET) -AC_SUBST(OLDXMENU) AC_SUBST(LIBXMENU) -AC_SUBST(LIBX_OTHER) -AC_SUBST(OLDXMENU_DEPS) - -if test "${HAVE_MENUS}" = "yes" ; then - AC_DEFINE(HAVE_MENUS, 1, - [Define to 1 if you have mouse menus. - (This is automatic if you use X, but the option to specify it remains.) - It is also defined with other window systems that support xmenu.c.]) -fi if test "${GNU_MALLOC}" = "yes" ; then AC_DEFINE(GNU_MALLOC, 1, @@ -4584,6 +4666,24 @@ AC_SUBST(CYGWIN_OBJ) AC_SUBST(PRE_ALLOC_OBJ) AC_SUBST(POST_ALLOC_OBJ) +dnl Call this 'FORTIFY_SOUR' so that it sorts before the 'FORTIFY_SOURCE' +dnl verbatim defined above. The tricky name is apropos, as this hack +dnl makes Fortify go sour! +AH_VERBATIM([FORTIFY_SOUR], +[/* Without the following workaround, Emacs runs slowly on OS X 10.8. + The workaround disables some useful run-time checking, so it + should be conditional to the platforms with the performance bug. + Perhaps Apple will fix this some day; also see m4/extern-inline.m4. */ +#if defined __APPLE__ && defined __GNUC__ +# ifndef _DONT_USE_CTYPE_INLINE_ +# define _DONT_USE_CTYPE_INLINE_ +# endif +# ifndef _FORTIFY_SOURCE +# define _FORTIFY_SOURCE 0 +# endif +#endif +]) + # 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 @@ -4603,7 +4703,7 @@ CFLAGS=$SAVE_CFLAGS LIBS=$SAVE_LIBS if test "${opsys}" = "mingw32"; then - CPPFLAGS="$CPPFLAGS -DUSE_CRT_DLL=1 -I $srcdir/nt/inc" + CPPFLAGS="$CPPFLAGS -DUSE_CRT_DLL=1 -I \${abs_top_srcdir}/nt/inc" # Remove unneeded switches from the value of CC that goes to Makefiles CC=`echo $CC | sed -e "s,$GCC_TEST_OPTIONS,,"` fi @@ -4666,6 +4766,8 @@ if test x$ac_enable_profiling != x ; then esac fi +LD_SWITCH_SYSTEM_TEMACS="$LDFLAGS_NOCOMBRELOC $LD_SWITCH_SYSTEM_TEMACS" + AC_SUBST(LD_SWITCH_SYSTEM_TEMACS) ## MinGW-specific post-link processing of temacs. @@ -4794,6 +4896,7 @@ echo " Does Emacs use -lfreetype? ${HAVE_FREETYPE} echo " Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}" echo " Does Emacs use -lotf? ${HAVE_LIBOTF}" echo " Does Emacs use -lxft? ${HAVE_XFT}" +echo " Does Emacs directly use zlib? ${HAVE_ZLIB}" echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}" echo @@ -4840,10 +4943,13 @@ if test "$HAVE_NS" = "yes"; then if test "$NS_IMPL_GNUSTEP" = yes; then AC_CONFIG_FILES([nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist:nextstep/templates/Info-gnustep.plist.in \ nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop:nextstep/templates/Emacs.desktop.in]) + ns_check_file=Resources/Info-gnustep.plist else AC_CONFIG_FILES([nextstep/Cocoa/Emacs.base/Contents/Info.plist:nextstep/templates/Info.plist.in \ nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:nextstep/templates/InfoPlist.strings.in]) + ns_check_file=Contents/Info.plist fi + AC_SUBST(ns_check_file) fi dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES. @@ -4872,13 +4978,12 @@ if test -f "$srcdir/$opt_makefile.in"; then fi -dnl admin/ may or may not be present. -opt_makefile=admin/unidata/Makefile - -if test -f "$srcdir/$opt_makefile.in"; then - SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile" +dnl The admin/ directory used to be excluded from tarfiles. +if test -d $srcdir/admin; then + SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/unidata/Makefile admin/grammars/Makefile" AC_CONFIG_FILES([admin/unidata/Makefile]) -fi + AC_CONFIG_FILES([admin/grammars/Makefile]) +fi dnl -d admin SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'` @@ -4901,9 +5006,12 @@ else fi ], [GCC="$GCC" CPPFLAGS="$CPPFLAGS" opsys="$opsys"]) +dnl NB we have to cheat and use the ac_... version because abs_top_srcdir +dnl is not yet set, sigh. Or we could use ../$srcdir/src/.gdbinit, +dnl or a symlink? AC_CONFIG_COMMANDS([src/.gdbinit], [ if test ! -f src/.gdbinit && test -f "$srcdir/src/.gdbinit"; then - echo "source $srcdir/src/.gdbinit" > src/.gdbinit + echo "source $ac_abs_top_srcdir/src/.gdbinit" > src/.gdbinit fi ])