bug-gnulib
[Top][All Lists]
Advanced

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

Re: assert-h, stdbool: Allow mixed use of gcc/g++ and clang/clang++ agai


From: Bruno Haible
Subject: Re: assert-h, stdbool: Allow mixed use of gcc/g++ and clang/clang++ again
Date: Thu, 31 Oct 2024 04:37:51 +0100

I wrote:
> The fix below makes this work with GCC and clang; other compilers are not 
> relevant
> for this mode of building GNU clisp.
> 
> The empirically determined replacement for HAVE_C_STATIC_ASSERT is:
> static_assert is built-in
>   - C++
>     g++     if __cplusplus >= 201103L && __GNUG__ >= 6
>     clang++ if __cplusplus >= 201703L
>   - C
>     gcc:    if __STDC_VERSION__ >= 202000L && __GNUC__ >= 13
>     clang:  if __STDC_VERSION__ >= 202000L && __clang_major__ >= 16

The fix works on some platforms, like glibc or Haiku 2024, but is still not
working on Haiku as of 2022. This additional patch fixes it there as well.


2024-10-31  Bruno Haible  <bruno@clisp.org>

        assert-h: Allow mixed use of gcc/g++ also on Haiku 2022.
        * m4/assert_h.m4 (gl_ASSERT_H): Don't assume that in C mode, <assert.h>
        defines static_assert.

diff --git a/m4/assert_h.m4 b/m4/assert_h.m4
index 8f772f0a63..02f24db535 100644
--- a/m4/assert_h.m4
+++ b/m4/assert_h.m4
@@ -1,5 +1,5 @@
 # assert_h.m4
-# serial 3
+# serial 4
 dnl Copyright (C) 2011-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,
@@ -80,8 +80,9 @@ AC_DEFUN([gl_ASSERT_H]
   #undef/**/__ASSERT_H__
  #endif
  /* Solaris 11.4 <assert.h> defines static_assert as a macro with 2 arguments.
-    We need it also to be invocable with a single argument.  */
- #if defined __sun && (__STDC_VERSION__ - 0 >= 201112L) && !defined __cplusplus
+    We need it also to be invocable with a single argument.
+    Haiku 2022 <assert.h> does not define static_assert at all.  */
+ #if (__STDC_VERSION__ - 0 >= 201112L) && !defined __cplusplus
   #undef/**/static_assert
   #define static_assert _Static_assert
  #endif






reply via email to

[Prev in Thread] Current Thread [Next in Thread]