Page Menu
Home
GnuPG
Search
Configure Global Search
Log In
Files
F20065009
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Size
9 KB
Subscribers
None
View Options
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 24fa131..8e09ca6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,145 +1,148 @@
# CMakeLists.txt for QGpgME
# Copyright 2025 g10 Code GmbH
# Software engineering by Carl Schwan <carl.schwan@gnupg.com>
# Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
#
# This file is part of QGpgME, the Qt API binding for GpgME.
#
# QGpgME is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# QGpgME is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <https://gnu.org/licenses/>.
# SPDX-License-Identifier: GPL-2.0-or-later
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
set(FULL_VERSION "2.0.0")
string(REGEX MATCH "^[0-9]+.[0-9]+.[0-9]+" cmake_compat_version ${FULL_VERSION})
project(qgpgme VERSION ${cmake_compat_version})
set(VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(VERSION_MICRO ${PROJECT_VERSION_PATCH})
# LT Version numbers, remember to change them just *before* a release.
# (Code changed: REVISION++)
# (Interfaces added/removed/changed: CURRENT++, REVISION=0)
# (Interfaces added: AGE++)
# (Interfaces removed: AGE=0)
set(LIBQGPGME_LT_CURRENT "22")
set(LIBQGPGME_LT_AGE "7")
set(LIBQGPGME_LT_REVISION "0")
math(EXPR LIBQGPGME_SOVERSION "${LIBQGPGME_LT_CURRENT} - ${LIBQGPGME_LT_AGE}")
set(GPG_ERROR_REQUIRED_VERSION "1.47")
set(GPGME_REQUIRED_VERSION "1.24.2")
set(GPGMEPP_REQUIRED_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.0")
set(QT5_REQUIRED_VERSION "5.15.0")
set(QT6_REQUIRED_VERSION "6.5.0")
option(QGPGME_BUILD_QT5 "Build for Qt5" ON)
option(QGPGME_BUILD_QT6 "Build for Qt6" ON)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
include(G10CMakeSettings)
include(G10AddDistTargets)
include(G10AddGenChangeLogTarget)
include(G10AddReleaseTargets)
include(G10CompilerSettings)
include(G10GetFullVersion)
include(ECMGenerateHeaders)
include(ECMUninstallTarget)
include(FeatureSummary)
include(GNUInstallDirs)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
find_package(LibGpgError ${GPG_ERROR_REQUIRED_VERSION})
set_package_properties(LibGpgError PROPERTIES TYPE REQUIRED)
find_package(Gpgme ${GPGME_REQUIRED_VERSION})
set_package_properties(Gpgme PROPERTIES TYPE REQUIRED)
find_package(Gpgmepp ${GPGMEPP_REQUIRED_VERSION} CONFIG)
set_package_properties(Gpgmepp PROPERTIES DESCRIPTION "GpgME++ library" URL "https://www.gnupg.org" TYPE REQUIRED)
# Check for tools for building the Qt binding docs
find_package(Doxygen OPTIONAL_COMPONENTS dot)
set_package_properties(Doxygen PROPERTIES DESCRIPTION "Used for building the documentation")
g10_get_full_version(TAG_PREFIX gpgmeqt)
# create the VERSION file
find_package(Git QUIET)
if (GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
# get the current commit ID
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --verify HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE commit_id
)
string(STRIP "${commit_id}" commit_id) # strip trailing whitespace
file(WRITE "${CMAKE_BINARY_DIR}/VERSION" "${G10_FULL_VERSION}\n${commit_id}\n")
elseif(EXISTS "${CMAKE_SOURCE_DIR}/VERSION")
configure_file("${CMAKE_SOURCE_DIR}/VERSION" "VERSION" COPYONLY)
else()
file(WRITE "${CMAKE_BINARY_DIR}/VERSION" "${G10_FULL_VERSION}\nunknown\n")
endif()
if(UNIX)
# start ChangeLog at import from KDE in gpgme repo
g10_add_gen_changelog_target(
SINCE "2016-03-08T00:00:00"
FOOTER "${CMAKE_SOURCE_DIR}/build-aux/git-log-footer"
)
set(EXTRA_DIST
"${CMAKE_BINARY_DIR}/ChangeLog"
"${CMAKE_BINARY_DIR}/VERSION"
)
g10_add_dist_targets(
VERSION "${G10_FULL_VERSION}"
ARCHIVE_FORMAT "tar.xz"
EXTRA_FILES ${EXTRA_DIST}
)
add_dependencies(dist gen-ChangeLog)
g10_add_release_targets(
VERSION "${G10_FULL_VERSION}"
ARCHIVE_FORMAT "tar.xz"
RELEASE_ARCHIVE_SUFFIX "gpgme"
)
endif()
+include(G10GitHooks)
+g10_configure_git_hooks()
+
if(QGPGME_BUILD_QT5)
set(QT_MAJOR_VERSION 5)
find_package(Qt5 ${QT5_REQUIRED_VERSION} REQUIRED COMPONENTS Core)
add_subdirectory(src 5/src)
if(BUILD_TESTING)
add_subdirectory(tests 5/tests)
endif()
endif()
if(QGPGME_BUILD_QT6)
set(QT_MAJOR_VERSION 6)
find_package(Qt6 ${QT6_REQUIRED_VERSION} CONFIG REQUIRED Core CoreTools)
add_subdirectory(src 6/src)
if(BUILD_TESTING)
add_subdirectory(tests 6/tests)
endif()
endif()
if(DOXYGEN_FOUND)
add_subdirectory(doc)
endif()
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
diff --git a/cmake/modules/G10GitHooks.cmake b/cmake/modules/G10GitHooks.cmake
new file mode 100644
index 0000000..3e1649b
--- /dev/null
+++ b/cmake/modules/G10GitHooks.cmake
@@ -0,0 +1,109 @@
+# Copyright 2020-2023 Alexander Lohnau <alexander.lohnau@gmx.de>
+# Copyright 2022 Ahmad Samir <a.samirh78@gmail.com>
+# Copyright 2023 Johannes Zarl-Zierl <johannes@zarl-zierl.at>
+# Copyright 2025 g10 Code GmbH
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
+#[=======================================================================[.rst:
+G10GitHooks
+-----------
+
+Configure the usual Git hooks for g10 Code projects.
+
+::
+
+ g10_configure_git_hooks()
+
+This function will enable the pre-commit.sample hook (e.g. to disallow trailing
+whitespace) and the commit-msg hook in build-aux.
+If a custom hooks directory is set via ``core.hooksPath``, a warning is issued.
+
+Example usage:
+
+.. code-block:: cmake
+
+ include(G10GitHooks)
+ g10_configure_git_hooks()
+
+Since 5.79
+#]=======================================================================]
+
+function(G10_CONFIGURE_GIT_HOOKS)
+ set(_oneValueArgs "")
+ set(_multiValueArgs CHECKS CUSTOM_SCRIPTS)
+ cmake_parse_arguments(ARG "" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN})
+
+ if(NOT UNIX)
+ return()
+ endif()
+
+ if(NOT CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
+ message(STATUS "Project is not top level project - pre-commit hook not installed")
+ return()
+ endif()
+
+ set(git_dir "${CMAKE_SOURCE_DIR}/.git")
+ if (NOT IS_DIRECTORY ${git_dir})
+ # ignore secondary git work trees and tarballs
+ return()
+ endif()
+
+ find_package(Git QUIET)
+ if (NOT GIT_FOUND)
+ return()
+ endif()
+
+ set(git_hooks_dir "${git_dir}/hooks")
+ execute_process(COMMAND "${GIT_EXECUTABLE}" config --get core.hooksPath
+ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+ RESULT_VARIABLE _gitresult
+ OUTPUT_VARIABLE _gitoutput
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+ if(_gitresult EQUAL 0 AND NOT ${git_hooks_dir} EQUAL "${_gitoutput}")
+ message(WARNING "Git is configured to use '${_gitoutput}' for hooks. The generated commit hooks will likely not be executed.")
+ endif()
+
+ if(EXISTS "${git_hooks_dir}/pre-commit.sample" AND NOT EXISTS "${git_hooks_dir}/pre-commit")
+ message(STATUS
+ "*** Activating trailing whitespace git pre-commit hook. ***\n"
+ " To deactivate this pre-commit hook again move .git/hooks/pre-commit\n"
+ " and .git/hooks/pre-commit.sample out of the way.")
+ execute_process(COMMAND cp -p "${git_hooks_dir}/pre-commit.sample" "${git_hooks_dir}/pre-commit"
+ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
+ file(CHMOD "${git_hooks_dir}/pre-commit"
+ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+ endif()
+ if(EXISTS "${CMAKE_SOURCE_DIR}/build-aux/git-hooks/commit-msg" AND NOT EXISTS "${git_hooks_dir}/commit-msg")
+ message(STATUS "*** Activating commit log message check hook. ***")
+ file(COPY "${CMAKE_SOURCE_DIR}/build-aux/git-hooks/commit-msg"
+ DESTINATION "${git_hooks_dir}")
+ file(CHMOD "${git_hooks_dir}/commit-msg"
+ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+ endif()
+endfunction()
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sun, Feb 23, 7:55 PM (1 h, 12 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
f5/b2/3bcf207fb952b2e0faa8e2b81055
Attached To
rGPGMEQT Gpgme for Qt
Event Timeline
Log In to Comment