diff --git a/package/CMakeLists.txt b/package/CMakeLists.txt index 85519b3b..120caf39 100644 --- a/package/CMakeLists.txt +++ b/package/CMakeLists.txt @@ -23,6 +23,14 @@ if(PSEMEK_PACKAGE_MODE) set(PSEMEK_COPY_FILES_RAW) endif() +function(psemek_package_output_path target outvar) + if(NOT PSEMEK_PACKAGE_MODE) + message(FATAL "psemek_package_output_path must only be called during packaging") + endif() + + set(${outvar} "${CMAKE_CURRENT_LIST_DIR}/${PSEMEK_PACKAGE_OUTPUT_PATH}/${target}${PSEMEK_PACKAGE_VERSION_SUFFIX}-${PSEMEK_PACKAGE_SUFFIX}.zip" PARENT_SCOPE) +endfunction() + function(psemek_add_executable target) if((NOT PSEMEK_PACKAGE_MODE) OR PSEMEK_PACKAGE_TARGET) add_executable(${target} ${ARGN}) @@ -50,8 +58,11 @@ function(psemek_add_executable target) ) endif() + psemek_package_output_path(${target} _OUTPUT_PATH) + add_custom_command(TARGET ${target} POST_BUILD - COMMAND zip -v ${CMAKE_CURRENT_LIST_DIR}/${PSEMEK_PACKAGE_OUTPUT_PATH}/${target}${PSEMEK_PACKAGE_VERSION_SUFFIX}-${PSEMEK_PACKAGE_SUFFIX}.zip -j $ ${PSEMEK_PACKAGE_COPY_FILES} + COMMAND echo Packaging target ${target} into ${_OUTPUT_PATH} + COMMAND zip -v "${_OUTPUT_PATH}" -j $ ${PSEMEK_PACKAGE_COPY_FILES} ) endif() endif() @@ -104,8 +115,6 @@ function(psemek_add_winrc target path) file(MAKE_DIRECTORY "${OUT_DIR}/winrc") set(_OUT_FILE "${OUT_DIR}/winrc/res.o") - message("CMAKE_RC_COMPILER: ${CMAKE_RC_COMPILER}") - add_custom_command(OUTPUT "${_OUT_FILE}" COMMAND ${CMAKE_RC_COMPILER} "${_IN_FILE}" "${_OUT_FILE}" DEPENDS psemek-resource-compiler "${_IN_FILE}" @@ -114,3 +123,18 @@ function(psemek_add_winrc target path) target_sources(${target} PRIVATE "${_OUT_FILE}") endif() endfunction() + +function(psemek_package_files target) + if(PSEMEK_PACKAGE_MODE) + if(PSEMEK_PACKAGE_TARGET) + psemek_package_output_path(${target} _OUTPUT_PATH) + + add_custom_command(TARGET ${target} POST_BUILD + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + COMMAND zip -v "${_OUTPUT_PATH}" -r ${ARGN} + ) + endif() + else() + file(COPY ${ARGN} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) + endif() +endfunction()