diff options
Diffstat (limited to 'projects/CMake/shared.cmake')
-rw-r--r-- | projects/CMake/shared.cmake | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/projects/CMake/shared.cmake b/projects/CMake/shared.cmake index ac0d09c..f7f7a31 100644 --- a/projects/CMake/shared.cmake +++ b/projects/CMake/shared.cmake @@ -1,5 +1,7 @@ FIND_PACKAGE(Threads) +option(RX_USE_EXCEPTIONS "Use C++ exceptions" ON) + # define some compiler settings MESSAGE( STATUS "CMAKE_CXX_COMPILER_ID: " ${CMAKE_CXX_COMPILER_ID} ) @@ -13,13 +15,21 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") -Wno-error=unused-command-line-argument -ftemplate-depth=1024 ) + if (NOT RX_USE_EXCEPTIONS) + MESSAGE( STATUS "no exceptions" ) + list(APPEND RX_COMPILE_OPTIONS -fno-exceptions) + endif() elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU") MESSAGE( STATUS "gnu compiler version: " ${CMAKE_CXX_COMPILER_VERSION} ) MESSAGE( STATUS "using gnu settings" ) set(RX_COMPILE_OPTIONS -Wall -Wextra -Werror -Wunused ) -elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + if (NOT RX_USE_EXCEPTIONS) + MESSAGE( STATUS "no exceptions" ) + list(APPEND RX_COMPILE_OPTIONS -fno-exceptions) + endif() + elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") MESSAGE( STATUS "msvc compiler version: " ${CMAKE_CXX_COMPILER_VERSION} ) MESSAGE( STATUS "using msvc settings" ) set(RX_COMPILE_OPTIONS @@ -29,9 +39,13 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") /bigobj /DUNICODE /D_UNICODE # it is a new millenium ) + if (NOT RX_USE_EXCEPTIONS) + MESSAGE( STATUS "no exceptions" ) + list(APPEND RX_COMPILE_OPTIONS /EHs-c-) + endif() if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.0.23506.0") - set(RX_COMPILE_OPTIONS - ${RX_COMPILE_OPTIONS} + MESSAGE( STATUS "with coroutines" ) + list(APPEND RX_COMPILE_OPTIONS /await # enable coroutines ) endif() @@ -54,4 +68,4 @@ set(RX_COMPILE_FEATURES set(IX_SRC_DIR ${RXCPP_DIR}/Ix/CPP/src) set(RX_SRC_DIR ${RXCPP_DIR}/Rx/v2/src) -set(RX_CATCH_DIR ${RXCPP_DIR}/ext/catch/include) +set(RX_CATCH_DIR ${RXCPP_DIR}/ext/catch/single_include/catch2) |