function(bigfoot_create_logger PackageName) set(LOGGER_FILENAME ${PackageName}Logger) string(TOUPPER ${PackageName}_Logger LOGGER_NAME) string(TOUPPER ${LOGGER_FILENAME} LOGGER_FILENAME_UPPER) configure_file( ${CMAKE_SOURCE_DIR}/Bigfoot/Sources/Utils/Include/Utils/TargetLogger.generated.hpp.in ${CMAKE_CURRENT_SOURCE_DIR}/Include/${PackageName}/${LOGGER_FILENAME}.generated.hpp @ONLY) endfunction() function(bigfoot_create_bigfile PackageName ParentFolder) set(OUTPUT_PATH_BIGFILE "${CMAKE_CURRENT_BINARY_DIR}/${PackageName}-bigfile.db") get_filename_component(OUTPUT_PATH_BIGFILE_ABSOLUTE ${OUTPUT_PATH_BIGFILE} ABSOLUTE) get_filename_component(OUTPUT_PATH_BIGFILE_DIRECTORY ${OUTPUT_PATH_BIGFILE_ABSOLUTE} DIRECTORY) add_custom_command( OUTPUT ${OUTPUT_PATH_BIGFILE_ABSOLUTE}.bftimestamp ${OUTPUT_PATH_BIGFILE_ABSOLUTE} DEPENDS ${CMAKE_SOURCE_DIR}/Bigfoot/Sources/Engine/BigFile/BigFileSchema.sql COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_PATH_BIGFILE_DIRECTORY} COMMAND sqlite3 ${OUTPUT_PATH_BIGFILE_ABSOLUTE} < ${CMAKE_SOURCE_DIR}/Bigfoot/Sources/Engine/BigFile/BigFileSchema.sql COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT_PATH_BIGFILE_ABSOLUTE}.bftimestamp COMMENT "Creating Bigfile ${OUTPUT_PATH_BIGFILE_ABSOLUTE}" ) list(APPEND BIGFILE_SOURCES ${OUTPUT_PATH_BIGFILE_ABSOLUTE}.bftimestamp) add_custom_target(${PackageName}BigFile ALL DEPENDS ${BIGFILE_SOURCES}) set_target_properties(${PackageName}BigFile PROPERTIES FOLDER UtilityTargets/${ParentFolder}) target_sources(${PackageName}BigFile PRIVATE ${BIGFILE_SOURCES}) string(TOUPPER ${PackageName} BIGFILE_NAME) set(BIGFILE_LOCATION ${OUTPUT_PATH_BIGFILE_ABSOLUTE}) configure_file( ${CMAKE_SOURCE_DIR}/Bigfoot/Sources/Engine/Include/Engine/BigFile/BigFileInfo.generated.hpp.in ${CMAKE_CURRENT_SOURCE_DIR}/Include/${PackageName}/BigFileInfo.generated.hpp @ONLY) endfunction() function(bigfoot_compile_flatbuffers Source IncludeFolders) file(GLOB_RECURSE SOURCES ${Source}/*.fbs) foreach(SOURCE_FILE ${SOURCES}) get_filename_component(SOURCE_DIRECTORY ${SOURCE_FILE} DIRECTORY) set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${SOURCE_FILE}) execute_process( COMMAND ${FLATBUFFERS_FLATC_EXECUTABLE} --cpp -I ${IncludeFolders} --keep-prefix --scoped-enums --gen-name-strings --gen-object-api --gen-compare --force-empty --no-cpp-direct-copy --cpp-str-flex-ctor --cpp-std c++17 --reflect-names -o "${SOURCE_DIRECTORY}" "${SOURCE_FILE}" ) endforeach() endfunction() function(bigfoot_setup_dependencies Target ParentFolder) set(CONAN_DEPLOYER_DIR "${CMAKE_SOURCE_DIR}/build/full_deploy/host") if(EXISTS ${CONAN_DEPLOYER_DIR}) if(CMAKE_SYSTEM_NAME STREQUAL "Windows") file(GLOB_RECURSE all_binaries ${CONAN_DEPLOYER_DIR}/*mimalloc*.dll) elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") file(GLOB_RECURSE all_binaries ${CONAN_DEPLOYER_DIR}/*mimalloc*.so*) endif() if(NOT all_binaries STREQUAL "") if(${is_multi_config}) foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES}) if(CMAKE_SYSTEM_NAME STREQUAL "Windows") foreach(file ${all_binaries}) if(file MATCHES "/${CONFIG}/") list(APPEND shared_binaries_${CONFIG} ${file}) endif() endforeach() elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") foreach(file ${all_binaries}) if(file MATCHES "/${CONFIG}/") list(APPEND shared_binaries_${CONFIG} ${file}) endif() endforeach() endif() endforeach() add_custom_target(${Target}CopySharedBinaries ALL DEPENDS all_binaries COMMAND ${CMAKE_COMMAND} -E make_directory $ COMMAND ${CMAKE_COMMAND} -E $,copy_if_different,true> ${shared_binaries_Debug} $ COMMAND ${CMAKE_COMMAND} -E $,copy_if_different,true> ${shared_binaries_Release} $ COMMAND ${CMAKE_COMMAND} -E $,copy_if_different,true> ${shared_binaries_RelWithDebInfo} $ COMMENT "Copy shared binaries" ) add_dependencies(${Target} ${Target}CopySharedBinaries) set_target_properties(${Target}CopySharedBinaries PROPERTIES FOLDER UtilityTargets/${ParentFolder}) else() if(CMAKE_SYSTEM_NAME STREQUAL "Windows") foreach(file ${all_binaries}) if(file MATCHES "/${CMAKE_BUILD_TYPE}/") list(APPEND shared_binaries_${CMAKE_BUILD_TYPE} ${file}) endif() endforeach() elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") foreach(file ${all_binaries}) if(file MATCHES "/${CMAKE_BUILD_TYPE}/") list(APPEND shared_binaries_${CMAKE_BUILD_TYPE} ${file}) endif() endforeach() endif() add_custom_target(${Target}CopySharedBinaries ALL DEPENDS ${shared_binaries_${CMAKE_BUILD_TYPE}} COMMAND ${CMAKE_COMMAND} -E make_directory $ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${shared_binaries_${CMAKE_BUILD_TYPE}} $ COMMENT "Copy shared binaries" ) add_dependencies(${Target} ${Target}CopySharedBinaries) set_target_properties(${Target}CopySharedBinaries PROPERTIES FOLDER UtilityTargets/${ParentFolder}) endif() endif() endif() if(CMAKE_SYSTEM_NAME STREQUAL "Windows") add_custom_command( TARGET ${Target} POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/Vendor/Tools/Mimalloc2.2.4/minject.exe -i -f $ COMMENT "Patching ${Target} to ensure mimalloc dynamic override" ) endif() endfunction()