aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--BUILD.gn7
-rw-r--r--gn/BUILD.gn7
-rw-r--r--gn/tests.gni1
-rw-r--r--tests/ExceptionTest.cpp19
4 files changed, 33 insertions, 1 deletions
diff --git a/BUILD.gn b/BUILD.gn
index afa38a1520..d7a179dc21 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -883,6 +883,9 @@ if (skia_enable_tools) {
":skia_private",
]
+ configs -= [ "//gn:no_exceptions" ]
+ configs += [ "//gn:yes_exceptions" ]
+
if (!defined(deps)) {
deps = []
}
@@ -896,6 +899,8 @@ if (skia_enable_tools) {
shared_library("lib" + target_name) {
forward_variables_from(invoker, "*", [ "is_shared_library" ])
configs += [ ":skia_private" ]
+ configs -= [ "//gn:no_exceptions" ]
+ configs += [ "//gn:yes_exceptions" ]
testonly = true
}
} else {
@@ -903,6 +908,8 @@ if (skia_enable_tools) {
executable(_executable) {
forward_variables_from(invoker, "*", [ "is_shared_library" ])
configs += [ ":skia_private" ]
+ configs -= [ "//gn:no_exceptions" ]
+ configs += [ "//gn:yes_exceptions" ]
testonly = true
}
}
diff --git a/gn/BUILD.gn b/gn/BUILD.gn
index 7be1617d23..06cff4e4a7 100644
--- a/gn/BUILD.gn
+++ b/gn/BUILD.gn
@@ -258,11 +258,16 @@ config("default") {
}
config("no_exceptions") {
- # Exceptions are disabled by default on Windows. (Use /EHsc to enable them.)
+ # Exceptions are disabled by default on Windows. (Use :yes_exceptions to enable them.)
if (!is_win) {
cflags_cc = [ "-fno-exceptions" ]
}
}
+config("yes_exceptions") {
+ if (is_win) {
+ cflags_cc = [ "/EHsc" ]
+ }
+}
config("warnings") {
cflags = []
diff --git a/gn/tests.gni b/gn/tests.gni
index c2f3759cd2..51d1d08ce7 100644
--- a/gn/tests.gni
+++ b/gn/tests.gni
@@ -62,6 +62,7 @@ tests_sources = [
"$_tests/EGLImageTest.cpp",
"$_tests/EmptyPathTest.cpp",
"$_tests/EncodeTest.cpp",
+ "$_tests/ExceptionTest.cpp",
"$_tests/ExifTest.cpp",
"$_tests/F16StagesTest.cpp",
"$_tests/FillPathTest.cpp",
diff --git a/tests/ExceptionTest.cpp b/tests/ExceptionTest.cpp
new file mode 100644
index 0000000000..85e6dcae65
--- /dev/null
+++ b/tests/ExceptionTest.cpp
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Test.h"
+
+// Just a little meta-test that our test tools can compile and link with exceptions enabled.
+DEF_TEST(Exceptions, r) {
+ bool exception_caught = false;
+ try {
+ throw 42;
+ } catch (...) {
+ exception_caught = true;
+ }
+ REPORTER_ASSERT(r, exception_caught);
+}