Files
snivy/cmake/copy_resources.cmake
shweet 70b5277f87
Some checks failed
Build / Build Game (push) Has been cancelled
one more fix for windows
2026-03-02 20:19:49 -05:00

56 lines
1.9 KiB
CMake

if(NOT DEFINED SRC_DIR OR NOT DEFINED DST_DIR)
message(FATAL_ERROR "SRC_DIR and DST_DIR must be defined")
endif()
set(CHARACTERS_DIR "${SRC_DIR}/characters")
set(CHARACTERS_ZIP_SCRIPT "${CHARACTERS_DIR}/zip")
set(IS_HOST_WINDOWS FALSE)
if(CMAKE_HOST_WIN32)
set(IS_HOST_WINDOWS TRUE)
endif()
if(EXISTS "${CHARACTERS_ZIP_SCRIPT}" AND NOT IS_HOST_WINDOWS)
execute_process(
COMMAND "${CHARACTERS_ZIP_SCRIPT}"
WORKING_DIRECTORY "${CHARACTERS_DIR}"
RESULT_VARIABLE ZIP_SCRIPT_RESULT
)
if(NOT ZIP_SCRIPT_RESULT EQUAL 0)
message(WARNING "Failed running ${CHARACTERS_ZIP_SCRIPT} (exit code ${ZIP_SCRIPT_RESULT}); continuing with existing archives")
endif()
endif()
file(REMOVE_RECURSE "${DST_DIR}")
file(MAKE_DIRECTORY "${DST_DIR}")
# Copy all resources except characters/ contents.
file(COPY "${SRC_DIR}/" DESTINATION "${DST_DIR}"
PATTERN "characters/*" EXCLUDE)
# Copy only .zip archives from resources/characters.
file(MAKE_DIRECTORY "${DST_DIR}/characters")
file(GLOB CHARACTER_ZIPS "${CHARACTERS_DIR}/*.zip")
if(NOT CHARACTER_ZIPS)
file(GLOB CHARACTER_FILES RELATIVE "${CHARACTERS_DIR}" "${CHARACTERS_DIR}/*")
list(FILTER CHARACTER_FILES EXCLUDE REGEX "^zip$")
list(FILTER CHARACTER_FILES EXCLUDE REGEX ".*\\.zip$")
if(CHARACTER_FILES)
execute_process(
COMMAND "${CMAKE_COMMAND}" -E tar cf "snivy.zip" --format=zip ${CHARACTER_FILES}
WORKING_DIRECTORY "${CHARACTERS_DIR}"
RESULT_VARIABLE ZIP_GENERATE_RESULT
)
if(NOT ZIP_GENERATE_RESULT EQUAL 0)
message(WARNING "Failed generating ${CHARACTERS_DIR}/snivy.zip (exit code ${ZIP_GENERATE_RESULT}); continuing without character zip archives")
else()
file(GLOB CHARACTER_ZIPS "${CHARACTERS_DIR}/*.zip")
endif()
endif()
endif()
if(CHARACTER_ZIPS)
file(COPY ${CHARACTER_ZIPS} DESTINATION "${DST_DIR}/characters")
endif()