diff options
author | Philipp Stephani <phst@google.com> | 2020-12-30 14:42:01 +0100 |
---|---|---|
committer | Philipp Stephani <phst@google.com> | 2021-11-11 22:00:03 +0100 |
commit | a60053f8368e058229721f1bf1567c2b1676b239 (patch) | |
tree | 78866bddd58675dd9c60ac690b40602984e22e7e /configure.ac | |
parent | 6c9ac53249a1c1b05bbcc8e253f39fa8d1e319f6 (diff) | |
download | emacs-a60053f8368e058229721f1bf1567c2b1676b239.tar.gz |
Use posix_spawn if possible.
posix_spawn is less error-prone than vfork + execve, and can make
better use of system-specific enhancements like 'clone' on Linux. Use
it if we don't need to configure a pseudoterminal.
* configure.ac (HAVE_SPAWN_H, HAVE_POSIX_SPAWN)
(HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR)
(HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP)
(HAVE_POSIX_SPAWNATTR_SETFLAGS, HAVE_DECL_POSIX_SPAWN_SETSID): New
configuration variables.
* src/callproc.c (USABLE_POSIX_SPAWN): New configuration macro.
(emacs_posix_spawn_init_actions)
(emacs_posix_spawn_init_attributes, emacs_posix_spawn_init): New
helper functions.
(emacs_spawn): Use posix_spawn if possible.
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index 33e7037afe2..c231c2ceae2 100644 --- a/configure.ac +++ b/configure.ac @@ -4771,6 +4771,23 @@ 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 dnl linking to glib. Although glib provides no facilities that Emacs |