aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-01-30 12:21:46 +0000
committersaturneric <[email protected]>2024-01-30 12:21:46 +0000
commit8874026c55e60600ee6f981966acf79a480a83fb (patch)
tree0f0a6424f25346d580a7f293447bc97fdafd3716
parentfix: add general main window rect state fallback logic (diff)
downloadGpgFrontend-8874026c55e60600ee6f981966acf79a480a83fb.tar.gz
GpgFrontend-8874026c55e60600ee6f981966acf79a480a83fb.zip
feat: try to add qt5 support
-rw-r--r--.github/workflows/release-qt5.yml76
-rw-r--r--CMakeLists.txt7
-rw-r--r--src/CMakeLists.txt80
-rw-r--r--src/core/CMakeLists.txt11
-rw-r--r--src/module/integrated/version_checking_module/CMakeLists.txt9
-rw-r--r--src/pinentry/CMakeLists.txt9
-rw-r--r--src/ui/CMakeLists.txt12
7 files changed, 175 insertions, 29 deletions
diff --git a/.github/workflows/release-qt5.yml b/.github/workflows/release-qt5.yml
new file mode 100644
index 00000000..d19bc68b
--- /dev/null
+++ b/.github/workflows/release-qt5.yml
@@ -0,0 +1,76 @@
+name: Build & Package
+
+on:
+ push:
+ branches: [ main, 'develop' ]
+ paths-ignore:
+ - 'resource/locale/**'
+ - 'manual/**'
+ - '**.md'
+ pull_request:
+ branches: [ main, 'develop' ]
+ paths-ignore:
+ - 'resource/locale/**'
+ - 'manual/**'
+ - '**.md'
+
+env:
+ # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
+ BUILD_TYPE: Release
+ EXECUTABLE_OUTPUT_PATH: ./
+
+jobs:
+ build:
+ strategy:
+ matrix:
+ os: [ 'windows-2019' ]
+ runs-on: ${{ matrix.os }}
+ continue-on-error: true
+ steps:
+ - name: Set git to use LF(Windows) or CRLF(MacOS) line endings
+ run: |
+ git config --global core.autocrlf false
+ git config --global core.eol lf
+ if: matrix.os == 'windows-2019' || matrix.os == 'macos-11' || matrix.os == 'macos-12'
+
+ - uses: actions/checkout@v3
+ with:
+ lfs: 'false'
+ submodules: recursive
+
+ - name: Get Short SHA of Commit
+ id: vars
+ run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
+
+ - name: Set up MinGW (Windows)
+ uses: msys2/setup-msys2@v2
+ with:
+ install: git msys2-devel base-devel binutils mingw-w64-x86_64-toolchain
+ release: false
+ if: matrix.os == 'windows-2019'
+
+ - name: Set up Dependence (Windows)
+ shell: msys2 {0}
+ run: |
+ pacman --noconfirm -S --needed mingw-w64-x86_64-gcc mingw-w64-x86_64-make mingw-w64-x86_64-cmake autoconf
+ pacman --noconfirm -S --needed make texinfo automake
+ pacman --noconfirm -S --needed mingw-w64-x86_64-qt5 libintl msys2-runtime-devel gettext-devel mingw-w64-x86_64-gpgme
+ pacman --noconfirm -S --needed mingw-w64-x86_64-ninja mingw-w64-x86_64-gnupg mingw-w64-x86_64-libarchive
+ if: matrix.os == 'windows-2019'
+
+ - name: Configure CMake & Build Binary(Windows)
+ shell: msys2 {0}
+ run: |
+ cd $(echo "/${{github.workspace}}" | sed 's/\\/\//g' | sed 's/://')
+ mkdir build && cd build
+ cmake -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_TYPE_STABLE=ON ..
+ # Build your program with the given configuration
+ cmake --build . --config ${{env.BUILD_TYPE}} -- -j 2
+ if: matrix.os == 'windows-2019'
+
+ - name: Upload Artifact(Windows)
+ uses: actions/upload-artifact@master
+ with:
+ name: gpgfrontend-${{matrix.os}}-${{env.BUILD_TYPE}}-${{ github.sha }}
+ path: ${{github.workspace}}/build/artifacts/*
+ if: matrix.os == 'windows-2019'
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 44c64140..2819895f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -64,6 +64,7 @@ option(GPGFRONTEND_BUILD_TYPE_TEST_ALL
"Generate a graphical interface with all functions" OFF)
option(GPGFRONTEND_BUILD_TYPE_STABLE
"Generate release version" ON)
+option(GPGFRONTEND_QT5_BUILD "Swith to Qt5 building mode" OFF)
option(GPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE "Generate an installable version" OFF)
option(GPGFRONTEND_CONFIGURE_FOR_XCODE_BUILD "Generate a version that can be successfully compiled and packaged in Xcode" OFF)
option(GPGFRONTEND_XCODE_TEAM_ID "GpgFrontend Apple Team ID" "NONE")
@@ -330,6 +331,12 @@ else ()
set(APP_INSTALL_FLAG BUNDLE)
endif ()
+if (GPGFRONTEND_QT5_BUILD)
+ add_compile_definitions(QT5_BUILD)
+else()
+ add_compile_definitions(QT6_BUILD)
+endif()
+
# Basic ENV Configure
set(BASIC_ENV_CONFIG 1)
set(QT_MOC_CONFIG 1)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6a7cf4a8..a464b4c3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -53,9 +53,17 @@ if (APPLE)
endif()
find_package(OpenSSL REQUIRED)
-# Introduce Qt
-# Support Qt version: 6.x
-find_package(Qt6 6 COMPONENTS Core Test Widgets PrintSupport Network Core5Compat LinguistTools REQUIRED)
+
+if(GPGFRONTEND_QT5_BUILD)
+ # Introduce Qt
+ # Support Qt version: 5.15.x
+ find_package(Qt5 5.15 COMPONENTS Core Widgets PrintSupport Network LinguistTools REQUIRED)
+else()
+ # Introduce Qt
+ # Support Qt version: 6.x
+ find_package(Qt6 6 COMPONENTS Core Widgets PrintSupport Network Core5Compat LinguistTools REQUIRED)
+endif()
+
# Qt configuration
set(CMAKE_AUTOMOC ON)
@@ -447,22 +455,56 @@ if (BUILD_APPLICATION)
"${LOCALE_TS_PATH}/GpgFrontend.zh_TW.ts"
"${LOCALE_TS_PATH}/GpgFrontend.it_IT.ts")
file(GLOB_RECURSE ALL_SOURCE_FILES RELACTIVE ${CMAKE_SOURCE_DIR}/src/*.cpp)
- qt_add_translations(${AppName}
- RESOURCE_PREFIX "/i18n"
- TS_FILES ${TS_FILES}
- SOURCES ${ALL_SOURCE_FILES}
- INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/src)
-
- file(GLOB QT_TRANSLATIONS_TS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/third_party/qttranslations/translations/*.ts)
- list(FILTER QT_TRANSLATIONS_TS INCLUDE REGEX ".*(qt|qtbase)_.*\.ts$")
- add_custom_target(qttranslations ALL)
- qt_add_lrelease(qttranslations
- TS_FILES ${QT_TRANSLATIONS_TS}
- QM_FILES_OUTPUT_VARIABLE QT_TRANSLATIONS_QM)
- qt_add_resources(${AppName} "qttranslations"
- PREFIX "/i18n_qt"
- BASE ${CMAKE_CURRENT_BINARY_DIR}
- FILES ${QT_TRANSLATIONS_QM})
+
+ if(GPGFRONTEND_QT5_BUILD)
+ # TODO
+ qt5_add_translation(GF_TRANSLATIONS_QM ${TS_FILES})
+ message(STATUS "GF_TRANSLATIONS_QM ${GF_TRANSLATIONS_QM}")
+
+ set(GF_QM_TRANSLATIONS_RESOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR}/i18n.qrc")
+ file(WRITE ${GF_QM_TRANSLATIONS_RESOURCE_FILE} "<!DOCTYPE RCC>\n<RCC version=\"1.0\">\n <qresource prefix=\"i18n\">\n")
+ foreach(QM_FILE ${GF_TRANSLATIONS_QM})
+ file(RELATIVE_PATH QM_FILENAME ${CMAKE_CURRENT_BINARY_DIR} ${QM_FILE})
+ file(APPEND ${GF_QM_TRANSLATIONS_RESOURCE_FILE} " <file alias=\"${QM_FILENAME}\">${QM_FILE}</file>\n")
+ endforeach()
+ file(APPEND ${GF_QM_TRANSLATIONS_RESOURCE_FILE} " </qresource>\n</RCC>\n")
+ qt5_add_resources(GF_I18N_RESOURCES ${GF_QM_TRANSLATIONS_RESOURCE_FILE})
+
+ file(GLOB QT_TRANSLATIONS_TS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/third_party/qttranslations/translations/*.ts)
+ list(FILTER QT_TRANSLATIONS_TS INCLUDE REGEX ".*(qt|qtbase)_.*\.ts$")
+ qt5_add_translation(QT_TRANSLATIONS_QM ${QT_TRANSLATIONS_TS})
+
+ set(QT_QM_TRANSLATIONS_RESOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR}/qt_i18n.qrc")
+ file(WRITE ${QT_QM_TRANSLATIONS_RESOURCE_FILE} "<!DOCTYPE RCC>\n<RCC version=\"1.0\">\n <qresource prefix=\"qt_i18n\">\n")
+ foreach(QM_FILE ${QT_TRANSLATIONS_QM})
+ file(RELATIVE_PATH QM_FILENAME ${CMAKE_CURRENT_BINARY_DIR} ${QM_FILE})
+ file(APPEND ${QT_QM_TRANSLATIONS_RESOURCE_FILE} " <file alias=\"${QM_FILENAME}\">${QM_FILE}</file>\n")
+ endforeach()
+ file(APPEND ${QT_QM_TRANSLATIONS_RESOURCE_FILE} " </qresource>\n</RCC>\n")
+ qt5_add_resources(GF_I18N_RESOURCES ${QT_QM_TRANSLATIONS_RESOURCE_FILE})
+
+ message(STATUS "GF_I18N_RESOURCES ${GF_I18N_RESOURCES}")
+
+ target_sources(${AppName} PRIVATE ${GF_I18N_RESOURCES})
+ else()
+ qt_add_translations(${AppName}
+ RESOURCE_PREFIX "/i18n"
+ TS_FILES ${TS_FILES}
+ SOURCES ${ALL_SOURCE_FILES}
+ INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/src)
+ file(GLOB QT_TRANSLATIONS_TS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/third_party/qttranslations/translations/*.ts)
+ list(FILTER QT_TRANSLATIONS_TS INCLUDE REGEX ".*(qt|qtbase)_.*\.ts$")
+ add_custom_target(qttranslations ALL)
+ qt_add_lrelease(qttranslations
+ TS_FILES ${QT_TRANSLATIONS_TS}
+ QM_FILES_OUTPUT_VARIABLE QT_TRANSLATIONS_QM)
+ qt_add_resources(${AppName} "qttranslations"
+ PREFIX "/i18n_qt"
+ BASE ${CMAKE_CURRENT_BINARY_DIR}
+ FILES ${QT_TRANSLATIONS_QM})
+ endif()
+
+
endif()
# if building linux package
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index a37ea7ee..b5dd3571 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -99,9 +99,14 @@ endif()
# link libarchive
target_link_libraries(gpgfrontend_core PRIVATE archive)
-
-# link Qt core
-target_link_libraries(gpgfrontend_core PUBLIC Qt6::Core)
+
+if(GPGFRONTEND_QT5_BUILD)
+ # link Qt core
+ target_link_libraries(gpgfrontend_core PUBLIC Qt5::Core)
+else()
+ # link Qt core
+ target_link_libraries(gpgfrontend_core PUBLIC Qt6::Core)
+endif()
# set up pch
target_precompile_headers(gpgfrontend_core
diff --git a/src/module/integrated/version_checking_module/CMakeLists.txt b/src/module/integrated/version_checking_module/CMakeLists.txt
index f122be88..76459b0e 100644
--- a/src/module/integrated/version_checking_module/CMakeLists.txt
+++ b/src/module/integrated/version_checking_module/CMakeLists.txt
@@ -46,8 +46,13 @@ endif ()
target_link_libraries(gpgfrontend_integrated_module_version_checking PRIVATE
gpgfrontend_module_sdk)
-# link Qt
-target_link_libraries(gpgfrontend_integrated_module_version_checking PRIVATE Qt6::Network)
+if(GPGFRONTEND_QT5_BUILD)
+ # link Qt
+ target_link_libraries(gpgfrontend_integrated_module_version_checking PUBLIC Qt5::Network)
+else()
+ # link Qt
+ target_link_libraries(gpgfrontend_integrated_module_version_checking PUBLIC Qt6::Network)
+endif()
# property
set_property(TARGET gpgfrontend_integrated_module_version_checking PROPERTY AUTOMOC ON)
diff --git a/src/pinentry/CMakeLists.txt b/src/pinentry/CMakeLists.txt
index b31e4f05..3145719a 100644
--- a/src/pinentry/CMakeLists.txt
+++ b/src/pinentry/CMakeLists.txt
@@ -37,8 +37,13 @@ add_library(gpgfrontend_pinentry SHARED ${PINENTRY_SOURCE})
target_link_libraries(gpgfrontend_pinentry PUBLIC gpgfrontend_core)
-# link Qt core
-target_link_libraries(gpgfrontend_pinentry PUBLIC Qt6::Widgets)
+if(GPGFRONTEND_QT5_BUILD)
+ # link Qt core
+ target_link_libraries(gpgfrontend_pinentry PUBLIC Qt5::Widgets)
+else()
+ # link Qt core
+ target_link_libraries(gpgfrontend_pinentry PUBLIC Qt6::Widgets)
+endif()
# spdlog
target_link_libraries(gpgfrontend_pinentry PRIVATE spdlog)
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt
index c9c27462..3f0686e2 100644
--- a/src/ui/CMakeLists.txt
+++ b/src/ui/CMakeLists.txt
@@ -47,9 +47,15 @@ add_library(gpgfrontend_ui SHARED ${UI_SOURCE})
set(_export_file "${CMAKE_CURRENT_SOURCE_DIR}/GpgFrontendUIExport.h")
generate_export_header(gpgfrontend_ui EXPORT_FILE_NAME "${_export_file}")
-# link Qt
-target_link_libraries(gpgfrontend_ui
- Qt6::Network Qt6::PrintSupport Qt6::Test Qt6::Core5Compat)
+if(GPGFRONTEND_QT5_BUILD)
+ # link Qt
+ target_link_libraries(gpgfrontend_ui
+ Qt5::Core Qt5::Widgets Qt5::Network Qt5::PrintSupport)
+else()
+ # link Qt
+ target_link_libraries(gpgfrontend_ui
+ Qt6::Core Qt6::Widgets Qt6::Network Qt6::PrintSupport Qt6::Core5Compat)
+endif()
# link gpgfrontend_core