Re: gnulib / autoconf sync

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Zack,

Here are patches to sync autoconf with gnulib:
 
   AC_FUNC_CHOWN                   chown.m4 -> functions.m4
 
   AC_FUNC_GETGROUPS               getgroups.m4 -> functions.m4
 
   AC_FUNC_MBRTOWC                 mbrtowc.m4 -> functions.m4
 
   AC_TYPE_MBSTATE_T               mbstate_t.m4 -> types.m4
 
   AC_FUNC_GETMNTENT               mountlist.m4 -> functions.m4
 
   AC_FUNC_OBSTACK                 obstack.m4 -> functions.m4

The changes are mostly minor; the main purpose is
  1) to be able to do this sync more easily in the future,
  2) to wrap some of these definitions in
       m4_version_prereq([2.70.1], [], [
     in Gnulib.

There are still some remaining differences: Gnulib offers a
configure option --enable-cross-guesses={conservative|risky}
that determines how cross-compilation guesses work in case of
unknown platforms. --enable-cross-guesses=conservative is
the default. However, when an operating system developer (on a
platform which is not yet known to gnulib) builds packages for
their platform, they want to expose, not hide, possible platform
bugs; in this case, --enable-cross-guesses=risky is the appropriate
choice. Autoconf does not have such an option.

Bruno
>From f6f709a5d37fa5b8309bfd7d88f2b7f3daeeac1c Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@xxxxxxxxx>
Date: Mon, 21 Dec 2020 11:13:17 +0100
Subject: [PATCH 1/6] Port AC_FUNC_CHOWN fixes from Gnulib.

* lib/autoconf/functions.m4 (AC_FUNC_CHOWN): Support compiling without
-loldnames on native Windows. Improve cross-compilation guesses. When
cross-compiling, say "guessing ...".
---
 lib/autoconf/functions.m4 | 82 ++++++++++++++++++++++++++++-------------------
 1 file changed, 49 insertions(+), 33 deletions(-)

diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index 12f60b9..a86048f 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -470,39 +470,55 @@ AU_ALIAS([AC_ALLOCA], [AC_FUNC_ALLOCA])
 # Determine whether chown accepts arguments of -1 for uid and gid.
 AN_FUNCTION([chown], [AC_FUNC_CHOWN])
 AC_DEFUN([AC_FUNC_CHOWN],
-[AC_REQUIRE([AC_TYPE_UID_T])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
-AC_CACHE_CHECK([for working chown], ac_cv_func_chown_works,
-[AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
-#include <fcntl.h>
-],
-[[  char *f = "conftest.chown";
-  struct stat before, after;
-
-  if (creat (f, 0600) < 0)
-    return 1;
-  if (stat (f, &before) < 0)
-    return 1;
-  if (chown (f, (uid_t) -1, (gid_t) -1) == -1)
-    return 1;
-  if (stat (f, &after) < 0)
-    return 1;
-  return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid);
-]])],
-	       [ac_cv_func_chown_works=yes],
-	       [ac_cv_func_chown_works=no],
-	       [case "$host_os" in # ((
-			  # Guess yes on glibc systems.
-		  *-gnu*) ac_cv_func_chown_works=yes ;;
-			  # If we don't know, assume the worst.
-		  *)      ac_cv_func_chown_works=no ;;
-		esac])
-rm -f conftest.chown
-])
-if test $ac_cv_func_chown_works = yes; then
-  AC_DEFINE(HAVE_CHOWN, 1,
-	    [Define to 1 if your system has a working `chown' function.])
-fi
+[
+  AC_REQUIRE([AC_TYPE_UID_T])dnl
+  AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+  AC_CACHE_CHECK([for working chown],
+    [ac_cv_func_chown_works],
+    [AC_RUN_IFELSE(
+       [AC_LANG_PROGRAM(
+          [AC_INCLUDES_DEFAULT
+           [#include <fcntl.h>
+            #if defined _WIN32 && !defined __CYGWIN__
+             #define creat _creat
+            #endif
+          ]],
+          [[
+            char *f = "conftest.chown";
+            struct stat before, after;
+
+            if (creat (f, 0600) < 0)
+              return 1;
+            if (stat (f, &before) < 0)
+              return 1;
+            if (chown (f, (uid_t) -1, (gid_t) -1) == -1)
+              return 1;
+            if (stat (f, &after) < 0)
+              return 1;
+            return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid);
+          ]])
+       ],
+       [ac_cv_func_chown_works=yes],
+       [ac_cv_func_chown_works=no],
+       [case "$host_os" in # ((
+                           # Guess yes on Linux systems.
+          linux-* | linux) ac_cv_func_chown_works="guessing yes" ;;
+                           # Guess yes on glibc systems.
+          *-gnu* | gnu*)   ac_cv_func_chown_works="guessing yes" ;;
+                           # Guess no on native Windows.
+          mingw*)          ac_cv_func_chown_works="guessing no" ;;
+                           # If we don't know, assume the worst.
+          *)               ac_cv_func_chown_works="guessing no" ;;
+        esac
+       ])
+     rm -f conftest.chown
+    ])
+  case "$ac_cv_func_chown_works" in
+    *yes)
+      AC_DEFINE([HAVE_CHOWN], [1],
+        [Define to 1 if your system has a working `chown' function.])
+      ;;
+  esac
 ])# AC_FUNC_CHOWN
 
 
