Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 44s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 29s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 30s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m21s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m3s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m25s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m8s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m9s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m34s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m13s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 37s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 28s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 57s
Bigfoot / Sonarqube (push) Successful in 6m0s
sonarqube ERROR
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 49s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 30s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 52s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 36s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m23s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 44s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 59s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 51s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m5s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 56s
Bigfoot / Clang Format Checks (push) Successful in 13s
Bigfoot / Sonarqube (pull_request) Failing after 5m14s
Implementing an asset management system BigFile is a sqlite database, for toolmode Sasquatch is a custom binary file, for gamemode Assets are built from flatbuffers References allow to get an Asset, from an UUID, from anywhere in the code HardReference refcount the asset and allow automatic removal Reviewed-on: #1 Co-authored-by: Romain BOULLARD <romain.boullard@protonmail.com>
310 lines
11 KiB
CMake
310 lines
11 KiB
CMake
function(bigfoot_create_package_lib PackagePublicDependencies PackagePrivateDependencies PackageBigfootPublicDependencies PackageBigfootPrivateDependencies ParentFolder)
|
|
add_library(${PROJECT_NAME} STATIC)
|
|
|
|
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20)
|
|
|
|
target_link_libraries(${PROJECT_NAME}
|
|
PRIVATE
|
|
BigfootCompileAndLinkFlags
|
|
PUBLIC
|
|
${PackagePublicDependencies}
|
|
$<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageBigfootPublicDependencies}>
|
|
|
|
PRIVATE
|
|
${PackagePrivateDependencies}
|
|
$<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageBigfootPrivateDependencies}>)
|
|
|
|
bigfoot_compile_flatbuffers()
|
|
|
|
file(GLOB_RECURSE _SOURCES
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
|
|
)
|
|
|
|
file(GLOB_RECURSE _HEADERS
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
|
|
)
|
|
|
|
file(GLOB_RECURSE _OTHERS
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp.in
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.fbs
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.sql
|
|
)
|
|
|
|
target_sources(${PROJECT_NAME}
|
|
PRIVATE
|
|
${_SOURCES}
|
|
${_OTHERS}
|
|
PUBLIC
|
|
FILE_SET HEADERS
|
|
BASE_DIRS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Include
|
|
FILES
|
|
${_HEADERS}
|
|
)
|
|
|
|
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src FILES ${_SOURCES} ${_HEADERS} ${_OTHERS})
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Bigfoot/${ParentFolder})
|
|
endfunction()
|
|
|
|
function(bigfoot_create_package_tests PackageDependencies PackageBigfootDependencies ParentFolder)
|
|
add_executable(${PROJECT_NAME})
|
|
|
|
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20)
|
|
|
|
target_link_libraries(${PROJECT_NAME}
|
|
PRIVATE
|
|
BigfootCompileAndLinkFlags
|
|
${PackageDependencies}
|
|
$<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageName}>
|
|
$<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageBigfootDependencies}>
|
|
gtest::gtest)
|
|
|
|
bigfoot_compile_flatbuffers()
|
|
|
|
file(GLOB_RECURSE _SOURCES
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
|
|
)
|
|
|
|
file(GLOB_RECURSE _HEADERS
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
|
|
)
|
|
|
|
file(GLOB_RECURSE _OTHERS
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp.in
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.fbs
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.sql
|
|
)
|
|
|
|
target_sources(${PROJECT_NAME}
|
|
PRIVATE
|
|
${_SOURCES}
|
|
${_OTHERS}
|
|
PUBLIC
|
|
FILE_SET HEADERS
|
|
BASE_DIRS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Include
|
|
FILES
|
|
${_HEADERS}
|
|
)
|
|
|
|
include(GoogleTest)
|
|
gtest_discover_tests(${PROJECT_NAME}
|
|
WORKING_DIRECTORY $<TARGET_FILE_DIR:${PROJECT_NAME}>
|
|
XML_OUTPUT_DIR ${CMAKE_BINARY_DIR}/TestResults/)
|
|
|
|
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src/ FILES ${_SOURCES} ${_HEADERS} ${_OTHERS})
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Tests/Bigfoot/${ParentFolder})
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "$<TARGET_FILE_DIR:${PROJECT_NAME}>")
|
|
|
|
##################ASAN SETUP###################
|
|
|
|
if(${ASAN})
|
|
if(MSVC)
|
|
get_filename_component(MSVC_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY)
|
|
set(ASAN_DLL "${MSVC_BIN_DIR}/clang_rt.asan_dynamic-x86_64.dll")
|
|
|
|
add_custom_command(
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp"
|
|
DEPENDS "${ASAN_DLL}"
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ASAN_DLL}" "$<TARGET_FILE_DIR:${PROJECT_NAME}>"
|
|
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp"
|
|
COMMENT "Copying ASan DLL for ${PROJECT_NAME}"
|
|
)
|
|
|
|
add_custom_target(${PROJECT_NAME}Asan
|
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp"
|
|
)
|
|
|
|
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Asan)
|
|
set_target_properties(${PROJECT_NAME}Asan PROPERTIES FOLDER UtilityTargets/Tests/Bigfoot/${ParentFolder})
|
|
endif()
|
|
endif()
|
|
|
|
##################COPY FIXTURE FOLDER###################
|
|
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fixture)
|
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Fixture)
|
|
endif()
|
|
|
|
file(GLOB_RECURSE FIXTURE_FILES
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Fixture/*
|
|
)
|
|
|
|
add_custom_command(
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp"
|
|
DEPENDS ${FIXTURE_FILES}
|
|
COMMAND ${CMAKE_COMMAND} -E remove_directory $<TARGET_FILE_DIR:${PROJECT_NAME}>/Fixture
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Fixture $<TARGET_FILE_DIR:${PROJECT_NAME}>/Fixture
|
|
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp"
|
|
COMMENT "Copying Fixture folder for ${PROJECT_NAME}"
|
|
)
|
|
|
|
add_custom_target(${PROJECT_NAME}Fixture
|
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp"
|
|
)
|
|
|
|
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Fixture)
|
|
set_target_properties(${PROJECT_NAME}Fixture PROPERTIES FOLDER UtilityTargets/Tests/Bigfoot/${ParentFolder})
|
|
endfunction()
|
|
|
|
function(bigfoot_create_package_tests_helper_lib PackagePublicDependencies PackagePrivateDependencies PackageBigfootPublicDependencies PackageBigfootPrivateDependencies ParentFolder)
|
|
add_library(${PROJECT_NAME} STATIC)
|
|
|
|
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20)
|
|
|
|
target_link_libraries(${PROJECT_NAME}
|
|
PRIVATE
|
|
BigfootCompileAndLinkFlags
|
|
PUBLIC
|
|
${PackagePublicDependencies}
|
|
$<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageBigfootPublicDependencies}>
|
|
|
|
PRIVATE
|
|
${PackagePrivateDependencies}
|
|
$<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageBigfootPrivateDependencies}>)
|
|
|
|
bigfoot_compile_flatbuffers()
|
|
|
|
file(GLOB_RECURSE _SOURCES
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
|
|
)
|
|
|
|
file(GLOB_RECURSE _HEADERS
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
|
|
)
|
|
|
|
file(GLOB_RECURSE _OTHERS
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp.in
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.fbs
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.sql
|
|
)
|
|
|
|
target_sources(${PROJECT_NAME}
|
|
PRIVATE
|
|
${_SOURCES}
|
|
${_OTHERS}
|
|
PUBLIC
|
|
FILE_SET HEADERS
|
|
BASE_DIRS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Include
|
|
FILES
|
|
${_HEADERS}
|
|
)
|
|
|
|
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src FILES ${_SOURCES} ${_HEADERS} ${_OTHERS})
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Tests/Bigfoot/${ParentFolder})
|
|
endfunction()
|
|
|
|
function(bigfoot_create_package_benchmarks ParentFolder)
|
|
add_executable(${PROJECT_NAME})
|
|
|
|
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20)
|
|
|
|
target_link_libraries(${PROJECT_NAME}
|
|
PRIVATE
|
|
BigfootCompileAndLinkFlags
|
|
$<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageName}>
|
|
benchmark::benchmark_main)
|
|
|
|
bigfoot_compile_flatbuffers()
|
|
|
|
file(GLOB_RECURSE _SOURCES
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
|
|
)
|
|
|
|
file(GLOB_RECURSE _HEADERS
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
|
|
)
|
|
|
|
file(GLOB_RECURSE _OTHERS
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp.in
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.fbs
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.sql
|
|
)
|
|
|
|
target_sources(${PROJECT_NAME}
|
|
PRIVATE
|
|
${_SOURCES}
|
|
${_OTHERS}
|
|
PUBLIC
|
|
FILE_SET HEADERS
|
|
BASE_DIRS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Include
|
|
FILES
|
|
${_HEADERS}
|
|
)
|
|
|
|
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src/ FILES ${_SOURCES} ${_HEADERS} ${_OTHERS})
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Benchmarks/Bigfoot/${ParentFolder})
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "$<TARGET_FILE_DIR:${PROJECT_NAME}>")
|
|
|
|
##################ASAN SETUP###################
|
|
|
|
if(${ASAN})
|
|
if(MSVC)
|
|
get_filename_component(MSVC_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY)
|
|
set(ASAN_DLL "${MSVC_BIN_DIR}/clang_rt.asan_dynamic-x86_64.dll")
|
|
|
|
add_custom_command(
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp"
|
|
DEPENDS "${ASAN_DLL}"
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ASAN_DLL}" "$<TARGET_FILE_DIR:${PROJECT_NAME}>"
|
|
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp"
|
|
COMMENT "Copying ASan DLL for ${PROJECT_NAME}"
|
|
)
|
|
|
|
add_custom_target(${PROJECT_NAME}Asan
|
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp"
|
|
)
|
|
|
|
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Asan)
|
|
set_target_properties(${PROJECT_NAME}Asan PROPERTIES FOLDER UtilityTargets/Benchmarks/Bigfoot/${ParentFolder})
|
|
endif()
|
|
endif()
|
|
|
|
##################COPY FIXTURE FOLDER###################
|
|
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fixture)
|
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Fixture)
|
|
endif()
|
|
|
|
file(GLOB_RECURSE FIXTURE_FILES
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Fixture/*
|
|
)
|
|
|
|
add_custom_command(
|
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp"
|
|
DEPENDS ${FIXTURE_FILES}
|
|
COMMAND ${CMAKE_COMMAND} -E remove_directory $<TARGET_FILE_DIR:${PROJECT_NAME}>/Fixture
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Fixture $<TARGET_FILE_DIR:${PROJECT_NAME}>/Fixture
|
|
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp"
|
|
COMMENT "Copying Fixture folder for ${PROJECT_NAME}"
|
|
)
|
|
|
|
add_custom_target(${PROJECT_NAME}Fixture
|
|
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp"
|
|
)
|
|
|
|
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Fixture)
|
|
set_target_properties(${PROJECT_NAME}Fixture PROPERTIES FOLDER UtilityTargets/Benchmarks/Bigfoot/${ParentFolder})
|
|
endfunction() |