]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
* acfunctions.m4: (AC_FUNC_VFORK) rename as...
authorAkim Demaille <akim@epita.fr>
Mon, 18 Jun 2001 19:11:24 +0000 (19:11 +0000)
committerAkim Demaille <akim@epita.fr>
Mon, 18 Jun 2001 19:11:24 +0000 (19:11 +0000)
(_AC_FUNC_VFORK): this.
Remove AC_DEFINEs and don't guess cross-compilation values.
(_AC_FUNC_FORK): New, check whether fork() isn't just a stub.
(AC_FUNC_FORK): New, use _AC_FUNC_VFORK and _AC_FUNC_FORK to
define HAVE_WORKING_FORK, HAVE_WORKING_VFORK; and vfork to fork if
vfork doesn't work.
Guess values if cross-compiling, but warn.
* acfunctions: Add AC_FUNC_FORK.
* doc/autoconf.texi: Document AC_FUNC_FORK. Give example to define
and vfork appropriately.

ChangeLog
THANKS
acfunctions
acfunctions.m4
doc/autoconf.texi
lib/autoconf/functions.m4
lib/autoscan/functions
tests/acfunctions.at

index 680862255bdc169fa6c70c745041508e5588b0e7..122de810dbe75a09f7a9239bb563d93f08cbcbbc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2001-06-18  Rüdiger Kuhlmann  <autoconf-list-xf3QB=cvz1AP@ruediger-kuhlmann.de>
+
+       * acfunctions.m4: (AC_FUNC_VFORK) rename as...
+       (_AC_FUNC_VFORK): this.
+       Remove AC_DEFINEs and don't guess cross-compilation values.
+       (_AC_FUNC_FORK): New, check whether fork() isn't just a stub.
+       (AC_FUNC_FORK): New, use _AC_FUNC_VFORK and _AC_FUNC_FORK to
+       define HAVE_WORKING_FORK, HAVE_WORKING_VFORK; and vfork to fork if
+       vfork doesn't work.
+       Guess values if cross-compiling, but warn.
+       * acfunctions: Add AC_FUNC_FORK.
+       * doc/autoconf.texi: Document AC_FUNC_FORK. Give example to define
+       and vfork appropriately.
+
 2001-06-18  Akim Demaille  <akim@epita.fr>
 
        * doc/autoconf.texi (Functions Portability): New section.
diff --git a/THANKS b/THANKS
index bf34dc94eeb5d1aba51e724bc4886324abe36b93..39b9db5ac21d3368fc926a7225a55f348b9cfdb3 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -128,6 +128,7 @@ Richard Stallman            rms@gnu.org
 Robert Lipe                 robertlipe@usa.net
 Robert S. Maier             rsm@math.arizona.edu
 Roland McGrath              roland@gnu.org
+Rüdiger Kuhlmann            autoconf-list-xf3QB=cvz1AP@ruediger-kuhlmann.de
 Ruediger Kuhlmann           uck4@rz.uni-karlsruhe.de
 Russ Allbery                rra@stanford.edu
 Ryuji Abe                   raeva@t3.rim.or.jp
index b0bcee3da5c9ea565fdb757485f16b515f06217f..5a38d1796daa29afa1d868c8a5e7dc13cfb5b2da 100644 (file)
@@ -26,6 +26,7 @@ chown         AC_FUNC_CHOWN
 error          AC_FUNC_ERROR_AT_LINE
 error_at_line  AC_FUNC_ERROR_AT_LINE
 fnmatch                AC_FUNC_FNMATCH
+fork           AC_FUNC_FORK     
 fseeko         AC_FUNC_FSEEKO
 ftello         AC_FUNC_FSEEKO
 getgroups      AC_FUNC_GETGROUPS
@@ -56,7 +57,7 @@ strerror_r    AC_FUNC_STRERROR_R
 strftime       AC_FUNC_STRFTIME
 strtod         AC_FUNC_STRTOD
 utime          AC_FUNC_UTIME_NULL
-vfork          AC_FUNC_VFORK
+vfork          AC_FUNC_FORK
 vfprintf       AC_FUNC_VPRINTF
 vprintf                AC_FUNC_VPRINTF
 vsprintf       AC_FUNC_VPRINTF
index 3a66ef96eed63fc6bc69788d6bc9b5f581b687d2..743e5bba03a1427b3fd3ff833cede87a559f1c17 100644 (file)
@@ -1415,12 +1415,74 @@ rm -f conftest.data
 AU_ALIAS([AC_UTIME_NULL], [AC_FUNC_UTIME_NULL])
 
 
-# AC_FUNC_VFORK
+# AC_FUNC_FORK
 # -------------
