97 lines
3.9 KiB
CMake
97 lines
3.9 KiB
CMake
function(bigfoot_create_package_lib PackagePublicDependencies PackagePrivateDependencies PackageBigfootPublicDependencies PackageBigfootPrivateDependencies ParentFolder)
|
|
add_library(${PROJECT_NAME} STATIC)
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
|
|
|
|
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Include)
|
|
|
|
bigfoot_compile_flatbuffers("${PackageBigfootPublicDependencies}")
|
|
|
|
# collect sources (reconfigure when files are added/removed)
|
|
file(GLOB_RECURSE _BF_SOURCES
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp.in
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.fbs
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.sql
|
|
)
|
|
|
|
target_sources(${PROJECT_NAME}
|
|
PRIVATE
|
|
${_BF_SOURCES}
|
|
)
|
|
|
|
target_compile_options(${PROJECT_NAME} PRIVATE ${BIGFOOT_CXX_FLAGS})
|
|
|
|
target_link_libraries(${PROJECT_NAME} PUBLIC unordered_dense::unordered_dense EASTL::EASTL flatbuffers::flatbuffers rapidhash::rapidhash)
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_DL_LIBS})
|
|
|
|
target_link_libraries(${PROJECT_NAME} PUBLIC ${PackagePublicDependencies})
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE ${PackagePrivateDependencies})
|
|
target_link_libraries(${PROJECT_NAME} PUBLIC $<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageBigfootPublicDependencies}>)
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE $<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageBigfootPrivateDependencies}>)
|
|
|
|
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src FILES ${_BF_SOURCES})
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Bigfoot/${ParentFolder})
|
|
endfunction()
|
|
|
|
function(bigfoot_create_package_tests ParentFolder BigfootDependencies)
|
|
add_executable(${PROJECT_NAME})
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
|
|
|
|
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Include)
|
|
|
|
bigfoot_compile_flatbuffers("${BigfootDependencies}")
|
|
|
|
file(GLOB_RECURSE _BF_TEST_SOURCES
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp.in
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/*.fbs
|
|
)
|
|
|
|
target_sources(${PROJECT_NAME}
|
|
PRIVATE
|
|
${_BF_TEST_SOURCES}
|
|
)
|
|
|
|
target_compile_options(${PROJECT_NAME} PRIVATE ${BIGFOOT_CXX_FLAGS})
|
|
target_link_options(${PROJECT_NAME} PRIVATE ${BIGFOOT_EXE_LINK_FLAGS})
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE $<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageName}>)
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE gtest::gtest)
|
|
|
|
include(GoogleTest)
|
|
gtest_discover_tests(${PROJECT_NAME} XML_OUTPUT_DIR ${CMAKE_BINARY_DIR}/TestResults/)
|
|
|
|
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src/ FILES ${_BF_TEST_SOURCES})
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Tests/Bigfoot/${ParentFolder})
|
|
|
|
##################COPY FIXTURE FOLDER###################
|
|
|
|
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fixture)
|
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Fixture)
|
|
endif()
|
|
|
|
# Track all fixture files
|
|
file(GLOB_RECURSE FIXTURE_FILES
|
|
CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Fixture/*
|
|
)
|
|
|
|
add_custom_target(${PROJECT_NAME}Fixture
|
|
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
|
|
DEPENDS ${FIXTURE_FILES}
|
|
COMMENT "Copying Fixture folder for ${PROJECT_NAME}"
|
|
)
|
|
|
|
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Fixture)
|
|
|
|
set_target_properties(${PROJECT_NAME}Fixture PROPERTIES FOLDER UtilityTargets/Tests/Bigfoot/${ParentFolder})
|
|
endfunction() |