-- 
2.7.4

>From 9e34baba2a6ed10b31de343c25bb28e7ac8f290d Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@xxxxxxxxx>
Date: Mon, 21 Dec 2020 11:19:05 +0100
Subject: [PATCH 2/6] Port AC_FUNC_GETGROUPS fixes from Gnulib.

* lib/autoconf/functions.m4 (AC_FUNC_GETGROUPS): Improve cross-compilation
guesses.
---
 lib/autoconf/functions.m4 | 79 ++++++++++++++++++++++++++---------------------
 1 file changed, 43 insertions(+), 36 deletions(-)

diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index a86048f..003e9ce 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -689,44 +689,51 @@ fi
 # When cross-compiling, assume getgroups is broken.
 AN_FUNCTION([getgroups], [AC_FUNC_GETGROUPS])
 AC_DEFUN([AC_FUNC_GETGROUPS],
-[AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
-AC_REQUIRE([AC_TYPE_SIZE_T])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
-AC_CHECK_FUNC(getgroups)
+[
+  AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
+  AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+  AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+  AC_CHECK_FUNC([getgroups])
 
-# If we don't yet have getgroups, see if it's in -lbsd.
-# This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1.
-ac_save_LIBS=$LIBS
-if test $ac_cv_func_getgroups = no; then
-  AC_CHECK_LIB(bsd, getgroups, [GETGROUPS_LIB=-lbsd])
-fi
+  # If we don't yet have getgroups, see if it's in -lbsd.
+  # This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1.
+  ac_save_LIBS=$LIBS
+  if test $ac_cv_func_getgroups = no; then
+    AC_CHECK_LIB(bsd, getgroups, [GETGROUPS_LIB=-lbsd])
+  fi
 
-# Run the program to test the functionality of the system-supplied
-# getgroups function only if there is such a function.
-if test $ac_cv_func_getgroups = yes; then
-  AC_CACHE_CHECK([for working getgroups], ac_cv_func_getgroups_works,
-   [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
-      [[/* On Ultrix 4.3, getgroups (0, 0) always fails.  */
-       return getgroups (0, 0) == -1;]])],
-		  [ac_cv_func_getgroups_works=yes],
-		  [ac_cv_func_getgroups_works=no],
-		  [case "$host_os" in # ((
-			     # Guess yes on glibc systems.
-		     *-gnu*) ac_cv_func_getgroups_works="guessing yes" ;;
-			     # If we don't know, assume the worst.
-		     *)      ac_cv_func_getgroups_works="guessing no" ;;
-		   esac])
-   ])
-else
-  ac_cv_func_getgroups_works=no
-fi
-case "$ac_cv_func_getgroups_works" in
-  *yes)
-    AC_DEFINE(HAVE_GETGROUPS, 1,
-	      [Define to 1 if your system has a working `getgroups' function.])
-    ;;
-esac
-LIBS=$ac_save_LIBS
+  # Run the program to test the functionality of the system-supplied
+  # getgroups function only if there is such a function.
+  if test $ac_cv_func_getgroups = yes; then
+    AC_CACHE_CHECK([for working getgroups], [ac_cv_func_getgroups_works],
+      [AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM(
+            [AC_INCLUDES_DEFAULT],
+            [[/* On NeXTstep 3.2, getgroups (0, 0) always fails.  */
+              return getgroups (0, 0) == -1;]])
+         ],
+         [ac_cv_func_getgroups_works=yes],
+         [ac_cv_func_getgroups_works=no],
+         [case "$host_os" in # ((
+                           # Guess yes on glibc systems.
+            *-gnu* | gnu*) ac_cv_func_getgroups_works="guessing yes" ;;
+                           # Guess yes on musl systems.
+            *-musl*)       ac_cv_func_getgroups_works="guessing yes" ;;
+                           # If we don't know, assume the worst.
+            *)             ac_cv_func_getgroups_works="guessing no" ;;
+          esac
+         ])
+      ])
+  else
+    ac_cv_func_getgroups_works=no
+  fi
+  case "$ac_cv_func_getgroups_works" in
+    *yes)
+      AC_DEFINE([HAVE_GETGROUPS], [1],
+        [Define to 1 if your system has a working `getgroups' function.])
+      ;;
+  esac
+  LIBS=$ac_save_LIBS
 ])# AC_FUNC_GETGROUPS
 
 
