aboutsummaryrefslogtreecommitdiffstats
path: root/src/CMakeLists.txt
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-07-29 01:48:21 +0000
committersaturneric <[email protected]>2024-07-29 01:48:21 +0000
commit3dccd8cff1c3b063110e00112b0878de887daca3 (patch)
tree68fdeebd5ffe8bbbc53845559d7754bc8154976d /src/CMakeLists.txt
parentfix: copy is not the real one (diff)
downloadGpgFrontend-3dccd8cff1c3b063110e00112b0878de887daca3.tar.gz
GpgFrontend-3dccd8cff1c3b063110e00112b0878de887daca3.zip
fix: solve qt5 problems
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r--src/CMakeLists.txt878
1 files changed, 436 insertions, 442 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 339b0277..7cc190a3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -23,7 +23,7 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later
-#
+#
if(APPLE)
add_compile_definitions("_GNU_SOURCE")
endif()
@@ -31,361 +31,356 @@ endif()
# Introduce GpgME
find_package(Gpgme REQUIRED)
-
# Introduce OpenSSL
-if (APPLE)
- # Define possible OpenSSL directories
- set(OPENSSL_DIR_CANDIDATES
- /usr/local/opt/openssl@3
- /opt/homebrew/opt/openssl@3
- )
-
- # Find the valid OpenSSL directory
- foreach(DIR IN LISTS OPENSSL_DIR_CANDIDATES)
- if(IS_DIRECTORY "${DIR}" OR EXISTS "${DIR}")
- set(OPENSSL_ROOT_DIR "${DIR}")
- break() # Stop loop once a valid directory is found
- endif()
- endforeach()
+if(APPLE)
+ # Define possible OpenSSL directories
+ set(OPENSSL_DIR_CANDIDATES
+ /usr/local/opt/openssl@3
+ /opt/homebrew/opt/openssl@3
+ )
- # If not found, throw an error or warning
- if(NOT OPENSSL_ROOT_DIR)
- message(FATAL_ERROR "OpenSSL not found in the standard directories. Please install it or set OPENSSL_ROOT_DIR manually.")
+ # Find the valid OpenSSL directory
+ foreach(DIR IN LISTS OPENSSL_DIR_CANDIDATES)
+ if(IS_DIRECTORY "${DIR}" OR EXISTS "${DIR}")
+ set(OPENSSL_ROOT_DIR "${DIR}")
+ break() # Stop loop once a valid directory is found
endif()
+ endforeach()
+
+ # If not found, throw an error or warning
+ if(NOT OPENSSL_ROOT_DIR)
+ message(FATAL_ERROR "OpenSSL not found in the standard directories. Please install it or set OPENSSL_ROOT_DIR manually.")
+ endif()
endif()
find_package(OpenSSL REQUIRED)
-
# Set Build Information
configure_file(${CMAKE_SOURCE_DIR}/src/GpgFrontend.h.in ${CMAKE_SOURCE_DIR}/src/GpgFrontend.h @ONLY)
configure_file(${CMAKE_SOURCE_DIR}/src/GpgFrontendBuildInfo.h.in ${CMAKE_SOURCE_DIR}/src/GpgFrontendBuildInfo.h @ONLY)
configure_file(${CMAKE_SOURCE_DIR}/src/GpgFrontendBuildInstallInfo.h.in ${CMAKE_SOURCE_DIR}/src/GpgFrontendBuildInstallInfo.h @ONLY)
configure_file(${CMAKE_SOURCE_DIR}/src/sdk/GFSDKBuildInfo.h.in ${CMAKE_SOURCE_DIR}/src/sdk/GFSDKBuildInfo.h @ONLY)
-if (APPLE)
- configure_file(${CMAKE_SOURCE_DIR}/resource/plist/ExportOptions.plist.in ${CMAKE_BINARY_DIR}/ExportOptions.plist @ONLY)
-endif ()
-
+if(APPLE)
+ configure_file(${CMAKE_SOURCE_DIR}/resource/plist/ExportOptions.plist.in ${CMAKE_BINARY_DIR}/ExportOptions.plist @ONLY)
+endif()
# Set Runtime Output Directory
-if (NOT XCODE_BUILD)
- # Set Binary Output Path
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/artifacts)
-else ()
- # Set Binary Output Path
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE})
-endif ()
-
+if(NOT XCODE_BUILD)
+ # Set Binary Output Path
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/artifacts)
+else()
+ # Set Binary Output Path
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE})
+endif()
# Print modules
-if (BUILD_CORE)
- message("[+] Build Core")
- add_subdirectory(core)
-endif ()
+if(BUILD_CORE)
+ message("[+] Build Core")
+ add_subdirectory(core)
+endif()
-if (BUILD_UI)
- message("[+] Build UI")
- add_subdirectory(ui)
-endif ()
+if(BUILD_UI)
+ message("[+] Build UI")
+ add_subdirectory(ui)
+endif()
-if (BUILD_SDK)
- message("[+] Build SDK")
- add_subdirectory(sdk)
-endif ()
+if(BUILD_SDK)
+ message("[+] Build SDK")
+ add_subdirectory(sdk)
+endif()
# build to test gpgfrontend core
-if (BUILD_TEST)
- include(CTest)
- enable_testing()
- add_subdirectory(test)
-endif ()
+if(BUILD_TEST)
+ include(CTest)
+ enable_testing()
+ add_subdirectory(test)
+endif()
# configure for output path and resources
-if (BUILD_APPLICATION)
- aux_source_directory(. BASE_SOURCE)
- set(APP_ICON_RESOURCE_WINDOWS "${CMAKE_SOURCE_DIR}/gpgfrontend.rc")
- set_property(SOURCE gpgfrontend.rc APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_SOURCE_DIR}/gpgfrontend.ico)
-endif ()
-
-if (BUILD_APPLICATION)
- # Set Resource Output Path
- if (${CMAKE_BUILD_TYPE} STREQUAL "Release")
- 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)
- else ()
- set(RESOURCE_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
- endif ()
- else ()
- set(RESOURCE_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
- endif ()
-endif ()
-
-if (BUILD_APPLICATION)
- if (${CMAKE_BUILD_TYPE} STREQUAL "Release")
- if (APPLE)
- 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 ()
-
-if (BUILD_APPLICATION)
- # Copy Utils Files
- if (MINGW)
- message(STATUS "Copying Dependent DLL For Windows Runtime Env")
-
- set(ALL_RUNTIME_DEP_PATH_LIST "")
-
- # get mingw bin path
- find_file(_libGccDllPath NAMES libgcc_s_seh-1.dll NO_CACHE REQUIRED)
- cmake_path(GET _libGccDllPath PARENT_PATH _libDllBinPath)
-
- # find libicu*.dll
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libicu[a-z]*[0-9][0-9].dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libassuan*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libbz*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libcrypto-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libexpat-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libfreetype-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libgcc_s_seh-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libglib-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libgpg-error*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libgpgme*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libgraphite2.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libharfbuzz-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libiconv-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libintl-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/liblz4.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/liblzma-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libpcre-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libpcre2-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libpng*-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libstdc++-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libwinpthread-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/zlib*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libb2-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- # openssl
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libssl-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libcrypto-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- unset(_libDllPath)
- file(GLOB _libDllPath "${_libDllBinPath}/libxml2-*.dll")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
-
- # /mingw64/libexec
- execute_process(
- COMMAND cygpath -m /mingw64/libexec
- OUTPUT_VARIABLE MSYS64_LIBEXEC_PATH
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-
- # gpgme-w32spawn.exe
- unset(_libExEPath)
- file(GLOB _libExEPath "${MSYS64_LIBEXEC_PATH}/gpgme-*.exe")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libExEPath})
-
- unset(_libExEPath)
- file(GLOB _libExEPath "${_libDllBinPath}/gpgme-*.exe")
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libExEPath})
-
- set(ALL_RUNTIME_DLL_FILES "")
-
- if(GPGFRONTEND_QT5_BUILD)
- list(APPEND ALL_RUNTIME_DLL_FILES "Qt5Core.dll;Qt5Gui.dll;Qt5Network.dll;Qt5PrintSupport.dll;Qt5Svg.dll;Qt5Widgets.dll;libbrotlicommon.dll;libbrotlidec.dll;libdouble-conversion.dll;libzstd.dll;libmd4c.dll;")
- else()
- list(APPEND ALL_RUNTIME_DLL_FILES "Qt6Core.dll;Qt6Core5Compat.dll;Qt6Gui.dll;Qt6Network.dll;Qt6PrintSupport.dll;Qt6Svg.dll;Qt6Widgets.dll;libbrotlicommon.dll;libbrotlidec.dll;libdouble-conversion.dll;libzstd.dll;libmd4c.dll;")
- endif()
-
- # find the other dlls
- foreach (_dllFileName ${ALL_RUNTIME_DLL_FILES})
- message(STATUS "DLL FILE ${_dllFileName}")
- list(APPEND ALL_DLL_NAME ${_dllFileName})
- unset(_runtimeDllLocalPath)
-
- find_file(_runtimeDllLocalPath NAMES ${_dllFileName} NO_CACHE REQUIRED)
- list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_runtimeDllLocalPath})
- message(STATUS "DLL ${_dllFileName} Path is ${_runtimeDllLocalPath}")
- endforeach()
-
- message(STATUS "All Runtime Dependencies Path ${ALL_RUNTIME_DEP_PATH_LIST}")
-
- # copy dependencies to release path
- foreach (_dllRuntimeFilePath ${ALL_RUNTIME_DEP_PATH_LIST})
- file(COPY ${_dllRuntimeFilePath} DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ FOLLOW_SYMLINK_CHAIN)
- endforeach()
-
- endif ()
-endif ()
-
-if (BUILD_APPLICATION)
- set(RESOURCE_FILES ${CMAKE_SOURCE_DIR}/gpgfrontend.qrc ${APP_ICON_RESOURCE_WINDOWS} ${QON_QM_FILES})
- add_custom_target(resources ALL DEPENDS ${RESOURCE_FILES})
-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)
- # standard app bundle packing
- add_executable(${AppName} MACOSX_BUNDLE ${GPGFRONTEND_MACOS_ICON} ${BASE_SOURCE} ${RESOURCE_FILES})
-
- set_target_properties(${AppName} PROPERTIES
- BUNDLE True
- MACOSX_BUNDLE_GUI_IDENTIFIER com.bktus.gpgfrontend
- MACOSX_BUNDLE_BUNDLE_NAME ${AppName}
- MACOSX_BUNDLE_LONG_VERSION_STRING ${BUILD_VERSION}
- MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}
- MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
- MACOSX_BUNDLE_COPYRIGHT "GPL-3.0"
- MACOSX_BUNDLE_INFO_STRING "An OpenPGP Crypto Tool"
- MACOSX_BUNDLE_ICON_FILE "gpgfrontend.icns"
- MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/resource/plist/MacOSXBundleInfo.plist.in)
-
- # option for sandbox mode, still under test
- if(GPGFRONTEND_XOCDE_ENABLE_SANDBOX)
- message(STATUS "Build Application With App Sandbox")
- set(CUSTOM_ATTRIBUTE_ENABLE_APP_SANDBOX "Yes")
- add_custom_command(TARGET ${AppName} POST_BUILD
- COMMAND /bin/cp -rf ${CMAKE_SOURCE_DIR}/resource/lfs/macOS/GnuPG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${AppName}.app/Contents/
- WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
- COMMENT "Copying Buddled GnuPG into App Bundle Resource")
- set_target_properties(${AppName} PROPERTIES
- XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_SOURCE_DIR}/resource/entitlements/GpgFrontend.entitlements")
- else()
- message(STATUS "Build Application Without App Sandbox")
- set(CUSTOM_ATTRIBUTE_ENABLE_APP_SANDBOX "No")
- endif()
-
- set_target_properties(${AppName} PROPERTIES
- XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_APPS_DIR)"
- XCODE_ATTRIBUTE_SKIP_INSTALL "No"
- XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "--deep --entitlements ${CMAKE_SOURCE_DIR}/resource/plist/entitlement.plist"
- XCODE_ATTRIBUTE_ENABLE_APP_SANDBOX "${CUSTOM_ATTRIBUTE_ENABLE_APP_SANDBOX}"
- XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME "Yes"
- XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${GPGFRONTEND_XOCDE_CODE_SIGN_IDENTITY}")
- elseif(LINUX AND LINUX_INSTALL_SOFTWARE)
- add_executable(${AppName} ${BASE_SOURCE} ${RESOURCE_FILES})
- else ()
- message(FATAL_ERROR "cannot find a defined method to release application.")
- endif ()
- else ()
- # if the status is debug
- add_executable(${AppName} ${BASE_SOURCE} ${RESOURCE_FILES})
- if(MINGW)
- # include qt dependencies
- if(NOT Qt6_DIR)
- add_custom_command(TARGET ${AppName} POST_BUILD
- COMMAND windeployqt --force ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${AppName}.exe)
- else()
- add_custom_command(TARGET ${AppName} POST_BUILD
- COMMAND windeployqt-qt6.exe --force ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${AppName}.exe)
- endif()
- endif()
- endif ()
-
- # Make app build with resources
- add_dependencies(${AppName} resources)
-
- # using c++ standard 17
- target_compile_features(${AppName} PUBLIC cxx_std_17)
-
-endif ()
+if(BUILD_APPLICATION)
+ aux_source_directory(. BASE_SOURCE)
+ set(APP_ICON_RESOURCE_WINDOWS "${CMAKE_SOURCE_DIR}/gpgfrontend.rc")
+ set_property(SOURCE gpgfrontend.rc APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_SOURCE_DIR}/gpgfrontend.ico)
+endif()
+
+if(BUILD_APPLICATION)
+ # Set Resource Output Path
+ if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
+ 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)
+ else()
+ set(RESOURCE_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
+ endif()
+ else()
+ set(RESOURCE_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
+ endif()
+endif()
+
+if(BUILD_APPLICATION)
+ if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
+ if(APPLE)
+ 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()
+
+if(BUILD_APPLICATION)
+ # Copy Utils Files
+ if(MINGW)
+ message(STATUS "Copying Dependent DLL For Windows Runtime Env")
+
+ set(ALL_RUNTIME_DEP_PATH_LIST "")
+
+ # get mingw bin path
+ find_file(_libGccDllPath NAMES libgcc_s_seh-1.dll NO_CACHE REQUIRED)
+ cmake_path(GET _libGccDllPath PARENT_PATH _libDllBinPath)
+
+ # find libicu*.dll
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libicu[a-z]*[0-9][0-9].dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libassuan*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libbz*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libcrypto-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libexpat-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libfreetype-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libgcc_s_seh-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libglib-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libgpg-error*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libgpgme*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libgraphite2.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libharfbuzz-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libiconv-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libintl-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/liblz4.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/liblzma-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libpcre-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libpcre2-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libpng*-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libstdc++-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libwinpthread-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/zlib*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libb2-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ # openssl
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libssl-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libcrypto-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ unset(_libDllPath)
+ file(GLOB _libDllPath "${_libDllBinPath}/libxml2-*.dll")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libDllPath})
+
+ # /mingw64/libexec
+ execute_process(
+ COMMAND cygpath -m /mingw64/libexec
+ OUTPUT_VARIABLE MSYS64_LIBEXEC_PATH
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ # gpgme-w32spawn.exe
+ unset(_libExEPath)
+ file(GLOB _libExEPath "${MSYS64_LIBEXEC_PATH}/gpgme-*.exe")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libExEPath})
+
+ unset(_libExEPath)
+ file(GLOB _libExEPath "${_libDllBinPath}/gpgme-*.exe")
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_libExEPath})
+
+ set(ALL_RUNTIME_DLL_FILES "")
+
+ if(GPGFRONTEND_QT5_BUILD)
+ list(APPEND ALL_RUNTIME_DLL_FILES "Qt5Core.dll;Qt5Gui.dll;Qt5Network.dll;Qt5PrintSupport.dll;Qt5Svg.dll;Qt5Widgets.dll;libbrotlicommon.dll;libbrotlidec.dll;libdouble-conversion.dll;libzstd.dll;libmd4c.dll;")
+ else()
+ list(APPEND ALL_RUNTIME_DLL_FILES "Qt6Core.dll;Qt6Core5Compat.dll;Qt6Gui.dll;Qt6Network.dll;Qt6PrintSupport.dll;Qt6Svg.dll;Qt6Widgets.dll;libbrotlicommon.dll;libbrotlidec.dll;libdouble-conversion.dll;libzstd.dll;libmd4c.dll;")
+ endif()
+
+ # find the other dlls
+ foreach(_dllFileName ${ALL_RUNTIME_DLL_FILES})
+ message(STATUS "DLL FILE ${_dllFileName}")
+ list(APPEND ALL_DLL_NAME ${_dllFileName})
+ unset(_runtimeDllLocalPath)
+
+ find_file(_runtimeDllLocalPath NAMES ${_dllFileName} NO_CACHE REQUIRED)
+ list(APPEND ALL_RUNTIME_DEP_PATH_LIST ${_runtimeDllLocalPath})
+ message(STATUS "DLL ${_dllFileName} Path is ${_runtimeDllLocalPath}")
+ endforeach()
+
+ message(STATUS "All Runtime Dependencies Path ${ALL_RUNTIME_DEP_PATH_LIST}")
+
+ # copy dependencies to release path
+ foreach(_dllRuntimeFilePath ${ALL_RUNTIME_DEP_PATH_LIST})
+ file(COPY ${_dllRuntimeFilePath} DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ FOLLOW_SYMLINK_CHAIN)
+ endforeach()
+ endif()
+endif()
+
+if(BUILD_APPLICATION)
+ set(RESOURCE_FILES ${CMAKE_SOURCE_DIR}/gpgfrontend.qrc ${APP_ICON_RESOURCE_WINDOWS} ${QON_QM_FILES})
+ add_custom_target(resources ALL DEPENDS ${RESOURCE_FILES})
+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)
+ # standard app bundle packing
+ add_executable(${AppName} MACOSX_BUNDLE ${GPGFRONTEND_MACOS_ICON} ${BASE_SOURCE} ${RESOURCE_FILES})
+
+ set_target_properties(${AppName} PROPERTIES
+ BUNDLE True
+ MACOSX_BUNDLE_GUI_IDENTIFIER com.bktus.gpgfrontend
+ MACOSX_BUNDLE_BUNDLE_NAME ${AppName}
+ MACOSX_BUNDLE_LONG_VERSION_STRING ${BUILD_VERSION}
+ MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}
+ MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
+ MACOSX_BUNDLE_COPYRIGHT "GPL-3.0"
+ MACOSX_BUNDLE_INFO_STRING "An OpenPGP Crypto Tool"
+ MACOSX_BUNDLE_ICON_FILE "gpgfrontend.icns"
+ MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/resource/plist/MacOSXBundleInfo.plist.in)
+
+ # option for sandbox mode, still under test
+ if(GPGFRONTEND_XOCDE_ENABLE_SANDBOX)
+ message(STATUS "Build Application With App Sandbox")
+ set(CUSTOM_ATTRIBUTE_ENABLE_APP_SANDBOX "Yes")
+ add_custom_command(TARGET ${AppName} POST_BUILD
+ COMMAND /bin/cp -rf ${CMAKE_SOURCE_DIR}/resource/lfs/macOS/GnuPG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${AppName}.app/Contents/
+ WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+ COMMENT "Copying Buddled GnuPG into App Bundle Resource")
+ set_target_properties(${AppName} PROPERTIES
+ XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_SOURCE_DIR}/resource/entitlements/GpgFrontend.entitlements")
+ else()
+ message(STATUS "Build Application Without App Sandbox")
+ set(CUSTOM_ATTRIBUTE_ENABLE_APP_SANDBOX "No")
+ endif()
+
+ set_target_properties(${AppName} PROPERTIES
+ XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_APPS_DIR)"
+ XCODE_ATTRIBUTE_SKIP_INSTALL "No"
+ XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "--deep --entitlements ${CMAKE_SOURCE_DIR}/resource/plist/entitlement.plist"
+ XCODE_ATTRIBUTE_ENABLE_APP_SANDBOX "${CUSTOM_ATTRIBUTE_ENABLE_APP_SANDBOX}"
+ XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME "Yes"
+ XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${GPGFRONTEND_XOCDE_CODE_SIGN_IDENTITY}")
+ elseif(LINUX AND LINUX_INSTALL_SOFTWARE)
+ add_executable(${AppName} ${BASE_SOURCE} ${RESOURCE_FILES})
+ else()
+ message(FATAL_ERROR "cannot find a defined method to release application.")
+ endif()
+ else()
+ # if the status is debug
+ add_executable(${AppName} ${BASE_SOURCE} ${RESOURCE_FILES})
+
+ if(MINGW)
+ # include qt dependencies
+ if(NOT Qt6_DIR)
+ add_custom_command(TARGET ${AppName} POST_BUILD
+ COMMAND windeployqt --force ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${AppName}.exe)
+ else()
+ add_custom_command(TARGET ${AppName} POST_BUILD
+ COMMAND windeployqt-qt6.exe --force ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${AppName}.exe)
+ endif()
+ endif()
+ endif()
+
+ # Make app build with resources
+ add_dependencies(${AppName} resources)
+
+ # using c++ standard 17
+ target_compile_features(${AppName} PUBLIC cxx_std_17)
+endif()
if(STABLE_BUILD_ONLY_APPLICATION)
message(STATUS "Application Headers Search Path: ${CMAKE_INSTALL_PREFIX}/include/gpgfrontend")
@@ -397,95 +392,95 @@ if(STABLE_BUILD_ONLY_APPLICATION)
else()
target_link_libraries(${AppName} Qt6::Core Qt6::Widgets)
endif()
-
endif()
# link options for GpgFrontend
-if (BUILD_APPLICATION)
- target_link_libraries(${AppName} gpgfrontend_core gpgfrontend_ui gpgfrontend_test)
- if (MINGW)
- message(STATUS "Link Application Library For MINGW")
- target_link_libraries(${AppName} crypto)
- elseif (APPLE)
- message(STATUS "Link Application Library For macOS")
- else ()
- message(STATUS "Link Application Library For Linux")
- target_link_libraries(${AppName} crypto pthread)
- endif ()
-endif ()
+if(BUILD_APPLICATION)
+ target_link_libraries(${AppName} gpgfrontend_core gpgfrontend_ui gpgfrontend_test)
+
+ if(MINGW)
+ message(STATUS "Link Application Library For MINGW")
+ target_link_libraries(${AppName} crypto)
+ elseif(APPLE)
+ message(STATUS "Link Application Library For macOS")
+ else()
+ message(STATUS "Link Application Library For Linux")
+ target_link_libraries(${AppName} crypto pthread)
+ endif()
+endif()
+# add i18n support
+if(BUILD_APPLICATION)
+ set(LOCALE_TS_PATH ${CMAKE_SOURCE_DIR}/resource/lfs/locale/ts)
+ set(TS_FILES "${LOCALE_TS_PATH}/GpgFrontend.en_US.ts"
+ "${LOCALE_TS_PATH}/GpgFrontend.de_DE.ts"
+ "${LOCALE_TS_PATH}/GpgFrontend.fr_FR.ts"
+ "${LOCALE_TS_PATH}/GpgFrontend.zh_CN.ts"
+ "${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)
+ if(GPGFRONTEND_QT5_BUILD)
+ # TODO
+ qt5_add_translation(GF_TRANSLATIONS_QM ${TS_FILES})
+ message(STATUS "GF_TRANSLATIONS_QM ${GF_TRANSLATIONS_QM}")
-# add i18n support
-if (BUILD_APPLICATION)
- set(LOCALE_TS_PATH ${CMAKE_SOURCE_DIR}/resource/lfs/locale/ts)
- set(TS_FILES "${LOCALE_TS_PATH}/GpgFrontend.en_US.ts"
- "${LOCALE_TS_PATH}/GpgFrontend.de_DE.ts"
- "${LOCALE_TS_PATH}/GpgFrontend.fr_FR.ts"
- "${LOCALE_TS_PATH}/GpgFrontend.zh_CN.ts"
- "${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)
+ 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")
- 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()
+ 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()
- add_custom_target(gftranslations ALL)
-
- qt_add_lrelease(gftranslations
- TS_FILES ${TS_FILES}
- QM_FILES_OUTPUT_VARIABLE GF_TRANSLATIONS_QM)
- qt_add_resources(${AppName} "gftranslations"
- PREFIX "/i18n"
- BASE ${CMAKE_CURRENT_BINARY_DIR}
- FILES ${GF_TRANSLATIONS_QM})
-
- add_custom_target(qttranslations ALL)
-
- 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$")
- 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()
+ 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()
+ add_custom_target(gftranslations ALL)
+
+ qt_add_lrelease(gftranslations
+ TS_FILES ${TS_FILES}
+ QM_FILES_OUTPUT_VARIABLE GF_TRANSLATIONS_QM)
+ qt_add_resources(${AppName} "gftranslations"
+ PREFIX "/i18n"
+ BASE ${CMAKE_CURRENT_BINARY_DIR}
+ FILES ${GF_TRANSLATIONS_QM})
+
+ add_custom_target(qttranslations ALL)
+
+ 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$")
+ 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
-if (LINUX AND LINUX_INSTALL_SOFTWARE)
+if(LINUX AND LINUX_INSTALL_SOFTWARE)
include(GNUInstallDirs)
if(STABLE_BUILD_ONLY_APPLICATION)
@@ -504,58 +499,57 @@ if (LINUX AND LINUX_INSTALL_SOFTWARE)
message(STATUS "GpgFrontend Install Libraries: ${GPGFRONTEND_INSTALL_LIBRARIES}")
install(TARGETS ${AppName} ${GPGFRONTEND_INSTALL_LIBRARIES}
- EXPORT GpgFrontendTargets
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ EXPORT GpgFrontendTargets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(FILES ${CMAKE_SOURCE_DIR}/TRANSLATORS
- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${AppName}/)
+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${AppName}/)
install(FILES ${CMAKE_SOURCE_DIR}/resource/appstream/com.bktus.gpgfrontend.appdata.xml
- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo/)
+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo/)
install(FILES ${CMAKE_SOURCE_DIR}/resource/appstream/com.bktus.gpgfrontend.desktop
- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications/)
+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications/)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/resource/lfs/pixmaps/
- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pixmaps/)
+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pixmaps/)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/resource/lfs/hicolor/
- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/)
-endif ()
+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/)
+endif()
# if only build sdk
-if (STABLE_BUILD_ONLY_SDK)
+if(STABLE_BUILD_ONLY_SDK)
include(GNUInstallDirs)
- set(GPGFRONTEND_SDK_INSTALL_LIBRARIES
- gpgfrontend_module_sdk)
+ set(GPGFRONTEND_SDK_INSTALL_LIBRARIES
+ gpgfrontend_module_sdk)
install(TARGETS ${GPGFRONTEND_SDK_INSTALL_LIBRARIES}
- EXPORT GpgFrontendTargets
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-endif ()
-
+ EXPORT GpgFrontendTargets
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+endif()
# if build full sdk
-if (STABLE_BUILD_FULL_SDK)
+if(STABLE_BUILD_FULL_SDK)
include(GNUInstallDirs)
- set(GPGFRONTEND_SDK_INSTALL_LIBRARIES
- gpgfrontend_core
- gpgfrontend_ui
- gpgfrontend_test
- gpgfrontend_module_sdk)
+ set(GPGFRONTEND_SDK_INSTALL_LIBRARIES
+ gpgfrontend_core
+ gpgfrontend_ui
+ gpgfrontend_test
+ gpgfrontend_module_sdk)
if(NOT APPLE)
list(APPEND GPGFRONTEND_SDK_INSTALL_LIBRARIES mimalloc)
endif()
install(TARGETS ${GPGFRONTEND_SDK_INSTALL_LIBRARIES}
- EXPORT GpgFrontendTargets
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ EXPORT GpgFrontendTargets
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/core"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/gpgfrontend"
@@ -574,4 +568,4 @@ if (STABLE_BUILD_FULL_SDK)
FILES_MATCHING
PATTERN "*.h"
)
-endif () \ No newline at end of file
+endif() \ No newline at end of file