Mercurial > hg > orthanc
comparison OrthancFramework/Resources/CMake/LibCurlConfiguration.cmake @ 4044:d25f4c0fa160 framework
splitting code into OrthancFramework and OrthancServer
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 10 Jun 2020 20:30:34 +0200 |
parents | Resources/CMake/LibCurlConfiguration.cmake@a3e38994d95a |
children | 05b8fd21089c |
comparison
equal
deleted
inserted
replaced
4043:6c6239aec462 | 4044:d25f4c0fa160 |
---|---|
1 if (STATIC_BUILD OR NOT USE_SYSTEM_CURL) | |
2 SET(CURL_SOURCES_DIR ${CMAKE_BINARY_DIR}/curl-7.64.0) | |
3 SET(CURL_URL "http://orthanc.osimis.io/ThirdPartyDownloads/curl-7.64.0.tar.gz") | |
4 SET(CURL_MD5 "a026740d599a32bcbbe6e70679397899") | |
5 | |
6 if (IS_DIRECTORY "${CURL_SOURCES_DIR}") | |
7 set(FirstRun OFF) | |
8 else() | |
9 set(FirstRun ON) | |
10 endif() | |
11 | |
12 DownloadPackage(${CURL_MD5} ${CURL_URL} "${CURL_SOURCES_DIR}") | |
13 | |
14 if (FirstRun) | |
15 execute_process( | |
16 COMMAND ${PATCH_EXECUTABLE} -p0 -N -i | |
17 ${ORTHANC_ROOT}/Resources/Patches/curl-7.64.0-cmake.patch | |
18 WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | |
19 RESULT_VARIABLE Failure | |
20 ) | |
21 | |
22 if (Failure) | |
23 message(FATAL_ERROR "Error while patching a file") | |
24 endif() | |
25 endif() | |
26 | |
27 include_directories( | |
28 ${CURL_SOURCES_DIR}/include | |
29 ) | |
30 | |
31 AUX_SOURCE_DIRECTORY(${CURL_SOURCES_DIR}/lib CURL_SOURCES) | |
32 AUX_SOURCE_DIRECTORY(${CURL_SOURCES_DIR}/lib/vauth CURL_SOURCES) | |
33 AUX_SOURCE_DIRECTORY(${CURL_SOURCES_DIR}/lib/vtls CURL_SOURCES) | |
34 source_group(ThirdParty\\LibCurl REGULAR_EXPRESSION ${CURL_SOURCES_DIR}/.*) | |
35 | |
36 add_definitions( | |
37 -DBUILDING_LIBCURL=1 | |
38 -DCURL_STATICLIB=1 | |
39 -DCURL_DISABLE_LDAPS=1 | |
40 -DCURL_DISABLE_LDAP=1 | |
41 -DCURL_DISABLE_DICT=1 | |
42 -DCURL_DISABLE_FILE=1 | |
43 -DCURL_DISABLE_FTP=1 | |
44 -DCURL_DISABLE_GOPHER=1 | |
45 -DCURL_DISABLE_LDAP=1 | |
46 -DCURL_DISABLE_LDAPS=1 | |
47 -DCURL_DISABLE_POP3=1 | |
48 #-DCURL_DISABLE_PROXY=1 | |
49 -DCURL_DISABLE_RTSP=1 | |
50 -DCURL_DISABLE_TELNET=1 | |
51 -DCURL_DISABLE_TFTP=1 | |
52 ) | |
53 | |
54 if (ENABLE_SSL) | |
55 add_definitions( | |
56 #-DHAVE_LIBSSL=1 | |
57 -DUSE_OPENSSL=1 | |
58 -DHAVE_OPENSSL_ENGINE_H=1 | |
59 -DUSE_SSLEAY=1 | |
60 ) | |
61 endif() | |
62 | |
63 if (NOT EXISTS "${CURL_SOURCES_DIR}/lib/vauth/vauth/vauth.h") | |
64 #file(WRITE ${CURL_SOURCES_DIR}/lib/curl_config.h "") | |
65 | |
66 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/vauth/vauth.h "#include \"../vauth.h\"\n") | |
67 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/vauth/digest.h "#include \"../digest.h\"\n") | |
68 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/vauth/ntlm.h "#include \"../ntlm.h\"\n") | |
69 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/vtls/vtls.h "#include \"../../vtls/vtls.h\"\n") | |
70 | |
71 file(GLOB CURL_LIBS_HEADERS ${CURL_SOURCES_DIR}/lib/*.h) | |
72 foreach (header IN LISTS CURL_LIBS_HEADERS) | |
73 get_filename_component(filename ${header} NAME) | |
74 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/${filename} "#include \"../${filename}\"\n") | |
75 file(WRITE ${CURL_SOURCES_DIR}/lib/vtls/${filename} "#include \"../${filename}\"\n") | |
76 endforeach() | |
77 endif() | |
78 | |
79 if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR | |
80 ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" OR | |
81 ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR | |
82 ${CMAKE_SYSTEM_NAME} STREQUAL "kFreeBSD" OR | |
83 ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD") | |
84 if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") | |
85 SET(TMP_OS "x86_64") | |
86 else() | |
87 SET(TMP_OS "x86") | |
88 endif() | |
89 | |
90 set_property( | |
91 SOURCE ${CURL_SOURCES} | |
92 PROPERTY COMPILE_DEFINITIONS "HAVE_CONFIG_H=1;OS=\"${TMP_OS}\"" | |
93 ) | |
94 | |
95 include(${CURL_SOURCES_DIR}/CMake/Macros.cmake) | |
96 | |
97 # WARNING: Do *not* reorder the "check_include_file_concat()" below! | |
98 check_include_file_concat("stdio.h" HAVE_STDIO_H) | |
99 check_include_file_concat("inttypes.h" HAVE_INTTYPES_H) | |
100 check_include_file_concat("sys/filio.h" HAVE_SYS_FILIO_H) | |
101 check_include_file_concat("sys/ioctl.h" HAVE_SYS_IOCTL_H) | |
102 check_include_file_concat("sys/param.h" HAVE_SYS_PARAM_H) | |
103 check_include_file_concat("sys/poll.h" HAVE_SYS_POLL_H) | |
104 check_include_file_concat("sys/resource.h" HAVE_SYS_RESOURCE_H) | |
105 check_include_file_concat("sys/select.h" HAVE_SYS_SELECT_H) | |
106 check_include_file_concat("sys/socket.h" HAVE_SYS_SOCKET_H) | |
107 check_include_file_concat("sys/sockio.h" HAVE_SYS_SOCKIO_H) | |
108 check_include_file_concat("sys/stat.h" HAVE_SYS_STAT_H) | |
109 check_include_file_concat("sys/time.h" HAVE_SYS_TIME_H) | |
110 check_include_file_concat("sys/types.h" HAVE_SYS_TYPES_H) | |
111 check_include_file_concat("sys/uio.h" HAVE_SYS_UIO_H) | |
112 check_include_file_concat("sys/un.h" HAVE_SYS_UN_H) | |
113 check_include_file_concat("sys/utime.h" HAVE_SYS_UTIME_H) | |
114 check_include_file_concat("sys/xattr.h" HAVE_SYS_XATTR_H) | |
115 check_include_file_concat("alloca.h" HAVE_ALLOCA_H) | |
116 check_include_file_concat("arpa/inet.h" HAVE_ARPA_INET_H) | |
117 check_include_file_concat("arpa/tftp.h" HAVE_ARPA_TFTP_H) | |
118 check_include_file_concat("assert.h" HAVE_ASSERT_H) | |
119 check_include_file_concat("crypto.h" HAVE_CRYPTO_H) | |
120 check_include_file_concat("des.h" HAVE_DES_H) | |
121 check_include_file_concat("err.h" HAVE_ERR_H) | |
122 check_include_file_concat("errno.h" HAVE_ERRNO_H) | |
123 check_include_file_concat("fcntl.h" HAVE_FCNTL_H) | |
124 check_include_file_concat("idn2.h" HAVE_IDN2_H) | |
125 check_include_file_concat("ifaddrs.h" HAVE_IFADDRS_H) | |
126 check_include_file_concat("io.h" HAVE_IO_H) | |
127 check_include_file_concat("krb.h" HAVE_KRB_H) | |
128 check_include_file_concat("libgen.h" HAVE_LIBGEN_H) | |
129 check_include_file_concat("limits.h" HAVE_LIMITS_H) | |
130 check_include_file_concat("locale.h" HAVE_LOCALE_H) | |
131 check_include_file_concat("net/if.h" HAVE_NET_IF_H) | |
132 check_include_file_concat("netdb.h" HAVE_NETDB_H) | |
133 check_include_file_concat("netinet/in.h" HAVE_NETINET_IN_H) | |
134 check_include_file_concat("netinet/tcp.h" HAVE_NETINET_TCP_H) | |
135 | |
136 check_include_file_concat("pem.h" HAVE_PEM_H) | |
137 check_include_file_concat("poll.h" HAVE_POLL_H) | |
138 check_include_file_concat("pwd.h" HAVE_PWD_H) | |
139 check_include_file_concat("rsa.h" HAVE_RSA_H) | |
140 check_include_file_concat("setjmp.h" HAVE_SETJMP_H) | |
141 check_include_file_concat("sgtty.h" HAVE_SGTTY_H) | |
142 check_include_file_concat("signal.h" HAVE_SIGNAL_H) | |
143 check_include_file_concat("ssl.h" HAVE_SSL_H) | |
144 check_include_file_concat("stdbool.h" HAVE_STDBOOL_H) | |
145 check_include_file_concat("stdint.h" HAVE_STDINT_H) | |
146 check_include_file_concat("stdio.h" HAVE_STDIO_H) | |
147 check_include_file_concat("stdlib.h" HAVE_STDLIB_H) | |
148 check_include_file_concat("string.h" HAVE_STRING_H) | |
149 check_include_file_concat("strings.h" HAVE_STRINGS_H) | |
150 check_include_file_concat("stropts.h" HAVE_STROPTS_H) | |
151 check_include_file_concat("termio.h" HAVE_TERMIO_H) | |
152 check_include_file_concat("termios.h" HAVE_TERMIOS_H) | |
153 check_include_file_concat("time.h" HAVE_TIME_H) | |
154 check_include_file_concat("unistd.h" HAVE_UNISTD_H) | |
155 check_include_file_concat("utime.h" HAVE_UTIME_H) | |
156 check_include_file_concat("x509.h" HAVE_X509_H) | |
157 | |
158 check_include_file_concat("process.h" HAVE_PROCESS_H) | |
159 check_include_file_concat("stddef.h" HAVE_STDDEF_H) | |
160 check_include_file_concat("dlfcn.h" HAVE_DLFCN_H) | |
161 check_include_file_concat("malloc.h" HAVE_MALLOC_H) | |
162 check_include_file_concat("memory.h" HAVE_MEMORY_H) | |
163 check_include_file_concat("netinet/if_ether.h" HAVE_NETINET_IF_ETHER_H) | |
164 check_include_file_concat("stdint.h" HAVE_STDINT_H) | |
165 check_include_file_concat("sockio.h" HAVE_SOCKIO_H) | |
166 check_include_file_concat("sys/utsname.h" HAVE_SYS_UTSNAME_H) | |
167 | |
168 check_type_size("size_t" SIZEOF_SIZE_T) | |
169 check_type_size("ssize_t" SIZEOF_SSIZE_T) | |
170 check_type_size("long long" SIZEOF_LONG_LONG) | |
171 check_type_size("long" SIZEOF_LONG) | |
172 check_type_size("short" SIZEOF_SHORT) | |
173 check_type_size("int" SIZEOF_INT) | |
174 check_type_size("__int64" SIZEOF___INT64) | |
175 check_type_size("long double" SIZEOF_LONG_DOUBLE) | |
176 check_type_size("time_t" SIZEOF_TIME_T) | |
177 check_type_size("off_t" SIZEOF_OFF_T) | |
178 check_type_size("socklen_t" CURL_SIZEOF_CURL_SOCKLEN_T) | |
179 | |
180 check_symbol_exists(basename "${CURL_INCLUDES}" HAVE_BASENAME) | |
181 check_symbol_exists(socket "${CURL_INCLUDES}" HAVE_SOCKET) | |
182 # poll on macOS is unreliable, it first did not exist, then was broken until | |
183 # fixed in 10.9 only to break again in 10.12. | |
184 if(NOT APPLE) | |
185 check_symbol_exists(poll "${CURL_INCLUDES}" HAVE_POLL) | |
186 endif() | |
187 check_symbol_exists(select "${CURL_INCLUDES}" HAVE_SELECT) | |
188 check_symbol_exists(strdup "${CURL_INCLUDES}" HAVE_STRDUP) | |
189 check_symbol_exists(strstr "${CURL_INCLUDES}" HAVE_STRSTR) | |
190 check_symbol_exists(strtok_r "${CURL_INCLUDES}" HAVE_STRTOK_R) | |
191 check_symbol_exists(strftime "${CURL_INCLUDES}" HAVE_STRFTIME) | |
192 check_symbol_exists(uname "${CURL_INCLUDES}" HAVE_UNAME) | |
193 check_symbol_exists(strcasecmp "${CURL_INCLUDES}" HAVE_STRCASECMP) | |
194 check_symbol_exists(stricmp "${CURL_INCLUDES}" HAVE_STRICMP) | |
195 check_symbol_exists(strcmpi "${CURL_INCLUDES}" HAVE_STRCMPI) | |
196 check_symbol_exists(strncmpi "${CURL_INCLUDES}" HAVE_STRNCMPI) | |
197 check_symbol_exists(alarm "${CURL_INCLUDES}" HAVE_ALARM) | |
198 if(NOT HAVE_STRNCMPI) | |
199 set(HAVE_STRCMPI) | |
200 endif(NOT HAVE_STRNCMPI) | |
201 | |
202 check_symbol_exists(gethostbyaddr "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR) | |
203 check_symbol_exists(gethostbyaddr_r "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR_R) | |
204 check_symbol_exists(gettimeofday "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY) | |
205 check_symbol_exists(inet_addr "${CURL_INCLUDES}" HAVE_INET_ADDR) | |
206 check_symbol_exists(inet_ntoa "${CURL_INCLUDES}" HAVE_INET_NTOA) | |
207 check_symbol_exists(inet_ntoa_r "${CURL_INCLUDES}" HAVE_INET_NTOA_R) | |
208 check_symbol_exists(tcsetattr "${CURL_INCLUDES}" HAVE_TCSETATTR) | |
209 check_symbol_exists(tcgetattr "${CURL_INCLUDES}" HAVE_TCGETATTR) | |
210 check_symbol_exists(perror "${CURL_INCLUDES}" HAVE_PERROR) | |
211 check_symbol_exists(closesocket "${CURL_INCLUDES}" HAVE_CLOSESOCKET) | |
212 check_symbol_exists(setvbuf "${CURL_INCLUDES}" HAVE_SETVBUF) | |
213 check_symbol_exists(sigsetjmp "${CURL_INCLUDES}" HAVE_SIGSETJMP) | |
214 check_symbol_exists(getpass_r "${CURL_INCLUDES}" HAVE_GETPASS_R) | |
215 check_symbol_exists(strlcat "${CURL_INCLUDES}" HAVE_STRLCAT) | |
216 check_symbol_exists(getpwuid "${CURL_INCLUDES}" HAVE_GETPWUID) | |
217 check_symbol_exists(geteuid "${CURL_INCLUDES}" HAVE_GETEUID) | |
218 check_symbol_exists(utime "${CURL_INCLUDES}" HAVE_UTIME) | |
219 check_symbol_exists(gmtime_r "${CURL_INCLUDES}" HAVE_GMTIME_R) | |
220 check_symbol_exists(localtime_r "${CURL_INCLUDES}" HAVE_LOCALTIME_R) | |
221 | |
222 check_symbol_exists(gethostbyname "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME) | |
223 check_symbol_exists(gethostbyname_r "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME_R) | |
224 | |
225 check_symbol_exists(signal "${CURL_INCLUDES}" HAVE_SIGNAL_FUNC) | |
226 check_symbol_exists(SIGALRM "${CURL_INCLUDES}" HAVE_SIGNAL_MACRO) | |
227 if(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO) | |
228 set(HAVE_SIGNAL 1) | |
229 endif(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO) | |
230 check_symbol_exists(uname "${CURL_INCLUDES}" HAVE_UNAME) | |
231 check_symbol_exists(strtoll "${CURL_INCLUDES}" HAVE_STRTOLL) | |
232 check_symbol_exists(_strtoi64 "${CURL_INCLUDES}" HAVE__STRTOI64) | |
233 check_symbol_exists(strerror_r "${CURL_INCLUDES}" HAVE_STRERROR_R) | |
234 check_symbol_exists(siginterrupt "${CURL_INCLUDES}" HAVE_SIGINTERRUPT) | |
235 check_symbol_exists(perror "${CURL_INCLUDES}" HAVE_PERROR) | |
236 check_symbol_exists(fork "${CURL_INCLUDES}" HAVE_FORK) | |
237 check_symbol_exists(getaddrinfo "${CURL_INCLUDES}" HAVE_GETADDRINFO) | |
238 check_symbol_exists(freeaddrinfo "${CURL_INCLUDES}" HAVE_FREEADDRINFO) | |
239 check_symbol_exists(freeifaddrs "${CURL_INCLUDES}" HAVE_FREEIFADDRS) | |
240 check_symbol_exists(pipe "${CURL_INCLUDES}" HAVE_PIPE) | |
241 check_symbol_exists(ftruncate "${CURL_INCLUDES}" HAVE_FTRUNCATE) | |
242 check_symbol_exists(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME) | |
243 check_symbol_exists(getrlimit "${CURL_INCLUDES}" HAVE_GETRLIMIT) | |
244 check_symbol_exists(setlocale "${CURL_INCLUDES}" HAVE_SETLOCALE) | |
245 check_symbol_exists(setmode "${CURL_INCLUDES}" HAVE_SETMODE) | |
246 check_symbol_exists(setrlimit "${CURL_INCLUDES}" HAVE_SETRLIMIT) | |
247 check_symbol_exists(fcntl "${CURL_INCLUDES}" HAVE_FCNTL) | |
248 check_symbol_exists(ioctl "${CURL_INCLUDES}" HAVE_IOCTL) | |
249 check_symbol_exists(setsockopt "${CURL_INCLUDES}" HAVE_SETSOCKOPT) | |
250 | |
251 if(HAVE_SIZEOF_LONG_LONG) | |
252 set(HAVE_LONGLONG 1) | |
253 set(HAVE_LL 1) | |
254 endif(HAVE_SIZEOF_LONG_LONG) | |
255 | |
256 check_function_exists(mach_absolute_time HAVE_MACH_ABSOLUTE_TIME) | |
257 check_function_exists(gethostname HAVE_GETHOSTNAME) | |
258 | |
259 check_include_file_concat("pthread.h" HAVE_PTHREAD_H) | |
260 check_symbol_exists(recv "sys/socket.h" HAVE_RECV) | |
261 check_symbol_exists(send "sys/socket.h" HAVE_SEND) | |
262 | |
263 check_struct_has_member("struct sockaddr_un" sun_path "sys/un.h" USE_UNIX_SOCKETS) | |
264 | |
265 list(APPEND CMAKE_REQUIRED_INCLUDES "${CURL_SOURCES_DIR}/include") | |
266 set(CMAKE_EXTRA_INCLUDE_FILES "curl/system.h") | |
267 check_type_size("curl_off_t" SIZEOF_CURL_OFF_T) | |
268 | |
269 add_definitions(-DHAVE_GLIBC_STRERROR_R=1) | |
270 | |
271 include(${CURL_SOURCES_DIR}/CMake/OtherTests.cmake) | |
272 | |
273 foreach(CURL_TEST | |
274 HAVE_FCNTL_O_NONBLOCK | |
275 HAVE_IOCTLSOCKET | |
276 HAVE_IOCTLSOCKET_CAMEL | |
277 HAVE_IOCTLSOCKET_CAMEL_FIONBIO | |
278 HAVE_IOCTLSOCKET_FIONBIO | |
279 HAVE_IOCTL_FIONBIO | |
280 HAVE_IOCTL_SIOCGIFADDR | |
281 HAVE_SETSOCKOPT_SO_NONBLOCK | |
282 HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID | |
283 TIME_WITH_SYS_TIME | |
284 HAVE_O_NONBLOCK | |
285 HAVE_GETHOSTBYADDR_R_5 | |
286 HAVE_GETHOSTBYADDR_R_7 | |
287 HAVE_GETHOSTBYADDR_R_8 | |
288 HAVE_GETHOSTBYADDR_R_5_REENTRANT | |
289 HAVE_GETHOSTBYADDR_R_7_REENTRANT | |
290 HAVE_GETHOSTBYADDR_R_8_REENTRANT | |
291 HAVE_GETHOSTBYNAME_R_3 | |
292 HAVE_GETHOSTBYNAME_R_5 | |
293 HAVE_GETHOSTBYNAME_R_6 | |
294 HAVE_GETHOSTBYNAME_R_3_REENTRANT | |
295 HAVE_GETHOSTBYNAME_R_5_REENTRANT | |
296 HAVE_GETHOSTBYNAME_R_6_REENTRANT | |
297 HAVE_SOCKLEN_T | |
298 HAVE_IN_ADDR_T | |
299 HAVE_BOOL_T | |
300 STDC_HEADERS | |
301 RETSIGTYPE_TEST | |
302 HAVE_INET_NTOA_R_DECL | |
303 HAVE_INET_NTOA_R_DECL_REENTRANT | |
304 HAVE_GETADDRINFO | |
305 HAVE_FILE_OFFSET_BITS | |
306 ) | |
307 curl_internal_test(${CURL_TEST}) | |
308 endforeach(CURL_TEST) | |
309 | |
310 configure_file( | |
311 ${CURL_SOURCES_DIR}/lib/curl_config.h.cmake | |
312 ${CURL_SOURCES_DIR}/lib/curl_config.h | |
313 ) | |
314 endif() | |
315 | |
316 elseif (CMAKE_CROSSCOMPILING AND | |
317 "${CMAKE_SYSTEM_VERSION}" STREQUAL "CrossToolNg") | |
318 | |
319 CHECK_INCLUDE_FILE_CXX(curl/curl.h HAVE_CURL_H) | |
320 if (NOT HAVE_CURL_H) | |
321 message(FATAL_ERROR "Please install the libcurl-dev package") | |
322 endif() | |
323 | |
324 CHECK_LIBRARY_EXISTS(curl "curl_easy_init" "" HAVE_CURL_LIB) | |
325 if (NOT HAVE_CURL_LIB) | |
326 message(FATAL_ERROR "Please install the libcurl package") | |
327 endif() | |
328 | |
329 link_libraries(curl) | |
330 | |
331 else() | |
332 include(FindCURL) | |
333 include_directories(${CURL_INCLUDE_DIRS}) | |
334 link_libraries(${CURL_LIBRARIES}) | |
335 | |
336 if (NOT ${CURL_FOUND}) | |
337 message(FATAL_ERROR "Unable to find LibCurl") | |
338 endif() | |
339 endif() |