Compile with VS2015.

Visual Studio 2015 has additional warnings around noexcept and
disabling exceptions, which can be worked around with the
(undocumented) _HAS_EXCEPTIONS macro.

Visual Studio 2013 and 2015 have roundf in math.h, so use it to
avoid extra work and casts.

We avoid using cmath, as it undefs isfinite on gcc, but Visual Studio
2015 no longer provides overloads of copysign from math.h (which is
actually correct). As a result, use copysignf (which is available in
math.h in 2013 and 2015) directly.

Review URL: https://codereview.chromium.org/1244173005
This commit is contained in:
bungeman 2015-07-21 14:14:30 -07:00 committed by Commit bot
parent 7a787b4743
commit b7069e9c1f
3 changed files with 4 additions and 7 deletions

View File

@ -46,6 +46,7 @@
'SK_BUILD_FOR_WIN32',
'_CRT_SECURE_NO_WARNINGS',
'GR_GL_FUNCTION_TYPE=__stdcall',
'_HAS_EXCEPTIONS=0',
],
'msvs_disabled_warnings': [
4275, # An exported class was derived from a class that was not exported

View File

@ -38,7 +38,7 @@ static inline float sk_float_copysign(float x, float y) {
# define SK_BUILD_WITH_CLANG_CL 0
#endif
#if (!SK_BUILD_WITH_CLANG_CL && __cplusplus >= 201103L) || (_MSC_VER >= 1800)
return copysign(x, y);
return copysignf(x, y);
// Posix has demanded 'float copysignf(float, float)' (from C99) since Issue 6.
#elif defined(_POSIX_VERSION) && _POSIX_VERSION >= 200112L

View File

@ -1,4 +1,3 @@
/*
* Copyright 2011 Google Inc.
*
@ -15,6 +14,8 @@
#include "SkUtils.h"
#include "SkImageDecoder.h"
#include <math.h>
static void test_strokerect(SkCanvas* canvas) {
int width = 100;
int height = 100;
@ -115,11 +116,6 @@ static void test_text(SkCanvas* canvas) {
drawFadingText(canvas, str, len, x, y, paint);
}
#ifdef SK_BUILD_FOR_WIN
// windows doesn't have roundf
inline float roundf(float x) { return (x-floor(x))>0.5 ? ceil(x) : floor(x); }
#endif
#ifdef SK_DEBUG
static void make_rgn(SkRegion* rgn, int left, int top, int right, int bottom,
int count, int32_t runs[]) {