Browse Source

build system: added fungos/cr to the list of dependencies required to compile lib tests

Michele Caini 6 years ago
parent
commit
d59c052554
4 changed files with 51 additions and 28 deletions
  1. 0 22
      CMakeLists.txt
  2. 3 6
      TODO
  3. 20 0
      cmake/in/cr.in
  4. 28 0
      test/CMakeLists.txt

+ 0 - 22
CMakeLists.txt

@@ -156,35 +156,13 @@ export(PACKAGE EnTT)
 option(BUILD_TESTING "Enable testing with ctest." OFF)
 
 if(BUILD_TESTING)
-    set(THREADS_PREFER_PTHREAD_FLAG ON)
-    find_package(Threads REQUIRED)
-
     option(FIND_GTEST_PACKAGE "Enable finding gtest package." OFF)
 
-    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_PROPERTY:EnTT,INTERFACE_COMPILE_FEATURES>)
-        target_compile_features(gmock PRIVATE $<TARGET_PROPERTY:EnTT,INTERFACE_COMPILE_FEATURES>)
-        add_library(GTest::Main ALIAS gtest_main)
-    endif()
-
     option(BUILD_BENCHMARK "Build benchmark." OFF)
     option(BUILD_LIB "Build lib example." OFF)
     option(BUILD_MOD "Build mod example." OFF)
     option(BUILD_SNAPSHOT "Build snapshot example." OFF)
 
-    if(BUILD_MOD)
-        enable_language(C)
-    endif()
-
     enable_testing()
     add_subdirectory(test)
 endif()

+ 3 - 6
TODO

@@ -40,6 +40,9 @@
 * any-of rule for views/groups (eg entity has A and any of B/C/D)
 * sparse set: there exists an alternative to paginated sparse arrays?
 * see warning (vs2017 only): d:\a\entt\entt\src\entt\entity\registry.hpp(108)
+* registry
+  - ::assure -> pool_type<T> &
+  - ::group improve, reduce code
 
 * Mission: get rid of named types
   - make it possible to use custom generators (eg for plugins)
@@ -49,12 +52,6 @@
     * meta
     * monostate
     * locator
-  - registry::assure -> pool_type<T> &
-  - registry::group improve, reduce code
   - families should be defined as out-of-class to guarantee the same identifiers for the same types
-  - Make the following parts work across boundaries:
-    * registry
-    * monostate
-    * locator
   - update doc: family, dispatcher, emitter, registry, meta, across boundaries
   - update tests

+ 20 - 0
cmake/in/cr.in

@@ -0,0 +1,20 @@
+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 ""
+)

+ 28 - 0
test/CMakeLists.txt

@@ -2,6 +2,24 @@
 # Tests configuration
 #
 
+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_PROPERTY:EnTT,INTERFACE_COMPILE_FEATURES>)
+    target_compile_features(gmock PRIVATE $<TARGET_PROPERTY:EnTT,INTERFACE_COMPILE_FEATURES>)
+    add_library(GTest::Main ALIAS gtest_main)
+endif()
+
 include_directories($<TARGET_PROPERTY:EnTT,INTERFACE_INCLUDE_DIRECTORIES>)
 add_compile_options($<TARGET_PROPERTY:EnTT,INTERFACE_COMPILE_OPTIONS>)
 
@@ -48,11 +66,21 @@ if(BUILD_LIB)
     SETUP_AND_ADD_LIB_TEST(emitter)
     SETUP_AND_ADD_LIB_TEST(meta)
     SETUP_AND_ADD_LIB_TEST(registry)
+
+    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)
+
+    # TODO
 endif()
 
 # Test mod
 
 if(BUILD_MOD)
+    enable_language(C)
+
     set(DUKTAPE_DEPS_DIR ${EnTT_SOURCE_DIR}/deps/duktape)
     configure_file(${EnTT_SOURCE_DIR}/cmake/in/duktape.in ${DUKTAPE_DEPS_DIR}/CMakeLists.txt)
     execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY ${DUKTAPE_DEPS_DIR})