]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix configure.ac
authorEshel Yaron <me@eshelyaron.com>
Tue, 27 May 2025 14:48:17 +0000 (16:48 +0200)
committerEshel Yaron <me@eshelyaron.com>
Tue, 27 May 2025 14:48:17 +0000 (16:48 +0200)
configure.ac

index 5946529100feb95c84fdb2502ee607e6add920cc..afb6816f235265b81fed406ca309f3b51102e4ab 100644 (file)
@@ -22,8 +22,7 @@ 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])
-dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el.
-AC_INIT([GNU Emacs], [30.1.90], [bug-gnu-emacs@gnu.org], [],
+AC_INIT([GNU Emacs], [31.0.50], [bug-gnu-emacs@gnu.org], [],
   [https://www.gnu.org/software/emacs/])
 
 if test "$XCONFIGURE" = "android"; then
@@ -49,6 +48,11 @@ if test "$XCONFIGURE" = "android"; then
     CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=32"
     enable_largefile=no
     enable_year2038=no])
+  # Gnulib should not attempt not to reimplement tzalloc, as strftime
+  # attempts to link with symbols that are only present in the Gnulib
+  # replacement.
+  AS_IF([test "$ANDROID_SDK" -ge "35"],
+    [gl_cv_onwards_func_tzalloc="future OS version"])
 fi
 
 dnl Set emacs_config_options to the options of 'configure', quoted for the shell,
@@ -197,11 +201,17 @@ AS_IF([test "$XCONFIGURE" = "android"],[
 
   AC_MSG_NOTICE([configuring in `exec'])
 
+  # Derive a name for a cache file for this configure script from the
+  # current, if specified.
+  exec_cache_file=
+  AS_CASE([$cache_file], [/dev/null | ""], [],
+    [[[\\/]* | ?:[\\/]*]], [exec_cache_file="--cache-file=$cache_file.2"],
+    [*], [exec_cache_file="--cache-file=../$cache_file.2"])
   OLDCWD=`pwd`
   cd exec
   $CONFIG_SHELL $emacs_srcdir/exec/configure           \
                --host=$host "CC=$CC" "LD=$CC" "AS=$CC" \
-               "AR=$AR" "CFLAGS=$CFLAGS"
+               "AR=$AR" "CFLAGS=$CFLAGS" $exec_cache_file
   emacs_val=$?
   cd $OLDCWD
 
@@ -438,28 +448,13 @@ this option's value should be 'yes' or 'no'.]) ;;
     ],
     [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)])],
+(VALUE one of: pdumper, none; default pdumper)])],
     [ case "${withval}" in
-        pdumper|unexec|none) val=$withval ;;
+        pdumper|none) val=$withval ;;
         *) AC_MSG_ERROR(['--with-dumping=$withval is invalid;
-this option's value should be 'pdumper', 'unexec', or 'none'.])
+this option's value should be 'pdumper' or 'none'.])
         ;;
       esac
       with_dumping=$val
@@ -474,22 +469,10 @@ if test "$with_pdumper" = "auto"; then
   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])
@@ -502,6 +485,24 @@ AC_SUBST([HAVE_PDUMPER])
 DUMPING=$with_dumping
 AC_SUBST([DUMPING])
 
+dnl Where the etc/emacs.service file is to be installed.
+dnl We use $(prefix)/lib/systemd/user as default, but this may not be
+dnl in systemd's search path when prefix is neither /usr nor /usr/local.
+dnl In that case (e.g. for non-root installs) the location can be
+dnl specified with the configure option.
+dnl See https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html#id-1.8.5
+dnl for documentation of systemd's unit file load path.
+AC_ARG_WITH([systemduserunitdir],
+  [AS_HELP_STRING([--with-systemduserunitdir=DIR],
+    [directory for systemd user unit file;
+    default 'PREFIX/usr/lib/systemd/user'])],
+  [systemduserunitdir=${withval}],
+  [systemduserunitdir='${prefix}/lib/systemd/user'])
+if test "${systemduserunitdir}" = "no"; then
+  systemduserunitdir=''
+fi
+AC_SUBST([systemduserunitdir])
+
 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
@@ -572,7 +573,7 @@ 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])
+OPTION_DEFAULT_IFAVAILABLE([dbus],[compile with D-Bus support])
 AC_ARG_WITH([gconf],[AS_HELP_STRING([--with-gconf],
 [compile with Gconf support (Gsettings replaces this)])],[],
 [if test $with_features = yes; then
@@ -958,7 +959,7 @@ a valid path to android.jar.  See config.log for more details.])
   fi
 
   AC_CACHE_CHECK([whether android.jar is new enough],
-    [emacs_cv_android_u_or_later],
+    [emacs_cv_android_v_or_later],
     AS_IF([rm -f conftest.class
 cat << EOF > conftest.java
 
@@ -966,18 +967,18 @@ import android.os.Build;
 
 class conftest
 {
-  private static int test = Build.VERSION_CODES.UPSIDE_DOWN_CAKE;
+  private static int test = Build.VERSION_CODES.VANILLA_ICE_CREAM;
 }
 
 EOF
 ("$JAVAC" -classpath "$with_android" -target 1.7 -source 1.7 conftest.java \
   -d . >&AS_MESSAGE_LOG_FD 2>&1) && test -s conftest.class && rm -f conftest.class],
-          [emacs_cv_android_u_or_later=yes],
-          [emacs_cv_android_u_or_later=no]))
+          [emacs_cv_android_v_or_later=yes],
+          [emacs_cv_android_v_or_later=no]))
 
-  if test "$emacs_cv_android_u_or_later" = "no"; then
+  if test "$emacs_cv_android_v_or_later" = "no"; then
     AC_MSG_ERROR([Emacs must be built with an android.jar file produced for \
-Android 14 (Upside Down Cake) or later.])
+Android 15 (Vanilla Ice Cream) or later.])
   fi
 
   dnl See if the Java compiler supports the `--release' option which
@@ -1186,6 +1187,8 @@ main (void)
    foo = "emacs_api_33";
 #elif __ANDROID_API__ < 35
    foo = "emacs_api_34";
+#elif __ANDROID_API__ < 36
+   foo = "emacs_api_35";
 #else
    foo = "emacs_api_future";
 #endif
@@ -1274,6 +1277,11 @@ packages targeting Android 2.2.])])
   emacs_val="--enable-check-lisp-object-type=$enable_check_lisp_object_type"
   passthrough="$passthrough $emacs_val"
 
+  # And derive a name for the recursive configure invocation's cache
+  # file if one should be specified for this.
+  AS_IF([test -n "$cache_file" && test "$cache_file" != "/dev/null"],
+    [passthrough="$passthrough --cache-file=$cache_file.1"])
+
   AS_IF([test "x$with_mailutils" = "xyes"], [emacs_use_mailutils=yes])
   AC_SUBST([emacs_use_mailutils])
 
@@ -1602,10 +1610,6 @@ ac_func_list=$funcs
 AC_DEFUN([gt_TYPE_WINT_T],
   [GNULIBHEADERS_OVERRIDE_WINT_T=0
    AC_SUBST([GNULIBHEADERS_OVERRIDE_WINT_T])])
-# Emacs does not need precise checks for the Solaris 10 MB_CUR_MAX bug.
-AC_DEFUN_ONCE([gl_STDLIB_H],
-  [AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-   gl_NEXT_HEADERS([stdlib.h])])
 # Emacs does not need to check for off64_t.
 AC_DEFUN([gl_TYPE_OFF64_T],
   [HAVE_OFF64_T=1
@@ -1797,7 +1801,6 @@ AS_IF([test $gl_gcc_warnings = no],
   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 110333
-  nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
   nw="$nw -Woverlength-strings"     # Not a problem these days
   nw="$nw -Wvla"                    # Emacs uses <vla.h>.
   nw="$nw -Wunused-const-variable=2" # lisp.h declares const objects.
@@ -1852,6 +1855,7 @@ AS_IF([test $gl_gcc_warnings = no],
     gl_WARN_ADD([$w])
   done
   gl_WARN_ADD([-Wredundant-decls])     # Prefer this, as we don't use Bison.
+  gl_WARN_ADD([-Wtrailing-whitespace]) # This project's coding style
   gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one
   gl_WARN_ADD([-Wno-override-init])    # More trouble than it is worth
   gl_WARN_ADD([-Wno-sign-compare])     # Too many warnings for now
@@ -1996,6 +2000,8 @@ ARCH_INDEPENDENT_CONFIG_FILES([src/verbose.mk])
 
 dnl Some other nice autoconf tests.
 AC_PROG_INSTALL
+dnl use "gawk" where possible
+AC_PROG_AWK
 dnl These are commented out, since gl_EARLY and/or Autoconf already does them.
 dnl AC_PROG_MKDIR_P
 dnl if test "x$RANLIB" = x; then
@@ -2060,64 +2066,20 @@ 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 &&
       test ! -f conftest.tmp
-   then emacs_cv_find_delete="-delete"
-   else emacs_cv_find_delete="-exec rm -f {} ';'"
+   then emacs_cv_find_delete="-delete" # GNU 'find'
+   elif find . -prune -name x -exec echo {} + 2>/dev/null
+   then emacs_cv_find_delete="-exec rm -f {} +" # POSIX 'find'
+   else emacs_cv_find_delete="-exec rm -f {} + -o -exec true {} +" # AIX 7.3
    fi])
 FIND_DELETE=$emacs_cv_find_delete
 AC_SUBST([FIND_DELETE])
 
 PAXCTL_dumped=
 PAXCTL_notdumped=
-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],
-      [touch conftest.tmp
-       if (setfattr -n user.pax.flags conftest.tmp) >/dev/null 2>&1; then
-        emacs_cv_prog_setfattr=yes
-       else
-        emacs_cv_prog_setfattr=no
-       fi])
-    if test "$emacs_cv_prog_setfattr" = yes; then
-      PAXCTL_notdumped='$(SETFATTR) -n user.pax.flags -v er'
-      SETFATTR=setfattr
-    else
-      SETFATTR=
-    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
-       fi
-      fi;;
-  esac
-fi
 AC_SUBST([PAXCTL_dumped])
 AC_SUBST([PAXCTL_notdumped])
 AC_SUBST([SETFATTR])
@@ -2184,37 +2146,6 @@ else
     ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
 fi
 
-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.
-if test "$GCC" = yes; then
-  LDFLAGS_NOCOMBRELOC="-Wl,-znocombreloc"
-else
-  LDFLAGS_NOCOMBRELOC="-znocombreloc"
-fi
-
-AC_CACHE_CHECK([for -znocombreloc], [emacs_cv_znocombreloc],
-  [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])
-
-case $emacs_cv_znocombreloc in
-  no*)
-    LDFLAGS_NOCOMBRELOC= ;;
-esac
-
-
 AC_CACHE_CHECK([whether addresses are sanitized],
   [emacs_cv_sanitize_address],
   [AC_COMPILE_IFELSE(
@@ -2230,48 +2161,8 @@ AC_CACHE_CHECK([whether addresses are sanitized],
      [emacs_cv_sanitize_address=yes],
      [emacs_cv_sanitize_address=no])])
 
-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
-
-
-UNEXEC_OBJ=
-test $with_unexec = yes &&
-case "$opsys" in
-  # MSDOS uses unexcoff.o
-  aix4-2)
-   UNEXEC_OBJ=unexaix.o
-   ;;
-  cygwin)
-   UNEXEC_OBJ=unexcw.o
-   ;;
-  darwin)
-   UNEXEC_OBJ=unexmacosx.o
-   ;;
-  hpux10-20 | hpux11)
-   UNEXEC_OBJ=unexhp9k800.o
-   ;;
-  mingw32)
-   UNEXEC_OBJ=unexw32.o
-   ;;
-  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).
-   UNEXEC_OBJ=unexsol.o
-   ;;
-  *)
-   UNEXEC_OBJ=unexelf.o
-   ;;
-esac
-AC_SUBST([UNEXEC_OBJ])
-
 LD_SWITCH_SYSTEM=