-AC_DEFUN([AC_FUNC_VFORK],
-[AC_REQUIRE([AC_TYPE_PID_T])dnl
-AC_CHECK_HEADERS(unistd.h vfork.h)
-AC_CACHE_CHECK(for working vfork, ac_cv_func_vfork_works,
+AC_DEFUN([AC_FUNC_FORK],
+  [AC_REQUIRE([AC_TYPE_PID_T])dnl
+  AC_CHECK_HEADERS(unistd.h vfork.h)
+  AC_CHECK_FUNCS(fork vfork)
+  ac_cv_func_fork_works=$ac_cv_func_fork
+  if test "x$ac_cv_func_fork" = xyes; then
+    _AC_FUNC_FORK
+  fi
+  if test "x$ac_cv_func_fork_works" = xcross"; then
+    case "$host" in
+      *-*-amigaos* | *-*-msdosdjgpp*)
+        # Override, as these systems have only a dummy fork() stub
+        ac_cv_func_fork_works=no
+        ;;
+      *)
+        ac_cv_func_fork_works=yes
+        ;;
+    esac
+    AC_MSG_WARN(CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling.)
+  fi
+  ac_cv_func_vfork_works=$ac_cv_func_vfork
+  if test "x$ac_cv_func_vfork" = xyes; then
+    _AC_FUNC_VFORK
+  fi;
+  if test "x$ac_cv_func_fork_works" = xcross"; then
+    ac_cv_func_vfork_works=ac_cv_func_vfork
+    AC_MSG_WARN(CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling.)
+  fi
+  
+  if test "x$ac_cv_func_vfork_works" = xyes; then
+    AC_DEFINE(HAVE_WORKING_VFORK, 1, [Define if `vfork' works.])
+  else
+    AC_DEFINE(vfork, fork, [Define as `fork' if `vfork' does not work.])
+  fi
+  if test "x$ac_cv_func_fork_works" = xyes; then
+    AC_DEFINE(HAVE_WORKING_FORK, 1, [Define if `fork' works.])
+  endif
+])# AC_FUNC_FORK
+
+
+# _AC_FUNC_FORK
+# -------------
+AC_DEFUN([_AC_FUNC_FORK],
+  [AC_CACHE_CHECK(for working fork, ac_cv_func_fork_works,
+    [AC_RUN_IFELSE([/* By Rüdiger Kuhlmann. */
+      #include <sys/types.h>
+      #if HAVE_UNISTD_H
+      # include <unistd.h>
+      #endif
+      /* Some systems only have a dummy stub for fork() */
+      int main ()
+      {
+        if (fork() < 0)
+          exit (1);
+        exit (0);
+      }],
+    [ac_cv_func_fork_works=yes],
+    [ac_cv_func_fork_works=no],
+    [ac_cv_func_fork_works=cross])])]
+)# _AC_FUNC_FORK
+
+
+# _AC_FUNC_VFORK
+# -------------
+AC_DEFUN([_AC_FUNC_VFORK],
+[AC_CACHE_CHECK(for working vfork, ac_cv_func_vfork_works,
 [AC_TRY_RUN([/* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
 #include <sys/types.h>
@@ -1516,17 +1578,17 @@ main ()
 }],
             [ac_cv_func_vfork_works=yes],
             [ac_cv_func_vfork_works=no],
-            [AC_CHECK_FUNC(vfork)
-ac_cv_func_vfork_works=$ac_cv_func_vfork])])
-if test "x$ac_cv_func_vfork_works" = xno; then
-  AC_DEFINE(vfork, fork, [Define as `fork' if `vfork' does not work.])
-fi
-])# AC_FUNC_VFORK
+            [ac_cv_func_vfork_works=cross])])
+])# _AC_FUNC_VFORK
 
 
+# AU::AC_FUNC_VFORK
+# ------------
+AU_ALIAS([AC_FUNC_VFORK], [AC_FUNC_FORK])
+
 # AU::AC_VFORK
 # ------------
-AU_ALIAS([AC_VFORK], [AC_FUNC_VFORK])
+AU_ALIAS([AC_VFORK], [AC_FUNC_FORK])
 
 
 # AC_FUNC_VPRINTF
index 30789ee6ecac45fd02df30d4356d6819392abad7..e6850d1e9b5a980215c818983e88db136dfefe4b 100644 (file)
@@ -3275,6 +3275,38 @@ If the @code{fnmatch} function is available and works (unlike the one on
 Solaris 2.4), define @code{HAVE_FNMATCH}.
 @end defmac
 
