Author: rinrab
Date: Sat Oct  5 08:22:34 2024
New Revision: 1921127

URL: http://svn.apache.org/viewvc?rev=1921127&view=rev
Log:
cmake: Implement support of GNOME Keyring authentication trough libsecret
library.

- for finding the libsecret library we are going to use pkgconfig modules of
  it trough FindPkgConfig CMake module [1].

* build/generator/gen_cmake.py
  (get_target_conditions): Use SVN_ENABLE_AUTH_GNOME_KEYRING condition
   variable for the libsvn_auth_gnome_keyring library.
  (check_ignore_target): Remove libsvn_auth_gnome_keyring from ignore_names.
* CMakeLists.txt
  (options): Define SVN_ENABLE_AUTH_GNOME_KEYRING option.
  (GNOME Keyring): Search for libsecret using pkgconfig, create interface
   library for this dependency, define SVN_HAVE_LIBSECRET definition.
  (configure summary): Write state of SVN_ENABLE_AUTH_GNOME_KEYRING.

[1] https://cmake.org/cmake/help/latest/module/FindPkgConfig.html

Modified:
    subversion/trunk/CMakeLists.txt
    subversion/trunk/build/generator/gen_cmake.py

Modified: subversion/trunk/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?rev=1921127&r1=1921126&r2=1921127&view=diff
==============================================================================
--- subversion/trunk/CMakeLists.txt (original)
+++ subversion/trunk/CMakeLists.txt Sat Oct  5 08:22:34 2024
@@ -90,6 +90,7 @@ option(SVN_ENABLE_FS_X "Enable Subversio
 option(SVN_ENABLE_FS_BASE "Enable Subversion Filesystem Base Library (NOT 
IMPLEMENTED and DEPRECATED)" OFF)
 option(SVN_ENABLE_NLS "Enable gettext functionality" OFF)
 option(SVN_ENABLE_AUTH_KWALLET "Enable KWallet authentification library" OFF)
+option(SVN_ENABLE_AUTH_GNOME_KEYRING "Enable GNOME Keyring for auth 
credentials" OFF)
 
 option(SVN_INSTALL_PRIVATE_H "Install private header files." OFF)
 
@@ -304,6 +305,18 @@ if(SVN_ENABLE_AUTH_KWALLET)
   target_compile_definitions(external-kwallet INTERFACE SVN_HAVE_KF5)
 endif()
 
+### GNOME Keyring
+
+if(SVN_ENABLE_AUTH_GNOME_KEYRING)
+  add_library(external-gnome-keyring INTERFACE)
+
+  find_package(PkgConfig REQUIRED)
+  pkg_check_modules(libsecret-1 REQUIRED IMPORTED_TARGET libsecret-1)
+  target_link_libraries(external-gnome-keyring INTERFACE 
PkgConfig::libsecret-1)
+
+  add_compile_definitions(SVN_HAVE_LIBSECRET)
+endif()
+
 if(SVN_ENABLE_SWIG_PERL OR SVN_ENABLE_SWIG_PYTHON OR SVN_ENABLE_SWIG_RUBY)
   find_package(SWIG REQUIRED)
   include(${SWIG_USE_FILE})
@@ -770,6 +783,7 @@ message(STATUS "    Build programs .....
 message(STATUS "    Build tools ................... : ${SVN_ENABLE_TOOLS}")
 message(STATUS "    Build test suite .............. : ${SVN_ENABLE_TESTS}")
 message(STATUS "    Enable KWallet integration .... : 
${SVN_ENABLE_AUTH_KWALLET}")
+message(STATUS "    Enable Gnome Keyring .......... : 
${SVN_ENABLE_AUTH_GNOME_KEYRING}")
 message(STATUS "  Install:")
 message(STATUS "    Install prefix: ............... : ${CMAKE_INSTALL_PREFIX}")
 message(STATUS "    Install private headers: ...... : 
${SVN_INSTALL_PRIVATE_H}")

Modified: subversion/trunk/build/generator/gen_cmake.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/build/generator/gen_cmake.py?rev=1921127&r1=1921126&r2=1921127&view=diff
==============================================================================
--- subversion/trunk/build/generator/gen_cmake.py (original)
+++ subversion/trunk/build/generator/gen_cmake.py Sat Oct  5 08:22:34 2024
@@ -77,6 +77,8 @@ def get_target_conditions(target):
       enable_condition.append("SVN_ENABLE_SVNXX")
     elif target.name == "libsvn_auth_kwallet":
       enable_condition.append("SVN_ENABLE_AUTH_KWALLET")
+    elif target.name == "libsvn_auth_gnome_keyring":
+      enable_condition.append("SVN_ENABLE_AUTH_GNOME_KEYRING")
 
   if isinstance(target, gen_base.TargetExe):
     if target.install == "test" or target.install == "sub-test":
@@ -259,8 +261,6 @@ class Generator(gen_base.GeneratorBase):
 
   def check_ignore_target(self, target):
     ignore_names = [
-      "libsvn_auth_gnome_keyring",
-
       "svnxx-tests",
 
       "libsvnjavahl",


Reply via email to