diff --git a/.gitmodules b/.gitmodules index 95d518b..c83b0b5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "dep/asio/asio"] path = dep/asio/asio url = https://github.com/chriskohlhoff/asio.git +[submodule "dep/benchmark/benchmark"] + path = dep/benchmark/benchmark + url = https://github.com/google/benchmark.git diff --git a/CMakeLists.txt b/CMakeLists.txt index d0e63fa..acccfed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,10 @@ option(CTI_CONTINUABLE_WITH_EXAMPLES "Build the continuable examples" ${IS_TOP_LEVEL_PROJECT}) +option(CTI_CONTINUABLE_WITH_BENCHMARKS + "Build the continuable benchmarks" + ${IS_TOP_LEVEL_PROJECT}) + option(CTI_CONTINUABLE_WITH_NO_EXCEPTIONS "Disable exception support" OFF) diff --git a/dep/CMakeLists.txt b/dep/CMakeLists.txt index e083170..ee3fa62 100644 --- a/dep/CMakeLists.txt +++ b/dep/CMakeLists.txt @@ -2,12 +2,24 @@ if(NOT TARGET function2) add_subdirectory(function2) endif() -if (CTI_CONTINUABLE_WITH_TESTS OR CTI_CONTINUABLE_WITH_EXAMPLES) +if (CTI_CONTINUABLE_WITH_TESTS OR CTI_CONTINUABLE_WITH_BENCHMARKS) if(NOT TARGET gtest) add_subdirectory(googletest) endif() +endif() +if (CTI_CONTINUABLE_WITH_EXAMPLES) if(NOT TARGET asio) add_subdirectory(asio) endif() endif() + +if (CTI_CONTINUABLE_WITH_BENCHMARKS) + if(NOT TARGET benchmark) + add_subdirectory(benchmark) + endif() + + if(NOT TARGET boost) + add_subdirectory(boost) + endif() +endif() diff --git a/dep/benchmark/CMakeLists.txt b/dep/benchmark/CMakeLists.txt new file mode 100644 index 0000000..3f17ece --- /dev/null +++ b/dep/benchmark/CMakeLists.txt @@ -0,0 +1,9 @@ +set(BENCHMARK_ENABLE_TESTING OFF) +if (CTI_CONTINUABLE_WITHOUT_EXCEPTIONS) + set(BENCHMARK_ENABLE_EXCEPTIONS OFF) +else() + set(BENCHMARK_ENABLE_EXCEPTIONS ON) +endif() +set(BENCHMARK_ENABLE_INSTALL OFF) +set(BENCHMARK_ENABLE_GTEST_TESTS OFF) +add_subdirectory(benchmark) diff --git a/dep/benchmark/benchmark b/dep/benchmark/benchmark new file mode 160000 index 0000000..b171791 --- /dev/null +++ b/dep/benchmark/benchmark @@ -0,0 +1 @@ +Subproject commit b1717916d1acafbd0753c145f30f76b06f2933e5 diff --git a/dep/boost/CMakeLists.txt b/dep/boost/CMakeLists.txt new file mode 100644 index 0000000..7aa0886 --- /dev/null +++ b/dep/boost/CMakeLists.txt @@ -0,0 +1,38 @@ +if(WIN32) + if(CMAKE_SIZEOF_VOID_P MATCHES 8) + set(PLATFORM 64) + else() + set(PLATFORM 32) + endif() + + if(DEFINED ENV{BOOST_ROOT}) + set(BOOST_ROOT $ENV{BOOST_ROOT}) + set(BOOST_LIBRARYDIR ${BOOST_ROOT}/lib${PLATFORM}-msvc-14.1) + endif() + + set(Boost_USE_STATIC_LIBS ON) + set(Boost_USE_MULTITHREADED ON) + set(Boost_USE_STATIC_RUNTIME OFF) +endif() + +find_package(Boost 1.68 REQUIRED + COMPONENTS + system + iostreams) + +if (${Boost_FOUND}) + add_library(boost INTERFACE) + + target_link_libraries(boost + INTERFACE + Boost::system + Boost::iostreams) + + target_compile_definitions(boost + INTERFACE + BOOST_ALL_NO_LIB + BOOST_ASIO_DISABLE_BOOST_DATE_TIME + BOOST_ASIO_DISABLE_BOOST_REGEX + BOOST_RANGE_ENABLE_CONCEPT_ASSERT=0 + BOOST_FILESYSTEM_NO_DEPRECATED) +endif() diff --git a/dep/googletest/CMakeLists.txt b/dep/googletest/CMakeLists.txt index e757373..17bac75 100644 --- a/dep/googletest/CMakeLists.txt +++ b/dep/googletest/CMakeLists.txt @@ -1,3 +1,4 @@ +if(ON) add_library(gtest STATIC ${CMAKE_CURRENT_LIST_DIR}/googletest/googletest/src/gtest-all.cc) @@ -42,3 +43,10 @@ target_include_directories(gmock ${CMAKE_CURRENT_LIST_DIR}/googletest/googlemock PUBLIC ${CMAKE_CURRENT_LIST_DIR}/googletest/googlemock/include) + +else() +set(BUILD_GTEST ON) +set(BUILD_GMOCK OFF) +set(INSTALL_GTEST OFF) +add_subdirectory(googletest) +endif() diff --git a/test/unit-test/CMakeLists.txt b/test/unit-test/CMakeLists.txt index b7c5aa6..d00670f 100644 --- a/test/unit-test/CMakeLists.txt +++ b/test/unit-test/CMakeLists.txt @@ -8,6 +8,7 @@ target_include_directories(test-continuable-base target_link_libraries(test-continuable-base PUBLIC + gtest gtest-main continuable continuable-features-flags