build: try to use _Static_assert if static_assert is not available
* configure.ac: Check for _Static_assert if static_assert is not available. * static_assert.h [!HAVE_STATIC_ASSERT && HAVE__STATIC_ASSERT] (static_assert): Define to _Static_assert.
This commit is contained in:
parent
96ebee2121
commit
bd9845770f
30
configure.ac
30
configure.ac
@ -797,13 +797,31 @@ fi
|
||||
|
||||
AC_CACHE_CHECK([for static_assert], [st_cv_have_static_assert],
|
||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <assert.h>]],
|
||||
[[static_assert(1,"")]])],
|
||||
[[static_assert(1,"")]]
|
||||
)
|
||||
],
|
||||
[st_cv_have_static_assert=yes],
|
||||
[st_cv_have_static_assert=no])])
|
||||
if test "x$st_cv_have_static_assert" = xyes; then
|
||||
AC_DEFINE([HAVE_STATIC_ASSERT], [1],
|
||||
[Define to 1 if the system provides static_assert])
|
||||
fi
|
||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([],
|
||||
[[_Static_assert(1,"")]]
|
||||
)
|
||||
],
|
||||
[st_cv_have_static_assert=_Static_assert],
|
||||
[st_cv_have_static_assert=no]
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
case "x$st_cv_have_static_assert" in
|
||||
xyes)
|
||||
AC_DEFINE([HAVE_STATIC_ASSERT], [1],
|
||||
[Define to 1 if the system provides static_assert])
|
||||
;;
|
||||
x_Static_assert)
|
||||
AC_DEFINE([HAVE__STATIC_ASSERT], [1],
|
||||
[Define to 1 if the system provides _Static_assert])
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_CHECK_LIB([dl], [dladdr], [dl_LIBS='-ldl'], [dl_LIBS=])
|
||||
if test "x$ac_cv_lib_dl_dladdr" = xyes; then
|
||||
|
@ -30,7 +30,16 @@
|
||||
|
||||
#include "assert.h"
|
||||
|
||||
#ifndef HAVE_STATIC_ASSERT
|
||||
#if defined HAVE_STATIC_ASSERT
|
||||
|
||||
/* static_assert is already available */
|
||||
|
||||
#elif defined HAVE__STATIC_ASSERT
|
||||
|
||||
# undef static_assert
|
||||
# define static_assert _Static_assert
|
||||
|
||||
#else /* !HAVE_STATIC_ASSERT && !HAVE__STATIC_ASSERT */
|
||||
|
||||
# define static_assert(expr, message) \
|
||||
extern int (*strace_static_assert(int))[sizeof(int[2 * !!(expr) - 1])]
|
||||
|
Loading…
x
Reference in New Issue
Block a user