-test "$with_unexec" = no || case "$opsys" in
+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
@@ -2293,9 +2184,7 @@ test "$with_unexec" = no || case "$opsys" in
    ;;
 
   openbsd)
-   ## Han Boetes <han@boetes.org> says this is necessary,
-   ## otherwise Emacs dumps core on elf systems.
-   LD_SWITCH_SYSTEM="-Z"
+      :
    ;;
 esac
 AC_SUBST([LD_SWITCH_SYSTEM])
@@ -3088,6 +2977,17 @@ if test "${opsys}" = "haiku" && test "${with_be_app}" = "yes"; then
                    [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_CACHE_CHECK([whether BObjectList accepts ownership as a template parameter],
+     [emacs_cv_bobjectlist_ownership_is_template_parameter],
+     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+                          #include <support/ObjectList.h>
+                          #include <interface/StringItem.h>
+                          static BObjectList<BStringItem, true> test;]], [])],
+        [emacs_cv_bobjectlist_ownership_is_template_parameter=yes],
+       [emacs_cv_bobjectlist_ownership_is_template_parameter=no])])
+   AS_IF([test "x$emacs_cv_bobjectlist_ownership_is_template_parameter" = "xyes"],
+     [AC_DEFINE([BOBJECTLIST_OWNERSHIP_IS_TEMPLATE_PARAMETER], [1],
+       [Define to 1 if BObjectList ownership is defined as a template parameter.])])
    AC_LANG_POP([C++])
 fi
 
