From c30826766ffbdbb5721b75b7179a3408f7073cf2 Mon Sep 17 00:00:00 2001 From: Biedermann Steve Date: Wed, 9 Nov 2022 10:56:47 +0100 Subject: [PATCH] use submodule for Heap-Layers and use pre-installed googletest --- .gitmodules | 6 ++++++ CMakeLists.txt | 27 +++------------------------ external/Heap-Layers | 1 + src/CMakeLists.txt | 18 ++++++++---------- 4 files changed, 18 insertions(+), 34 deletions(-) create mode 100644 .gitmodules create mode 160000 external/Heap-Layers diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..aa455ee5 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "external/Heap-Layers"] + path = external/Heap-Layers + url = https://github.com/emeryberger/Heap-Layers.git +[submodule "external/googletest"] + path = external/googletest + url = https://github.com/google/googletest.git diff --git a/CMakeLists.txt b/CMakeLists.txt index b9c0b6c8..fca9e6a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,32 +12,10 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/lib) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/lib) set(CMAKE_HEADER_OUTPUT_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/include) - -include(ExternalProject) - -ExternalProject_Add(googletest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG 3e0e32ba300ce8afe695ad3ba7e81b21b7cf237a - SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-src" - BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-build" - INSTALL_COMMAND "" - TEST_COMMAND "" -) - -ExternalProject_Add(heap_layers - GIT_REPOSITORY https://github.com/emeryberger/Heap-Layers.git - GIT_TAG a80041cc15174ab82a39bae1cd750b52955c7eef - SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/heap_layers-src" - BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/heap_layers-build" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" - TEST_COMMAND "" -) - #Create configure options option(DEBUG "Build with debugging symbols" OFF) #replace with CMAKE_BUILD_TYPE? -option(OPTIMIZE " Build with optimizations" ON) #replace with CMAKE_BUILD_TYPE? +option(OPTIMIZE "Build with optimizations" ON) #replace with CMAKE_BUILD_TYPE? +option(BUILD_TESTS "Build with tests" OFF) option(GCOV "Build with gcov profiling support" OFF) option(CLANGCOV "Build with clangcov profiling support" OFF) set(RANDOMIZATION "1" CACHE STRING "0: no randomization. 1: freelist init only. 2: freelist init + free fastpath") @@ -102,6 +80,7 @@ else() endif() if (${GCOV} AND GCC) + set(BUILD_TESTS ON) find_program(GCOVp gcov) if (GCOVp) add_definitions(--coverage) diff --git a/external/Heap-Layers b/external/Heap-Layers new file mode 160000 index 00000000..27c72faa --- /dev/null +++ b/external/Heap-Layers @@ -0,0 +1 @@ +Subproject commit 27c72faa8810ad429563e4e091790ea413a82df8 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b50608f0..886fbbfd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,6 @@ #Include current folder to guarantee headers are found by files include_directories(./) -include_directories(${CMAKE_CURRENT_BINARY_DIR}/../heap_layers-src) -# include_directories(./vendor/Heap-Layers) +include_directories(${CMAKE_SOURCE_DIR}/external/Heap-Layers) #Create a common set of source files set(common_src @@ -23,6 +22,9 @@ set(mesh_src add_library(mesh SHARED ${mesh_src}) target_link_libraries(mesh PRIVATE -pthread -ldl) +if(${BUILD_TESTS}) +find_package(GTest 1.0 REQUIRED) + #Create a set of source files for the unit tests set(unit_src ${common_src} @@ -39,17 +41,12 @@ set(unit_src add_executable(unit.test ${unit_src}) target_link_libraries(unit.test PRIVATE -ldl -pthread ) -set(GTEST_DIR ${CMAKE_CURRENT_BINARY_DIR}/../googletest-src/googletest) - -ExternalProject_Get_Property(googletest binary_dir) -set(GTEST_LIBRARY_PATH ${binary_dir}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest.a) -target_link_libraries(unit.test PRIVATE ${GTEST_LIBRARY_PATH}) +target_link_libraries(unit.test PRIVATE GTest::GTest) -set(GTEST_MAIN_LIBRARY_PATH ${binary_dir}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest_main.a) -target_link_libraries(unit.test PRIVATE ${GTEST_MAIN_LIBRARY_PATH}) +target_link_libraries(unit.test PRIVATE GTest::Main) #Include header file paths to the unit tests -target_include_directories(unit.test SYSTEM PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../googletest-src/googletest/include) +target_include_directories(unit.test SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/external/googletest/include) #Set specific compiler flags for the unit tests target_compile_definitions(unit.test PRIVATE -DGTEST_HAS_PTHREAD=1) @@ -83,3 +80,4 @@ if(${CLANGCOV}) # WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/coverage/ # DEPENDS unit.test) endif() +endif()