+@defmac AC_FUNC_FORK
+@maindex FUNC_FORK
+@cvindex HAVE_VFORK_H
+@cvindex HAVE_WORKING_FORK
+@cvindex HAVE_WORKING_VFORK
+@cvindex vfork
+This macro checks for the @code{fork} and @code{vfork} functions. If a
+working @code{fork} is found, define @code{HAVE_WORKING_FORK}. This macro
+checks whether @code{fork} is just a stub by trying to run it.
+
+If @file{vfork.h} is found, define @code{HAVE_VFORK_H}. If a working
+@code{vfork} is found, define @code{HAVE_WORKING_VFORK}. Otherwise,
+define @code{vfork} to be @code{fork} for backward compatibility with
+previous versions of @command{autoconf}. This macro checks for several known
+errors in implementations of @code{vfork} and considers the system to not
+have a working @code{vfork} if it detects any of them. It is not considered
+to be an implementation error if a child's invocation of @code{signal}
+modifies the parent's signal handler, since child processes rarely change
+their signal handlers.
+
+Since this macro defines @code{vfork} only for backward compatibility with
+previous versions of @command{autoconf} you're encouraged to define it
+yourself in new code:
+@example
+@group
+#if !HAVE_WORKING_VFORK
+# define vfork fork
+#endif
+@end group
+@end example
+@end defmac
+
 @defmac AC_FUNC_FSEEKO
 @maindex FUNC_FSEEKO
 @cvindex _LARGEFILE_SOURCE
@@ -3505,19 +3537,6 @@ If @samp{utime(@var{file}, NULL)} sets @var{file}'s timestamp to
 the present, define @code{HAVE_UTIME_NULL}.
 @end defmac
 
-@defmac AC_FUNC_VFORK
-@maindex FUNC_VFORK
-@cvindex HAVE_VFORK_H
-@cvindex vfork
-If @file{vfork.h} is found, define @code{HAVE_VFORK_H}.  If a working
-@code{vfork} is not found, define @code{vfork} to be @code{fork}.  This
-macro checks for several known errors in implementations of @code{vfork}
-and considers the system to not have a working @code{vfork} if it
-detects any of them.  It is not considered to be an implementation error
-if a child's invocation of @code{signal} modifies the parent's signal
-handler, since child processes rarely change their signal handlers.
-@end defmac
-
 @defmac AC_FUNC_VPRINTF
 @maindex FUNC_VPRINTF
 @cvindex HAVE_VPRINTF
index 3a66ef96eed63fc6bc69788d6bc9b5f581b687d2..743e5bba03a1427b3fd3ff833cede87a559f1c17 100644 (file)
@@ -1415,12 +1415,74 @@ rm -f conftest.data
 AU_ALIAS([AC_UTIME_NULL], [AC_FUNC_UTIME_NULL])
 
 
-# AC_FUNC_VFORK
+# AC_FUNC_FORK
 # -------------
-AC_DEFUN([AC_FUNC_VFORK],
-[AC_REQUIRE([AC_TYPE_PID_T])dnl
-AC_CHECK_HEADERS(unistd.h vfork.h)
-AC_CACHE_CHECK(for working vfork, ac_cv_func_vfork_works,
+AC_DEFUN([AC_FUNC_FORK],
+  [AC_REQUIRE([AC_TYPE_PID_T])dnl
+  AC_CHECK_HEADERS(unistd.h vfork.h)
+  AC_CHECK_FUNCS(fork vfork)
+  ac_cv_func_fork_works=$ac_cv_func_fork
+  if test "x$ac_cv_func_fork" = xyes; then
+    _AC_FUNC_FORK
+  fi
+  if test "x$ac_cv_func_fork_works" = xcross"; then
+    case "$host" in
+      *-*-amigaos* | *-*-msdosdjgpp*)
+        # Override, as these systems have only a dummy fork() stub
+        ac_cv_func_fork_works=no
+        ;;
+      *)
+        ac_cv_func_fork_works=yes
+        ;;
+    esac
+    AC_MSG_WARN(CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling.)
+  fi
+  ac_cv_func_vfork_works=$ac_cv_func_vfork
+  if test "x$ac_cv_func_vfork" = xyes; then
+    _AC_FUNC_VFORK
+  fi;
+  if test "x$ac_cv_func_fork_works" = xcross"; then
+    ac_cv_func_vfork_works=ac_cv_func_vfork
+    AC_MSG_WARN(CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling.)
+  fi
+  
+  if test "x$ac_cv_func_vfork_works" = xyes; then
+    AC_DEFINE(HAVE_WORKING_VFORK, 1, [Define if `vfork' works.])
+  else
+    AC_DEFINE(vfork, fork, [Define as `fork' if `vfork' does not work.])
+  fi
+  if test "x$ac_cv_func_fork_works" = xyes; then
+    AC_DEFINE(HAVE_WORKING_FORK, 1, [Define if `fork' works.])
+  endif
+])# AC_FUNC_FORK
+
+
+# _AC_FUNC_FORK
+# -------------
+AC_DEFUN([_AC_FUNC_FORK],
+  [AC_CACHE_CHECK(for working fork, ac_cv_func_fork_works,
+    [AC_RUN_IFELSE([/* By Rüdiger Kuhlmann. */
+      #include <sys/types.h>
+      #if HAVE_UNISTD_H
+      # include <unistd.h>
+      #endif
+      /* Some systems only have a dummy stub for fork() */
+      int main ()
+      {
+        if (fork() < 0)
+          exit (1);
+        exit (0);
+      }],
+    [ac_cv_func_fork_works=yes],
+    [ac_cv_func_fork_works=no],
+    [ac_cv_func_fork_works=cross])])]
+)# _AC_FUNC_FORK
+
+
+# _AC_FUNC_VFORK
+# -------------
+AC_DEFUN([_AC_FUNC_VFORK],
+[AC_CACHE_CHECK(for working vfork, ac_cv_func_vfork_works,
 [AC_TRY_RUN([/* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
 #include <sys/types.h>
@@ -1516,17 +1578,17 @@ main ()
 }],
             [ac_cv_func_vfork_works=yes],
             [ac_cv_func_vfork_works=no],
-            [AC_CHECK_FUNC(vfork)
-ac_cv_func_vfork_works=$ac_cv_func_vfork])])
-if test "x$ac_cv_func_vfork_works" = xno; then
-  AC_DEFINE(vfork, fork, [Define as `fork' if `vfork' does not work.])
-fi
-])# AC_FUNC_VFORK
+            [ac_cv_func_vfork_works=cross])])
+])# _AC_FUNC_VFORK
 
 
+# AU::AC_FUNC_VFORK
+# ------------
+AU_ALIAS([AC_FUNC_VFORK], [AC_FUNC_FORK])
+
 # AU::AC_VFORK
 # ------------
