]> Savannah Git Hosting - gnulib.git/commitdiff
stdalign: Ensure alignof is defined on FreeBSD (regression 2023-01-15).
authorBruno Haible <bruno@clisp.org>
Sat, 28 Jan 2023 01:23:36 +0000 (02:23 +0100)
committerBruno Haible <bruno@clisp.org>
Sat, 28 Jan 2023 01:28:49 +0000 (02:28 +0100)
* lib/stdalign.in.h: Include the system's <stdalign.h> when it exists.
* m4/stdalign.m4 (gl_ALIGNASOF): Invoke gl_CHECK_NEXT_HEADERS. Set
HAVE_STDALIGN_H.
* modules/stdalign (Makefile.am): Substitute GUARD_PREFIX,
HAVE_STDALIGN_H, INCLUDE_NEXT, PRAGMA_SYSTEM_HEADER, PRAGMA_COLUMNS,
NEXT_STDALIGN_H.

ChangeLog
lib/stdalign.in.h
m4/stdalign.m4
modules/stdalign

index 7013ee4aa17ccf1290c696b0eb4a9ef14421563b..34514a6d9acf740e789e02a070e5bd6d9a7e9653 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2023-01-27  Bruno Haible  <bruno@clisp.org>
+
+       stdalign: Ensure alignof is defined on FreeBSD (regression 2023-01-15).
+       * lib/stdalign.in.h: Include the system's <stdalign.h> when it exists.
+       * m4/stdalign.m4 (gl_ALIGNASOF): Invoke gl_CHECK_NEXT_HEADERS. Set
+       HAVE_STDALIGN_H.
+       * modules/stdalign (Makefile.am): Substitute GUARD_PREFIX,
+       HAVE_STDALIGN_H, INCLUDE_NEXT, PRAGMA_SYSTEM_HEADER, PRAGMA_COLUMNS,
+       NEXT_STDALIGN_H.
+
 2023-01-27  Bruno Haible  <bruno@clisp.org>
 
        stddef: Fix test-stddef compilation error on FreeBSD 12/x86.
index 6523546f16d35160fba4734f9f9e4780ec215569..b616c100fdc90a65986e539a075756e58f6a7f68 100644 (file)
 /* Define two obsolescent C11 macros, assuming alignas and alignof are
    either keywords or alignasof-defined macros.  */
 
-#ifndef _GL_STDALIGN_H
-#define _GL_STDALIGN_H
+#ifndef _@GUARD_PREFIX@_STDALIGN_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* We need to include the system's <stdalign.h> when it exists, because it might
+   define 'alignof' as a macro when it's not a keyword or compiler built-in.  */
+#if @HAVE_STDALIGN_H@
+/* The include_next requires a split double-inclusion guard.  */
+# @INCLUDE_NEXT@ @NEXT_STDALIGN_H@
+#endif
+
+#ifndef _@GUARD_PREFIX@_STDALIGN_H
+#define _@GUARD_PREFIX@_STDALIGN_H
 
 #if (defined alignas \
      || (defined __STDC_VERSION__ && 202311 <= __STDC_VERSION__) \
@@ -31,4 +45,5 @@
 
 #define __alignof_is_defined 1
 
-#endif /* _GL_STDALIGN_H */
+#endif /* _@GUARD_PREFIX@_STDALIGN_H */
+#endif /* _@GUARD_PREFIX@_STDALIGN_H */
index 6a0ab2c1020d5dcac5b8ff36a78684388d033e7e..3e83a2ca587209c1265216533375a5f225efb827 100644 (file)
@@ -179,9 +179,17 @@ AC_DEFUN([gl_ALIGNASOF],
 AC_DEFUN([gl_STDALIGN_H],
 [
   AC_REQUIRE([gl_ALIGNASOF])
-  GL_GENERATE_STDALIGN_H=false
-  AS_IF([test "$gl_cv_header_working_stdalign_h" = no],
-    [GL_GENERATE_STDALIGN_H=true])
-
-  AC_CHECK_HEADERS_ONCE([stdalign.h])
+  if test "$gl_cv_header_working_stdalign_h" = no; then
+    GL_GENERATE_STDALIGN_H=true
+  else
+    GL_GENERATE_STDALIGN_H=false
+  fi
+
+  gl_CHECK_NEXT_HEADERS([stdalign.h])
+  if test $ac_cv_header_stdalign_h = yes; then
+    HAVE_STDALIGN_H=1
+  else
+    HAVE_STDALIGN_H=0
+  fi
+  AC_SUBST([HAVE_STDALIGN_H])
 ])
index c5c29d3088deec5d54d1c36f617004db3193c08b..ceeab546a2f6cddbd22f59addb22639e48dbcdf5 100644 (file)
@@ -26,7 +26,14 @@ BUILT_SOURCES += $(STDALIGN_H)
 if GL_GENERATE_STDALIGN_H
 stdalign.h: stdalign.in.h $(top_builddir)/config.status
 @NMD@  $(AM_V_GEN)$(MKDIR_P) '%reldir%'
-       $(gl_V_at)$(SED_HEADER_TO_AT_t) $(srcdir)/stdalign.in.h
+       $(gl_V_at)$(SED_HEADER_STDOUT) \
+             -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
+             -e 's|@''HAVE_STDALIGN_H''@|$(HAVE_STDALIGN_H)|g' \
+             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+             -e 's|@''NEXT_STDALIGN_H''@|$(NEXT_STDALIGN_H)|g' \
+             $(srcdir)/stdalign.in.h > $@-t
        $(AM_V_at)mv $@-t $@
 else
 stdalign.h: $(top_builddir)/config.status