1# spawn_h.m4 serial 16 2dnl Copyright (C) 2008-2014 Free Software Foundation, Inc. 3dnl This file is free software; the Free Software Foundation 4dnl gives unlimited permission to copy and/or distribute it, 5dnl with or without modifications, as long as this notice is preserved. 6 7dnl Written by Bruno Haible. 8 9AC_DEFUN([gl_SPAWN_H], 10[ 11 dnl Use AC_REQUIRE here, so that the default behavior below is expanded 12 dnl once only, before all statements that occur in other macros. 13 AC_REQUIRE([gl_SPAWN_H_DEFAULTS]) 14 15 dnl <spawn.h> is always overridden, because of GNULIB_POSIXCHECK. 16 gl_CHECK_NEXT_HEADERS([spawn.h]) 17 18 if test $ac_cv_header_spawn_h = yes; then 19 HAVE_SPAWN_H=1 20 AC_CHECK_TYPES([posix_spawnattr_t], [], [HAVE_POSIX_SPAWNATTR_T=0], [[ 21#include <spawn.h> 22 ]]) 23 AC_CHECK_TYPES([posix_spawn_file_actions_t], [], 24 [HAVE_POSIX_SPAWN_FILE_ACTIONS_T=0], [[ 25#include <spawn.h> 26 ]]) 27 else 28 HAVE_SPAWN_H=0 29 HAVE_POSIX_SPAWNATTR_T=0 30 HAVE_POSIX_SPAWN_FILE_ACTIONS_T=0 31 fi 32 AC_SUBST([HAVE_SPAWN_H]) 33 34 dnl Ensure the type pid_t gets defined. 35 AC_REQUIRE([AC_TYPE_PID_T]) 36 37 dnl Ensure the type mode_t gets defined. 38 AC_REQUIRE([AC_TYPE_MODE_T]) 39 40 AC_REQUIRE([gl_HAVE_POSIX_SPAWN]) 41 42 AC_REQUIRE([AC_C_RESTRICT]) 43 44 dnl Check for declarations of anything we want to poison if the 45 dnl corresponding gnulib module is not in use. 46 gl_WARN_ON_USE_PREPARE([[#include <spawn.h> 47 ]], [posix_spawn posix_spawnp posix_spawnattr_init posix_spawnattr_destroy 48 posix_spawnattr_getsigdefault posix_spawnattr_setsigdefault 49 posix_spawnattr_getsigmask posix_spawnattr_setsigmask 50 posix_spawnattr_getflags posix_spawnattr_setflags 51 posix_spawnattr_getpgroup posix_spawnattr_setpgroup 52 posix_spawnattr_getschedpolicy posix_spawnattr_setschedpolicy 53 posix_spawnattr_getschedparam posix_spawnattr_setschedparam 54 posix_spawn_file_actions_init posix_spawn_file_actions_destroy 55 posix_spawn_file_actions_addopen posix_spawn_file_actions_addclose 56 posix_spawn_file_actions_adddup2]) 57]) 58 59dnl Checks whether the system has the functions posix_spawn. 60dnl Sets ac_cv_func_posix_spawn and HAVE_POSIX_SPAWN. 61AC_DEFUN([gl_HAVE_POSIX_SPAWN], 62[ 63 dnl Use AC_REQUIRE here, so that the default behavior below is expanded 64 dnl once only, before all statements that occur in other macros. 65 AC_REQUIRE([gl_SPAWN_H_DEFAULTS]) 66 67 LIB_POSIX_SPAWN= 68 AC_SUBST([LIB_POSIX_SPAWN]) 69 gl_saved_libs=$LIBS 70 AC_SEARCH_LIBS([posix_spawn], [rt], 71 [test "$ac_cv_search_posix_spawn" = "none required" || 72 LIB_POSIX_SPAWN=$ac_cv_search_posix_spawn]) 73 AC_CHECK_FUNCS([posix_spawn]) 74 LIBS=$gl_saved_libs 75 76 if test $ac_cv_func_posix_spawn != yes; then 77 HAVE_POSIX_SPAWN=0 78 fi 79]) 80 81AC_DEFUN([gl_SPAWN_MODULE_INDICATOR], 82[ 83 dnl Use AC_REQUIRE here, so that the default settings are expanded once only. 84 AC_REQUIRE([gl_SPAWN_H_DEFAULTS]) 85 gl_MODULE_INDICATOR_SET_VARIABLE([$1]) 86 dnl Define it also as a C macro, for the benefit of the unit tests. 87 gl_MODULE_INDICATOR_FOR_TESTS([$1]) 88]) 89 90AC_DEFUN([gl_SPAWN_H_DEFAULTS], 91[ 92 GNULIB_POSIX_SPAWN=0; AC_SUBST([GNULIB_POSIX_SPAWN]) 93 GNULIB_POSIX_SPAWNP=0; AC_SUBST([GNULIB_POSIX_SPAWNP]) 94 GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT=0; AC_SUBST([GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT]) 95 GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE=0; AC_SUBST([GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE]) 96 GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2=0; AC_SUBST([GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2]) 97 GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN=0; AC_SUBST([GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN]) 98 GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY=0; AC_SUBST([GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY]) 99 GNULIB_POSIX_SPAWNATTR_INIT=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_INIT]) 100 GNULIB_POSIX_SPAWNATTR_GETFLAGS=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_GETFLAGS]) 101 GNULIB_POSIX_SPAWNATTR_SETFLAGS=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_SETFLAGS]) 102 GNULIB_POSIX_SPAWNATTR_GETPGROUP=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_GETPGROUP]) 103 GNULIB_POSIX_SPAWNATTR_SETPGROUP=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_SETPGROUP]) 104 GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM]) 105 GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM]) 106 GNULIB_POSIX_SPAWNATTR_GETSCHEDPOLICY=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_GETSCHEDPOLICY]) 107 GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY]) 108 GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT]) 109 GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT]) 110 GNULIB_POSIX_SPAWNATTR_GETSIGMASK=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_GETSIGMASK]) 111 GNULIB_POSIX_SPAWNATTR_SETSIGMASK=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_SETSIGMASK]) 112 GNULIB_POSIX_SPAWNATTR_DESTROY=0; AC_SUBST([GNULIB_POSIX_SPAWNATTR_DESTROY]) 113 dnl Assume proper GNU behavior unless another module says otherwise. 114 HAVE_POSIX_SPAWN=1; AC_SUBST([HAVE_POSIX_SPAWN]) 115 HAVE_POSIX_SPAWNATTR_T=1; AC_SUBST([HAVE_POSIX_SPAWNATTR_T]) 116 HAVE_POSIX_SPAWN_FILE_ACTIONS_T=1; 117 AC_SUBST([HAVE_POSIX_SPAWN_FILE_ACTIONS_T]) 118 REPLACE_POSIX_SPAWN=0; AC_SUBST([REPLACE_POSIX_SPAWN]) 119 REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE=0; 120 AC_SUBST([REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE]) 121 REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2=0; 122 AC_SUBST([REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2]) 123 REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN=0; 124 AC_SUBST([REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN]) 125]) 126