summaryrefslogtreecommitdiff
path: root/projects/CMake/shared.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'projects/CMake/shared.cmake')
-rw-r--r--projects/CMake/shared.cmake22
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)