Browse Source

CMake: Disable C++ exceptions everywhere that doesn't request them

Sam Edwards 7 years ago
parent
commit
2c0b079dc9
2 changed files with 15 additions and 0 deletions
  1. 14 0
      CMakeLists.txt
  2. 1 0
      panda/src/pnmimagetypes/CMakeLists.txt

+ 14 - 0
CMakeLists.txt

@@ -77,6 +77,20 @@ if(WIN32)
   add_definitions(-D_CRT_SECURE_NO_WARNINGS)
 endif()
 
+# As long as we're figuring out compiler flags, figure out the flags for
+# turning C++ exception support on and off
+if(MSVC)
+  set(cxx_exceptions_on "/EHsc")
+  set(cxx_exceptions_off "/D_HAS_EXCEPTIONS=0")
+else()
+  set(cxx_exceptions_on "-fexceptions")
+  set(cxx_exceptions_off "-fno-exceptions")
+endif()
+set(cxx_exceptions_property "$<BOOL:$<TARGET_PROPERTY:CXX_EXCEPTIONS>>")
+add_compile_options(
+  "$<${cxx_exceptions_property}:${cxx_exceptions_on}>"
+  "$<$<NOT:${cxx_exceptions_property}>:${cxx_exceptions_off}>")
+
 # Include global modules needed for configure scripts
 include(PackageConfig)      # Defines package_option
 

+ 1 - 0
panda/src/pnmimagetypes/CMakeLists.txt

@@ -34,6 +34,7 @@ composite_sources(p3pnmimagetypes P3PNMIMAGETYPES_SOURCES)
 add_component_library(p3pnmimagetypes SYMBOL BUILDING_PANDA_PNMIMAGETYPES
   ${P3PNMIMAGETYPES_HEADERS} ${P3PNMIMAGETYPES_SOURCES})
 target_link_libraries(p3pnmimagetypes p3pnmimage PKG::JPEG PKG::TIFF PKG::PNG)
+set_target_properties(p3pnmimagetypes PROPERTIES CXX_EXCEPTIONS ON)
 
 if(NOT BUILD_METALIBS)
   install(TARGETS p3pnmimagetypes DESTINATION lib RUNTIME DESTINATION bin)