# Check for stdnoreturn.h that conforms to C11. dnl Copyright 2012-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Prepare for substituting if it is not supported. AC_DEFUN([gl_STDNORETURN_H], [ AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in cygwin*) dnl Regardless whether a working exists or not, dnl we need our own , because of the definition dnl of _Noreturn done by gnulib-common.m4. GL_GENERATE_STDNORETURN_H=true ;; *) AC_CACHE_CHECK([for working stdnoreturn.h], [gl_cv_header_working_stdnoreturn_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include #include #if defined _WIN32 && !defined __CYGWIN__ # include #endif /* Do not check for 'noreturn' after the return type. C11 allows it, but it's rarely done that way and circa-2012 bleeding-edge GCC rejects it when given -Werror=old-style-declaration. */ noreturn void foo1 (void) { exit (0); } _Noreturn void foo2 (void) { exit (0); } int testit (int argc, char **argv) { if (argc & 1) return 0; (argv[0][0] ? foo1 : foo2) (); } ]])], [gl_cv_header_working_stdnoreturn_h=yes], [gl_cv_header_working_stdnoreturn_h=no])]) if test $gl_cv_header_working_stdnoreturn_h = yes; then GL_GENERATE_STDNORETURN_H=false else GL_GENERATE_STDNORETURN_H=true fi ;; esac ])