X-Git-Url: http://plrg.eecs.uci.edu/git/?p=libcds.git;a=blobdiff_plain;f=test%2FCMakeLists.txt;h=f39d88c0ff53b5d2e7e14d9fbe02b9ca20bccd39;hp=7cf4875906b2a089c42d2f164877e31c1e6de9f5;hb=6e082e4b12c3dff7c69d9e089fb3f33fc2395de5;hpb=39abc7398158e353b8aab234c6cc2574479ac05e diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 7cf48759..f39d88c0 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,15 +1,92 @@ +INCLUDE(CheckCXXSourceCompiles) + if (NOT GTEST_INCLUDE_DIRS) find_package(GTest REQUIRED) endif() -message("GTest: ${GTEST_INCLUDE_DIRS}, lib: ${GTEST_LIBRARY}") +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})