1dnl A placeholder for <stddef.h>, for platforms that have issues. 2# stddef_h.m4 serial 6 3dnl Copyright (C) 2009-2020 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 8AC_DEFUN([gl_STDDEF_H], 9[ 10 AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) 11 AC_REQUIRE([gt_TYPE_WCHAR_T]) 12 STDDEF_H= 13 14 dnl Test whether the type max_align_t exists and whether its alignment 15 dnl "is as great as is supported by the implementation in all contexts". 16 AC_CACHE_CHECK([for good max_align_t], 17 [gl_cv_type_max_align_t], 18 [AC_COMPILE_IFELSE( 19 [AC_LANG_PROGRAM( 20 [[#include <stddef.h> 21 unsigned int s = sizeof (max_align_t); 22 #if defined __GNUC__ || defined __IBM__ALIGNOF__ 23 int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1]; 24 int check2[2 * (__alignof__ (long double) <= __alignof__ (max_align_t)) - 1]; 25 #endif 26 ]])], 27 [gl_cv_type_max_align_t=yes], 28 [gl_cv_type_max_align_t=no]) 29 ]) 30 if test $gl_cv_type_max_align_t = no; then 31 HAVE_MAX_ALIGN_T=0 32 STDDEF_H=stddef.h 33 fi 34 35 if test $gt_cv_c_wchar_t = no; then 36 HAVE_WCHAR_T=0 37 STDDEF_H=stddef.h 38 fi 39 40 AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions], 41 [gl_cv_decl_null_works], 42 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stddef.h> 43 int test[2 * (sizeof NULL == sizeof (void *)) -1]; 44]])], 45 [gl_cv_decl_null_works=yes], 46 [gl_cv_decl_null_works=no])]) 47 if test $gl_cv_decl_null_works = no; then 48 REPLACE_NULL=1 49 STDDEF_H=stddef.h 50 fi 51 52 AC_SUBST([STDDEF_H]) 53 AM_CONDITIONAL([GL_GENERATE_STDDEF_H], [test -n "$STDDEF_H"]) 54 if test -n "$STDDEF_H"; then 55 gl_NEXT_HEADERS([stddef.h]) 56 fi 57]) 58 59AC_DEFUN([gl_STDDEF_MODULE_INDICATOR], 60[ 61 dnl Use AC_REQUIRE here, so that the default settings are expanded once only. 62 AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) 63 gl_MODULE_INDICATOR_SET_VARIABLE([$1]) 64]) 65 66AC_DEFUN([gl_STDDEF_H_DEFAULTS], 67[ 68 dnl Assume proper GNU behavior unless another module says otherwise. 69 REPLACE_NULL=0; AC_SUBST([REPLACE_NULL]) 70 HAVE_MAX_ALIGN_T=1; AC_SUBST([HAVE_MAX_ALIGN_T]) 71 HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T]) 72]) 73