Feature #475 ยป 0060-Check-C23-nullptr-usability-as-a-sentinel.patch
m4/c23.m4 | ||
---|---|---|
# Check for the presence of C23 features.
|
||
# Check for C23 nullptr, and define FREECIV_HAVE_C23_NULLPTR if it's available
|
||
# Check for C23 nullptr that can be passed as sentinel
|
||
# and define FREECIV_HAVE_C23_NULLPTR if such is available
|
||
#
|
||
AC_DEFUN([FC_C23_NULLPTR],
|
||
[
|
||
AC_LANG_PUSH([C])
|
||
AC_CHECK_HEADERS([stddef])
|
||
AC_CHECK_HEADERS([stddef.h])
|
||
AC_CACHE_CHECK([for C23 nullptr], [ac_cv_c23_nullptr],
|
||
[AC_LINK_IFELSE([AC_LANG_PROGRAM(
|
||
[[#ifdef HAVE_STDDEF
|
||
#include <stddef>
|
||
#endif]],
|
||
[[ int *var = nullptr; ]])],
|
||
[ac_cv_c23_nullptr=yes], [ac_cv_c23_nullptr=no])])
|
||
[_cflags_="$CFLAGS"
|
||
CFLAGS="$EXTRA_DEBUG_CFLAGS $CFLAGS"
|
||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||
[[#ifdef HAVE_STDDEF_H
|
||
#include <stddef.h>
|
||
#endif
|
||
void sentinental(...) __attribute__((__sentinel__(0)));]],
|
||
[[ sentinental(nullptr); ]])],
|
||
[ac_cv_c23_nullptr=yes], [ac_cv_c23_nullptr=no])]
|
||
CFLAGS="$_cflags_")
|
||
if test "x${ac_cv_c23_nullptr}" = "xyes" ; then
|
||
AC_DEFINE([FREECIV_HAVE_C23_NULLPTR], [1], [C23 nullptr available])
|
||
fi
|
meson.build | ||
---|---|---|
pub_conf_data.set('FREECIV_HAVE_LIBZSTD', 1)
|
||
endif
|
||
# Check for c23 nullptr that can be passed as sentinel
|
||
if c_compiler.compiles('''
|
||
#include <stddef>
|
||
int main(void) { int *var = nullptr; return 0; }''',
|
||
#include <stddef.h>
|
||
void sentinental(...) __attribute__((__sentinel__(0)));
|
||
void caller(void) { sentinental(nullptr); }''',
|
||
name: 'c23 nullptr',
|
||
include_directories: include_directories(cross_inc_path))
|
||
include_directories: include_directories(cross_inc_path),
|
||
args: ['-Wformat'])
|
||
pub_conf_data.set('FREECIV_HAVE_C23_NULLPTR', 1)
|
||
endif
|
||