summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2022-09-25 16:15:16 -0400
committerStefan Monnier <monnier@iro.umontreal.ca>2022-09-25 16:15:16 -0400
commit650c20f1ca4e07591a727e1cfcc74b3363d15985 (patch)
tree85d11f6437cde22f410c25e0e5f71a3131ebd07d /configure.ac
parent8869332684c2302b5ba1ead4568bbc7ba1c0183e (diff)
parent4b85ae6a24380fb67a3315eaec9233f17a872473 (diff)
downloademacs-650c20f1ca4e07591a727e1cfcc74b3363d15985.tar.gz
Merge 'master' into noverlay
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac3621
1 files changed, 2430 insertions, 1191 deletions
diff --git a/configure.ac b/configure.ac
index 76cf5570b52..8ba52a492bc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@ dnl autoconf
dnl in the directory containing this script.
dnl If you changed any AC_DEFINES, also run autoheader.
dnl
-dnl Copyright (C) 1994-1996, 1999-2017 Free Software Foundation, Inc.
+dnl Copyright (C) 1994-1996, 1999-2022 Free Software Foundation, Inc.
dnl
dnl This file is part of GNU Emacs.
dnl
@@ -21,9 +21,10 @@ dnl
dnl You should have received a copy of the GNU General Public License
dnl along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
-AC_PREREQ(2.65)
+AC_PREREQ([2.65])
dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el.
-AC_INIT(GNU Emacs, 27.0.50, bug-gnu-emacs@gnu.org)
+AC_INIT([GNU Emacs], [29.0.50], [bug-gnu-emacs@gnu.org], [],
+ [https://www.gnu.org/software/emacs/])
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.
@@ -64,13 +65,13 @@ for opt in "$@" CFLAGS CPPFLAGS LDFLAGS; do
optsep=' '
done
-AC_CONFIG_HEADERS(src/config.h:src/config.in)
-AC_CONFIG_SRCDIR(src/lisp.h)
-AC_CONFIG_AUX_DIR(build-aux)
-AC_CONFIG_MACRO_DIR(m4)
+AC_CONFIG_HEADERS([src/config.h:src/config.in])
+AC_CONFIG_SRCDIR([src/lisp.h])
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_MACRO_DIR([m4])
xcsdkdir=
-AC_CHECK_PROGS(XCRUN, [xcrun])
+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
@@ -187,7 +188,8 @@ dnl It is important that variables on the RHS not be expanded here,
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'
+lispdirrel='${version}/lisp'
+lispdir='${datadir}/emacs/'${lispdirrel}
standardlisppath='${lispdir}'
locallisppath='${datadir}/emacs/${version}/site-lisp:'\
'${datadir}/emacs/site-lisp'
@@ -198,7 +200,7 @@ etcdocdir='${datadir}/emacs/${version}/etc'
gamedir='${localstatedir}/games/emacs'
dnl Special option to disable the most of other options.
-AC_ARG_WITH(all,
+AC_ARG_WITH([all],
[AS_HELP_STRING([--without-all],
[omit almost all features and build
small executable with minimal dependencies])],
@@ -219,6 +221,21 @@ AC_DEFUN([OPTION_DEFAULT_OFF], [dnl
m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=no])dnl
])dnl
+dnl OPTION_DEFAULT_IFAVAILABLE(NAME, HELP-STRING)
+dnl Create a new --with option that defaults to 'ifavailable'.
+dnl NAME is the base name of the option. The shell variable with_NAME
+dnl will be set to either the user's value (if the option is
+dnl specified; 'yes' for a plain --with-NAME) or to 'ifavailable' (if the
+dnl option is not specified). Note that the shell variable name is
+dnl constructed as autoconf does, by replacing non-alphanumeric
+dnl characters with "_".
+dnl HELP-STRING is the help text for the option.
+AC_DEFUN([OPTION_DEFAULT_IFAVAILABLE], [dnl
+ AC_ARG_WITH([$1],[AS_HELP_STRING([--with-$1],[$2])],[],[dnl
+ m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=ifavailable])dnl
+])dnl
+
+
dnl OPTION_DEFAULT_ON(NAME, HELP-STRING)
dnl Create a new --with option that defaults to $with_features.
dnl NAME is the base name of the option. The shell variable with_NAME
@@ -232,9 +249,9 @@ AC_DEFUN([OPTION_DEFAULT_ON], [dnl
m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=$with_features])dnl
])dnl
-# FIXME: The default options '--without-mailutils --with-pop' result
-# in a movemail implementation that supports only unencrypted POP3
-# connections. Encrypted connections should be the default.
+# For retrieving mail, unencrypted network connections are the default
+# only on native MS-Windows platforms. (FIXME: These platforms should
+# also be secure by default.)
AC_ARG_WITH([mailutils],
[AS_HELP_STRING([--with-mailutils],
@@ -251,45 +268,56 @@ if test "$with_mailutils" = no; then
fi
AC_SUBST([with_mailutils])
-OPTION_DEFAULT_ON([pop],
- [don't support POP mail retrieval with movemail (--without-pop or
- --with-mailutils is recommended, as movemail POP is insecure)])
+AC_ARG_WITH([pop],
+ [AS_HELP_STRING([--with-pop],
+ [Support POP mail retrieval if Emacs movemail is used (not recommended,
+ as Emacs movemail POP is insecure). This is the default only on
+ native MS-Windows.])],
+ [],
+ [case $host in
+ *-mingw*) with_pop=yes;;
+ *) with_pop=no-by-default;;
+ esac])
if test "$with_pop" = yes; then
- AC_DEFINE(MAIL_USE_POP)
+ AC_DEFINE([MAIL_USE_POP])
fi
-AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl
+AH_TEMPLATE([MAIL_USE_POP], [Define to support POP mail retrieval.])dnl
OPTION_DEFAULT_OFF([kerberos],[support Kerberos-authenticated POP])
if test "$with_kerberos" != no; then
- AC_DEFINE(KERBEROS)
+ AC_DEFINE([KERBEROS])
fi
-AH_TEMPLATE(KERBEROS,
+AH_TEMPLATE([KERBEROS],
[Define to support Kerberos-authenticated POP mail retrieval.])dnl
OPTION_DEFAULT_OFF([kerberos5],[support Kerberos version 5 authenticated POP])
if test "${with_kerberos5}" != no; then
if test "${with_kerberos}" = no; then
with_kerberos=yes
- AC_DEFINE(KERBEROS)
+ AC_DEFINE([KERBEROS])
fi
- AC_DEFINE(KERBEROS5, 1, [Define to use Kerberos 5 instead of Kerberos 4.])
+ AC_DEFINE([KERBEROS5], [1],
+ [Define to use Kerberos 5 instead of Kerberos 4.])
fi
OPTION_DEFAULT_OFF([hesiod],[support Hesiod to get the POP server host])
dnl FIXME hesiod support may not be present, so it seems like an error
dnl to define, or at least use, this unconditionally.
if test "$with_hesiod" != no; then
- AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])
+ AC_DEFINE([HESIOD], [1],
+ [Define to support using a Hesiod database to find the POP server.])
fi
OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after reading])
if test "$with_mail_unlink" != no; then
- AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail spool after reading.])
+ AC_DEFINE([MAIL_UNLINK_SPOOL], [1],
+ [Define to unlink, rather than empty, mail spool after reading.])
fi
AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
[string giving default POP mail host])],
- AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.]))
+ 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, alsa, oss, bsd-ossaudio, no;
@@ -304,6 +332,85 @@ this option's value should be 'yes', 'no', 'alsa', 'oss', or 'bsd-ossaudio'.])
],
[with_sound=$with_features])
+AC_ARG_WITH([pdumper],
+ AS_HELP_STRING(
+ [--with-pdumper=VALUE],
+ [enable pdumper support unconditionally
+ ('yes', 'no', or 'auto': default 'auto')]),
+ [ case "${withval}" in
+ yes|no|auto) val=$withval ;;
+ *) AC_MSG_ERROR(
+ ['--with-pdumper=$withval' is invalid;
+this option's value should be 'yes' or 'no'.]) ;;
+ esac
+ with_pdumper=$val
+ ],
+ [with_pdumper=auto])
+
+AC_ARG_WITH([unexec],
+ AS_HELP_STRING(
+ [--with-unexec=VALUE],
+ [enable unexec support unconditionally
+ ('yes', 'no', or 'auto': default 'auto')]),
+ [ case "${withval}" in
+ yes|no|auto) val=$withval ;;
+ *) AC_MSG_ERROR(
+ ['--with-unexec=$withval' is invalid;
+this option's value should be 'yes' or 'no'.]) ;;
+ esac
+ with_unexec=$val
+ ],
+ [with_unexec=auto])
+
+AC_ARG_WITH([dumping],[AS_HELP_STRING([--with-dumping=VALUE],
+ [kind of dumping to use for initial Emacs build
+(VALUE one of: pdumper, unexec, none; default pdumper)])],
+ [ case "${withval}" in
+ pdumper|unexec|none) val=$withval ;;
+ *) AC_MSG_ERROR(['--with-dumping=$withval is invalid;
+this option's value should be 'pdumper', 'unexec', or 'none'.])
+ ;;
+ esac
+ with_dumping=$val
+ ],
+ [with_dumping=pdumper])
+
+if test "$with_pdumper" = "auto"; then
+ if test "$with_dumping" = "pdumper"; then
+ with_pdumper=yes
+ else
+ with_pdumper=no
+ fi
+fi
+
+if test "$with_unexec" = "auto"; then
+ if test "$with_dumping" = "unexec"; then
+ with_unexec=yes
+ else
+ with_unexec=no
+ fi
+fi
+
+if test "$with_dumping" = "pdumper" && test "$with_pdumper" = "no"; then
+ AC_MSG_ERROR(['--with-dumping=pdumper' requires pdumper support])
+fi
+
+if test "$with_dumping" = "unexec" && test "$with_unexec" = "no"; then
+ AC_MSG_ERROR(['--with-dumping=unexec' requires unexec support])
+fi
+
+if test "$with_pdumper" = "yes"; then
+ AC_DEFINE([HAVE_PDUMPER], [1],
+ [Define to build with portable dumper support])
+ HAVE_PDUMPER=yes
+else
+ HAVE_PDUMPER=no
+fi
+AC_SUBST([HAVE_PDUMPER])
+
+DUMPING=$with_dumping
+AC_SUBST([DUMPING])
+
dnl FIXME currently it is not the last.
dnl This should be the last --with option, because --with-x is
dnl added later on when we find the file name of X, and it's best to
@@ -329,9 +436,13 @@ this option's value should be 'yes', 'no', 'lucid', 'athena', 'motif', 'gtk',
with_x_toolkit=$val
])
-OPTION_DEFAULT_OFF([wide-int], [prefer wide Emacs integers (typically 62-bit); allows buffer and string size up to 2GB on 32-bit hosts, at the cost of 10% to 30% slowdown of Lisp interpreter and larger memory footprint])
+OPTION_DEFAULT_OFF([wide-int],
+ [prefer wide Emacs integers (typically 62-bit);
+ on 32-bit hosts, this allows buffer and string size up to 2GB,
+ at the cost of 10% to 30% slowdown of Lisp interpreter
+ and larger memory footprint])
if test "$with_wide_int" = yes; then
- AC_DEFINE([WIDE_EMACS_INT], 1, [Use long long for EMACS_INT if available.])
+ 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
@@ -343,34 +454,50 @@ OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support])
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([webp],[don't compile with WebP image support])
+OPTION_DEFAULT_ON([sqlite3],[don't compile with sqlite3 support])
OPTION_DEFAULT_ON([lcms2],[don't compile with Little CMS support])
OPTION_DEFAULT_ON([libsystemd],[don't compile with libsystemd support])
-OPTION_DEFAULT_OFF([cairo],[compile with Cairo drawing (experimental)])
+OPTION_DEFAULT_ON([cairo],[don't compile with Cairo drawing])
OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
-OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support])
+OPTION_DEFAULT_OFF([imagemagick],[compile with ImageMagick image support])
+OPTION_DEFAULT_ON([native-image-api], [don't use native image APIs (GDI+ on Windows)])
+OPTION_DEFAULT_IFAVAILABLE([json], [compile with native JSON support])
OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
+OPTION_DEFAULT_ON([harfbuzz],[don't use HarfBuzz for text shaping])
OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
-OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
+OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif/Xaw3d/GTK toolkit scroll bars])
OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
-OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
+OPTION_DEFAULT_ON([xim],[at runtime, default X11 XIM to off])
+OPTION_DEFAULT_ON([xdbe],[don't use X11 double buffering support])
AC_ARG_WITH([ns],[AS_HELP_STRING([--with-ns],
[use Nextstep (macOS Cocoa or GNUstep) windowing system.
On by default on macOS.])],[],[with_ns=maybe])
OPTION_DEFAULT_OFF([w32], [use native MS Windows GUI in a Cygwin build])
+OPTION_DEFAULT_OFF([pgtk], [use GTK to support window systems other than X])
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])
AC_ARG_WITH([gconf],[AS_HELP_STRING([--with-gconf],
-[compile with Gconf support (Gsettings replaces this)])],[],[with_gconf=maybe])
+[compile with Gconf support (Gsettings replaces this)])],[],
+[if test $with_features = yes; then
+with_gconf=maybe
+else
+with_gconf=no
+fi])
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])
-OPTION_DEFAULT_OFF([modules],[compile with dynamic modules support])
+OPTION_DEFAULT_ON([modules],[don't compile with dynamic modules support])
OPTION_DEFAULT_ON([threads],[don't compile with elisp threading support])
+OPTION_DEFAULT_OFF([native-compilation],[compile with Emacs Lisp native compiler support])
+OPTION_DEFAULT_OFF([cygwin32-native-compilation],[use native compilation on 32-bit Cygwin])
+OPTION_DEFAULT_ON([xinput2],[don't use version 2 of the X Input Extension for input])
+OPTION_DEFAULT_OFF([small-ja-dic],[generate a smaller-size Japanese dictionary])
AC_ARG_WITH([file-notification],[AS_HELP_STRING([--with-file-notification=LIB],
[use a file notification library (LIB one of: yes, inotify, kqueue, gfile, w32, no)])],
@@ -392,15 +519,16 @@ otherwise for the first of 'inotify', 'kqueue' or 'gfile' that is usable.])
[with_file_notification=$with_features])
OPTION_DEFAULT_OFF([xwidgets],
- [enable use of some gtk widgets in Emacs buffers (requires gtk3)])
+ [enable use of xwidgets in Emacs buffers (requires gtk3 or macOS Cocoa)])
-## For the times when you want to build Emacs but don't have
-## a suitable makeinfo, and can live without the manuals.
-dnl https://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
-OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
+OPTION_DEFAULT_OFF([be-app],
+ [enable use of Haiku's Application Kit as a window system])
+
+OPTION_DEFAULT_OFF([be-cairo],
+ [enable use of cairo under Haiku's Application Kit])
## Makefile.in needs the cache file name.
-AC_SUBST(cache_file)
+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.
@@ -408,7 +536,7 @@ OPTION_DEFAULT_ON([compress-install],
[don't compress some files (.el, .info, etc.) when installing. Equivalent to:
make GZIP_PROG= install])
-AC_ARG_WITH(gameuser,dnl
+AC_ARG_WITH([gameuser],
[AS_HELP_STRING([--with-gameuser=USER_OR_GROUP],
[user for shared game score files.
An argument prefixed by ':' specifies a group instead.])])
@@ -421,7 +549,7 @@ case ${with_gameuser} in
*) gameuser=${with_gameuser} ;;
esac
-AC_ARG_WITH([gnustep-conf],dnl
+AC_ARG_WITH([gnustep-conf],
[AS_HELP_STRING([--with-gnustep-conf=FILENAME],
[name of GNUstep configuration file to use on systems where the command
'gnustep-config' does not work; default $GNUSTEP_CONFIG_FILE, or
@@ -431,99 +559,98 @@ test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
test "X$GNUSTEP_CONFIG_FILE" = "X" && \
GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf
-AC_ARG_ENABLE(ns-self-contained,
+AC_ARG_ENABLE([ns-self-contained],
[AS_HELP_STRING([--disable-ns-self-contained],
[disable self contained build under NeXTstep])],
- EN_NS_SELF_CONTAINED=$enableval,
- EN_NS_SELF_CONTAINED=yes)
+ [EN_NS_SELF_CONTAINED=$enableval],
+ [EN_NS_SELF_CONTAINED=yes])
locallisppathset=no
-AC_ARG_ENABLE(locallisppath,
+AC_ARG_ENABLE([locallisppath],
[AS_HELP_STRING([--enable-locallisppath=PATH],
[directories Emacs should search for lisp files specific
to this site])],
-if test "${enableval}" = "no"; then
+[if test "${enableval}" = "no"; then
locallisppath=
elif test "${enableval}" != "yes"; then
locallisppath=${enableval} locallisppathset=yes
-fi)
+fi])
-AC_ARG_ENABLE(checking,
+AC_ARG_ENABLE([checking],
[AS_HELP_STRING([--enable-checking@<:@=LIST@:>@],
- [enable expensive run-time checks. With LIST,
+ [enable expensive checks. With LIST,
enable only specific categories of checks.
Categories are: all,yes,no.
Flags are: stringbytes, stringoverrun, stringfreelist,
- xmallocoverrun, conslist, glyphs])],
+ structs, glyphs])],
[ac_checking_flags="${enableval}"],[])
IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
+CHECK_STRUCTS=false
for check in $ac_checking_flags
do
case $check in
# these set all the flags to specific states
yes) ac_enable_checking=1 ;;
no) ac_enable_checking= ;
+ CHECK_STRUCTS=false
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 ;
+ CHECK_STRUCTS=true
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 ;;
+ structs) CHECK_STRUCTS=true ;;
glyphs) ac_glyphs_debug=1 ;;
- *) AC_MSG_ERROR(unknown check category $check) ;;
+ *) AC_MSG_ERROR([unknown check category $check]) ;;
esac
done
IFS="$ac_save_IFS"
if test x$ac_enable_checking != x ; then
- AC_DEFINE(ENABLE_CHECKING, 1,
+ AC_DEFINE([ENABLE_CHECKING], [1],
[Define to 1 if expensive run-time data type and consistency checks are enabled.])
fi
+if $CHECK_STRUCTS; then
+ AC_DEFINE([CHECK_STRUCTS], [1],
+ [Define this to check whether someone updated the portable dumper
+ code after changing the layout of a structure that it uses.
+ If you change one of these structures, check that the pdumper.c
+ code is still valid, and update the pertinent hash in pdumper.c
+ by manually copying the hash from the newly-generated dmpstruct.h.])
+fi
+AC_SUBST([CHECK_STRUCTS])
if test x$ac_gc_check_stringbytes != x ; then
- AC_DEFINE(GC_CHECK_STRING_BYTES, 1,
+ 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,
+ 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,
+ 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,
+ AC_DEFINE([GLYPH_DEBUG], [1],
[Define this to enable glyphs debugging code.])
fi
dnl The name of this option is unfortunate. It predates, and has no
dnl relation to, the "sampling-based elisp profiler" added in 24.3.
dnl Actually, it stops it working.
-dnl https://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00393.html
-AC_ARG_ENABLE(profiling,
+dnl https://lists.gnu.org/r/emacs-devel/2012-11/msg00393.html
+AC_ARG_ENABLE([profiling],
[AS_HELP_STRING([--enable-profiling],
[build emacs with low-level, gprof profiling support.
Mainly useful for debugging Emacs itself. May not work on
@@ -534,15 +661,15 @@ if test x$ac_enable_profiling != x ; then
else
PROFILING_CFLAGS=
fi
-AC_SUBST(PROFILING_CFLAGS)
+AC_SUBST([PROFILING_CFLAGS])
-AC_ARG_ENABLE(autodepend,
+AC_ARG_ENABLE([autodepend],
[AS_HELP_STRING([--enable-autodepend],
[automatically generate dependencies to .h-files.
Requires gcc, enabled if found.])],
[ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
-AC_ARG_ENABLE(gtk-deprecation-warnings,
+AC_ARG_ENABLE([gtk-deprecation-warnings],
[AS_HELP_STRING([--enable-gtk-deprecation-warnings],
[Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])],
[ac_enable_gtk_deprecation_warnings="${enableval}"],[])
@@ -612,7 +739,7 @@ case "${canonical}" in
*-apple-darwin* )
case "${canonical}" in
*-apple-darwin[0-9].*) unported=yes ;;
- i[3456]86-* | x86_64-* ) ;;
+ i[3456]86-* | x86_64-* | arm-* | aarch64-* ) ;;
* ) unported=yes ;;
esac
opsys=darwin
@@ -652,44 +779,32 @@ case "${canonical}" in
opsys=aix4-2
;;
- ## Suns
- *-sun-solaris* \
- | i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
- | x86_64-*-solaris2* | x86_64-*-sunos5*)
+ ## Solaris
+ *-*-solaris* | *-*-sunos*)
case "${canonical}" in
i[3456]86-*-* ) ;;
amd64-*-*|x86_64-*-*) ;;
sparc* ) ;;
* ) unported=yes ;;
esac
- case "${canonical}" in
- *-sunos5.[1-9][0-9]* | *-solaris2.[1-9][0-9]* )
- 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
- ;;
- esac
+ opsys=solaris
## Watch out for a compiler that we know will not work.
- case "${canonical}" in
- *-solaris* | *-sunos5* )
- if [ "x$CC" = x/usr/ucb/cc ]; then
- ## /usr/ucb/cc doesn't work;
- ## we should find some other compiler that does work.
- unset CC
- fi
- ;;
- *) ;;
- esac
+ if [ "$CC" = /usr/ucb/cc ]; then
+ ## /usr/ucb/cc doesn't work;
+ ## we should find some other compiler that does work.
+ unset CC
+ fi
+ ;;
+
+ ## QNX Neutrino
+ *-nto-qnx* )
+ opsys=qnxnto
+ test -z "$CC" && CC=qcc
+ LDFLAGS="-N2M $LDFLAGS"
+ ;;
+
+ *-haiku )
+ opsys=haiku
;;
## Intel 386 machines where we don't care about the manufacturer.
@@ -757,7 +872,7 @@ 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
- AC_CHECK_PROGS(AR, [ar "$XCRUN ar"])
+ AC_CHECK_PROGS([AR], [ar "$XCRUN ar"])
test -n "$AR" && export AR
fi
@@ -781,15 +896,10 @@ for func in $ac_func_list; do
test $func = pthread_sigmask || AS_VAR_APPEND([funcs], [" $func"])
done
ac_func_list=$funcs
-# Use the system putenv even if it lacks GNU features, as we don't need them,
-# and the gnulib replacement runs afoul of a FreeBSD 10.1 bug; see Bug#19874.
-AC_CHECK_FUNCS_ONCE([putenv])
-AC_DEFUN([gl_FUNC_PUTENV],
- [test "$ac_cv_func_putenv" = yes || REPLACE_PUTENV=1])
# Emacs does not use the wchar or wctype-h modules.
AC_DEFUN([gt_TYPE_WINT_T],
- [GNULIB_OVERRIDES_WINT_T=0
- AC_SUBST([GNULIB_OVERRIDES_WINT_T])])
+ [GNULIBHEADERS_OVERRIDE_WINT_T=0
+ AC_SUBST([GNULIBHEADERS_OVERRIDE_WINT_T])])
# Initialize gnulib right after choosing the compiler.
dnl Amongst other things, this sets AR and ARFLAGS.
@@ -818,7 +928,9 @@ if test "$ac_test_CFLAGS" != set; then
if test $emacs_cv_prog_cc_g3 != yes; then
CFLAGS=$emacs_save_CFLAGS
fi
- if test $opsys = mingw32; then
+ # Haiku also needs -gdwarf-2 because its GDB is too old
+ # to understand newer formats.
+ if test $opsys = mingw32 || test $opsys = haiku; then
CFLAGS="$CFLAGS -gdwarf-2"
fi
fi
@@ -860,6 +972,17 @@ 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])])
+
AC_ARG_ENABLE([gcc-warnings],
[AS_HELP_STRING([--enable-gcc-warnings@<:@=TYPE@:>@],
[control generation of GCC warnings. The TYPE 'yes'
@@ -879,30 +1002,22 @@ AC_ARG_ENABLE([gcc-warnings],
# 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])
+ # Clang typically identifies itself as GCC 4.2 or something similar
+ # even if it is recent enough to accept the warnings we enable.
+ AS_IF([test "$emacs_cv_clang" = yes],
+ [gl_gcc_warnings=warn-only],
+ [gl_GCC_VERSION_IFELSE([5], [3], [gl_gcc_warnings=warn-only])])
fi])
AC_ARG_ENABLE([check-lisp-object-type],
[AS_HELP_STRING([--enable-check-lisp-object-type],
- [Enable compile-time checks for the Lisp_Object data type,
- which can catch some bugs during development.
- The default is "no" if --enable-gcc-warnings is "no".])])
-if test "${enable_check_lisp_object_type-$gl_gcc_warnings}" != "no"; then
- AC_DEFINE([CHECK_LISP_OBJECT_TYPE], 1,
+ [Enable compile time checks for the Lisp_Object data type,
+ which can catch some bugs during development.])])
+if test "$enable_check_lisp_object_type" = yes; then
+ AC_DEFINE([CHECK_LISP_OBJECT_TYPE], [1],
[Define to enable compile-time checks for the Lisp_Object data type.])
fi
-# 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])])
-
WERROR_CFLAGS=
# When compiling with GCC, prefer -isystem to -I when including system
# include files, to avoid generating useless diagnostics for the files.
@@ -916,6 +1031,7 @@ AS_IF([test $gl_gcc_warnings = no],
gl_WARN_ADD([-Wno-pointer-sign])
gl_WARN_ADD([-Wno-string-plus-int])
gl_WARN_ADD([-Wno-unknown-attributes])
+ gl_WARN_ADD([-Wno-unknown-pragmas])
])
],[
isystem='-isystem '
@@ -930,15 +1046,21 @@ AS_IF([test $gl_gcc_warnings = no],
;;
esac
AS_IF([test $gl_gcc_warnings = yes],
- [WERROR_CFLAGS=-Werror])
-
+ [WERROR_CFLAGS=-Werror],
+ [# Use -fanalyzer and related options only if --enable-gcc-warnings,
+ # as they slow GCC considerably.
+ nw="$nw -fanalyzer -Wno-analyzer-double-free -Wno-analyzer-malloc-leak"
+ nw="$nw -Wno-analyzer-null-dereference -Wno-analyzer-use-after-free"
+ # Use -Wsuggest-attribute=malloc only if --enable-gcc-warnings,
+ # as it doesn't flag code that is wrong in any way.
+ nw="$nw -Wsuggest-attribute=malloc"])
+
+ nw="$nw -Wcast-align=strict" # Emacs is tricky with pointers.
nw="$nw -Wduplicated-branches" # Too many false alarms
nw="$nw -Wformat-overflow=2" # False alarms due to GCC bug 80776
nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings
nw="$nw -Woverlength-strings" # Not a problem these days
- 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
@@ -948,12 +1070,15 @@ AS_IF([test $gl_gcc_warnings = no],
nw="$nw -Wbad-function-cast" # These casts are no worse than others.
# Emacs doesn't care about shadowing; see
- # <https://lists.gnu.org/archive/html/emacs-diffs/2011-11/msg00265.html>.
+ # <https://lists.gnu.org/r/emacs-diffs/2011-11/msg00265.html>.
nw="$nw -Wshadow"
# Emacs's use of alloca inhibits protecting the stack.
nw="$nw -Wstack-protector"
+ # Emacs's use of __attribute__ ((cold)) causes false alarms with this option.
+ nw="$nw -Wsuggest-attribute=cold"
+
# Emacs's use of partly-const functions such as Fgnutls_available_p
# make this option problematic.
nw="$nw -Wsuggest-attribute=const"
@@ -962,26 +1087,16 @@ AS_IF([test $gl_gcc_warnings = no],
# option problematic.
nw="$nw -Wsuggest-attribute=pure"
- # This part is merely for shortening the command line,
- # since -Wall implies -Wswitch.
- nw="$nw -Wswitch"
-
- # 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 -Woverride-init"
- nw="$nw -Wtype-limits"
- nw="$nw -Wunused-parameter"
+ # Emacs doesn't need this paranoia.
+ nw="$nw -Wbidi-chars=any,ucn"
if test "$emacs_cv_clang" = yes; then
- nw="$nw -Wcast-align"
nw="$nw -Wdouble-promotion"
- nw="$nw -Wmissing-braces"
+ nm="$nm -Wunknown-pragmas"
fi
- # These cause too much noise in the MinGW build
+ # This causes too much noise in the MinGW build.
if test $opsys = mingw32; then
- nw="$nw -Wpointer-sign"
nw="$nw -Wsuggest-attribute=format"
fi
@@ -997,10 +1112,14 @@ AS_IF([test $gl_gcc_warnings = no],
gl_WARN_ADD([-Wno-type-limits]) # Too many warnings for now
gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
gl_WARN_ADD([-Wno-format-nonliteral])
+ gl_WARN_ADD([-Wno-bidi-chars])
- # clang is unduly picky about braces.
+ # clang is unduly picky about some things.
if test "$emacs_cv_clang" = yes; then
gl_WARN_ADD([-Wno-missing-braces])
+ gl_WARN_ADD([-Wno-null-pointer-arithmetic])
+ gl_WARN_ADD([-Wno-implicit-const-int-float-conversion])
+ gl_WARN_ADD([-Wno-int-in-bool-context])
fi
# This causes too much noise in the MinGW build
@@ -1009,15 +1128,16 @@ AS_IF([test $gl_gcc_warnings = no],
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,
- without upsetting glibc 2.15+. */
- #if (defined GNULIB_PORTCHECK && !defined _FORTIFY_SOURCE \
- && defined __OPTIMIZE__ && __OPTIMIZE__)
- # define _FORTIFY_SOURCE 2
- #endif
- ])
+ AS_IF([test $gl_gcc_warnings = yes],
+ [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,
+ without upsetting glibc 2.15+. */
+ #if (defined GNULIB_PORTCHECK && !defined _FORTIFY_SOURCE \
+ && defined __OPTIMIZE__ && __OPTIMIZE__)
+ # define _FORTIFY_SOURCE 2
+ #endif
+ ])])
])
# clang is picky about these regardless of whether
@@ -1043,7 +1163,7 @@ edit_cflags="
s/^ //
"
-AC_ARG_ENABLE(link-time-optimization,
+AC_ARG_ENABLE([link-time-optimization],
[AS_HELP_STRING([--enable-link-time-optimization],
[build with link-time optimization
(experimental; see INSTALL)])],
@@ -1098,14 +1218,13 @@ fi)
dnl Automake replacements.
AC_DEFUN([AM_CONDITIONAL],
- [$2 && $1=1 || $1=
- AC_SUBST([$1])])
+ [$2 && $1_CONDITION=1 || $1_CONDITION=
+ AC_SUBST([$1_CONDITION])])
+AC_DEFUN([AM_COND_IF],
+ [AS_IF([test "$$1_CONDITION"], [$2], [$3])])
dnl Prefer silent make output. For verbose output, use
dnl 'configure --disable-silent-rules' or 'make V=1' .
-dnl This code is adapted from Automake.
-dnl Although it can be simplified now that GNU Make is assumed,
-dnl the simplification hasn't been done yet.
AC_ARG_ENABLE([silent-rules],
[AS_HELP_STRING(
[--disable-silent-rules],
@@ -1115,11 +1234,8 @@ if test "$enable_silent_rules" = no; then
else
AM_DEFAULT_VERBOSITY=0
fi
-AM_V='$(V)'
-AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-AC_SUBST([AM_V])
-AC_SUBST([AM_DEFAULT_V])
AC_SUBST([AM_DEFAULT_VERBOSITY])
+AC_CONFIG_FILES([src/verbose.mk])
dnl Some other nice autoconf tests.
AC_PROG_INSTALL
@@ -1145,32 +1261,26 @@ emacs_cv_ln_s_fileonly='cp -p'
dnl On MinGW, ensure we will call the MSYS /bin/ln.exe, not some
dnl random program in the current directory.
if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- if test "$opsys" = "mingw32"; then
- emacs_cv_ln_s_fileonly='/bin/ln -s'
- else
- emacs_cv_ln_s_fileonly='ln -s'
- fi
+ if test "$opsys" = "mingw32"; then
+ emacs_cv_ln_s_fileonly=/bin/ln
+ elif ln -s conf$$.file conf$$ 2>/dev/null; then
+ emacs_cv_ln_s_fileonly='ln -s'
elif ln conf$$.file conf$$ 2>/dev/null; then
- if test "$opsys" = "mingw32"; then
- emacs_cv_ln_s_fileonly=/bin/ln
- else
- emacs_cv_ln_s_fileonly=ln
- fi
+ emacs_cv_ln_s_fileonly=ln
fi
fi
rm -f conf$$ conf$$.file])
LN_S_FILEONLY=$emacs_cv_ln_s_fileonly
-AC_SUBST(LN_S_FILEONLY)
+AC_SUBST([LN_S_FILEONLY])
dnl AC_PROG_LN_S sets LN_S to 'cp -pR' for MinGW, on the premise that 'ln'
dnl doesn't support links to directories, as in "ln file dir". But that
dnl use is non-portable, and OTOH MinGW wants to use hard links for Emacs
dnl executables at "make install" time.
-dnl See https://lists.gnu.org/archive/html/emacs-devel/2013-04/msg00475.html
+dnl See https://lists.gnu.org/r/emacs-devel/2013-04/msg00475.html
dnl for more details.
if test "$opsys" = "mingw32"; then
LN_S="/bin/ln"
@@ -1182,17 +1292,21 @@ 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)
+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)
+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.
-AC_PATH_PROG(GZIP_PROG, gzip)
+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 "$with_dumping" = "unexec" && test "$opsys" = "nacl"; then
+ AC_MSG_ERROR([nacl is not compatible with --with-dumping=unexec])
+fi
+
AC_CACHE_CHECK([for 'find' args to delete a file],
[emacs_cv_find_delete],
[if touch conftest.tmp && find conftest.tmp -delete 2>/dev/null &&
@@ -1205,7 +1319,7 @@ AC_SUBST([FIND_DELETE])
PAXCTL_dumped=
PAXCTL_notdumped=
-if test $opsys = gnu-linux; then
+if test $with_unexec = yes && test $opsys = gnu-linux; then
if test "${SETFATTR+set}" != set; then
AC_CACHE_CHECK([for setfattr],
[emacs_cv_prog_setfattr],
@@ -1221,47 +1335,58 @@ if test $opsys = gnu-linux; then
else
SETFATTR=
fi
- rm -f conftest.tmp
- AC_SUBST([SETFATTR])
- fi
-fi
-case $opsys,$PAXCTL_notdumped,$emacs_uname_r in
- gnu-linux,,* | netbsd,,[0-7].*)
- 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
+ case $opsys,$PAXCTL_notdumped,$emacs_uname_r in
+ gnu-linux,,* | netbsd,,[0-7].*)
+ 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
- fi;;
-esac
+ fi;;
+ esac
+fi
AC_SUBST([PAXCTL_dumped])
AC_SUBST([PAXCTL_notdumped])
+AC_SUBST([SETFATTR])
-## Require makeinfo >= 4.13 (last of the 4.x series) to build the manuals.
-if test "${MAKEINFO:=makeinfo}" != "no"; then
- case `($MAKEINFO --version) 2>/dev/null` in
- *' (GNU texinfo) '4.1[[3-9]]* | \
- *' (GNU texinfo) '[[5-9]]* | \
- *' (GNU texinfo) '[[1-9][0-9]]* ) ;;
- *) MAKEINFO=no;;
- esac
+# Makeinfo on macOS is ancient, check whether there is a more recent
+# version installed by Homebrew.
+AC_CHECK_PROGS([BREW], [brew])
+if test -n "$BREW"; then
+ AC_PATH_PROG([MAKEINFO], [makeinfo], [],
+ [`$BREW --prefix texinfo 2>/dev/null`/bin$PATH_SEPARATOR$PATH])
fi
+# Check MacPorts on macOS.
+if test $opsys = darwin; then
+ AC_PATH_PROG([HAVE_MACPORTS], [port])
+fi
+
+## Require makeinfo >= 4.13 (last of the 4.x series) to build the manuals.
+: ${MAKEINFO:=makeinfo}
+case `($MAKEINFO --version) 2>/dev/null` in
+ *' (GNU texinfo) '4.1[[3-9]]* | \
+ *' (GNU texinfo) '[[5-9]]* | \
+ *' (GNU texinfo) '[[1-9][0-9]]* ) ;;
+ *) MAKEINFO=no;;
+esac
+
## Makeinfo is unusual. For a released Emacs, the manuals are
## pre-built, and not deleted by the normal clean rules. makeinfo is
## therefore in the category of "special tools" not normally required, which
@@ -1271,28 +1396,26 @@ fi
## should test for it as it does for any other build requirement.
## We use the presence of $srcdir/info/emacs to distinguish a release,
## with pre-built manuals, from a repository checkout.
-HAVE_MAKEINFO=yes
-
if test "$MAKEINFO" = "no"; then
MAKEINFO=makeinfo
- if test "x${with_makeinfo}" = "xno"; then
- HAVE_MAKEINFO=no
- elif test ! -e "$srcdir/info/emacs" && test ! -e "$srcdir/info/emacs.info"; then
+ if test ! -e "$srcdir/info/emacs" && test ! -e "$srcdir/info/emacs.info"; then
AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.13, and your
source tree does not seem to have pre-built manuals in the 'info' directory.
-Either install a suitable version of makeinfo, or re-run configure
-with the '--without-makeinfo' option to build without the manuals.] )
+Please install a suitable version of makeinfo.] )
+ else
+ AC_MSG_WARN( [You do not seem to have makeinfo >= 4.13.
+You will not be able to rebuild the manuals if you delete them or change
+their sources.] )
fi
fi
AC_SUBST([MAKEINFO])
-AC_SUBST(HAVE_MAKEINFO)
if test $opsys = mingw32; then
DOCMISC_W32=efaq-w32
else
DOCMISC_W32=
fi
-AC_SUBST(DOCMISC_W32)
+AC_SUBST([DOCMISC_W32])
dnl Add our options to ac_link now, after it is set up.
@@ -1304,37 +1427,35 @@ else
ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
fi
-dnl We need -znocombreloc if we're using a relatively recent GNU ld.
-dnl If we can link with the flag, it shouldn't do any harm anyhow.
-dnl Treat GCC specially since it just gives a non-fatal 'unrecognized option'
+dnl On some platforms using GNU ld, linking temacs needs -znocombreloc.
+dnl Although this has something to do with dumping, the details are unknown.
+dnl If the flag is used but not needed,
+dnl Emacs should still work (albeit a bit more slowly),
+dnl so use the flag everywhere that it is supported.
+dnl When testing whether the flag works, treat GCC specially
+dnl since it just gives a non-fatal 'unrecognized option'
dnl if not built to support GNU ld.
-
-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 https://lists.gnu.org/archive/html/emacs-pretest-bug/2004-03/msg00170.html
-if test x$GCC = xyes; then
+if test "$GCC" = yes; then
LDFLAGS_NOCOMBRELOC="-Wl,-znocombreloc"
else
LDFLAGS_NOCOMBRELOC="-znocombreloc"
fi
AC_CACHE_CHECK([for -znocombreloc], [emacs_cv_znocombreloc],
-[late_LDFLAGS="$LDFLAGS"
-LDFLAGS="$LDFLAGS $LDFLAGS_NOCOMBRELOC"
-
-AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
- [emacs_cv_znocombreloc=yes], [emacs_cv_znocombreloc=no])
-
-LDFLAGS="$late_LDFLAGS"])
+ [if test $with_unexec = no; then
+ emacs_cv_znocombreloc='not needed'
+ else
+ save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS $LDFLAGS_NOCOMBRELOC"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
+ [emacs_cv_znocombreloc=yes], [emacs_cv_znocombreloc=no])
+ LDFLAGS=$save_LDFLAGS
+ fi])
-if test x$emacs_cv_znocombreloc = xno; then
- LDFLAGS_NOCOMBRELOC=
-fi
+case $emacs_cv_znocombreloc in
+ no*)
+ LDFLAGS_NOCOMBRELOC= ;;
+esac
AC_CACHE_CHECK([whether addresses are sanitized],
@@ -1352,23 +1473,16 @@ AC_CACHE_CHECK([whether addresses are sanitized],
[emacs_cv_sanitize_address=yes],
[emacs_cv_sanitize_address=no])])
-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
- nacl) 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]])
+if test $with_unexec = yes; then
+ AC_DEFINE([HAVE_UNEXEC], [1], [Define if Emacs supports unexec.])
+ if test "$emacs_cv_sanitize_address" = yes; then
+ AC_MSG_WARN([[Addresses are sanitized; suggest --without-unexec]])
+ fi
fi
-AC_SUBST(CANNOT_DUMP)
-
-UNEXEC_OBJ=unexelf.o
+UNEXEC_OBJ=
+test $with_unexec = yes &&
case "$opsys" in
# MSDOS uses unexcoff.o
aix4-2)
@@ -1386,25 +1500,21 @@ case "$opsys" in
mingw32)
UNEXEC_OBJ=unexw32.o
;;
- sol2-10)
+ solaris)
# Use the Solaris dldump() function, called from unexsol.c, to dump
# emacs, instead of the generic ELF dump code found in unexelf.c.
# The resulting binary has a complete symbol table, and is better
# for debugging and other observability tools (debuggers, pstack, etc).
- #
- # If you encounter a problem using dldump(), please consider sending
- # a message to the OpenSolaris tools-linking mailing list:
- # http://mail.opensolaris.org/mailman/listinfo/tools-linking
- #
- # It is likely that dldump() works with older Solaris too, but this has
- # not been tested, so for now this change is for Solaris 10 or newer.
UNEXEC_OBJ=unexsol.o
;;
+ *)
+ UNEXEC_OBJ=unexelf.o
+ ;;
esac
-test "$CANNOT_DUMP" = "yes" && UNEXEC_OBJ=
+AC_SUBST([UNEXEC_OBJ])
LD_SWITCH_SYSTEM=
-case "$opsys" in
+test "$with_unexec" = no || case "$opsys" in
freebsd|dragonfly)
## Let 'ld' find image libs and similar things in /usr/local/lib.
## The system compiler, GCC, has apparently been modified to not
@@ -1431,7 +1541,7 @@ case "$opsys" in
LD_SWITCH_SYSTEM="-Z"
;;
esac
-AC_SUBST(LD_SWITCH_SYSTEM)
+AC_SUBST([LD_SWITCH_SYSTEM])
ac_link="$ac_link $LD_SWITCH_SYSTEM"
@@ -1450,12 +1560,11 @@ case "$opsys" in
LD_SWITCH_SYSTEM="\$(LD_SWITCH_X_SITE_RPATH) $LD_SWITCH_SYSTEM" ;;
esac
-
C_SWITCH_MACHINE=
+
+test $with_unexec = yes &&
case $canonical in
alpha*)
- AC_CHECK_DECL([__ELF__])
- if test "$ac_cv_have_decl___ELF__" = "yes"; then
## With ELF, make sure that all common symbols get allocated to in the
## data section. Otherwise, the dump of temacs may miss variables in
## the shared library that have been initialized. For example, with
@@ -1466,17 +1575,9 @@ case $canonical in
else
AC_MSG_ERROR([Non-GCC compilers are not supported.])
fi
- else
- 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
-AC_SUBST(C_SWITCH_MACHINE)
-
-AC_SUBST(UNEXEC_OBJ)
+AC_SUBST([C_SWITCH_MACHINE])
C_SWITCH_SYSTEM=
## Some programs in src produce warnings saying certain subprograms
@@ -1492,7 +1593,7 @@ if test "$opsys" = "mingw32"; then
fi
## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
## It is redundant in glibc2, since we define _GNU_SOURCE.
-AC_SUBST(C_SWITCH_SYSTEM)
+AC_SUBST([C_SWITCH_SYSTEM])
LIBS_SYSTEM=
@@ -1504,13 +1605,17 @@ case "$opsys" in
hpux*) LIBS_SYSTEM="-l:libdld.sl" ;;
- sol2*) LIBS_SYSTEM="-lsocket -lnsl" ;;
+ qnxnto) LIBS_SYSTEM="-lsocket" ;;
+
+ solaris) LIBS_SYSTEM="-lsocket -lnsl" ;;
## Motif needs -lgen.
unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
+
+ haiku) LIBS_SYSTEM="-lnetwork" ;;
esac
-AC_SUBST(LIBS_SYSTEM)
+AC_SUBST([LIBS_SYSTEM])
### Make sure subsequent tests use flags consistent with the build flags.
@@ -1525,16 +1630,63 @@ AC_DEFUN([AC_TYPE_SIZE_T])
# Likewise for obsolescent test for uid_t, gid_t; Emacs assumes them.
AC_DEFUN([AC_TYPE_UID_T])
-# sqrt and other floating-point functions such as fmod and frexp
-# are found in -lm on many systems.
-OLD_LIBS=$LIBS
-AC_SEARCH_LIBS([sqrt], [m])
-if test "X$LIBS" = "X$OLD_LIBS"; then
- LIB_MATH=
-else
- LIB_MATH=$ac_cv_search_sqrt
-fi
-LIBS=$OLD_LIBS
+# Check for all math.h functions that Emacs uses; on some platforms,
+# -lm is needed for some of these functions.
+AC_CACHE_CHECK([for math library],
+ [emacs_cv_lib_math],
+ [OLD_LIBS=$LIBS
+ AC_LINK_IFELSE(
+ [AC_LANG_SOURCE([[
+ #include <math.h>
+ int
+ main (int argc, char **argv)
+ {
+ double d = argc;
+ float f = argc;
+ int i = argc;
+ long l = argc;
+ d = acos (d);
+ d = asin (d);
+ d = atan (d);
+ d = atan2 (d, d);
+ d = ceil (d);
+ d = copysign (d, d);
+ d = cos (d);
+ d = exp (d);
+ d = fabs (d);
+ d = floor (d);
+ d = fmod (d, d);
+ d = frexp (d, &i);
+ d = ldexp (d, i);
+ d = log (d);
+ d = log2 (d);
+ d = log10 (d);
+ d = pow (d, d);
+ d = rint (d);
+ d = scalbn (d, l);
+ d = sin (d);
+ d = sqrt (d);
+ d = tan (d);
+ d = trunc (d);
+ f = fabsf (f);
+ f = powf (f, f);
+ i = ilogb (d);
+ i = signbit (d);
+ l = lrint (d);
+ l = lround (d);
+ return d == f && i == l;
+ }
+ ]])],
+ [emacs_cv_lib_math='none required'],
+ [LIBS="-lm $LIBS"
+ AC_LINK_IFELSE([],
+ [emacs_cv_lib_math=-lm],
+ [AC_MSG_ERROR([Math library (-lm) not found])])])
+ LIBS=$OLD_LIBS])
+case $emacs_cv_lib_math in
+ -*) LIB_MATH=$emacs_cv_lib_math;;
+ *) LIB_MATH=;;
+esac
dnl Current possibilities handled by sed (aix4-2 -> aix,
dnl gnu-linux -> gnu/linux, etc.):
@@ -1561,19 +1713,18 @@ case $opsys in
LIB_MATH=
SYSTEM_TYPE=windows-nt
;;
- dnl NB this may be adjusted below.
netbsd | openbsd )
SYSTEM_TYPE=berkeley-unix
;;
- sol2* | unixware )
+ solaris | unixware )
SYSTEM_TYPE=usg-unix-v
;;
esac
-AC_SUBST(LIB_MATH)
-AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE",
+AC_SUBST([LIB_MATH])
+AC_DEFINE_UNQUOTED([SYSTEM_TYPE], ["$SYSTEM_TYPE"],
[The type of system you are compiling for; sets 'system-type'.])
AC_SUBST([SYSTEM_TYPE])
@@ -1581,11 +1732,11 @@ AC_SUBST([SYSTEM_TYPE])
pre_PKG_CONFIG_CFLAGS=$CFLAGS
pre_PKG_CONFIG_LIBS=$LIBS
-PKG_PROG_PKG_CONFIG(0.9.0)
+PKG_PROG_PKG_CONFIG([0.9.0])
-dnl EMACS_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4)
-dnl acts like PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4,
-dnl HAVE_GSTUFF=yes, HAVE_GSTUFF=no) -- see pkg-config man page --
+dnl EMACS_CHECK_MODULES([GSTUFF], [gtk+-2.0 >= 1.3 glib = 1.3.4])
+dnl acts like PKG_CHECK_MODULES([GSTUFF], [gtk+-2.0 >= 1.3 glib = 1.3.4],
+dnl [HAVE_GSTUFF=yes], [HAVE_GSTUFF=no]) -- see pkg-config man page --
dnl except that it postprocesses CFLAGS as needed for --enable-gcc-warnings.
dnl EMACS_CHECK_MODULES accepts optional 3rd and 4th arguments that
dnl can take the place of the default HAVE_GSTUFF=yes and HAVE_GSTUFF=no
@@ -1600,7 +1751,7 @@ HAVE_SOUND=no
if test "${with_sound}" != "no"; then
# Sound support for GNU/Linux, the free BSDs, MinGW, and Cygwin.
AC_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h soundcard.h mmsystem.h],
- have_sound_header=yes, [], [
+ [have_sound_header=yes], [], [
#ifdef __MINGW32__
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
@@ -1611,42 +1762,22 @@ if test "${with_sound}" != "no"; then
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=)
+ AC_CHECK_LIB([ossaudio], [_oss_ioctl], [LIBSOUND=-lossaudio], [LIBSOUND=])
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)
+ AC_SUBST([LIBSOUND])
if test "${with_sound}" = "alsa" || test "${with_sound}" = "yes"; then
ALSA_REQUIRED=1.0.0
ALSA_MODULES="alsa >= $ALSA_REQUIRED"
EMACS_CHECK_MODULES([ALSA], [$ALSA_MODULES])
if test $HAVE_ALSA = yes; then
- SAVE_CFLAGS="$CFLAGS"
- SAVE_LIBS="$LIBS"
- CFLAGS="$ALSA_CFLAGS $CFLAGS"
- LIBS="$ALSA_LIBS $LIBS"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])],
- emacs_alsa_normal=yes,
- emacs_alsa_normal=no)
- if test "$emacs_alsa_normal" != yes; then
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]],
- [[snd_lib_error_set_handler (0);]])],
- emacs_alsa_subdir=yes,
- emacs_alsa_subdir=no)
- if test "$emacs_alsa_subdir" != yes; then
- AC_MSG_ERROR([pkg-config found alsa, but it does not compile. See config.log for error messages.])
- fi
- ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
- fi
-
- CFLAGS="$SAVE_CFLAGS"
- LIBS="$SAVE_LIBS"
LIBSOUND="$LIBSOUND $ALSA_LIBS"
CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
- AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
+ AC_DEFINE([HAVE_ALSA], [1], [Define to 1 if ALSA is available.])
elif test "${with_sound}" = "alsa"; then
AC_MSG_ERROR([ALSA sound support requested but not found.])
fi
@@ -1662,24 +1793,25 @@ if test "${with_sound}" != "no"; then
dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
dnl Adjust the --with-sound help text if you change this.
gnu-linux|freebsd|netbsd|mingw32|cygwin)
- AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.])
+ AC_DEFINE([HAVE_SOUND], [1], [Define to 1 if you have sound support.])
HAVE_SOUND=yes
;;
esac
fi
- AC_SUBST(CFLAGS_SOUND)
+ AC_SUBST([CFLAGS_SOUND])
fi
dnl checks for header files
AC_CHECK_HEADERS_ONCE(
- linux/fs.h
+ [linux/fs.h
malloc.h
sys/systeminfo.h
sys/sysinfo.h
coff.h pty.h
sys/resource.h
- sys/utsname.h pwd.h utmp.h util.h sys/prctl.h)
+ sys/utsname.h pwd.h utmp.h util.h
+ sanitizer/lsan_interface.h])
AC_CACHE_CHECK([for ADDR_NO_RANDOMIZE],
[emacs_cv_personality_addr_no_randomize],
@@ -1706,37 +1838,32 @@ if test "$ac_cv_header_sys_sysinfo_h" = yes; then
emacs_cv_linux_sysinfo=yes, emacs_cv_linux_sysinfo=no)])
if test $emacs_cv_linux_sysinfo = yes; then
- AC_DEFINE([HAVE_LINUX_SYSINFO], 1, [Define to 1 if you have Linux sysinfo function.])
+ AC_DEFINE([HAVE_LINUX_SYSINFO], [1],
+ [Define to 1 if you have Linux sysinfo function.])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/sysinfo.h>]],
[[struct sysinfo si; return si.mem_unit]])],
- AC_DEFINE(LINUX_SYSINFO_UNIT, 1,
+ AC_DEFINE([LINUX_SYSINFO_UNIT], [1],
[Define to 1 if Linux sysinfo sizes are in multiples of mem_unit bytes.]))
fi
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_TIME
-AC_CHECK_DECLS([sys_siglist], [], [], [[#include <signal.h>
- ]])
-if test $ac_cv_have_decl_sys_siglist != yes; then
- # For Tru64, at least:
- AC_CHECK_DECLS([__sys_siglist], [], [], [[#include <signal.h>
- ]])
-fi
+AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[#include <term.h>]],[[]])],
+ [AC_DEFINE([HAVE_TERM_H], [1],
+ [Define to 1 if you have the <term.h> header file.])])
AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS_ONCE(sys/socket.h)
-AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT
+AC_CHECK_HEADERS_ONCE([sys/socket.h])
+AC_CHECK_HEADERS([net/if.h], [], [], [AC_INCLUDES_DEFAULT
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif])
-AC_CHECK_HEADERS(ifaddrs.h, , , [AC_INCLUDES_DEFAULT
+AC_CHECK_HEADERS([ifaddrs.h], [], [], [AC_INCLUDES_DEFAULT
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif])
-AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT
+AC_CHECK_HEADERS([net/if_dl.h], [], [], [AC_INCLUDES_DEFAULT
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif])
@@ -1745,7 +1872,7 @@ dnl checks for structure members
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.sa_len], , ,
+ struct ifreq.ifr_addr.sa_len], [], [],
[AC_INCLUDES_DEFAULT
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
@@ -1775,7 +1902,7 @@ if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
AUTO_DEPEND=yes
fi
fi
-AC_SUBST(AUTO_DEPEND)
+AC_SUBST([AUTO_DEPEND])
#### Choose a window system.
@@ -1785,8 +1912,14 @@ AC_SUBST(AUTO_DEPEND)
## window-system-specific substs.
window_system=none
+
+if test "${with_pgtk}" = "yes"; then
+ window_system=pgtk
+fi
+
+
AC_PATH_X
-if test "$no_x" != yes; then
+if test "$no_x" != yes && test "${with_pgtk}" != "yes"; then
window_system=x11
fi
@@ -1819,7 +1952,7 @@ ${x_library}/X11/%T/%N%S"
fi
done
fi
-AC_SUBST(LD_SWITCH_X_SITE_RPATH)
+AC_SUBST([LD_SWITCH_X_SITE_RPATH])
if test "${x_includes}" != NONE && test -n "${x_includes}"; then
C_SWITCH_X_SITE=$isystem`AS_ECHO(["$x_includes"]) | sed -e "s/:/ $isystem/g"`
@@ -1841,6 +1974,8 @@ else
bitmapdir=${bmd_acc#:}
fi
+NATIVE_IMAGE_API=no
+
test "${with_ns}" = maybe && test "${opsys}" != darwin && with_ns=no
HAVE_NS=no
NS_GNUSTEP_CONFIG=no
@@ -1850,20 +1985,25 @@ tmp_CPPFLAGS="$CPPFLAGS"
tmp_CFLAGS="$CFLAGS"
CPPFLAGS="$CPPFLAGS -x objective-c"
CFLAGS="$CFLAGS -x objective-c"
-GNU_OBJC_CFLAGS=
+GNU_OBJC_CFLAGS=""
LIBS_GNUSTEP=
if test "${with_ns}" != no; then
- if test "${opsys}" = darwin; then
+ # macfont.o requires macuvs.h which is absent after 'make extraclean',
+ # so avoid NS_IMPL_COCOA if macuvs.h is absent.
+ # Even a headless Emacs can build macuvs.h, so this should let you bootstrap.
+ if test "${opsys}" = darwin && test -f "$srcdir/src/macuvs.h"; then
NS_IMPL_COCOA=yes
ns_appdir=`pwd`/nextstep/Emacs.app
ns_appbindir=${ns_appdir}/Contents/MacOS
+ ns_applibexecdir=${ns_appdir}/Contents/MacOS/libexec
+ ns_applibdir=${ns_appdir}/Contents/Frameworks
ns_appresdir=${ns_appdir}/Contents/Resources
ns_appsrc=Cocoa/Emacs.base
ns_fontfile=macfont.o
elif flags=$( (gnustep-config --objc-flags) 2>/dev/null); then
NS_IMPL_GNUSTEP=yes
NS_GNUSTEP_CONFIG=yes
- GNU_OBJC_CFLAGS=$flags
+ GNU_OBJC_CFLAGS="$flags"
LIBS_GNUSTEP=$(gnustep-config --gui-libs) || exit
elif test -f $GNUSTEP_CONFIG_FILE; then
NS_IMPL_GNUSTEP=yes
@@ -1896,24 +2036,29 @@ if test "${with_ns}" != no; then
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 <GNUstepBase/GSConfig.h>]],
+ AC_CACHE_CHECK([if GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS],
+ [emacs_cv_objc_exceptions],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <GNUstepBase/GSConfig.h>]],
[[#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 ) )
+#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,
+ AC_DEFINE([_NATIVE_OBJC_EXCEPTIONS], [1],
[Define if GNUstep uses ObjC exceptions.])
- GNU_OBJC_CFLAGS="-fobjc-exceptions"
+ GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fobjc-exceptions"
fi
fi
if test $NS_IMPL_GNUSTEP = yes; then
ns_appdir=`pwd`/nextstep/Emacs.app
ns_appbindir=${ns_appdir}
+ ns_applibexecdir=${ns_appdir}/libexec
+ ns_applibdir=${ns_appdir}/Frameworks
ns_appresdir=${ns_appdir}/Resources
ns_appsrc=GNUstep/Emacs.base
ns_fontfile=nsfont.o
@@ -1941,17 +2086,33 @@ Either fix this, or re-configure with the option '--without-ns'.])])
#endif
#endif
])],
- ns_osx_have_106=yes,
- ns_osx_have_106=no)
+ [ns_osx_have_106=yes],
+ [ns_osx_have_106=no])
AC_MSG_RESULT([$ns_osx_have_106])
if test $ns_osx_have_106 = no; then
AC_MSG_ERROR([Mac OS X 10.6 or newer is required]);
fi
fi
+
+ AC_CACHE_CHECK([for Mac OS X 12.0 or later],
+ [emacs_cv_macosx_12_0],
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <AvailabilityMacros.h>
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 120000
+Mac OS X 12.x or later.
+#endif
+ ]])], [emacs_cv_macosx_12_0=no],
+ [emacs_cv_macosx_12_0=yes]))
+
+ if test "${with_native_image_api}" = yes; then
+ AC_DEFINE([HAVE_NATIVE_IMAGE_API], [1],
+ [Define to use native OS APIs for images.])
+ NATIVE_IMAGE_API="yes (ns)"
+ fi
fi
-AC_SUBST(LIBS_GNUSTEP)
+AC_SUBST([LIBS_GNUSTEP])
INSTALL_ARCH_INDEP_EXTRA=install-etc
ns_self_contained=no
@@ -1959,18 +2120,19 @@ NS_OBJ=
NS_OBJC_OBJ=
if test "${HAVE_NS}" = yes; then
if test "$with_toolkit_scroll_bars" = "no"; then
- AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for Nextstep.])
+ AC_MSG_WARN([Non-toolkit scroll bars are not implemented for Nextstep.])
fi
window_system=nextstep
# set up packaging dirs
if test "${EN_NS_SELF_CONTAINED}" = yes; then
+ AC_DEFINE([NS_SELF_CONTAINED], [1], [Build an NS bundled app])
ns_self_contained=yes
prefix=${ns_appresdir}
exec_prefix=${ns_appbindir}
dnl This one isn't really used, only archlibdir is.
- libexecdir="\${ns_appbindir}/libexec"
- archlibdir="\${ns_appbindir}/libexec"
+ libexecdir="\${ns_applibexecdir}"
+ archlibdir="\${ns_applibexecdir}"
etcdocdir="\${ns_appresdir}/etc"
etcdir="\${ns_appresdir}/etc"
dnl FIXME maybe set datarootdir instead.
@@ -1978,7 +2140,8 @@ if test "${HAVE_NS}" = yes; then
infodir="\${ns_appresdir}/info"
mandir="\${ns_appresdir}/man"
lispdir="\${ns_appresdir}/lisp"
- test "$locallisppathset" = no && locallisppath=""
+ lispdirrel="\${ns_appresdir}/lisp"
+ test "$locallisppathset" = no && locallisppath="\${ns_appresdir}/site-lisp"
INSTALL_ARCH_INDEP_EXTRA=
fi
@@ -1986,30 +2149,58 @@ if test "${HAVE_NS}" = yes; then
fi
CFLAGS="$tmp_CFLAGS"
CPPFLAGS="$tmp_CPPFLAGS"
-AC_SUBST(INSTALL_ARCH_INDEP_EXTRA)
-AC_SUBST(ns_self_contained)
-AC_SUBST(NS_OBJ)
-AC_SUBST(NS_OBJC_OBJ)
+AC_SUBST([INSTALL_ARCH_INDEP_EXTRA])
+AC_SUBST([ns_self_contained])
+AC_SUBST([NS_OBJ])
+AC_SUBST([NS_OBJC_OBJ])
if test "${HAVE_NS}" = yes; then
+ AC_LANG_PUSH([Objective C])
AC_CACHE_CHECK(
[if the Objective C compiler supports instancetype],
[emacs_cv_objc_instancetype],
- [AC_LANG_PUSH([Objective C])
- AC_COMPILE_IFELSE(
+ [AC_COMPILE_IFELSE(
[AC_LANG_SOURCE([[@interface Test
+ (instancetype)test;
@end]])],
- emacs_cv_objc_instancetype=yes,
- emacs_cv_objc_instancetype=no)
- AC_LANG_POP([Objective C])])
+ [emacs_cv_objc_instancetype=yes],
+ [emacs_cv_objc_instancetype=no])])
if test x$emacs_cv_objc_instancetype = xyes ; then
- AC_DEFINE(NATIVE_OBJC_INSTANCETYPE, 1,
+ AC_DEFINE([NATIVE_OBJC_INSTANCETYPE], [1],
[Define if ObjC compiler supports instancetype natively.])
fi
+
+ AC_CACHE_CHECK(
+ [if the Objective C compiler defaults to C99],
+ [emacs_cv_objc_c99],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([], [[for (int i = 0;;);]])],
+ [emacs_cv_objc_c99=yes],
+ [emacs_cv_objc_c99=no])])
+
+ if test x$emacs_cv_objc_c99 = xno ; then
+ GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -std=c99"
+ fi
+ AC_LANG_POP([Objective C])
+fi
+
+HAVE_BE_APP=no
+if test "${opsys}" = "haiku" && test "${with_be_app}" = "yes"; then
+ dnl Only GCC is supported. Clang might work, but it's
+ dnl not reliable, so don't check for it here.
+ AC_PROG_CXX([gcc g++])
+ CXXFLAGS="$CXXFLAGS $emacs_g3_CFLAGS"
+ AC_LANG_PUSH([C++])
+ AC_CHECK_HEADER([app/Application.h], [HAVE_BE_APP=yes],
+ [AC_MSG_ERROR([The Application Kit headers required for building
+with the Application Kit were not found or cannot be compiled. Either fix this, or
+re-configure with the option '--without-be-app'.])])
+ AC_LANG_POP([C++])
fi
+AC_SUBST([HAVE_BE_APP])
+
HAVE_W32=no
W32_OBJ=
W32_LIBS=
@@ -2056,14 +2247,14 @@ NTLIB=
CM_OBJ="cm.o"
XARGS_LIMIT=
if test "${HAVE_W32}" = "yes"; then
- AC_DEFINE(HAVE_NTGUI, 1, [Define to use native MS Windows GUI.])
+ AC_DEFINE([HAVE_NTGUI], [1], [Define to use native MS Windows GUI.])
if test "$with_toolkit_scroll_bars" = "no"; then
AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for w32 build.])
fi
- AC_CHECK_TOOL(WINDRES, [windres],
+ AC_CHECK_TOOL([WINDRES], [windres],
[AC_MSG_ERROR([No resource compiler found.])])
W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o"
- W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o"
+ W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o w32cygwinx.o"
EMACSRES="emacs.res"
case "$canonical" in
x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;;
@@ -2073,8 +2264,8 @@ if test "${HAVE_W32}" = "yes"; then
comma_version=`echo "${PACKAGE_VERSION}.0.0" | sed -e 's/\./,/g' -e 's/^\([[^,]]*,[[^,]]*,[[^,]]*,[[^,]]*\).*/\1/'`
comma_space_version=`echo "$comma_version" | sed 's/,/, /g'`
- AC_SUBST(comma_version)
- AC_SUBST(comma_space_version)
+ AC_SUBST([comma_version])
+ AC_SUBST([comma_space_version])
AC_CONFIG_FILES([nt/emacs.rc nt/emacsclient.rc])
if test "${opsys}" = "cygwin"; then
W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lusp10 -lgdi32"
@@ -2084,6 +2275,14 @@ if test "${HAVE_W32}" = "yes"; then
W32_RES_LINK="-Wl,emacs.res"
else
W32_OBJ="$W32_OBJ w32.o w32console.o w32heap.o w32inevt.o w32proc.o"
+ dnl FIXME: This should probably be supported for Cygwin/w32 as
+ dnl well, but the Cygwin build needs to link against -lgdiplus
+ if test "${with_native_image_api}" = yes; then
+ AC_DEFINE([HAVE_NATIVE_IMAGE_API], [1],
+ [Define to use native OS APIs for images.])
+ NATIVE_IMAGE_API="yes (w32)"
+ W32_OBJ="$W32_OBJ w32image.o"
+ fi
W32_LIBS="$W32_LIBS -lwinmm -lusp10 -lgdi32 -lcomdlg32"
W32_LIBS="$W32_LIBS -lmpr -lwinspool -lole32 -lcomctl32"
W32_RES_LINK="\$(EMACSRES)"
@@ -2098,26 +2297,66 @@ if test "${HAVE_W32}" = "yes"; then
XARGS_LIMIT="-s 10000"
fi
fi
-AC_SUBST(W32_OBJ)
-AC_SUBST(W32_LIBS)
-AC_SUBST(EMACSRES)
-AC_SUBST(EMACS_MANIFEST)
-AC_SUBST(CLIENTRES)
-AC_SUBST(CLIENTW)
-AC_SUBST(W32_RES_LINK)
-AC_SUBST(FIRSTFILE_OBJ)
-AC_SUBST(NTDIR)
-AC_SUBST(CM_OBJ)
-AC_SUBST(LIBS_ECLIENT)
-AC_SUBST(LIB_WSOCK32)
-AC_SUBST(NTLIB)
-AC_SUBST(XARGS_LIMIT)
+
+if test "${HAVE_W32}" = "no" && test "${opsys}" = "cygwin"; then
+ W32_LIBS="-lkernel32"
+ W32_OBJ="w32cygwinx.o"
+fi
+
+AC_SUBST([W32_OBJ])
+AC_SUBST([W32_LIBS])
+AC_SUBST([EMACSRES])
+AC_SUBST([EMACS_MANIFEST])
+AC_SUBST([CLIENTRES])
+AC_SUBST([CLIENTW])
+AC_SUBST([W32_RES_LINK])
+AC_SUBST([FIRSTFILE_OBJ])
+AC_SUBST([NTDIR])
+AC_SUBST([CM_OBJ])
+AC_SUBST([LIBS_ECLIENT])
+AC_SUBST([LIB_WSOCK32])
+AC_SUBST([NTLIB])
+AC_SUBST([XARGS_LIMIT])
if test "${HAVE_W32}" = "yes"; then
window_system=w32
with_xft=no
fi
+HAIKU_OBJ=
+HAIKU_CXX_OBJ=
+HAIKU_LIBS=
+HAIKU_CFLAGS=
+
+if test "$opsys" = "haiku"; then
+ HAIKU_OBJ="$HAIKU_OBJ haiku.o"
+fi
+
+if test "${HAVE_BE_APP}" = "yes"; then
+ AC_DEFINE([HAVE_HAIKU], [1],
+ [Define if Emacs will be built with Haiku windowing support])
+fi
+
+if test "${HAVE_BE_APP}" = "yes"; then
+ window_system=haiku
+ with_xft=no
+ HAIKU_OBJ="$HAIKU_OBJ haikufns.o haikuterm.o haikumenu.o haikufont.o haikuselect.o haiku_io.o"
+ HAIKU_CXX_OBJ="haiku_support.o haiku_font_support.o haiku_draw_support.o haiku_select.o"
+ HAIKU_LIBS="-lbe -lgame -ltranslation -ltracker" # -lgame is needed for set_mouse_position.
+
+ if test "${with_native_image_api}" = yes; then
+ AC_DEFINE([HAVE_NATIVE_IMAGE_API], [1],
+ [Define to use native OS APIs for images.])
+ NATIVE_IMAGE_API="yes (haiku)"
+ HAIKU_OBJ="$HAIKU_OBJ haikuimage.o"
+ fi
+fi
+
+AC_SUBST([HAIKU_LIBS])
+AC_SUBST([HAIKU_OBJ])
+AC_SUBST([HAIKU_CXX_OBJ])
+AC_SUBST([HAIKU_CFLAGS])
+
## $window_system is now set to the window system we will
## ultimately use.
@@ -2125,6 +2364,7 @@ term_header=
HAVE_X_WINDOWS=no
HAVE_X11=no
USE_X_TOOLKIT=none
+HAVE_PGTK=no
case "${window_system}" in
x11 )
@@ -2157,10 +2397,21 @@ dnl use the toolkit if we have gtk, or X11R5 or newer.
w32 )
term_header=w32term.h
;;
+ pgtk )
+ term_header=pgtkterm.h
+ with_gtk3=yes
+ USE_X_TOOLKIT=none
+ HAVE_PGTK=yes
+ AC_DEFINE([HAVE_PGTK], [1], [Define to 1 if you have pure Gtk+-3.])
+ ;;
+ haiku )
+ term_header=haikuterm.h
+ ;;
esac
+AC_SUBST([HAVE_PGTK])
if test "$window_system" = none && test "X$with_x" != "Xno"; then
- AC_CHECK_PROG(HAVE_XSERVER, X, true, false)
+ AC_CHECK_PROG([HAVE_XSERVER], [X], [true], [false])
if test "$HAVE_XSERVER" = true ||
test -n "$DISPLAY" ||
{
@@ -2203,11 +2454,15 @@ doug_lea_malloc=$emacs_cv_var_doug_lea_malloc
hybrid_malloc=
system_malloc=yes
-test "$CANNOT_DUMP" = yes ||
+dnl This must be before the test of $ac_cv_func_sbrk below.
+AC_CHECK_FUNCS_ONCE([sbrk])
+
+test $with_unexec = yes &&
case "$opsys" in
## darwin ld insists on the use of malloc routines in the System framework.
- darwin | mingw32 | nacl | sol2-10) ;;
- cygwin) hybrid_malloc=yes
+ darwin | mingw32 | nacl | solaris) ;;
+ cygwin | qnxnto | freebsd)
+ hybrid_malloc=yes
system_malloc= ;;
*) test "$ac_cv_func_sbrk" = yes && system_malloc=$emacs_cv_sanitize_address;;
esac
@@ -2220,7 +2475,7 @@ fi
GMALLOC_OBJ=
HYBRID_MALLOC=
if test "${system_malloc}" = "yes"; then
- AC_DEFINE([SYSTEM_MALLOC], 1,
+ 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
@@ -2228,7 +2483,7 @@ if test "${system_malloc}" = "yes"; then
(The GNU allocators don't work with this system configuration.)"
VMLIMIT_OBJ=
elif test "$hybrid_malloc" = yes; then
- AC_DEFINE(HYBRID_MALLOC, 1,
+ AC_DEFINE([HYBRID_MALLOC], [1],
[Define to use gmalloc before dumping and the system malloc after.])
HYBRID_MALLOC=1
GNU_MALLOC=no
@@ -2248,21 +2503,21 @@ else
[emacs_cv_data_start=yes],
[emacs_cv_data_start=no])])
if test $emacs_cv_data_start = yes; then
- AC_DEFINE([HAVE_DATA_START], 1,
+ AC_DEFINE([HAVE_DATA_START], [1],
[Define to 1 if data_start is the address of the start
of the main data segment.])
fi
fi
AC_SUBST([HYBRID_MALLOC])
-AC_SUBST(GMALLOC_OBJ)
-AC_SUBST(VMLIMIT_OBJ)
+AC_SUBST([GMALLOC_OBJ])
+AC_SUBST([VMLIMIT_OBJ])
if test "$doug_lea_malloc" = "yes" && test "$hybrid_malloc" != yes; then
if test "$GNU_MALLOC" = yes ; then
GNU_MALLOC_reason="
(Using Doug Lea's new malloc from the GNU C Library.)"
fi
- AC_DEFINE(DOUG_LEA_MALLOC, 1,
+ AC_DEFINE([DOUG_LEA_MALLOC], [1],
[Define to 1 if the system memory allocator is Doug Lea style,
with malloc hooks and malloc_set_state.])
@@ -2286,18 +2541,19 @@ esac
AC_FUNC_MMAP
if test $use_mmap_for_buffers = yes; then
- AC_DEFINE(USE_MMAP_FOR_BUFFERS, 1, [Define to use mmap to allocate buffer text.])
+ AC_DEFINE([USE_MMAP_FOR_BUFFERS], [1],
+ [Define to use mmap to allocate buffer text.])
REL_ALLOC=no
fi
LIBS="$LIBS_SYSTEM $LIBS"
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")
+AC_CHECK_LIB([Xbsd], [main], [LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd"])
dnl Check for the POSIX thread library.
LIB_PTHREAD=
-AC_CHECK_HEADERS_ONCE(pthread.h)
+AC_CHECK_HEADERS_ONCE([pthread.h])
if test "$ac_cv_header_pthread_h" && test "$opsys" != "mingw32"; then
AC_CACHE_CHECK([for pthread library],
[emacs_cv_pthread_lib],
@@ -2332,7 +2588,7 @@ if test "$ac_cv_header_pthread_h" && test "$opsys" != "mingw32"; then
fi
done])
if test "$emacs_cv_pthread_lib" != no; then
- AC_DEFINE([HAVE_PTHREAD], 1, [Define to 1 if you have POSIX threads.])
+ AC_DEFINE([HAVE_PTHREAD], [1], [Define to 1 if you have POSIX threads.])
case $emacs_cv_pthread_lib in
-*) LIB_PTHREAD=$emacs_cv_pthread_lib;;
esac
@@ -2341,11 +2597,11 @@ if test "$ac_cv_header_pthread_h" && test "$opsys" != "mingw32"; then
# need special flags to disable these optimizations. For example, the
# definition of 'errno' in <errno.h>.
case $opsys in
- hpux* | sol*)
- AC_DEFINE([_REENTRANT], 1,
+ hpux* | solaris)
+ AC_DEFINE([_REENTRANT], [1],
[Define to 1 if your system requires this in multithreaded code.]);;
aix4-2)
- AC_DEFINE([_THREAD_SAFE], 1,
+ AC_DEFINE([_THREAD_SAFE], [1],
[Define to 1 if your system requires this in multithreaded code.]);;
esac
fi
@@ -2356,12 +2612,12 @@ AC_MSG_CHECKING([for thread support])
threads_enabled=no
if test "$with_threads" = yes; then
if test "$emacs_cv_pthread_lib" != no; then
- AC_DEFINE(THREADS_ENABLED, 1,
+ AC_DEFINE([THREADS_ENABLED], [1],
[Define to 1 if you want elisp thread support.])
threads_enabled=yes
elif test "${opsys}" = "mingw32"; then
dnl MinGW can do native Windows threads even without pthreads
- AC_DEFINE(THREADS_ENABLED, 1,
+ AC_DEFINE([THREADS_ENABLED], [1],
[Define to 1 if you want elisp thread support.])
threads_enabled=yes
fi
@@ -2446,55 +2702,61 @@ if test "${HAVE_X11}" = "yes"; then
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>
#include <X11/XKBlib.h>]],
[[XkbDescPtr kb = XkbGetKeyboard (0, XkbAllComponentsMask, XkbUseCoreKbd);]])],
- emacs_cv_xkb=yes, emacs_cv_xkb=no)])
+ [emacs_cv_xkb=yes],
+ [emacs_cv_xkb=no])])
if test $emacs_cv_xkb = yes; then
- AC_DEFINE(HAVE_XKB, 1, [Define to 1 if you have the Xkb extension.])
+ AC_DEFINE([HAVE_XKB], [1], [Define to 1 if you have the Xkb extension.])
+ AC_CHECK_FUNCS([XkbRefreshKeyboardMapping XkbFreeNames])
fi
- AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
-XScreenNumberOfScreen)
+ AC_CHECK_FUNCS([XrmSetDatabase XScreenResourceString XScreenNumberOfScreen])
+ AC_CHECK_FUNCS([XDisplayCells XDestroySubwindows])
fi
if test "${window_system}" = "x11"; then
- AC_MSG_CHECKING(X11 version 6)
- AC_CACHE_VAL(emacs_cv_x11_version_6,
+ AC_MSG_CHECKING([X11 version 6])
+ AC_CACHE_VAL([emacs_cv_x11_version_6],
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]],
[[#if XlibSpecificationRelease < 6
fail;
#endif
-]])], emacs_cv_x11_version_6=yes, emacs_cv_x11_version_6=no)])
+]])], [emacs_cv_x11_version_6=yes],
+ [emacs_cv_x11_version_6=no])])
if test $emacs_cv_x11_version_6 = yes; then
- AC_MSG_RESULT(6 or newer)
- AC_DEFINE(HAVE_X11R6, 1,
+ AC_MSG_RESULT([6 or newer])
+ AC_DEFINE([HAVE_X11R6], [1],
[Define to 1 if you have the X11R6 or newer version of Xlib.])
- AC_DEFINE(HAVE_X_I18N, 1, [Define if you have usable i18n support.])
+ AC_DEFINE([HAVE_X_I18N], [1], [Define if you have usable i18n support.])
+ AC_CHECK_MEMBERS([XICCallback.callback], [], [], [#include <X11/Xlib.h>])
## inoue@ainet.or.jp says Solaris has a bug related to X11R6-style
## XIM support.
case "$opsys" in
- sol2-*) : ;;
- *) AC_DEFINE(HAVE_X11R6_XIM, 1,
+ solaris) : ;;
+ *) AC_DEFINE([HAVE_X11R6_XIM], [1],
[Define if you have usable X11R6-style XIM support.])
;;
esac
else
- AC_MSG_RESULT(before 6)
+ AC_MSG_RESULT([before 6])
fi
fi
### Use -lrsvg-2 if available, unless '--with-rsvg=no' is specified.
HAVE_RSVG=no
-if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" = "mingw32"; then
+if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" \
+ || test "${opsys}" = "mingw32" || test "${HAVE_BE_APP}" = "yes" \
+ || test "${window_system}" = "pgtk"; then
if test "${with_rsvg}" != "no"; then
- RSVG_REQUIRED=2.11.0
+ RSVG_REQUIRED=2.14.0
RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
EMACS_CHECK_MODULES([RSVG], [$RSVG_MODULE])
- AC_SUBST(RSVG_CFLAGS)
- AC_SUBST(RSVG_LIBS)
+ AC_SUBST([RSVG_CFLAGS])
+ AC_SUBST([RSVG_LIBS])
if test $HAVE_RSVG = yes; then
- AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
+ AC_DEFINE([HAVE_RSVG], [1], [Define to 1 if using librsvg.])
CFLAGS="$CFLAGS $RSVG_CFLAGS"
# Windows loads librsvg dynamically
if test "${opsys}" = "mingw32"; then
@@ -2504,14 +2766,74 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" =
fi
fi
+### Use -lwebp if available, unless '--with-webp=no'
+HAVE_WEBP=no
+if test "${with_webp}" != "no"; then
+ if test "${HAVE_X11}" = "yes" || test "${opsys}" = "mingw32" \
+ || test "${HAVE_W32}" = "yes" || test "${HAVE_NS}" = "yes" \
+ || test "${HAVE_BE_APP}" = "yes" || test "${HAVE_PGTK}" = "yes"; then
+ WEBP_REQUIRED=0.6.0
+ WEBP_MODULE="libwebpdemux >= $WEBP_REQUIRED"
+
+ EMACS_CHECK_MODULES([WEBP], [$WEBP_MODULE])
+ AC_SUBST([WEBP_CFLAGS])
+ AC_SUBST([WEBP_LIBS])
+ fi
+ if test $HAVE_WEBP = yes; then
+ AC_DEFINE([HAVE_WEBP], [1], [Define to 1 if using libwebp.])
+ CFLAGS="$CFLAGS $WEBP_CFLAGS"
+ # Windows loads libwebp dynamically
+ if test "${opsys}" = "mingw32"; then
+ WEBP_LIBS=
+ fi
+ fi
+fi
+
+### Use -lsqlite3 if available, unless '--with-sqlite3=no'
+HAVE_SQLITE3=no
+if test "${with_sqlite3}" != "no"; then
+ AC_CHECK_LIB([sqlite3], [sqlite3_open_v2],
+ [HAVE_SQLITE3=yes],
+ [HAVE_SQLITE3=no])
+ if test "$HAVE_SQLITE3" = "yes"; then
+ SQLITE3_LIBS=-lsqlite3
+ AC_SUBST([SQLITE3_LIBS])
+ LIBS="$SQLITE3_LIBS $LIBS"
+ AC_DEFINE([HAVE_SQLITE3], [1],
+ [Define to 1 if you have the libsqlite3 library (-lsqlite).])
+ # Windows loads libsqlite dynamically
+ if test "${opsys}" = "mingw32"; then
+ SQLITE3_LIBS=
+ fi
+ AC_CHECK_LIB([sqlite3], [sqlite3_load_extension],
+ [HAVE_SQLITE3_LOAD_EXTENSION=yes],
+ [HAVE_SQLITE3_LOAD_EXTENSION=no])
+ if test "$HAVE_SQLITE3_LOAD_EXTENSION" = "yes"; then
+ AC_DEFINE([HAVE_SQLITE3_LOAD_EXTENSION], [1],
+ [Define to 1 if sqlite3 supports loading extensions.])
+ fi
+ fi
+fi
+
HAVE_IMAGEMAGICK=no
-if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}" = "yes"; then
+if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}" = "yes" || \
+ test "${HAVE_BE_APP}" = "yes" || test "${window_system}" = "pgtk"; then
if test "${with_imagemagick}" != "no"; then
- ## 6.3.5 is the earliest version known to work; see Bug#17339.
- ## 6.8.2 makes Emacs crash; see Bug#13867.
- ## 7 and later have not been ported to; See Bug#25967.
- IMAGEMAGICK_MODULE="Wand >= 6.3.5 Wand != 6.8.2 Wand < 7"
- EMACS_CHECK_MODULES([IMAGEMAGICK], [$IMAGEMAGICK_MODULE])
+ if test -n "$BREW"; then
+ # Homebrew doesn't link ImageMagick 6 by default, so make sure
+ # pkgconfig can find it.
+ export PKG_CONFIG_PATH="$PKG_CONFIG_PATH$PATH_SEPARATOR`$BREW --prefix imagemagick@6 2>/dev/null`/lib/pkgconfig"
+ fi
+
+ EMACS_CHECK_MODULES([IMAGEMAGICK], [MagickWand >= 7])
+ if test $HAVE_IMAGEMAGICK = yes; then
+ AC_DEFINE([HAVE_IMAGEMAGICK7], [1],
+ [Define to 1 if using ImageMagick7.])
+ else
+ ## 6.3.5 is the earliest version known to work; see Bug#17339.
+ ## 6.8.2 makes Emacs crash; see Bug#13867.
+ EMACS_CHECK_MODULES([IMAGEMAGICK], [Wand >= 6.3.5 Wand != 6.8.2])
+ fi
if test $HAVE_IMAGEMAGICK = yes; then
OLD_CFLAGS=$CFLAGS
@@ -2530,8 +2852,11 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}"
fi
fi
if test $HAVE_IMAGEMAGICK = yes; then
- AC_DEFINE([HAVE_IMAGEMAGICK], 1, [Define to 1 if using ImageMagick.])
+ AC_DEFINE([HAVE_IMAGEMAGICK], [1], [Define to 1 if using ImageMagick.])
else
+ if test "${with_imagemagick}" != "no"; then
+ AC_MSG_ERROR([ImageMagick wanted, but it does not compile. Maybe some library files are missing?]);
+ fi
IMAGEMAGICK_CFLAGS=
IMAGEMAGICK_LIBS=
fi
@@ -2540,12 +2865,12 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}"
fi
fi
-AC_CHECK_LIB(anl, getaddrinfo_a, HAVE_GETADDRINFO_A=yes)
+AC_CHECK_LIB([anl], [getaddrinfo_a], [HAVE_GETADDRINFO_A=yes])
if test "${HAVE_GETADDRINFO_A}" = "yes"; then
- AC_DEFINE(HAVE_GETADDRINFO_A, 1,
+ AC_DEFINE([HAVE_GETADDRINFO_A], [1],
[Define to 1 if you have getaddrinfo_a for asynchronous DNS resolution.])
GETADDRINFO_A_LIBS="-lanl"
- AC_SUBST(GETADDRINFO_A_LIBS)
+ AC_SUBST([GETADDRINFO_A_LIBS])
fi
HAVE_GTK=no
@@ -2555,18 +2880,22 @@ check_gtk2=no
gtk3_pkg_errors=
if test "${opsys}" != "mingw32"; then
if test "${with_gtk3}" = "yes" || test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
- GLIB_REQUIRED=2.28
- GTK_REQUIRED=3.0
+ GLIB_REQUIRED=2.37.5
+ if test "${window_system}" = "x11"; then
+ GTK_REQUIRED=3.10
+ else
+ GTK_REQUIRED=3.22.23
+ fi
GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
dnl Checks for libraries.
EMACS_CHECK_MODULES([GTK], [$GTK_MODULES],
[pkg_check_gtk=yes], [pkg_check_gtk=no])
if test "$pkg_check_gtk" = "no" && test "$with_gtk3" = "yes"; then
- AC_MSG_ERROR($GTK_PKG_ERRORS)
+ AC_MSG_ERROR([$GTK_PKG_ERRORS])
fi
if test "$pkg_check_gtk" = "yes"; then
- AC_DEFINE(HAVE_GTK3, 1, [Define to 1 if using GTK 3 or later.])
+ AC_DEFINE([HAVE_GTK3], [1], [Define to 1 if using GTK 3 or later.])
GTK_OBJ=emacsgtkfixed.o
gtk_term_header=gtkutil.h
USE_GTK_TOOLKIT="GTK3"
@@ -2583,8 +2912,8 @@ if test "${opsys}" != "mingw32"; then
fi
if test "${with_gtk2}" = "yes" || test "$check_gtk2" = "yes"; then
- GLIB_REQUIRED=2.10
- GTK_REQUIRED=2.10
+ GLIB_REQUIRED=2.28
+ GTK_REQUIRED=2.24
GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
dnl Checks for libraries.
@@ -2593,7 +2922,7 @@ if test "${opsys}" != "mingw32"; then
if test "$pkg_check_gtk" = "no" &&
{ test "$with_gtk" = yes || test "$with_gtk2" = "yes"; }
then
- AC_MSG_ERROR($gtk3_pkg_errors$GTK_PKG_ERRORS)
+ AC_MSG_ERROR([$gtk3_pkg_errors$GTK_PKG_ERRORS])
fi
test "$pkg_check_gtk" = "yes" && USE_GTK_TOOLKIT="GTK2"
fi
@@ -2604,7 +2933,7 @@ OLD_LIBS=$LIBS
if test x"$pkg_check_gtk" = xyes; then
- AC_SUBST(GTK_LIBS)
+ AC_SUBST([GTK_LIBS])
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$GTK_LIBS $LIBS"
dnl Try to compile a simple GTK program.
@@ -2636,7 +2965,7 @@ if test x"$pkg_check_gtk" = xyes; then
else
C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
HAVE_GTK=yes
- AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
+ AC_DEFINE([USE_GTK], [1], [Define to 1 if using GTK.])
GTK_OBJ="gtkutil.o $GTK_OBJ"
term_header=$gtk_term_header
USE_X_TOOLKIT=none
@@ -2644,11 +2973,11 @@ if test x"$pkg_check_gtk" = xyes; then
closing open displays. This is no problem if you just use
one display, but if you use more than one and close one of them
Emacs may crash.
- See http://bugzilla.gnome.org/show_bug.cgi?id=85715]])
+ See https://gitlab.gnome.org/GNOME/gtk/issues/221]])
fi
fi
-AC_SUBST(GTK_OBJ)
+AC_SUBST([GTK_OBJ])
if test "${HAVE_GTK}" = "yes"; then
@@ -2659,68 +2988,42 @@ if test "${HAVE_GTK}" = "yes"; then
with_toolkit_scroll_bars=yes
fi
- dnl Check if we have the old file selection dialog declared and
- dnl in the link library. In 2.x it may be in the library,
- dnl but not declared if deprecated featured has been selected out.
- dnl AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION.
- HAVE_GTK_FILE_SELECTION=no
- AC_CHECK_DECL(GTK_TYPE_FILE_SELECTION, HAVE_GTK_FILE_SELECTION=yes,
- HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT
-#include <gtk/gtk.h>])
- if test "$HAVE_GTK_FILE_SELECTION" = yes; then
- AC_CHECK_FUNCS(gtk_file_selection_new)
- fi
+ term_header=gtkutil.h
- dnl Same as above for gtk_handle_box.
- HAVE_GTK_HANDLE_BOX=no
- AC_CHECK_DECL(GTK_TYPE_HANDLE_BOX, HAVE_GTK_HANDLE_BOX=yes,
- HAVE_GTK_HANDLE_BOX=no, [AC_INCLUDES_DEFAULT
-#include <gtk/gtk.h>])
- if test "$HAVE_GTK_HANDLE_BOX" = yes; then
- AC_CHECK_FUNCS(gtk_handle_box_new)
- fi
+ if test "${USE_GTK_TOOLKIT}" = GTK2; then
- dnl Same as above for gtk_tearoff_menu_item.
- HAVE_GTK_TEAROFF_MENU_ITEM=no
- AC_CHECK_DECL(GTK_TYPE_TEAROFF_MENU_ITEM, HAVE_GTK_TEAROFF_MENU_ITEM=yes,
- HAVE_GTK_TEAROFF_MENU_ITEM=no, [AC_INCLUDES_DEFAULT
+ dnl Check if we have the old file selection dialog declared and
+ dnl in the link library. In 2.x it may be in the library,
+ dnl but not declared if deprecated featured has been selected out.
+ dnl AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION.
+ HAVE_GTK_FILE_SELECTION=no
+ AC_CHECK_DECL([GTK_TYPE_FILE_SELECTION],
+ [HAVE_GTK_FILE_SELECTION=yes],
+ [HAVE_GTK_FILE_SELECTION=no],
+ [AC_INCLUDES_DEFAULT
#include <gtk/gtk.h>])
- if test "$HAVE_GTK_TEAROFF_MENU_ITEM" = yes; then
- AC_CHECK_FUNCS(gtk_tearoff_menu_item_new)
- 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_window_set_has_resize_grip)
+ if test "$HAVE_GTK_FILE_SELECTION" = yes; then
+ AC_CHECK_FUNCS([gtk_file_selection_new])
+ fi
- term_header=gtkutil.h
+ dnl This procedure causes a bug on certain Ubuntu GTK+2 builds
+ AC_CHECK_FUNCS([gtk_window_set_has_resize_grip])
+ fi
fi
+CFLAGS=$OLD_CFLAGS
+LIBS=$OLD_LIBS
-dnl Enable xwidgets if GTK3 and WebKitGTK+ are available.
-HAVE_XWIDGETS=no
-XWIDGETS_OBJ=
-if test "$with_xwidgets" != "no"; then
- test "$USE_GTK_TOOLKIT" = "GTK3" && test "$window_system" != "none" ||
- AC_MSG_ERROR([xwidgets requested but gtk3 not used.])
-
- WEBKIT_REQUIRED=2.12
- WEBKIT_MODULES="webkit2gtk-4.0 >= $WEBKIT_REQUIRED"
- EMACS_CHECK_MODULES([WEBKIT], [$WEBKIT_MODULES])
- HAVE_XWIDGETS=$HAVE_WEBKIT
- test $HAVE_XWIDGETS = yes ||
- AC_MSG_ERROR([xwidgets requested but WebKitGTK+ not found.])
-
- XWIDGETS_OBJ=xwidget.o
- AC_DEFINE([HAVE_XWIDGETS], 1, [Define to 1 if you have xwidgets support.])
+PGTK_OBJ=
+PGTK_LIBS=
+if test "$window_system" = "pgtk"; then
+ PGTK_OBJ="pgtkfns.o pgtkterm.o pgtkselect.o pgtkmenu.o pgtkim.o xsettings.o"
+ PGTK_LIBS="$GTK_LIBS"
fi
-AC_SUBST(XWIDGETS_OBJ)
+AC_SUBST([PGTK_OBJ])
+AC_SUBST([PGTK_LIBS])
-CFLAGS=$OLD_CFLAGS
-LIBS=$OLD_LIBS
+AC_CHECK_FUNCS([malloc_trim])
dnl D-Bus has been tested under GNU/Linux only. Must be adapted for
dnl other platforms.
@@ -2729,29 +3032,29 @@ DBUS_OBJ=
if test "${with_dbus}" = "yes"; then
EMACS_CHECK_MODULES([DBUS], [dbus-1 >= 1.0])
if test "$HAVE_DBUS" = yes; then
- AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
+ AC_DEFINE([HAVE_DBUS], [1], [Define to 1 if using D-Bus.])
dnl dbus_watch_get_unix_fd has been introduced in D-Bus 1.1.1.
dnl dbus_type_is_valid and dbus_validate_* have been introduced in
dnl D-Bus 1.5.12.
OLD_LIBS=$LIBS
LIBS="$LIBS $DBUS_LIBS"
- AC_CHECK_FUNCS(dbus_watch_get_unix_fd \
+ AC_CHECK_FUNCS([dbus_watch_get_unix_fd \
dbus_type_is_valid \
dbus_validate_bus_name \
dbus_validate_path \
dbus_validate_interface \
- dbus_validate_member)
+ dbus_validate_member])
LIBS=$OLD_LIBS
DBUS_OBJ=dbusbind.o
fi
fi
-AC_SUBST(DBUS_CFLAGS)
-AC_SUBST(DBUS_LIBS)
-AC_SUBST(DBUS_OBJ)
+AC_SUBST([DBUS_CFLAGS])
+AC_SUBST([DBUS_LIBS])
+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
+if test "${HAVE_X11}" = "yes" -o "${window_system}" = "pgtk" && test "${with_gsettings}" = "yes"; then
EMACS_CHECK_MODULES([GSETTINGS], [gio-2.0 >= 2.26])
if test "$HAVE_GSETTINGS" = "yes"; then
old_CFLAGS=$CFLAGS
@@ -2772,7 +3075,7 @@ if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then
[emacs_cv_gsettings_in_gio=yes], [emacs_cv_gsettings_in_gio=no])])
if test "$emacs_cv_gsettings_in_gio" = "yes"; then
- AC_DEFINE(HAVE_GSETTINGS, 1, [Define to 1 if using GSettings.])
+ AC_DEFINE([HAVE_GSETTINGS], [1], [Define to 1 if using GSettings.])
SETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
SETTINGS_LIBS="$GSETTINGS_LIBS"
test "$with_gconf" = "yes" || with_gconf=no
@@ -2781,14 +3084,15 @@ if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then
LIBS=$old_LIBS
fi
fi
+AC_SUBST([HAVE_GSETTINGS])
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
-if test "${HAVE_X11}" = "yes" && test "${with_gconf}" != "no"; then
+if test "${HAVE_X11}" = "yes" -o "${window_system}" = "pgtk" && test "${with_gconf}" != "no"; then
EMACS_CHECK_MODULES([GCONF], [gconf-2.0 >= 2.13])
if test "$HAVE_GCONF" = yes; then
- AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
+ 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.
SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GCONF_CFLAGS"
SETTINGS_LIBS="$SETTINGS_LIBS $GCONF_LIBS"
@@ -2808,28 +3112,35 @@ if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then
CFLAGS="$SAVE_CFLAGS"
LIBS="$SAVE_LIBS"
fi
-AC_SUBST(SETTINGS_CFLAGS)
-AC_SUBST(SETTINGS_LIBS)
+AC_SUBST([SETTINGS_CFLAGS])
+AC_SUBST([SETTINGS_LIBS])
+USE_STARTUP_NOTIFICATION=no
+if test "${HAVE_GTK}" = "yes"; then
+ USE_STARTUP_NOTIFICATION=yes
+fi
+AC_SUBST([USE_STARTUP_NOTIFICATION])
dnl SELinux is available for GNU/Linux only.
HAVE_LIBSELINUX=no
LIBSELINUX_LIBS=
if test "${with_selinux}" = "yes"; then
- AC_CHECK_LIB([selinux], [lgetfilecon], HAVE_LIBSELINUX=yes, HAVE_LIBSELINUX=no)
+ AC_CHECK_LIB([selinux], [lgetfilecon],
+ [HAVE_LIBSELINUX=yes],
+ [HAVE_LIBSELINUX=no])
if test "$HAVE_LIBSELINUX" = yes; then
- AC_DEFINE(HAVE_LIBSELINUX, 1, [Define to 1 if using SELinux.])
+ AC_DEFINE([HAVE_LIBSELINUX], [1], [Define to 1 if using SELinux.])
LIBSELINUX_LIBS=-lselinux
fi
fi
-AC_SUBST(LIBSELINUX_LIBS)
+AC_SUBST([LIBSELINUX_LIBS])
HAVE_GNUTLS=no
-if test "${with_gnutls}" = "yes" ; then
+if test "${with_gnutls}" != "no" ; then
EMACS_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.12.2],
[HAVE_GNUTLS=yes], [HAVE_GNUTLS=no])
if test "${HAVE_GNUTLS}" = "yes"; then
- AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
+ AC_DEFINE([HAVE_GNUTLS], [1], [Define if using GnuTLS.])
fi
# Windows loads GnuTLS dynamically
@@ -2838,8 +3149,8 @@ if test "${with_gnutls}" = "yes" ; then
fi
fi
-AC_SUBST(LIBGNUTLS_LIBS)
-AC_SUBST(LIBGNUTLS_CFLAGS)
+AC_SUBST([LIBGNUTLS_LIBS])
+AC_SUBST([LIBGNUTLS_CFLAGS])
HAVE_LIBSYSTEMD=no
if test "${with_libsystemd}" = "yes" ; then
@@ -2849,12 +3160,33 @@ if test "${with_libsystemd}" = "yes" ; then
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.])
+ AC_DEFINE([HAVE_LIBSYSTEMD], [1], [Define if using libsystemd.])
+ fi
+fi
+
+AC_SUBST([LIBSYSTEMD_LIBS])
+AC_SUBST([LIBSYSTEMD_CFLAGS])
+
+HAVE_JSON=no
+JSON_OBJ=
+
+if test "${with_json}" != no; then
+ EMACS_CHECK_MODULES([JSON], [jansson >= 2.7],
+ [HAVE_JSON=yes], [HAVE_JSON=no])
+ if test "${HAVE_JSON}" = yes; then
+ AC_DEFINE([HAVE_JSON], [1], [Define if using Jansson.])
+ JSON_OBJ=json.o
+ fi
+
+ # Windows loads libjansson dynamically
+ if test "${opsys}" = "mingw32"; then
+ JSON_LIBS=
fi
fi
-AC_SUBST(LIBSYSTEMD_LIBS)
-AC_SUBST(LIBSYSTEMD_CFLAGS)
+AC_SUBST([JSON_LIBS])
+AC_SUBST([JSON_CFLAGS])
+AC_SUBST([JSON_OBJ])
NOTIFY_OBJ=
NOTIFY_SUMMARY=no
@@ -2867,9 +3199,9 @@ case $with_file_notification,$opsys in
Consider using gfile instead.])
;;
w32,* | yes,mingw32)
- AC_CHECK_HEADER(windows.h)
+ AC_CHECK_HEADER([windows.h])
if test "$ac_cv_header_windows_h" = yes ; then
- AC_DEFINE(HAVE_W32NOTIFY, 1, [Define to 1 to use w32notify.])
+ AC_DEFINE([HAVE_W32NOTIFY], [1], [Define to 1 to use w32notify.])
NOTIFY_OBJ=w32notify.o
NOTIFY_SUMMARY="yes (w32)"
fi ;;
@@ -2878,11 +3210,11 @@ esac
dnl inotify is available only on GNU/Linux.
case $with_file_notification,$NOTIFY_OBJ in
inotify, | yes,)
- AC_CHECK_HEADER(sys/inotify.h)
+ AC_CHECK_HEADER([sys/inotify.h])
if test "$ac_cv_header_sys_inotify_h" = yes ; then
- AC_CHECK_FUNC(inotify_init1)
+ AC_CHECK_FUNC([inotify_init1])
if test "$ac_cv_func_inotify_init1" = yes; then
- AC_DEFINE(HAVE_INOTIFY, 1, [Define to 1 to use inotify.])
+ AC_DEFINE([HAVE_INOTIFY], [1], [Define to 1 to use inotify.])
NOTIFY_OBJ=inotify.o
NOTIFY_SUMMARY="yes -lglibc (inotify)"
fi
@@ -2894,16 +3226,16 @@ case $with_file_notification,$NOTIFY_OBJ in
kqueue,* | yes,)
EMACS_CHECK_MODULES([KQUEUE], [libkqueue])
if test "$HAVE_KQUEUE" = "yes"; then
- AC_DEFINE(HAVE_KQUEUE, 1, [Define to 1 to use kqueue.])
+ AC_DEFINE([HAVE_KQUEUE], [1], [Define to 1 to use kqueue.])
CPPFLAGS="$CPPFLAGS -I/usr/include/kqueue"
NOTIFY_CFLAGS=$KQUEUE_CFLAGS
NOTIFY_LIBS=$KQUEUE_LIBS
NOTIFY_OBJ=kqueue.o
NOTIFY_SUMMARY="yes -lkqueue"
else
- AC_SEARCH_LIBS(kqueue, [])
+ AC_SEARCH_LIBS([kqueue], [])
if test "$ac_cv_search_kqueue" != no; then
- AC_DEFINE(HAVE_KQUEUE, 1, [Define to 1 to use kqueue.])
+ AC_DEFINE([HAVE_KQUEUE], [1], [Define to 1 to use kqueue.])
NOTIFY_OBJ=kqueue.o
NOTIFY_SUMMARY="yes (kqueue)"
fi
@@ -2921,7 +3253,7 @@ Consider kqueue instead.])
else
EMACS_CHECK_MODULES([GFILENOTIFY], [gio-2.0 >= 2.24])
if test "$HAVE_GFILENOTIFY" = "yes"; then
- AC_DEFINE(HAVE_GFILENOTIFY, 1, [Define to 1 if using GFile.])
+ AC_DEFINE([HAVE_GFILENOTIFY], [1], [Define to 1 if using GFile.])
NOTIFY_CFLAGS=$GFILENOTIFY_CFLAGS
NOTIFY_LIBS=$GFILENOTIFY_LIBS
NOTIFY_OBJ=gfilenotify.o
@@ -2936,11 +3268,12 @@ case $with_file_notification,$NOTIFY_OBJ in
esac
if test -n "$NOTIFY_OBJ"; then
- AC_DEFINE(USE_FILE_NOTIFY, 1, [Define to 1 if using file notifications.])
+ AC_DEFINE([USE_FILE_NOTIFY], [1],
+ [Define to 1 if using file notifications.])
fi
-AC_SUBST(NOTIFY_CFLAGS)
-AC_SUBST(NOTIFY_LIBS)
-AC_SUBST(NOTIFY_OBJ)
+AC_SUBST([NOTIFY_CFLAGS])
+AC_SUBST([NOTIFY_LIBS])
+AC_SUBST([NOTIFY_OBJ])
dnl Do not put whitespace before the #include statements below.
dnl Older compilers (eg sunos4 cc) choke on it.
@@ -2948,36 +3281,37 @@ HAVE_XAW3D=no
LUCID_LIBW=
if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
if test "$with_xaw3d" != no; then
- AC_CACHE_VAL(emacs_cv_xaw3d,
+ AC_CACHE_VAL([emacs_cv_xaw3d],
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <X11/Intrinsic.h>
#include <X11/Xaw3d/Simple.h>]],
[[]])],
- [AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb,
- emacs_cv_xaw3d=yes, emacs_cv_xaw3d=no)],
- emacs_cv_xaw3d=no)])
+ [AC_CHECK_LIB([Xaw3d], [XawScrollbarSetThumb],
+ [emacs_cv_xaw3d=yes],
+ [emacs_cv_xaw3d=no])],
+ [emacs_cv_xaw3d=no])])
else
emacs_cv_xaw3d=no
fi
if test $emacs_cv_xaw3d = yes; then
- AC_MSG_CHECKING(for xaw3d)
+ AC_MSG_CHECKING([for xaw3d])
AC_MSG_RESULT([yes; using Lucid toolkit])
USE_X_TOOLKIT=LUCID
HAVE_XAW3D=yes
LUCID_LIBW=-lXaw3d
- AC_DEFINE(HAVE_XAW3D, 1,
+ AC_DEFINE([HAVE_XAW3D], [1],
[Define to 1 if you have the Xaw3d library (-lXaw3d).])
else
- AC_MSG_CHECKING(for xaw3d)
- AC_MSG_RESULT(no)
- AC_MSG_CHECKING(for libXaw)
- AC_CACHE_VAL(emacs_cv_xaw,
+ AC_MSG_CHECKING([for xaw3d])
+ AC_MSG_RESULT([no])
+ AC_MSG_CHECKING([for libXaw])
+ AC_CACHE_VAL([emacs_cv_xaw],
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <X11/Intrinsic.h>
#include <X11/Xaw/Simple.h>]],
[[]])],
- emacs_cv_xaw=yes,
- emacs_cv_xaw=no)])
+ [emacs_cv_xaw=yes],
+ [emacs_cv_xaw=no])])
if test $emacs_cv_xaw = yes; then
AC_MSG_RESULT([yes; using Lucid toolkit])
USE_X_TOOLKIT=LUCID
@@ -2999,17 +3333,18 @@ X_TOOLKIT_TYPE=$USE_X_TOOLKIT
LIBXTR6=
LIBXMU=
if test "${USE_X_TOOLKIT}" != "none"; then
- AC_MSG_CHECKING(X11 toolkit version)
- AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
+ AC_MSG_CHECKING([X11 toolkit version])
+ AC_CACHE_VAL([emacs_cv_x11_toolkit_version_6],
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Intrinsic.h>]],
[[#if XtSpecificationRelease < 6
fail;
#endif
-]])], emacs_cv_x11_toolkit_version_6=yes, emacs_cv_x11_toolkit_version_6=no)])
+]])], [emacs_cv_x11_toolkit_version_6=yes],
+ [emacs_cv_x11_toolkit_version_6=no])])
HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6
if test $emacs_cv_x11_toolkit_version_6 = yes; then
- AC_MSG_RESULT(6 or newer)
- AC_DEFINE(HAVE_X11XTR6, 1,
+ AC_MSG_RESULT([6 or newer])
+ AC_DEFINE([HAVE_X11XTR6], [1],
[Define to 1 if you have the X11R6 or newer version of Xt.])
LIBXTR6="-lSM -lICE"
case "$opsys" in
@@ -3017,7 +3352,7 @@ fail;
unixware) LIBXTR6="$LIBXTR6 -lw" ;;
esac
else
- AC_MSG_RESULT(before 6)
+ AC_MSG_RESULT([before 6])
fi
dnl If using toolkit, check whether libXmu.a exists.
@@ -3035,8 +3370,8 @@ dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
LIBS=$OLDLIBS
dnl ac_cv_search_XmuConvertStandardSelection is also referenced below.
fi
-AC_SUBST(LIBXTR6)
-AC_SUBST(LIBXMU)
+AC_SUBST([LIBXTR6])
+AC_SUBST([LIBXMU])
LIBXP=
if test "${USE_X_TOOLKIT}" = "MOTIF"; then
@@ -3054,21 +3389,21 @@ if test "${USE_X_TOOLKIT}" = "MOTIF"; then
else
emacs_cv_openmotif=no
fi
- AC_CACHE_CHECK(for (Open)Motif version 2.1, emacs_cv_motif_version_2_1,
+ AC_CACHE_CHECK([for (Open)Motif version 2.1], [emacs_cv_motif_version_2_1],
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <Xm/Xm.h>]],
[[#if XmVERSION > 2 || (XmVERSION == 2 && XmREVISION >= 1)
int x = 5;
#else
Motif version prior to 2.1.
#endif]])],
- emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)])
+ [emacs_cv_motif_version_2_1=yes],
+ [emacs_cv_motif_version_2_1=no])])
if test $emacs_cv_motif_version_2_1 = yes; then
- AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp)
+ AC_CHECK_LIB([Xp], [XpCreateContext], [LIBXP=-lXp])
if test x$emacs_cv_openmotif = xyes; then
REAL_CPPFLAGS="-I/usr/include/openmotif $REAL_CPPFLAGS"
fi
else
- AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif,
# We put this in CFLAGS temporarily to precede other -I options
# that might be in CFLAGS temporarily.
# We put this in CPPFLAGS where it precedes the other -I options.
@@ -3076,9 +3411,14 @@ Motif version prior to 2.1.
OLD_CFLAGS=$CFLAGS
CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CPPFLAGS"
CFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CFLAGS"
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include </usr/X11R6/LessTif/Motif1.2/include/Xm/Xm.h>]],
- [[int x = 5;]])],
- emacs_cv_lesstif=yes, emacs_cv_lesstif=no)])
+ AC_CACHE_CHECK([for LessTif where some systems put it], [emacs_cv_lesstif],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include </usr/X11R6/LessTif/Motif1.2/include/Xm/Xm.h>
+ ]],
+ [[int x = 5;]])],
+ [emacs_cv_lesstif=yes],
+ [emacs_cv_lesstif=no])])
if test $emacs_cv_lesstif = yes; then
# Make sure this -I option remains in CPPFLAGS after it is set
# back to REAL_CPPFLAGS.
@@ -3100,29 +3440,34 @@ dnl Use toolkit scroll bars if configured for GTK or X toolkit and either
dnl using Motif or Xaw3d is available, and unless
dnl --with-toolkit-scroll-bars=no was specified.
-AH_TEMPLATE(USE_TOOLKIT_SCROLL_BARS,
+AH_TEMPLATE([USE_TOOLKIT_SCROLL_BARS],
[Define to 1 if we should use toolkit scroll bars.])dnl
USE_TOOLKIT_SCROLL_BARS=no
if test "${with_toolkit_scroll_bars}" != "no"; then
if test "${USE_X_TOOLKIT}" != "none"; then
if test "${USE_X_TOOLKIT}" = "MOTIF"; then
- AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
+ AC_DEFINE([USE_TOOLKIT_SCROLL_BARS])
HAVE_XAW3D=no
USE_TOOLKIT_SCROLL_BARS=yes
elif test "${HAVE_XAW3D}" = "yes" || test "${USE_X_TOOLKIT}" = "LUCID"; then
- AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
+ AC_DEFINE([USE_TOOLKIT_SCROLL_BARS])
USE_TOOLKIT_SCROLL_BARS=yes
fi
elif test "${HAVE_GTK}" = "yes"; then
- AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
+ AC_DEFINE([USE_TOOLKIT_SCROLL_BARS])
USE_TOOLKIT_SCROLL_BARS=yes
elif test "${HAVE_NS}" = "yes"; then
- AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
+ AC_DEFINE([USE_TOOLKIT_SCROLL_BARS])
USE_TOOLKIT_SCROLL_BARS=yes
elif test "${HAVE_W32}" = "yes"; then
- AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
+ AC_DEFINE([USE_TOOLKIT_SCROLL_BARS])
+ USE_TOOLKIT_SCROLL_BARS=yes
+ elif test "${HAVE_BE_APP}" = "yes"; then
+ AC_DEFINE([USE_TOOLKIT_SCROLL_BARS])
USE_TOOLKIT_SCROLL_BARS=yes
fi
+elif test "${window_system}" != "x11" && test "${window_system}" != "none"; then
+ AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for your system])
fi
dnl See if XIM is available.
@@ -3131,49 +3476,136 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <X11/Xresource.h>]],
[[XIMProc callback;]])],
[HAVE_XIM=yes
- AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
- HAVE_XIM=no)
-
-dnl '--with-xim' now controls only the initial value of use_xim at run time.
+ AC_DEFINE([HAVE_XIM], [1], [Define to 1 if XIM is available])],
+ [HAVE_XIM=no])
+dnl Note this is non-standard. --with-xim does not control whether
+dnl XIM support is compiled in, it only affects the runtime default of
+dnl use_xim in xterm.c.
if test "${with_xim}" != "no"; then
- AC_DEFINE(USE_XIM, 1,
- [Define to 1 if we should use XIM, if it is available.])
-fi
-
-
-if test "${HAVE_XIM}" != "no"; then
- late_CFLAGS=$CFLAGS
- if test "$GCC" = yes; then
- CFLAGS="$CFLAGS --pedantic-errors"
- fi
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include <X11/Xlib.h>
-#include <X11/Xresource.h>]],
-[[Display *display;
-XrmDatabase db;
-char *res_name;
-char *res_class;
-XIMProc callback;
-XPointer *client_data;
-#ifndef __GNUC__
-/* If we're not using GCC, it's probably not XFree86, and this is
- probably right, but we can't use something like --pedantic-errors. */
-extern Bool XRegisterIMInstantiateCallback(Display*, XrmDatabase, char*,
- char*, XIMProc, XPointer*);
-#endif
-(void)XRegisterIMInstantiateCallback(display, db, res_name, res_class, callback,
- client_data);]])],
- [emacs_cv_arg6_star=yes])
- AH_TEMPLATE(XRegisterIMInstantiateCallback_arg6,
- [Define to the type of the 6th arg of XRegisterIMInstantiateCallback,
-either XPointer or XPointer*.])dnl
- if test "$emacs_cv_arg6_star" = yes; then
- AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer*])
+ AC_DEFINE([USE_XIM], [1],
+ [Define to 1 to default runtime use of XIM to on.])
+fi
+
+# Check for XRender
+HAVE_XRENDER=no
+if test "${HAVE_X11}" = "yes"; then
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <X11/Intrinsic.h>
+ #include <X11/extensions/Xrender.h>
+ ]],
+ [[return !XRenderQueryExtension;]])],
+ [AC_CHECK_LIB([Xrender], [XRenderQueryExtension], [HAVE_XRENDER=yes])])
+ if test $HAVE_XRENDER = yes; then
+ XRENDER_LIBS="-lXrender"
+ AC_SUBST([XRENDER_LIBS])
+ AC_DEFINE([HAVE_XRENDER], [1], [Define to 1 if XRender is available.])
+ fi
+fi
+
+HAVE_CAIRO=no
+if test "${HAVE_X11}" = "yes"; then
+ if test "${with_cairo}" != "no"; then
+ CAIRO_REQUIRED=1.8.0
+ CAIRO_MODULE="cairo >= $CAIRO_REQUIRED"
+ EMACS_CHECK_MODULES([CAIRO], [$CAIRO_MODULE])
+ if test $HAVE_CAIRO = yes; then
+ CAIRO_XCB_MODULE="cairo-xcb >= $CAIRO_REQUIRED"
+ EMACS_CHECK_MODULES([CAIRO_XCB], [$CAIRO_XCB_MODULE])
+ if test $HAVE_CAIRO_XCB = yes; then
+ CAIRO_CFLAGS="$CAIRO_CFLAGS $CAIRO_XCB_CFLAGS"
+ CAIRO_LIBS="$CAIRO_LIBS $CAIRO_XCB_LIBS"
+ AC_DEFINE([USE_CAIRO_XCB], [1],
+ [Define to 1 if cairo XCB surfaces are available.])
+ fi
+ AC_DEFINE([USE_CAIRO], [1], [Define to 1 if using cairo.])
+ CFLAGS="$CFLAGS $CAIRO_CFLAGS"
+ LIBS="$LIBS $CAIRO_LIBS"
+ AC_SUBST([CAIRO_CFLAGS])
+ AC_SUBST([CAIRO_LIBS])
+ else
+ AC_MSG_WARN([cairo requested but not found.])
+ fi
+ fi
+fi
+
+dnl Enable xwidgets if GTK3 and WebKitGTK+ are available.
+dnl Enable xwidgets if macOS Cocoa and WebKit framework are available.
+HAVE_XWIDGETS=no
+XWIDGETS_OBJ=
+if test "$with_xwidgets" != "no"; then
+ if test "$USE_GTK_TOOLKIT" = "GTK3" && test "$window_system" != "none"; then
+ WEBKIT_REQUIRED=2.12
+ WEBKIT_MODULES="webkit2gtk-4.0 >= $WEBKIT_REQUIRED"
+ EMACS_CHECK_MODULES([WEBKIT], [$WEBKIT_MODULES])
+ HAVE_XWIDGETS=$HAVE_WEBKIT
+ XWIDGETS_OBJ="xwidget.o"
+ if test "$HAVE_X_WINDOWS" = "yes" && test "${with_cairo}" = "no"; then
+ CAIRO_XLIB_MODULES="cairo >= 1.8.0 cairo-xlib >= 1.8.0"
+ EMACS_CHECK_MODULES([CAIRO_XLIB], [$CAIRO_XLIB_MODULES])
+ if test $HAVE_CAIRO_XLIB = "yes"; then
+ CAIRO_CFLAGS="$CAIRO_XLIB_CFLAGS"
+ CAIRO_LIBS="$CAIRO_XLIB_LIBS"
+ AC_SUBST([CAIRO_CFLAGS])
+ AC_SUBST([CAIRO_LIBS])
+ else
+ AC_MSG_ERROR([xwidgets requested, but a suitable cairo installation wasn't found])
+ fi
+ fi
+ elif test "${NS_IMPL_COCOA}" = "yes"; then
+ dnl FIXME: Check framework WebKit2
+ dnl WEBKIT_REQUIRED=M.m.p
+ WEBKIT_LIBS="-Wl,-framework -Wl,WebKit"
+ WEBKIT_CFLAGS="-I/System/Library/Frameworks/WebKit.framework/Headers"
+ HAVE_WEBKIT="yes"
+ HAVE_XWIDGETS=$HAVE_WEBKIT
+ XWIDGETS_OBJ="xwidget.o"
+ NS_OBJC_OBJ="$NS_OBJC_OBJ nsxwidget.o"
+ dnl Update NS_OBJC_OBJ with added nsxwidget.o
+ AC_SUBST([NS_OBJC_OBJ])
+ else
+ AC_MSG_ERROR([xwidgets requested, it requires GTK3 as X window toolkit or macOS Cocoa as window system.])
+ fi
+
+ test $HAVE_XWIDGETS = yes ||
+ AC_MSG_ERROR([xwidgets requested but WebKitGTK+ or WebKit framework not found.])
+
+ AC_DEFINE([HAVE_XWIDGETS], [1], [Define to 1 if you have xwidgets support.])
+fi
+AC_SUBST([XWIDGETS_OBJ])
+
+if test "$window_system" = "pgtk"; then
+ CAIRO_REQUIRED=1.12.0
+ CAIRO_MODULE="cairo >= $CAIRO_REQUIRED"
+ EMACS_CHECK_MODULES([CAIRO], [$CAIRO_MODULE])
+ if test $HAVE_CAIRO = yes; then
+ AC_DEFINE([USE_CAIRO], [1], [Define to 1 if using cairo.])
else
- AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer])
+ AC_MSG_ERROR([cairo required but not found.])
+ fi
+
+ CFLAGS="$CFLAGS $CAIRO_CFLAGS"
+ LIBS="$LIBS $CAIRO_LIBS"
+ AC_SUBST([CAIRO_CFLAGS])
+ AC_SUBST([CAIRO_LIBS])
+fi
+
+if test "${HAVE_BE_APP}" = "yes"; then
+ if test "${with_be_cairo}" != "no"; then
+ CAIRO_REQUIRED=1.8.0
+ CAIRO_MODULE="cairo >= $CAIRO_REQUIRED"
+ EMACS_CHECK_MODULES([CAIRO], [$CAIRO_MODULE])
+ if test $HAVE_CAIRO = yes; then
+ AC_DEFINE([USE_BE_CAIRO], [1], [Define to 1 if using cairo on Haiku.])
+ CFLAGS="$CFLAGS $CAIRO_CFLAGS"
+ LIBS="$LIBS $CAIRO_LIBS"
+ AC_SUBST([CAIRO_CFLAGS])
+ AC_SUBST([CAIRO_LIBS])
+ else
+ AC_MSG_WARN([cairo requested but not found.])
+ fi
fi
- CFLAGS=$late_CFLAGS
fi
### Start of font-backend (under any platform) section.
@@ -3182,6 +3614,22 @@ fi
### Start of font-backend (under X11) section.
if test "${HAVE_X11}" = "yes"; then
+ if test $HAVE_CAIRO = yes; then
+ dnl Strict linkers fail with
+ dnl ftfont.o: undefined reference to symbol 'FT_New_Face'
+ dnl if -lfreetype is not specified.
+ dnl The following is needed to set FREETYPE_LIBS.
+ EMACS_CHECK_MODULES([FREETYPE], [freetype2])
+
+ test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR([cairo requires libfreetype])
+
+ EMACS_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.2.0])
+
+ test "$HAVE_FONTCONFIG" = "no" &&
+ AC_MSG_ERROR([cairo requires libfontconfig])
+ dnl For the "Does Emacs use" message at the end.
+ HAVE_XFT=no
+ else
## Use -lXft if available, unless '--with-xft=no'.
HAVE_XFT=maybe
if test "x${with_x}" = "xno"; then
@@ -3196,35 +3644,35 @@ if test "${HAVE_X11}" = "yes"; then
if test "x${with_xft}" != "xno"; then
EMACS_CHECK_MODULES([XFT], [xft >= 0.13.0], [], [HAVE_XFT=no])
- ## Because xftfont.c uses XRenderQueryExtension, we also
- ## need to link to -lXrender.
- HAVE_XRENDER=no
- AC_CHECK_LIB(Xrender, XRenderQueryExtension, HAVE_XRENDER=yes)
+ ## Because xterm.c uses XRenderQueryExtension when XFT is
+ ## enabled, we also need to link to -lXrender.
if test "$HAVE_XFT" != no && test "$HAVE_XRENDER" != no; then
OLD_CPPFLAGS="$CPPFLAGS"
OLD_CFLAGS="$CFLAGS"
OLD_LIBS="$LIBS"
CPPFLAGS="$CPPFLAGS $XFT_CFLAGS"
CFLAGS="$CFLAGS $XFT_CFLAGS"
- XFT_LIBS="-lXrender $XFT_LIBS"
LIBS="$XFT_LIBS $LIBS"
- AC_CHECK_HEADER(X11/Xft/Xft.h,
- AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS) , ,
+ AC_CHECK_HEADER([X11/Xft/Xft.h],
+ [AC_CHECK_LIB([Xft], [XftFontOpen], [HAVE_XFT=yes],
+ [], [$XFT_LIBS])],
+ [],
[[#include <X11/X.h>]])
if test "${HAVE_XFT}" = "yes"; then
- AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
- AC_SUBST(XFT_LIBS)
+ AC_DEFINE([HAVE_XFT], [1], [Define to 1 if you have the Xft library.])
+ AC_SUBST([XFT_LIBS])
C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
fi # "${HAVE_XFT}" = "yes"
CPPFLAGS=$OLD_CPPFLAGS
CFLAGS=$OLD_CFLAGS
LIBS=$OLD_LIBS
+ else
+ # Make sure XFT is disabled if we found XFT but not XRender
+ HAVE_XFT=no
fi # "$HAVE_XFT" != no
fi # "x${with_xft}" != "xno"
- ## We used to allow building with FreeType and without Xft.
- ## However, the ftx font backend driver is not in good shape.
if test "$HAVE_XFT" != "yes"; then
dnl For the "Does Emacs use" message at the end.
HAVE_XFT=no
@@ -3236,90 +3684,200 @@ if test "${HAVE_X11}" = "yes"; then
dnl The following is needed to set FREETYPE_LIBS.
EMACS_CHECK_MODULES([FREETYPE], [freetype2])
- test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype)
+ test "$HAVE_FREETYPE" = "no" &&
+ AC_MSG_ERROR([libxft requires libfreetype])
fi
+ fi # $HAVE_CAIRO != yes
- HAVE_LIBOTF=no
- if test "${HAVE_FREETYPE}" = "yes"; then
- AC_DEFINE(HAVE_FREETYPE, 1,
- [Define to 1 if using the freetype and fontconfig libraries.])
- if test "${with_libotf}" != "no"; then
- EMACS_CHECK_MODULES([LIBOTF], [libotf])
- if test "$HAVE_LIBOTF" = "yes"; then
- AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.])
- AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
- HAVE_OTF_GET_VARIATION_GLYPHS=yes,
- HAVE_OTF_GET_VARIATION_GLYPHS=no)
- if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
- AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1,
- [Define to 1 if libotf has OTF_get_variation_glyphs.])
- fi
+ HAVE_LIBOTF=no
+ if test "${HAVE_FREETYPE}" = "yes"; then
+ AC_DEFINE([HAVE_FREETYPE], [1],
+ [Define to 1 if using the freetype and fontconfig libraries.])
+ OLD_CFLAGS=$CFLAGS
+ OLD_LIBS=$LIBS
+ CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
+ LIBS="$FREETYPE_LIBS $LIBS"
+ AC_CHECK_FUNCS([FT_Face_GetCharVariantIndex])
+ CFLAGS=$OLD_CFLAGS
+ LIBS=$OLD_LIBS
+ if test "${with_libotf}" != "no"; then
+ EMACS_CHECK_MODULES([LIBOTF], [libotf])
+ if test "$HAVE_LIBOTF" = "yes"; then
+ AC_DEFINE([HAVE_LIBOTF], [1], [Define to 1 if using libotf.])
+ AC_CHECK_LIB([otf], [OTF_get_variation_glyphs],
+ [HAVE_OTF_GET_VARIATION_GLYPHS=yes],
+ [HAVE_OTF_GET_VARIATION_GLYPHS=no])
+ if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
+ AC_DEFINE([HAVE_OTF_GET_VARIATION_GLYPHS], [1],
+ [Define to 1 if libotf has OTF_get_variation_glyphs.])
+ fi
+ if ! $PKG_CONFIG --atleast-version=0.9.16 libotf; then
+ AC_DEFINE([HAVE_OTF_KANNADA_BUG], [1],
+[Define to 1 if libotf is affected by https://debbugs.gnu.org/28110.])
fi
fi
- dnl FIXME should there be an error if HAVE_FREETYPE != yes?
- dnl Does the new font backend require it, or can it work without it?
fi
+ dnl FIXME should there be an error if HAVE_FREETYPE != yes?
+ dnl Does the new font backend require it, or can it work without it?
+ fi
- HAVE_M17N_FLT=no
- if test "${HAVE_LIBOTF}" = yes; then
- if test "${with_m17n_flt}" != "no"; then
- EMACS_CHECK_MODULES([M17N_FLT], [m17n-flt])
- if test "$HAVE_M17N_FLT" = "yes"; then
- AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
+ HAVE_M17N_FLT=no
+ if test "${HAVE_LIBOTF}" = yes; then
+ if test "${with_m17n_flt}" != "no"; then
+ EMACS_CHECK_MODULES([M17N_FLT], [m17n-flt])
+ if test "$HAVE_M17N_FLT" = "yes"; then
+ AC_DEFINE([HAVE_M17N_FLT], [1], [Define to 1 if using libm17n-flt.])
+ fi
+ fi
+ fi
+else # "${HAVE_X11}" != "yes"
+ if test $window_system = pgtk; then
+ EMACS_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.2.0])
+ EMACS_CHECK_MODULES([FREETYPE], [freetype2])
+ if test "$HAVE_FONTCONFIG" != yes -o "$HAVE_FREETYPE" != yes; then
+ AC_MSG_ERROR([fontconfig and freetype is required.])
+ fi
+ HAVE_LIBOTF=no
+ AC_DEFINE([HAVE_FREETYPE], [1],
+ [Define to 1 if using the freetype and fontconfig libraries.])
+ if test "${with_libotf}" != "no"; then
+ EMACS_CHECK_MODULES([LIBOTF], [libotf])
+ if test "$HAVE_LIBOTF" = "yes"; then
+ AC_DEFINE([HAVE_LIBOTF], [1], [Define to 1 if using libotf.])
+ AC_CHECK_LIB([otf], [OTF_get_variation_glyphs],
+ [HAVE_OTF_GET_VARIATION_GLYPHS=yes],
+ [HAVE_OTF_GET_VARIATION_GLYPHS=no])
+ if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
+ AC_DEFINE([HAVE_OTF_GET_VARIATION_GLYPHS], [1],
+ [Define to 1 if libotf has OTF_get_variation_glyphs.])
fi
fi
fi
-else
+ else
HAVE_XFT=no
HAVE_FREETYPE=no
HAVE_LIBOTF=no
HAVE_M17N_FLT=no
+ fi
+fi # "${HAVE_X11}" != "yes"
+
+HAVE_HARFBUZZ=no
+### On MS-Windows we use hb_font_get_nominal_glyph, which appeared
+### in HarfBuzz version 1.2.3
+if test "${HAVE_W32}" = "yes"; then
+ harfbuzz_required_ver=1.2.3
+else
+ harfbuzz_required_ver=0.9.42
+fi
+if test "${HAVE_X11}" = "yes" && test "${HAVE_FREETYPE}" = "yes" \
+ || test "$window_system" = "pgtk" \
+ || test "${HAVE_W32}" = "yes"; then
+ if test "${with_harfbuzz}" != "no"; then
+ EMACS_CHECK_MODULES([HARFBUZZ], [harfbuzz >= $harfbuzz_required_ver])
+ if test "$HAVE_HARFBUZZ" = "yes"; then
+ AC_DEFINE([HAVE_HARFBUZZ], [1], [Define to 1 if using HarfBuzz.])
+ ### mingw32 and Cygwin-w32 don't use -lharfbuzz, since they load
+ ### the library dynamically.
+ if test "${HAVE_W32}" = "yes"; then
+ HARFBUZZ_LIBS=
+ fi
+ fi
+ fi
fi
-### End of font-backend (under X11) section.
+### Start of font-backend (under Haiku) selectionn.
+if test "${HAVE_BE_APP}" = "yes"; then
+ if test $HAVE_CAIRO = "yes"; then
+ EMACS_CHECK_MODULES([FREETYPE], [freetype2 >= 2.5.0])
+ test "$HAVE_FREETYPE" = "no" &&
+ AC_MSG_ERROR([cairo on Haiku requires libfreetype])
+ EMACS_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.2.0])
+ test "$HAVE_FONTCONFIG" = "no" &&
+ AC_MSG_ERROR([cairo on Haiku requires libfontconfig])
+ fi
-AC_SUBST(FREETYPE_CFLAGS)
-AC_SUBST(FREETYPE_LIBS)
-AC_SUBST(FONTCONFIG_CFLAGS)
-AC_SUBST(FONTCONFIG_LIBS)
-AC_SUBST(LIBOTF_CFLAGS)
-AC_SUBST(LIBOTF_LIBS)
-AC_SUBST(M17N_FLT_CFLAGS)
-AC_SUBST(M17N_FLT_LIBS)
+ HAVE_LIBOTF=no
-HAVE_CAIRO=no
-if test "${HAVE_X11}" = "yes"; then
- if test "${with_cairo}" != "no"; then
- CAIRO_REQUIRED=1.12.0
- CAIRO_MODULE="cairo >= $CAIRO_REQUIRED"
- EMACS_CHECK_MODULES(CAIRO, $CAIRO_MODULE)
- if test $HAVE_CAIRO = yes; then
- AC_DEFINE(USE_CAIRO, 1, [Define to 1 if using cairo.])
- else
- AC_MSG_ERROR([cairo requested but not found.])
+ if test "${HAVE_FREETYPE}" = "yes"; then
+ AC_DEFINE([HAVE_FREETYPE], [1],
+ [Define to 1 if using the freetype and fontconfig libraries.])
+ OLD_CFLAGS=$CFLAGS
+ OLD_LIBS=$LIBS
+ CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
+ LIBS="$FREETYPE_LIBS $LIBS"
+ AC_CHECK_FUNCS([FT_Face_GetCharVariantIndex])
+ CFLAGS=$OLD_CFLAGS
+ LIBS=$OLD_LIBS
+ if test "${with_libotf}" != "no"; then
+ EMACS_CHECK_MODULES([LIBOTF], [libotf])
+ if test "$HAVE_LIBOTF" = "yes"; then
+ AC_DEFINE([HAVE_LIBOTF], [1], [Define to 1 if using libotf.])
+ AC_CHECK_LIB([otf], [OTF_get_variation_glyphs],
+ [HAVE_OTF_GET_VARIATION_GLYPHS=yes],
+ [HAVE_OTF_GET_VARIATION_GLYPHS=no])
+ if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
+ AC_DEFINE([HAVE_OTF_GET_VARIATION_GLYPHS], [1],
+ [Define to 1 if libotf has OTF_get_variation_glyphs.])
+ fi
+ if ! $PKG_CONFIG --atleast-version=0.9.16 libotf; then
+ AC_DEFINE([HAVE_OTF_KANNADA_BUG], [1],
+[Define to 1 if libotf is affected by https://debbugs.gnu.org/28110.])
+ fi
+ fi
fi
+ dnl FIXME should there be an error if HAVE_FREETYPE != yes?
+ dnl Does the new font backend require it, or can it work without it?
+ fi
+fi
- CFLAGS="$CFLAGS $CAIRO_CFLAGS"
- LIBS="$LIBS $CAIRO_LIBS"
- AC_SUBST(CAIRO_CFLAGS)
- AC_SUBST(CAIRO_LIBS)
+if test "${HAVE_BE_APP}" = "yes" && test "${HAVE_FREETYPE}" = "yes"; then
+ if test "${with_harfbuzz}" != "no"; then
+ EMACS_CHECK_MODULES([HARFBUZZ], [harfbuzz >= $harfbuzz_required_ver])
+ if test "$HAVE_HARFBUZZ" = "yes"; then
+ AC_DEFINE([HAVE_HARFBUZZ], [1], [Define to 1 if using HarfBuzz.])
+ fi
fi
fi
+### End of font-backend section.
+
+AC_SUBST([FREETYPE_CFLAGS])
+AC_SUBST([FREETYPE_LIBS])
+AC_SUBST([FONTCONFIG_CFLAGS])
+AC_SUBST([FONTCONFIG_LIBS])
+AC_SUBST([HARFBUZZ_CFLAGS])
+AC_SUBST([HARFBUZZ_LIBS])
+AC_SUBST([LIBOTF_CFLAGS])
+AC_SUBST([LIBOTF_LIBS])
+AC_SUBST([M17N_FLT_CFLAGS])
+AC_SUBST([M17N_FLT_LIBS])
+
+XCB_LIBS=
if test "${HAVE_X11}" = "yes"; then
- AC_CHECK_HEADER(X11/Xlib-xcb.h,
- AC_CHECK_LIB(xcb, xcb_translate_coordinates, HAVE_XCB=yes))
+ AC_CHECK_HEADER([X11/Xlib-xcb.h],
+ [AC_CHECK_LIB([xcb], [xcb_translate_coordinates], [HAVE_XCB=yes])])
if test "${HAVE_XCB}" = "yes"; then
- AC_CHECK_LIB(X11-xcb, XGetXCBConnection, HAVE_X11_XCB=yes)
+ AC_CHECK_LIB([X11-xcb], [XGetXCBConnection], [HAVE_X11_XCB=yes])
if test "${HAVE_X11_XCB}" = "yes"; then
- AC_DEFINE(USE_XCB, 1,
+ AC_CHECK_LIB([xcb-util], [xcb_aux_sync], [HAVE_XCB_UTIL=yes])
+ if test "${HAVE_XCB_UTIL}" = "yes"; then
+ AC_DEFINE([USE_XCB], [1],
+[Define to 1 if you have the XCB library and X11-XCB library for mixed
+ X11/XCB programming.])
+ XCB_LIBS="-lX11-xcb -lxcb -lxcb-util"
+ else
+ AC_CHECK_LIB([xcb-aux], [xcb_aux_sync], [HAVE_XCB_AUX=yes])
+ if test "${HAVE_XCB_AUX}" = "yes"; then
+ AC_DEFINE([USE_XCB], [1],
[Define to 1 if you have the XCB library and X11-XCB library for mixed
- X11/XCB programming.])
- XCB_LIBS="-lX11-xcb -lxcb"
- AC_SUBST(XCB_LIBS)
+ X11/XCB programming.])
+ XCB_LIBS="-lX11-xcb -lxcb -lxcb-aux"
+ fi
+ fi
fi
fi
fi
+AC_SUBST([XCB_LIBS])
### Use -lXpm if available, unless '--with-xpm=no'.
### mingw32 doesn't use -lXpm, since it loads the library dynamically.
@@ -3331,18 +3889,18 @@ if test "${HAVE_W32}" = "yes" && test "${opsys}" = "cygwin"; then
if test "${with_xpm}" != "no"; then
SAVE_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -L/usr/lib/noX"
- AC_CHECK_HEADER(noX/xpm.h,
- [AC_CHECK_LIB(Xpm, XpmReadFileToImage, HAVE_XPM=yes)])
+ AC_CHECK_HEADER([noX/xpm.h],
+ [AC_CHECK_LIB([Xpm], [XpmReadFileToImage], [HAVE_XPM=yes])])
if test "${HAVE_XPM}" = "yes"; then
AC_CACHE_CHECK([for XpmReturnAllocPixels preprocessor define],
[emacs_cv_cpp_xpm_return_alloc_pixels],
- [AC_EGREP_CPP(no_return_alloc_pixels,
+ [AC_EGREP_CPP([no_return_alloc_pixels],
[#include "noX/xpm.h"
#ifndef XpmReturnAllocPixels
no_return_alloc_pixels
#endif
- ], emacs_cv_cpp_xpm_return_alloc_pixels=no,
- emacs_cv_cpp_xpm_return_alloc_pixels=yes)])
+ ], [emacs_cv_cpp_xpm_return_alloc_pixels=no],
+ [emacs_cv_cpp_xpm_return_alloc_pixels=yes])])
if test "$emacs_cv_cpp_xpm_return_alloc_pixels" = "no"; then
HAVE_XPM=no
@@ -3352,28 +3910,33 @@ no_return_alloc_pixels
fi
if test "${HAVE_XPM}" = "yes"; then
- AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
+ AC_DEFINE([HAVE_XPM], [1],
+ [Define to 1 if you have the Xpm library (-lXpm).])
LIBXPM=-lXpm
fi
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
+ case $opsys,$with_xpm_set,$with_xpm in
+ aix4-2,set,yes) ;;
+ aix4-2,*) with_xpm=no;;
+ esac
if test "${with_xpm}" != "no"; then
- AC_CHECK_HEADER(X11/xpm.h,
- [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
+ AC_CHECK_HEADER([X11/xpm.h],
+ [AC_CHECK_LIB([Xpm], [XpmReadFileToPixmap],
+ [HAVE_XPM=yes], [], [-lX11])])
if test "${HAVE_XPM}" = "yes"; then
AC_CACHE_CHECK([for XpmReturnAllocPixels preprocessor define],
[emacs_cv_cpp_xpm_return_alloc_pixels],
- [AC_EGREP_CPP(no_return_alloc_pixels,
+ [AC_EGREP_CPP([no_return_alloc_pixels],
[#include "X11/xpm.h"
#ifndef XpmReturnAllocPixels
no_return_alloc_pixels
#endif
- ], emacs_cv_cpp_xpm_return_alloc_pixels=no,
- emacs_cv_cpp_xpm_return_alloc_pixels=yes)])
+ ], [emacs_cv_cpp_xpm_return_alloc_pixels=no],
+ [emacs_cv_cpp_xpm_return_alloc_pixels=yes])])
if test "$emacs_cv_cpp_xpm_return_alloc_pixels" = "no"; then
HAVE_XPM=no
@@ -3382,7 +3945,8 @@ no_return_alloc_pixels
fi
if test "${HAVE_XPM}" = "yes"; then
- AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
+ 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.
@@ -3396,80 +3960,83 @@ fi
### run time).
if test "${opsys}" = "mingw32"; then
if test "${with_xpm}" != "no"; then
- AC_CHECK_HEADER(X11/xpm.h, HAVE_XPM=yes, HAVE_XPM=no, [
+ AC_CHECK_HEADER([X11/xpm.h], [HAVE_XPM=yes], [HAVE_XPM=no], [
#define FOR_MSW 1])
fi
if test "${HAVE_XPM}" = "yes"; then
- AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
+ AC_DEFINE([HAVE_XPM], [1],
+ [Define to 1 if you have the Xpm library (-lXpm).])
fi
fi
-AC_SUBST(LIBXPM)
+AC_SUBST([LIBXPM])
### Use -ljpeg if available, unless '--with-jpeg=no'.
HAVE_JPEG=no
LIBJPEG=
-if test "${with_jpeg}" != "no"; then
- AC_CACHE_CHECK([for jpeglib 6b or later],
- [emacs_cv_jpeglib],
- [OLD_LIBS=$LIBS
- for emacs_cv_jpeglib in yes -ljpeg no; do
- case $emacs_cv_jpeglib in
- yes) ;;
- no) break;;
- *) LIBS="$LIBS $emacs_cv_jpeglib";;
- esac
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#undef HAVE_STDLIB_H /* Avoid config.h/jpeglib.h collision. */
- #include <stdio.h> /* jpeglib.h needs FILE and size_t. */
- #include <jpeglib.h>
- #include <jerror.h>
- char verify[JPEG_LIB_VERSION < 62 ? -1 : 1];
- struct jpeg_decompress_struct cinfo;
- ]],
- [[
- jpeg_create_decompress (&cinfo);
- WARNMS (&cinfo, JWRN_JPEG_EOF);
- jpeg_destroy_decompress (&cinfo);
- ]])],
- [emacs_link_ok=yes],
- [emacs_link_ok=no])
- LIBS=$OLD_LIBS
- test $emacs_link_ok = yes && break
- done])
- if test "$emacs_cv_jpeglib" != no; then
- HAVE_JPEG=yes
- AC_DEFINE([HAVE_JPEG], 1,
- [Define to 1 if you have the jpeg library (typically -ljpeg).])
- ### mingw32 doesn't use -ljpeg, since it loads the library
- ### dynamically when needed, and doesn't want a run-time
- ### dependency on the jpeglib DLL.
- test "$emacs_cv_jpeglib" != yes && test "${opsys}" != "mingw32" \
- && LIBJPEG=$emacs_cv_jpeglib
+if test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes" \
+ || test "${HAVE_NS}" = "yes" || test "${HAVE_BE_APP}" = "yes" \
+ || test "$window_system" = "pgtk"; then
+ if test "${with_jpeg}" != "no"; then
+ AC_CACHE_CHECK([for jpeglib 6b or later],
+ [emacs_cv_jpeglib],
+ [OLD_LIBS=$LIBS
+ for emacs_cv_jpeglib in yes -ljpeg no; do
+ case $emacs_cv_jpeglib in
+ yes) ;;
+ no) break;;
+ *) LIBS="$LIBS $emacs_cv_jpeglib";;
+ esac
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#undef HAVE_STDLIB_H /* Avoid config.h/jpeglib.h collision. */
+ #include <stdio.h> /* jpeglib.h needs FILE and size_t. */
+ #include <jpeglib.h>
+ #include <jerror.h>
+ char verify[JPEG_LIB_VERSION < 62 ? -1 : 1];
+ struct jpeg_decompress_struct cinfo;
+ ]],
+ [[
+ jpeg_create_decompress (&cinfo);
+ WARNMS (&cinfo, JWRN_JPEG_EOF);
+ jpeg_destroy_decompress (&cinfo);
+ ]])],
+ [emacs_link_ok=yes],
+ [emacs_link_ok=no])
+ LIBS=$OLD_LIBS
+ test $emacs_link_ok = yes && break
+ done])
+ if test "$emacs_cv_jpeglib" != no; then
+ HAVE_JPEG=yes
+ AC_DEFINE([HAVE_JPEG], [1],
+ [Define to 1 if you have the jpeg library (typically -ljpeg).])
+ ### mingw32 doesn't use -ljpeg, since it loads the library
+ ### dynamically when needed, and doesn't want a run-time
+ ### dependency on the jpeglib DLL.
+ test "$emacs_cv_jpeglib" != yes && test "${opsys}" != "mingw32" \
+ && LIBJPEG=$emacs_cv_jpeglib
+ fi
fi
fi
-AC_SUBST(LIBJPEG)
+AC_SUBST([LIBJPEG])
HAVE_LCMS2=no
-LIBLCMS2=
+LCMS2_CFLAGS=
+LCMS2_LIBS=
if test "${with_lcms2}" != "no"; then
- OLIBS=$LIBS
- AC_SEARCH_LIBS([cmsCreateTransform], [lcms2], [HAVE_LCMS2=yes])
- LIBS=$OLIBS
- case $ac_cv_search_cmsCreateTransform in
- -*) LIBLCMS2=$ac_cv_search_cmsCreateTransform ;;
- esac
+ EMACS_CHECK_MODULES([LCMS2], [lcms2])
fi
if test "${HAVE_LCMS2}" = "yes"; then
- AC_DEFINE([HAVE_LCMS2], 1, [Define to 1 if you have the lcms2 library (-llcms2).])
+ AC_DEFINE([HAVE_LCMS2], [1],
+ [Define to 1 if you have the lcms2 library (-llcms2).])
### mingw32 doesn't use -llcms2, since it loads the library dynamically.
if test "${opsys}" = "mingw32"; then
- LIBLCMS2=
+ LCMS2_LIBS=
fi
fi
-AC_SUBST(LIBLCMS2)
+AC_SUBST([LCMS2_CFLAGS])
+AC_SUBST([LCMS2_LIBS])
HAVE_ZLIB=no
LIBZ=
@@ -3482,22 +4049,39 @@ if test "${with_zlib}" != "no"; then
esac
fi
if test "${HAVE_ZLIB}" = "yes"; then
- AC_DEFINE([HAVE_ZLIB], 1, [Define to 1 if you have the zlib library (-lz).])
+ 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)
+AC_SUBST([LIBZ])
### Dynamic modules support
LIBMODULES=
HAVE_MODULES=no
MODULES_OBJ=
+NEED_DYNLIB=no
case $opsys in
cygwin|mingw32) MODULES_SUFFIX=".dll" ;;
+ darwin) MODULES_SUFFIX=".dylib" ;;
*) MODULES_SUFFIX=".so" ;;
esac
+case "${opsys}" in
+ darwin) MODULES_SECONDARY_SUFFIX='.so' ;;
+ *) MODULES_SECONDARY_SUFFIX='' ;;
+esac
+
+# pgtkterm.c uses dlsym
+if test $window_system = pgtk; then
+ case $opsys in
+ gnu|gnu-linux)
+ LIBMODULES="-ldl"
+ ;;
+ esac
+fi
+
if test "${with_modules}" != "no"; then
case $opsys in
gnu|gnu-linux)
@@ -3524,66 +4108,252 @@ if test "${with_modules}" != "no"; then
fi
if test "${HAVE_MODULES}" = yes; then
- MODULES_OBJ="dynlib.o emacs-module.o"
- AC_DEFINE(HAVE_MODULES, 1, [Define to 1 if dynamic modules are enabled])
- AC_DEFINE_UNQUOTED(MODULES_SUFFIX, "$MODULES_SUFFIX",
+ MODULES_OBJ="emacs-module.o"
+ NEED_DYNLIB=yes
+ AC_DEFINE([HAVE_MODULES], [1], [Define to 1 if dynamic modules are enabled])
+ AC_DEFINE_UNQUOTED([MODULES_SUFFIX], ["$MODULES_SUFFIX"],
[System extension for dynamic libraries])
+ if test -n "${MODULES_SECONDARY_SUFFIX}"; then
+ AC_DEFINE_UNQUOTED([MODULES_SECONDARY_SUFFIX],
+ ["$MODULES_SECONDARY_SUFFIX"],
+ [Alternative system extension for dynamic libraries.])
+ fi
fi
-AC_SUBST(MODULES_OBJ)
-AC_SUBST(LIBMODULES)
-AC_SUBST(HAVE_MODULES)
-AC_SUBST(MODULES_SUFFIX)
+AC_SUBST([MODULES_OBJ])
+AC_SUBST([LIBMODULES])
+AC_SUBST([HAVE_MODULES])
+AC_SUBST([MODULES_SUFFIX])
+AC_SUBST([MODULES_SECONDARY_SUFFIX])
AC_CONFIG_FILES([src/emacs-module.h])
AC_SUBST_FILE([module_env_snippet_25])
AC_SUBST_FILE([module_env_snippet_26])
+AC_SUBST_FILE([module_env_snippet_27])
+AC_SUBST_FILE([module_env_snippet_28])
+AC_SUBST_FILE([module_env_snippet_29])
module_env_snippet_25="$srcdir/src/module-env-25.h"
module_env_snippet_26="$srcdir/src/module-env-26.h"
+module_env_snippet_27="$srcdir/src/module-env-27.h"
+module_env_snippet_28="$srcdir/src/module-env-28.h"
+module_env_snippet_29="$srcdir/src/module-env-29.h"
+emacs_major_version="${PACKAGE_VERSION%%.*}"
+AC_SUBST([emacs_major_version])
+
+### Emacs Lisp native compiler support
+
+AC_DEFUN([libgccjit_smoke_test], [
+ AC_LANG_SOURCE(
+ [[#include <libgccjit.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ int
+ main (int argc, char **argv)
+ {
+ gcc_jit_context *ctxt;
+ gcc_jit_result *result;
+ ctxt = gcc_jit_context_acquire ();
+ if (!ctxt)
+ exit (1);
+ gcc_jit_type *int_type =
+ gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_INT);
+ gcc_jit_function *func =
+ gcc_jit_context_new_function (ctxt, NULL,
+ GCC_JIT_FUNCTION_EXPORTED,
+ int_type, "foo", 0, NULL, 0);
+ gcc_jit_block *block = gcc_jit_function_new_block (func, "foo");
+ gcc_jit_block_end_with_return (
+ block,
+ NULL,
+ gcc_jit_context_new_rvalue_from_int (ctxt, int_type, 1));
+ result = gcc_jit_context_compile (ctxt);
+ if (!result)
+ exit (1);
+ typedef int (*fn_type) (void);
+ fn_type foo =
+ (fn_type)gcc_jit_result_get_code (result, "foo");
+ if (!foo)
+ exit (1);
+ if (foo () != 1)
+ exit (1);
+ gcc_jit_context_release (ctxt);
+ gcc_jit_result_release (result);
+ return 0;
+ }]])])
+
+AC_DEFUN([libgccjit_not_found], [
+ AC_MSG_ERROR([ELisp native compiler was requested, but libgccjit was not found.
+Please try installing libgccjit or a similar package.
+If you are sure you want Emacs be compiled without ELisp native compiler,
+pass the --without-native-compilation option to configure.])])
+
+AC_DEFUN([libgccjit_dev_not_found], [
+ AC_MSG_ERROR([ELisp native compiler was requested, but libgccjit header files were
+not found.
+Please try installing libgccjit-dev or a similar package.
+If you are sure you want Emacs be compiled without ELisp native compiler,
+pass the --without-native-compilation option to configure.])])
+
+AC_DEFUN([libgccjit_broken], [
+ AC_MSG_ERROR([The installed libgccjit failed to compile and run a test program using
+the libgccjit library; see config.log for the details of the failure.
+The test program can be found here:
+<https://gcc.gnu.org/onlinedocs/jit/intro/tutorial01.html>.
+You can try compiling it yourself to investigate the issues.
+Please report the issue to your distribution if libgccjit was installed
+through that.
+You can find the instructions on how to compile and install libgccjit from
+source on this site:
+<https://gcc.gnu.org/wiki/JIT>.])])
+
+HAVE_NATIVE_COMP=no
+LIBGCCJIT_LIBS=
+LIBGCCJIT_CFLAGS=
+if test "$canonical" = i686-pc-cygwin; then
+ if test "${with_cygwin32_native_compilation}" = yes; then
+ with_native_compilation=yes
+ elif test "${with_native_compilation}" != no; then
+ AC_MSG_ERROR([Native compilation is not supported on 32-bit Cygwin.
+If you really want to try it anyway, use the configure option
+'--with-cygwin32-native-compilation'.])
+ fi
+fi
+
+if test "${with_native_compilation}" != "no"; then
+ if test "${HAVE_PDUMPER}" = no; then
+ AC_MSG_ERROR(['--with-native-compilation' requires '--with-dumping=pdumper'])
+ fi
+ if test "${HAVE_ZLIB}" = no; then
+ AC_MSG_ERROR(['--with-native-compilation' requires zlib])
+ fi
+
+ SAVE_CFLAGS=$CFLAGS
+ SAVE_LIBS=$LIBS
+
+ if test "${opsys}" = "darwin"; then
+ # Ensure libgccjit installed by Homebrew or macports can be found.
+ if test -n "$BREW"; then
+ if test -n "`$BREW --prefix --installed libgccjit 2>/dev/null`"; then
+ MAC_CFLAGS="-I$(dirname $($BREW ls -v libgccjit | \
+ grep libgccjit.h))"
+ MAC_LIBS="-L$(dirname $($BREW ls -v libgccjit \
+ | grep -m1 -E 'libgccjit\.(so|dylib)$'))"
+ fi
+ fi
+
+ if test -n "$HAVE_MACPORTS"; then
+ # Determine which gcc version has been installed (gcc11, for
+ # instance). Use the latest version, if more than one is
+ # available. (We filter out the gcc4 packages, because they
+ # don't support jit, and they have names like "gcc49" that
+ # sort later than "gcc11".)
+ PORT_PACKAGE=$(port installed active | grep '^ *gcc@<:@0-9@:>@* ' | \
+ awk '{ print $1; }' | grep -v 'gcc4@<:@0-9@:>@' | \
+ sort -V | tail -n 1)
+ if test -n "$PORT_PACKAGE"; then
+ MAC_CFLAGS="-I$(dirname $(port contents $PORT_PACKAGE | \
+ grep libgccjit.h))"
+ MAC_LIBS="-L$(dirname $(port contents $PORT_PACKAGE | \
+ grep libgccjit.dylib))"
+ fi
+ fi
+
+ if test -n "$MAC_CFLAGS" && test -n "$MAC_LIBS"; then
+ CFLAGS="$CFLAGS ${MAC_CFLAGS}"
+ LIBS="$LIBS ${MAC_LIBS}"
+ fi
+ fi
+
+ # Check if libgccjit is available.
+ AC_CHECK_LIB([gccjit], [gcc_jit_context_acquire],
+ [], [libgccjit_not_found])
+ AC_CHECK_HEADERS([libgccjit.h], [], [libgccjit_dev_not_found])
+ # Check if libgccjit really works.
+ AC_RUN_IFELSE([libgccjit_smoke_test], [], [libgccjit_broken])
+ HAVE_NATIVE_COMP=yes
+ case "${opsys}" in
+ # mingw32 loads the library dynamically.
+ mingw32) ;;
+ # OpenBSD doesn't have libdl, all the functions are in libc
+ netbsd|openbsd)
+ LIBGCCJIT_LIBS="-lgccjit" ;;
+ darwin)
+ LIBGCCJIT_CFLAGS="${MAC_CFLAGS}"
+ LIBGCCJIT_LIBS="${MAC_LIBS} -lgccjit -ldl";;
+ *)
+ LIBGCCJIT_LIBS="-lgccjit -ldl" ;;
+ esac
+ NEED_DYNLIB=yes
+ AC_DEFINE([HAVE_NATIVE_COMP], [1],
+ [Define to 1 if native compiler is available.])
+
+ CFLAGS=$SAVE_CFLAGS
+ LIBS=$SAVE_LIBS
+fi
+AC_DEFINE_UNQUOTED([NATIVE_ELISP_SUFFIX], [".eln"],
+ [System extension for native compiled elisp])
+AC_SUBST([HAVE_NATIVE_COMP])
+AC_SUBST([LIBGCCJIT_CFLAGS])
+AC_SUBST([LIBGCCJIT_LIBS])
+
+DYNLIB_OBJ=
+if test "${NEED_DYNLIB}" = yes; then
+ DYNLIB_OBJ="dynlib.o"
+fi
+AC_SUBST([DYNLIB_OBJ])
### 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
+if 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_ldflags=`(libpng-config --ldflags) 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_ldflags='-lpng'
- }
- SAVE_CFLAGS=$CFLAGS
- SAVE_LIBS=$LIBS
- CFLAGS="$CFLAGS $png_cflags"
- LIBS="$png_ldflags -lz -lm $LIBS"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([[#include <png.h>]],
- [[return !png_get_channels (0, 0);]])],
- [HAVE_PNG=yes
- PNG_CFLAGS=`AS_ECHO(["$png_cflags"]) | sed -e "$edit_cflags"`
- LIBPNG=$png_ldflags
- # $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])
+ elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes" \
+ || test "${HAVE_NS}" = "yes" || test "${HAVE_BE_APP}" = "yes" \
+ || test "$window_system" = "pgtk"; then
+ EMACS_CHECK_MODULES([PNG], [libpng >= 1.0.0])
+ if test $HAVE_PNG = yes; then
+ LIBPNG=$PNG_LIBS
+ else
+ # Test old way in case pkg-config doesn't have it (older machines).
+ AC_MSG_CHECKING([for libpng not configured by pkg-config])
+
+ png_cflags=`(libpng-config --cflags) 2>&AS_MESSAGE_LOG_FD` &&
+ png_ldflags=`(libpng-config --ldflags) 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_ldflags='-lpng'
+ }
+ SAVE_CFLAGS=$CFLAGS
+ SAVE_LIBS=$LIBS
+ CFLAGS="$CFLAGS $png_cflags"
+ LIBS="$png_ldflags -lz -lm $LIBS"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[#include <png.h>]],
+ [[return !png_get_channels (0, 0);]])],
+ [HAVE_PNG=yes
+ PNG_CFLAGS=`AS_ECHO(["$png_cflags"]) | sed -e "$edit_cflags"`
+ LIBPNG=$png_ldflags])
+ CFLAGS=$SAVE_CFLAGS
+ LIBS=$SAVE_LIBS
+ AC_MSG_RESULT([$HAVE_PNG])
+ fi
+
+ # $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.
+ case " $LIBPNG ",$LIBZ in
+ *' -lz '*, | *' ',?*) ;;
+ *) LIBPNG="$LIBPNG -lz" ;;
+ esac
fi
fi
if test $HAVE_PNG = yes; then
@@ -3601,8 +4371,8 @@ if test $HAVE_PNG = yes; then
]])
CFLAGS=$SAVE_CFLAGS
fi
-AC_SUBST(LIBPNG)
-AC_SUBST(PNG_CFLAGS)
+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.
@@ -3610,27 +4380,32 @@ HAVE_TIFF=no
LIBTIFF=
if test "${opsys}" = "mingw32"; then
if test "${with_tiff}" != "no"; then
- AC_CHECK_HEADER(tiffio.h, HAVE_TIFF=yes, HAVE_TIFF=no)
+ AC_CHECK_HEADER([tiffio.h], [HAVE_TIFF=yes], [HAVE_TIFF=no])
fi
if test "${HAVE_TIFF}" = "yes"; then
- AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
+ AC_DEFINE([HAVE_TIFF], [1],
+ [Define to 1 if you have the tiff library (-ltiff).])
fi
-elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
+elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes" \
+ || test "${HAVE_NS}" = "yes" || test "${HAVE_BE_APP}" = "yes" \
+ || test "$window_system" = "pgtk"; then
if test "${with_tiff}" != "no"; then
- AC_CHECK_HEADER(tiffio.h,
+ AC_CHECK_HEADER([tiffio.h],
[tifflibs="-lz -lm"
# At least one tiff package requires the jpeg library.
if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
- AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)])
+ AC_CHECK_LIB([tiff], [TIFFGetVersion], [HAVE_TIFF=yes], [],
+ [$tifflibs])])
fi
if test "${HAVE_TIFF}" = "yes"; then
- AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
+ AC_DEFINE([HAVE_TIFF], [1],
+ [Define to 1 if you have the tiff library (-ltiff).])
dnl FIXME -lz -lm, as per libpng?
LIBTIFF=-ltiff
fi
fi
-AC_SUBST(LIBTIFF)
+AC_SUBST([LIBTIFF])
### Use -lgif or -lungif if available, unless '--with-gif=no'.
### mingw32 doesn't use -lgif/-lungif, since it loads the library dynamically.
@@ -3638,85 +4413,126 @@ HAVE_GIF=no
LIBGIF=
if test "${opsys}" = "mingw32"; then
if test "${with_gif}" != "no"; then
- AC_CHECK_HEADER(gif_lib.h, HAVE_GIF=yes, HAVE_GIF=no)
+ AC_CHECK_HEADER([gif_lib.h], [HAVE_GIF=yes], [HAVE_GIF=no])
fi
if test "${HAVE_GIF}" = "yes"; then
- AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
+ AC_DEFINE([HAVE_GIF], [1],
+ [Define to 1 if you have a gif (or ungif) library.])
fi
elif test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no" \
- || test "${HAVE_W32}" = "yes"; then
- AC_CHECK_HEADER(gif_lib.h,
+ || test "${HAVE_W32}" = "yes" || test "${HAVE_NS}" = "yes" \
+ || test "${HAVE_BE_APP}" = "yes" || test "$window_system" = "pgtk" \
+ && test "${with_gif}" != "no"; then
+ AC_CHECK_HEADER([gif_lib.h],
# EGifPutExtensionLast only exists from version libungif-4.1.0b1.
# 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)])])
+ [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
elif test "$HAVE_GIF" = maybe; then
# If gif_lib.h but no libgif, try libungif.
- AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no)
+ AC_CHECK_LIB([ungif], [EGifPutExtensionLast],
+ [HAVE_GIF=yes],
+ [HAVE_GIF=no])
test "$HAVE_GIF" = yes && LIBGIF=-lungif
fi
if test "${HAVE_GIF}" = "yes"; then
- AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
+ AC_DEFINE([HAVE_GIF], [1],
+ [Define to 1 if you have a gif (or ungif) library.])
fi
fi
-AC_SUBST(LIBGIF)
+AC_SUBST([LIBGIF])
dnl Check for required libraries.
MISSING=
-WITH_NO=
+WITH_IFAVAILABLE=
if test "${HAVE_X11}" = "yes"; then
- test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
- MISSING="libXpm" && WITH_NO="--with-xpm=no"
- test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
- MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
- test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
- MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
- test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
- MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
- test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
- MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
-fi
-test "${with_gnutls}" != "no" && test "${HAVE_GNUTLS}" != "yes" &&
- MISSING="$MISSING gnutls" && WITH_NO="$WITH_NO --with-gnutls=no"
+ case $with_xpm,$HAVE_XPM in
+ no,* | ifavailable,* | *,yes) ;;
+ *) MISSING="libXpm"
+ WITH_IFAVAILABLE="--with-xpm=ifavailable";;
+ esac
+ case $with_jpeg,$HAVE_JPEG in
+ no,* | ifavailable,* | *,yes) ;;
+ *) MISSING="$MISSING libjpeg"
+ WITH_IFAVAILABLE="$WITH_IFAVAILABLE --with-jpeg=ifavailable";;
+ esac
+ case $with_png,$HAVE_PNG in
+ no,* | ifavailable,* | *,yes) ;;
+ *) MISSING="$MISSING libpng"
+ WITH_IFAVAILABLE="$WITH_IFAVAILABLE --with-png=ifavailable";;
+ esac
+ case $with_gif,$HAVE_GIF in
+ no,* | ifavailable,* | *,yes) ;;
+ *) MISSING="$MISSING libgif/libungif"
+ WITH_IFAVAILABLE="$WITH_IFAVAILABLE --with-gif=ifavailable";;
+ esac
+ case $with_tiff,$HAVE_TIFF in
+ no,* | ifavailable,* | *,yes) ;;
+ *) MISSING="$MISSING libtiff"
+ WITH_IFAVAILABLE="$WITH_IFAVAILABLE --with-tiff=ifavailable";;
+ esac
+fi
+case $with_gnutls,$HAVE_GNUTLS in
+ no,* | ifavailable,* | *,yes) ;;
+ *) MISSING="$MISSING gnutls"
+ WITH_IFAVAILABLE="$WITH_IFAVAILABLE --with-gnutls=ifavailable";;
+esac
+case $with_json,$HAVE_JSON in
+ no,* | ifavailable,* | *,yes) ;;
+ *) MISSING="$MISSING json"
+ WITH_IFAVAILABLE="$WITH_IFAVAILABLE --with-json=ifavailable";;
+esac
if test "X${MISSING}" != X; then
+ # If we have a missing library, and we don't have pkg-config installed,
+ # the missing pkg-config may be the reason. Give the user a hint.
+ if test "X${PKG_CONFIG}" = X; then
+ AC_MSG_WARN([Unable to locate a usable pkg-config])
+ fi
AC_MSG_ERROR([The following required libraries were not found:
$MISSING
Maybe some development libraries/packages are missing?
-If you don't want to link with them give
- $WITH_NO
-as options to configure])
+To build anyway, give:
+ $WITH_IFAVAILABLE
+as options to configure.])
fi
### Use -lgpm if available, unless '--with-gpm=no'.
HAVE_GPM=no
LIBGPM=
if test "${with_gpm}" != "no"; then
- AC_CHECK_HEADER(gpm.h,
- [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
+ AC_CHECK_HEADER([gpm.h],
+ [AC_CHECK_LIB([gpm], [Gpm_Open], [HAVE_GPM=yes])])
if test "${HAVE_GPM}" = "yes"; then
- AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
+ AC_DEFINE([HAVE_GPM], [1],
+ [Define to 1 if you have the gpm library (-lgpm).])
LIBGPM=-lgpm
fi
fi
-AC_SUBST(LIBGPM)
+AC_SUBST([LIBGPM])
dnl Check for malloc/malloc.h on darwin
-AC_CHECK_HEADERS_ONCE(malloc/malloc.h)
+AC_CHECK_HEADERS_ONCE([malloc/malloc.h])
GNUSTEP_CFLAGS=
### Use NeXTstep API to implement GUI.
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 macOS.])
+ AC_DEFINE([HAVE_NS], [1],
+ [Define to 1 if you are using the NeXTstep API,
+ either GNUstep or Cocoa on macOS.])
if test "${NS_IMPL_COCOA}" = "yes"; then
- AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under macOS.])
+ AC_DEFINE([NS_IMPL_COCOA], [1],
+ [Define to 1 if you are using NS windowing under macOS.])
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.])
+ AC_DEFINE([NS_IMPL_GNUSTEP], [1],
+ [Define to 1 if you are using NS windowing under GNUstep.])
if test $NS_GNUSTEP_CONFIG != yes; then
# See also .m.o rule in src/Makefile.in. */
# FIXME: are all these flags really needed? Document here why. */
@@ -3732,15 +4548,16 @@ fi
HAVE_X_SM=no
LIBXSM=
if test "${HAVE_X11}" = "yes"; then
- AC_CHECK_HEADER(X11/SM/SMlib.h,
- [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
+ AC_CHECK_HEADER([X11/SM/SMlib.h],
+ [AC_CHECK_LIB([SM], [SmcOpenConnection], [HAVE_X_SM=yes], [], [-lICE])])
if test "${HAVE_X_SM}" = "yes"; then
- AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
+ AC_DEFINE([HAVE_X_SM], [1],
+ [Define to 1 if you have the SM library (-lSM).])
LIBXSM="-lSM -lICE"
fi
fi
-AC_SUBST(LIBXSM)
+AC_SUBST([LIBXSM])
### Use XRandr (-lXrandr) if available
HAVE_XRANDR=no
@@ -3752,8 +4569,8 @@ if test "${HAVE_X11}" = "yes"; then
# Test old way in case pkg-config doesn't have it (older machines).
# Include Xrender.h by hand to work around bug in older Xrandr.h
# (e.g. RHEL5) and silence (harmless) configure warning (bug#18465).
- AC_CHECK_HEADER(X11/extensions/Xrandr.h,
- [AC_CHECK_LIB(Xrandr, XRRGetScreenResources, HAVE_XRANDR=yes)],
+ AC_CHECK_HEADER([X11/extensions/Xrandr.h],
+ [AC_CHECK_LIB([Xrandr], [XRRGetScreenResources], [HAVE_XRANDR=yes])],
[], [AC_INCLUDES_DEFAULT
#include <X11/extensions/Xrender.h>])
if test $HAVE_XRANDR = yes; then
@@ -3761,11 +4578,12 @@ if test "${HAVE_X11}" = "yes"; then
fi
fi
if test $HAVE_XRANDR = yes; then
- AC_DEFINE(HAVE_XRANDR, 1, [Define to 1 if you have the XRandr extension.])
+ AC_DEFINE([HAVE_XRANDR], [1],
+ [Define to 1 if you have the XRandr extension.])
fi
fi
-AC_SUBST(XRANDR_CFLAGS)
-AC_SUBST(XRANDR_LIBS)
+AC_SUBST([XRANDR_CFLAGS])
+AC_SUBST([XRANDR_LIBS])
### Use Xinerama (-lXinerama) if available
HAVE_XINERAMA=no
@@ -3775,18 +4593,20 @@ if test "${HAVE_X11}" = "yes"; then
EMACS_CHECK_MODULES([XINERAMA], [$XINERAMA_MODULES])
if test $HAVE_XINERAMA = no; then
# Test old way in case pkg-config doesn't have it (older machines).
- AC_CHECK_HEADER(X11/extensions/Xinerama.h,
- [AC_CHECK_LIB(Xinerama, XineramaQueryExtension, HAVE_XINERAMA=yes)])
+ AC_CHECK_HEADER([X11/extensions/Xinerama.h],
+ [AC_CHECK_LIB([Xinerama], [XineramaQueryExtension],
+ [HAVE_XINERAMA=yes])])
if test $HAVE_XINERAMA = yes; then
XINERAMA_LIBS=-lXinerama
fi
fi
if test $HAVE_XINERAMA = yes; then
- AC_DEFINE(HAVE_XINERAMA, 1, [Define to 1 if you have the Xinerama extension.])
+ AC_DEFINE([HAVE_XINERAMA], [1],
+ [Define to 1 if you have the Xinerama extension.])
fi
fi
-AC_SUBST(XINERAMA_CFLAGS)
-AC_SUBST(XINERAMA_LIBS)
+AC_SUBST([XINERAMA_CFLAGS])
+AC_SUBST([XINERAMA_LIBS])
### Use Xfixes (-lXfixes) if available
HAVE_XFIXES=no
@@ -3796,36 +4616,139 @@ if test "${HAVE_X11}" = "yes"; then
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)])
+ 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.])
+ AC_DEFINE([HAVE_XFIXES], [1],
+ [Define to 1 if you have the Xfixes extension.])
fi
fi
-AC_SUBST(XFIXES_CFLAGS)
-AC_SUBST(XFIXES_LIBS)
+AC_SUBST([XFIXES_CFLAGS])
+AC_SUBST([XFIXES_LIBS])
+
+## Use XInput 2.0 if available
+HAVE_XINPUT2=no
+if test "${HAVE_X11}" = "yes" && test "${with_xinput2}" != "no"; then
+ EMACS_CHECK_MODULES([XINPUT], [xi])
+ if test $HAVE_XINPUT = yes; then
+ # Now check for XInput2.h
+ AC_CHECK_HEADER([X11/extensions/XInput2.h],
+ [AC_CHECK_LIB([Xi], [XIGrabButton], [HAVE_XINPUT2=yes])])
+ fi
+ if test $HAVE_XINPUT2 = yes; then
+ AC_DEFINE([HAVE_XINPUT2], [1],
+ [Define to 1 if the X Input Extension version 2.0 or later is present.])
+ if test "$USE_GTK_TOOLKIT" = "GTK2"; then
+ AC_MSG_WARN([You are building Emacs with GTK+ 2 and the X Input Extension version 2.
+This might lead to problems if your version of GTK+ is not built with support for XInput 2.])
+ fi
+
+ # Now check for some members (which used in conjunction with
+ # protocol definitions) can be used to determine the version of
+ # XInput supported.
+ AC_CHECK_MEMBERS([XIScrollClassInfo.type, XITouchClassInfo.type,
+ XIBarrierReleasePointerInfo.deviceid, XIGestureClassInfo.type],
+ [], [], [#include <X11/extensions/XInput2.h>])
+ fi
+fi
+AC_SUBST([XINPUT_CFLAGS])
+AC_SUBST([XINPUT_LIBS])
+
+XSYNC_LIBS=
+XSYNC_CFLAGS=
+HAVE_XSYNC=no
+if test "${HAVE_X11}" = "yes"; then
+ AC_CHECK_HEADER([X11/extensions/sync.h],
+ [AC_CHECK_LIB([Xext], [XSyncQueryExtension], [HAVE_XSYNC=yes])],
+ [], [#include <X11/Xlib.h>])
+
+ if test "${HAVE_XSYNC}" = "yes"; then
+ AC_DEFINE([HAVE_XSYNC], [1],
+ [Define to 1 if the X Synchronization Extension is available.])
+ XSYNC_LIBS="-lXext"
+ OLDLIBS="$LIBS"
+ LIBS="-lXext $LIBS" # Set this temporarily for AC_CHECK_FUNC
+ AC_CHECK_FUNCS([XSyncTriggerFence]) # Check for version 3.1
+ LIBS="$OLDLIBS"
+ fi
+fi
+AC_SUBST([XSYNC_LIBS])
+AC_SUBST([XSYNC_CFLAGS])
### Use Xdbe (-lXdbe) if available
HAVE_XDBE=no
if test "${HAVE_X11}" = "yes"; then
- AC_CHECK_HEADER(X11/extensions/Xdbe.h,
- [AC_CHECK_LIB(Xext, XdbeAllocateBackBufferName, HAVE_XDBE=yes)],
- [],
- [#include <X11/Xlib.h>
- ])
+ if test "${with_xdbe}" != "no"; then
+ AC_CHECK_HEADER([X11/extensions/Xdbe.h],
+ [AC_CHECK_LIB([Xext], [XdbeAllocateBackBufferName], [HAVE_XDBE=yes])],
+ [],
+ [#include <X11/Xlib.h>
+ ])
+ fi
if test $HAVE_XDBE = yes; then
XDBE_LIBS=-lXext
fi
if test $HAVE_XDBE = yes; then
- AC_DEFINE(HAVE_XDBE, 1, [Define to 1 if you have the Xdbe extension.])
+ AC_DEFINE([HAVE_XDBE], [1], [Define to 1 if you have the Xdbe extension.])
+ fi
+fi
+AC_SUBST([XDBE_CFLAGS])
+AC_SUBST([XDBE_LIBS])
+
+### Use the Nonrectangular Window Shape extension if available.
+HAVE_XSHAPE=no
+HAVE_XCB_SHAPE=no
+if test "${HAVE_X11}" = "yes"; then
+ AC_CHECK_HEADER([X11/extensions/shape.h],
+ [AC_CHECK_LIB([Xext], [XShapeQueryVersion], [HAVE_XSHAPE=yes])],
+ [],
+ [#include <X11/extensions/shape.h>
+ ])
+ if test $HAVE_XSHAPE = yes; then
+ XSHAPE_LIBS=-lXext
+ AC_CHECK_HEADER([xcb/shape.h],
+ [AC_CHECK_LIB([xcb-shape], [xcb_shape_combine], [HAVE_XCB_SHAPE=yes])],
+ [],
+ [#include <xcb/shape.h>])
+
+ if test $HAVE_XCB_SHAPE = yes && test "$XCB_LIBS" != ""; then
+ XSHAPE_LIBS="$XSHAPE_LIBS -lxcb-shape"
+ AC_DEFINE([HAVE_XCB_SHAPE], [1],
+ [Define to 1 if XCB supports the
+ Nonrectangular Window Shape extension.])
+ fi
+ fi
+ if test $HAVE_XSHAPE = yes; then
+ AC_DEFINE([HAVE_XSHAPE], [1],
+ [Define to 1 if you have the Nonrectangular Window Shape extension.])
fi
fi
-AC_SUBST(XDBE_CFLAGS)
-AC_SUBST(XDBE_LIBS)
+AC_SUBST([XSHAPE_CFLAGS])
+AC_SUBST([XSHAPE_LIBS])
+
+### Use Xcomposite (-lXcomposite) if available
+HAVE_XCOMPOSITE=no
+if test "${HAVE_X11}" = "yes"; then
+ AC_CHECK_HEADER([X11/extensions/Xcomposite.h],
+ [AC_CHECK_LIB([Xcomposite], [XCompositeRedirectWindow],
+ [HAVE_XCOMPOSITE=yes])],
+ [],
+ [#include <X11/extensions/Xcomposite.h>
+ ])
+ if test $HAVE_XCOMPOSITE = yes; then
+ XCOMPOSITE_LIBS=-lXcomposite
+ fi
+ if test $HAVE_XCOMPOSITE = yes; then
+ AC_DEFINE([HAVE_XCOMPOSITE], [1],
+ [Define to 1 if you have the XCOMPOSITE extension.])
+ fi
+fi
+AC_SUBST([XCOMPOSITE_CFLAGS])
+AC_SUBST([XCOMPOSITE_LIBS])
### Use libxml (-lxml2) if available
### mingw32 doesn't use -lxml2, since it loads the library dynamically.
@@ -3844,33 +4767,36 @@ if test "${with_xml2}" != "no"; then
xcsdkdir="" ;;
esac
fi
- CPPFLAGS="$CPPFLAGS -I$xcsdkdir/usr/include/libxml2"
- AC_CHECK_HEADER(libxml/HTMLparser.h,
- [AC_CHECK_DECL(HTML_PARSE_RECOVER, HAVE_LIBXML2=yes, ,
+ CPPFLAGS="$CPPFLAGS -isystem${xcsdkdir}/usr/include/libxml2"
+ AC_CHECK_HEADER([libxml/HTMLparser.h],
+ [AC_CHECK_DECL([HTML_PARSE_RECOVER], [HAVE_LIBXML2=yes], [],
[#include <libxml/HTMLparser.h>])])
CPPFLAGS="$SAVE_CPPFLAGS"
if test "${HAVE_LIBXML2}" = "yes"; then
- LIBXML2_CFLAGS="-I'$xcsdkdir/usr/include/libxml2'"
+ LIBXML2_CFLAGS="-isystem${xcsdkdir}/usr/include/libxml2"
LIBXML2_LIBS="-lxml2"
fi
fi
if test "${HAVE_LIBXML2}" = "yes"; then
if test "${opsys}" != "mingw32"; then
- AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no,
+ AC_CHECK_LIB([xml2], [htmlReadMemory],
+ [HAVE_LIBXML2=yes],
+ [HAVE_LIBXML2=no],
[$LIBXML2_LIBS])
else
LIBXML2_LIBS=""
fi
if test "${HAVE_LIBXML2}" = "yes"; then
- AC_DEFINE(HAVE_LIBXML2, 1, [Define to 1 if you have the libxml library (-lxml2).])
+ AC_DEFINE([HAVE_LIBXML2], [1],
+ [Define to 1 if you have the libxml library (-lxml2).])
else
LIBXML2_LIBS=""
LIBXML2_CFLAGS=""
fi
fi
fi
-AC_SUBST(LIBXML2_LIBS)
-AC_SUBST(LIBXML2_CFLAGS)
+AC_SUBST([LIBXML2_LIBS])
+AC_SUBST([LIBXML2_CFLAGS])
BLESSMAIL_TARGET=
LIBS_MAIL=
@@ -3958,9 +4884,29 @@ fi
AC_SUBST([BLESSMAIL_TARGET])
AC_SUBST([LIBS_MAIL])
+HAVE_SECCOMP=no
+AC_CHECK_HEADERS(
+ [linux/seccomp.h linux/filter.h],
+ [AC_CHECK_DECLS(
+ [SECCOMP_SET_MODE_FILTER, SECCOMP_FILTER_FLAG_TSYNC],
+ [HAVE_SECCOMP=yes], [],
+ [[
+ #include <linux/seccomp.h>
+ ]])])
+AC_SUBST([HAVE_SECCOMP])
+
+EMACS_CHECK_MODULES([LIBSECCOMP], [libseccomp >= 2.5.2])
+AC_SUBST([HAVE_LIBSECCOMP])
+AC_SUBST([LIBSECCOMP_LIBS])
+AC_SUBST([LIBSECCOMP_CFLAGS])
+
+AC_CHECK_SIZEOF([long])
+SIZEOF_LONG="$ac_cv_sizeof_long"
+AC_SUBST([SIZEOF_LONG])
+
OLD_LIBS=$LIBS
LIBS="$LIB_PTHREAD $LIB_MATH $LIBS"
-AC_CHECK_FUNCS(accept4 fchdir gethostname \
+AC_CHECK_FUNCS([accept4 fchdir gethostname \
getrusage get_current_dir_name \
lrand48 random rint trunc \
select getpagesize setlocale newlocale \
@@ -3969,13 +4915,62 @@ pthread_sigmask strsignal setitimer \
sendto recvfrom getsockname getifaddrs freeifaddrs \
gai_strerror sync \
getpwent endpwent getgrent endgrent \
-cfmakeraw cfsetspeed __executable_start log2 prctl)
+cfmakeraw cfsetspeed __executable_start log2 pthread_setname_np \
+pthread_set_name_np])
LIBS=$OLD_LIBS
+if test "$ac_cv_func_pthread_setname_np" = "yes"; then
+ AC_CACHE_CHECK(
+ [whether pthread_setname_np takes a single argument],
+ [emacs_cv_pthread_setname_np_1arg],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>]],
+ [[pthread_setname_np ("a");]])],
+ [emacs_cv_pthread_setname_np_1arg=yes],
+ [emacs_cv_pthread_setname_np_1arg=no])])
+ if test "$emacs_cv_pthread_setname_np_1arg" = "yes"; then
+ AC_DEFINE(
+ [HAVE_PTHREAD_SETNAME_NP_1ARG], [1],
+ [Define to 1 if pthread_setname_np takes a single argument.])
+ else
+ AC_CACHE_CHECK(
+ [whether pthread_setname_np takes three arguments],
+ [emacs_cv_pthread_setname_np_3arg],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>]],
+ [[pthread_setname_np (0, "%s", "a");]])],
+ [emacs_cv_pthread_setname_np_3arg=yes],
+ [emacs_cv_pthread_setname_np_3arg=no])])
+ if test "$emacs_cv_pthread_setname_np_3arg" = "yes"; then
+ AC_DEFINE(
+ [HAVE_PTHREAD_SETNAME_NP_3ARG], [1],
+ [Define to 1 if pthread_setname_np takes three arguments.])
+ fi
+ fi
+fi
+
dnl No need to check for posix_memalign if aligned_alloc works.
AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break])
AC_CHECK_DECLS([aligned_alloc], [], [], [[#include <stdlib.h>]])
+case $with_unexec,$canonical in
+ yes,alpha*)
+ AC_CHECK_DECL([__ELF__], [],
+ [AC_MSG_ERROR([Non-ELF systems are not supported on this platform.])]);;
+esac
+
+if test "$with_unexec" = yes && test "$opsys" = "haiku"; then
+ dnl A serious attempt was actually made to port unexec to Haiku.
+ dnl Something in libstdc++ seems to prevent it from working.
+ AC_MSG_ERROR([Haiku is not supported by the legacy unexec dumper.
+Please use the portable dumper instead.])
+fi
+
+# Dump loading
+AC_CHECK_FUNCS([posix_madvise])
+
dnl Cannot use AC_CHECK_FUNCS
AC_CACHE_CHECK([for __builtin_frame_address],
[emacs_cv_func___builtin_frame_address],
@@ -3983,28 +4978,28 @@ AC_CACHE_CHECK([for __builtin_frame_address],
[emacs_cv_func___builtin_frame_address=yes],
[emacs_cv_func___builtin_frame_address=no])])
if test $emacs_cv_func___builtin_frame_address = yes; then
- AC_DEFINE([HAVE___BUILTIN_FRAME_ADDRESS], 1,
+ AC_DEFINE([HAVE___BUILTIN_FRAME_ADDRESS], [1],
[Define to 1 if you have the '__builtin_frame_address' function.])
fi
AC_CACHE_CHECK([for __builtin_unwind_init],
- emacs_cv_func___builtin_unwind_init,
+ [emacs_cv_func___builtin_unwind_init],
[AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_unwind_init ();])],
- emacs_cv_func___builtin_unwind_init=yes,
- emacs_cv_func___builtin_unwind_init=no)])
+ [emacs_cv_func___builtin_unwind_init=yes],
+ [emacs_cv_func___builtin_unwind_init=no])])
if test $emacs_cv_func___builtin_unwind_init = yes; then
- AC_DEFINE(HAVE___BUILTIN_UNWIND_INIT, 1,
+ AC_DEFINE([HAVE___BUILTIN_UNWIND_INIT], [1],
[Define to 1 if you have the '__builtin_unwind_init' function.])
fi
-AC_CHECK_HEADERS_ONCE(sys/un.h)
+AC_CHECK_HEADERS_ONCE([sys/un.h])
AC_FUNC_FSEEKO
# UNIX98 PTYs.
-AC_CHECK_FUNCS(grantpt)
+AC_CHECK_FUNCS([grantpt])
# PTY-related GNU extensions.
-AC_CHECK_FUNCS(getpt posix_openpt)
+AC_CHECK_FUNCS([getpt posix_openpt])
dnl Run a test program that contains a call to tputs, a call that is
dnl never executed. This tests whether a pre-'main' dynamic linker
@@ -4030,9 +5025,9 @@ AC_CACHE_CHECK([for library containing tputs], [emacs_cv_tputs_lib],
[if test "${opsys}" = "mingw32"; then
emacs_cv_tputs_lib='none required'
else
- # Maybe curses should be tried earlier?
- # See https://debbugs.gnu.org/9736#35
- for tputs_library in '' tinfo ncurses terminfo termcap curses; do
+ # curses precedes termcap because of AIX (Bug#9736#35) and OpenIndiana.
+ tputs_libraries='tinfo ncurses terminfo curses termcap tinfow ncursesw'
+ for tputs_library in '' $tputs_libraries; do
OLIBS=$LIBS
if test -z "$tputs_library"; then
emacs_cv_tputs_lib='none required'
@@ -4051,7 +5046,7 @@ fi])
AS_CASE(["$emacs_cv_tputs_lib"],
[no], [AC_MSG_ERROR([The required function 'tputs' was not found in any library.
The following libraries were tried (in order):
- libtinfo, libncurses, libterminfo, libtermcap, libcurses
+ libtinfo, libncurses, libterminfo, libcurses, libtermcap
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.])],
@@ -4076,14 +5071,15 @@ case "$opsys" in
freebsd)
AC_MSG_CHECKING([whether FreeBSD is new enough to use terminfo])
- AC_CACHE_VAL(emacs_cv_freebsd_terminfo,
+ AC_CACHE_VAL([emacs_cv_freebsd_terminfo],
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <osreldate.h>]],
[[#if __FreeBSD_version < 400000
fail;
#endif
-]])], emacs_cv_freebsd_terminfo=yes, emacs_cv_freebsd_terminfo=no)])
+]])], [emacs_cv_freebsd_terminfo=yes],
+ [emacs_cv_freebsd_terminfo=no])])
- AC_MSG_RESULT($emacs_cv_freebsd_terminfo)
+ AC_MSG_RESULT([$emacs_cv_freebsd_terminfo])
if test $emacs_cv_freebsd_terminfo = yes; then
LIBS_TERMCAP="-lncurses"
@@ -4118,14 +5114,27 @@ esac
TERMCAP_OBJ=tparam.o
if test $TERMINFO = yes; then
- AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.])
+ AC_DEFINE([TERMINFO], [1],
+ [Define to 1 if you use terminfo instead of termcap.])
TERMCAP_OBJ=terminfo.o
+ AC_CACHE_CHECK([whether $LIBS_TERMCAP library defines BC],
+ [emacs_cv_terminfo_defines_BC],
+ [OLD_LIBS=$LIBS
+ LIBS="$LIBS $LIBS_TERMCAP"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern char *BC;]], [[return !*BC;]])],
+ [emacs_cv_terminfo_defines_BC=yes],
+ [emacs_cv_terminfo_defines_BC=no])
+ LIBS=$OLD_LIBS])
+ if test "$emacs_cv_terminfo_defines_BC" = yes; then
+ AC_DEFINE([TERMINFO_DEFINES_BC], [1], [Define to 1 if the
+ terminfo library defines the variables BC, PC, and UP.])
+ fi
fi
if test "X$LIBS_TERMCAP" = "X-lncurses"; then
- AC_DEFINE(USE_NCURSES, 1, [Define to 1 if you use ncurses.])
+ AC_DEFINE([USE_NCURSES], [1], [Define to 1 if you use ncurses.])
fi
-AC_SUBST(LIBS_TERMCAP)
-AC_SUBST(TERMCAP_OBJ)
+AC_SUBST([LIBS_TERMCAP])
+AC_SUBST([TERMCAP_OBJ])
# GNU/Linux-specific timer functions.
AC_CACHE_CHECK([for timerfd interface], [emacs_cv_have_timerfd],
@@ -4138,7 +5147,7 @@ AC_CACHE_CHECK([for timerfd interface], [emacs_cv_have_timerfd],
[emacs_cv_have_timerfd=yes],
[emacs_cv_have_timerfd=no])])
if test "$emacs_cv_have_timerfd" = yes; then
- AC_DEFINE([HAVE_TIMERFD], 1,
+ AC_DEFINE([HAVE_TIMERFD], [1],
[Define to 1 if timerfd functions are supported as in GNU/Linux.])
fi
@@ -4165,25 +5174,26 @@ LIBRESOLV=
if test "$with_hesiod" != no ; then
# Don't set $LIBS here -- see comments above. FIXME which comments?
resolv=no
- AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
- [AC_CHECK_LIB(resolv, res_send, resolv=yes,
- [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
+ AC_CHECK_FUNC([res_send], [], [AC_CHECK_FUNC([__res_send], [],
+ [AC_CHECK_LIB([resolv], [res_send], [resolv=yes],
+ [AC_CHECK_LIB([resolv], [__res_send], [resolv=yes])])])])
if test "$resolv" = yes ; then
RESOLVLIB=-lresolv
else
RESOLVLIB=
fi
hesiod=no
- AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
- hesiod=yes, :, $RESOLVLIB)])
+ AC_CHECK_FUNC([hes_getmailhost], [],
+ [AC_CHECK_LIB([hesiod], [hes_getmailhost],
+ [hesiod=yes], [:], [$RESOLVLIB])])
if test x"$hesiod" = xyes; then
LIBHESIOD=-lhesiod
LIBRESOLV=$RESOLVLIB
fi
fi
-AC_SUBST(LIBHESIOD)
-AC_SUBST(LIBRESOLV)
+AC_SUBST([LIBHESIOD])
+AC_SUBST([LIBRESOLV])
# These tell us which Kerberos-related libraries to use.
COM_ERRLIB=
@@ -4194,45 +5204,51 @@ KRB4LIB=
if test "${with_kerberos}" != no; then
OLD_LIBS=$LIBS
- AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no)
+ AC_CHECK_LIB([com_err], [com_err], [have_com_err=yes], [have_com_err=no])
if test $have_com_err = yes; then
COM_ERRLIB=-lcom_err
LIBS="$COM_ERRLIB $LIBS"
fi
- AC_CHECK_LIB(crypto, mit_des_cbc_encrypt, have_crypto=yes, have_crypto=no)
+ AC_CHECK_LIB([crypto], [mit_des_cbc_encrypt],
+ [have_crypto=yes],
+ [have_crypto=no])
if test $have_crypto = yes; then
CRYPTOLIB=-lcrypto
LIBS="$CRYPTOLIB $LIBS"
fi
- AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt, have_k5crypto=yes, have_k5crypto=no)
+ AC_CHECK_LIB([k5crypto], [mit_des_cbc_encrypt],
+ [have_k5crypto=yes],
+ [have_k5crypto=no])
if test $have_k5crypto = yes; then
CRYPTOLIB=-lk5crypto
LIBS="$CRYPTOLIB $LIBS"
fi
- AC_CHECK_LIB(krb5, krb5_init_context, have_krb5=yes, have_krb5=no)
+ AC_CHECK_LIB([krb5], [krb5_init_context], [have_krb5=yes], [have_krb5=no])
if test $have_krb5=yes; then
KRB5LIB=-lkrb5
LIBS="$KRB5LIB $LIBS"
fi
dnl FIXME Simplify. Does not match 22 logic, thanks to default_off?
if test "${with_kerberos5}" = no; then
- AC_CHECK_LIB(des425, des_cbc_encrypt, have_des425=yes, have_des425=no )
+ AC_CHECK_LIB([des425], [des_cbc_encrypt],
+ [have_des425=yes],
+ [have_des425=no])
if test $have_des425 = yes; then
DESLIB=-ldes425
LIBS="$DESLIB $LIBS"
else
- AC_CHECK_LIB(des, des_cbc_encrypt, have_des=yes, have_des=no)
+ AC_CHECK_LIB([des], [des_cbc_encrypt], [have_des=yes], [have_des=no])
if test $have_des = yes; then
DESLIB=-ldes
LIBS="$DESLIB $LIBS"
fi
fi
- AC_CHECK_LIB(krb4, krb_get_cred, have_krb4=yes, have_krb4=no)
+ AC_CHECK_LIB([krb4], [krb_get_cred], [have_krb4=yes], [have_krb4=no])
if test $have_krb4 = yes; then
KRB4LIB=-lkrb4
LIBS="$KRB4LIB $LIBS"
else
- AC_CHECK_LIB(krb, krb_get_cred, have_krb=yes, have_krb=no)
+ AC_CHECK_LIB([krb], [krb_get_cred], [have_krb=yes], [have_krb=no])
if test $have_krb = yes; then
KRB4LIB=-lkrb
LIBS="$KRB4LIB $LIBS"
@@ -4241,47 +5257,52 @@ if test "${with_kerberos}" != no; then
fi
if test "${with_kerberos5}" != no; then
- AC_CHECK_HEADERS(krb5.h,
- [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,,
+ AC_CHECK_HEADERS([krb5.h],
+ [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text], [], [],
[#include <krb5.h>])])
else
- AC_CHECK_HEADERS(krb.h,,
- [AC_CHECK_HEADERS(kerberosIV/krb.h,,
- [AC_CHECK_HEADERS(kerberos/krb.h)])])
+ AC_CHECK_HEADERS([krb.h], [],
+ [AC_CHECK_HEADERS([kerberosIV/krb.h], [],
+ [AC_CHECK_HEADERS([kerberos/krb.h])])])
fi
- AC_CHECK_HEADERS(com_err.h)
+ AC_CHECK_HEADERS([com_err.h])
LIBS=$OLD_LIBS
fi
-AC_SUBST(COM_ERRLIB)
-AC_SUBST(CRYPTOLIB)
-AC_SUBST(KRB5LIB)
-AC_SUBST(DESLIB)
-AC_SUBST(KRB4LIB)
+AC_SUBST([COM_ERRLIB])
+AC_SUBST([CRYPTOLIB])
+AC_SUBST([KRB5LIB])
+AC_SUBST([DESLIB])
+AC_SUBST([KRB4LIB])
-AC_CHECK_HEADERS(valgrind/valgrind.h)
+AC_CHECK_HEADERS([valgrind/valgrind.h])
AC_CHECK_MEMBERS([struct unipair.unicode], [], [], [[#include <linux/kd.h>]])
-AC_CHECK_FUNCS_ONCE([sbrk])
-
-ok_so_far=yes
-AC_CHECK_FUNC(socket, , ok_so_far=no)
-if test $ok_so_far = yes; then
- AC_CHECK_HEADER(netinet/in.h, , ok_so_far=no)
-fi
-if test $ok_so_far = yes; then
- AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
-fi
-if test $ok_so_far = yes; then
-dnl Fixme: Not used. Should this be HAVE_SOCKETS?
- AC_DEFINE(HAVE_INET_SOCKETS, 1,
- [Define to 1 if you have inet sockets.])
-fi
+AC_CHECK_FUNCS_ONCE([__lsan_ignore_object])
AC_FUNC_FORK
-AC_CHECK_FUNCS(snprintf)
+dnl AC_CHECK_FUNCS_ONCE wouldn’t be right for snprintf, which needs
+dnl the current CFLAGS etc.
+AC_CHECK_FUNCS([snprintf])
+
+dnl posix_spawn. The chdir and setsid functionality is relatively
+dnl recent, so we check for it specifically.
+AC_CHECK_HEADERS([spawn.h])
+AC_SUBST([HAVE_SPAWN_H])
+AC_CHECK_FUNCS([posix_spawn \
+ posix_spawn_file_actions_addchdir \
+ posix_spawn_file_actions_addchdir_np \
+ posix_spawnattr_setflags])
+AC_SUBST([HAVE_POSIX_SPAWN])
+AC_SUBST([HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR])
+AC_SUBST([HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP])
+AC_SUBST([HAVE_POSIX_SPAWNATTR_SETFLAGS])
+AC_CHECK_DECLS([POSIX_SPAWN_SETSID], [], [], [[
+ #include <spawn.h>
+ ]])
+AC_SUBST([HAVE_DECL_POSIX_SPAWN_SETSID])
dnl Check for glib. This differs from other library checks in that
dnl Emacs need not link to glib unless some other library is already
@@ -4308,23 +5329,35 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM(
CFLAGS="$OLDCFLAGS"
LIBS="$OLDLIBS"])
if test "${emacs_cv_links_glib}" = "yes"; then
- AC_DEFINE(HAVE_GLIB, 1, [Define to 1 if GLib is linked in.])
- if test "$HAVE_NS" = no;then
+ AC_DEFINE([HAVE_GLIB], [1], [Define to 1 if GLib is linked in.])
+ if test "$HAVE_NS" = no ; then
XGSELOBJ=xgselect.o
fi
fi
-AC_SUBST(XGSELOBJ)
+AC_SUBST([XGSELOBJ])
dnl Adapted from Haible's version.
-AC_CACHE_CHECK([for nl_langinfo and CODESET], emacs_cv_langinfo_codeset,
+AC_CACHE_CHECK([for nl_langinfo and CODESET], [emacs_cv_langinfo_codeset],
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
- [[char* cs = nl_langinfo(CODESET);]])],
- emacs_cv_langinfo_codeset=yes,
- emacs_cv_langinfo_codeset=no)
+ [[char *cs = nl_langinfo(CODESET);]])],
+ [emacs_cv_langinfo_codeset=yes],
+ [emacs_cv_langinfo_codeset=no])
])
-if test $emacs_cv_langinfo_codeset = yes; then
- AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
- [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
+if test "$emacs_cv_langinfo_codeset" = yes; then
+ AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
+ [Define if you have <langinfo.h> and nl_langinfo (CODESET).])
+
+ AC_CACHE_CHECK([for nl_langinfo and _NL_PAPER_WIDTH],
+ [emacs_cv_langinfo__nl_paper_width],
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
+ [[char *cs = nl_langinfo (_NL_PAPER_WIDTH);]])],
+ [emacs_cv_langinfo__nl_paper_width=yes],
+ [emacs_cv_langinfo__nl_paper_width=no])
+ ])
+ if test "$emacs_cv_langinfo__nl_paper_width" = yes; then
+ AC_DEFINE([HAVE_LANGINFO__NL_PAPER_WIDTH], [1],
+ [Define if you have <langinfo.h> and nl_langinfo (_NL_PAPER_WIDTH).])
+ fi
fi
AC_TYPE_MBSTATE_T
@@ -4335,15 +5368,17 @@ dnl The following looks like a useful start.
dnl
dnl AC_SYS_POSIX_TERMIOS
dnl if test $ac_cv_sys_posix_termios = yes; then
-dnl AC_DEFINE(HAVE_TERMIOS, 1, [Define to 1 if you have POSIX-style functions
-dnl and macros for terminal control.])
-dnl AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.])
+dnl AC_DEFINE([HAVE_TERMIOS], [1],
+dnl [Define to 1 if you have POSIX-style
+dnl functions and macros for terminal control.])
+dnl AC_DEFINE([HAVE_TCATTR], [1],
+dnl [Define to 1 if you have tcgetattr and tcsetattr.])
dnl fi
dnl Turned on June 1996 supposing nobody will mind it.
dnl MinGW emulates passwd database, so this feature doesn't make sense there.
if test "${opsys}" != "mingw32"; then
- AC_DEFINE(AMPERSAND_FULL_NAME, 1, [Define to use the convention that &
+ AC_DEFINE([AMPERSAND_FULL_NAME], [1], [Define to use the convention that &
in the full name stands for the login id.])
fi
@@ -4351,23 +5386,23 @@ dnl Everybody supports this, except MS.
dnl Seems like the kind of thing we should be testing for, though.
## Note: PTYs are broken on darwin <6. Use at your own risk.
if test "${opsys}" != "mingw32"; then
- AC_DEFINE(HAVE_PTYS, 1, [Define if the system supports pty devices.])
+ AC_DEFINE([HAVE_PTYS], [1], [Define if the system supports pty devices.])
fi
dnl Everybody supports this, except MS-DOS.
dnl Seems like the kind of thing we should be testing for, though.
-dnl Compare with HAVE_INET_SOCKETS (which is unused...) above.
-AC_DEFINE(HAVE_SOCKETS, 1, [Define if the system supports
+AC_DEFINE([HAVE_SOCKETS], [1], [Define if the system supports
4.2-compatible sockets.])
-AH_TEMPLATE(INTERNAL_TERMINAL, [This is substituted when $TERM is "internal".])
+AH_TEMPLATE([INTERNAL_TERMINAL],
+ [This is substituted when $TERM is "internal".])
-AH_TEMPLATE(NULL_DEVICE, [Name of the file to open to get
+AH_TEMPLATE([NULL_DEVICE], [Name of the file to open to get
a null file, or a data sink.])
if test "${opsys}" = "mingw32"; then
- AC_DEFINE(NULL_DEVICE, ["NUL:"])
+ AC_DEFINE([NULL_DEVICE], ["NUL:"])
else
- AC_DEFINE(NULL_DEVICE, ["/dev/null"])
+ AC_DEFINE([NULL_DEVICE], ["/dev/null"])
fi
if test "${opsys}" = "mingw32"; then
@@ -4375,7 +5410,8 @@ if test "${opsys}" = "mingw32"; then
else
SEPCHAR=':'
fi
-AC_DEFINE_UNQUOTED(SEPCHAR, ['$SEPCHAR'], [Character that separates PATH elements.])
+AC_DEFINE_UNQUOTED([SEPCHAR], ['$SEPCHAR'],
+ [Character that separates PATH elements.])
dnl This is for MinGW, and is used in test/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
@@ -4385,34 +5421,35 @@ 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)
+AC_SUBST([SEPCHAR])
dnl Everybody supports this, except MS-DOS.
-AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.])
+AC_DEFINE([subprocesses], [1], [Define to enable asynchronous subprocesses.])
-AC_DEFINE(USER_FULL_NAME, [pw->pw_gecos], [How to get a user's full name.])
+AC_DEFINE([USER_FULL_NAME], [pw->pw_gecos], [How to get a user's full name.])
-AC_DEFINE(DIRECTORY_SEP, ['/'],
+AC_DEFINE([DIRECTORY_SEP], ['/'],
[Character that separates directories in a file name.])
if test "${opsys}" = "mingw32"; then
- AC_DEFINE(IS_DEVICE_SEP(_c_), [((_c_) == ':')],
+ AC_DEFINE([IS_DEVICE_SEP(_c_)], [((_c_) == ':')],
[Returns true if character is a device separator.])
- AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == '/' || (_c_) == '\\')],
+ AC_DEFINE([IS_DIRECTORY_SEP(_c_)], [((_c_) == '/' || (_c_) == '\\')],
[Returns true if character is a directory separator.])
- AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP(_c_))],
+ AC_DEFINE([IS_ANY_SEP(_c_)],
+ [(IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP (_c_))],
[Returns true if character is any form of separator.])
else
- AC_DEFINE(IS_DEVICE_SEP(_c_), 0,
+ AC_DEFINE([IS_DEVICE_SEP(_c_)], 0,
[Returns true if character is a device separator.])
- AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == DIRECTORY_SEP)],
+ AC_DEFINE([IS_DIRECTORY_SEP(_c_)], [((_c_) == DIRECTORY_SEP)],
[Returns true if character is a directory separator.])
- AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_))],
+ AC_DEFINE([IS_ANY_SEP(_c_)], [(IS_DIRECTORY_SEP (_c_))],
[Returns true if character is any form of separator.])
fi
@@ -4433,23 +5470,23 @@ if test "$USE_X_TOOLKIT" != "none"; then
else
OTHERLIBS="-lXt -$LIBXMU"
fi
- AC_TRY_LINK(
- [#include <X11/Intrinsic.h>
- #include <X11/Xmu/Editres.h>],
- [_XEditResCheckMessages (0, 0, 0, 0);],
- [AC_DEFINE([X_TOOLKIT_EDITRES], 1,
+ AC_LINK_IFELSE([AC_LANG_PROGRAM(
+ [[#include <X11/Intrinsic.h>
+ #include <X11/Xmu/Editres.h>]],
+ [[_XEditResCheckMessages (0, 0, 0, 0);]])],
+ [AC_DEFINE([X_TOOLKIT_EDITRES], [1],
[Define to 1 if we should use XEditRes.])])
LIBS=$OLDLIBS
fi
fi
case $opsys in
- sol2* | unixware )
+ solaris | unixware )
dnl Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
dnl instead, there's a system variable _sys_nsig. Unfortunately, we
dnl need the constant to dimension an array. So wire in the appropriate
dnl value here.
- AC_DEFINE(NSIG_MINIMUM, 32, [Minimum value of NSIG.])
+ AC_DEFINE([NSIG_MINIMUM], [32], [Minimum value of NSIG.])
;;
esac
@@ -4457,8 +5494,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 <http://article.gmane.org/gmane.os.openbsd.ports/46831>.
- hpux* | nacl | openbsd | sol2* | unixware )
+ hpux* | nacl | solaris | unixware )
emacs_broken_SIGIO=yes
;;
@@ -4483,7 +5519,7 @@ case $opsys in
dnl of this file, so that we do not check for get_current_dir_name
dnl on AIX. But that might be fragile if something else ends
dnl up testing for get_current_dir_name as a dependency.
- AC_DEFINE(BROKEN_GET_CURRENT_DIR_NAME, 1, [Define if
+ AC_DEFINE([BROKEN_GET_CURRENT_DIR_NAME], [1], [Define if
get_current_dir_name should not be used.])
;;
@@ -4501,21 +5537,21 @@ case $opsys in
dnl successfully after processing (for example with CRs added if the
dnl terminal is set up that way which it is here). The same bytes will
dnl be seen again in a later read(2), without the CRs.
- AC_DEFINE(BROKEN_PTY_READ_AFTER_EAGAIN, 1, [Define on FreeBSD to
+ AC_DEFINE([BROKEN_PTY_READ_AFTER_EAGAIN], [1], [Define on FreeBSD to
work around an issue when reading from a PTY.])
;;
esac
case $opsys in
- gnu-* | sol2-10 )
+ gnu-* | solaris )
dnl FIXME Can't we test if this exists (eg /proc/$$)?
- AC_DEFINE(HAVE_PROCFS, 1, [Define if you have the /proc filesystem.])
+ AC_DEFINE([HAVE_PROCFS], [1], [Define if you have the /proc filesystem.])
;;
esac
case $opsys in
darwin | dragonfly | freebsd | netbsd | openbsd )
- AC_DEFINE(DONT_REOPEN_PTY, 1, [Define if process.c does not need to
+ AC_DEFINE([DONT_REOPEN_PTY], [1], [Define if process.c does not need to
close a pty to make it a controlling terminal (it is already a
controlling terminal of the subprocess, because we did ioctl TIOCSCTTY).])
;;
@@ -4528,7 +5564,7 @@ case $opsys in
esac
dnl Used in sound.c
-AC_DEFINE_UNQUOTED(DEFAULT_SOUND_DEVICE, "$sound_device",
+AC_DEFINE_UNQUOTED([DEFAULT_SOUND_DEVICE], ["$sound_device"],
[Name of the default sound device.])
@@ -4554,8 +5590,8 @@ dnl It would have Emacs fork off a separate process
dnl to read the input and send it to the true Emacs process
dnl through a pipe.
case $opsys in
- darwin | gnu-linux | gnu-kfreebsd )
- AC_DEFINE(INTERRUPT_INPUT, 1, [Define to read input using SIGIO.])
+ darwin | gnu-linux | gnu-kfreebsd)
+ AC_DEFINE([INTERRUPT_INPUT], [1], [Define to read input using SIGIO.])
;;
esac
@@ -4567,111 +5603,128 @@ dnl NARROWPROTO, we will see the wrong function prototypes for X functions
dnl taking float or double parameters.
case $opsys in
cygwin|gnu|gnu-linux|gnu-kfreebsd|freebsd|netbsd|openbsd)
- AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration
+ AC_DEFINE([NARROWPROTO], [1], [Define if system's imake configuration
file defines 'NeedWidePrototypes' as 'NO'.])
;;
esac
dnl Used in process.c, this must be a loop, even if it only runs once.
-AH_TEMPLATE(PTY_ITERATION, [How to iterate over PTYs.])
+AH_TEMPLATE([PTY_ITERATION], [How to iterate over PTYs.])
dnl Only used if !PTY_ITERATION. Iterate from FIRST_PTY_LETTER to z,
dnl trying suffixes 0-16.
-AH_TEMPLATE(FIRST_PTY_LETTER, [Letter to use in finding device name of
+AH_TEMPLATE([FIRST_PTY_LETTER], [Letter to use in finding device name of
first PTY, if PTYs are supported.])
-AH_TEMPLATE(PTY_OPEN, [How to open a PTY, if non-standard.])
-AH_TEMPLATE(PTY_NAME_SPRINTF, [How to get the device name of the control
+AH_TEMPLATE([PTY_OPEN], [How to open a PTY, if non-standard.])
+AH_TEMPLATE([PTY_NAME_SPRINTF], [How to get the device name of the control
end of a PTY, if non-standard.])
-AH_TEMPLATE(PTY_TTY_NAME_SPRINTF, [How to get device name of the tty
+AH_TEMPLATE([PTY_TTY_NAME_SPRINTF], [How to get device name of the tty
end of a PTY, if non-standard.])
case $opsys in
aix4-2 )
- AC_DEFINE(PTY_ITERATION, [int c; for (c = 0; !c ; c++)])
+ AC_DEFINE([PTY_ITERATION], [int c; for (c = 0; !c ; c++)])
dnl You allocate a pty by opening /dev/ptc to get the master side.
dnl To get the name of the slave side, you just ttyname() the master side.
- AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));])
+ AC_DEFINE([PTY_NAME_SPRINTF], [strcpy (pty_name, "/dev/ptc");])
+ AC_DEFINE([PTY_TTY_NAME_SPRINTF], [strcpy (pty_name, ttyname (fd));])
;;
cygwin )
- AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
+ AC_DEFINE([PTY_ITERATION], [int i; for (i = 0; i < 1; i++)])
dnl multi-line AC_DEFINEs are hard. :(
- AC_DEFINE(PTY_OPEN, [ do { int dummy; sigset_t blocked, procmask; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, &procmask); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; pthread_sigmask (SIG_SETMASK, &procmask, 0); if (fd >= 0) emacs_close (dummy); } while (false)])
- AC_DEFINE(PTY_NAME_SPRINTF, [])
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
+ AC_DEFINE([PTY_OPEN],
+ [ do { int dummy; sigset_t blocked, procmask; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, &procmask); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; pthread_sigmask (SIG_SETMASK, &procmask, 0); if (fd >= 0) emacs_close (dummy); } while (false)])
+ AC_DEFINE([PTY_NAME_SPRINTF], [])
+ AC_DEFINE([PTY_TTY_NAME_SPRINTF], [])
;;
- gnu | openbsd )
- AC_DEFINE(FIRST_PTY_LETTER, ['p'])
+ gnu | qnxnto )
+ AC_DEFINE([FIRST_PTY_LETTER], ['p'])
;;
- gnu-linux | gnu-kfreebsd | dragonfly | freebsd | netbsd | darwin | nacl )
+ gnu-linux | gnu-kfreebsd | dragonfly | freebsd | openbsd | netbsd | darwin | nacl )
dnl if HAVE_GRANTPT
if test "x$ac_cv_func_grantpt" = xyes; then
- AC_DEFINE(UNIX98_PTYS, 1, [Define if the system has Unix98 PTYs.])
- AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
+ AC_DEFINE([UNIX98_PTYS], [1], [Define if the system has Unix98 PTYs.])
+ AC_DEFINE([PTY_ITERATION], [int i; for (i = 0; i < 1; i++)])
dnl Note that grantpt and unlockpt may fork. We must block SIGCHLD
dnl to prevent sigchld_handler from intercepting the child's death.
- 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); }])
+ 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, [do { fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY); if (fd < 0 && errno == EINVAL) fd = posix_openpt (O_RDWR | O_NOCTTY); } while (false)])
- AC_DEFINE(PTY_NAME_SPRINTF, [])
+ 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 (false)])
+ AC_DEFINE([PTY_NAME_SPRINTF], [])
dnl if HAVE_GETPT
elif test "x$ac_cv_func_getpt" = xyes; then
- AC_DEFINE(PTY_OPEN, [fd = getpt ()])
- AC_DEFINE(PTY_NAME_SPRINTF, [])
+ AC_DEFINE([PTY_OPEN], [fd = getpt ()])
+ AC_DEFINE([PTY_NAME_SPRINTF], [])
else
- AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
+ AC_DEFINE([PTY_NAME_SPRINTF], [strcpy (pty_name, "/dev/ptmx");])
fi
else
- AC_DEFINE(FIRST_PTY_LETTER, ['p'])
+ AC_DEFINE([FIRST_PTY_LETTER], ['p'])
fi
;;
hpux*)
- AC_DEFINE(FIRST_PTY_LETTER, ['p'])
- AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);])
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
+ AC_DEFINE([FIRST_PTY_LETTER], ['p'])
+ AC_DEFINE([PTY_NAME_SPRINTF],
+ [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);])
+ AC_DEFINE([PTY_TTY_NAME_SPRINTF],
+ [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
;;
- sol2* )
+ solaris )
dnl On SysVr4, grantpt(3) forks a subprocess, so do not use
dnl O_CLOEXEC when opening the pty, and keep the SIGCHLD handler
dnl from intercepting that death. If any child but grantpt's should die
dnl within, it should be caught after sigrelse(2).
- AC_DEFINE(PTY_OPEN, [fd = open (pty_name, O_RDWR | O_NONBLOCK)])
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
+ AC_DEFINE([PTY_OPEN], [fd = open (pty_name, O_RDWR | O_NONBLOCK)])
+ AC_DEFINE([PTY_TTY_NAME_SPRINTF],
+ [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
;;
unixware )
- dnl Comments are as per sol2*.
- AC_DEFINE(PTY_OPEN, [fd = open (pty_name, O_RDWR | O_NONBLOCK)])
- AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
+ dnl Comments are as per solaris.
+ AC_DEFINE([PTY_OPEN], [fd = open (pty_name, O_RDWR | O_NONBLOCK)])
+ AC_DEFINE([PTY_TTY_NAME_SPRINTF],
+ [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
+ ;;
+
+ haiku*)
+ AC_DEFINE([FIRST_PTY_LETTER], ['s'])
+ AC_DEFINE([PTY_NAME_SPRINTF], [])
+ dnl on Haiku pty names aren't distinctive, thus the use of posix_openpt
+ AC_DEFINE([PTY_OPEN], [fd = posix_openpt (O_RDWR | O_NONBLOCK)])
+ AC_DEFINE([PTY_TTY_NAME_SPRINTF],
+ [{ char *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
;;
esac
case $opsys in
- sol2* | unixware )
+ solaris | unixware )
dnl This change means that we don't loop through allocate_pty too
dnl many times in the (rare) event of a failure.
- AC_DEFINE(FIRST_PTY_LETTER, ['z'])
- AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
+ AC_DEFINE([FIRST_PTY_LETTER], ['z'])
+ AC_DEFINE([PTY_NAME_SPRINTF], [strcpy (pty_name, "/dev/ptmx");])
dnl Push various streams modules onto a PTY channel. Used in process.c.
- AC_DEFINE(SETUP_SLAVE_PTY, [if (ioctl (forkin, I_PUSH, "ptem") == -1) fatal ("ioctl I_PUSH ptem"); if (ioctl (forkin, I_PUSH, "ldterm") == -1) fatal ("ioctl I_PUSH ldterm"); if (ioctl (forkin, I_PUSH, "ttcompat") == -1) fatal ("ioctl I_PUSH ttcompat");], [How to set up a slave PTY, if needed.])
+ AC_DEFINE([SETUP_SLAVE_PTY],
+ [if (ioctl (std_in, I_PUSH, "ptem") == -1) fatal ("ioctl I_PUSH ptem"); if (ioctl (std_in, I_PUSH, "ldterm") == -1) fatal ("ioctl I_PUSH ldterm"); if (ioctl (std_in, I_PUSH, "ttcompat") == -1) fatal ("ioctl I_PUSH ttcompat");], [How to set up a slave PTY, if needed.])
;;
esac
-AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by
+AH_TEMPLATE([SIGNALS_VIA_CHARACTERS], [Make process_send_signal work by
"typing" a signal character on the pty.])
case $opsys in
dnl Perry Smith <pedz@ddivt1.austin.ibm.com> says this is correct for AIX.
aix4-2 | cygwin | gnu | dragonfly | freebsd | netbsd | openbsd | darwin )
- AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
+ AC_DEFINE([SIGNALS_VIA_CHARACTERS], [1])
;;
dnl 21 Jun 06: Eric Hanchrow <offby1@blarg.net> says this works.
@@ -4684,35 +5737,41 @@ case $opsys in
#if LINUX_VERSION_CODE < 0x20400
# error "Linux version too old"
#endif
- ]], [[]])], emacs_cv_signals_via_chars=yes, emacs_cv_signals_via_chars=no)])
+ ]], [[]])],
+ [emacs_cv_signals_via_chars=yes],
+ [emacs_cv_signals_via_chars=no])])
- test "$emacs_cv_signals_via_chars" = yes && AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
+ test "$emacs_cv_signals_via_chars" = yes &&
+ AC_DEFINE([SIGNALS_VIA_CHARACTERS], [1])
;;
esac
-AH_TEMPLATE(TAB3, [Undocumented.])
+AH_TEMPLATE([TAB3], [Undocumented.])
case $opsys in
- darwin) AC_DEFINE(TAB3, OXTABS) ;;
+ darwin) AC_DEFINE([TAB3], [OXTABS]) ;;
gnu | dragonfly | freebsd | netbsd | openbsd )
- AC_DEFINE(TABDLY, OXTABS, [Undocumented.])
- AC_DEFINE(TAB3, OXTABS)
+ AC_DEFINE([TABDLY], [OXTABS], [Undocumented.])
+ AC_DEFINE([TAB3], [OXTABS])
;;
gnu-linux | gnu-kfreebsd )
- AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
+ AC_PREPROC_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
#ifndef __ia64__
# error "not ia64"
#endif
- ]], [[]])], AC_DEFINE(GC_MARK_SECONDARY_STACK(),
+ ]], [[]])],
+ [AC_DEFINE([GC_MARK_SECONDARY_STACK()],
[do { extern void *__libc_ia64_register_backing_store_base; __builtin_ia64_flushrs (); mark_memory (__libc_ia64_register_backing_store_base, __builtin_ia64_bsp ());} while (false)],
- [Mark a secondary stack, like the register stack on the ia64.]), [])
+ [Mark a secondary stack, like the register stack on the ia64.])], [])
;;
hpux*)
- AC_DEFINE(RUN_TIME_REMAP, 1, [Define if emacs.c needs to call
+ AC_DEFINE([RUN_TIME_REMAP], [1], [Define if emacs.c needs to call
run_time_remap; for HPUX.])
;;
esac
@@ -4720,7 +5779,7 @@ esac
dnl This won't be used automatically yet. We also need to know, at least,
dnl that the stack is continuous.
-AH_TEMPLATE(GC_SETJMP_WORKS, [Define if setjmp is known to save all
+AH_TEMPLATE([GC_SETJMP_WORKS], [Define if setjmp is known to save all
registers relevant for conservative garbage collection in the jmp_buf.])
@@ -4734,23 +5793,24 @@ case $opsys in
#if defined __i386__ || defined __sparc__ || defined __mc68000__ \
|| defined __alpha__ || defined __mips__ || defined __s390__ \
|| defined __arm__ || defined __powerpc__ || defined __amd64__ \
+ || defined __x86_64__ \
|| defined __ia64__ || defined __sh__
/* ok */
#else
# error "setjmp not known to work on this arch"
#endif
- ]], [[]])], AC_DEFINE(GC_SETJMP_WORKS, 1))
+ ]], [[]])], [AC_DEFINE([GC_SETJMP_WORKS], [1])])
;;
esac
if test x$GCC = xyes; then
dnl GC_SETJMP_WORKS is nearly always appropriate for GCC.
- AC_DEFINE(GC_SETJMP_WORKS, 1)
+ AC_DEFINE([GC_SETJMP_WORKS], [1])
else
case $opsys in
- aix* | dragonfly | freebsd | netbsd | openbsd | sol2* )
- AC_DEFINE(GC_SETJMP_WORKS, 1)
+ aix* | dragonfly | freebsd | netbsd | openbsd | solaris )
+ AC_DEFINE([GC_SETJMP_WORKS], [1])
;;
esac
fi dnl GCC?
@@ -4770,7 +5830,7 @@ AC_CACHE_CHECK([for _setjmp], [emacs_cv_func__setjmp],
[emacs_cv_func__setjmp=yes],
[emacs_cv_func__setjmp=no])])
if test $emacs_cv_func__setjmp = yes; then
- AC_DEFINE([HAVE__SETJMP], 1, [Define to 1 if _setjmp and _longjmp work.])
+ AC_DEFINE([HAVE__SETJMP], [1], [Define to 1 if _setjmp and _longjmp work.])
fi
# We need to preserve signal mask to handle C stack overflows.
@@ -4785,30 +5845,30 @@ AC_CACHE_CHECK([for sigsetjmp], [emacs_cv_func_sigsetjmp],
[emacs_cv_func_sigsetjmp=yes],
[emacs_cv_func_sigsetjmp=no])])
if test $emacs_cv_func_sigsetjmp = yes; then
- AC_DEFINE([HAVE_SIGSETJMP], 1,
+ AC_DEFINE([HAVE_SIGSETJMP], [1],
[Define to 1 if sigsetjmp and siglongjmp work.])
fi
case $emacs_cv_func_sigsetjmp,$emacs_cv_alternate_stack,$opsys in
yes,yes,* | *,*,mingw32)
- AC_DEFINE([HAVE_STACK_OVERFLOW_HANDLING], 1,
+ AC_DEFINE([HAVE_STACK_OVERFLOW_HANDLING], [1],
[Define to 1 if C stack overflow can be handled in some cases.]);;
esac
case $opsys in
- sol2* | unixware )
+ solaris | unixware )
dnl TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
dnl subprocesses the usual way. But TIOCSIGNAL does work for PTYs,
dnl and this is all we need.
- AC_DEFINE(TIOCSIGSEND, TIOCSIGNAL, [Some platforms redefine this.])
+ AC_DEFINE([TIOCSIGSEND], [TIOCSIGNAL], [Some platforms redefine this.])
;;
esac
case $opsys in
- hpux* | sol2* )
+ hpux* | solaris )
dnl Used in xfaces.c.
- AC_DEFINE(XOS_NEEDS_TIME_H, 1, [Compensate for a bug in Xos.h on
+ AC_DEFINE([XOS_NEEDS_TIME_H], [1], [Compensate for a bug in Xos.h on
some systems, where it requires time.h.])
;;
esac
@@ -4816,63 +5876,83 @@ esac
dnl Define symbols to identify the version of Unix this is.
dnl Define all the symbols that apply correctly.
-AH_TEMPLATE(DOS_NT, [Define if the system is MS DOS or MS Windows.])
-AH_TEMPLATE(MSDOS, [Define if the system is MS DOS.])
-AH_TEMPLATE(USG, [Define if the system is compatible with System III.])
-AH_TEMPLATE(USG5_4, [Define if the system is compatible with System V Release 4.])
+AH_TEMPLATE([DOS_NT], [Define if the system is MS DOS or MS Windows.])
+AH_TEMPLATE([MSDOS], [Define if the system is MS DOS.])
+AH_TEMPLATE([USG], [Define if the system is compatible with System III.])
+AH_TEMPLATE([USG5_4],
+ [Define if the system is compatible with System V Release 4.])
case $opsys in
aix4-2)
- AC_DEFINE(USG, [])
+ AC_DEFINE([USG], [])
dnl This symbol should be defined on AIX Version 3 ???????
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
#ifndef _AIX
# error "_AIX not defined"
#endif
- ]], [[]])], [], AC_DEFINE(_AIX, [], [Define if the system is AIX.]))
+ ]], [[]])], [], [AC_DEFINE([_AIX], [], [Define if the system is AIX.])])
;;
cygwin)
- AC_DEFINE(CYGWIN, 1, [Define if the system is Cygwin.])
+ AC_DEFINE([CYGWIN], [1], [Define if the system is Cygwin.])
;;
darwin)
dnl Not __APPLE__, as this may not be defined on non-macOS Darwin.
dnl Not DARWIN, because Panther and lower CoreFoundation.h use DARWIN to
dnl distinguish macOS from pure Darwin.
- AC_DEFINE(DARWIN_OS, [], [Define if the system is Darwin.])
+ AC_DEFINE([DARWIN_OS], [], [Define if the system is Darwin.])
;;
gnu-linux | gnu-kfreebsd )
- AC_DEFINE(USG, [])
- AC_DEFINE(GNU_LINUX, [], [Define if ths system is compatible with GNU/Linux.])
+ AC_DEFINE([USG], [])
+ AC_DEFINE([GNU_LINUX], [],
+ [Define if ths system is compatible with GNU/Linux.])
;;
hpux*)
- AC_DEFINE(USG, [])
- AC_DEFINE(HPUX, [], [Define if the system is HPUX.])
+ AC_DEFINE([USG], [])
+ AC_DEFINE([HPUX], [], [Define if the system is HPUX.])
;;
mingw32)
- AC_DEFINE(DOS_NT, [])
- AC_DEFINE(WINDOWSNT, 1, [Define if compiling for native MS Windows.])
+ AC_DEFINE([DOS_NT], [])
+ AC_DEFINE([WINDOWSNT], [1], [Define if compiling for native MS Windows.])
if test "x$ac_enable_checking" != "x" ; then
- AC_DEFINE(EMACSDEBUG, 1, [Define to 1 to enable w32 debug facilities.])
+ AC_DEFINE([EMACSDEBUG], [1],
+ [Define to 1 to enable w32 debug facilities.])
fi
;;
- sol2*)
- AC_DEFINE(USG, [])
- AC_DEFINE(USG5_4, [])
- AC_DEFINE(SOLARIS2, [], [Define if the system is Solaris.])
+ solaris)
+ AC_DEFINE([USG], [])
+ AC_DEFINE([USG5_4], [])
+ AC_DEFINE([SOLARIS2], [], [Define if the system is Solaris.])
;;
unixware)
- AC_DEFINE(USG, [])
- AC_DEFINE(USG5_4, [])
+ AC_DEFINE([USG], [])
+ AC_DEFINE([USG5_4], [])
+ ;;
+
+ haiku)
+ AC_DEFINE([HAIKU], [], [Define if the system is Haiku.])
;;
esac
+AC_SYS_POSIX_TERMIOS
+if test $ac_cv_sys_posix_termios = yes; then
+ AC_CHECK_SIZEOF([speed_t], [], [#include <termios.h>])
+ dnl on Haiku, and possibly other platforms, speed_t is defined to
+ dnl unsigned char, even when speeds greater than 200 baud are
+ dnl defined.
+
+ if test ${ac_cv_sizeof_speed_t} -lt 2; then
+ AC_DEFINE([HAVE_TINY_SPEED_T], [1],
+ [Define to 1 if speed_t has some sort of nonsensically tiny size.])
+ fi
+fi
+
AC_CACHE_CHECK([for usable FIONREAD], [emacs_cv_usable_FIONREAD],
[case $opsys in
aix4-2 | nacl)
@@ -4915,19 +5995,35 @@ if test $emacs_cv_usable_FIONREAD = yes; then
AC_DEFINE([USABLE_SIGIO], [1], [Define to 1 if SIGIO is usable.])
fi
fi
+
+ if test $emacs_broken_SIGIO = no && test $emacs_cv_usable_SIGIO = no; then
+ AC_CACHE_CHECK([for usable SIGPOLL], [emacs_cv_usable_SIGPOLL],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <fcntl.h>
+ #include <signal.h>
+ ]],
+ [[int foo = SIGPOLL | F_SETFL;]])],
+ [emacs_cv_usable_SIGPOLL=yes],
+ [emacs_cv_usable_SIGPOLL=no])],
+ [emacs_cv_usable_SIGPOLL=yes],
+ [emacs_cv_usable_SIGPOLL=no])
+ if test $emacs_cv_usable_SIGPOLL = yes; then
+ AC_DEFINE([USABLE_SIGPOLL], [1], [Define to 1 if SIGPOLL is usable but SIGIO is not.])
+ fi
+ fi
fi
case $opsys in
hpux11)
dnl It works to open the pty's tty in the parent (Emacs), then
dnl close and reopen it in the child.
- AC_DEFINE(USG_SUBTTY_WORKS, 1, [Define for USG systems where it
+ AC_DEFINE([USG_SUBTTY_WORKS], [1], [Define for USG systems where it
works to open a pty's tty in the parent process, then close and
reopen it in the child.])
;;
- sol2-10)
- AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes
+ solaris)
+ AC_DEFINE([_STRUCTURED_PROC], [1], [Needed for system_process_attributes
on Solaris.])
;;
esac
@@ -4949,95 +6045,113 @@ fi
version=$PACKAGE_VERSION
-copyright="Copyright (C) 2017 Free Software Foundation, Inc."
-AC_DEFINE_UNQUOTED(COPYRIGHT, ["$copyright"],
+copyright="Copyright (C) 2022 Free Software Foundation, Inc."
+AC_DEFINE_UNQUOTED([COPYRIGHT], ["$copyright"],
[Short copyright string for this version of Emacs.])
-AC_SUBST(copyright)
+AC_SUBST([copyright])
### Specify what sort of things we'll be editing into Makefile and config.h.
### Use configuration here uncanonicalized to avoid exceeding size limits.
-AC_SUBST(version)
-AC_SUBST(configuration)
+AC_SUBST([version])
+AC_SUBST([configuration])
## Unused?
-AC_SUBST(canonical)
-AC_SUBST(srcdir)
-AC_SUBST(prefix)
-AC_SUBST(exec_prefix)
-AC_SUBST(bindir)
-AC_SUBST(datadir)
-AC_SUBST(sharedstatedir)
-AC_SUBST(libexecdir)
-AC_SUBST(mandir)
-AC_SUBST(infodir)
-AC_SUBST(lispdir)
-AC_SUBST(standardlisppath)
-AC_SUBST(locallisppath)
-AC_SUBST(lisppath)
-AC_SUBST(x_default_search_path)
-AC_SUBST(etcdir)
-AC_SUBST(archlibdir)
-AC_SUBST(etcdocdir)
-AC_SUBST(bitmapdir)
-AC_SUBST(gamedir)
-AC_SUBST(gameuser)
-AC_SUBST(gamegroup)
+AC_SUBST([canonical])
+AC_SUBST([srcdir])
+AC_SUBST([prefix])
+AC_SUBST([exec_prefix])
+AC_SUBST([bindir])
+AC_SUBST([datadir])
+AC_SUBST([gsettingsschemadir])
+AC_SUBST([sharedstatedir])
+AC_SUBST([libexecdir])
+AC_SUBST([mandir])
+AC_SUBST([infodir])
+AC_SUBST([lispdirrel])
+AC_SUBST([lispdir])
+AC_SUBST([standardlisppath])
+AC_SUBST([locallisppath])
+AC_SUBST([lisppath])
+AC_SUBST([x_default_search_path])
+AC_SUBST([etcdir])
+AC_SUBST([archlibdir])
+AC_SUBST([etcdocdir])
+AC_SUBST([bitmapdir])
+AC_SUBST([gamedir])
+AC_SUBST([gameuser])
+AC_SUBST([gamegroup])
## FIXME? Nothing uses @LD_SWITCH_X_SITE@.
## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the
## end of LIBX_BASE, but nothing ever set it.
-AC_SUBST(LD_SWITCH_X_SITE)
-AC_SUBST(C_SWITCH_X_SITE)
-AC_SUBST(GNUSTEP_CFLAGS)
-AC_SUBST(CFLAGS)
+AC_SUBST([LD_SWITCH_X_SITE])
+AC_SUBST([C_SWITCH_X_SITE])
+AC_SUBST([GNUSTEP_CFLAGS])
+AC_SUBST([CFLAGS])
## Used in lwlib/Makefile.in.
-AC_SUBST(X_TOOLKIT_TYPE)
-AC_SUBST(ns_appdir)
-AC_SUBST(ns_appbindir)
-AC_SUBST(ns_appresdir)
-AC_SUBST(ns_appsrc)
-AC_SUBST(GNU_OBJC_CFLAGS)
-AC_SUBST(OTHER_FILES)
+AC_SUBST([X_TOOLKIT_TYPE])
+AC_SUBST([ns_appdir])
+AC_SUBST([ns_appbindir])
+AC_SUBST([ns_applibexecdir])
+AC_SUBST([ns_applibdir])
+AC_SUBST([ns_appresdir])
+AC_SUBST([ns_appsrc])
+AC_SUBST([GNU_OBJC_CFLAGS])
+AC_SUBST([OTHER_FILES])
if test -n "${term_header}"; then
- AC_DEFINE_UNQUOTED(TERM_HEADER, "${term_header}",
+ AC_DEFINE_UNQUOTED([TERM_HEADER], ["${term_header}"],
[Define to the header for the built-in window system.])
fi
-AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "${canonical}",
+AC_DEFINE_UNQUOTED([EMACS_CONFIGURATION], ["${canonical}"],
[Define to the canonical Emacs configuration name.])
-AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${emacs_config_options}",
+AC_DEFINE_UNQUOTED([EMACS_CONFIG_OPTIONS], "${emacs_config_options}",
[Define to the options passed to configure.])
XMENU_OBJ=
XOBJ=
FONT_OBJ=
if test "${HAVE_X_WINDOWS}" = "yes" ; then
- AC_DEFINE(HAVE_X_WINDOWS, 1,
+ AC_DEFINE([HAVE_X_WINDOWS], [1],
[Define to 1 if you want to use the X window system.])
XMENU_OBJ=xmenu.o
XOBJ="xterm.o xfns.o xselect.o xrdb.o xsmfns.o xsettings.o"
FONT_OBJ=xfont.o
if test "$HAVE_CAIRO" = "yes"; then
- FONT_OBJ="ftfont.o ftcrfont.o"
+ FONT_OBJ="$FONT_OBJ ftfont.o ftcrfont.o"
elif test "$HAVE_XFT" = "yes"; then
- FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
+ FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o"
elif test "$HAVE_FREETYPE" = "yes"; then
- FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
+ FONT_OBJ="$FONT_OBJ ftfont.o"
fi
- AC_SUBST(FONT_OBJ)
fi
-AC_SUBST(XMENU_OBJ)
-AC_SUBST(XOBJ)
-AC_SUBST(FONT_OBJ)
+
+if test "${window_system}" = "pgtk"; then
+ FONT_OBJ="ftfont.o ftcrfont.o"
+fi
+
+if test "${HAVE_BE_APP}" = "yes" ; then
+ if test "${HAVE_CAIRO}" = "yes"; then
+ FONT_OBJ="$FONT_OBJ ftfont.o ftcrfont.o"
+ fi
+fi
+
+if test "${HAVE_HARFBUZZ}" = "yes" ; then
+ FONT_OBJ="$FONT_OBJ hbfont.o"
+fi
+AC_SUBST([FONT_OBJ])
+AC_SUBST([XMENU_OBJ])
+AC_SUBST([XOBJ])
+AC_SUBST([FONT_OBJ])
WIDGET_OBJ=
MOTIF_LIBW=
if test "${USE_X_TOOLKIT}" != "none" ; then
WIDGET_OBJ=widget.o
- AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
+ AC_DEFINE([USE_X_TOOLKIT], [1], [Define to 1 if using an X toolkit.])
if test "${USE_X_TOOLKIT}" = "LUCID"; then
- AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
+ AC_DEFINE([USE_LUCID], [1], [Define to 1 if using the Lucid X toolkit.])
elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
- AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
+ AC_DEFINE([USE_MOTIF], [1], [Define to 1 if using the Motif X toolkit.])
MOTIF_LIBW=-lXm
case "$opsys" in
gnu-linux)
@@ -5059,7 +6173,7 @@ if test "${USE_X_TOOLKIT}" != "none" ; then
MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
fi
fi
-AC_SUBST(WIDGET_OBJ)
+AC_SUBST([WIDGET_OBJ])
TOOLKIT_LIBW=
case "$USE_X_TOOLKIT" in
@@ -5070,7 +6184,7 @@ esac
if test "$HAVE_XWIDGETS" = "yes"; then
TOOLKIT_LIBW="$TOOLKIT_LIBW -lXcomposite"
fi
-AC_SUBST(TOOLKIT_LIBW)
+AC_SUBST([TOOLKIT_LIBW])
if test "${opsys}" != "mingw32"; then
if test "$USE_X_TOOLKIT" = "none"; then
@@ -5079,16 +6193,16 @@ if test "${opsys}" != "mingw32"; then
LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
fi
fi
-AC_SUBST(LIBXT_OTHER)
+AC_SUBST([LIBXT_OTHER])
if test "${HAVE_X11}" = "yes" ; then
- AC_DEFINE(HAVE_X11, 1,
+ AC_DEFINE([HAVE_X11], [1],
[Define to 1 if you want to use version 11 of X windows.])
LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
else
LIBX_OTHER=
fi
-AC_SUBST(LIBX_OTHER)
+AC_SUBST([LIBX_OTHER])
HAVE_OLDXMENU=no
if test "$HAVE_GTK" = yes || test "$HAVE_X11" != yes; then
@@ -5101,38 +6215,51 @@ else
LIBXMENU='$(lwlibdir)/liblw.a'
AUTODEPEND_PARENTS="$AUTODEPEND_PARENTS lwlib"
fi
-AC_SUBST(LIBXMENU)
+AC_SUBST([LIBXMENU])
AC_CACHE_CHECK([for struct alignment],
[emacs_cv_struct_alignment],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#include <stddef.h>
- struct __attribute__ ((aligned (8))) s { char c; };
+ struct s { char c; } __attribute__ ((aligned (8)));
struct t { char c; struct s s; };
char verify[offsetof (struct t, s) == 8 ? 1 : -1];
]])],
[emacs_cv_struct_alignment=yes],
[emacs_cv_struct_alignment=no])])
if test "$emacs_cv_struct_alignment" = yes; then
- AC_DEFINE([HAVE_STRUCT_ATTRIBUTE_ALIGNED], 1,
+ AC_DEFINE([HAVE_STRUCT_ATTRIBUTE_ALIGNED], [1],
[Define to 1 if 'struct __attribute__ ((aligned (N)))' aligns the
structure to an N-byte boundary.])
fi
+AC_C_TYPEOF
+
+AC_CACHE_CHECK([for statement expressions],
+ [emacs_cv_statement_expressions],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([], [[return ({ int x = 5; x-x; });]])],
+ [emacs_cv_statement_expressions=yes],
+ [emacs_cv_statement_expressions=no])])
+if test "$emacs_cv_statement_expressions" = yes; then
+ AC_DEFINE([HAVE_STATEMENT_EXPRESSIONS], [1],
+ [Define to 1 if statement expressions work.])
+fi
+
if test "${GNU_MALLOC}" = "yes" ; then
- AC_DEFINE(GNU_MALLOC, 1,
+ AC_DEFINE([GNU_MALLOC], [1],
[Define to 1 if you want to use the GNU memory allocator.])
fi
RALLOC_OBJ=
if test "${REL_ALLOC}" = "yes" ; then
- AC_DEFINE(REL_ALLOC, 1,
+ AC_DEFINE([REL_ALLOC], [1],
[Define REL_ALLOC if you want to use the relocating allocator for
buffer space.])
test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
fi
-AC_SUBST(RALLOC_OBJ)
+AC_SUBST([RALLOC_OBJ])
if test "$opsys" = "cygwin"; then
CYGWIN_OBJ="cygw32.o"
@@ -5148,9 +6275,9 @@ else
PRE_ALLOC_OBJ=lastfile.o
POST_ALLOC_OBJ=
fi
-AC_SUBST(CYGWIN_OBJ)
-AC_SUBST(PRE_ALLOC_OBJ)
-AC_SUBST(POST_ALLOC_OBJ)
+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
@@ -5190,10 +6317,17 @@ CFLAGS=$pre_PKG_CONFIG_CFLAGS
LIBS="$LIB_PTHREAD $pre_PKG_CONFIG_LIBS"
gl_ASSERT_NO_GNULIB_POSIXCHECK
gl_ASSERT_NO_GNULIB_TESTS
+gl_EEMALLOC
gl_INIT
CFLAGS=$SAVE_CFLAGS
LIBS=$SAVE_LIBS
+# timer_getoverrun needs the same library as timer_settime
+OLD_LIBS=$LIBS
+LIBS="$LIB_TIMER_TIME $LIBS"
+AC_CHECK_FUNCS([timer_getoverrun])
+LIBS=$OLD_LIBS
+
if test "${opsys}" = "mingw32"; then
CPPFLAGS="$CPPFLAGS -DUSE_CRT_DLL=1 -I \${abs_top_srcdir}/nt/inc"
# Remove unneeded switches from the value of CC that goes to Makefiles
@@ -5206,6 +6340,19 @@ case "$opsys" in
cygwin) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000" ;;
darwin)
+ if test "$HAVE_NS" = "yes"; then
+ libs_nsgui="-framework AppKit"
+ if test "$NS_IMPL_COCOA" = "yes"; then
+ libs_nsgui="$libs_nsgui -framework IOKit -framework Carbon \
+ -framework IOSurface -framework QuartzCore"
+ if test "$emacs_cv_macosx_12_0" = "yes"; then
+ libs_nsgui="$libs_nsgui -framework UniformTypeIdentifiers"
+ fi
+ fi
+ else
+ libs_nsgui=
+ fi
+ LD_SWITCH_SYSTEM_TEMACS=$libs_nsgui
## The -headerpad option tells ld (see man page) to leave room at the
## end of the header for adding load commands. Needed for dumping.
## 0x1000 is enough for roughly 52 load commands on the x86_64
@@ -5214,15 +6361,9 @@ case "$opsys" in
## about 14 to about 34. Setting it high gets us plenty of slop and
## only costs about 1.5K of wasted binary space.
headerpad_extra=1000
- if test "$HAVE_NS" = "yes"; then
- libs_nsgui="-framework AppKit"
- if test "$NS_IMPL_COCOA" = "yes"; then
- libs_nsgui="$libs_nsgui -framework IOKit"
- fi
- else
- libs_nsgui=
+ if test "$with_unexec" = yes; then
+ LD_SWITCH_SYSTEM_TEMACS="-fno-pie $LD_SWITCH_SYSTEM_TEMACS -Xlinker -headerpad -Xlinker $headerpad_extra"
fi
- 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. It seems cleaner to put this in
@@ -5246,6 +6387,13 @@ case "$opsys" in
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
+ ## If they want unexec, disable Windows ASLR for the Emacs binary
+ if test "$with_dumping" = "unexec"; then
+ case "$canonical" in
+ x86_64-*-*) LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS -Wl,-disable-dynamicbase -Wl,-disable-high-entropy-va -Wl,-default-image-base-low" ;;
+ *) LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS -Wl,-disable-dynamicbase" ;;
+ esac
+ fi
;;
*) LD_SWITCH_SYSTEM_TEMACS= ;;
@@ -5262,19 +6410,25 @@ esac
AC_CACHE_CHECK(
[for $CC option to disable position independent executables],
[emacs_cv_prog_cc_no_pie],
- [emacs_save_c_werror_flag=$ac_c_werror_flag
- emacs_save_LDFLAGS=$LDFLAGS
- ac_c_werror_flag=yes
- for emacs_cv_prog_cc_no_pie in -no-pie -nopie no; do
- test $emacs_cv_prog_cc_no_pie = no && break
- LDFLAGS="$emacs_save_LDFLAGS $emacs_cv_prog_cc_no_pie"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [break])
- done
- ac_c_werror_flag=$emacs_save_c_werror_flag
- LDFLAGS=$emacs_save_LDFLAGS])
-if test "$emacs_cv_prog_cc_no_pie" != no; then
- LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS $emacs_cv_prog_cc_no_pie"
-fi
+ [if test $with_unexec = no; then
+ emacs_cv_prog_cc_no_pie='not needed'
+ else
+ emacs_save_c_werror_flag=$ac_c_werror_flag
+ emacs_save_LDFLAGS=$LDFLAGS
+ ac_c_werror_flag=yes
+ for emacs_cv_prog_cc_no_pie in -no-pie -nopie no; do
+ test $emacs_cv_prog_cc_no_pie = no && break
+ LDFLAGS="$emacs_save_LDFLAGS $emacs_cv_prog_cc_no_pie"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [break])
+ done
+ ac_c_werror_flag=$emacs_save_c_werror_flag
+ LDFLAGS=$emacs_save_LDFLAGS
+ fi])
+case $emacs_cv_prog_cc_no_pie in
+ -*)
+ LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS $emacs_cv_prog_cc_no_pie"
+ ;;
+esac
if test x$ac_enable_profiling != x ; then
case $opsys in
@@ -5285,20 +6439,21 @@ fi
LD_SWITCH_SYSTEM_TEMACS="$LDFLAGS_NOCOMBRELOC $LD_SWITCH_SYSTEM_TEMACS"
-AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
+AC_SUBST([LD_SWITCH_SYSTEM_TEMACS])
## 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.])
+ 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
-AC_SUBST(WINDOW_SYSTEM_OBJ)
+AC_SUBST([WINDOW_SYSTEM_OBJ])
AH_TOP([/* GNU Emacs site configuration template file.
-Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2017
+Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2021
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -5349,6 +6504,12 @@ else
ACL_SUMMARY=no
fi
+if test -z "$GMP_H"; then
+ HAVE_GMP=yes
+else
+ HAVE_GMP=no
+fi
+
emacs_standard_dirs='Standard dirs'
AS_ECHO(["
Configured for '${canonical}'.
@@ -5363,17 +6524,23 @@ Configured for '${canonical}'.
Where do we find X Windows header files? ${x_includes:-$emacs_standard_dirs}
Where do we find X Windows libraries? ${x_libraries:-$emacs_standard_dirs}"])
+#### Please respect alphabetical ordering when making additions.
optsep=
emacs_config_features=
-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 OLDXMENU X11 NS MODULES \
- XWIDGETS LIBSYSTEMD CANNOT_DUMP LCMS2; do
+for opt in ACL BE_APP CAIRO DBUS FREETYPE GCONF GIF GLIB GMP GNUTLS GPM GSETTINGS \
+ HARFBUZZ IMAGEMAGICK JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 \
+ M17N_FLT MODULES NATIVE_COMP NOTIFY NS OLDXMENU PDUMPER PGTK PNG RSVG SECCOMP \
+ SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS \
+ UNEXEC WEBP X11 XAW3D XDBE XFT XIM XINPUT2 XPM XWIDGETS X_TOOLKIT \
+ ZLIB; do
case $opt in
- CANNOT_DUMP) eval val=\${$opt} ;;
+ PDUMPER) val=${with_pdumper} ;;
+ UNEXEC) val=${with_unexec} ;;
+ GLIB) val=${emacs_cv_links_glib} ;;
NOTIFY|ACL) eval val=\${${opt}_SUMMARY} ;;
TOOLKIT_SCROLL_BARS|X_TOOLKIT) eval val=\${USE_$opt} ;;
+ THREADS) val=${threads_enabled} ;;
*) eval val=\${HAVE_$opt} ;;
esac
case x$val in
@@ -5386,11 +6553,20 @@ for opt in XAW3D XPM JPEG TIFF GIF PNG RSVG CAIRO IMAGEMAGICK SOUND GPM DBUS \
*) continue ;;
esac
;;
+ NOTIFY)
+ case $val in
+ *lkqueue*) opt="$opt LIBKQUEUE" ;;
+ *kqueue*) opt="$opt KQUEUE" ;;
+ *inotify*) opt="$opt INOTIFY" ;;
+ *gfile*) opt="$opt GFILENOTIFY" ;;
+ *w32*) opt="$opt W32NOTIFY" ;;
+ esac
+ ;;
esac
AS_VAR_APPEND([emacs_config_features], ["$optsep$opt"])
optsep=' '
done
-AC_DEFINE_UNQUOTED(EMACS_CONFIG_FEATURES, "${emacs_config_features}",
+AC_DEFINE_UNQUOTED([EMACS_CONFIG_FEATURES], ["${emacs_config_features}"],
[Summary of some of the main features enabled by configure.])
AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D}
@@ -5400,9 +6576,12 @@ AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D
Does Emacs use a gif library? ${HAVE_GIF} $LIBGIF
Does Emacs use a png library? ${HAVE_PNG} $LIBPNG
Does Emacs use -lrsvg-2? ${HAVE_RSVG}
+ Does Emacs use -lwebp? ${HAVE_WEBP}
+ Does Emacs use -lsqlite3? ${HAVE_SQLITE3}
Does Emacs use cairo? ${HAVE_CAIRO}
Does Emacs use -llcms2? ${HAVE_LCMS2}
- Does Emacs use imagemagick (version 6)? ${HAVE_IMAGEMAGICK}
+ Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}
+ Does Emacs use native APIs for images? ${NATIVE_IMAGE_API}
Does Emacs support sound? ${HAVE_SOUND}
Does Emacs use -lgpm? ${HAVE_GPM}
Does Emacs use -ldbus? ${HAVE_DBUS}
@@ -5414,15 +6593,24 @@ AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D
Does Emacs use -lgnutls? ${HAVE_GNUTLS}
Does Emacs use -lxml2? ${HAVE_LIBXML2}
Does Emacs use -lfreetype? ${HAVE_FREETYPE}
+ Does Emacs use HarfBuzz? ${HAVE_HARFBUZZ}
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 use -ljansson? ${HAVE_JSON}
+ Does Emacs use the GMP library? ${HAVE_GMP}
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}
- Does Emacs support Xwidgets (requires gtk3)? ${HAVE_XWIDGETS}
+ Does Emacs support Xwidgets? ${HAVE_XWIDGETS}
Does Emacs have threading support in lisp? ${threads_enabled}
+ Does Emacs support the portable dumper? ${with_pdumper}
+ Does Emacs support legacy unexec dumping? ${with_unexec}
+ Which dumping strategy does Emacs use? ${with_dumping}
+ Does Emacs have native lisp compiler? ${HAVE_NATIVE_COMP}
+ Does Emacs use version 2 of the X Input Extension? ${HAVE_XINPUT2}
+ Does Emacs generate a smaller-size Japanese dictionary? ${with_small_ja_dic}
"])
if test -n "${EMACSDATA}"; then
@@ -5436,9 +6624,10 @@ echo
if test "$HAVE_NS" = "yes"; then
echo
- AS_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."])
+ AS_ECHO(["Run '${MAKE-make}' to build Emacs, then run 'src/emacs' to test it.
+Run '${MAKE-make} install' in order to build an application bundle.
+The 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
@@ -5454,6 +6643,9 @@ case $opsys,$emacs_uname_r in
AC_MSG_WARN([[building Emacs on Cygwin 1.5 is not supported.]])
echo
;;
+ cygwin,3.0.[[0-7]]'('* | cygwin,3.1.[[0-2]]'('*)
+ AC_DEFINE([HAVE_CYGWIN_O_PATH_BUG], [1],
+ [Define to 1 if opening a FIFO, socket, or symlink with O_PATH is buggy.]);;
esac
# Remove any trailing slashes in these variables.
@@ -5474,7 +6666,7 @@ if test "$HAVE_NS" = "yes"; then
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)
+ AC_SUBST([ns_check_file])
fi
AC_CONFIG_FILES([Makefile lib/gnulib.mk])
@@ -5487,9 +6679,8 @@ m4_define([subdir_makefiles],
SUBDIR_MAKEFILES="subdir_makefiles"
AC_CONFIG_FILES(subdir_makefiles)
-dnl test/ is not present in release tarfiles.
+dnl The test/ directory is missing if './make-dist --no-tests' was used.
opt_makefile=test/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
@@ -5497,6 +6688,13 @@ if test -f "$srcdir/$opt_makefile.in"; then
AC_CONFIG_FILES([test/Makefile])
AC_CONFIG_FILES([test/manual/noverlay/Makefile])
fi
+opt_makefile=test/infra/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/infra/Makefile])
+fi
dnl The admin/ directory used to be excluded from tarfiles.
@@ -5510,7 +6708,10 @@ fi dnl -d admin
SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'`
-AC_SUBST(SUBDIR_MAKEFILES_IN)
+AC_SUBST([SUBDIR_MAKEFILES_IN])
+
+SMALL_JA_DIC=$with_small_ja_dic
+AC_SUBST([SMALL_JA_DIC])
dnl You might wonder (I did) why epaths.h is generated by running make,
dnl rather than just letting configure generate it from epaths.in.
@@ -5523,10 +6724,13 @@ dnl the use of force in the 'epaths-force' rule in Makefile.in.
AC_CONFIG_COMMANDS([src/epaths.h], [
if test "${opsys}" = "mingw32"; then
${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force-w32
+elif test "$HAVE_NS" = "yes" && test "$EN_NS_SELF_CONTAINED" = "yes"; then
+ ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force-ns-self-contained
else
${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force
fi || AC_MSG_ERROR(['src/epaths.h' could not be made.])
-], [GCC="$GCC" CPPFLAGS="$CPPFLAGS" opsys="$opsys"])
+], [GCC="$GCC" CPPFLAGS="$CPPFLAGS" opsys="$opsys" HAVE_NS="$HAVE_NS"
+ EN_NS_SELF_CONTAINED="$EN_NS_SELF_CONTAINED"])
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,
@@ -5561,6 +6765,12 @@ if test $AUTO_DEPEND = yes; then
AS_MKDIR_P([$dir/deps])
done
fi
+if $gl_gnulib_enabled_dynarray || $gl_gnulib_enabled_scratch_buffer; then
+ AS_MKDIR_P([lib/malloc])
+ if test $AUTO_DEPEND = yes; then
+ AS_MKDIR_P([lib/deps/malloc])
+ fi
+fi
AC_OUTPUT
@@ -5569,6 +6779,12 @@ if test ! "$with_mailutils"; then
AC_MSG_WARN([This configuration installs a 'movemail' program
that retrieves POP3 email via only insecure channels.
To omit insecure POP3, you can use '$0 --without-pop'.])
+ elif test "$with_pop" = no-by-default; then
+ AC_MSG_WARN([This configuration installs a 'movemail' program
+that does not retrieve POP3 email. By default, Emacs 25 and earlier
+installed a 'movemail' program that retrieved POP3 email via only
+insecure channels, a practice that is no longer recommended but that
+you can continue to support by using '$0 --with-pop'.])
fi
case $opsys in
@@ -5580,10 +6796,33 @@ To omit insecure POP3, you can use '$0 --without-pop'.])
case `(movemail --version) 2>/dev/null` in
*Mailutils*) ;;
*) emacs_fix_movemail="install GNU Mailutils
-<http://mailutils.org> and $emacs_fix_movemail";;
+<https://mailutils.org> and $emacs_fix_movemail";;
esac
AC_MSG_NOTICE([You might want to $emacs_fix_movemail.]);;
esac
fi
-test "$MAKE" = make || AC_MSG_NOTICE([Now you can run '$MAKE'.])
+if test "${HAVE_XFT}" = yes; then
+ AC_MSG_WARN([This configuration uses libXft, which has a number of
+ font rendering issues, and is being considered for removal in the
+ next release of Emacs. Please consider using Cairo graphics +
+ HarfBuzz text shaping instead (they are auto-detected if the
+ relevant development headers are installed).])
+fi
+
+if test "${HAVE_CAIRO}" = "yes" && test "${HAVE_HARFBUZZ}" = no; then
+ AC_MSG_WARN([This configuration uses the Cairo graphics library,
+ but not the HarfBuzz font shaping library (minimum version $harfbuzz_required_ver).
+ We recommend the use of HarfBuzz when using Cairo, please install
+ appropriate HarfBuzz development packages.])
+fi
+
+# Let plain 'make' work.
+test "$MAKE" = make || test -f makefile || cat >makefile <<EOF
+.POSIX:
+MAKE = $MAKE
+all:
+ \$(MAKE) -f Makefile \$?
+.DEFAULT:
+ \$(MAKE) -f Makefile \$<
+EOF