-- 
2.7.4

>From 15afcdea97a17a48fff9c8c1bf51b9a1264916b1 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@xxxxxxxxx>
Date: Mon, 21 Dec 2020 11:24:29 +0100
Subject: [PATCH 3/6] Port minor AC_FUNC_MBRTOWC fixes from Gnulib.

* lib/autoconf/functions.m4 (AC_FUNC_MBRTOWC): Quote systematically. Don't use
quadrigraphs.
---
 lib/autoconf/functions.m4 | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index 003e9ce..a74c6c4 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -1016,19 +1016,19 @@ AN_FUNCTION([mbrtowc], [AC_FUNC_MBRTOWC])
 AC_DEFUN([AC_FUNC_MBRTOWC],
 [
   AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared],
-    ac_cv_func_mbrtowc,
+    [ac_cv_func_mbrtowc],
     [AC_LINK_IFELSE(
        [AC_LANG_PROGRAM(
-	    [[@%:@include <wchar.h>]],
+	    [[#include <wchar.h>]],
 	    [[wchar_t wc;
 	      char const s[] = "";
 	      size_t n = 1;
 	      mbstate_t state;
 	      return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));]])],
-       ac_cv_func_mbrtowc=yes,
-       ac_cv_func_mbrtowc=no)])
+       [ac_cv_func_mbrtowc=yes],
+       [ac_cv_func_mbrtowc=no])])
   if test $ac_cv_func_mbrtowc = yes; then
-    AC_DEFINE([HAVE_MBRTOWC], 1,
+    AC_DEFINE([HAVE_MBRTOWC], [1],
       [Define to 1 if mbrtowc and mbstate_t are properly declared.])
   fi
 ])
-- 
2.7.4

>From 2191713f6d145ef1c7f889fe01f08ed2b55edec8 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@xxxxxxxxx>
Date: Mon, 21 Dec 2020 11:31:37 +0100
Subject: [PATCH 4/6] Provide minor AC_FUNC_GETMNTENT improvements from Gnulib.

