From 295d06c847db4db6ca71463d9da6f6436eec1c3f Mon Sep 17 00:00:00 2001 From: keithmarshall <keithmarshall> Date: Sun, 25 Jul 2010 20:20:46 +0000 Subject: [PATCH] Accept that mingwrt headers are not guaranteed to precede GCC's in the system include search path; (issue reported by Mark Brand). --- ChangeLog | 14 ++++++++++++++ include/float.h | 36 ++++++++++++++++++++++++++---------- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index fe84a51..5f106e6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2010-07-25 Keith Marshall <keithmarshall@users.sourceforge.net> + + Accept that mingwrt headers are not guaranteed to precede GCC's in the + system include search path; (issue reported by Mark Brand). + + * include/float.h: Add multiple inclusion guard around... + [! defined _FLOAT_H___]: ...include_next <float.h> for GCC's version, + only when this define does not indicate that it has already been seen; + update comments to document rationale; move it within the scope of... + [! defined _MINGW_FLOAT_H_]: ...this multiple inclusion guard, so that + GCC's float.h, after an appropriate complementary modification, need + not perform a further include path search when this implementation + specific extension has already been processed. + 2010-03-06 Chris Sutcliffe <ir0nh34d@users.sourceforge.net> * include/_mingw.h: Increment version to 3.18. diff --git a/include/float.h b/include/float.h index 97a2c1c..d5f2215 100644 --- a/include/float.h +++ b/include/float.h @@ -1,5 +1,7 @@ +#ifndef _MINGW_FLOAT_H_ /* * float.h + * * This file has no copyright assigned and is placed in the Public Domain. * This file is a part of the mingw-runtime package. * No warranty is given; refer to the file DISCLAIMER within the package. @@ -9,17 +11,31 @@ * Also included here are some non-ANSI bits for accessing the floating * point controller. * - * NOTE: GCC provides float.h, but it doesn't include the non-standard - * stuff for accessing the fp controller. We include_next the - * GCC-supplied header and just define the MS-specific extensions - * here. - * */ - -#include_next<float.h> - -#ifndef _MINGW_FLOAT_H_ #define _MINGW_FLOAT_H_ +/* + * NOTE: + * + * GCC provides float.h, but it doesn't include the non-standard stuff for + * accessing the fp controller. We parse the GCC-supplied header, for its + * standard content, and then define the MS-specific extensions here. + * + * In a MinGW standard Win32 hosted environment, this should be the float.h + * found by a system include path search, but this can't be guaranteed; for + * a cross-compiler setup, the GCC-supplied header, which is guarded by the + * _FLOAT_H___ macro, may be found first, thus... + * + */ +#ifndef _FLOAT_H___ + /* + * ...when we didn't find the GCC-supplied header first, we want to pull + * it in now; include_next should achieve this, (and we must rely on the + * GCC header maintainers to extend us the same courtesy, to get this one + * pulled in, when the GCC-supplied header is found first). + * + */ +# include_next <float.h> +#endif /* All the headers include this file. */ #include <_mingw.h> @@ -148,5 +164,5 @@ _CRTIMP int __cdecl __MINGW_NOTHROW _isnan (double); #endif /* Not __STRICT_ANSI__ */ -#endif /* _FLOAT_H_ */ +#endif /* _MINGW_FLOAT_H_ */ -- 1.7.6