aboutsummaryrefslogtreecommitdiff
path: root/ports/libarchive/pkgconfig-modules.patch
blob: d8e6f4cf759f411284618ca204bcb9eefed00a0d (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7b6f0ad..18cf15c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -397,6 +397,8 @@ IF(DEFINED __GNUWIN32PATH AND EXISTS "${__GNUWIN32PATH}")
 ENDIF(DEFINED __GNUWIN32PATH AND EXISTS "${__GNUWIN32PATH}")
 
 SET(ADDITIONAL_LIBS "")
+SET(LIBARCHIVE_LIBS_PRIVATE "") # additional libs for which the pc module is unknown
+SET(LIBARCHIVE_REQUIRES_PRIVATE "") # pc modules for additonal libs
 #
 # Find ZLIB
 #
@@ -410,6 +412,7 @@ IF(ZLIB_FOUND)
   SET(HAVE_ZLIB_H 1)
   INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
   LIST(APPEND ADDITIONAL_LIBS ${ZLIB_LIBRARIES})
+  STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " zlib")
   IF(WIN32 AND NOT CYGWIN)
     SET(ZLIB_WINAPI OFF) # skip following test, it crashes with weird message box
     IF(ZLIB_WINAPI)
@@ -442,6 +445,7 @@ IF(BZIP2_FOUND)
   SET(HAVE_BZLIB_H 1)
   INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR})
   LIST(APPEND ADDITIONAL_LIBS ${BZIP2_LIBRARIES})
+  STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " bzip2")
   # Test if a macro is needed for the library.
   TRY_MACRO_FOR_LIBRARY(
     "${BZIP2_INCLUDE_DIR}" "${BZIP2_LIBRARIES}"
@@ -471,6 +475,7 @@ IF(LibLZMA_FOUND)
   SET(HAVE_LIBLZMA 1)
   SET(HAVE_LZMA_H 1)
   LIST(APPEND ADDITIONAL_LIBS LibLZMA::LibLZMA)
+  STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " liblzma")
 ELSE(LIBLZMA_FOUND)
 # LZMA not found and will not be used.
 ENDIF(LIBLZMA_FOUND)
@@ -499,6 +504,7 @@ IF(LZO2_FOUND)
   SET(HAVE_LZO_LZO1X_H 1)
   INCLUDE_DIRECTORIES(${LZO2_INCLUDE_DIR})
   LIST(APPEND ADDITIONAL_LIBS ${LZO2_LIBRARY})
+  STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " lzo2")
   #
   # TODO: test for static library.
   #
@@ -526,6 +532,7 @@ IF(LIBB2_FOUND)
   SET(HAVE_BLAKE2_H 1)
   SET(ARCHIVE_BLAKE2 FALSE)
   LIST(APPEND ADDITIONAL_LIBS ${LIBB2_LIBRARY})
+  LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBB2_LIBRARY})
   CMAKE_PUSH_CHECK_STATE()
   SET(CMAKE_REQUIRED_LIBRARIES ${LIBB2_LIBRARY})
   SET(CMAKE_REQUIRED_INCLUDES ${LIBB2_INCLUDE_DIR})
@@ -552,6 +559,7 @@ IF(lz4_FOUND)
   SET(HAVE_LIBLZ4 1)
   SET(HAVE_LZ4_H 1)
   LIST(APPEND ADDITIONAL_LIBS lz4::lz4)
+  STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " liblz4")
   #
   # TODO: test for static library.
   #
@@ -581,6 +589,7 @@ IF(zstd_FOUND)
   LIST(APPEND ADDITIONAL_LIBS zstd::libzstd_static)
   SET(CMAKE_REQUIRED_LIBRARIES zstd::libzstd_static)  
   ENDIF(TARGET zstd::libzstd_shared)
+  STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " libzstd")
 ENDIF(ZSTD_FOUND)
 MARK_AS_ADVANCED(CLEAR ZSTD_INCLUDE_DIR)
 MARK_AS_ADVANCED(CLEAR ZSTD_LIBRARY)
@@ -678,6 +687,7 @@ IF(ENABLE_CNG)
   LA_CHECK_INCLUDE_FILE("Bcrypt.h" HAVE_BCRYPT_H)
   IF(HAVE_BCRYPT_H)
     LIST(APPEND ADDITIONAL_LIBS "Bcrypt")
+    LIST(APPEND LIBARCHIVE_LIBS_PRIVATE "Bcrypt")
   ENDIF(HAVE_BCRYPT_H)
 ELSE(ENABLE_CNG)
   UNSET(HAVE_BCRYPT_H CACHE)
@@ -709,6 +719,7 @@ IF(ENABLE_MBEDTLS)
   IF(MBEDTLS_FOUND)
     SET(HAVE_LIBMBEDCRYPTO 1)
     LIST(APPEND ADDITIONAL_LIBS ${MBEDCRYPTO_LIBRARY})
+    LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${MBEDCRYPTO_LIBRARY})
     INCLUDE_DIRECTORIES(${MBEDTLS_INCLUDE_DIRS})
 
     LIST(APPEND CMAKE_REQUIRED_INCLUDES ${MBEDTLS_INCLUDE_DIRS})
