Compile with VS2015.
authorbungeman <bungeman@google.com>
Tue, 21 Jul 2015 21:14:30 +0000 (14:14 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 21 Jul 2015 21:14:30 +0000 (14:14 -0700)
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

gyp/common_conditions.gypi
include/core/SkFloatingPoint.h
samplecode/SampleRegion.cpp

index b088b7a06df79f4570035f96fe118b132d92a51b..ba4337403d99621a1c1ed291715a1c919cd459b5 100644 (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
index 432f53d22aa07580a4a14d0f58d13e55214ac281..ad1669c4ee3ade7a0aaaaf9589bda4bc80fcb839 100644 (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
index 3c5fc2e35cf0ac445c387b6f0373ac959b2b6cfc..80478443071911218151ebd1bdcb80539fbdac39 100644 (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[]) {