[Mesa-dev] Mesa (master): mesa: Move C99 MSVC compatibility code from u_math.h to c99_compat.h.

Brian Paul brianp at vmware.com
Mon Feb 23 12:24:46 PST 2015


Looks like two things are needed.

1. replace INLINE with inline

2. #include math.h at the top of c99_copmat.h so that we get prototypes 
for floorf(), etc. to prevent a bunch of warnings where floorf() is 
called.  This kind of feels wrong.  Maybe there should be a c99_math.h 
wrapper for math.h.

-Brian


On 02/23/2015 01:00 PM, Brian Paul wrote:
> This broke the MSVC build for me.  I'll try to sort it out...
>
> -Brian
>
> On 02/23/2015 11:50 AM, Matt Turner wrote:
>> Module: Mesa
>> Branch: master
>> Commit: 5a191f49ad084e728122fed83bd7511817e66831
>> URL:
>> https://urldefense.proofpoint.com/v2/url?u=http-3A__cgit.freedesktop.org_mesa_mesa_commit_-3Fid-3D5a191f49ad084e728122fed83bd7511817e66831&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=tR_ciG-9V28cwPkoyOQIn4nmnQFvPn_ubMTmrF4tZOo&s=xxgui1WFrwmb6HgxPPtS-Z_F1NrTAfJrPtCl6TSxFCM&e=
>>
>>
>> Author: Matt Turner <mattst88 at gmail.com>
>> Date:   Fri Feb 20 18:32:05 2015 -0800
>>
>> mesa: Move C99 MSVC compatibility code from u_math.h to c99_compat.h.
>>
>> Reviewed-by: Jose Fonseca <jfonseca at vmware.com>
>>
>> ---
>>
>>   include/c99_compat.h                |  143
>> +++++++++++++++++++++++++++++++++++
>>   src/gallium/auxiliary/util/u_math.h |  143
>> -----------------------------------
>>   2 files changed, 143 insertions(+), 143 deletions(-)
>>
>> diff --git a/include/c99_compat.h b/include/c99_compat.h
>> index e5d0ae4..5852015 100644
>> --- a/include/c99_compat.h
>> +++ b/include/c99_compat.h
>> @@ -138,4 +138,147 @@ test_c99_compat_h(const void * restrict a,
>>   #endif
>>
>>
>> +#if defined(_MSC_VER)
>> +
>> +#if _MSC_VER < 1400 && !defined(__cplusplus)
>> +
>> +static INLINE float cosf( float f )
>> +{
>> +   return (float) cos( (double) f );
>> +}
>> +
>> +static INLINE float sinf( float f )
>> +{
>> +   return (float) sin( (double) f );
>> +}
>> +
>> +static INLINE float ceilf( float f )
>> +{
>> +   return (float) ceil( (double) f );
>> +}
>> +
>> +static INLINE float floorf( float f )
>> +{
>> +   return (float) floor( (double) f );
>> +}
>> +
>> +static INLINE float powf( float f, float g )
>> +{
>> +   return (float) pow( (double) f, (double) g );
>> +}
>> +
>> +static INLINE float sqrtf( float f )
>> +{
>> +   return (float) sqrt( (double) f );
>> +}
>> +
>> +static INLINE float fabsf( float f )
>> +{
>> +   return (float) fabs( (double) f );
>> +}
>> +
>> +static INLINE float logf( float f )
>> +{
>> +   return (float) log( (double) f );
>> +}
>> +
>> +#else
>> +/* Work-around an extra semi-colon in VS 2005 logf definition */
>> +#ifdef logf
>> +#undef logf
>> +#define logf(x) ((float)log((double)(x)))
>> +#endif /* logf */
>> +
>> +#if _MSC_VER < 1800
>> +#define isfinite(x) _finite((double)(x))
>> +#define isnan(x) _isnan((double)(x))
>> +#endif /* _MSC_VER < 1800 */
>> +#endif /* _MSC_VER < 1400 && !defined(__cplusplus) */
>> +
>> +#if _MSC_VER < 1800
>> +static INLINE double log2( double x )
>> +{
>> +   const double invln2 = 1.442695041;
>> +   return log( x ) * invln2;
>> +}
>> +
>> +static INLINE double
>> +round(double x)
>> +{
>> +   return x >= 0.0 ? floor(x + 0.5) : ceil(x - 0.5);
>> +}
>> +
>> +static INLINE float
>> +roundf(float x)
>> +{
>> +   return x >= 0.0f ? floorf(x + 0.5f) : ceilf(x - 0.5f);
>> +}
>> +#endif
>> +
>> +#ifndef INFINITY
>> +#define INFINITY (DBL_MAX + DBL_MAX)
>> +#endif
>> +
>> +#ifndef NAN
>> +#define NAN (INFINITY - INFINITY)
>> +#endif
>> +
>> +#endif /* _MSC_VER */
>> +
>> +
>> +#if __STDC_VERSION__ < 199901L && (!defined(__cplusplus) ||
>> defined(_MSC_VER))
>> +static INLINE long int
>> +lrint(double d)
>> +{
>> +   long int rounded = (long int)(d + 0.5);
>> +
>> +   if (d - floor(d) == 0.5) {
>> +      if (rounded % 2 != 0)
>> +         rounded += (d > 0) ? -1 : 1;
>> +   }
>> +
>> +   return rounded;
>> +}
>> +
>> +static INLINE long int
>> +lrintf(float f)
>> +{
>> +   long int rounded = (long int)(f + 0.5f);
>> +
>> +   if (f - floorf(f) == 0.5f) {
>> +      if (rounded % 2 != 0)
>> +         rounded += (f > 0) ? -1 : 1;
>> +   }
>> +
>> +   return rounded;
>> +}
>> +
>> +static INLINE long long int
>> +llrint(double d)
>> +{
>> +   long long int rounded = (long long int)(d + 0.5);
>> +
>> +   if (d - floor(d) == 0.5) {
>> +      if (rounded % 2 != 0)
>> +         rounded += (d > 0) ? -1 : 1;
>> +   }
>> +
>> +   return rounded;
>> +}
>> +
>> +static INLINE long long int
>> +llrintf(float f)
>> +{
>> +   long long int rounded = (long long int)(f + 0.5f);
>> +
>> +   if (f - floorf(f) == 0.5f) {
>> +      if (rounded % 2 != 0)
>> +         rounded += (f > 0) ? -1 : 1;
>> +   }
>> +
>> +   return rounded;
>> +}
>> +#endif /* C99 */
>> +
>> +
>>   #endif /* _C99_COMPAT_H_ */
>> diff --git a/src/gallium/auxiliary/util/u_math.h
>> b/src/gallium/auxiliary/util/u_math.h
>> index d6e83f9..dd2ce01 100644
>> --- a/src/gallium/auxiliary/util/u_math.h
>> +++ b/src/gallium/auxiliary/util/u_math.h
>> @@ -60,149 +60,6 @@ extern "C" {
>>   #define M_SQRT2 1.41421356237309504880
>>   #endif
>>
>> -
>> -#if defined(_MSC_VER)
>> -
>> -#if _MSC_VER < 1400 && !defined(__cplusplus)
>> -
>> -static INLINE float cosf( float f )
>> -{
>> -   return (float) cos( (double) f );
>> -}
>> -
>> -static INLINE float sinf( float f )
>> -{
>> -   return (float) sin( (double) f );
>> -}
>> -
>> -static INLINE float ceilf( float f )
>> -{
>> -   return (float) ceil( (double) f );
>> -}
>> -
>> -static INLINE float floorf( float f )
>> -{
>> -   return (float) floor( (double) f );
>> -}
>> -
>> -static INLINE float powf( float f, float g )
>> -{
>> -   return (float) pow( (double) f, (double) g );
>> -}
>> -
>> -static INLINE float sqrtf( float f )
>> -{
>> -   return (float) sqrt( (double) f );
>> -}
>> -
>> -static INLINE float fabsf( float f )
>> -{
>> -   return (float) fabs( (double) f );
>> -}
>> -
>> -static INLINE float logf( float f )
>> -{
>> -   return (float) log( (double) f );
>> -}
>> -
>> -#else
>> -/* Work-around an extra semi-colon in VS 2005 logf definition */
>> -#ifdef logf
>> -#undef logf
>> -#define logf(x) ((float)log((double)(x)))
>> -#endif /* logf */
>> -
>> -#if _MSC_VER < 1800
>> -#define isfinite(x) _finite((double)(x))
>> -#define isnan(x) _isnan((double)(x))
>> -#endif /* _MSC_VER < 1800 */
>> -#endif /* _MSC_VER < 1400 && !defined(__cplusplus) */
>> -
>> -#if _MSC_VER < 1800
>> -static INLINE double log2( double x )
>> -{
>> -   const double invln2 = 1.442695041;
>> -   return log( x ) * invln2;
>> -}
>> -
>> -static INLINE double
>> -round(double x)
>> -{
>> -   return x >= 0.0 ? floor(x + 0.5) : ceil(x - 0.5);
>> -}
>> -
>> -static INLINE float
>> -roundf(float x)
>> -{
>> -   return x >= 0.0f ? floorf(x + 0.5f) : ceilf(x - 0.5f);
>> -}
>> -#endif
>> -
>> -#ifndef INFINITY
>> -#define INFINITY (DBL_MAX + DBL_MAX)
>> -#endif
>> -
>> -#ifndef NAN
>> -#define NAN (INFINITY - INFINITY)
>> -#endif
>> -
>> -#endif /* _MSC_VER */
>> -
>> -
>> -#if __STDC_VERSION__ < 199901L && (!defined(__cplusplus) ||
>> defined(_MSC_VER))
>> -static INLINE long int
>> -lrint(double d)
>> -{
>> -   long int rounded = (long int)(d + 0.5);
>> -
>> -   if (d - floor(d) == 0.5) {
>> -      if (rounded % 2 != 0)
>> -         rounded += (d > 0) ? -1 : 1;
>> -   }
>> -
>> -   return rounded;
>> -}
>> -
>> -static INLINE long int
>> -lrintf(float f)
>> -{
>> -   long int rounded = (long int)(f + 0.5f);
>> -
>> -   if (f - floorf(f) == 0.5f) {
>> -      if (rounded % 2 != 0)
>> -         rounded += (f > 0) ? -1 : 1;
>> -   }
>> -
>> -   return rounded;
>> -}
>> -
>> -static INLINE long long int
>> -llrint(double d)
>> -{
>> -   long long int rounded = (long long int)(d + 0.5);
>> -
>> -   if (d - floor(d) == 0.5) {
>> -      if (rounded % 2 != 0)
>> -         rounded += (d > 0) ? -1 : 1;
>> -   }
>> -
>> -   return rounded;
>> -}
>> -
>> -static INLINE long long int
>> -llrintf(float f)
>> -{
>> -   long long int rounded = (long long int)(f + 0.5f);
>> -
>> -   if (f - floorf(f) == 0.5f) {
>> -      if (rounded % 2 != 0)
>> -         rounded += (f > 0) ? -1 : 1;
>> -   }
>> -
>> -   return rounded;
>> -}
>> -#endif /* C99 */
>> -
>>   #define POW2_TABLE_SIZE_LOG2 9
>>   #define POW2_TABLE_SIZE (1 << POW2_TABLE_SIZE_LOG2)
>>   #define POW2_TABLE_OFFSET (POW2_TABLE_SIZE/2)
>>
>> _______________________________________________
>> mesa-commit mailing list
>> mesa-commit at lists.freedesktop.org
>> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Dcommit&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=tR_ciG-9V28cwPkoyOQIn4nmnQFvPn_ubMTmrF4tZOo&s=OMt6RSK33tDkOC7vN70WpLgRnK6DFgj95zHDOoeo4dM&e=
>>
>>
>



More information about the mesa-dev mailing list