1
0
mirror of https://git.savannah.gnu.org/git/gnulib.git synced 2025-08-08 17:22:05 +03:00
Files
gnulib/modules/assert-h
Paul Eggert c504bec035 assert-h: static_assert is a keyword in C23
* m4/assert_h.m4 (gl_ASSERT_H): Also test for static_assert
keyword a la C23, and define HAVE_C_STATIC_ASSERT if so.
If not, arrange for config.h to #define static_assert
by including <assert.h>, and then do "#undef assert"
so that the assert macro still needs an explicit include.
This should be safe even on very old hosts, as assert.h
has been re-includable for decades.
* tests/tests-assert.c: New test.
* modules/assert-h-tests (Files, Makefile.am): Add it.
2022-09-13 17:52:20 -05:00

53 lines
1.3 KiB
Plaintext

Description:
An <assert.h> and static_assert that are like C23.
Files:
lib/assert.in.h
lib/verify.h
m4/assert_h.m4
Depends-on:
gen-header
include_next
configure.ac:
gl_ASSERT_H
gl_CONDITIONAL_HEADER([assert.h])
AC_PROG_MKDIR_P
Makefile.am:
BUILT_SOURCES += $(ASSERT_H)
# We need the following in order to create <assert.h> when the system
# doesn't have one that works with the given compiler.
if GL_GENERATE_ASSERT_H
assert.h: assert.in.h verify.h $(top_builddir)/config.status
@NMD@ $(AM_V_GEN)$(MKDIR_P) '%reldir%'
$(gl_V_at){ $(SED_HEADER_STDOUT) \
-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_ASSERT_H''@|$(NEXT_ASSERT_H)|g' \
< $(srcdir)/assert.in.h && \
sed -e '/@assert.h omit start@/,/@assert.h omit end@/d' \
-e 's|_gl_verify|_gl_static_assert|g' \
-e 's|_GL_VERIFY|_GL_STATIC_ASSERT|g' \
-e 's|_GL\(_STATIC_ASSERT_H\)|_${gl_include_guard_prefix}\1|g' \
< $(srcdir)/verify.h; \
} > $@-t
$(AM_V_at)mv $@-t $@
else
assert.h: $(top_builddir)/config.status
rm -f $@
endif
MOSTLYCLEANFILES += assert.h assert.h-t
Include:
<assert.h>
License:
LGPLv2+
Maintainer:
Paul Eggert