Alpine’s <sys/cdefs.h> is a stub that issues a deprecation #warning.
* m4/getopt.m4 (gl_GETOPT_SUBSTITUTE_HEADER):
* m4/sched_h.m4 (gl_SCHED_H): Use the new macro
gl_CHECK_HEADER_SYS_CDEFS_H instead of checking independently.
* m4/sys_cdefs_h.m4: New file.
* modules/getopt-posix, modules/sched (Files): Add m4/sys_cdefs_h.m4.
---
 ChangeLog            | 10 ++++++++++
 m4/getopt.m4         | 11 ++---------
 m4/sched_h.m4        | 12 +++---------
 m4/sys_cdefs_h.m4    | 25 +++++++++++++++++++++++++
 modules/getopt-posix |  1 +
 modules/sched        |  1 +
 6 files changed, 42 insertions(+), 18 deletions(-)
 create mode 100644 m4/sys_cdefs_h.m4

diff --git a/ChangeLog b/ChangeLog
index dd5b0c4c66..2e82a08042 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2024-05-20  Paul Eggert  <egg...@cs.ucla.edu>
+
+       getopt-posix: port better to Alpine 3.20.0_rc1
+       Alpine’s <sys/cdefs.h> is a stub that issues a deprecation #warning.
+       * m4/getopt.m4 (gl_GETOPT_SUBSTITUTE_HEADER):
+       * m4/sched_h.m4 (gl_SCHED_H): Use the new macro
+       gl_CHECK_HEADER_SYS_CDEFS_H instead of checking independently.
+       * m4/sys_cdefs_h.m4: New file.
+       * modules/getopt-posix, modules/sched (Files): Add m4/sys_cdefs_h.m4.
+
 2024-05-20  Collin Funk  <collin.fu...@gmail.com>
 
        tests: Update expected tests results on NetBSD.
diff --git a/m4/getopt.m4 b/m4/getopt.m4
index 297722eae4..53cab8bef9 100644
--- a/m4/getopt.m4
+++ b/m4/getopt.m4
@@ -1,5 +1,5 @@
 # getopt.m4
-# serial 49
+# serial 50
 dnl Copyright (C) 2002-2006, 2008-2024 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -366,14 +366,7 @@ dnl is ambiguous with environment values that contain 
newlines.
 
 AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER],
 [
-  AC_CHECK_HEADERS_ONCE([sys/cdefs.h])
-  if test $ac_cv_header_sys_cdefs_h = yes; then
-    HAVE_SYS_CDEFS_H=1
-  else
-    HAVE_SYS_CDEFS_H=0
-  fi
-  AC_SUBST([HAVE_SYS_CDEFS_H])
-
+  gl_CHECK_HEADER_SYS_CDEFS_H
   AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
     [Define to rpl_ if the getopt replacement functions and variables
      should be used.])
diff --git a/m4/sched_h.m4 b/m4/sched_h.m4
index 1e022948b5..61c202ef0c 100644
--- a/m4/sched_h.m4
+++ b/m4/sched_h.m4
@@ -1,5 +1,5 @@
 # sched_h.m4
-# serial 15
+# serial 16
 dnl Copyright (C) 2008-2024 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,8 @@ AC_DEFUN_ONCE([gl_SCHED_H],
 
   AC_REQUIRE([AC_CANONICAL_HOST])
 
-  AC_CHECK_HEADERS_ONCE([sys/cdefs.h])
+  AC_REQUIRE([gl_CHECK_HEADER_SYS_CDEFS_H])
+
   AC_CHECK_HEADERS([sched.h], [], [],
     [[#if HAVE_SYS_CDEFS_H
        #include <sys/cdefs.h>
@@ -57,13 +58,6 @@ AC_DEFUN_ONCE([gl_SCHED_H],
   fi
   AC_SUBST([HAVE_STRUCT_SCHED_PARAM])
 
-  if test "$ac_cv_header_sys_cdefs_h" = yes; then
-    HAVE_SYS_CDEFS_H=1
-  else
-    HAVE_SYS_CDEFS_H=0
-  fi
-  AC_SUBST([HAVE_SYS_CDEFS_H])
-
   dnl Ensure the type pid_t gets defined.
   AC_REQUIRE([AC_TYPE_PID_T])
 
diff --git a/m4/sys_cdefs_h.m4 b/m4/sys_cdefs_h.m4
new file mode 100644
index 0000000000..069146d438
--- /dev/null
+++ b/m4/sys_cdefs_h.m4
@@ -0,0 +1,25 @@
+# sys_cdefs_h.m4 - Is <sys/cdefs.h> compatible enough with glibc?
+# serial 1
+dnl Copyright 2024 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_CHECK_HEADER_SYS_CDEFS_H],
+  [AC_CACHE_CHECK([for glibc-compatible sys/cdefs.h],
+     [gl_cv_header_sys_cdefs_h],
+     [AC_COMPILE_IFELSE(
+        [AC_LANG_DEFINES_PROVIDED
+         [#include <sys/cdefs.h>
+          enum { foo = __GNUC_PREREQ (14, 1) } bar;
+        ]],
+        [gl_cv_header_sys_cdefs_h=yes],
+        [gl_cv_header_sys_cdefs_h=no])])
+   if test "$gl_cv_header_sys_cdefs_h" = yes; then
+     HAVE_SYS_CDEFS_H=1
+   else
+     HAVE_SYS_CDEFS_H=0
+   fi
+   AC_SUBST([HAVE_SYS_CDEFS_H])])
diff --git a/modules/getopt-posix b/modules/getopt-posix
index 6305e83c8a..0b50620c4b 100644
--- a/modules/getopt-posix
+++ b/modules/getopt-posix
@@ -12,6 +12,7 @@ lib/getopt-pfx-core.h
 lib/getopt-pfx-ext.h
 lib/getopt_int.h
 m4/getopt.m4
+m4/sys_cdefs_h.m4
 
 Depends-on:
 unistd
diff --git a/modules/sched b/modules/sched
index 042aa8be04..7ce972adf7 100644
--- a/modules/sched
+++ b/modules/sched
@@ -5,6 +5,7 @@ Files:
 lib/sched.in.h
 m4/sched_h.m4
 m4/pid_t.m4
+m4/sys_cdefs_h.m4
 
 Depends-on:
 gen-header
-- 
2.45.1


Reply via email to