diff --git a/build-aux/update-cmake-version.sh b/build-aux/update-cmake-version.sh new file mode 100755 --- /dev/null +++ b/build-aux/update-cmake-version.sh @@ -0,0 +1,46 @@ +#! /bin/sh +# SPDX-FileCopyrightText: 2024 g10 Code GmbH +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# This script updates the version informaion in the CMakeLists.txt to match +# the one from configure.ac +# +# Usage: +# ./build-aux/update-cmake-version.sh + +configure_ac="configure.ac" + +version_major=`grep "mym4_major]" "$configure_ac" | sed -e "s/m4_define(\[mym4_major\], \[\([0-9]*\)\])/\1/g"` +version_minor=`grep "mym4_minor]" "$configure_ac" | sed -e "s/m4_define(\[mym4_minor\], \[\([0-9]*\)\])/\1/g"` +version_micro=`grep "mym4_micro]" "$configure_ac" | sed -e "s/m4_define(\[mym4_micro\], \[\([0-9]*\)\])/\1/g"` + +gpgmepp_lt_current=`grep "LIBGPGMEPP_LT_CURRENT=" "$configure_ac" | sed -e "s/LIBGPGMEPP_LT_CURRENT=\([0-9]*\)/\1/g"` +gpgmepp_lt_age=`grep "LIBGPGMEPP_LT_AGE=" "$configure_ac" | sed -e "s/LIBGPGMEPP_LT_AGE=\([0-9]*\)/\1/g"` +gpgmepp_lt_revision=`grep "LIBGPGMEPP_LT_REVISION=" "$configure_ac" | sed -e "s/LIBGPGMEPP_LT_REVISION=\([0-9]*\)/\1/g"` + +sed -e "s/set(LIBGPGMEPP_MAJOR [0-9]*)/set(LIBGPGMEPP_MAJOR $version_major)/g" \ + -e "s/set(LIBGPGMEPP_MINOR [0-9]*)/set(LIBGPGMEPP_MINOR $version_minor)/g" \ + -e "s/set(LIBGPGMEPP_MICRO [0-9]*)/set(LIBGPGMEPP_MICRO $version_micro)/g" \ + -e "s/set(LIBGPGMEPP_LT_CURRENT [0-9]*)/set(LIBGPGMEPP_LT_CURRENT $gpgmepp_lt_current)/g" \ + -e "s/set(LIBGPGMEPP_LT_AGE [0-9]*)/set(LIBGPGMEPP_LT_AGE $gpgmepp_lt_age)/g" \ + -e "s/set(LIBGPGMEPP_LT_REVISION [0-9]*)/set(LIBGPGMEPP_LT_REVISION $gpgmepp_lt_revision)/g" \ + -i lang/cpp/CMakeLists.txt + +qgpgme_lt_current=`grep "LIBQGPGME_LT_CURRENT=" "$configure_ac" | sed -e "s/LIBQGPGME_LT_CURRENT=\([0-9]*\)/\1/g"` +qgpgme_lt_age=`grep "LIBQGPGME_LT_AGE=" "$configure_ac" | sed -e "s/LIBQGPGME_LT_AGE=\([0-9]*\)/\1/g"` +qgpgme_lt_revision=`grep "LIBQGPGME_LT_REVISION=" "$configure_ac" | sed -e "s/LIBQGPGME_LT_REVISION=\([0-9]*\)/\1/g"` + +sed -e "s/set(LIBQGPGME_MAJOR [0-9]*)/set(LIBQGPGME_MAJOR $version_major)/g" \ + -e "s/set(LIBQGPGME_MINOR [0-9]*)/set(LIBQGPGME_MINOR $version_minor)/g" \ + -e "s/set(LIBQGPGME_MICRO [0-9]*)/set(LIBQGPGME_MICRO $version_micro)/g" \ + -e "s/set(LIBQGPGME_LT_CURRENT [0-9]*)/set(LIBQGPGME_LT_CURRENT $qgpgme_lt_current)/g" \ + -e "s/set(LIBQGPGME_LT_AGE [0-9]*)/set(LIBQGPGME_LT_AGE $qgpgme_lt_age)/g" \ + -e "s/set(LIBQGPGME_LT_REVISION [0-9]*)/set(LIBQGPGME_LT_REVISION $qgpgme_lt_revision)/g" \ + -i lang/qt/CMakeLists.txt \ No newline at end of file diff --git a/lang/cpp/CMakeLists.txt b/lang/cpp/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/lang/cpp/CMakeLists.txt @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: 2023 g10 Code GmbH +# SPDX-FileContributor: Carl Schwan +# SPDX-License-Identifier: BSD-3-Clause + +cmake_minimum_required(VERSION 3.20) + +include(CMakeDependentOption) +include(CMakePackageConfigHelpers) +include(CheckIncludeFile) +include(CheckFunctionExists) +include(GNUInstallDirs) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/") +set(ENV{PKG_CONFIG_PATH} "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig/") + +find_package(PkgConfig REQUIRED) +pkg_check_modules(GPGME REQUIRED IMPORTED_TARGET gpgme) +pkg_check_modules(GPGERROR REQUIRED IMPORTED_TARGET gpg-error) + +message("${CMAKE_PREFIX_PATH}/lib/pkgconfig/ ${GPGME_INCLUDEDIR}") + +set(LIBGPGMEPP_MAJOR 1) +set(LIBGPGMEPP_MINOR 23) +set(LIBGPGMEPP_MICRO 3) +set(LIBGPGMEPP_LT_CURRENT 26) +set(LIBGPGMEPP_LT_AGE 20) +set(LIBGPGMEPP_LT_REVISION 1) +set(LIBGPGMEPP_VERSION_FULL ${LIBGPGMEPP_MAJOR}.${LIBGPGMEPP_MINOR}.${LIBGPGMEPP_MICRO}) + +project(Gpgmepp VERSION ${LIBGPGMEPP_VERSION_FULL}) + +add_subdirectory(src) diff --git a/lang/cpp/src/CMakeLists.txt b/lang/cpp/src/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/lang/cpp/src/CMakeLists.txt @@ -0,0 +1,144 @@ +# SPDX-FileCopyrightText: 2021 Daniel Vrátil +# SPDX-FileCopyrightText: 2023 g10 Code GmbH +# SPDX-FileContributor: Carl Schwan +# SPDX-License-Identifier: BSD-3-Clause + +add_library(Gpgmepp SHARED) + +target_sources(Gpgmepp PRIVATE + callbacks.cpp + configuration.cpp + context.cpp + data.cpp + decryptionresult.cpp + defaultassuantransaction.cpp + editinteractor.cpp + encryptionresult.cpp + engineinfo.cpp + eventloopinteractor.cpp + exception.cpp + gpgaddexistingsubkeyeditinteractor.cpp + gpgadduserideditinteractor.cpp + gpgagentgetinfoassuantransaction.cpp + gpggencardkeyinteractor.cpp + gpgrevokekeyeditinteractor.cpp + gpgsetexpirytimeeditinteractor.cpp + gpgsetownertrusteditinteractor.cpp + gpgsignkeyeditinteractor.cpp + importresult.cpp + key.cpp + keygenerationresult.cpp + keylistresult.cpp + scdgetinfoassuantransaction.cpp + signingresult.cpp + statusconsumerassuantransaction.cpp + swdbresult.cpp + tofuinfo.cpp + trustitem.cpp + util.cpp + verificationresult.cpp + vfsmountresult.cpp +) + +set(gpgmepp_HEADERS + callbacks.h + configuration.h + context.h + data.h + decryptionresult.h + defaultassuantransaction.h + editinteractor.h + encryptionresult.h + engineinfo.h + error.h + eventloopinteractor.h + exception.h + global.h + gpgaddexistingsubkeyeditinteractor.h + gpgadduserideditinteractor.h + gpgagentgetinfoassuantransaction.h + gpggencardkeyinteractor.h + gpgmefw.h + gpgmepp_export.h + gpgrevokekeyeditinteractor.h + gpgsetexpirytimeeditinteractor.h + gpgsetownertrusteditinteractor.h + gpgsignkeyeditinteractor.h + importresult.h + key.h + keygenerationresult.h + keylistresult.h + notation.h + result.h + scdgetinfoassuantransaction.h + signingresult.h + statusconsumerassuantransaction.h + swdbresult.h + tofuinfo.h + trustitem.h + util.h + verificationresult.h + vfsmountresult.h +) + +set(gpgmepp_interface_HEADERS + interfaces/assuantransaction.h interfaces/dataprovider.h + interfaces/passphraseprovider.h interfaces/progressprovider.h +) + +add_definitions(-DBUILDING_GPGMEPP) + +target_include_directories(Gpgmepp + INTERFACE + $ + $ + PUBLIC + $ + $ + $ + PRIVATE + $ +) + +target_link_libraries(Gpgmepp PUBLIC PkgConfig::GPGME) + +math(EXPR MAJOR "${LIBGPGMEPP_LT_CURRENT}-${LIBGPGMEPP_LT_AGE}") + +set_target_properties(Gpgmepp PROPERTIES + VERSION "${MAJOR}.${LIBGPGMEPP_LT_AGE}.${LIBGPGMEPP_LT_REVISION}" + SOVERSION ${MAJOR} +) + +configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/GpgmeppConfigCmake.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/GpgmeppConfig.cmake" + INSTALL_DESTINATION ${GPGME_LIBRARY_DIRS}/cmake/Gpgmepp +) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/GpgmeppConfigVersion.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/GpgmeppConfigVersion.cmake @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gpgmepp_version.h.in + ${CMAKE_CURRENT_BINARY_DIR}/gpgmepp_version.h) + +install(TARGETS Gpgmepp + DESTINATION ${GPGME_LIBRARY_DIRS} + EXPORT GpgmeppTargets +) +install(EXPORT GpgmeppTargets + DESTINATION "${GPGME_LIBRARY_DIRS}/cmake/Gpgmepp" + FILE GpgmeppConfigTargets.cmake +) + +install(FILES ${gpgmepp_HEADERS} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gpgme++) + +install(FILES ${gpgmepp_interface_HEADERS} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gpgme++/interfaces) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/gpgmepp_version.h + ${CMAKE_CURRENT_SOURCE_DIR}/gpgmepp_export.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gpgme++) + +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/GpgmeppConfigVersion.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/GpgmeppConfig.cmake" + DESTINATION ${GPGME_LIBRARY_DIRS}/cmake/Gpgmepp) diff --git a/lang/cpp/src/GpgmeppConfigCmake.cmake.in b/lang/cpp/src/GpgmeppConfigCmake.cmake.in new file mode 100644 --- /dev/null +++ b/lang/cpp/src/GpgmeppConfigCmake.cmake.in @@ -0,0 +1,8 @@ +@PACKAGE_INIT@ +include(CMakeFindDependencyMacro) + +set(ENV{PKG_CONFIG_PATH} "${CMAKE_PREFIX_PATH}/lib/pkgconfig/") +find_package(PkgConfig REQUIRED) +pkg_check_modules(GPGME REQUIRED IMPORTED_TARGET gpgme) + +include("${CMAKE_CURRENT_LIST_DIR}/GpgmeppConfigTargets.cmake") diff --git a/lang/cpp/src/GpgmeppConfigVersion.cmake.in b/lang/cpp/src/GpgmeppConfigVersion.cmake.in --- a/lang/cpp/src/GpgmeppConfigVersion.cmake.in +++ b/lang/cpp/src/GpgmeppConfigVersion.cmake.in @@ -19,7 +19,7 @@ # 02111-1307, USA # based on a generated file from cmake. -set(PACKAGE_VERSION "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_MICRO@") +set(PACKAGE_VERSION "@LIBGPGMEPP_MAJOR@.@LIBGPGMEPP_MINOR@.@LIBGPGMEPP_MICRO@") if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" ) set(PACKAGE_VERSION_COMPATIBLE FALSE) diff --git a/lang/qt/CMakeLists.txt b/lang/qt/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/lang/qt/CMakeLists.txt @@ -0,0 +1,48 @@ +# SPDX-FileCopyrightText: 2023 g10 Code GmbH +# SPDX-FileContributor: Carl Schwan +# SPDX-License-Identifier: BSD-3-Clause + +cmake_minimum_required(VERSION 3.20) + +include(CMakeDependentOption) +include(CMakePackageConfigHelpers) +include(CheckIncludeFile) +include(CheckFunctionExists) +include(GNUInstallDirs) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/") +set(ENV{PKG_CONFIG_PATH} "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig/") + +find_package(PkgConfig REQUIRED) +pkg_check_modules(GPGME REQUIRED IMPORTED_TARGET gpgme) +pkg_check_modules(GPGERROR REQUIRED IMPORTED_TARGET gpg-error) + +message("${CMAKE_PREFIX_PATH}/lib/pkgconfig/ ${GPGME_INCLUDEDIR}") + +# Update by running autogen.sh +set(LIBQGPGME_MAJOR 1) +set(LIBQGPGME_MINOR 23) +set(LIBQGPGME_MICRO 3) +set(LIBQGPGME_LT_CURRENT 20) +set(LIBQGPGME_LT_AGE 5) +set(LIBQGPGME_LT_REVISION 1) +set(LIBQGPGME_VERSION_FULL ${LIBQGPGME_MAJOR}.${LIBQGPGME_MINOR}.${LIBQGPGME_MICRO}) + +project(QGpgME VERSION ${LIBQGPGME_VERSION_FULL}) + +option(QGPGME_BUILD_QT5 "Build for Qt5" ON) +option(QGPGME_BUILD_QT6 "Build for Qt6" ON) + +if(QGPGME_BUILD_QT5) + set(version "") + set(QT_MAJOR_VERSION 5) + add_subdirectory(src) +endif() + +if(QGPGME_BUILD_QT6) + set(version "6") + set(QT_MAJOR_VERSION 6) + add_subdirectory(src src6) +endif() diff --git a/lang/qt/src/CMakeLists.txt b/lang/qt/src/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/lang/qt/src/CMakeLists.txt @@ -0,0 +1,301 @@ +# SPDX-FileCopyrightText: 2021 Daniel Vrátil +# SPDX-FileCopyrightText: 2023 g10 Code GmbH +# SPDX-FileContributor: Carl Schwan +# SPDX-License-Identifier: BSD-3-Clause + +find_package(Qt${QT_MAJOR_VERSION} REQUIRED COMPONENTS Core) +set(GPGME_CONFIG_AVAIL_LANG "${GPGME_CONFIG_AVAIL_LANG} qt") +find_package(Gpgmepp ${GPGME_REQUIRED_VERSION} CONFIG REQUIRED) + +if (${QT_MAJOR_VERSION} EQUAL "6") + find_package(Qt${QT_MAJOR_VERSION} REQUIRED COMPONENTS CoreTools) + get_property(QtCore_MOC_EXECUTABLE TARGET Qt6::moc PROPERTY LOCATION) + set(config_suffix Qt6) +endif() + +add_library(QGpgme${config_suffix} SHARED) + +target_sources(QGpgme${config_suffix} PRIVATE + changeexpiryjob.cpp + cleaner.cpp + cryptoconfig.cpp + dataprovider.cpp + debug.cpp + decryptverifyjob.cpp + decryptverifyarchivejob.cpp + defaultkeygenerationjob.cpp + dn.cpp + encryptarchivejob.cpp + encryptjob.cpp + filelistdataprovider.cpp + importjob.cpp + job.cpp + listallkeysjob.cpp + multideletejob.cpp + qgpgme_debug.cpp + qgpgmeaddexistingsubkeyjob.cpp + qgpgmeadduseridjob.cpp + qgpgmebackend.cpp + qgpgmechangeexpiryjob.cpp + qgpgmechangeownertrustjob.cpp + qgpgmechangepasswdjob.cpp + qgpgmedecryptjob.cpp + qgpgmedecryptverifyarchivejob.cpp + qgpgmedecryptverifyjob.cpp + qgpgmedeletejob.cpp + qgpgmedownloadjob.cpp + qgpgmeencryptarchivejob.cpp + qgpgmeencryptjob.cpp + qgpgmeexportjob.cpp + qgpgmegpgcardjob.cpp + qgpgmeimportfromkeyserverjob.cpp + qgpgmeimportjob.cpp + qgpgmekeyformailboxjob.cpp + qgpgmekeygenerationjob.cpp + qgpgmekeylistjob.cpp + qgpgmelistallkeysjob.cpp + qgpgmenewcryptoconfig.cpp + qgpgmequickjob.cpp + qgpgmereceivekeysjob.cpp + qgpgmerefreshsmimekeysjob.cpp + qgpgmerevokekeyjob.cpp + qgpgmesetprimaryuseridjob.cpp + qgpgmesignarchivejob.cpp + qgpgmesignencryptarchivejob.cpp + qgpgmesignencryptjob.cpp + qgpgmesignjob.cpp + qgpgmesignkeyjob.cpp + qgpgmetofupolicyjob.cpp + qgpgmeverifydetachedjob.cpp + qgpgmeverifyopaquejob.cpp + qgpgmewkdlookupjob.cpp + qgpgmewkdrefreshjob.cpp + qgpgmewkspublishjob.cpp + signarchivejob.cpp + signencryptarchivejob.cpp + signencryptjob.cpp + signjob.cpp + threadedjobmixin.cpp + util.cpp + verifydetachedjob.cpp + verifyopaquejob.cpp + wkdlookupresult.cpp + wkdrefreshjob.cpp +) + +set(qgpgme_HEADERS + abstractimportjob.h + addexistingsubkeyjob.h + adduseridjob.h + changeexpiryjob.h + changeownertrustjob.h + changepasswdjob.h + cryptoconfig.h + cleaner.h + dataprovider.h + debug.h + decryptjob.h + decryptverifyarchivejob.h + decryptverifyjob.h + defaultkeygenerationjob.h + deletejob.h + dn.h + downloadjob.h + encryptarchivejob.h + encryptjob.h + exportjob.h + filelistdataprovider.h + gpgcardjob.h + hierarchicalkeylistjob.h + importfromkeyserverjob.h + importjob.h + job.h + keyformailboxjob.h + keygenerationjob.h + keylistjob.h + listallkeysjob.h + multideletejob.h + protocol.h + qgpgme_debug.h + qgpgme_export.h + qgpgmeaddexistingsubkeyjob.h + qgpgmeadduseridjob.h + qgpgmebackend.h + qgpgmechangeexpiryjob.h + qgpgmechangeownertrustjob.h + qgpgmechangepasswdjob.h + qgpgmedecryptjob.h + qgpgmedecryptverifyarchivejob.h + qgpgmedecryptverifyjob.h + qgpgmedeletejob.h + qgpgmedownloadjob.h + qgpgmeencryptarchivejob.h + qgpgmeencryptjob.h + qgpgmeexportjob.h + qgpgmegpgcardjob.h + qgpgmeimportfromkeyserverjob.h + qgpgmeimportjob.h + qgpgmekeyformailboxjob.h + qgpgmekeygenerationjob.h + qgpgmekeylistjob.h + qgpgmelistallkeysjob.h + qgpgmenewcryptoconfig.h + qgpgmequickjob.h + qgpgmereceivekeysjob.h + qgpgmerefreshsmimekeysjob.h + qgpgmerevokekeyjob.h + qgpgmesetprimaryuseridjob.h + qgpgmesignarchivejob.h + qgpgmesignencryptarchivejob.h + qgpgmesignencryptjob.h + qgpgmesignjob.h + qgpgmesignkeyjob.h + qgpgmetofupolicyjob.h + qgpgmeverifydetachedjob.h + qgpgmeverifyopaquejob.h + qgpgmewkdlookupjob.h + qgpgmewkdrefreshjob.h + qgpgmewkspublishjob.h + quickjob.h + receivekeysjob.h + refreshkeysjob.h + revokekeyjob.h + setprimaryuseridjob.h + signarchivejob.h + signencryptarchivejob.h + signencryptjob.h + signjob.h + signkeyjob.h + specialjob.h + threadedjobmixin.h + tofupolicyjob.h + util.h + verifydetachedjob.h + verifyopaquejob.h + wkdlookupjob.h + wkdlookupresult.h + wkdrefreshjob.h + wkspublishjob.h +) + +set(qgpgme_CAMELCASE_HEADERS + AddUserIDJob + AbstractImportJob + ChangeExpiryJob + ChangeOwnerTrustJob + ChangePasswdJob + Cleaner + DataProvider + DecryptJob + DecryptVerifyJob + DN + DownloadJob + EncryptJob + ExportJob + Job + MultiDeleteJob + Protocol + QGpgMENewCryptoConfig + QuickJob + SpecialJob + SignJob + SignKeyJob + SignEncryptJob + VerifyOpaqueJob + RefreshKeysJob + CryptoConfig + DeleteJob + ImportFromKeyserverJob + ImportJob + KeyGenerationJob + KeyListJob + ListAllKeysJob + VerifyDetachedJob + KeyForMailboxJob + DefaultKeyGenerationJob + WKSPublishJob + WKDRefreshJob + TofuPolicyJob +) + +set(qgpgme_MOC) +foreach(header ${qgpgme_HEADERS}) + get_filename_component(absolute_path ${header} ABSOLUTE) + get_filename_component(file_name ${header} NAME_WLE) + + if (${QT_MAJOR_VERSION} EQUAL "6") + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${file_name}.moc + COMMAND ${QtCore_MOC_EXECUTABLE} ${absolute_path} -o ${CMAKE_CURRENT_BINARY_DIR}/${file_name}.moc + ) + else() + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${file_name}.moc + COMMAND ${QT_MOC_EXECUTABLE} ${absolute_path} -o ${CMAKE_CURRENT_BINARY_DIR}/${file_name}.moc + ) + endif() + + list(APPEND qgpgme_MOC "${CMAKE_CURRENT_BINARY_DIR}/${file_name}.moc") +endforeach() +target_sources(QGpgme${config_suffix} PRIVATE ${qgpgme_MOC}) + +if ((${QT_MAJOR_VERSION} EQUAL 5) OR (NOT ${QGPGME_BUILD_QT5})) + foreach(header ${qgpgme_CAMELCASE_HEADERS}) + string(TOLOWER ${header} header_lc) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/QGpgME/${header} "#include \"qgpgme/${header_lc}.h\"") + list(APPEND qgpgme_HEADERS ${header_lc}.h) + endforeach() +endif() + +add_definitions(-DBUILDING_QGPGME) + +target_link_libraries(QGpgme${config_suffix} PUBLIC Gpgmepp PkgConfig::GPGERROR Qt${version}::Core) +target_include_directories(QGpgme${config_suffix} + INTERFACE + $ + $ + PUBLIC + $ + PRIVATE + $ +) + +math(EXPR MAJOR "${LIBQGPGME_LT_CURRENT} - ${LIBQGPGME_LT_AGE}") +set_target_properties(QGpgme${config_suffix} PROPERTIES + VERSION "${MAJOR}.${LIBQGPGME_LT_AGE}.${LIBQGPGME_LT_REVISION}" + SOVERSION "${MAJOR}" +) + +configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/QGpgmeConfigCmake.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/QGpgme${config_suffix}Config.cmake" + INSTALL_DESTINATION ${GPGME_LIBRARY_DIRS}/cmake/QGpgme${config_suffix} +) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/QGpgme${config_suffix}ConfigVersion.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/QGpgme${config_suffix}ConfigVersion.cmake @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qgpgme_version.h.in + ${CMAKE_CURRENT_BINARY_DIR}/qgpgme_version.h) + +install(TARGETS QGpgme${config_suffix} + DESTINATION ${GPGME_LIBRARY_DIRS} + EXPORT QGpgme${config_suffix}Targets +) +install(EXPORT QGpgme${config_suffix}Targets + DESTINATION "${GPGME_LIBRARY_DIRS}/cmake/QGpgme${config_suffix}" + FILE QGpgme${config_suffix}ConfigTargets.cmake +) + +if ((${QT_MAJOR_VERSION} EQUAL 5) OR (NOT ${QGPGME_BUILD_QT5})) + # Install headers only once + install(FILES ${qgpgme_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/qgpgme_version.h + ${CMAKE_CURRENT_SOURCE_DIR}/qgpgme_export.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qgpgme) + install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/QGpgME + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +endif() + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QGpgme${config_suffix}ConfigVersion.cmake + ${CMAKE_CURRENT_BINARY_DIR}/QGpgme${config_suffix}Config.cmake + DESTINATION ${GPGME_LIBRARY_DIRS}/cmake/QGpgme${config_suffix}) diff --git a/lang/qt/src/QGpgmeConfigCmake.cmake.in b/lang/qt/src/QGpgmeConfigCmake.cmake.in new file mode 100644 --- /dev/null +++ b/lang/qt/src/QGpgmeConfigCmake.cmake.in @@ -0,0 +1,7 @@ +@PACKAGE_INIT@ +include(CMakeFindDependencyMacro) + +find_package(Gpgmepp REQUIRED) +pkg_check_modules(GPGERROR REQUIRED IMPORTED_TARGET gpg-error) + +include("${CMAKE_CURRENT_LIST_DIR}/QGpgme@config_suffix@ConfigTargets.cmake") diff --git a/lang/qt/src/QGpgmeConfigVersion.cmake.in b/lang/qt/src/QGpgmeConfigVersion.cmake.in --- a/lang/qt/src/QGpgmeConfigVersion.cmake.in +++ b/lang/qt/src/QGpgmeConfigVersion.cmake.in @@ -19,7 +19,7 @@ # 02111-1307, USA # based on a generated file from cmake. -set(PACKAGE_VERSION "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_MICRO@") +set(PACKAGE_VERSION "@LIBQGPGME_MAJOR@.@LIBQGPGME_MINOR@.@LIBQGPGME_MICRO@") if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" ) set(PACKAGE_VERSION_COMPATIBLE FALSE) diff --git a/lang/qt/src/QGpgmeQt6ConfigVersion.cmake.in b/lang/qt/src/QGpgmeQt6ConfigVersion.cmake.in --- a/lang/qt/src/QGpgmeQt6ConfigVersion.cmake.in +++ b/lang/qt/src/QGpgmeQt6ConfigVersion.cmake.in @@ -19,7 +19,7 @@ # 02111-1307, USA # based on a generated file from cmake. -set(PACKAGE_VERSION "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_MICRO@") +set(PACKAGE_VERSION "@LIBQGPGME_MAJOR@.@LIBQGPGME_MINOR@.@LIBQGPGME_MICRO@") if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" ) set(PACKAGE_VERSION_COMPATIBLE FALSE)