OPTION_DEFAULT_ON([gif],[don't compile with GIF image support])
OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
+OPTION_DEFAULT_ON([libsystemd],[don't compile with libsystemd support])
OPTION_DEFAULT_OFF([cairo],[compile with Cairo drawing (experimental)])
OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support])
esac
fi
+# gl_GCC_VERSION_IFELSE([major], [minor], [run-if-found], [run-if-not-found])
+# ---------------------------------------------------------------------------
+# If $CPP is gcc-MAJOR.MINOR or newer, then run RUN-IF-FOUND.
+# Otherwise, run RUN-IF-NOT-FOUND.
+AC_DEFUN([gl_GCC_VERSION_IFELSE],
+ [AC_PREPROC_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#if ($1) < __GNUC__ || (($1) == __GNUC__ && ($2) <= __GNUC_MINOR__)
+/* ok */
+#else
+# error "your version of gcc is older than $1.$2"
+#endif
+ ]]),
+ ], [$3], [$4])
+ ]
+)
+
AC_ARG_ENABLE([gcc-warnings],
- [AS_HELP_STRING([--enable-gcc-warnings],
- [turn on lots of GCC warnings/errors. This is intended for
- developers, and may generate false alarms when used
- with older or non-GNU development tools.])],
+ [AS_HELP_STRING([--enable-gcc-warnings@<:@=TYPE@:>@],
+ [control generation of GCC warnings. The TYPE 'yes'
+ means to fail if any warnings are issued; 'warn-only'
+ means issue warnings without failing (default for
+ developer builds); 'no' means disable warnings
+ (default for non-developer builds).])],
[case $enableval in
- yes|no) ;;
+ yes|no|warn-only) ;;
*) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
esac
gl_gcc_warnings=$enableval],
- [gl_gcc_warnings=no]
+ [# By default, use 'warn-only' if it looks like the invoker of 'configure'
+ # is a developer as opposed to a builder. This is most likely true
+ # if GCC is recent enough and there is a .git directory or file;
+ # however, if there is also a .tarball-version file it is probably
+ # just a release imported into Git for patch management.
+ gl_gcc_warnings=no
+ if test -e "$srcdir"/.git && test ! -f "$srcdir"/.tarball-version; then
+ gl_GCC_VERSION_IFELSE([5], [3], [gl_gcc_warnings=warn-only])]
+ fi
)
# clang is unduly picky about some things.
# 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
+AS_IF([test $gl_gcc_warnings = no],
+ [
isystem='-I'
- if test "$emacs_cv_clang" = yes
- then
+ AS_IF([test "$emacs_cv_clang" = yes],
+ [
# 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])
gl_WARN_ADD([-Wno-string-plus-int])
gl_WARN_ADD([-Wno-unknown-attributes])
- fi
-else
+ ])
+ ],[
isystem='-isystem '
# This, $nw, is the list of warnings we disable.
# Old toolkits mishandle 'const'.
nw="$nw -Wwrite-strings"
;;
- *)
- gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
- ;;
esac
+ AS_IF([test $gl_gcc_warnings = yes],
+ [gl_WARN_ADD([-Werror], [WERROR_CFLAGS])])
AC_SUBST([WERROR_CFLAGS])
nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings
nw="$nw -Wformat-nonliteral" # we do this a lot
nw="$nw -Wvla" # Emacs uses <vla.h>.
nw="$nw -Wswitch-default" # Too many warnings for now
+ nw="$nw -Wunused-const-variable=2" # lisp.h declares const objects.
nw="$nw -Winline" # OK to ignore 'inline'
nw="$nw -Wstrict-overflow" # OK to optimize assuming that
# signed overflow has undefined behavior
nw="$nw -Wcast-align"
fi
+ # This causes too much noise in the MinGW build
+ if test $opsys = mingw32; then
+ nw="$nw -Wpointer-sign"
+ fi
+
gl_MANYWARN_ALL_GCC([ws])
gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
for w in $ws; do
gl_WARN_ADD([-Wno-unused-value])
fi
- AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
+ # This causes too much noise in the MinGW build
+ if test $opsys = mingw32; then
+ gl_WARN_ADD([-Wno-pointer-sign])
+ fi
+
+ AC_DEFINE([GCC_LINT], [1], [Define to 1 if --enable-gcc-warnings.])
AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
AH_VERBATIM([GNULIB_PORTCHECK_FORTIFY_SOURCE],
[/* Enable compile-time and run-time bounds-checking, and some warnings,
gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
AC_SUBST([GNULIB_WARN_CFLAGS])
-fi
+ ])
edit_cflags="
s,///*,/,g
test $with_compress_install != yes && test -n "$GZIP_PROG" && \
GZIP_PROG=" # $GZIP_PROG # (disabled by configure --without-compress-install)"
+PAXCTL_dumped=
+PAXCTL_notdumped=
if test $opsys = gnu-linux; then
- AC_PATH_PROG(PAXCTL, paxctl,,
- [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin])
- if test "X$PAXCTL" != X; then
- AC_MSG_CHECKING([whether binaries have a PT_PAX_FLAGS header])
- AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
- [if $PAXCTL -v conftest$EXEEXT >/dev/null 2>&1; then AC_MSG_RESULT(yes)
- else AC_MSG_RESULT(no); PAXCTL=""; fi])
- fi
-
if test "${SETFATTR+set}" != set; then
AC_CACHE_CHECK([for setfattr],
[emacs_cv_prog_setfattr],
emacs_cv_prog_setfattr=no
fi])
if test "$emacs_cv_prog_setfattr" = yes; then
+ PAXCTL_notdumped='$(SETFATTR) -n user.pax.flags -v er'
SETFATTR=setfattr
else
SETFATTR=
AC_SUBST([SETFATTR])
fi
fi
+case $opsys,$PAXCTL_notdumped in
+ gnu-linux, | netbsd,)
+ AC_PATH_PROG([PAXCTL], [paxctl], [],
+ [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin])
+ if test -n "$PAXCTL"; then
+ if test "$opsys" = netbsd; then
+ PAXCTL_dumped='$(PAXCTL) +a'
+ PAXCTL_notdumped=$PAXCTL_dumped
+ else
+ AC_MSG_CHECKING([whether binaries have a PT_PAX_FLAGS header])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
+ [if $PAXCTL -v conftest$EXEEXT >/dev/null 2>&1; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PAXCTL=
+ fi])
+ if test -n "$PAXCTL"; then
+ PAXCTL_dumped='$(PAXCTL) -zex'
+ PAXCTL_notdumped='$(PAXCTL) -r'
+ fi
+ fi
+ fi;;
+esac
+AC_SUBST([PAXCTL_dumped])
+AC_SUBST([PAXCTL_notdumped])
## Need makeinfo >= 4.7 (?) to build the manuals.
if test "$MAKEINFO" != "no"; then
## $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=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
AC_SUBST(LIBGNUTLS_LIBS)
AC_SUBST(LIBGNUTLS_CFLAGS)
+HAVE_LIBSYSTEMD=no
+if test "${with_libsystemd}" = "yes" ; then
+ dnl This code has been tested with libsystemd 222 and later.
+ dnl FIXME: Find the earliest version number for which Emacs should work,
+ dnl and change '222' to that number.
+ EMACS_CHECK_MODULES([LIBSYSTEMD], [libsystemd >= 222],
+ [HAVE_LIBSYSTEMD=yes], [HAVE_LIBSYSTEMD=no])
+ if test "${HAVE_LIBSYSTEMD}" = "yes"; then
+ AC_DEFINE(HAVE_LIBSYSTEMD, 1, [Define if using libsystemd.])
+ fi
+fi
+
+AC_SUBST(LIBSYSTEMD_LIBS)
+AC_SUBST(LIBSYSTEMD_CFLAGS)
+
NOTIFY_OBJ=
NOTIFY_SUMMARY=no
MODULES_OBJ=
MODULES_SUFFIX=
if test "${with_modules}" != "no"; then
- if test "$opsys" = "gnu-linux"; then
- LIBMODULES="-ldl"
- MODULES_SUFFIX=".so"
- HAVE_MODULES=yes
- elif test "$opsys" = "cygwin"; then
- MODULES_SUFFIX=".dll"
- HAVE_MODULES=yes
- elif test "$opsys" = "darwin"; then
- MODULES_SUFFIX=".so"
- HAVE_MODULES=yes
- elif test "$opsys" = "mingw32"; then
- MODULES_SUFFIX=".dll"
- HAVE_MODULES=yes
- else
- # BSD system have dlopen in the libc
- AC_CHECK_FUNC(dlopen, [MODULES_SUFFIX=".so"]
- [HAVE_MODULES=yes], [])
- fi
+ case $opsys in
+ gnu|gnu-linux)
+ LIBMODULES="-ldl"
+ MODULES_SUFFIX=".so"
+ HAVE_MODULES=yes
+ ;;
+ cygwin|mingw32)
+ MODULES_SUFFIX=".dll"
+ HAVE_MODULES=yes
+ ;;
+ darwin)
+ MODULES_SUFFIX=".so"
+ HAVE_MODULES=yes
+ ;;
+ *)
+ # BSD systems have dlopen in libc.
+ AC_CHECK_FUNC([dlopen],
+ [MODULES_SUFFIX=".so"
+ HAVE_MODULES=yes])
+ ;;
+ esac
if test "${HAVE_MODULES}" = no; then
AC_MSG_ERROR([Dynamic modules are not supported on your system])
fi
fi
if test $HAVE_XRANDR = yes; then
- SAVE_CFLAGS="$CFLAGS"
- SAVE_LIBS="$LIBS"
- CFLAGS="$XRANDR_CFLAGS $CFLAGS"
- LIBS="$XRANDR_LIBS $LIBS"
- AC_CHECK_FUNCS(XRRGetOutputPrimary XRRGetScreenResourcesCurrent)
- CFLAGS="$SAVE_CFLAGS"
- LIBS="$SAVE_LIBS"
-
AC_DEFINE(HAVE_XRANDR, 1, [Define to 1 if you have the XRandr extension.])
fi
fi
AC_SUBST(LIBXML2_LIBS)
AC_SUBST(LIBXML2_CFLAGS)
-# If netdb.h doesn't declare h_errno, we must declare it by hand.
-# On MinGW, that is provided by nt/inc/sys/socket.h and w32.c.
-if test "${opsys}" = "mingw32"; then
- emacs_cv_netdb_declares_h_errno=yes
-fi
-AC_CACHE_CHECK(whether netdb declares h_errno,
- emacs_cv_netdb_declares_h_errno,
-[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
- [[return h_errno;]])],
- emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
-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
-
# Check for mail-locking functions in a "mail" library. Probably this should
# have the same check as for liblockfile below.
AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
getrusage get_current_dir_name \
lrand48 random rint \
select getpagesize setlocale newlocale \
-getrlimit setrlimit shutdown getaddrinfo \
+getrlimit setrlimit shutdown \
pthread_sigmask strsignal setitimer \
sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
gai_strerror sync \
GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
+the Free Software Foundation, either version 3 of the License, or (at
+your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
for opt in XAW3D XPM JPEG TIFF GIF PNG RSVG CAIRO IMAGEMAGICK SOUND GPM DBUS \
GCONF GSETTINGS NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT \
LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS X_TOOLKIT X11 NS MODULES \
- XWIDGETS; do
+ XWIDGETS LIBSYSTEMD; do
case $opt in
NOTIFY|ACL) eval val=\${${opt}_SUMMARY} ;;
Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}
Does Emacs use -lotf? ${HAVE_LIBOTF}
Does Emacs use -lxft? ${HAVE_XFT}
+ Does Emacs use -lsystemd? ${HAVE_LIBSYSTEMD}
Does Emacs directly use zlib? ${HAVE_ZLIB}
Does Emacs have dynamic modules support? ${HAVE_MODULES}
Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}