| 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} ) |
| |
| if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") |
| MESSAGE( STATUS "clang compiler version: " ${CMAKE_CXX_COMPILER_VERSION} ) |
| MESSAGE( STATUS "using clang settings" ) |
| set(RX_COMPILE_OPTIONS |
| -Wall -Wextra -Werror -Wunused |
| -stdlib=libc++ |
| -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 |
| ) |
| 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 |
| /W4 /WX |
| /wd4503 # truncated symbol |
| /wd4702 # unreachable code |
| /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") |
| MESSAGE( STATUS "with coroutines" ) |
| list(APPEND RX_COMPILE_OPTIONS |
| /await # enable coroutines |
| ) |
| endif() |
| endif() |
| |
| set(RX_COMPILE_FEATURES |
| cxx_auto_type |
| cxx_nullptr |
| cxx_decltype |
| cxx_lambdas |
| cxx_range_for |
| cxx_right_angle_brackets |
| cxx_rvalue_references |
| cxx_static_assert |
| cxx_trailing_return_types |
| cxx_alias_templates |
| cxx_variadic_templates |
| cxx_template_template_parameters |
| ) |
| |
| 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/single_include/catch2) |