@@ -729,6 +740,7 @@ IF(ENABLE_NETTLE)
   IF(NETTLE_FOUND)
     SET(HAVE_LIBNETTLE 1)
     LIST(APPEND ADDITIONAL_LIBS ${NETTLE_LIBRARIES})
+    STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " nettle")
     INCLUDE_DIRECTORIES(${NETTLE_INCLUDE_DIR})
 
     LIST(APPEND CMAKE_REQUIRED_INCLUDES ${NETTLE_INCLUDE_DIR})
@@ -753,6 +765,11 @@ IF(ENABLE_OPENSSL AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
   IF(OpenSSL_FOUND)
     SET(HAVE_LIBCRYPTO 1)
     LIST(APPEND ADDITIONAL_LIBS OpenSSL::Crypto)
+    IF(WIN32 AND NOT MINGW)
+      LIST(APPEND LIBARCHIVE_LIBS_PRIVATE "libcrypto")
+    ELSE()
+      STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " libcrypto")
+    ENDIF()
     message("OPENSSL_CRYPTO_LIBRARY: OpenSSL::Crypto")
   ENDIF(OPENSSL_FOUND)
 ELSE()
@@ -767,6 +780,7 @@ IF(NOT OPENSSL_FOUND)
     SET(CMAKE_REQUIRED_LIBRARIES "md")
     FIND_LIBRARY(LIBMD_LIBRARY NAMES md)
     LIST(APPEND ADDITIONAL_LIBS ${LIBMD_LIBRARY})
+    LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBMD_LIBRARY})
     CMAKE_POP_CHECK_STATE()	# Restore the state of the variables
   ENDIF(LIBMD_FOUND)
 ENDIF(NOT OPENSSL_FOUND)
@@ -872,6 +886,11 @@ main(int argc, char **argv)
         IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
           INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
 	  LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_LIBRARIES})
+          IF(WIN32 AND NOT MINGW)
+            LIST(APPEND LIBARCHIVE_LIBS_PRIVATE "libssl")
+          ELSE()
+            STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " libssl")
+          ENDIF()
         ENDIF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
       ENDIF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
       ENDIF(NOT ARCHIVE_CRYPTO_${ALGORITHM})
@@ -1045,6 +1060,7 @@ IF(ENABLE_ICONV)
       CHECK_ICONV("libiconv" "")
       IF (HAVE_ICONV)
         LIST(APPEND ADDITIONAL_LIBS ${LIBICONV_PATH})
+        LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBICONV_PATH})
       ENDIF(HAVE_ICONV)
     ENDIF(NOT HAVE_ICONV AND LIBICONV_PATH)
   ENDIF(ICONV_INCLUDE_DIR)
@@ -1078,6 +1094,7 @@ IF(ENABLE_ICONV)
       ENDIF(WIN32 AND NOT CYGWIN)
       IF(HAVE_LOCALE_CHARSET)
         LIST(APPEND ADDITIONAL_LIBS ${LIBCHARSET_PATH})
+        LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBCHARSET_PATH})
       ENDIF(HAVE_LOCALE_CHARSET)
     ENDIF(LIBCHARSET_PATH)
   ENDIF(LIBICONV_PATH)
@@ -1111,6 +1128,7 @@ IF(LIBXML2_FOUND)
   CMAKE_PUSH_CHECK_STATE()	# Save the state of the variables
   INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
   LIST(APPEND ADDITIONAL_LIBS ${LIBXML2_LIBRARIES})
+  STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " libxml-2.0")
   SET(HAVE_LIBXML2 1)
   # libxml2's include files use iconv.h
   SET(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR})
@@ -1140,6 +1158,7 @@ ELSE(LIBXML2_FOUND)
     CMAKE_PUSH_CHECK_STATE()	# Save the state of the variables
     INCLUDE_DIRECTORIES(${EXPAT_INCLUDE_DIR})
     LIST(APPEND ADDITIONAL_LIBS ${EXPAT_LIBRARIES})
+    STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " expat")
     SET(HAVE_LIBEXPAT 1)
     LA_CHECK_INCLUDE_FILE("expat.h" HAVE_EXPAT_H)
     CMAKE_POP_CHECK_STATE()	# Restore the state of the variables
@@ -1170,6 +1189,7 @@ IF(POSIX_REGEX_LIB MATCHES "^(AUTO|LIBC|LIBREGEX)$")
         CHECK_FUNCTION_EXISTS_GLIBC(regcomp HAVE_REGCOMP_LIBREGEX)
         IF(HAVE_REGCOMP_LIBREGEX)
           LIST(APPEND ADDITIONAL_LIBS ${REGEX_LIBRARY})
+          LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${REGEX_LIBRARY})
           #
           # If regex.h is not found, retry looking for regex.h at
           # REGEX_INCLUDE_DIR
