Add linux packaging tools
This commit is contained in:
parent
18ef177b78
commit
e4a841f132
2 changed files with 62 additions and 0 deletions
55
tools/package/CMakeLists.txt
Normal file
55
tools/package/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
option(PSEMEK_PACKAGE_MODE "Enable packaging mode" OFF)
|
||||
set(PSEMEK_PACKAGE_ROOT "" CACHE PATH "Packaging environment root")
|
||||
|
||||
if(PSEMEK_PACKAGE_MODE)
|
||||
|
||||
if(WIN32)
|
||||
set(PSEMEK_PACKAGE_SUFFIX_RAW win)
|
||||
elseif(UNIX AND (NOT APPLE))
|
||||
set(PSEMEK_PACKAGE_SUFFIX_RAW linux)
|
||||
elseif(UNIX AND APPLE)
|
||||
set(PSEMEK_PACKAGE_SUFFIX_RAW mac)
|
||||
else()
|
||||
message(FATAL "Uknown system for packaging")
|
||||
endif()
|
||||
set(PSEMEK_PACKAGE_SUFFIX ${PSEMEK_PACKAGE_SUFFIX_RAW} CACHE INTERNAL "Packaging suffix" FORCE)
|
||||
|
||||
if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))
|
||||
list(APPEND PSEMEK_CXX_FLAGS "-Wl,-rpath,." "-static-libgcc" "-static-libstdc++")
|
||||
endif()
|
||||
|
||||
set(PSEMEK_COPY_FILES_RAW)
|
||||
|
||||
# SDL2
|
||||
find_package(SDL2 REQUIRED)
|
||||
list(LENGTH SDL2_LIBRARIES SDL2_LIBRARIES_COUNT)
|
||||
if(NOT (SDL2_LIBRARIES_COUNT EQUAL 1))
|
||||
message(FATAL "SDL2_LIBRARIES contains more than 1 entry: ${SDL2_LIBRARIES}")
|
||||
message(FATAL "Aborting packaging")
|
||||
endif()
|
||||
list(APPEND PSEMEK_COPY_FILES_RAW ${SDL2_LIBRARIES})
|
||||
|
||||
set(PSEMEK_COPY_FILES_DIR "${CMAKE_CURRENT_BINARY_DIR}/copy_files")
|
||||
set(PSEMEK_COPY_FILES_ABSOLUTE)
|
||||
foreach(FILE ${PSEMEK_COPY_FILES_RAW})
|
||||
get_filename_component(REALPATH "${FILE}" REALPATH)
|
||||
get_filename_component(NAME "${FILE}" NAME)
|
||||
configure_file("${REALPATH}" "${PSEMEK_COPY_FILES_DIR}/${NAME}" COPYONLY)
|
||||
list(APPEND PSEMEK_COPY_FILES_ABSOLUTE "${PSEMEK_COPY_FILES_DIR}/${NAME}")
|
||||
endforeach()
|
||||
set(PSEMEK_COPY_FILES ${PSEMEK_COPY_FILES_ABSOLUTE} CACHE INTERNAL "List of external files to copy into the package" FORCE)
|
||||
|
||||
endif()
|
||||
|
||||
function(psemek_package_target target)
|
||||
if(PSEMEK_PACKAGE_MODE)
|
||||
|
||||
add_custom_command(TARGET ${target} POST_BUILD
|
||||
COMMAND ${CMAKE_STRIP} $<TARGET_FILE:${target}>)
|
||||
|
||||
add_custom_command(TARGET ${target} POST_BUILD
|
||||
COMMAND zip ${CMAKE_CURRENT_SOURCE_DIR}/${target}-${PSEMEK_PACKAGE_SUFFIX}.zip -j $<TARGET_FILE:${target}> ${PSEMEK_COPY_FILES}
|
||||
)
|
||||
|
||||
endif()
|
||||
endfunction()
|
||||
7
tools/package/bin/psemek-package-linux
Executable file
7
tools/package/bin/psemek-package-linux
Executable file
|
|
@ -0,0 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_DIR=`realpath "${1}"`
|
||||
|
||||
docker run -u 1000 -v "${PROJECT_DIR}":/home/work-source psemek:package-linux /home/package.sh
|
||||
|
||||
echo Packaging finished
|
||||
Loading…
Add table
Reference in a new issue