42 lines
1.6 KiB
CMake
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")
|