mirror of
https://github.com/palera1n/palera1n.git
synced 2026-10-24 19:19:48 +02:00
feat(build): AppImage, udevhelper
This commit is contained in:
1 parent
4cec4b0d4a
commit
bd0ed7a600
35 files changed
+410
-75
No files matched your search
@@ -3,7 +3,11 @@
|
||||
# =========================
|
||||
|
||||
if(LINUX AND NOT MINGW)
|
||||
if(WITH_GUI)
|
||||
install(TARGETS palera1n RUNTIME DESTINATION usr/bin)
|
||||
else()
|
||||
install(TARGETS palera1n RUNTIME DESTINATION bin)
|
||||
endif()
|
||||
elseif(IOS)
|
||||
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/Debug-iphoneos/palera1n.app/palera1n" DESTINATION bin)
|
||||
elseif(APPLE AND WITH_GUI)
|
||||
@@ -31,8 +35,36 @@ elseif(MINGW)
|
||||
endif()
|
||||
|
||||
if((LINUX AND NOT MINGW) OR IOS OR (APPLE AND NOT IOS AND NOT WITH_GUI))
|
||||
install(FILES "${CMAKE_SOURCE_DIR}/docs/palera1n.1" DESTINATION share/man/man1)
|
||||
install(FILES "${CMAKE_SOURCE_DIR}/docs/p1ctl.8" DESTINATION share/man/man8)
|
||||
install(FILES "${CMAKE_SOURCE_DIR}/docs/palera1n.1" DESTINATION usr/share/man/man1)
|
||||
install(FILES "${CMAKE_SOURCE_DIR}/docs/p1ctl.8" DESTINATION usr/share/man/man8)
|
||||
endif()
|
||||
|
||||
if((LINUX AND NOT MINGW) OR IOS OR (APPLE AND NOT IOS AND WITH_GUI))
|
||||
include(InstallRequiredSystemLibraries)
|
||||
install(
|
||||
FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/in.palera.palera1n.desktop"
|
||||
DESTINATION share/applications
|
||||
)
|
||||
|
||||
install(
|
||||
FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/icons/hicolor/64x64/apps/in.palera.palera1n.png"
|
||||
DESTINATION usr/share/icons/hicolor/64x64/apps
|
||||
)
|
||||
|
||||
install(
|
||||
FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/icons/hicolor/128x128/apps/in.palera.palera1n.png"
|
||||
DESTINATION usr/share/icons/hicolor/128x128/apps
|
||||
)
|
||||
|
||||
install(
|
||||
FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/icons/hicolor/256x256/apps/in.palera.palera1n.png"
|
||||
DESTINATION usr/share/icons/hicolor/256x256/apps
|
||||
)
|
||||
|
||||
install(
|
||||
FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/icons/hicolor/512x512/apps/in.palera.palera1n.png"
|
||||
DESTINATION usr/share/icons/hicolor/512x512/apps
|
||||
)
|
||||
endif()
|
||||
|
||||
set(CPACK_PACKAGE_NAME "palera1n")
|
||||
@@ -68,7 +100,11 @@ elseif(APPLE AND WITH_GUI)
|
||||
else()
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/")
|
||||
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
|
||||
set(CPACK_GENERATOR "TGZ")
|
||||
if(WITH_GUI)
|
||||
include("${CMAKE_SOURCE_DIR}/cmake/LinuxDeploy.cmake")
|
||||
else()
|
||||
set(CPACK_GENERATOR "TGZ")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
@@ -0,0 +1,111 @@
|
||||
# cmake/LinuxDeploy.cmake
|
||||
|
||||
include(FetchContent)
|
||||
|
||||
set(LINUXDEPLOY_URL
|
||||
"https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
|
||||
)
|
||||
|
||||
set(LINUXDEPLOY
|
||||
"${CMAKE_BINARY_DIR}/linuxdeploy"
|
||||
)
|
||||
|
||||
if(NOT EXISTS "${LINUXDEPLOY}")
|
||||
message(STATUS "Downloading linuxdeploy...")
|
||||
|
||||
file(DOWNLOAD
|
||||
"${LINUXDEPLOY_URL}"
|
||||
"${LINUXDEPLOY}"
|
||||
SHOW_PROGRESS
|
||||
STATUS LINUXDEPLOY_DOWNLOAD_STATUS
|
||||
)
|
||||
|
||||
list(GET LINUXDEPLOY_DOWNLOAD_STATUS 0 LINUXDEPLOY_DOWNLOAD_RESULT)
|
||||
|
||||
if(NOT LINUXDEPLOY_DOWNLOAD_RESULT EQUAL 0)
|
||||
list(GET LINUXDEPLOY_DOWNLOAD_STATUS 1 LINUXDEPLOY_DOWNLOAD_ERROR)
|
||||
|
||||
message(FATAL_ERROR
|
||||
"Failed to download linuxdeploy: ${LINUXDEPLOY_DOWNLOAD_ERROR}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
file(
|
||||
CHMOD "${LINUXDEPLOY}"
|
||||
FILE_PERMISSIONS
|
||||
OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
||||
GROUP_READ GROUP_EXECUTE
|
||||
WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
|
||||
set(CPACK_GENERATOR "External")
|
||||
set(CPACK_EXTERNAL_ENABLE_STAGING YES)
|
||||
|
||||
set(CPACK_EXTERNAL_PACKAGE_SCRIPT
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/LinuxDeploy-package.cmake"
|
||||
)
|
||||
|
||||
set(LINUXDEPLOY_SCRIPT [=[
|
||||
set(APPDIR "${CPACK_TEMPORARY_DIRECTORY}")
|
||||
set(OUTPUT_DIR "@CMAKE_BINARY_DIR@")
|
||||
|
||||
set(DESKTOP_FILE
|
||||
"${APPDIR}/share/applications/in.palera.palera1n.desktop"
|
||||
)
|
||||
|
||||
message(STATUS "Running linuxdeploy")
|
||||
message(STATUS "AppDir: ${APPDIR}")
|
||||
message(STATUS "Output: ${OUTPUT_DIR}")
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
"@LINUXDEPLOY@"
|
||||
"--appdir=${APPDIR}"
|
||||
"--desktop-file=${DESKTOP_FILE}"
|
||||
"--output=appimage"
|
||||
WORKING_DIRECTORY "${OUTPUT_DIR}"
|
||||
RESULT_VARIABLE RESULT
|
||||
OUTPUT_VARIABLE OUTPUT
|
||||
ERROR_VARIABLE ERROR
|
||||
)
|
||||
|
||||
if(OUTPUT)
|
||||
message(STATUS "${OUTPUT}")
|
||||
endif()
|
||||
|
||||
if(ERROR)
|
||||
message(STATUS "${ERROR}")
|
||||
endif()
|
||||
|
||||
if(NOT RESULT EQUAL 0)
|
||||
message(FATAL_ERROR
|
||||
"linuxdeploy failed with exit code ${RESULT}"
|
||||
)
|
||||
endif()
|
||||
|
||||
message(STATUS
|
||||
"AppImage generated in ${OUTPUT_DIR}"
|
||||
)
|
||||
]=])
|
||||
|
||||
string(
|
||||
REPLACE
|
||||
"@LINUXDEPLOY@"
|
||||
"${LINUXDEPLOY}"
|
||||
LINUXDEPLOY_SCRIPT
|
||||
"${LINUXDEPLOY_SCRIPT}"
|
||||
)
|
||||
|
||||
string(
|
||||
REPLACE
|
||||
"@CMAKE_BINARY_DIR@"
|
||||
"${CMAKE_BINARY_DIR}"
|
||||
LINUXDEPLOY_SCRIPT
|
||||
"${LINUXDEPLOY_SCRIPT}"
|
||||
)
|
||||
|
||||
file(GENERATE
|
||||
OUTPUT "${CPACK_EXTERNAL_PACKAGE_SCRIPT}"
|
||||
CONTENT "${LINUXDEPLOY_SCRIPT}"
|
||||
)
|
||||
Reference in new issue
Block a user