Files
shweets-sim/cmake/copy_resources.cmake
2026-04-01 02:08:50 -04:00

42 lines
1.6 KiB
CMake

if(NOT DEFINED SRC_DIR OR NOT DEFINED DST_DIR OR NOT DEFINED STAMP_FILE)
message(FATAL_ERROR "SRC_DIR, DST_DIR, and STAMP_FILE must be defined")
endif()
set(CHARACTERS_DIR "${SRC_DIR}/characters")
file(REMOVE_RECURSE "${DST_DIR}")
file(MAKE_DIRECTORY "${DST_DIR}")
# Copy all resources except character source folders and any stray character zips.
file(COPY "${SRC_DIR}/" DESTINATION "${DST_DIR}"
PATTERN "characters/*" EXCLUDE
PATTERN "characters/*.zip" EXCLUDE)
file(MAKE_DIRECTORY "${DST_DIR}/characters")
if(EXISTS "${CHARACTERS_DIR}")
file(GLOB CHILDREN RELATIVE "${CHARACTERS_DIR}" "${CHARACTERS_DIR}/*")
foreach(CHILD IN LISTS CHILDREN)
set(CHARACTER_SOURCE_DIR "${CHARACTERS_DIR}/${CHILD}")
if(NOT IS_DIRECTORY "${CHARACTER_SOURCE_DIR}")
continue()
endif()
file(GLOB_RECURSE CHARACTER_CONTENTS RELATIVE "${CHARACTER_SOURCE_DIR}" "${CHARACTER_SOURCE_DIR}/*")
if(NOT CHARACTER_CONTENTS)
message(STATUS "Skipping empty character directory: ${CHARACTER_SOURCE_DIR}")
continue()
endif()
execute_process(
COMMAND "${CMAKE_COMMAND}" -E tar cf "${DST_DIR}/characters/${CHILD}.zip" --format=zip ${CHARACTER_CONTENTS}
WORKING_DIRECTORY "${CHARACTER_SOURCE_DIR}"
RESULT_VARIABLE ZIP_GENERATE_RESULT
)
if(NOT ZIP_GENERATE_RESULT EQUAL 0)
message(FATAL_ERROR "Failed generating ${DST_DIR}/characters/${CHILD}.zip (exit code ${ZIP_GENERATE_RESULT})")
endif()
endforeach()
endif()
file(WRITE "${STAMP_FILE}" "resources copied\n")