Index: include/core/SkFloatingPoint.h |
diff --git a/include/core/SkFloatingPoint.h b/include/core/SkFloatingPoint.h |
index 93d479cf8709e91138196854574d2f852ec02604..2df8f9bf65e258e6e5164f9d5182bfd378797d81 100644 |
--- a/include/core/SkFloatingPoint.h |
+++ b/include/core/SkFloatingPoint.h |
@@ -31,7 +31,9 @@ static inline float sk_float_pow(float base, float exp) { |
static inline float sk_float_copysign(float x, float y) { |
// c++11 contains a 'float copysign(float, float)' function in <cmath>. |
-#if (!defined(_MSC_VER) && __cplusplus >= 201103L) || (defined(_MSC_VER) && _MSC_VER >= 1800) |
+// clang-cl reports __cplusplus for clang, not the __cplusplus vc++ version _MSC_VER would report. |
+#define SK_BUILD_WITH_CLANG_CL (defined(_MSC_VER) && defined(__clang__)) |
+#if (!SK_BUILD_WITH_CLANG_CL && __cplusplus >= 201103L) || (defined(_MSC_VER) && _MSC_VER >= 1800) |
return copysign(x, y); |
// Posix has demanded 'float copysignf(float, float)' (from C99) since Issue 6. |