CMakeLists.txt 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #
  2. # Tests configuration
  3. #
  4. include_directories($<TARGET_PROPERTY:EnTT,INTERFACE_INCLUDE_DIRECTORIES>)
  5. add_compile_options($<TARGET_PROPERTY:EnTT,INTERFACE_COMPILE_OPTIONS>)
  6. macro(SETUP_TARGET TARGET_NAME)
  7. set_target_properties(${TARGET_NAME} PROPERTIES CXX_EXTENSIONS OFF)
  8. target_link_libraries(${TARGET_NAME} PRIVATE EnTT)
  9. target_compile_options(
  10. ${TARGET_NAME}
  11. PRIVATE $<$<AND:$<CONFIG:Debug>,$<NOT:$<PLATFORM_ID:Windows>>>:-O0 -g -pedantic -Wall -Wshadow -fvisibility=hidden>
  12. PRIVATE $<$<AND:$<CONFIG:Release>,$<NOT:$<PLATFORM_ID:Windows>>>:-O2 -pedantic -Wall -Wshadow -fvisibility=hidden>
  13. PRIVATE $<$<AND:$<CONFIG:Debug>,$<PLATFORM_ID:Windows>>:/EHsc /W1>
  14. PRIVATE $<$<AND:$<CONFIG:Release>,$<PLATFORM_ID:Windows>>:/EHsc /W1 /O2>
  15. )
  16. endmacro()
  17. add_library(odr OBJECT odr.cpp)
  18. SETUP_TARGET(odr)
  19. macro(SETUP_AND_ADD_TEST TEST_NAME TEST_SOURCE)
  20. add_executable(${TEST_NAME} $<TARGET_OBJECTS:odr> ${TEST_SOURCE})
  21. target_link_libraries(${TEST_NAME} PRIVATE GTest::Main Threads::Threads)
  22. SETUP_TARGET(${TEST_NAME})
  23. add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME})
  24. endmacro()
  25. macro(SETUP_AND_ADD_LIB_TEST TEST_NAME)
  26. add_library(_${TEST_NAME} SHARED lib/${TEST_NAME}/lib.cpp)
  27. SETUP_TARGET(_${TEST_NAME})
  28. SETUP_AND_ADD_TEST(lib_${TEST_NAME} lib/${TEST_NAME}/main.cpp)
  29. target_link_libraries(lib_${TEST_NAME} PRIVATE _${TEST_NAME})
  30. endmacro()
  31. # Test benchmark
  32. if(BUILD_BENCHMARK)
  33. SETUP_AND_ADD_TEST(benchmark benchmark/benchmark.cpp)
  34. endif()
  35. # Test lib
  36. if(BUILD_LIB)
  37. # SETUP_AND_ADD_LIB_TEST(dispatcher)
  38. # SETUP_AND_ADD_LIB_TEST(emitter)
  39. # SETUP_AND_ADD_LIB_TEST(meta)
  40. # SETUP_AND_ADD_LIB_TEST(registry)
  41. endif()
  42. # Test mod
  43. if(BUILD_MOD)
  44. set(DUKTAPE_DEPS_DIR ${EnTT_SOURCE_DIR}/deps/duktape)
  45. configure_file(${EnTT_SOURCE_DIR}/cmake/in/duktape.in ${DUKTAPE_DEPS_DIR}/CMakeLists.txt)
  46. execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY ${DUKTAPE_DEPS_DIR})
  47. execute_process(COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${DUKTAPE_DEPS_DIR})
  48. set(DUKTAPE_SRC_DIR ${DUKTAPE_DEPS_DIR}/src/src)
  49. set(MOD_TEST_SOURCE ${DUKTAPE_SRC_DIR}/duktape.c mod/mod.cpp)
  50. SETUP_AND_ADD_TEST(mod "${MOD_TEST_SOURCE}")
  51. target_include_directories(mod PRIVATE ${DUKTAPE_SRC_DIR})
  52. endif()
  53. # Test snapshot
  54. if(BUILD_SNAPSHOT)
  55. set(CEREAL_DEPS_DIR ${EnTT_SOURCE_DIR}/deps/cereal)
  56. configure_file(${EnTT_SOURCE_DIR}/cmake/in/cereal.in ${CEREAL_DEPS_DIR}/CMakeLists.txt)
  57. execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY ${CEREAL_DEPS_DIR})
  58. execute_process(COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${CEREAL_DEPS_DIR})
  59. set(CEREAL_SRC_DIR ${CEREAL_DEPS_DIR}/src/include)
  60. SETUP_AND_ADD_TEST(cereal snapshot/snapshot.cpp)
  61. target_include_directories(cereal PRIVATE ${CEREAL_SRC_DIR})
  62. endif()
  63. # Test core
  64. SETUP_AND_ADD_TEST(algorithm entt/core/algorithm.cpp)
  65. SETUP_AND_ADD_TEST(family entt/core/family.cpp)
  66. SETUP_AND_ADD_TEST(hashed_string entt/core/hashed_string.cpp)
  67. SETUP_AND_ADD_TEST(ident entt/core/ident.cpp)
  68. SETUP_AND_ADD_TEST(monostate entt/core/monostate.cpp)
  69. SETUP_AND_ADD_TEST(type_traits entt/core/type_traits.cpp)
  70. SETUP_AND_ADD_TEST(utility entt/core/utility.cpp)
  71. # Test entity
  72. SETUP_AND_ADD_TEST(actor entt/entity/actor.cpp)
  73. SETUP_AND_ADD_TEST(entity entt/entity/entity.cpp)
  74. SETUP_AND_ADD_TEST(group entt/entity/group.cpp)
  75. SETUP_AND_ADD_TEST(helper entt/entity/helper.cpp)
  76. SETUP_AND_ADD_TEST(observer entt/entity/observer.cpp)
  77. SETUP_AND_ADD_TEST(registry entt/entity/registry.cpp)
  78. SETUP_AND_ADD_TEST(runtime_view entt/entity/runtime_view.cpp)
  79. SETUP_AND_ADD_TEST(snapshot entt/entity/snapshot.cpp)
  80. SETUP_AND_ADD_TEST(sparse_set entt/entity/sparse_set.cpp)
  81. SETUP_AND_ADD_TEST(storage entt/entity/storage.cpp)
  82. SETUP_AND_ADD_TEST(view entt/entity/view.cpp)
  83. # Test locator
  84. SETUP_AND_ADD_TEST(locator entt/locator/locator.cpp)
  85. # Test meta
  86. SETUP_AND_ADD_TEST(meta entt/meta/meta.cpp)
  87. # Test process
  88. SETUP_AND_ADD_TEST(process entt/process/process.cpp)
  89. SETUP_AND_ADD_TEST(scheduler entt/process/scheduler.cpp)
  90. # Test resource
  91. SETUP_AND_ADD_TEST(resource entt/resource/resource.cpp)
  92. # Test signal
  93. SETUP_AND_ADD_TEST(delegate entt/signal/delegate.cpp)
  94. SETUP_AND_ADD_TEST(dispatcher entt/signal/dispatcher.cpp)
  95. SETUP_AND_ADD_TEST(emitter entt/signal/emitter.cpp)
  96. SETUP_AND_ADD_TEST(sigh entt/signal/sigh.cpp)