1# Check for stdnoreturn.h that conforms to C11. 2 3dnl Copyright 2012-2015 Free Software Foundation, Inc. 4dnl This file is free software; the Free Software Foundation 5dnl gives unlimited permission to copy and/or distribute it, 6dnl with or without modifications, as long as this notice is preserved. 7 8# Prepare for substituting <stdnoreturn.h> if it is not supported. 9 10AC_DEFUN([gl_STDNORETURN_H], 11[ 12 AC_CACHE_CHECK([for working stdnoreturn.h], 13 [gl_cv_header_working_stdnoreturn_h], 14 [AC_COMPILE_IFELSE( 15 [AC_LANG_PROGRAM( 16 [[#include <stdlib.h> 17 #include <stdnoreturn.h> 18 /* Do not check for 'noreturn' after the return type. 19 C11 allows it, but it's rarely done that way 20 and circa-2012 bleeding-edge GCC rejects it when given 21 -Werror=old-style-declaration. */ 22 noreturn void foo1 (void) { exit (0); } 23 _Noreturn void foo2 (void) { exit (0); } 24 int testit (int argc, char **argv) { 25 if (argc & 1) 26 return 0; 27 (argv[0][0] ? foo1 : foo2) (); 28 } 29 ]])], 30 [gl_cv_header_working_stdnoreturn_h=yes], 31 [gl_cv_header_working_stdnoreturn_h=no])]) 32 33 if test $gl_cv_header_working_stdnoreturn_h = yes; then 34 STDNORETURN_H='' 35 else 36 STDNORETURN_H='stdnoreturn.h' 37 fi 38 39 AC_SUBST([STDNORETURN_H]) 40 AM_CONDITIONAL([GL_GENERATE_STDNORETURN_H], [test -n "$STDNORETURN_H"]) 41]) 42