Add an option to make Exceptions enabled (#2239)
authornihui <shuizhuyuanluo@126.com>
Thu, 21 May 2020 05:55:24 +0000 (13:55 +0800)
committerGitHub <noreply@github.com>
Thu, 21 May 2020 05:55:24 +0000 (23:55 -0600)
* Add an option to make Exceptions enabled

* /EHsc enable exceptions since vs2003

CMakeLists.txt

index cd9baf8..4f095ac 100644 (file)
@@ -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)