@@ -1218,6 +1238,7 @@ IF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$"
   IF(PCREPOSIX_FOUND)
     INCLUDE_DIRECTORIES(${PCRE_INCLUDE_DIR})
     LIST(APPEND ADDITIONAL_LIBS ${PCREPOSIX_LIBRARIES})
+    LIST(APPEND LIBARCHIVE_LIBS_PRIVATE  ${PCREPOSIX_LIBRARIES})
     # Test if a macro is needed for the library.
     TRY_MACRO_FOR_LIBRARY(
       "${PCRE_INCLUDE_DIR}" "${PCREPOSIX_LIBRARIES}"
@@ -1229,6 +1250,7 @@ IF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$"
 	ELSEIF(NOT WITHOUT_PCRE_STATIC AND NOT PCRE_STATIC AND PCRE_FOUND)
 	  # Determine if pcre static libraries are to be used.
       LIST(APPEND ADDITIONAL_LIBS ${PCRE_LIBRARIES})
+      LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${PCRE_LIBRARIES})
       SET(TMP_LIBRARIES ${PCREPOSIX_LIBRARIES} ${PCRE_LIBRARIES})
       MESSAGE(STATUS "trying again with -lpcre included")
       TRY_MACRO_FOR_LIBRARY(
@@ -1244,6 +1266,7 @@ IF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$"
         # ___chkstk_ms.
         MESSAGE(STATUS "Visual Studio build detected, trying again with -lgcc included")
         LIST(APPEND ADDITIONAL_LIBS ${LIBGCC_LIBRARIES})
+        LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBGCC_LIBRARIES})
         SET(TMP_LIBRARIES ${PCREPOSIX_LIBRARIES} ${PCRE_LIBRARIES} ${LIBGCC_LIBRARIES})
           TRY_MACRO_FOR_LIBRARY(
             "${PCRE_INCLUDE_DIR}" "${TMP_LIBRARIES}"
@@ -1762,6 +1785,7 @@ IF(ENABLE_ACL)
     SET(CMAKE_REQUIRED_LIBRARIES "acl")
     FIND_LIBRARY(ACL_LIBRARY NAMES acl)
     LIST(APPEND ADDITIONAL_LIBS ${ACL_LIBRARY})
+    LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${ACL_LIBRARY})
   ENDIF(HAVE_LIBACL)
 
   CHECK_TYPE_EXISTS(acl_t "sys/types.h;sys/acl.h" HAVE_ACL_T)
@@ -1901,6 +1925,7 @@ int main(void) { return ACL_SYNCHRONIZE; }" HAVE_DECL_ACL_SYNCHRONIZE)
     SET(CMAKE_REQUIRED_LIBRARIES "richacl")
     FIND_LIBRARY(RICHACL_LIBRARY NAMES richacl)
     LIST(APPEND ADDITIONAL_LIBS ${RICHACL_LIBRARY})
+    LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${RICHACL_LIBRARY})
   ENDIF(HAVE_LIBRICHACL)
 
   CHECK_STRUCT_HAS_MEMBER("struct richace" e_type "sys/richacl.h"
diff --git a/build/cmake/CreatePkgConfigFile.cmake b/build/cmake/CreatePkgConfigFile.cmake
index bc5a43f..422b83b 100644
--- a/build/cmake/CreatePkgConfigFile.cmake
+++ b/build/cmake/CreatePkgConfigFile.cmake
@@ -8,7 +8,7 @@ SET(libdir \${exec_prefix}/lib)
 SET(includedir \${prefix}/include)
 # Now, this is not particularly pretty, nor is it terribly accurate...
 # Loop over all our additional libs
-FOREACH(mylib ${ADDITIONAL_LIBS})
+FOREACH(mylib ${LIBARCHIVE_LIBS_PRIVATE})
 	# Extract the filename from the absolute path
 	GET_FILENAME_COMPONENT(mylib_name ${mylib} NAME_WE)
 	# Strip the lib prefix
@@ -16,10 +16,6 @@ FOREACH(mylib ${ADDITIONAL_LIBS})
 	# Append it to our LIBS string
 	SET(LIBS "${LIBS} -l${mylib_name}")
 ENDFOREACH()
-# libxml2 is easier, since it's already using pkg-config
-FOREACH(mylib ${PC_LIBXML_STATIC_LDFLAGS})
-	SET(LIBS "${LIBS} ${mylib}")
-ENDFOREACH()
 # FIXME: The order of the libraries doesn't take dependencies into account,
 #	 thus there's a good chance it'll make some binutils versions unhappy...
 #	 This only affects Libs.private (looked up for static builds) though.
diff --git a/build/pkgconfig/libarchive.pc.in b/build/pkgconfig/libarchive.pc.in
index 4b631e6..80198f1 100644
--- a/build/pkgconfig/libarchive.pc.in
+++ b/build/pkgconfig/libarchive.pc.in
@@ -10,3 +10,4 @@ Cflags: -I${includedir}
 Cflags.private: -DLIBARCHIVE_STATIC
 Libs: -L${libdir} -larchive
 Libs.private: @LIBS@
+Requires.private: @LIBARCHIVE_REQUIRES_PRIVATE@