diff options
author | saturneric <[email protected]> | 2024-01-30 12:21:46 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-01-30 12:21:46 +0000 |
commit | 8874026c55e60600ee6f981966acf79a480a83fb (patch) | |
tree | 0f0a6424f25346d580a7f293447bc97fdafd3716 | |
parent | fix: add general main window rect state fallback logic (diff) | |
download | GpgFrontend-8874026c55e60600ee6f981966acf79a480a83fb.tar.gz GpgFrontend-8874026c55e60600ee6f981966acf79a480a83fb.zip |
feat: try to add qt5 support
-rw-r--r-- | .github/workflows/release-qt5.yml | 76 | ||||
-rw-r--r-- | CMakeLists.txt | 7 | ||||
-rw-r--r-- | src/CMakeLists.txt | 80 | ||||
-rw-r--r-- | src/core/CMakeLists.txt | 11 | ||||
-rw-r--r-- | src/module/integrated/version_checking_module/CMakeLists.txt | 9 | ||||
-rw-r--r-- | src/pinentry/CMakeLists.txt | 9 | ||||
-rw-r--r-- | src/ui/CMakeLists.txt | 12 |
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 |