From: Paul Eggert Date: Thu, 15 Sep 2016 17:08:56 +0000 (-0700) Subject: AC_USE_SYSTEM_EXTENSIONS: port to more ISO C TSes X-Git-Tag: v2.69b~67 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9021c82280a80b5f46df3d784d1fdcfb12405ff5;p=thirdparty%2Fautoconf.git AC_USE_SYSTEM_EXTENSIONS: port to more ISO C TSes * doc/autoconf.texi (C and Posix Variants): Rename from "Posix Variants", and document updated behavior. * lib/autoconf/specific.m4 (AC_USE_SYSTEM_EXTENSIONS): Also define __STDC_WANT_IEC_60559_ATTRIBS_EXT__, __STDC_WANT_IEC_60559_DFP_EXT__, __STDC_WANT_IEC_60559_TYPES_EXT__, and __STDC_WANT_MATH_SPEC_FUNCS__. From a suggestion by Joseph Myers in: http://lists.gnu.org/archive/html/autoconf-patches/2016-09/msg00011.html --- diff --git a/NEWS b/NEWS index 43918bbb..a4c53ddf 100644 --- a/NEWS +++ b/NEWS @@ -59,8 +59,8 @@ GNU Autoconf NEWS - User visible changes. YFLAGS to enable these warnings. - AC_USE_SYSTEM_EXTENSIONS now enables more extensions on HP-UX, - macOS, and MINIX, as well as on systems conforming to ISO/IEC TR - 24731-2:2010, ISO/IEC TS 18661-1:2014, and ISO/IEC TS 18661-4:2015. + macOS, and MINIX, as well as on systems conforming to recent + ISO/IEC C technical reports and specifications. - AC_CHECK_DECL and AC_CHECK_DECLS can now report missing declarations for functions that are also Clang compiler builtins. diff --git a/doc/autoconf.texi b/doc/autoconf.texi index 4f041bd4..36e19383 100644 --- a/doc/autoconf.texi +++ b/doc/autoconf.texi @@ -363,7 +363,7 @@ Existing Tests * Types:: Types that might be missing * Compilers and Preprocessors:: Checking for compiling programs * System Services:: Operating system services -* Posix Variants:: Special kludges for specific Posix variants +* C and Posix Variants:: Kludges for C and Posix variants * Erlang Libraries:: Checking for the existence of Erlang libraries Common Behavior @@ -3838,7 +3838,7 @@ Symbols}, for how to get those symbol definitions into your program. * Types:: Types that might be missing * Compilers and Preprocessors:: Checking for compiling programs * System Services:: Operating system services -* Posix Variants:: Special kludges for specific Posix variants +* C and Posix Variants:: Kludges for C and Posix variants * Erlang Libraries:: Checking for the existence of Erlang libraries @end menu @@ -8606,29 +8606,16 @@ system. If so, set the shell variable @code{ac_cv_sys_posix_termios} to @samp{yes}. If not, set the variable to @samp{no}. @end defmac -@node Posix Variants -@section Posix Variants +@node C and Posix Variants +@section C and Posix Variants -The following macro makes it possible to use features of Posix that are -extensions to C, as well as platform extensions not defined by Posix. +The following macro makes it possible to use C language and library +extensions defined by the C standards committee, features of Posix that +are extensions to C, and platform extensions not defined by Posix. @anchor{AC_USE_SYSTEM_EXTENSIONS} @defmac AC_USE_SYSTEM_EXTENSIONS @acindex{USE_SYSTEM_EXTENSIONS} -@cvindex _GNU_SOURCE -@cvindex _ALL_SOURCE -@cvindex _DARWIN_C_SOURCE -@cvindex _MINIX -@cvindex _NETBSD_SOURCE -@cvindex _POSIX_1_SOURCE -@cvindex _POSIX_PTHREAD_SEMANTICS -@cvindex _POSIX_SOURCE -@cvindex _TANDEM_SOURCE -@cvindex _XOPEN_SOURCE -@cvindex __EXTENSIONS__ -@cvindex __STDC_WANT_IEC_60559_BFP_EXT__ -@cvindex __STDC_WANT_IEC_60559_FUNCS_EXT__ -@cvindex __STDC_WANT_LIB_EXT2__ If possible, enable extensions to C or Posix on hosts that normally disable the extensions, typically due to standards-conformance namespace issues. This should be @@ -8637,42 +8624,74 @@ preprocessor macros are defined where appropriate: @table @code @item _GNU_SOURCE +@cvindex _GNU_SOURCE Enable extensions on GNU/Linux. @item _ALL_SOURCE +@cvindex _ALL_SOURCE Enable extensions for AIX 3, and for Interix. @item _DARWIN_C_SOURCE +@cvindex _DARWIN_C_SOURCE Enable extensions for macOS. @item _MINIX +@cvindex _MINIX Identify Minix platform. This particular preprocessor macro is obsolescent, and may be removed in a future release of Autoconf. @item _NETBSD_SOURCE +@cvindex _NETBSD_SOURCE Enable NetBSD-related extensions for Minix. @item _POSIX_1_SOURCE +@cvindex _POSIX_1_SOURCE Enable additional Posix functions for Minix. @item _POSIX_PTHREAD_SEMANTICS +@cvindex _POSIX_PTHREAD_SEMANTICS Enable threading extensions on Solaris. @item _POSIX_SOURCE +@cvindex _POSIX_SOURCE Enable Posix functions for Minix. @item _TANDEM_SOURCE +@cvindex _TANDEM_SOURCE Enable extensions for the HP NonStop platform. @item _XOPEN_SOURCE +@cvindex _XOPEN_SOURCE Enable X/Open extensions for HP-UX. @item __EXTENSIONS__ +@cvindex __EXTENSIONS__ Enable general extensions on Solaris. +@item __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +@cvindex __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +Enable extensions specified by ISO/IEC TS 18661-5:2014. @item __STDC_WANT_IEC_60559_BFP_EXT__ +@cvindex __STDC_WANT_IEC_60559_BFP_EXT__ Enable extensions specified by ISO/IEC TS 18661-1:2014. +@item __STDC_WANT_IEC_60559_DFP_EXT__ +@cvindex __STDC_WANT_IEC_60559_DFP_EXT__ +Enable extensions specified by ISO/IEC TS 18661-2:2015. @item __STDC_WANT_IEC_60559_FUNCS_EXT__ +@cvindex __STDC_WANT_IEC_60559_FUNCS_EXT__ Enable extensions specified by ISO/IEC TS 18661-4:2015. +@item __STDC_WANT_IEC_60559_TYPES_EXT__ +@cvindex __STDC_WANT_IEC_60559_TYPES_EXT__ +Enable extensions specified by ISO/IEC TS 18661-3:2015. @item __STDC_WANT_LIB_EXT2__ +@cvindex __STDC_WANT_LIB_EXT2__ Enable extensions specified by ISO/IEC TR 24731-2:2010. +@item __STDC_WANT_MATH_SPEC_FUNCS__ +@cvindex __STDC_WANT_MATH_SPEC_FUNCS__ +Enable extensions specified by ISO/IEC TR 24747:2009. @end table -The macro @code{__STDC_WANT_LIB_EXT1__} is not defined, as C11 Annex K -is problematic. See: O'Donell C, Sebor M. +@cvindex __STDC_WANT_DEC_FP__ +The C preprocessor macro @code{__STDC_WANT_DEC_FP__} is not defined. +ISO/IEC TR 24732:2009 was superseded by ISO/IEC TS 18661-2:2015. + +@cvindex __STDC_WANT_LIB_EXT1__ +The C preprocessor macro @code{__STDC_WANT_LIB_EXT1__} is not defined, +as C11 Annex K is problematic. See: O'Donell C, Sebor M. @uref{http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1967.htm, Field Experience With Annex K---Bounds Checking Interfaces}. -This macro was introduced in Autoconf 2.60. +The Autoconf macro @code{AC_USE_SYSTEM_EXTENSIONS} was introduced in +Autoconf 2.60. @end defmac diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4 index ad77be8d..db47fbb0 100644 --- a/lib/autoconf/specific.m4 +++ b/lib/autoconf/specific.m4 @@ -399,18 +399,34 @@ dnl configure.ac when using autoheader 2.62. #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif /* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ #ifndef __STDC_WANT_IEC_60559_BFP_EXT__ # undef __STDC_WANT_IEC_60559_BFP_EXT__ #endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ # undef __STDC_WANT_IEC_60559_FUNCS_EXT__ #endif +/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif /* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ #ifndef __STDC_WANT_LIB_EXT2__ # undef __STDC_WANT_LIB_EXT2__ #endif +/* Enable extensions specified by ISO/IEC TR 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE @@ -440,9 +456,13 @@ dnl configure.ac when using autoheader 2.62. AC_DEFINE([_DARWIN_C_SOURCE]) AC_DEFINE([_GNU_SOURCE]) AC_DEFINE([_POSIX_PTHREAD_SEMANTICS]) + AC_DEFINE([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_BFP_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_DFP_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_FUNCS_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_TYPES_EXT__]) AC_DEFINE([__STDC_WANT_LIB_EXT2__]) + AC_DEFINE([__STDC_WANT_MATH_SPEC_FUNCS__]) AC_DEFINE([_TANDEM_SOURCE]) AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined], [ac_cv_should_define__xopen_source],