@@ -3131,7 +3031,6 @@ if test "${opsys}" = "mingw32"; then
   HAVE_W32=${emacs_cv_w32api}
 fi
 
-FIRSTFILE_OBJ=
 NTDIR=
 LIBS_ECLIENT=
 LIB_WSOCK32=
@@ -3145,7 +3044,7 @@ if test "${HAVE_W32}" = "yes"; then
   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 w32cygwinx.o"
+  W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o w32dwrite.o w32cygwinx.o"
   EMACSRES="emacs.res"
   case "$canonical" in
     x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;;
@@ -3179,7 +3078,6 @@ if test "${HAVE_W32}" = "yes"; then
     W32_RES_LINK="\$(EMACSRES)"
     CLIENTRES="emacsclient.res"
     CLIENTW="emacsclientw\$(EXEEXT)"
-    FIRSTFILE_OBJ=firstfile.o
     NTDIR=nt
     CM_OBJ=
     LIBS_ECLIENT="-lcomctl32"
@@ -3201,7 +3099,6 @@ 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])
@@ -3339,36 +3236,78 @@ AC_CACHE_CHECK(
        [AC_LANG_PROGRAM(
          [[#include <malloc.h>
            static void hook (void) {}]],
-         [[malloc_set_state (malloc_get_state ());
-           __after_morecore_hook = hook;
+          [[__after_morecore_hook = hook;
            __malloc_initialize_hook = hook;]])],
        [emacs_cv_var_doug_lea_malloc=yes])
    fi])
 doug_lea_malloc=$emacs_cv_var_doug_lea_malloc
 