* lib/autoconf/functions.m4 (AC_FUNC_GETMNTENT): Drop support for IRIX 4 and
Dynix/ptx.
---
 lib/autoconf/functions.m4 | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index a74c6c4..001a165 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -891,13 +891,11 @@ AU_ALIAS([AC_GETLOADAVG], [AC_FUNC_GETLOADAVG])
 # -----------------
 AN_FUNCTION([getmntent], [AC_FUNC_GETMNTENT])
 AC_DEFUN([AC_FUNC_GETMNTENT],
-[# getmntent is in the standard C library on UNICOS, in -lsun on Irix 4,
-# -lseq on Dynix/PTX, -lgen on Unixware.
-AC_SEARCH_LIBS(getmntent, [sun seq gen],
-	       [ac_cv_func_getmntent=yes
-		AC_DEFINE([HAVE_GETMNTENT], 1,
-			  [Define to 1 if you have the `getmntent' function.])],
-	       [ac_cv_func_getmntent=no])
+[
+  # getmntent is in the standard C library on most systems, but in -lgen on
+  # Unixware.
+  AC_SEARCH_LIBS([getmntent], [gen])
+  AC_CHECK_FUNCS([getmntent])
 ])
 
 
-- 
2.7.4

>From eea496940c993b84ef5139846d891276ef0f3117 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@xxxxxxxxx>
Date: Mon, 21 Dec 2020 11:37:04 +0100
Subject: [PATCH 5/6] Port AC_FUNC_OBSTACK fixes from Gnulib.

* lib/autoconf/functions.m4 (AC_FUNC_OBSTACK): Do not assume system-supplied
obstack is size_t safe.
---
 lib/autoconf/functions.m4 | 41 ++++++++++++++++++++++++-----------------
 1 file changed, 24 insertions(+), 17 deletions(-)

diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
index 001a165..c56a71a 100644
--- a/lib/autoconf/functions.m4
+++ b/lib/autoconf/functions.m4
@@ -1444,23 +1444,30 @@ AU_ALIAS([AC_MMAP], [AC_FUNC_MMAP])
 AN_FUNCTION([obstack_init], [AC_FUNC_OBSTACK])
 AN_IDENTIFIER([obstack],    [AC_FUNC_OBSTACK])
 AC_DEFUN([AC_FUNC_OBSTACK],
-[AC_LIBSOURCES([obstack.h, obstack.c])dnl
-AC_CACHE_CHECK([for obstacks], ac_cv_func_obstack,
-[AC_LINK_IFELSE(
-    [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
-		      [@%:@include "obstack.h"]],
-		     [[struct obstack mem;
-		       @%:@define obstack_chunk_alloc malloc
-		       @%:@define obstack_chunk_free free
-		       obstack_init (&mem);
-		       obstack_free (&mem, 0);]])],
-		[ac_cv_func_obstack=yes],
-		[ac_cv_func_obstack=no])])
-if test $ac_cv_func_obstack = yes; then
-  AC_DEFINE(HAVE_OBSTACK, 1, [Define to 1 if libc includes obstacks.])
-else
-  AC_LIBOBJ(obstack)
-fi
+[
+  AC_LIBSOURCES([obstack.h, obstack.c])dnl
+  AC_CACHE_CHECK([for obstacks that work with any size object],
+    [ac_cv_func_obstack],
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include "obstack.h"
+            void *obstack_chunk_alloc (size_t n) { return 0; }
+            void obstack_chunk_free (void *p) { }
+            /* Check that an internal function returns size_t, not int.  */
+            size_t _obstack_memory_used (struct obstack *);
+           ]],
+          [[struct obstack mem;
+            obstack_init (&mem);
+            obstack_free (&mem, 0);
+          ]])],
+       [ac_cv_func_obstack=yes],
+       [ac_cv_func_obstack=no])])
+  if test "$ac_cv_func_obstack" = yes; then
+    AC_DEFINE([HAVE_OBSTACK], [1],
+      [Define to 1 if the system has obstacks that work with any size object.])
+  else
+    AC_LIBOBJ([obstack])
+  fi
 ])# AC_FUNC_OBSTACK
 
 
-- 
2.7.4

>From 71692c4b05af76c55bdedd90fb046346a7c84884 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@xxxxxxxxx>
Date: Mon, 21 Dec 2020 11:40:34 +0100
Subject: [PATCH 6/6] Port AC_TYPE_MBSTATE_T fixes from Gnulib.

* lib/autoconf/types.m4 (AC_TYPE_MBSTATE_T): Add support for HP-UX 11.11. Quote
systematically.
---
 lib/autoconf/types.m4 | 34 +++++++++++++++++++---------------
 1 file changed, 19 insertions(+), 15 deletions(-)

diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4
index fff850a..05ed1d5 100644
--- a/lib/autoconf/types.m4
+++ b/lib/autoconf/types.m4
@@ -570,21 +570,25 @@ AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
 # AC_TYPE_MBSTATE_T
 # -----------------
 AC_DEFUN([AC_TYPE_MBSTATE_T],
-  [AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t,
-     [AC_COMPILE_IFELSE(
-	[AC_LANG_PROGRAM(
-	   [AC_INCLUDES_DEFAULT
-#	    include <wchar.h>],
-	   [mbstate_t x; return sizeof x;])],
-	[ac_cv_type_mbstate_t=yes],
-	[ac_cv_type_mbstate_t=no])])
-   if test $ac_cv_type_mbstate_t = yes; then
-     AC_DEFINE([HAVE_MBSTATE_T], 1,
-	       [Define to 1 if <wchar.h> declares mbstate_t.])
-   else
-     AC_DEFINE([mbstate_t], int,
-	       [Define to a type if <wchar.h> does not define.])
-   fi])
+[
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) dnl for HP-UX 11.11
+
+  AC_CACHE_CHECK([for mbstate_t], [ac_cv_type_mbstate_t],
+    [AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [AC_INCLUDES_DEFAULT[
+            #include <wchar.h>]],
+          [[mbstate_t x; return sizeof x;]])],
+       [ac_cv_type_mbstate_t=yes],
+       [ac_cv_type_mbstate_t=no])])
+  if test $ac_cv_type_mbstate_t = yes; then
+    AC_DEFINE([HAVE_MBSTATE_T], [1],
+              [Define to 1 if <wchar.h> declares mbstate_t.])
+  else
+    AC_DEFINE([mbstate_t], [int],
+              [Define to a type if <wchar.h> does not define.])
+  fi
+])
 
 
 # AC_TYPE_UID_T
-- 
2.7.4


[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux