@crossbind/port-curl-ios 2.0.0-beta.56 → 2.0.0-beta.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/curl.xcframework/ios-arm64/Headers/curl/curl.h +42 -16
  2. package/curl.xcframework/ios-arm64/Headers/curl/curlver.h +5 -6
  3. package/curl.xcframework/ios-arm64/Headers/curl/multi.h +14 -14
  4. package/curl.xcframework/ios-arm64/Headers/curl/typecheck-gcc.h +7 -3
  5. package/curl.xcframework/ios-arm64/Headers/curl/urlapi.h +1 -0
  6. package/curl.xcframework/ios-arm64/libcurl.a +0 -0
  7. package/curl.xcframework/ios-arm64-simulator/Headers/curl/curl.h +42 -16
  8. package/curl.xcframework/ios-arm64-simulator/Headers/curl/curlver.h +5 -6
  9. package/curl.xcframework/ios-arm64-simulator/Headers/curl/multi.h +14 -14
  10. package/curl.xcframework/ios-arm64-simulator/Headers/curl/typecheck-gcc.h +7 -3
  11. package/curl.xcframework/ios-arm64-simulator/Headers/curl/urlapi.h +1 -0
  12. package/curl.xcframework/ios-arm64-simulator/libcurl.a +0 -0
  13. package/dist/prebuilt/ios-iphoneos-mt-release/crossbind-source.fingerprint +1 -1
  14. package/dist/prebuilt/ios-iphoneos-mt-release/include/curl/curl.h +42 -16
  15. package/dist/prebuilt/ios-iphoneos-mt-release/include/curl/curlver.h +5 -6
  16. package/dist/prebuilt/ios-iphoneos-mt-release/include/curl/multi.h +14 -14
  17. package/dist/prebuilt/ios-iphoneos-mt-release/include/curl/typecheck-gcc.h +7 -3
  18. package/dist/prebuilt/ios-iphoneos-mt-release/include/curl/urlapi.h +1 -0
  19. package/dist/prebuilt/ios-iphoneos-mt-release/lib/cmake/CURL/CURLConfig.cmake +4 -4
  20. package/dist/prebuilt/ios-iphoneos-mt-release/lib/cmake/CURL/CURLConfigVersion.cmake +3 -3
  21. package/dist/prebuilt/ios-iphoneos-mt-release/lib/cmake/CURL/FindGSS.cmake +130 -112
  22. package/dist/prebuilt/ios-iphoneos-mt-release/lib/cmake/CURL/FindLibgsasl.cmake +1 -0
  23. package/dist/prebuilt/ios-iphoneos-mt-release/lib/cmake/CURL/FindNettle.cmake +13 -9
  24. package/dist/prebuilt/ios-iphoneos-mt-release/lib/cmake/CURL/FindZstd.cmake +2 -2
  25. package/dist/prebuilt/ios-iphoneos-mt-release/lib/libcurl.a +0 -0
  26. package/dist/prebuilt/ios-iphoneos-mt-release/lib/pkgconfig/libcurl.pc +7 -4
  27. package/dist/prebuilt/ios-iphoneos-mt-release/share/man/man1/curl-config.1 +1 -1
  28. package/dist/prebuilt/ios-iphonesimulator-mt-release/crossbind-source.fingerprint +1 -1
  29. package/dist/prebuilt/ios-iphonesimulator-mt-release/include/curl/curl.h +42 -16
  30. package/dist/prebuilt/ios-iphonesimulator-mt-release/include/curl/curlver.h +5 -6
  31. package/dist/prebuilt/ios-iphonesimulator-mt-release/include/curl/multi.h +14 -14
  32. package/dist/prebuilt/ios-iphonesimulator-mt-release/include/curl/typecheck-gcc.h +7 -3
  33. package/dist/prebuilt/ios-iphonesimulator-mt-release/include/curl/urlapi.h +1 -0
  34. package/dist/prebuilt/ios-iphonesimulator-mt-release/lib/cmake/CURL/CURLConfig.cmake +4 -4
  35. package/dist/prebuilt/ios-iphonesimulator-mt-release/lib/cmake/CURL/CURLConfigVersion.cmake +3 -3
  36. package/dist/prebuilt/ios-iphonesimulator-mt-release/lib/cmake/CURL/FindGSS.cmake +130 -112
  37. package/dist/prebuilt/ios-iphonesimulator-mt-release/lib/cmake/CURL/FindLibgsasl.cmake +1 -0
  38. package/dist/prebuilt/ios-iphonesimulator-mt-release/lib/cmake/CURL/FindNettle.cmake +13 -9
  39. package/dist/prebuilt/ios-iphonesimulator-mt-release/lib/cmake/CURL/FindZstd.cmake +2 -2
  40. package/dist/prebuilt/ios-iphonesimulator-mt-release/lib/libcurl.a +0 -0
  41. package/dist/prebuilt/ios-iphonesimulator-mt-release/lib/pkgconfig/libcurl.pc +7 -4
  42. package/dist/prebuilt/ios-iphonesimulator-mt-release/share/man/man1/curl-config.1 +1 -1
  43. package/package.json +5 -5
@@ -93,7 +93,9 @@
93
93
  defined(__CYGWIN__) || defined(AMIGA) || defined(__NuttX__) || \
94
94
  (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) || \
