diff options
author | saturneric <[email protected]> | 2024-11-22 14:27:58 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-11-22 14:28:04 +0000 |
commit | 396f70b0686109a7ab245af8f8e4d234f4f18203 (patch) | |
tree | 8c0fbca0594a68ce77bf5169436b6b0d347d6e38 | |
parent | fix: solve devops problems (diff) | |
download | GpgFrontend-396f70b0686109a7ab245af8f8e4d234f4f18203.tar.gz GpgFrontend-396f70b0686109a7ab245af8f8e4d234f4f18203.zip |
feat: add build option GPGFRONTEND_BUILD_APP_IMAGE
-rw-r--r-- | .gitea/workflows/develop-qt5.yml | 2 | ||||
-rw-r--r-- | .gitea/workflows/develop-qt6.yml | 2 | ||||
-rw-r--r-- | CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/CMakeLists.txt | 35 |
4 files changed, 26 insertions, 18 deletions
diff --git a/.gitea/workflows/develop-qt5.yml b/.gitea/workflows/develop-qt5.yml index 4c8358ee..e4a95ca8 100644 --- a/.gitea/workflows/develop-qt5.yml +++ b/.gitea/workflows/develop-qt5.yml @@ -77,7 +77,7 @@ jobs: - name: Build GpgFrontend run: | - cmake -B ${{github.workspace}}/build -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_QT5_BUILD=ON + cmake -B ${{github.workspace}}/build -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_APP_IMAGE=On -DGPGFRONTEND_QT5_BUILD=ON cmake --build ${{github.workspace}}/build --config {{$env.BUILD_TYPE}} -- -v - name: Package App Image diff --git a/.gitea/workflows/develop-qt6.yml b/.gitea/workflows/develop-qt6.yml index 2c575c48..7666b21a 100644 --- a/.gitea/workflows/develop-qt6.yml +++ b/.gitea/workflows/develop-qt6.yml @@ -93,7 +93,7 @@ jobs: - name: Build GpgFrontend run: | - cmake -B ${{github.workspace}}/build -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DDGPGFRONTEND_BUILD_TYPE_ONLY_APPLICATION=ON + cmake -B ${{github.workspace}}/build -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_APP_IMAGE=On cmake --build ${{github.workspace}}/build --config {{$env.BUILD_TYPE}} -- -v # - name: Setup tmate session diff --git a/CMakeLists.txt b/CMakeLists.txt index f8d49a8b..d715eb77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,6 +74,7 @@ option(GPGFRONTEND_BUILD_TYPE_ONLY_APPLICATION "Generate a usable SDK" OFF) option(GPGFRONTEND_QT5_BUILD "Swith to Qt5 building mode" OFF) option(GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE "Generate an installable version" OFF) option(GPGFRONTEND_ENABLE_ASAN "Enable ASAN" OFF) +option(GPGFRONTEND_BUILD_APP_IMAGE "Build AppImage" OFF) # xcode options option(GPGFRONTEND_XCODE_TEAM_ID "GpgFrontend Apple Team ID" "NONE") @@ -162,6 +163,10 @@ if(GPGFRONTEND_BUILD_TYPE_ONLY_APPLICATION) set(STABLE_BUILD_ONLY_APPLICATION 1) endif() +if(GPGFRONTEND_BUILD_APP_IMAGE) + set(BUILD_APP_IMAGE 1) +endif() + # C++ # options for ccache diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 51239a4a..cfafd107 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -111,12 +111,7 @@ if(BUILD_APPLICATION) if(APPLE) set(RESOURCE_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Resources) elseif(LINUX AND NOT LINUX_INSTALL_SOFTWARE) - file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir) - file(COPY ${CMAKE_SOURCE_DIR}/resource/lfs/hicolor DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/share/icons) - file(COPY ${CMAKE_SOURCE_DIR}/resource/appstream/com.bktus.gpgfrontend.metainfo.xml DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/share/metainfo FOLLOW_SYMLINK_CHAIN) - file(COPY ${CMAKE_SOURCE_DIR}/resource/appstream/com.bktus.gpgfrontend.desktop DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/share/applications FOLLOW_SYMLINK_CHAIN) - file(COPY ${CMAKE_SOURCE_DIR}/resource/lfs/pixmaps/com.bktus.gpgfrontend.png DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir FOLLOW_SYMLINK_CHAIN) - set(RESOURCE_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/share) + set(BUILD_APP_IMAGE 1) else() set(RESOURCE_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) endif() @@ -131,8 +126,6 @@ if(BUILD_APPLICATION) set(GPGFRONTEND_MACOS_ICON ${CMAKE_SOURCE_DIR}/gpgfrontend.icns) set_source_files_properties(${GPGFRONTEND_MACOS_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") - elseif(LINUX AND NOT LINUX_INSTALL_SOFTWARE) - file(REMOVE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/bin/${AppName}) endif() endif() endif() @@ -347,18 +340,28 @@ if(BUILD_APPLICATION) add_custom_target(resources ALL DEPENDS ${RESOURCE_FILES}) endif() +if(BUILD_APP_IMAGE) + file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir) + file(COPY ${CMAKE_SOURCE_DIR}/resource/lfs/hicolor DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/share/icons) + file(COPY ${CMAKE_SOURCE_DIR}/resource/appstream/com.bktus.gpgfrontend.metainfo.xml DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/share/metainfo FOLLOW_SYMLINK_CHAIN) + file(COPY ${CMAKE_SOURCE_DIR}/resource/appstream/com.bktus.gpgfrontend.desktop DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/share/applications FOLLOW_SYMLINK_CHAIN) + file(COPY ${CMAKE_SOURCE_DIR}/resource/lfs/pixmaps/com.bktus.gpgfrontend.png DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir FOLLOW_SYMLINK_CHAIN) + set(RESOURCE_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/share) + + file(REMOVE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/bin/${AppName}) + add_executable(${AppName} ${BASE_SOURCE} ${RESOURCE_FILES}) + + add_custom_command(TARGET ${AppName} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/bin" + COMMAND ${CMAKE_COMMAND} -E rename "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${AppName}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/bin/${AppName}" + COMMENT "Copying Binary into App Image" + ) +endif() + if(BUILD_APPLICATION) if(${CMAKE_BUILD_TYPE} STREQUAL "Release") if(MINGW) add_executable(${AppName} WIN32 ${BASE_SOURCE} ${RESOURCE_FILES}) - elseif(LINUX AND NOT LINUX_INSTALL_SOFTWARE) - add_executable(${AppName} ${BASE_SOURCE} ${RESOURCE_FILES}) - - add_custom_command(TARGET ${AppName} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/bin" - COMMAND ${CMAKE_COMMAND} -E rename "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${AppName}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/AppDir/usr/bin/${AppName}" - COMMENT "Copying Binary into App Image" - ) # app bundle packing using xcode elseif(APPLE AND XCODE_BUILD) |