-AU_ALIAS([AC_VFORK], [AC_FUNC_VFORK])
+AU_ALIAS([AC_VFORK], [AC_FUNC_FORK])
 
 
 # AC_FUNC_VPRINTF
index b0bcee3da5c9ea565fdb757485f16b515f06217f..5a38d1796daa29afa1d868c8a5e7dc13cfb5b2da 100644 (file)
@@ -26,6 +26,7 @@ chown         AC_FUNC_CHOWN
 error          AC_FUNC_ERROR_AT_LINE
 error_at_line  AC_FUNC_ERROR_AT_LINE
 fnmatch                AC_FUNC_FNMATCH
+fork           AC_FUNC_FORK     
 fseeko         AC_FUNC_FSEEKO
 ftello         AC_FUNC_FSEEKO
 getgroups      AC_FUNC_GETGROUPS
@@ -56,7 +57,7 @@ strerror_r    AC_FUNC_STRERROR_R
 strftime       AC_FUNC_STRFTIME
 strtod         AC_FUNC_STRTOD
 utime          AC_FUNC_UTIME_NULL
-vfork          AC_FUNC_VFORK
+vfork          AC_FUNC_FORK
 vfprintf       AC_FUNC_VPRINTF
 vprintf                AC_FUNC_VPRINTF
 vsprintf       AC_FUNC_VPRINTF
index c66dd5dd96be7837fa7cb8496cdbef322e88a56c..5d4ac12a7a5251349f36eed93e19978eb1c3e7b4 100644 (file)
@@ -8,6 +8,7 @@ AT_CHECK_MACRO([AC_FUNC_CHOWN])
 AT_CHECK_MACRO([AC_FUNC_CLOSEDIR_VOID])
 AT_CHECK_MACRO([AC_FUNC_ERROR_AT_LINE])
 AT_CHECK_MACRO([AC_FUNC_FNMATCH])
+AT_CHECK_MACRO([AC_FUNC_FORK])
 AT_CHECK_MACRO([AC_FUNC_FSEEKO])
 AT_CHECK_MACRO([AC_FUNC_GETGROUPS])
 AT_CHECK_MACRO([AC_FUNC_GETLOADAVG])
@@ -27,7 +28,6 @@ AT_CHECK_MACRO([AC_FUNC_STRERROR_R])
 AT_CHECK_MACRO([AC_FUNC_STRFTIME])
 AT_CHECK_MACRO([AC_FUNC_STRTOD])
 AT_CHECK_MACRO([AC_FUNC_UTIME_NULL])
-AT_CHECK_MACRO([AC_FUNC_VFORK])
 AT_CHECK_MACRO([AC_FUNC_VPRINTF])
 AT_CHECK_MACRO([AC_FUNC_WAIT3])