95
95
  (defined(__MidnightBSD_version) && (__MidnightBSD_version < 100000)) || \
96
- defined(__sun__) || defined(__serenity__) || defined(__vxworks__)
96
+ defined(__sun__) || defined(__serenity__) || defined(__vxworks__) || \
97
+ (defined(__linux__) && defined(_POSIX_C_SOURCE) && \
98
+ _POSIX_C_SOURCE >= 200112L)
97
99
  #include <sys/select.h>
98
100
  #endif
99
101
 
@@ -632,7 +634,7 @@ typedef enum {
632
634
  match */
633
635
  CURLE_SSL_INVALIDCERTSTATUS, /* 91 - invalid certificate status */
634
636
  CURLE_HTTP2_STREAM, /* 92 - stream error in HTTP/2 framing layer
635
- */
637
+ */
636
638
  CURLE_RECURSIVE_API_CALL, /* 93 - an api function was called from
637
639
  inside a callback */
638
640
  CURLE_AUTH_ERROR, /* 94 - an authentication function returned an
@@ -843,12 +845,20 @@ typedef enum {
843
845
  #endif
844
846
  #define CURLAUTH_BEARER (((unsigned long)1) << 6)
845
847
  #define CURLAUTH_AWS_SIGV4 (((unsigned long)1) << 7)
848
+ #define CURLAUTH_HTTPSIG (((unsigned long)1) << 8)
846
849
  #define CURLAUTH_ONLY (((unsigned long)1) << 31)
847
- #define CURLAUTH_ANY ((~CURLAUTH_DIGEST_IE) & \
850
+ #define CURLAUTH_ANY ((~(CURLAUTH_DIGEST_IE | \
851
+ CURLAUTH_HTTPSIG)) & \
848
852
  ((unsigned long)0xffffffff))
849
- #define CURLAUTH_ANYSAFE ((~(CURLAUTH_BASIC | CURLAUTH_DIGEST_IE)) & \
853
+ #define CURLAUTH_ANYSAFE ((~(CURLAUTH_BASIC | CURLAUTH_DIGEST_IE | \
854
+ CURLAUTH_HTTPSIG)) & \
850
855
  ((unsigned long)0xffffffff))
851
856
 
857
+ /* constants for CURLOPT_HTTPSIG_ALGORITHM */
858
+ #define CURLHTTPSIG_NONE 0L
859
+ #define CURLHTTPSIG_ED25519 1L
860
+ #define CURLHTTPSIG_HMAC_SHA256 2L
861
+
852
862
  /* all types supported by server */
853
863
  #define CURLSSH_AUTH_ANY ((unsigned long)0xffffffff)
854
864
  #define CURLSSH_AUTH_NONE 0L /* none allowed, silly but complete */
@@ -1537,8 +1547,7 @@ typedef enum {
1537
1547
 
1538
1548
  /* FTP Option that causes missing dirs to be created on the remote server.
1539
1549
  In 7.19.4 we introduced the convenience enums for this option using the
1540
- CURLFTP_CREATE_DIR prefix.
1541
- */
1550
+ CURLFTP_CREATE_DIR prefix. */
1542
1551
  CURLOPT(CURLOPT_FTP_CREATE_MISSING_DIRS, CURLOPTTYPE_LONG, 110),
1543
1552
 
1544
1553
  /* Set this to a bitmask value to enable the particular authentications
@@ -1589,7 +1598,7 @@ typedef enum {
1589
1598
  CURLUSESSL_TRY - try using SSL, proceed anyway otherwise
1590
1599
  CURLUSESSL_CONTROL - SSL for the control connection or fail
1591
1600
  CURLUSESSL_ALL - SSL for all communication or fail
1592
- */
1601
+ */
1593
1602
  CURLOPT(CURLOPT_USE_SSL, CURLOPTTYPE_VALUES, 119),
1594
1603
 
1595
1604
  /* The _LARGE version of the standard POSTFIELDSIZE option */
@@ -1615,7 +1624,7 @@ typedef enum {
1615
1624
  CURLFTPAUTH_DEFAULT - let libcurl decide
1616
1625
  CURLFTPAUTH_SSL - try "AUTH SSL" first, then TLS
1617
1626
  CURLFTPAUTH_TLS - try "AUTH TLS" first, then SSL
1618
- */
1627
+ */
1619
1628
  CURLOPT(CURLOPT_FTPSSLAUTH, CURLOPTTYPE_VALUES, 129),
1620
1629
 
1621
1630
  CURLOPTDEPRECATED(CURLOPT_IOCTLFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 130,
@@ -1650,8 +1659,7 @@ typedef enum {
1650
1659
  CURLOPT(CURLOPT_LOCALPORT, CURLOPTTYPE_LONG, 139),
1651
1660
 
1652
1661
  /* Number of ports to try, including the first one set with LOCALPORT.
1653
- Thus, setting it to 1 makes no additional attempts but the first.
1654
- */
1662
+ Thus, setting it to 1 makes no additional attempts but the first. */
1655
1663
  CURLOPT(CURLOPT_LOCALPORTRANGE, CURLOPTTYPE_LONG, 140),
1656
1664
 
1657
1665
  /* no transfer, set up connection and let application use the socket by
@@ -1863,13 +1871,16 @@ typedef enum {
1863
1871
  CURLOPT(CURLOPT_RESOLVE, CURLOPTTYPE_SLISTPOINT, 203),
1864
1872
 
1865
1873
  /* Set a username for authenticated TLS */
1866
- CURLOPT(CURLOPT_TLSAUTH_USERNAME, CURLOPTTYPE_STRINGPOINT, 204),
1874
+ CURLOPTDEPRECATED(CURLOPT_TLSAUTH_USERNAME, CURLOPTTYPE_STRINGPOINT, 204,
1875
+ 8.22.0, "Support was removed"),
1867
1876
 
1868
1877
  /* Set a password for authenticated TLS */
1869
- CURLOPT(CURLOPT_TLSAUTH_PASSWORD, CURLOPTTYPE_STRINGPOINT, 205),
1878
+ CURLOPTDEPRECATED(CURLOPT_TLSAUTH_PASSWORD, CURLOPTTYPE_STRINGPOINT, 205,
1879
+ 8.22.0, "Support was removed"),
1870
1880
 
1871
1881
  /* Set authentication type for authenticated TLS */
1872
- CURLOPT(CURLOPT_TLSAUTH_TYPE, CURLOPTTYPE_STRINGPOINT, 206),
1882
+ CURLOPTDEPRECATED(CURLOPT_TLSAUTH_TYPE, CURLOPTTYPE_STRINGPOINT, 206,
1883
+ 8.22.0, "Support was removed"),
1873
1884
 
1874
1885
  /* Set to 1 to enable the "TE:" header in HTTP requests to ask for
1875
1886
  compressed transfer-encoded responses. Set to 0 to disable the use of TE:
@@ -2030,13 +2041,16 @@ typedef enum {
2030
2041
  CURLOPT(CURLOPT_PROXY_SSLVERSION, CURLOPTTYPE_VALUES, 250),
2031
2042
 
2032
2043
  /* Set a username for authenticated TLS for proxy */
2033
- CURLOPT(CURLOPT_PROXY_TLSAUTH_USERNAME, CURLOPTTYPE_STRINGPOINT, 251),
2044
+ CURLOPTDEPRECATED(CURLOPT_PROXY_TLSAUTH_USERNAME, CURLOPTTYPE_STRINGPOINT,
2045
+ 251, 8.22.0, "Support was removed"),
2034
2046
 
2035
2047
  /* Set a password for authenticated TLS for proxy */
2036
- CURLOPT(CURLOPT_PROXY_TLSAUTH_PASSWORD, CURLOPTTYPE_STRINGPOINT, 252),
2048
+ CURLOPTDEPRECATED(CURLOPT_PROXY_TLSAUTH_PASSWORD, CURLOPTTYPE_STRINGPOINT,
2049
+ 252, 8.22.0, "Support was removed"),
2037
2050
 
2038
2051
  /* Set authentication type for authenticated TLS for proxy */
2039
- CURLOPT(CURLOPT_PROXY_TLSAUTH_TYPE, CURLOPTTYPE_STRINGPOINT, 253),
2052
+ CURLOPTDEPRECATED(CURLOPT_PROXY_TLSAUTH_TYPE, CURLOPTTYPE_STRINGPOINT, 253,
2053
+ 8.22.0, "Support was removed"),
2040
2054
 
2041
2055
  /* name of the file keeping your private SSL-certificate for proxy */
2042
2056
  CURLOPT(CURLOPT_PROXY_SSLCERT, CURLOPTTYPE_STRINGPOINT, 254),
@@ -2262,6 +2276,18 @@ typedef enum {
2262
2276
  /* set TLS supported signature algorithms */
2263
2277
  CURLOPT(CURLOPT_SSL_SIGNATURE_ALGORITHMS, CURLOPTTYPE_STRINGPOINT, 328),
2264
2278
 
2279
+ /* RFC 9421 HTTP Message Signatures algorithm */
2280
+ CURLOPT(CURLOPT_HTTPSIG_ALGORITHM, CURLOPTTYPE_VALUES, 329),
2281
+
2282
+ /* Hex-encoded key for HTTP Message Signatures */
2283
+ CURLOPT(CURLOPT_HTTPSIG_KEY, CURLOPTTYPE_STRINGPOINT, 330),
2284
+
2285
+ /* Key identifier for HTTP Message Signatures */
2286
+ CURLOPT(CURLOPT_HTTPSIG_KEYID, CURLOPTTYPE_STRINGPOINT, 331),
2287
+
2288
+ /* Space-separated list of components to sign for HTTP Message Signatures */
2289
+ CURLOPT(CURLOPT_HTTPSIG_HEADERS, CURLOPTTYPE_STRINGPOINT, 332),
2290
+
2265
2291
  CURLOPT_LASTENTRY /* the last unused */
2266
2292
  } CURLoption;
2267
2293
 
@@ -32,12 +32,12 @@
32
32
 
33
33
  /* This is the version number of the libcurl package from which this header
34
34
  file origins: */
35
- #define LIBCURL_VERSION "8.21.0"
35
+ #define LIBCURL_VERSION "8.22.0"
36
36
 
37
37
  /* The numeric version number is also available "in parts" by using these
38
38
  defines: */
39
39
  #define LIBCURL_VERSION_MAJOR 8
40
- #define LIBCURL_VERSION_MINOR 21
40
+ #define LIBCURL_VERSION_MINOR 22
41
41
  #define LIBCURL_VERSION_PATCH 0
42
42
  /* This is the numeric version of the libcurl version number, meant for easier
43
43
  parsing and comparisons by programs. The LIBCURL_VERSION_NUM define always
@@ -56,9 +56,8 @@
56
56
 
57
57
  Note: This define is the full hex number and _does not_ use the
58
58
  CURL_VERSION_BITS() macro since curl's own configure script greps for it
59
- and needs it to contain the full number.
60
- */
61
- #define LIBCURL_VERSION_NUM 0x081500
59
+ and needs it to contain the full number. */
60
+ #define LIBCURL_VERSION_NUM 0x081600
62
61
 
63
62
  /*
64
63
  * This is the date and time when the full source package was created. The
@@ -69,7 +68,7 @@
69
68
  *
70
69
  * "2007-11-23"
71
70
  */
72
- #define LIBCURL_TIMESTAMP "2026-06-24"
71
+ #define LIBCURL_TIMESTAMP "2026-09-02"
73
72
 
74
73
  #define CURL_VERSION_BITS(x, y, z) ((x) << 16 | (y) << 8 | (z))
75
74
  #define CURL_AT_LEAST_VERSION(x, y, z) \
@@ -24,20 +24,20 @@
24
24
  *
25
25
  ***************************************************************************/
26
26
  /*
27
- This is an "external" header file. Do not give away any internals here!
28
-
29
- GOALS
30
-
31
- o Enable a "pull" interface. The application that uses libcurl decides where
32
- and when to ask libcurl to get/send data.
33
-
34
- o Enable multiple simultaneous transfers in the same thread without making it
35
- complicated for the application.
36
-
37
- o Enable the application to select() on its own file descriptors and curl's
38
- file descriptors simultaneous easily.
39
-
40
- */
27
+ * This is an "external" header file. Do not give away any internals here!
28
+ *
29
+ * GOALS
30
+ *
31
+ * o Enable a "pull" interface. The application that uses libcurl decides where
32
+ * and when to ask libcurl to get/send data.
33
+ *
34
+ * o Enable multiple simultaneous transfers in the same thread without making
35
+ * it complicated for the application.
36
+ *
37
+ * o Enable the application to select() on its own file descriptors and curl's
38
+ * file descriptors simultaneous easily.
39
+ *
40
+ */
41
41
 
42
42
  /*
43
43
  * This header file should not really need to include "curl.h" since curl.h
@@ -496,6 +496,9 @@ CURLWARNING(Wcurl_easy_getinfo_err_curl_off_t,
496
496
  (option) == CURLOPT_USERAGENT || \
497
497
  (option) == CURLOPT_USERNAME || \
498
498
  (option) == CURLOPT_AWS_SIGV4 || \
499
+ (option) == CURLOPT_HTTPSIG_HEADERS || \
500
+ (option) == CURLOPT_HTTPSIG_KEY || \
501
+ (option) == CURLOPT_HTTPSIG_KEYID || \
499
502
  (option) == CURLOPT_USERPWD || \
500
503
  (option) == CURLOPT_XOAUTH2_BEARER || \
501
504
  0)
@@ -605,9 +608,10 @@ CURLWARNING(Wcurl_easy_getinfo_err_curl_off_t,
605
608
  * == or whatsoever.
606
609
  */
607
610
 
608
- /* XXX: should evaluate to true if expr is a pointer */
611
+ /* XXX: should evaluate to true if expr is a pointer or a char[] array */
609
612
  #define curlcheck_any_ptr(expr) \
610
- (sizeof(expr) == sizeof(void *))
613
+ (sizeof(expr) == sizeof(void *) || \
614
+ __builtin_types_compatible_p(__typeof__(expr), char[]))
611
615
 
612
616
  /* evaluates to true if expr is NULL */
613
617
  /* XXX: must not evaluate expr, so this check is not accurate */
@@ -674,7 +678,7 @@ CURLWARNING(Wcurl_easy_getinfo_err_curl_off_t,
674
678
  (__builtin_types_compatible_p(__typeof__(expr), curl_off_t))
675
679
 
676
680
  /* evaluates to true if expr is abuffer suitable for CURLOPT_ERRORBUFFER */
677
- /* XXX: also check size of an char[] array? */
681
+ /* XXX: also check size of a char[] array? */
678
682
  #define curlcheck_error_buffer(expr) \
679
683
  (curlcheck_NULL(expr) || \
680
684
  __builtin_types_compatible_p(__typeof__(expr), char *) || \
@@ -64,6 +64,7 @@ typedef enum {
64
64
  CURLUE_BAD_USER, /* 29 */
65
65
  CURLUE_LACKS_IDN, /* 30 */
66
66
  CURLUE_TOO_LARGE, /* 31 */
67
+ CURLUE_BACKSLASH, /* 32 */
67
68
  CURLUE_LAST
68
69
  } CURLUcode;
69
70
 
@@ -54,7 +54,7 @@ option(CURL_USE_PKGCONFIG "Enable pkg-config to detect CURL dependencies. Defaul
54
54
 
55
55
  if(CMAKE_VERSION VERSION_LESS 3.18)
56
56
  message(STATUS "CURL: CURL-specific Find modules require "
57
- "CMake 3.18 or upper, found: ${CMAKE_VERSION}.")
57
+ "CMake 3.18 or greater, found: ${CMAKE_VERSION}.")
58
58
  endif()
59
59
 
60
60
  include(CMakeFindDependencyMacro)
@@ -98,7 +98,7 @@ if("")
98
98
  list(APPEND _curl_libs CURL::cares)
99
99
  endif()
100
100
  if("")
101
- find_dependency(GSS MODULE)
101
+ find_dependency(GSS MODULE COMPONENTS "")
102
102
  list(APPEND _curl_libs CURL::gss)
103
103
  endif()
104
104
  if("")
@@ -188,13 +188,13 @@ if(NOT TARGET CURL::libcurl)
188
188
  endif()
189
189
 
190
190
  # For compatibility with CMake's FindCURL.cmake
191
- set(CURL_VERSION_STRING "8.21.0")
191
+ set(CURL_VERSION_STRING "8.22.0")
192
192
  set(CURL_LIBRARIES CURL::libcurl)
193
193
  set(CURL_LIBRARIES_PRIVATE "/Users/runner/work/crossbind/crossbind/ports/openssl/ios/ssl.xcframework/ios-arm64-simulator/libssl.a;/Users/runner/work/crossbind/crossbind/ports/openssl/ios/crypto.xcframework/ios-arm64-simulator/libcrypto.a;/Users/runner/work/crossbind/crossbind/ports/openssl/ios/crypto.xcframework/ios-arm64-simulator/libcrypto.a;/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libz.tbd")
194
194
  set_and_check(CURL_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include")
195
195
 
196
196
  set(CURL_SUPPORTED_PROTOCOLS "DICT;FILE;FTP;FTPS;GOPHER;GOPHERS;HTTP;HTTPS;IMAP;IMAPS;IPFS;IPNS;MQTT;MQTTS;POP3;POP3S;RTSP;SMTP;SMTPS;TELNET;TFTP;WS;WSS")
197
- set(CURL_SUPPORTED_FEATURES "alt-svc;AsynchDNS;HSTS;HTTPS-proxy;Largefile;libz;SSL;threadsafe;TLS-SRP;UnixSockets")
197
+ set(CURL_SUPPORTED_FEATURES "alt-svc;AsynchDNS;HSTS;HTTPS-proxy;Largefile;libz;SSL;threadsafe;UnixSockets")
198
198
 
199
199
  foreach(_curl_item IN LISTS CURL_SUPPORTED_PROTOCOLS CURL_SUPPORTED_FEATURES)
200
200
  set(CURL_SUPPORTS_${_curl_item} TRUE)
@@ -15,19 +15,19 @@
15
15
  # The variable CVF_VERSION must be set before calling configure_file().
16
16
 
17
17
 
18
- set(PACKAGE_VERSION "8.21.0")
18
+ set(PACKAGE_VERSION "8.22.0")
19
19
 
20
20
  if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
21
21
  set(PACKAGE_VERSION_COMPATIBLE FALSE)
22
22
  else()
23
23
 
24
- if("8.21.0" MATCHES "^([0-9]+)\\.")
24
+ if("8.22.0" MATCHES "^([0-9]+)\\.")
25
25
  set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
26
26
  if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
27
27
  string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
28
28
  endif()
29
29
  else()
30
- set(CVF_VERSION_MAJOR "8.21.0")
30
+ set(CVF_VERSION_MAJOR "8.22.0")
31
31
  endif()
32
32
 
33
33
  if(PACKAGE_FIND_VERSION_RANGE)
@@ -23,6 +23,10 @@
23
23
  ###########################################################################
24
24
  # Find the GSS Kerberos library
25
25
  #
26
+ # This module accepts optional COMPONENTS to control the GSS library flavor:
27
+ #
28
+ # - Apple
29
+ #
26
30
  # Input variables:
27
31
  #
28
32
  # - `GSS_ROOT_DIR`: Absolute path to the root installation of GSS. (also supported as environment)
@@ -32,7 +36,7 @@
32
36
  # - `GSS_FOUND`: System has GSS.
33
37
  # - `GSS_VERSION`: Version of GSS.
34
38
  # - `CURL::gss`: GSS library target.
35
- # - `INTERFACE_CURL_GSS_FLAVOR`: Custom property. "GNU" or "MIT" if detected.
39
+ # - `INTERFACE_CURL_GSS_FLAVOR`: Custom property. "Apple", "GNU" or "MIT" if detected.
36
40
 
37
41
  set(_gnu_modname "gss")
38
42
  set(_mit_modname "mit-krb5-gssapi")
@@ -46,8 +50,12 @@ set(_gss_root_hints "${GSS_ROOT_DIR}" "$ENV{GSS_ROOT_DIR}")
46
50
  set(_gss_CFLAGS "")
47
51
  set(_gss_LIBRARY_DIRS "")
48
52
 
53
+ if(NOT APPLE AND GSS_FIND_COMPONENTS STREQUAL "Apple")
54
+ set(GSS_FIND_COMPONENTS "")
55
+ endif()
56
+
49
57
  # Try to find library using system pkg-config if user did not specify root dir
50
- if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}")
58
+ if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}" AND NOT GSS_FIND_COMPONENTS STREQUAL "Apple")
51
59
  if(CURL_USE_PKGCONFIG)
52
60
  find_package(PkgConfig QUIET)
53
61
  pkg_search_module(_gss ${_mit_modname} ${_gnu_modname})
@@ -60,136 +68,146 @@ if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}")
60
68
  endif()
61
69
 
62
70
  if(NOT _gss_FOUND) # Not found by pkg-config. Let us take more traditional approach.
63
- find_file(_gss_configure_script NAMES "krb5-config" PATH_SUFFIXES "bin" HINTS ${_gss_root_hints}
64
- NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH)
65
- # If not found in user-supplied directories, maybe system knows better
66
- find_file(_gss_configure_script NAMES "krb5-config" PATH_SUFFIXES "bin")
67
-
68
- if(_gss_configure_script)
69
-
70
- set(_gss_INCLUDE_DIRS "")
71
- set(_gss_LIBRARIES "")
72
-
73
- execute_process(COMMAND ${_gss_configure_script} "--cflags" "gssapi"
74
- OUTPUT_VARIABLE _gss_cflags_raw
75
- RESULT_VARIABLE _gss_configure_failed
76
- OUTPUT_STRIP_TRAILING_WHITESPACE)
77
- message(STATUS "FindGSS krb5-config --cflags: ${_gss_cflags_raw}")
78
-
79
- if(NOT _gss_configure_failed) # 0 means success
80
- # Should also work in an odd case when multiple directories are given.
81
- string(STRIP "${_gss_cflags_raw}" _gss_cflags_raw)
82
- string(REGEX REPLACE " +-(I)" ";-\\1" _gss_cflags_raw "${_gss_cflags_raw}")
83
- string(REGEX REPLACE " +-([^I][^ \\t;]*)" ";-\\1" _gss_cflags_raw "${_gss_cflags_raw}")
84
-
85
- foreach(_flag IN LISTS _gss_cflags_raw)
86
- if(_flag MATCHES "^-I")
87
- string(REGEX REPLACE "^-I" "" _flag "${_flag}")
88
- list(APPEND _gss_INCLUDE_DIRS "${_flag}")
89
- else()
90
- list(APPEND _gss_CFLAGS "${_flag}")
91
- endif()
92
- endforeach()
93
- endif()
71
+ if(GSS_FIND_COMPONENTS STREQUAL "Apple")
72
+ find_path(_gss_INCLUDE_DIRS NAMES "GSS/gssapi.h" PATH_SUFFIXES "include")
73
+ find_library(_gss_LIBRARIES NAMES "GSS")
94
74
 
95
- execute_process(COMMAND ${_gss_configure_script} "--libs" "gssapi"
96
- OUTPUT_VARIABLE _gss_lib_flags
97
- RESULT_VARIABLE _gss_configure_failed
98
- OUTPUT_STRIP_TRAILING_WHITESPACE)
99
- message(STATUS "FindGSS krb5-config --libs: ${_gss_lib_flags}")
100
-
101
- if(NOT _gss_configure_failed) # 0 means success
102
- # This script gives us libraries and link directories.
103
- string(STRIP "${_gss_lib_flags}" _gss_lib_flags)
104
- string(REGEX REPLACE " +-(L|l)" ";-\\1" _gss_lib_flags "${_gss_lib_flags}")
105
- string(REGEX REPLACE " +-([^Ll][^ \\t;]*)" ";-\\1" _gss_lib_flags "${_gss_lib_flags}")
106
-
107
- foreach(_flag IN LISTS _gss_lib_flags)
108
- if(_flag MATCHES "^-l")
109
- string(REGEX REPLACE "^-l" "" _flag "${_flag}")
110
- list(APPEND _gss_LIBRARIES "${_flag}")
111
- elseif(_flag MATCHES "^-L")
112
- string(REGEX REPLACE "^-L" "" _flag "${_flag}")
113
- list(APPEND _gss_LIBRARY_DIRS "${_flag}")
114
- endif()
115
- endforeach()
75
+ if(_gss_INCLUDE_DIRS AND _gss_LIBRARIES)
76
+ message(STATUS "Found AppleGSS: ${_gss_INCLUDE_DIRS}")
77
+ set(_gss_flavor "Apple")
116
78
  endif()
79
+ else()
80
+ find_file(_gss_configure_script NAMES "krb5-config" PATH_SUFFIXES "bin" HINTS ${_gss_root_hints}
81
+ NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH)
82
+ # If not found in user-supplied directories, maybe system knows better
83
+ find_file(_gss_configure_script NAMES "krb5-config" PATH_SUFFIXES "bin")
117
84
 
118
- execute_process(COMMAND ${_gss_configure_script} "--version"
119
- OUTPUT_VARIABLE _gss_version
120
- RESULT_VARIABLE _gss_configure_failed
121
- OUTPUT_STRIP_TRAILING_WHITESPACE)
122
-
123
- # Older versions may not have the "--version" parameter. In this case we do not care.
124
- if(_gss_configure_failed)
125
- set(_gss_version 0)
126
- else()
127
- # Strip prefix string to leave the version number only
128
- string(REPLACE "Kerberos 5 release " "" _gss_version "${_gss_version}")
129
- endif()
85
+ if(_gss_configure_script)
130
86
 
131
- execute_process(COMMAND ${_gss_configure_script} "--vendor"
132
- OUTPUT_VARIABLE _gss_vendor
133
- RESULT_VARIABLE _gss_configure_failed
134
- OUTPUT_STRIP_TRAILING_WHITESPACE)
87
+ set(_gss_INCLUDE_DIRS "")
88
+ set(_gss_LIBRARIES "")
135
89
 
136
- # Older versions may not have the "--vendor" parameter. In this case we do not care.
137
- if(NOT _gss_configure_failed AND NOT _gss_vendor MATCHES "Heimdal|heimdal")
138
- set(_gss_flavor "MIT") # assume a default, should not really matter
139
- endif()
90
+ execute_process(COMMAND ${_gss_configure_script} "--cflags" "gssapi"
91
+ OUTPUT_VARIABLE _gss_cflags_raw
92
+ RESULT_VARIABLE _gss_configure_failed
93
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
94
+ message(STATUS "FindGSS krb5-config --cflags: ${_gss_cflags_raw}")
140
95
 
141
- else() # Either there is no config script or we are on a platform that does not provide one (Windows?)
96
+ if(NOT _gss_configure_failed) # 0 means success
97
+ # Should also work in an odd case when multiple directories are given.
98
+ string(STRIP "${_gss_cflags_raw}" _gss_cflags_raw)
99
+ string(REGEX REPLACE " +-(I)" ";-\\1" _gss_cflags_raw "${_gss_cflags_raw}")
100
+ string(REGEX REPLACE " +-([^I][^ \\t;]*)" ";-\\1" _gss_cflags_raw "${_gss_cflags_raw}")
142
101
 
143
- find_path(_gss_INCLUDE_DIRS NAMES "gssapi/gssapi.h" HINTS ${_gss_root_hints} PATH_SUFFIXES "include" "inc")
102
+ foreach(_flag IN LISTS _gss_cflags_raw)
103
+ if(_flag MATCHES "^-I")
104
+ string(REGEX REPLACE "^-I" "" _flag "${_flag}")
105
+ list(APPEND _gss_INCLUDE_DIRS "${_flag}")
106
+ else()
107
+ list(APPEND _gss_CFLAGS "${_flag}")
108
+ endif()
109
+ endforeach()
110
+ endif()
144
111
 
145
- if(_gss_INCLUDE_DIRS) # We have found something
146
- set(_gss_libdir_suffixes "")
112
+ execute_process(COMMAND ${_gss_configure_script} "--libs" "gssapi"
113
+ OUTPUT_VARIABLE _gss_lib_flags
114
+ RESULT_VARIABLE _gss_configure_failed
115
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
116
+ message(STATUS "FindGSS krb5-config --libs: ${_gss_lib_flags}")
147
117
 
148
- cmake_push_check_state()
149
- list(APPEND CMAKE_REQUIRED_INCLUDES "${_gss_INCLUDE_DIRS}")
150
- check_include_files("gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _gss_have_mit_headers)
151
- cmake_pop_check_state()
118
+ if(NOT _gss_configure_failed) # 0 means success
119
+ # This script gives us libraries and link directories.
120
+ string(STRIP "${_gss_lib_flags}" _gss_lib_flags)
121
+ string(REGEX REPLACE " +-(L|l)" ";-\\1" _gss_lib_flags "${_gss_lib_flags}")
122
+ string(REGEX REPLACE " +-([^Ll][^ \\t;]*)" ";-\\1" _gss_lib_flags "${_gss_lib_flags}")
152
123
 
153
- if(_gss_have_mit_headers)
154
- set(_gss_flavor "MIT")
155
- if(WIN32)
156
- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
157
- list(APPEND _gss_libdir_suffixes "lib/AMD64")
158
- set(_gss_libname "gssapi64")
159
- else()
160
- list(APPEND _gss_libdir_suffixes "lib/i386")
161
- set(_gss_libname "gssapi32")
124
+ foreach(_flag IN LISTS _gss_lib_flags)
125
+ if(_flag MATCHES "^-l")
126
+ string(REGEX REPLACE "^-l" "" _flag "${_flag}")
127
+ list(APPEND _gss_LIBRARIES "${_flag}")
128
+ elseif(_flag MATCHES "^-L")
129
+ string(REGEX REPLACE "^-L" "" _flag "${_flag}")
130
+ list(APPEND _gss_LIBRARY_DIRS "${_flag}")
162
131
  endif()
163
- else()
164
- list(APPEND _gss_libdir_suffixes "lib" "lib64") # those suffixes are not checked for HINTS
165
- set(_gss_libname "gssapi_krb5")
166
- endif()
132
+ endforeach()
167
133
  endif()
168
- else()
169
- find_path(_gss_INCLUDE_DIRS NAMES "gss.h" HINTS ${_gss_root_hints} PATH_SUFFIXES "include")
170
134
 
171
- if(_gss_INCLUDE_DIRS)
172
- set(_gss_flavor "GNU")
173
- set(_gss_pc_requires ${_gnu_modname})
174
- set(_gss_libname "gss")
135
+ execute_process(COMMAND ${_gss_configure_script} "--version"
136
+ OUTPUT_VARIABLE _gss_version
137
+ RESULT_VARIABLE _gss_configure_failed
138
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
139
+
140
+ # Older versions may not have the "--version" parameter. In this case we do not care.
141
+ if(_gss_configure_failed)
142
+ set(_gss_version 0)
143
+ else()
144
+ # Strip prefix string to leave the version number only
145
+ string(REPLACE "Kerberos 5 release " "" _gss_version "${_gss_version}")
175
146
  endif()
176
- endif()
177
147
 
178
- # If we have headers, look up libraries
179
- if(_gss_flavor)
180
- set(_gss_libdir_hints ${_gss_root_hints})
181
- if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.20)
182
- cmake_path(GET _gss_INCLUDE_DIRS PARENT_PATH _gss_calculated_potential_root)
148
+ execute_process(COMMAND ${_gss_configure_script} "--vendor"
149
+ OUTPUT_VARIABLE _gss_vendor
150
+ RESULT_VARIABLE _gss_configure_failed
151
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
152
+
153
+ # Older versions may not have the "--vendor" parameter. In this case we do not care.
154
+ if(NOT _gss_configure_failed AND NOT _gss_vendor MATCHES "Heimdal|heimdal")
155
+ set(_gss_flavor "MIT") # assume a default, should not really matter
156
+ endif()
157
+
158
+ else() # Either there is no config script or we are on a platform that does not provide one (Windows?)
159
+
160
+ find_path(_gss_INCLUDE_DIRS NAMES "gssapi/gssapi.h" HINTS ${_gss_root_hints} PATH_SUFFIXES "include" "inc")
161
+
162
+ if(_gss_INCLUDE_DIRS) # We have found something
163
+ set(_gss_libdir_suffixes "")
164
+
165
+ cmake_push_check_state()
166
+ list(APPEND CMAKE_REQUIRED_INCLUDES "${_gss_INCLUDE_DIRS}")
167
+ check_include_files("gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _gss_have_mit_headers)
168
+ cmake_pop_check_state()
169
+
170
+ if(_gss_have_mit_headers)
171
+ set(_gss_flavor "MIT")
172
+ if(WIN32)
173
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
174
+ list(APPEND _gss_libdir_suffixes "lib/AMD64")
175
+ set(_gss_libname "gssapi64")
176
+ else()
177
+ list(APPEND _gss_libdir_suffixes "lib/i386")
178
+ set(_gss_libname "gssapi32")
179
+ endif()
180
+ else()
181
+ list(APPEND _gss_libdir_suffixes "lib" "lib64") # those suffixes are not checked for HINTS
182
+ set(_gss_libname "gssapi_krb5")
183
+ endif()
184
+ endif()
183
185
  else()
184
- get_filename_component(_gss_calculated_potential_root "${_gss_INCLUDE_DIRS}" DIRECTORY)
186
+ find_path(_gss_INCLUDE_DIRS NAMES "gss.h" HINTS ${_gss_root_hints} PATH_SUFFIXES "include")
187
+
188
+ if(_gss_INCLUDE_DIRS)
189
+ set(_gss_flavor "GNU")
190
+ set(_gss_pc_requires ${_gnu_modname})
191
+ set(_gss_libname "gss")
192
+ endif()
185
193
  endif()
186
- list(APPEND _gss_libdir_hints ${_gss_calculated_potential_root})
187
194
 
188
- find_library(_gss_LIBRARIES NAMES ${_gss_libname} HINTS ${_gss_libdir_hints} PATH_SUFFIXES ${_gss_libdir_suffixes})
195
+ # If we have headers, look up libraries
196
+ if(_gss_flavor)
197
+ set(_gss_libdir_hints ${_gss_root_hints})
198
+ if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.20)
199
+ cmake_path(GET _gss_INCLUDE_DIRS PARENT_PATH _gss_calculated_potential_root)
200
+ else()
201
+ get_filename_component(_gss_calculated_potential_root "${_gss_INCLUDE_DIRS}" DIRECTORY)
202
+ endif()
203
+ list(APPEND _gss_libdir_hints ${_gss_calculated_potential_root})
204
+
205
+ find_library(_gss_LIBRARIES NAMES ${_gss_libname} HINTS ${_gss_libdir_hints} PATH_SUFFIXES ${_gss_libdir_suffixes})
206
+ endif()
189
207
  endif()
190
208
  endif()
191
209
  if(NOT _gss_flavor)
192
- message(FATAL_ERROR "GNU or MIT GSS is required")
210
+ message(FATAL_ERROR "MIT, GNU or Apple GSS is required")
193
211
  endif()
194
212
  else()
195
213
  if(_gss_MODULE_NAME STREQUAL _gnu_modname)
@@ -199,7 +217,7 @@ else()
199
217
  set(_gss_flavor "MIT")
200
218
  set(_gss_pc_requires ${_mit_modname})
201
219
  else()
202
- message(FATAL_ERROR "GNU or MIT GSS is required")
220
+ message(FATAL_ERROR "MIT, GNU or Apple GSS is required")
203
221
  endif()
204
222
  message(STATUS "Found GSS/${_gss_flavor} (via pkg-config): ${_gss_INCLUDE_DIRS} (found version \"${_gss_version}\")")
205
223
  endif()
@@ -46,6 +46,7 @@ endif()
46
46
  if(_libgsasl_FOUND)
47
47
  set(Libgsasl_FOUND TRUE)
48
48
  set(LIBGSASL_FOUND TRUE)
49
+ set(LIBGSASL_VERSION ${_libgsasl_VERSION})
49
50
  message(STATUS "Found Libgsasl (via pkg-config): ${_libgsasl_INCLUDE_DIRS} (found version \"${LIBGSASL_VERSION}\")")
50
51
  else()
51
52
  find_path(LIBGSASL_INCLUDE_DIR NAMES "gsasl.h")