-hybrid_malloc=
+AC_CHECK_ALIGNOF([int])
+AC_CHECK_ALIGNOF([long])
+AC_CHECK_ALIGNOF([long long])
+AC_CHECK_SIZEOF([long])
+
+AC_CACHE_CHECK([for struct alignment],
+  [emacs_cv_struct_alignment],
+  [AC_COMPILE_IFELSE(
+     [AC_LANG_PROGRAM([[#include <stddef.h>
+                       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],
+    [Define to 1 if 'struct __attribute__ ((aligned (N)))' aligns the
+     structure to an N-byte boundary.])
+fi
+
 system_malloc=yes
 
-dnl This must be before the test of $ac_cv_func_sbrk below.
-AC_CHECK_FUNCS_ONCE([sbrk])
+# If it appears as if the system malloc can't be trusted to return
+# adequately positioned memory, enable the GNU malloc, which more
+# consistently provides allocations at low addresses, as is required for
+# the pdumper to load dump files at a representable location.
+AS_IF([test "$with_pdumper" = "yes" && test "$with_wide_int" != "yes"],
+  AC_CHECK_HEADERS([stdalign.h])
+  [AC_CACHE_CHECK([whether alignas is required yet unavailable],
+    [emacs_cv_alignas_unavailable],
+    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#ifdef HAVE_STDALIGN_H
+#include <stdalign.h>
+#endif
+      #include <limits.h>
+     ]], [[
+#define IDEAL_GCALIGNMENT 8
+#if INTPTR_MAX <= INT_MAX && !defined WIDE_EMACS_INT
+#  define ALIGNOF_EMACS_INT ALIGNOF_INT
+# elif INTPTR_MAX <= LONG_MAX && !defined WIDE_EMACS_INT
+#  define ALIGNOF_EMACS_INT ALIGNOF_LONG
+# elif INTPTR_MAX <= LLONG_MAX
+#  define ALIGNOF_EMACS_INT ALIGNOF_LONG_LONG
+# else
+# error "INTPTR_MAX too large"
+#endif
 
-test $with_unexec = yes &&
-case "$opsys" in
-  ## darwin ld insists on the use of malloc routines in the System framework.
-  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
+#if (ALIGNOF_EMACS_INT < IDEAL_GCALIGNMENT && !defined alignas \
+     && !defined HAVE_STRUCT_ATTRIBUTE_ALIGNED                 \
+     && !defined __alignas_is_defined                          \
+     && __STDC_VERSION__ < 202311 && __cplusplus < 201103)
+#error "!USE_LSB_TAG required"
+#endif
+   ]])], [emacs_cv_alignas_unavailable=no],
+        [emacs_cv_alignas_unavailable=yes])])
+   AS_IF([test "$emacs_cv_alignas_unavailable" = "yes"],
+     [system_malloc=no
+       AC_MSG_WARN([The GNU memory manager will be enabled as your system
+does not guarantee that the portable dumper can allocate memory at a suitably
+low address.])])])
 
-if test "${system_malloc}" != yes && test "${doug_lea_malloc}" != yes \
-   && test "${UNEXEC_OBJ}" = unexelf.o; then
-  hybrid_malloc=yes
-fi
+dnl This must be before the test of $ac_cv_func_sbrk below.
+AC_CHECK_FUNCS_ONCE([sbrk])
 
 GMALLOC_OBJ=
-HYBRID_MALLOC=
 if test "${system_malloc}" = "yes"; then
   AC_DEFINE([SYSTEM_MALLOC], [1],
     [Define to 1 to use the system memory allocator, even if it is not
@@ -3377,14 +3316,6 @@ if test "${system_malloc}" = "yes"; then
   GNU_MALLOC_reason="
     (The GNU allocators don't work with this system configuration.)"
   VMLIMIT_OBJ=
-elif test "$hybrid_malloc" = yes; then
-  AC_DEFINE([HYBRID_MALLOC], [1],
-    [Define to use gmalloc before dumping and the system malloc after.])
-  HYBRID_MALLOC=1
-  GNU_MALLOC=no
-  GNU_MALLOC_reason=" (only before dumping)"
-  GMALLOC_OBJ=gmalloc.o
-  VMLIMIT_OBJ=
 else
   test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
   VMLIMIT_OBJ=vm-limit.o
@@ -3403,18 +3334,17 @@ else
        of the main data segment.])
   fi
 fi
-AC_SUBST([HYBRID_MALLOC])
 AC_SUBST([GMALLOC_OBJ])
 AC_SUBST([VMLIMIT_OBJ])
 
-if test "$doug_lea_malloc" = "yes" && test "$hybrid_malloc" != yes; then
+if test "$doug_lea_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],
     [Define to 1 if the system memory allocator is Doug Lea style,
-     with malloc hooks and malloc_set_state.])
+     with malloc hooks.])
 
   ## Use mmap directly for allocating larger buffers.
   ## FIXME this comes from src/s/{gnu,gnu-linux}.h:
@@ -3469,8 +3399,7 @@ if test "$ac_cv_header_pthread_h" && test "$opsys" != "mingw32"; then
              status += pthread_create (&th, 0, 0, 0);
              status += pthread_sigmask (SIG_BLOCK, &new_mask, &old_mask);
              status += pthread_kill (th, 0);
-             #if ! (defined SYSTEM_MALLOC || defined HYBRID_MALLOC \
-                    || defined DOUG_LEA_MALLOC)
+             #if ! (defined SYSTEM_MALLOC || defined DOUG_LEA_MALLOC)
              /* Test for pthread_atfork only if gmalloc uses it,
                 as older-style hosts like MirBSD 10 lack it.  */
              status += pthread_atfork (noop, noop, noop);
@@ -3689,9 +3618,18 @@ if test "${with_sqlite3}" != "no"; then
        CFLAGS="$SAVE_CFLAGS"
      fi
    else
-     AC_CHECK_LIB([sqlite3], [sqlite3_open_v2],
-       [HAVE_SQLITE3=yes],
-       [HAVE_SQLITE3=no])
+     AC_CACHE_CHECK([for sqlite3],
+       [emacs_cv_have_sqlite3],
+       [OLIBS=$LIBS
+       LIBS="-lsqlite3 $LIBS"
+       AC_LINK_IFELSE(
+         [AC_LANG_PROGRAM([[#include <sqlite3.h>
+                            sqlite3 *handle;]],
+                          [[return sqlite3_open_v2 ("", &handle, 0, "");]])],
+         [emacs_cv_have_sqlite3=yes],
+         [emacs_cv_have_sqlite3=no])
+       LIBS=$OLIBS])
+     HAVE_SQLITE3=$emacs_cv_have_sqlite3
      if test "$HAVE_SQLITE3" = "yes"; then
        SQLITE3_LIBS=-lsqlite3
        LIBS="$SQLITE3_LIBS $LIBS"
@@ -3942,13 +3880,15 @@ dnl D-Bus has been tested under GNU/Linux only.  Must be adapted for
 dnl other platforms.
 HAVE_DBUS=no
 DBUS_OBJ=
-if test "${with_dbus}" = "yes"; then
-   EMACS_CHECK_MODULES([DBUS], [dbus-1 >= 1.0])
+if test "${with_dbus}" != "no" ; then
+   EMACS_CHECK_MODULES([DBUS], [dbus-1 >= 1.0], [HAVE_DBUS=yes], [HAVE_DBUS=no])
    if test "$HAVE_DBUS" = yes; then
      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.
+     dnl dbus_message_set_allow_interactive_authorization was introduced
+     dnl in D-Bus 1.8.10.
      OLD_LIBS=$LIBS
      LIBS="$LIBS $DBUS_LIBS"
      AC_CHECK_FUNCS([dbus_watch_get_unix_fd \
@@ -3956,7 +3896,8 @@ if test "${with_dbus}" = "yes"; then
                    dbus_validate_bus_name \
                     dbus_validate_path \
                    dbus_validate_interface \
-                   dbus_validate_member])
+                   dbus_validate_member \
+                    dbus_message_set_allow_interactive_authorization])
      LIBS=$OLD_LIBS
      DBUS_OBJ=dbusbind.o
    fi
@@ -4569,6 +4510,7 @@ fi
 ### End of font-backend (under any platform) section.
 
 ### Start of font-backend (under X11) section.
+is_xft_version_outdated=no
 if test "${HAVE_X11}" = "yes"; then
   if test $HAVE_CAIRO = yes; then
     dnl Strict linkers fail with
@@ -4617,7 +4559,20 @@ if test "${HAVE_X11}" = "yes"; then
 
        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_SUBST([XFT_LIBS])
+         AC_CACHE_CHECK([whether libXft is not recent enough to support color fonts],
+           [emacs_cv_is_xft_version_outdated],
+           [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+             [[
+               #include <X11/Xlib.h>
+               #include <X11/Xft/Xft.h>
+               #if XftVersion < 20306
+               #error "Xft < 2.3.6"
+               #endif /* XftVersion < 20306 */
+             ]], [])],
+             [emacs_cv_is_xft_version_outdated=no],
+             [emacs_cv_is_xft_version_outdated=yes])])
+         is_xft_version_outdated=$emacs_cv_is_xft_version_outdated
          C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
        fi                        # "${HAVE_XFT}" = "yes"
        CPPFLAGS=$OLD_CPPFLAGS
