X-Git-Url: http://plrg.eecs.uci.edu/git/?p=libcds.git;a=blobdiff_plain;f=test%2FCMakeLists.txt;h=f39d88c0ff53b5d2e7e14d9fbe02b9ca20bccd39;hp=730a3072d1e296bbdb62093f2688b799b2438623;hb=10fe1d7dbfa253d4c2e2a965611ac5a655ecff32;hpb=7448008aa977fe42a83738fbbc63ce11d8ab86f9 diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 730a3072..f39d88c0 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,12 +1,92 @@ -find_package(GTest REQUIRED) +INCLUDE(CheckCXXSourceCompiles) + +if (NOT GTEST_INCLUDE_DIRS) + find_package(GTest REQUIRED) +endif() +message("GTest: ${GTEST_INCLUDE_DIRS}, lib: ${GTEST_LIBRARIES}") include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/include ${GTEST_INCLUDE_DIRS} ) +set(CDS_TEST_LIBRARIES + ${CDS_SHARED_LIBRARY} + ${GTEST_LIBRARIES} + ${Boost_THREAD_LIBRARY} + ${Boost_SYSTEM_LIBRARY} + ${CMAKE_THREAD_LIBS_INIT} + ${EXTERNAL_SYSTEM_LIBS} +) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_LANG_CXX11") - -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/unit) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/stress) + +# Check if gtest INSTANTIATE_TEST_CASE_P macro supports 4th arg +# The optional last argument to INSTANTIATE_TEST_CASE_P allows the user +# to specify a function or functor that generates custom test name suffixes +# based on the test parameters. The function should accept one argument of +# type testing::TestParamInfo, and return std::string. +set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) +set(OLD_CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES}) +set(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) +set(CMAKE_REQUIRED_FLAGS "-DGTEST_USE_OWN_TR1_TUPLE ${CMAKE_EXE_LINKER_FLAGS}") +set(CMAKE_REQUIRED_INCLUDES ${GTEST_INCLUDE_DIRS} ) +set(CMAKE_REQUIRED_LIBRARIES ${GTEST_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${EXTERNAL_SYSTEM_LIBS} ) +CHECK_CXX_SOURCE_COMPILES(" +#include +class fixture: public ::testing::Test, public ::testing::WithParamInterface< int > +{ +public: + static std::vector< int > get_test_parameters() + { + std::vector< int > v{ 1, 2 }; + return v; + } + static std::string get_test_parameter_name( ::testing::TestParamInfo const& ) + { + return std::string(); + } +}; + +INSTANTIATE_TEST_CASE_P( a, + fixture, + ::testing::ValuesIn( fixture::get_test_parameters()), + fixture::get_test_parameter_name ); + +int main( int argc, char **argv ) +{ + ::testing::InitGoogleTest( &argc, argv ); + return RUN_ALL_TESTS(); +} +" GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG ) +set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS}) +set(CMAKE_REQUIRED_INCLUDES ${OLD_CMAKE_REQUIRED_INCLUDES}) +set(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES}) + +if(GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_LANG_CXX11 -DCDSTEST_GTEST_INSTANTIATE_TEST_CASE_P_HAS_4TH_ARG") +endif() + +# Check if there is byteswap.h (needed for cityhash) +CHECK_CXX_SOURCE_COMPILES(" +#include +int main( int argc, char **argv ) +{ + return 0; +} +" CDSTEST_HAVE_BYTESWAP_H ) + +if(CDSTEST_HAVE_BYTESWAP_H) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCDSTEST_HAVE_BYTESWAP_H") +endif() + +if(ENABLE_UNIT_TEST) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/unit) +endif() +if(ENABLE_STRESS_TEST) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/stress) +endif() + +file(GLOB SANITIZER_OPTION_FILES ${PROJECT_SOURCE_DIR}/tools/tsan-suppression) +file(COPY ${SANITIZER_OPTION_FILES} DESTINATION ${EXECUTABLE_OUTPUT_PATH})