diff options
-rw-r--r-- | BUILD.gn | 7 | ||||
-rw-r--r-- | gn/BUILD.gn | 7 | ||||
-rw-r--r-- | gn/tests.gni | 1 | ||||
-rw-r--r-- | tests/ExceptionTest.cpp | 19 |
4 files changed, 33 insertions, 1 deletions
@@ -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); +} |