From 03ee76e0a5c1a1b3458502ef1d2ef960c3fd8094 Mon Sep 17 00:00:00 2001 From: shweet Date: Mon, 2 Mar 2026 15:56:45 -0500 Subject: [PATCH] ffffffffffff --- CMakeLists.txt | 11 ++++++++ cmake/create_windows_zip.cmake | 47 ++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 cmake/create_windows_zip.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index ca6784f..018dcd6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -259,6 +259,17 @@ else() target_link_libraries(${PROJECT_NAME} PRIVATE OpenGL::GL) endif() +if(WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} + -DBIN_ROOT="${CMAKE_BINARY_DIR}/bin" + -DTARGET_DIR="$" + -DEXE_FILE="$" + -DPACKAGE_NAME="snivy-win32" + -P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/create_windows_zip.cmake" + COMMENT "Creating snivy-win32 package") +endif() + message(STATUS "System: ${CMAKE_SYSTEM_NAME}") message(STATUS "Project: ${PROJECT_NAME}") message(STATUS "Compiler: ${CMAKE_CXX_COMPILER}") diff --git a/cmake/create_windows_zip.cmake b/cmake/create_windows_zip.cmake new file mode 100644 index 0000000..53f3528 --- /dev/null +++ b/cmake/create_windows_zip.cmake @@ -0,0 +1,47 @@ +if(NOT DEFINED BIN_ROOT OR BIN_ROOT STREQUAL "") + message(FATAL_ERROR "BIN_ROOT is required") +endif() + +if(NOT DEFINED TARGET_DIR OR TARGET_DIR STREQUAL "") + message(FATAL_ERROR "TARGET_DIR is required") +endif() + +if(NOT DEFINED EXE_FILE OR EXE_FILE STREQUAL "") + message(FATAL_ERROR "EXE_FILE is required") +endif() + +if(NOT DEFINED PACKAGE_NAME OR PACKAGE_NAME STREQUAL "") + set(PACKAGE_NAME "snivy-win32") +endif() + +set(EXE_PATH "${TARGET_DIR}/${EXE_FILE}") +set(PACKAGE_DIR "${BIN_ROOT}/${PACKAGE_NAME}") +set(ARCHIVE_PATH "${BIN_ROOT}/${PACKAGE_NAME}.zip") +set(TARGET_RESOURCES_DIR "${TARGET_DIR}/resources") +set(BIN_RESOURCES_DIR "${BIN_ROOT}/resources") + +file(MAKE_DIRECTORY "${BIN_ROOT}") +file(REMOVE_RECURSE "${PACKAGE_DIR}") +file(REMOVE "${ARCHIVE_PATH}") +file(MAKE_DIRECTORY "${PACKAGE_DIR}") + +if(EXISTS "${EXE_PATH}") + file(COPY "${EXE_PATH}" DESTINATION "${PACKAGE_DIR}") +else() + message(FATAL_ERROR "Executable not found: ${EXE_PATH}") +endif() + +if(EXISTS "${TARGET_RESOURCES_DIR}") + file(COPY "${TARGET_RESOURCES_DIR}" DESTINATION "${PACKAGE_DIR}") +elseif(EXISTS "${BIN_RESOURCES_DIR}") + file(COPY "${BIN_RESOURCES_DIR}" DESTINATION "${PACKAGE_DIR}") +endif() + +execute_process( + COMMAND "${CMAKE_COMMAND}" -E tar cf "${PACKAGE_NAME}.zip" --format=zip "${PACKAGE_NAME}" + WORKING_DIRECTORY "${BIN_ROOT}" + RESULT_VARIABLE ZIP_RESULT +) +if(NOT ZIP_RESULT EQUAL 0) + message(FATAL_ERROR "Failed creating ${ARCHIVE_PATH}") +endif()