@@ -5006,22 +4961,29 @@ AC_SUBST([LCMS2_LIBS])
 
 HAVE_ZLIB=no
 LIBZ=
-if test "${with_zlib}" != "no"; then
-  OLIBS=$LIBS
-  AC_SEARCH_LIBS([inflateEnd], [z], [HAVE_ZLIB=yes])
-  LIBS=$OLIBS
-  case $ac_cv_search_inflateEnd in
-    -*) LIBZ=$ac_cv_search_inflateEnd ;;
-  esac
-fi
-if test "${HAVE_ZLIB}" = "yes"; then
-  AC_DEFINE([HAVE_ZLIB], [1],
-    [Define to 1 if you have the zlib library (-lz).])
-  ### mingw32 doesn't use -lz, since it loads the library dynamically.
-  if test "${opsys}" = "mingw32"; then
-     LIBZ=
-  fi
-fi
+AS_IF([test "${with_zlib}" != "no"],
+  [AC_CACHE_CHECK([for library containing inflateEnd],
+     [emacs_cv_libz],
+     [AC_LANG_CONFTEST([AC_LANG_PROGRAM([[#include <zlib.h>
+                                         z_stream stream;]],
+                                       [[return inflateEnd (&stream);]])])
+      OLIBS=$LIBS
+      for emacs_cv_libz in '' -lz no; do
+       test "$emacs_cv_libz" = no && break
+       LIBS="$emacs_cv_libz $OLIBS"
+       AC_LINK_IFELSE([], [break])
+      done
+      LIBS=$OLIBS])
+
+   AS_CASE([$emacs_cv_libz],
+     [-* | ''],
+       [# mingw32 doesn't use -lz, since it loads the library dynamically.
+       AS_CASE([$opsys],
+         [mingw32], [LIBZ=],
+         [LIBZ=$emacs_cv_libz])
+       HAVE_ZLIB=yes
+       AC_DEFINE([HAVE_ZLIB], [1],
+         [Define to 1 if you have the zlib library (-lz).])])])
 AC_SUBST([LIBZ])
 
 ### Dynamic library support
@@ -5101,12 +5063,14 @@ AC_SUBST_FILE([module_env_snippet_27])
 AC_SUBST_FILE([module_env_snippet_28])
 AC_SUBST_FILE([module_env_snippet_29])
 AC_SUBST_FILE([module_env_snippet_30])
+AC_SUBST_FILE([module_env_snippet_31])
 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"
 module_env_snippet_30="$srcdir/src/module-env-30.h"
+module_env_snippet_31="$srcdir/src/module-env-31.h"
 emacs_major_version=`AS_ECHO([$PACKAGE_VERSION]) | sed 's/[[.]].*//'`
 AC_SUBST([emacs_major_version])
 
@@ -5152,16 +5116,16 @@ AC_DEFUN([libgccjit_smoke_test], [
       }]])])
 
 AC_DEFUN([libgccjit_not_found_err], [
-  AC_MSG_ERROR([ELisp native compiler was requested, but libgccjit was not found.
+  AC_MSG_ERROR([Lisp 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,
+If you are sure you want Emacs be compiled without the Lisp native compiler,
 pass the --without-native-compilation option to configure.])])
 
 AC_DEFUN([libgccjit_dev_not_found_err], [
-  AC_MSG_ERROR([ELisp native compiler was requested, but libgccjit header files were
+  AC_MSG_ERROR([Lisp 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,
+If you are sure you want Emacs be compiled without the Lisp native compiler,
 pass the --without-native-compilation option to configure.])])
 
 AC_DEFUN([libgccjit_broken_err], [
@@ -5236,15 +5200,9 @@ if test "${with_native_compilation}" = "default"; then
       # Check if libgccjit really works.
       AC_RUN_IFELSE([libgccjit_smoke_test], [], [libgccjit_broken])
     fi
-    if test "$with_unexec" = yes; then
-      with_native_compilation=no
-    fi
 fi
 
 if test "${with_native_compilation}" != "no"; then
-    if test "$with_unexec" = yes; then
-       AC_MSG_ERROR(['--with-native-compilation' is not compatible with unexec])
-    fi
     if test "${HAVE_ZLIB}" = no; then
        AC_MSG_ERROR(['--with-native-compilation' requires zlib])
     fi
@@ -5319,7 +5277,7 @@ if test "${with_native_compilation}" != "no"; then
     LIBS=$SAVE_LIBS
 fi
 AC_DEFINE_UNQUOTED([NATIVE_ELISP_SUFFIX], [".eln"],
-  [System extension for native compiled elisp])
+  [System extension for native-compiled elisp])
 AC_SUBST([HAVE_NATIVE_COMP])
 AC_SUBST([LIBGCCJIT_CFLAGS])
 AC_SUBST([LIBGCCJIT_LIBS])
@@ -5532,6 +5490,11 @@ if test "${HAVE_X11}" = "yes"; then
        WITH_IFAVAILABLE="$WITH_IFAVAILABLE --with-tiff=ifavailable";;
   esac
 fi
+case $with_dbus,$HAVE_DBUS in
+  no,* | ifavailable,* | *,yes) ;;
+  *) MISSING="$MISSING dbus-1"
+     WITH_IFAVAILABLE="$WITH_IFAVAILABLE --with-dbus=ifavailable";;
+esac
 case $with_gnutls,$HAVE_GNUTLS in
   no,* | ifavailable,* | *,yes) ;;
   *) MISSING="$MISSING gnutls"
@@ -5958,7 +5921,6 @@ 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])
 
