forked from desura/Desurium
/
BuildCURL.cmake
132 lines (118 loc) · 3.86 KB
/
BuildCURL.cmake
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
# TODO: create args for manipulting curl build
# eg: WITH_IDN, IPV6, ...
if(WITH_ARES)
find_package(cares REQUIRED)
set(BUILD_WITH_ARES --enable-ares)
else()
set(BUILD_WITH_ARES --disable-ares)
endif()
if(DEBUG)
set(CURL_DEBUG yes)
else()
set(CURL_DEBUG no)
endif()
if(WIN32 AND NOT MINGW)
ExternalProject_Add(
curl
URL ${CURL_URL}
URL_MD5 ${CURL_MD5}
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
BUILD_IN_SOURCE 1
BUILD_COMMAND ""
INSTALL_COMMAND ""
)
ExternalProject_Add_Step(
curl
custom_build
DEPENDEES configure
DEPENDERS build
COMMAND ${NMAKE_EXECUTABLE} /f Makefile.vc MODE=dll DEBUG=${CURL_DEBUG} GEN_PDB=no ENABLE_SSPI=yes ENABLE_IPV6=no ENABLE_IDN=no ENABLE_WINSSL=yes MACHINE=x86 ENABLE_SPNEGO=no
WORKING_DIRECTORY <SOURCE_DIR>/winbuild
)
ExternalProject_Get_Property(
curl
source_dir
)
if(DEBUG)
set(CURL_INSTALL_DIR ${source_dir}/builds/libcurl-vc-x86-debug-dll-sspi-winssl)
else()
set(CURL_INSTALL_DIR ${source_dir}/builds/libcurl-vc-x86-release-dll-sspi-winssl)
endif()
ExternalProject_Add(
curl_s
URL ${CURL_URL}
URL_MD5 ${CURL_MD5}
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
BUILD_IN_SOURCE 1
BUILD_COMMAND ""
INSTALL_COMMAND ""
)
ExternalProject_Add_Step(
curl_s
custom_build
DEPENDEES configure
DEPENDERS build
COMMAND ${NMAKE_EXECUTABLE} /f Makefile.vc MODE=static RTLIBCFG=static DEBUG=${CURL_DEBUG} GEN_PDB=no ENABLE_SSPI=yes ENABLE_IPV6=no ENABLE_IDN=no ENABLE_WINSSL=yes MACHINE=x86 ENABLE_SPNEGO=no
WORKING_DIRECTORY <SOURCE_DIR>/winbuild
)
ExternalProject_Get_Property(
curl_s
source_dir
)
set_property(TARGET curl_s PROPERTY FOLDER "ThirdParty")
if(DEBUG)
set(CURL_INSTALL_DIR_S ${source_dir}/builds/libcurl-vc-x86-debug-static-sspi-winssl)
else()
set(CURL_INSTALL_DIR_S ${source_dir}/builds/libcurl-vc-x86-release-static-sspi-winssl)
endif()
else()
find_package(OpenSSL REQUIRED)
set(CURL_INSTALL_DIR ${CMAKE_EXTERNAL_BINARY_DIR}/curl)
ExternalProject_Add(
curl
URL ${CURL_URL}
URL_MD5 ${CURL_MD5}
UPDATE_COMMAND ""
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND ./configure
--without-librtmp --disable-ldap --disable-curldebug
--without-zlib --disable-rtsp --disable-manual --enable-static=yes
--enable-shared=no --disable-pop3 --disable-imap --disable-dict
--disable-gopher --disable-verbose --disable-smtp --disable-telnet
--disable-tftp --disable-file --without-libidn --without-gnutls
--without-nss --without-cyassl --with-ssl --without-axtls
--without-libssh2 --enable-hidden-symbols --enable-cookies --without-sspi
--disable-manual --enable-optimize=-O2 ${BUILD_WITH_ARES} ${CONFIGURE_DEBUG}
--prefix=${CURL_INSTALL_DIR}
)
endif()
set(CURL_BIN_DIRS ${CURL_INSTALL_DIR}/bin)
set(CURL_LIBRARY_DIR ${CURL_INSTALL_DIR}/lib)
set(CURL_INCLUDE_DIRS ${CURL_INSTALL_DIR}/include)
set(CURL_BIN_DIRS_S ${CURL_INSTALL_DIR_S}/bin)
set(CURL_LIBRARY_DIR_S ${CURL_INSTALL_DIR_S}/lib)
set(CURL_INCLUDE_DIRS_S ${CURL_INSTALL_DIR_S}/include)
if(WIN32 AND NOT MINGW)
if(DEBUG)
list(APPEND CURL_LIBRARIES "${CURL_LIBRARY_DIR}/libcurl_debug.lib")
list(APPEND CURL_LIBRARIES_S "${CURL_LIBRARY_DIR_S}/libcurl_a_debug.lib")
install_external_library(curl "${CURL_BIN_DIRS}/libcurl_debug.dll")
else()
list(APPEND CURL_LIBRARIES "${CURL_LIBRARY_DIR}/libcurl.lib")
list(APPEND CURL_LIBRARIES_S "${CURL_LIBRARY_DIR_S}/libcurl_a.lib")
install_external_library(curl "${CURL_BIN_DIRS}/libcurl.dll")
endif()
else()
list(APPEND CURL_LIBRARIES "${CURL_LIBRARY_DIR}/libcurl.a")
list(APPEND CURL_LIBRARIES "${OPENSSL_LIBRARIES}")
if(MINGW)
list(APPEND CURL_LIBRARIES "ws2_32")
else()
list(APPEND CURL_LIBRARIES "rt")
endif()
endif()
if(WITH_ARES)
list(APPEND CURL_LIBRARIES ${CARES_LIBRARIES})
endif()