aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libxslt/fix-gcrypt-deps.patch
blob: fc5b07c7e36cd5c077ec06262214fd6d7dcedcc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fb352475..4113fbff 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -319,7 +319,9 @@ target_include_directories(
 
 if(LIBXSLT_WITH_CRYPTO AND NOT WIN32)
 	target_link_libraries(LibExslt PRIVATE Gcrypt::Gcrypt)
-	set(LIBGCRYPT_LIBS "-lgcrypt")
+	# For libexslt.pc
+	set(LIBGCRYPT_LIBS "")
+	string(APPEND EXSLT_PRIVATE_REQUIRES " libgcrypt")
 endif()
 
 if(UNIX)
diff --git a/FindGcrypt.cmake b/FindGcrypt.cmake
index 781113d5..6f680beb 100644
--- a/FindGcrypt.cmake
+++ b/FindGcrypt.cmake
@@ -1,3 +1,20 @@
+cmake_policy(PUSH)
+cmake_policy(SET CMP0012 NEW)
+cmake_policy(SET CMP0057 NEW)
+find_package(PkgConfig)
+if("REQUIRED" IN_LIST ${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
+	pkg_check_modules(libxslt_gcrypt REQUIRED IMPORTED_TARGET libgcrypt)
+else()
+	pkg_check_modules(libxslt_gcrypt IMPORTED_TARGET libgcrypt)
+endif()
+set(Gcrypt_FOUND "${libxslt_gcrypt_FOUND}") # CMake standard, needed for find_dependency
+set(GCRYPT_FOUND "${libxslt_gcrypt_FOUND}") # libxslt usage
+if(libxslt_gcrypt_FOUND AND NOT TARGET Gcrypt::Gcrypt)
+	add_library(Gcrypt::Gcrypt INTERFACE IMPORTED)
+	set_target_properties(Gcrypt::Gcrypt PROPERTIES INTERFACE_LINK_LIBRARIES PkgConfig::libxslt_gcrypt)
+endif()
+cmake_policy(POP)
+if(0)
 include(FindPackageHandleStandardArgs)
 include(SelectLibraryConfigurations)
 
@@ -38,3 +55,4 @@ if(GCRYPT_FOUND AND NOT TARGET Gcrypt::Gcrypt)
 		INTERFACE_INCLUDE_DIRECTORIES "${GCRYPT_INCLUDE_DIRS}"
 	)
 endif()
+endif()