@@ -5967,7 +5929,7 @@ LIBS="$LIB_PTHREAD $LIB_MATH $LIBS"
 AC_CHECK_FUNCS([accept4 fchdir gethostname \
 getrusage get_current_dir_name \
 lrand48 random rint tcdrain trunc \
-select getpagesize setlocale newlocale \
+select getpagesize newlocale \
 getrlimit setrlimit shutdown \
 pthread_sigmask strsignal setitimer \
 sendto recvfrom getsockname getifaddrs freeifaddrs \
@@ -6053,19 +6015,6 @@ 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.  Android lacks posix_madvise.
 AC_CHECK_FUNCS([posix_madvise madvise])
 
@@ -6397,10 +6346,10 @@ 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])
+gl_CHECK_FUNCS_ANDROID([posix_spawn], [#include <spawn.h>])
+gl_CHECK_FUNCS_ANDROID([posix_spawn_file_actions_addchdir], [#include <spawn.h>])
+gl_CHECK_FUNCS_ANDROID([posix_spawn_file_actions_addchdir_np], [#include <spawn.h>])
+gl_CHECK_FUNCS_ANDROID([posix_spawnattr_setflags], [#include <spawn.h>])
 AC_SUBST([HAVE_POSIX_SPAWN])
 AC_SUBST([HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR])
 AC_SUBST([HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP])
@@ -7085,6 +7034,9 @@ AC_CACHE_CHECK([for usable FIONREAD], [emacs_cv_usable_FIONREAD],
                            #ifdef USG5_4
                            # include <sys/filio.h>
                            #endif
+                           #ifdef HAVE_UNISTD_H
+                           # include <unistd.h> /* defines ioctl() on Solaris */
+                           #endif
                          ]],
                          [[int foo = ioctl (0, FIONREAD, &foo);]])],
         [emacs_cv_usable_FIONREAD=yes],
@@ -7331,22 +7283,6 @@ else
 fi
 AC_SUBST([LIBXMENU])
 
-AC_CACHE_CHECK([for struct alignment],
-  [emacs_cv_struct_alignment],
-  [AC_COMPILE_IFELSE(
-     [AC_LANG_PROGRAM([[#include <stddef.h>
-                       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],
-    [Define to 1 if 'struct __attribute__ ((aligned (N)))' aligns the
-     structure to an N-byte boundary.])
-fi
-
 AC_C_RESTRICT
 AC_C_TYPEOF
 
@@ -7378,21 +7314,10 @@ AC_SUBST([RALLOC_OBJ])
 
 if test "$opsys" = "cygwin"; then
   CYGWIN_OBJ="cygw32.o"
-  ## Cygwin differs because of its unexec().
-  PRE_ALLOC_OBJ=
-  POST_ALLOC_OBJ=lastfile.o
-elif test "$opsys" = "mingw32"; then
-  CYGWIN_OBJ=
-  PRE_ALLOC_OBJ=
-  POST_ALLOC_OBJ=lastfile.o
 else
   CYGWIN_OBJ=
-  PRE_ALLOC_OBJ=lastfile.o
-  POST_ALLOC_OBJ=
 fi
 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
@@ -7508,9 +7433,6 @@ 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 "$with_unexec" = yes; then
-     LD_SWITCH_SYSTEM_TEMACS="-fno-pie $LD_SWITCH_SYSTEM_TEMACS -Xlinker -headerpad -Xlinker $headerpad_extra"
-   fi
 
    ## This is here because src/Makefile.in did some extra fiddling around
    ## with LD_SWITCH_SYSTEM.  It seems cleaner to put this in
@@ -7536,49 +7458,11 @@ 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= ;;
 esac
 
-# -no-pie or -nopie fixes a temacs segfault on Gentoo, OpenBSD,
-# Ubuntu, and other systems with "hardened" GCC configurations for
-# some reason (Bug#18784).  We don't know why this works, but not
-# segfaulting is better than segfaulting.  Use ac_c_werror_flag=yes
-# when trying the option, otherwise clang keeps warning that it does
-# not understand it, and pre-4.6 GCC has a similar problem
-# (Bug#20338).  Prefer -no-pie to -nopie, as -no-pie is the
-# spelling used by GCC 6.1.0 and later (Bug#24682).
-AC_CACHE_CHECK(
-  [for $CC option to disable position independent executables],
-  [emacs_cv_prog_cc_no_pie],
-  [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
     *freebsd | gnu-linux) ;;
@@ -7606,35 +7490,6 @@ fi
 
 AC_SUBST([WINDOW_SYSTEM_OBJ])
 
-# Some systems have MB_CUR_MAX defined to a call to
-# __ctype_get_mb_cur_max, but do not have __ctype_get_mb_cur_max in
-# libc.  Check for that situation and define MB_CUR_MAX to something
-# sane.
-
-AC_CHECK_FUNC([__ctype_get_mb_cur_max])
-
-AC_CACHE_CHECK([whether MB_CUR_MAX is defined to function that won't link],
-  [emacs_cv_broken_mb_cur_max],
-  [AC_EGREP_CPP(__ctype_get_mb_cur_max, [
-#include <stdlib.h>
-#ifndef MB_CUR_MAX
-#define MB_CUR_MAX -1
-#endif
-static int foo = MB_CUR_MAX;
-], [AS_IF([test "$ac_cv_func___ctype_get_mb_cur_max" = "yes"],
-     [emacs_cv_broken_mb_cur_max=no],
-     [emacs_cv_broken_mb_cur_max=yes])],
-  [emacs_cv_broken_mb_cur_max=no])])
-
-AS_IF([test "$emacs_cv_broken_mb_cur_max" = "yes"],
- # Define this to 4, which is right for Android.
- [AS_CASE([$opsys], [android],
-   [AC_DEFINE([REPLACEMENT_MB_CUR_MAX], [4],
-      [Define to MB_CUR_MAX if stdlib.h is broken.])],
-   [AC_MSG_ERROR([MB_CUR_MAX does not work on your system.
-Please modify configure.ac to set an appropriate value, then
-send your change to bug-gnu-emacs@gnu.org])])])
-
 AH_TOP([/* GNU Emacs site configuration template file.
 
 Copyright (C) 1988-2025 Free Software Foundation, Inc.
@@ -7716,12 +7571,12 @@ for opt in ACL BE_APP CAIRO DBUS FREETYPE GCONF GIF GLIB GMP GNUTLS GPM GSETTING
  HARFBUZZ IMAGEMAGICK JPEG 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 TREE_SITTER \
- UNEXEC WEBP X11 XAW3D XDBE XFT XIM XINPUT2 XPM XWIDGETS X_TOOLKIT \
- ZLIB; do
+ UNEXEC WEBP X11 XAW3D XDBE XFT XIM XINERAMA XINPUT2 XPM XRANDR XWIDGETS \
X_TOOLKIT ZLIB; do
 
     case $opt in
       PDUMPER) val=${with_pdumper} ;;
-      UNEXEC) val=${with_unexec} ;;
+      UNEXEC) val=no ;;
       GLIB) val=${emacs_cv_links_glib} ;;
       NOTIFY|ACL) eval val=\${${opt}_SUMMARY} ;;
       TOOLKIT_SCROLL_BARS|X_TOOLKIT) eval val=\${USE_$opt} ;;
@@ -7797,7 +7652,6 @@ AS_ECHO(["  Does Emacs use -lXaw3d?                                 ${HAVE_XAW3D
   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}
@@ -7880,7 +7734,6 @@ if test -f "$srcdir/$opt_makefile.in"; then
   dnl Again, it's best not to use a variable.  Though you can add
   dnl ", [], [opt_makefile='$opt_makefile']" and it should work.
   ARCH_INDEPENDENT_CONFIG_FILES([test/Makefile])
-  ARCH_INDEPENDENT_CONFIG_FILES([test/manual/noverlay/Makefile])
 fi
 opt_makefile=test/infra/Makefile
 if test -f "$srcdir/$opt_makefile.in"; then
@@ -7896,10 +7749,9 @@ fi
 
 dnl The admin/ directory used to be excluded from tarfiles.
 if test -d $srcdir/admin; then
-  SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/charsets/Makefile admin/unidata/Makefile admin/grammars/Makefile"
+  SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/charsets/Makefile admin/unidata/Makefile"
   ARCH_INDEPENDENT_CONFIG_FILES([admin/charsets/Makefile])
   ARCH_INDEPENDENT_CONFIG_FILES([admin/unidata/Makefile])
-  ARCH_INDEPENDENT_CONFIG_FILES([admin/grammars/Makefile])
 fi                              dnl -d admin
 
 
@@ -8047,12 +7899,11 @@ you can continue to support by using '$0 --with-pop'.])
   esac
 fi
 
-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).])
+if test "${HAVE_XFT}" = yes && test "$is_xft_version_outdated" = "yes"; then
+  AC_MSG_WARN([This configuration uses a version of libXft earlier than 2.3.6,
+    which is impacted by a number of rendering issues up to and including
+    crashes.  Please consider using Cairo graphics instead (they are
+    auto-detected if the relevant development headers are installed).])
 fi
 
 if test "${HAVE_CAIRO}" = "yes" && test "${HAVE_HARFBUZZ}" = no; then