Skip to content

Commit c2892f8

Browse files
committed
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 git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1921127 13f79535-47bb-0310-9956-ffa450edef68
1 parent 6f15d10 commit c2892f8

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

CMakeLists.txt

+14
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ option(SVN_ENABLE_FS_X "Enable Subversion FSX Repository Filesystem Library" ON)
9090
option(SVN_ENABLE_FS_BASE "Enable Subversion Filesystem Base Library (NOT IMPLEMENTED and DEPRECATED)" OFF)
9191
option(SVN_ENABLE_NLS "Enable gettext functionality" OFF)
9292
option(SVN_ENABLE_AUTH_KWALLET "Enable KWallet authentification library" OFF)
93+
option(SVN_ENABLE_AUTH_GNOME_KEYRING "Enable GNOME Keyring for auth credentials" OFF)
9394

9495
option(SVN_INSTALL_PRIVATE_H "Install private header files." OFF)
9596

@@ -304,6 +305,18 @@ if(SVN_ENABLE_AUTH_KWALLET)
304305
target_compile_definitions(external-kwallet INTERFACE SVN_HAVE_KF5)
305306
endif()
306307

308+
### GNOME Keyring
309+
310+
if(SVN_ENABLE_AUTH_GNOME_KEYRING)
311+
add_library(external-gnome-keyring INTERFACE)
312+
313+
find_package(PkgConfig REQUIRED)
314+
pkg_check_modules(libsecret-1 REQUIRED IMPORTED_TARGET libsecret-1)
315+
target_link_libraries(external-gnome-keyring INTERFACE PkgConfig::libsecret-1)
316+
317+
add_compile_definitions(SVN_HAVE_LIBSECRET)
318+
endif()
319+
307320
if(SVN_ENABLE_SWIG_PERL OR SVN_ENABLE_SWIG_PYTHON OR SVN_ENABLE_SWIG_RUBY)
308321
find_package(SWIG REQUIRED)
309322
include(${SWIG_USE_FILE})
@@ -770,6 +783,7 @@ message(STATUS " Build programs ................ : ${SVN_ENABLE_PROGRAMS}")
770783
message(STATUS " Build tools ................... : ${SVN_ENABLE_TOOLS}")
771784
message(STATUS " Build test suite .............. : ${SVN_ENABLE_TESTS}")
772785
message(STATUS " Enable KWallet integration .... : ${SVN_ENABLE_AUTH_KWALLET}")
786+
message(STATUS " Enable Gnome Keyring .......... : ${SVN_ENABLE_AUTH_GNOME_KEYRING}")
773787
message(STATUS " Install:")
774788
message(STATUS " Install prefix: ............... : ${CMAKE_INSTALL_PREFIX}")
775789
message(STATUS " Install private headers: ...... : ${SVN_INSTALL_PRIVATE_H}")

build/generator/gen_cmake.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ def get_target_conditions(target):
7777
enable_condition.append("SVN_ENABLE_SVNXX")
7878
elif target.name == "libsvn_auth_kwallet":
7979
enable_condition.append("SVN_ENABLE_AUTH_KWALLET")
80+
elif target.name == "libsvn_auth_gnome_keyring":
81+
enable_condition.append("SVN_ENABLE_AUTH_GNOME_KEYRING")
8082

8183
if isinstance(target, gen_base.TargetExe):
8284
if target.install == "test" or target.install == "sub-test":
@@ -259,8 +261,6 @@ def get_dependencies(self, target_name):
259261

260262
def check_ignore_target(self, target):
261263
ignore_names = [
262-
"libsvn_auth_gnome_keyring",
263-
264264
"svnxx-tests",
265265

266266
"libsvnjavahl",

0 commit comments

Comments
 (0)