• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1FIND_PACKAGE(Threads)
2
3option(RX_USE_EXCEPTIONS "Use C++ exceptions" ON)
4
5# define some compiler settings
6
7MESSAGE( STATUS "CMAKE_CXX_COMPILER_ID: " ${CMAKE_CXX_COMPILER_ID} )
8
9if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
10    MESSAGE( STATUS "clang compiler version: " ${CMAKE_CXX_COMPILER_VERSION} )
11    MESSAGE( STATUS "using clang settings" )
12    set(RX_COMPILE_OPTIONS
13        -Wall -Wextra -Werror -Wunused
14        -stdlib=libc++
15        -Wno-error=unused-command-line-argument
16        -ftemplate-depth=1024
17        )
18    if (NOT RX_USE_EXCEPTIONS)
19        MESSAGE( STATUS "no exceptions" )
20        list(APPEND RX_COMPILE_OPTIONS -fno-exceptions)
21    endif()
22elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
23    MESSAGE( STATUS "gnu compiler version: " ${CMAKE_CXX_COMPILER_VERSION} )
24    MESSAGE( STATUS "using gnu settings" )
25    set(RX_COMPILE_OPTIONS
26        -Wall -Wextra -Werror -Wunused
27        )
28    if (NOT RX_USE_EXCEPTIONS)
29        MESSAGE( STATUS "no exceptions" )
30        list(APPEND RX_COMPILE_OPTIONS -fno-exceptions)
31    endif()
32  elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
33    MESSAGE( STATUS "msvc compiler version: " ${CMAKE_CXX_COMPILER_VERSION} )
34    MESSAGE( STATUS "using msvc settings" )
35    set(RX_COMPILE_OPTIONS
36        /W4 /WX
37        /wd4503 # truncated symbol
38        /wd4702 # unreachable code
39        /bigobj
40        /DUNICODE /D_UNICODE # it is a new millenium
41        )
42    if (NOT RX_USE_EXCEPTIONS)
43        MESSAGE( STATUS "no exceptions" )
44        list(APPEND RX_COMPILE_OPTIONS /EHs-c-)
45    endif()
46    if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.0.23506.0")
47        MESSAGE( STATUS "with coroutines" )
48        list(APPEND RX_COMPILE_OPTIONS
49            /await # enable coroutines
50            )
51    endif()
52endif()
53
54set(RX_COMPILE_FEATURES
55    cxx_auto_type
56    cxx_nullptr
57    cxx_decltype
58    cxx_lambdas
59    cxx_range_for
60    cxx_right_angle_brackets
61    cxx_rvalue_references
62    cxx_static_assert
63    cxx_trailing_return_types
64    cxx_alias_templates
65    cxx_variadic_templates
66    cxx_template_template_parameters
67    )
68
69set(IX_SRC_DIR ${RXCPP_DIR}/Ix/CPP/src)
70set(RX_SRC_DIR ${RXCPP_DIR}/Rx/v2/src)
71set(RX_CATCH_DIR ${RXCPP_DIR}/ext/catch/single_include/catch2)
72