2 INCLUDE(CheckCXXSourceCompiles)
4 if (NOT GTEST_INCLUDE_DIRS)
5 find_package(GTest REQUIRED)
7 message("GTest: ${GTEST_INCLUDE_DIRS}, lib: ${GTEST_LIBRARIES}")
10 ${CMAKE_CURRENT_SOURCE_DIR}/include
14 set(CDS_TEST_LIBRARIES
17 ${Boost_THREAD_LIBRARY}
18 ${Boost_SYSTEM_LIBRARY}
19 ${CMAKE_THREAD_LIBS_INIT}
20 ${EXTERNAL_SYSTEM_LIBS}
23 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_LANG_CXX11")
25 # Check if gtest INSTANTIATE_TEST_CASE_P macro supports 4th arg
26 # The optional last argument to INSTANTIATE_TEST_CASE_P allows the user
27 # to specify a function or functor that generates custom test name suffixes
28 # based on the test parameters. The function should accept one argument of
29 # type testing::TestParamInfo<class ParamType>, and return std::string.
30 set(CMAKE_REQUIRED_FLAGS "-DGTEST_USE_OWN_TR1_TUPLE ${CMAKE_EXE_LINKER_FLAGS}")
31 set(CMAKE_REQUIRED_INCLUDES ${GTEST_INCLUDE_DIRS} )
32 set(CMAKE_REQUIRED_LIBRARIES ${GTEST_LIBRARIES} ${EXTERNAL_SYSTEM_LIBS} )
33 CHECK_CXX_SOURCE_COMPILES("
34 #include <gtest/gtest.h>
35 class fixture: public ::testing::Test, public ::testing::WithParamInterface< int >
38 static std::vector< int > get_test_parameters()
40 std::vector< int > v{ 1, 2 };
43 static std::string get_test_parameter_name( ::testing::TestParamInfo<int> const& )
49 INSTANTIATE_TEST_CASE_P( a,
51 ::testing::ValuesIn( fixture::get_test_parameters()),
52 fixture::get_test_parameter_name );
54 int main( int argc, char **argv )
56 ::testing::InitGoogleTest( &argc, argv );
57 return RUN_ALL_TESTS();
59 " GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG )
61 if( GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG )
62 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_LANG_CXX11 -DCDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG")
65 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/unit)
66 add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/stress)
68 file(GLOB SANITIZER_OPTION_FILES ${PROJECT_SOURCE_DIR}/tools/tsan-suppression)
69 file(COPY ${SANITIZER_OPTION_FILES} DESTINATION ${EXECUTABLE_OUTPUT_PATH})