From cd2fdc2ffece006a083fbdfc278be1808f906efc Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Mon, 10 Feb 2020 22:43:42 +0100 Subject: [PATCH] build system: use cmake fetch content rather than external add --- TODO | 3 -- cmake/in/cereal.in | 20 ------------- cmake/in/cr.in | 20 ------------- cmake/in/googletest.in | 20 ------------- deps/.gitignore | 2 -- test/CMakeLists.txt | 67 ++++++++++++++++++++++++++++-------------- 6 files changed, 45 insertions(+), 87 deletions(-) delete mode 100644 cmake/in/cereal.in delete mode 100644 cmake/in/cr.in delete mode 100644 cmake/in/googletest.in delete mode 100644 deps/.gitignore diff --git a/TODO b/TODO index 92ebb1488..2bb88bea6 100644 --- a/TODO +++ b/TODO @@ -17,9 +17,6 @@ * any-of rule for views/groups (eg entity has A and any of B/C/D) - get -> all, exclude -> none * review prepare after clone and the others have been removed -* build system - - avoid showing gtest and the others in the ide - - use fetch content rather then external add * WIP: - deprecate clone, stamp, snapshot, loader, ... diff --git a/cmake/in/cereal.in b/cmake/in/cereal.in deleted file mode 100644 index 0e1e754b2..000000000 --- a/cmake/in/cereal.in +++ /dev/null @@ -1,20 +0,0 @@ -project(cereal-download NONE) -cmake_minimum_required(VERSION 3.2) - -include(ExternalProject) - -ExternalProject_Add( - cereal - GIT_REPOSITORY https://github.com/USCiLab/cereal.git - GIT_TAG v1.2.2 - GIT_SHALLOW 1 - DOWNLOAD_DIR ${CEREAL_DEPS_DIR} - TMP_DIR ${CEREAL_DEPS_DIR}/tmp - STAMP_DIR ${CEREAL_DEPS_DIR}/stamp - SOURCE_DIR ${CEREAL_DEPS_DIR}/src - BINARY_DIR ${CEREAL_DEPS_DIR}/build - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" - TEST_COMMAND "" -) diff --git a/cmake/in/cr.in b/cmake/in/cr.in deleted file mode 100644 index 2d8cd43a5..000000000 --- a/cmake/in/cr.in +++ /dev/null @@ -1,20 +0,0 @@ -project(cr-download NONE) -cmake_minimum_required(VERSION 3.2) - -include(ExternalProject) - -ExternalProject_Add( - cr - GIT_REPOSITORY https://github.com/fungos/cr.git - GIT_TAG master - GIT_SHALLOW 1 - DOWNLOAD_DIR ${CR_DEPS_DIR} - TMP_DIR ${CR_DEPS_DIR}/tmp - STAMP_DIR ${CR_DEPS_DIR}/stamp - SOURCE_DIR ${CR_DEPS_DIR}/src - BINARY_DIR ${CR_DEPS_DIR}/build - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" - TEST_COMMAND "" -) diff --git a/cmake/in/googletest.in b/cmake/in/googletest.in deleted file mode 100644 index 56597dcf5..000000000 --- a/cmake/in/googletest.in +++ /dev/null @@ -1,20 +0,0 @@ -project(googletest-download NONE) -cmake_minimum_required(VERSION 3.2) - -include(ExternalProject) - -ExternalProject_Add( - googletest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG master - GIT_SHALLOW 1 - DOWNLOAD_DIR ${GOOGLETEST_DEPS_DIR} - TMP_DIR ${GOOGLETEST_DEPS_DIR}/tmp - STAMP_DIR ${GOOGLETEST_DEPS_DIR}/stamp - SOURCE_DIR ${GOOGLETEST_DEPS_DIR}/src - BINARY_DIR ${GOOGLETEST_DEPS_DIR}/build - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" - TEST_COMMAND "" -) diff --git a/deps/.gitignore b/deps/.gitignore deleted file mode 100644 index d6b7ef32c..000000000 --- a/deps/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index b61072e00..ff75c0635 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -2,21 +2,28 @@ # Tests configuration # +include(FetchContent) + set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) if(FIND_GTEST_PACKAGE) find_package(GTest REQUIRED) else() - # gtest, gtest_main, gmock and gmock_main targets are available from now on - set(GOOGLETEST_DEPS_DIR ${EnTT_SOURCE_DIR}/deps/googletest) - configure_file(${EnTT_SOURCE_DIR}/cmake/in/googletest.in ${GOOGLETEST_DEPS_DIR}/CMakeLists.txt) - execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY ${GOOGLETEST_DEPS_DIR}) - execute_process(COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${GOOGLETEST_DEPS_DIR}) - set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) - add_subdirectory(${GOOGLETEST_DEPS_DIR}/src ${GOOGLETEST_DEPS_DIR}/build) - target_compile_features(gmock_main PRIVATE $) - target_compile_features(gmock PRIVATE $) + FetchContent_Declare( + googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG master + GIT_SHALLOW 1 + ) + + FetchContent_GetProperties(googletest) + + if(NOT googletest_POPULATED) + FetchContent_Populate(googletest) + add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR}) + endif() + add_library(GTest::Main ALIAS gtest_main) endif() @@ -60,8 +67,8 @@ function(SETUP_PLUGIN_TEST TEST_NAME) add_library(_${TEST_NAME} MODULE lib/${TEST_NAME}/plugin.cpp) SETUP_TARGET(_${TEST_NAME}) SETUP_BASIC_TEST(lib_${TEST_NAME} lib/${TEST_NAME}/main.cpp) - target_include_directories(_${TEST_NAME} PRIVATE ${CR_SRC_DIR}) - target_include_directories(lib_${TEST_NAME} PRIVATE ${CR_SRC_DIR}) + target_include_directories(_${TEST_NAME} PRIVATE ${cr_INCLUDE_DIR}) + target_include_directories(lib_${TEST_NAME} PRIVATE ${cr_INCLUDE_DIR}) target_compile_definitions(lib_${TEST_NAME} PRIVATE NOMINMAX PLUGIN="$" ${ARGV1}) target_compile_definitions(_${TEST_NAME} PRIVATE NOMINMAX ${ARGV1}) target_link_libraries(lib_${TEST_NAME} PRIVATE ${CMAKE_DL_LIBS}) @@ -76,11 +83,19 @@ endif() # Test lib if(BUILD_LIB) - set(CR_DEPS_DIR ${EnTT_SOURCE_DIR}/deps/cr) - configure_file(${EnTT_SOURCE_DIR}/cmake/in/cr.in ${CR_DEPS_DIR}/CMakeLists.txt) - execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY ${CR_DEPS_DIR}) - execute_process(COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${CR_DEPS_DIR}) - set(CR_SRC_DIR ${CR_DEPS_DIR}/src) + FetchContent_Declare( + cr + GIT_REPOSITORY https://github.com/fungos/cr.git + GIT_TAG master + GIT_SHALLOW 1 + ) + + FetchContent_GetProperties(cr) + + if(NOT cr_POPULATED) + FetchContent_Populate(cr) + set(cr_INCLUDE_DIR ${cr_SOURCE_DIR}) + endif() SETUP_LIB_TEST(dispatcher) SETUP_LIB_TEST(emitter) @@ -106,14 +121,22 @@ endif() # Test snapshot if(BUILD_SNAPSHOT) - set(CEREAL_DEPS_DIR ${EnTT_SOURCE_DIR}/deps/cereal) - configure_file(${EnTT_SOURCE_DIR}/cmake/in/cereal.in ${CEREAL_DEPS_DIR}/CMakeLists.txt) - execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY ${CEREAL_DEPS_DIR}) - execute_process(COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${CEREAL_DEPS_DIR}) - set(CEREAL_SRC_DIR ${CEREAL_DEPS_DIR}/src/include) + FetchContent_Declare( + cereal + GIT_REPOSITORY https://github.com/USCiLab/cereal.git + GIT_TAG v1.2.2 + GIT_SHALLOW 1 + ) + + FetchContent_GetProperties(cereal) + + if(NOT cereal_POPULATED) + FetchContent_Populate(cereal) + set(cereal_INCLUDE_DIR ${cereal_SOURCE_DIR}/include) + endif() SETUP_BASIC_TEST(cereal snapshot/snapshot.cpp) - target_include_directories(cereal PRIVATE ${CEREAL_SRC_DIR}) + target_include_directories(cereal PRIVATE ${cereal_INCLUDE_DIR}) endif() # Test core