blob: cd2ed8b19d4cd80053378427b090c3be153c0ef8 (
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
|
include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO curl/curl
REF curl-7_61_0
SHA512 b6d2f57059e72139540cb93b945703857cb447920ed9b283993611453fed623432290adc5a3558181e3decc15c7cf54fff475010d922957807a37d1a1449be6c
HEAD_REF master
)
vcpkg_apply_patches(
SOURCE_PATH ${SOURCE_PATH}
PATCHES
${CMAKE_CURRENT_LIST_DIR}/0001_cmake.patch
${CMAKE_CURRENT_LIST_DIR}/0002_fix_uwp.patch
${CMAKE_CURRENT_LIST_DIR}/0003_fix_libraries.patch
${CMAKE_CURRENT_LIST_DIR}/0004_nghttp2_staticlib.patch
)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" CURL_STATICLIB)
# Support HTTP2 TSL Download https://curl.haxx.se/ca/cacert.pem rename to curl-ca-bundle.crt, copy it to libcurl.dll location.
set(HTTP2_OPTIONS)
if("http2" IN_LIST FEATURES)
set(HTTP2_OPTIONS -DUSE_NGHTTP2=ON)
endif()
# SSL
set(USE_OPENSSL OFF)
set(USE_WINSSL OFF)
if("ssl" IN_LIST FEATURES)
if(CURL_USE_WINSSL)
set(USE_WINSSL ON)
else()
set(USE_OPENSSL ON)
endif()
endif()
# SSH
set(USE_LIBSSH2 OFF)
if("ssh" IN_LIST FEATURES)
set(USE_LIBSSH2 ON)
endif()
# HTTP/HTTPS only
# Note that `HTTP_ONLY` curl option disables everything including HTTPS, which is not an option.
set(USE_HTTP_ONLY ON)
if("non-http" IN_LIST FEATURES)
set(USE_HTTP_ONLY OFF)
endif()
# curl exe
set(BUILD_CURL_EXE OFF)
if("tool" IN_LIST FEATURES)
set(BUILD_CURL_EXE ON)
endif()
# UWP targets
set(UWP_OPTIONS)
if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
set(UWP_OPTIONS
-DUSE_WIN32_LDAP=OFF
-DCURL_DISABLE_TELNET=ON
-DENABLE_IPV6=OFF
-DENABLE_UNIX_SOCKETS=OFF
)
endif()
vcpkg_find_acquire_program(PERL)
get_filename_component(PERL_PATH ${PERL} DIRECTORY)
set(ENV{PATH} "$ENV{PATH};${PERL_PATH}")
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
${UWP_OPTIONS}
${HTTP2_OPTIONS}
-DBUILD_TESTING=OFF
-DBUILD_CURL_EXE=${BUILD_CURL_EXE}
-DENABLE_MANUAL=OFF
-DCURL_STATICLIB=${CURL_STATICLIB}
-DCMAKE_USE_OPENSSL=${USE_OPENSSL}
-DCMAKE_USE_WINSSL=${USE_WINSSL}
-DCMAKE_USE_LIBSSH2=${USE_LIBSSH2}
-DHTTP_ONLY=${USE_HTTP_ONLY}
OPTIONS_RELEASE
-DBUILD_CURL_EXE=${BUILD_CURL_EXE}
OPTIONS_DEBUG
-DBUILD_CURL_EXE=OFF
-DENABLE_DEBUG=ON
)
vcpkg_install_cmake()
if(EXISTS ${CURRENT_PACKAGES_DIR}/lib/cmake/curl)
vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/curl)
elseif(EXISTS ${CURRENT_PACKAGES_DIR}/share/curl)
vcpkg_fixup_cmake_targets(CONFIG_PATH share/curl)
endif()
file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/curl RENAME copyright)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
if(EXISTS "${CURRENT_PACKAGES_DIR}/bin/curl.exe")
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/curl")
file(RENAME ${CURRENT_PACKAGES_DIR}/bin/curl.exe ${CURRENT_PACKAGES_DIR}/tools/curl/curl.exe)
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/curl)
endif()
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
# Drop debug suffix, as FindCURL.cmake does not look for it
if(EXISTS "${CURRENT_PACKAGES_DIR}/debug/lib/libcurl-d.lib")
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/libcurl-d.lib ${CURRENT_PACKAGES_DIR}/debug/lib/libcurl.lib)
endif()
else()
file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/curl-config ${CURRENT_PACKAGES_DIR}/debug/bin/curl-config)
if(EXISTS "${CURRENT_PACKAGES_DIR}/lib/libcurl_imp.lib")
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/libcurl_imp.lib ${CURRENT_PACKAGES_DIR}/lib/libcurl.lib)
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/libcurl-d_imp.lib ${CURRENT_PACKAGES_DIR}/debug/lib/libcurl.lib)
endif()
endif()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/pkgconfig ${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
file(READ ${CURRENT_PACKAGES_DIR}/include/curl/curl.h CURL_H)
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
string(REPLACE "#ifdef CURL_STATICLIB" "#if 1" CURL_H "${CURL_H}")
else()
string(REPLACE "#ifdef CURL_STATICLIB" "#if 0" CURL_H "${CURL_H}")
endif()
file(WRITE ${CURRENT_PACKAGES_DIR}/include/curl/curl.h "${CURL_H}")
vcpkg_copy_pdbs()
file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
|