From 35dd9578aafcf7dd90681544a8c6dac7117050d0 Mon Sep 17 00:00:00 2001 From: Dennis Klein Date: Wed, 7 Nov 2018 21:04:01 +0100 Subject: [PATCH] Set C++17 when building OFI transport Improve ctest definitions --- CMakeLists.txt | 20 +++++------ cmake/FairMQLib.cmake | 8 ++--- cmake/GTestHelper.cmake | 18 ++++++++-- test/CMakeLists.txt | 39 +++++++++++---------- test/memory_resources/_memory_resources.cxx | 2 +- 5 files changed, 49 insertions(+), 38 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 50a073cf..e9dfa134 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ # copied verbatim in the file "LICENSE" # ################################################################################ -cmake_minimum_required(VERSION 3.9.4 FATAL_ERROR) +cmake_minimum_required(VERSION 3.10 FATAL_ERROR) # Project ###################################################################### @@ -19,6 +19,12 @@ get_git_version() project(FairMQ VERSION ${PROJECT_VERSION} LANGUAGES CXX) message(STATUS "${BWhite}${PROJECT_NAME}${CR} ${PROJECT_GIT_VERSION} from ${PROJECT_DATE}") +if(BUILD_OFI_TRANSPORT) + set(PROJECT_MIN_CXX_STANDARD 17) +else() + set(PROJECT_MIN_CXX_STANDARD 11) +endif() + set_fairmq_defaults() include(CTest) @@ -48,14 +54,6 @@ set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE) find_package(Threads REQUIRED) -if(BUILD_FAIRMQ) - find_package2(PUBLIC Boost VERSION 1.64 REQUIRED - COMPONENTS container program_options thread system filesystem regex date_time - ) - find_package2(PUBLIC FairLogger VERSION 1.2.0 REQUIRED) - find_package2(PRIVATE ZeroMQ VERSION 4.1.5 REQUIRED) -endif() - if(BUILD_NANOMSG_TRANSPORT) find_package2(PRIVATE nanomsg REQUIRED) set(PROJECT_nanomsg_VERSION 1.1.3) # Once upstream releases 1.1.5, we should bump again and use version check @@ -301,9 +299,9 @@ else() endif() message(STATUS " ${BWhite}nanomsg_transport${CR} ${nn_summary}") if(BUILD_OFI_TRANSPORT) - set(ofi_summary "${BGreen}YES${CR} EXPERIMENTAL (disable with ${BMagenta}-DBUILD_OFI_TRANSPORT=OFF${CR})") + set(ofi_summary "${BGreen}YES${CR} EXPERIMENTAL (requires C++17) (disable with ${BMagenta}-DBUILD_OFI_TRANSPORT=OFF${CR})") else() - set(ofi_summary "${BRed} NO${CR} EXPERIMENTAL (default, enable with ${BMagenta}-DBUILD_OFI_TRANSPORT=ON${CR})") + set(ofi_summary "${BRed} NO${CR} EXPERIMENTAL (requires C++17) (default, enable with ${BMagenta}-DBUILD_OFI_TRANSPORT=ON${CR})") endif() message(STATUS " ${BWhite}ofi_transport${CR} ${ofi_summary}") if(BUILD_DDS_PLUGIN) diff --git a/cmake/FairMQLib.cmake b/cmake/FairMQLib.cmake index e7c79853..82e2660c 100644 --- a/cmake/FairMQLib.cmake +++ b/cmake/FairMQLib.cmake @@ -115,11 +115,9 @@ macro(set_fairmq_defaults) # Handle C++ standard level set(CMAKE_CXX_STANDARD_REQUIRED ON) if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 11) - elseif(${CMAKE_CXX_STANDARD} LESS 11) - message(FATAL_ERROR "A minimum CMAKE_CXX_STANDARD of 11 is required.") - elseif(${CMAKE_CXX_STANDARD} GREATER 11) - message(WARNING "A CMAKE_CXX_STANDARD of ${CMAKE_CXX_STANDARD} (greater than 11) is not tested. Use on your own risk.") + set(CMAKE_CXX_STANDARD ${PROJECT_MIN_CXX_STANDARD}) + elseif(${CMAKE_CXX_STANDARD} LESS ${PROJECT_MIN_CXX_STANDARD}) + message(FATAL_ERROR "A minimum CMAKE_CXX_STANDARD of ${PROJECT_MIN_CXX_STANDARD} is required.") endif() set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/cmake/GTestHelper.cmake b/cmake/GTestHelper.cmake index 031376d4..44a5d4b7 100644 --- a/cmake/GTestHelper.cmake +++ b/cmake/GTestHelper.cmake @@ -47,6 +47,8 @@ # # +include(GoogleTest) + function(add_testsuite suitename) cmake_parse_arguments(testsuite "" @@ -73,13 +75,23 @@ function(add_testsuite suitename) target_compile_definitions("${target}" PUBLIC ${testsuite_DEFINITIONS}) endif() - add_test(NAME "${suitename}" WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMAND ${target}) + # add_test(NAME "${suitename}" WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMAND ${target}) if(testsuite_TIMEOUT) - set_tests_properties("${suitename}" PROPERTIES TIMEOUT ${testsuite_TIMEOUT}) + # set_tests_properties("${suitename}" PROPERTIES TIMEOUT ${testsuite_TIMEOUT}) + else() + set(testsuite_TIMEOUT 10) endif() if(testsuite_RUN_SERIAL) - set_tests_properties("${suitename}" PROPERTIES RUN_SERIAL ${testsuite_RUN_SERIAL}) + # set_tests_properties("${suitename}" PROPERTIES RUN_SERIAL ${testsuite_RUN_SERIAL}) + else() + set(testsuite_RUN_SERIAL OFF) endif() + gtest_discover_tests(${target} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + TEST_PREFIX ${suitename}. + PROPERTIES RUN_SERIAL ${testsuite_RUN_SERIAL} + TIMEOUT ${testsuite_TIMEOUT} + ) list(APPEND ALL_TEST_TARGETS ${target}) set(ALL_TEST_TARGETS ${ALL_TEST_TARGETS} PARENT_SCOPE) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c3093000..81d067d9 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -65,7 +65,7 @@ add_testsuite(FairMQ.Protocols INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/protocols ${CMAKE_CURRENT_BINARY_DIR} - TIMEOUT 30 + TIMEOUT 5 RUN_SERIAL ON ${definitions} ) @@ -111,8 +111,8 @@ add_testsuite(FairMQ.Device INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/device ${CMAKE_CURRENT_BINARY_DIR} - TIMEOUT 15 - RUN_SERIAL ON + TIMEOUT 5 + # RUN_SERIAL ON ) set(VERSION_MAJOR 1) @@ -157,7 +157,7 @@ add_testsuite(FairMQ.Plugins INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} DEPENDS FairMQPlugin_test_dummy FairMQPlugin_test_dummy2 - TIMEOUT 10 + TIMEOUT 5 ) add_testsuite(FairMQ.PluginsPrelinked @@ -168,7 +168,7 @@ add_testsuite(FairMQ.PluginsPrelinked LINKS FairMQ FairMQPlugin_test_dummy FairMQPlugin_test_dummy2 INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} - TIMEOUT 10 + TIMEOUT 5 ) add_testsuite(FairMQ.PluginServices @@ -181,7 +181,7 @@ add_testsuite(FairMQ.PluginServices LINKS FairMQ INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} - TIMEOUT 10 + TIMEOUT 5 ) add_testsuite(FairMQ.EventManager @@ -192,7 +192,7 @@ add_testsuite(FairMQ.EventManager LINKS FairMQ INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} - TIMEOUT 10 + TIMEOUT 5 ) # add_testsuite(FairMQ.StateMachine @@ -200,10 +200,10 @@ add_testsuite(FairMQ.EventManager # ${CMAKE_CURRENT_BINARY_DIR}/runner.cxx # state_machine/_state_machine.cxx -# LINKS FairMQ -# INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} -# ${CMAKE_CURRENT_BINARY_DIR} -# TIMEOUT 10 + # LINKS FairMQ + # INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} + # ${CMAKE_CURRENT_BINARY_DIR} + # TIMEOUT 5 # ) add_testsuite(FairMQ.Tools @@ -214,7 +214,7 @@ add_testsuite(FairMQ.Tools LINKS FairMQ INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} - TIMEOUT 10 + TIMEOUT 5 ) add_testsuite(FairMQ.Channel @@ -225,7 +225,7 @@ add_testsuite(FairMQ.Channel LINKS FairMQ INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} - TIMEOUT 10 + TIMEOUT 5 ) add_testsuite(FairMQ.Transport @@ -237,7 +237,7 @@ add_testsuite(FairMQ.Transport LINKS FairMQ INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} - TIMEOUT 10 + TIMEOUT 5 ${definitions} ) @@ -249,17 +249,20 @@ add_testsuite(FairMQ.Poller LINKS FairMQ INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} - TIMEOUT 10 + TIMEOUT 5 + RUN_SERIAL ON ${definitions} ) add_testsuite(FairMQ.MemoryResources SOURCES - memory_resources/runner.cxx + ${CMAKE_CURRENT_BINARY_DIR}/runner.cxx memory_resources/_memory_resources.cxx LINKS FairMQ - INCLUDES ${CMAKE_CURRENT_BINARY_DIR} - TIMEOUT 10 + INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + TIMEOUT 5 + ${definitions} ) diff --git a/test/memory_resources/_memory_resources.cxx b/test/memory_resources/_memory_resources.cxx index 74ff670a..6adc104f 100644 --- a/test/memory_resources/_memory_resources.cxx +++ b/test/memory_resources/_memory_resources.cxx @@ -87,7 +87,7 @@ TEST(MemoryResources, allocator_test) v.emplace_back(1); v.emplace_back(2); v.emplace_back(3); - EXPECT_TRUE((byte*)&(*v.end()) - (byte*)&(*v.begin()) == 3 * sizeof(testData)); + EXPECT_TRUE((fair::mq::byte*)&(*v.end()) - (fair::mq::byte*)&(*v.begin()) == 3 * sizeof(testData)); EXPECT_TRUE(testData::nallocated == 3); } EXPECT_TRUE(testData::nallocated == 0);