From 044113abe8c21851897cac51abe55af775887e85 Mon Sep 17 00:00:00 2001 From: nihui Date: Thu, 21 May 2020 13:55:24 +0800 Subject: [PATCH] Add an option to make Exceptions enabled (#2239) * Add an option to make Exceptions enabled * /EHsc enable exceptions since vs2003 --- CMakeLists.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cd9baf8442..4f095acf41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,7 @@ CMAKE_DEPENDENT_OPTION(ENABLE_HLSL OFF) option(ENABLE_RTTI "Enables RTTI" OFF) +option(ENABLE_EXCEPTIONS "Enables Exceptions" OFF) option(ENABLE_OPT "Enables spirv-opt capability if present" ON) option(ENABLE_PCH "Enables Precompiled header" ON) option(ENABLE_CTEST "Enables testing" ON) @@ -121,6 +122,9 @@ if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") if(NOT ENABLE_RTTI) add_compile_options(-fno-rtti) endif() + if(NOT ENABLE_EXCEPTIONS) + add_compile_options(-fno-exceptions) + endif() if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0.0") add_compile_options(-Werror=deprecated-copy) endif() @@ -131,17 +135,23 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) if(NOT ENABLE_RTTI) add_compile_options(-fno-rtti) endif() + if(NOT ENABLE_EXCEPTIONS) + add_compile_options(-fno-exceptions) + endif() elseif(MSVC) if(NOT ENABLE_RTTI) add_compile_options(/GR-) # Disable RTTI endif() + if(ENABLE_EXCEPTIONS) + add_compile_options(/EHsc) # Enable Exceptions + endif() endif() if(ENABLE_GLSLANG_JS) if(MSVC) add_compile_options(/Os /GR-) else() - add_compile_options(-Os -fno-exceptions) + add_compile_options(-Os -fno-rtti -fno-exceptions) if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) add_compile_options(-Wno-unused-parameter) add_compile_options(-Wno-unused-variable -Wno-unused-const-variable)