CMakeLists.txt 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  1. CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
  2. IF(COMMAND CMAKE_POLICY)
  3. CMAKE_POLICY(SET CMP0003 NEW)
  4. ENDIF(COMMAND CMAKE_POLICY)
  5. PROJECT(LIBCURL C)
  6. INCLUDE_REGULAR_EXPRESSION("^.*$")
  7. # Setup package meta-data
  8. SET(PACKAGE "curl")
  9. SET(VERSION "7.16.1")
  10. SET(PACKAGE_TARNAME "curl")
  11. SET(PACKAGE_BUGREPORT " ")
  12. SET(PACKAGE_NAME "curl")
  13. SET(PACKAGE_VERSION "-")
  14. SET(PACKAGE_STRING "curl-")
  15. SET(PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/")
  16. SET(OPERATING_SYSTEM "${CMAKE_SYSTEM_NAME}")
  17. # We need ansi c-flags, especially on HP
  18. SET(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
  19. SET(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_CFLAGS})
  20. # Disable warnings on Borland to avoid changing 3rd party code.
  21. IF(BORLAND)
  22. SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
  23. ENDIF(BORLAND)
  24. # If we are on AIX, do the _ALL_SOURCE magic
  25. IF(${CMAKE_SYSTEM_NAME} MATCHES AIX)
  26. SET(_ALL_SOURCE 1)
  27. ENDIF(${CMAKE_SYSTEM_NAME} MATCHES AIX)
  28. # Include all the necessary files for macros
  29. SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
  30. INCLUDE (CheckFunctionExists)
  31. INCLUDE (CheckIncludeFile)
  32. INCLUDE (CheckIncludeFiles)
  33. INCLUDE (CheckLibraryExists)
  34. INCLUDE (CheckSymbolExists)
  35. # if crosscompiling is on, the CHECK_TYPE_SIZE macro coming with cmake uses
  36. # TRY_COMPILE instead of TRY_RUN which makes crosscompiling easier, Alex
  37. IF(CMAKE_CROSSCOMPILING)
  38. INCLUDE ("${CMAKE_ROOT}/Modules/CheckTypeSize.cmake")
  39. ELSE(CMAKE_CROSSCOMPILING)
  40. INCLUDE (CheckTypeSize)
  41. ENDIF(CMAKE_CROSSCOMPILING)
  42. SET(libCurl_SRCS
  43. # amigaos.c - does not build on AmigaOS
  44. base64.c
  45. connect.c
  46. content_encoding.c
  47. cookie.c
  48. dict.c
  49. easy.c
  50. escape.c
  51. file.c
  52. formdata.c
  53. ftp.c
  54. getenv.c
  55. getinfo.c
  56. gtls.c
  57. hash.c
  58. hostares.c
  59. hostasyn.c
  60. hostip4.c
  61. hostip6.c
  62. hostip.c
  63. hostsyn.c
  64. hostthre.c
  65. http.c
  66. http_chunks.c
  67. http_digest.c
  68. http_negotiate.c
  69. http_ntlm.c
  70. if2ip.c
  71. inet_ntop.c
  72. inet_pton.c
  73. krb4.c
  74. ldap.c
  75. llist.c
  76. md5.c
  77. # memdebug.c -not used
  78. mprintf.c
  79. multi.c
  80. netrc.c
  81. # nwlib.c - Not used
  82. parsedate.c
  83. progress.c
  84. security.c
  85. select.c
  86. sendf.c
  87. share.c
  88. socks.c
  89. speedcheck.c
  90. splay.c
  91. ssh.c
  92. sslgen.c
  93. ssluse.c
  94. strdup.c
  95. strequal.c
  96. strerror.c
  97. # strtok.c - specify later
  98. # strtoofft.c - specify later
  99. telnet.c
  100. tftp.c
  101. timeval.c
  102. transfer.c
  103. url.c
  104. version.c
  105. )
  106. SET(CURL_DISABLE_LDAP 1)
  107. IF(NOT CURL_DISABLE_LDAP)
  108. SET(libCurl_SRCS
  109. ${libCurl_SRCS}
  110. ldap.c
  111. )
  112. ENDIF(NOT CURL_DISABLE_LDAP)
  113. # if we have Kerberos 4, right now this is never on
  114. #OPTION(CURL_KRB4 "Use Kerberos 4" OFF)
  115. IF(CURL_KRB4)
  116. SET(libCurl_SRCS ${libCurl_SRCS}
  117. krb4.c
  118. security.c
  119. )
  120. ENDIF(CURL_KRB4)
  121. #OPTION(CURL_MALLOC_DEBUG "Debug mallocs in Curl" OFF)
  122. MARK_AS_ADVANCED(CURL_MALLOC_DEBUG)
  123. IF(CURL_MALLOC_DEBUG)
  124. SET(libCurl_SRCS ${libCurl_SRCS}
  125. memdebug.c
  126. )
  127. ENDIF(CURL_MALLOC_DEBUG)
  128. # On windows preload settings
  129. IF(WIN32)
  130. INCLUDE(${LIBCURL_SOURCE_DIR}/Platforms/WindowsCache.cmake)
  131. ENDIF(WIN32)
  132. # This macro checks if the symbol exists in the library and if it
  133. # does, it appends library to the list.
  134. SET(CURL_LIBS "")
  135. MACRO(CHECK_LIBRARY_EXISTS_CONCAT LIBRARY SYMBOL VARIABLE)
  136. CHECK_LIBRARY_EXISTS("${LIBRARY};${CURL_LIBS}" ${SYMBOL} ""
  137. ${VARIABLE})
  138. IF(${VARIABLE})
  139. SET(CURL_LIBS ${CURL_LIBS} ${LIBRARY})
  140. ENDIF(${VARIABLE})
  141. ENDMACRO(CHECK_LIBRARY_EXISTS_CONCAT)
  142. # Check for all needed libraries
  143. # use the cmake defined dl libs as dl is should not be used
  144. # on HPUX, but rather dld this avoids a warning
  145. SET(CURL_LIBS ${CURL_LIBS} ${CMAKE_DL_LIBS})
  146. #CHECK_LIBRARY_EXISTS_CONCAT("dl" dlopen HAVE_LIBDL)
  147. #CHECK_LIBRARY_EXISTS_CONCAT("ucb" gethostname HAVE_LIBUCB)
  148. CHECK_LIBRARY_EXISTS_CONCAT("socket" connect HAVE_LIBSOCKET)
  149. CHECK_LIBRARY_EXISTS("c" gethostbyname "" NOT_NEED_LIBNSL)
  150. # Yellowtab Zeta needs different libraries than BeOS 5.
  151. IF(BEOS)
  152. SET(NOT_NEED_LIBNSL 1)
  153. CHECK_LIBRARY_EXISTS_CONCAT("bind" gethostbyname HAVE_LIBBIND)
  154. CHECK_LIBRARY_EXISTS_CONCAT("bnetapi" closesocket HAVE_LIBBNETAPI)
  155. ENDIF(BEOS)
  156. CHECK_LIBRARY_EXISTS_CONCAT("network" recv HAVE_LIBNETWORK)
  157. IF(NOT NOT_NEED_LIBNSL)
  158. CHECK_LIBRARY_EXISTS_CONCAT("nsl" gethostbyname HAVE_LIBNSL)
  159. ENDIF(NOT NOT_NEED_LIBNSL)
  160. CHECK_LIBRARY_EXISTS_CONCAT("ws2_32" getch HAVE_LIBWS2_32)
  161. CHECK_LIBRARY_EXISTS_CONCAT("winmm" getch HAVE_LIBWINMM)
  162. IF(NOT CURL_SPECIAL_LIBZ)
  163. CHECK_LIBRARY_EXISTS_CONCAT("z" inflateEnd HAVE_LIBZ)
  164. ENDIF(NOT CURL_SPECIAL_LIBZ)
  165. OPTION(CMAKE_USE_OPENSSL "Use OpenSSL code." OFF)
  166. MARK_AS_ADVANCED(CMAKE_USE_OPENSSL)
  167. IF(CMAKE_USE_OPENSSL)
  168. SET(USE_SSLEAY TRUE)
  169. SET(USE_OPENSSL TRUE)
  170. IF(WIN32)
  171. FIND_PATH(SSLINCLUDE openssl/crypto.h
  172. PATHS c:/hoffman/Tools/openssl_w32vc6-0.9.8g/inc32)
  173. INCLUDE_DIRECTORIES(${SSLINCLUDE})
  174. FIND_LIBRARY(LIBEAY NAMES libeay32)
  175. FIND_LIBRARY(SSLEAY NAMES ssleay32)
  176. SET(CURL_LIBS ${CURL_LIBS} ${LIBEAY} ${SSLEAY} )
  177. ELSE(WIN32)
  178. CHECK_LIBRARY_EXISTS_CONCAT("crypto" CRYPTO_lock HAVE_LIBCRYPTO)
  179. CHECK_LIBRARY_EXISTS_CONCAT("ssl" SSL_connect HAVE_LIBSSL)
  180. ENDIF(WIN32)
  181. ENDIF(CMAKE_USE_OPENSSL)
  182. # Check for idn
  183. CHECK_LIBRARY_EXISTS_CONCAT("idn" idna_to_ascii_lz HAVE_LIBIDN)
  184. # Check for symbol dlopen (same as HAVE_LIBDL)
  185. CHECK_LIBRARY_EXISTS("${CURL_LIBS}" dlopen "" HAVE_DLOPEN)
  186. # For other tests to use the same libraries
  187. SET(CMAKE_REQUIRED_LIBRARIES ${CURL_LIBS})
  188. IF(CURL_SPECIAL_LIBZ)
  189. SET(CURL_LIBS ${CURL_LIBS} "${CURL_SPECIAL_LIBZ}")
  190. INCLUDE_DIRECTORIES(${CURL_SPECIAL_LIBZ_INCLUDES})
  191. SET(HAVE_LIBZ 0)
  192. SET(HAVE_ZLIB_H 0)
  193. ENDIF(CURL_SPECIAL_LIBZ)
  194. # do we have process.h
  195. CHECK_INCLUDE_FILE("process.h" HAVE_PROCESS_H)
  196. # If we have features.h, then do the _BSD_SOURCE magic
  197. CHECK_INCLUDE_FILE("features.h" HAVE_FEATURES_H)
  198. IF(HAVE_FEATURES_H)
  199. SET_SOURCE_FILES_PROPERTIES(
  200. cookie.c
  201. easy.c
  202. formdata.c
  203. getenv.c
  204. hash.c
  205. http.c
  206. if2ip.c
  207. mprintf.c
  208. multi.c
  209. sendf.c
  210. telnet.c
  211. transfer.c
  212. url.c
  213. COMPILE_FLAGS -D_BSD_SOURCE)
  214. ENDIF(HAVE_FEATURES_H)
  215. # Check if header file exists and add it to the list.
  216. MACRO(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
  217. CHECK_INCLUDE_FILES("${CURL_INCLUDES};${FILE}" ${VARIABLE})
  218. IF(${VARIABLE})
  219. SET(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
  220. ENDIF(${VARIABLE})
  221. ENDMACRO(CHECK_INCLUDE_FILE_CONCAT)
  222. # Check for header files
  223. IF(NOT UNIX)
  224. CHECK_INCLUDE_FILE_CONCAT("ws2tcpip.h" HAVE_WS2TCPIP_H)
  225. CHECK_INCLUDE_FILE_CONCAT("winsock2.h" HAVE_WINSOCK2_H)
  226. ENDIF(NOT UNIX)
  227. CHECK_INCLUDE_FILE_CONCAT("stdio.h" HAVE_STDIO_H)
  228. IF(NOT UNIX)
  229. CHECK_INCLUDE_FILE_CONCAT("windows.h" HAVE_WINDOWS_H)
  230. CHECK_INCLUDE_FILE_CONCAT("winsock.h" HAVE_WINSOCK_H)
  231. ENDIF(NOT UNIX)
  232. CHECK_INCLUDE_FILE_CONCAT("stddef.h" HAVE_STDDEF_H)
  233. CHECK_INCLUDE_FILE_CONCAT("sys/types.h" HAVE_SYS_TYPES_H)
  234. CHECK_INCLUDE_FILE_CONCAT("inttypes.h" HAVE_INTTYPES_H)
  235. CHECK_INCLUDE_FILE_CONCAT("alloca.h" HAVE_ALLOCA_H)
  236. CHECK_INCLUDE_FILE_CONCAT("arpa/inet.h" HAVE_ARPA_INET_H)
  237. CHECK_INCLUDE_FILE_CONCAT("dlfcn.h" HAVE_DLFCN_H)
  238. CHECK_INCLUDE_FILE_CONCAT("fcntl.h" HAVE_FCNTL_H)
  239. CHECK_INCLUDE_FILE_CONCAT("malloc.h" HAVE_MALLOC_H)
  240. CHECK_INCLUDE_FILE_CONCAT("memory.h" HAVE_MEMORY_H)
  241. CHECK_INCLUDE_FILE_CONCAT("netdb.h" HAVE_NETDB_H)
  242. CHECK_INCLUDE_FILE_CONCAT("sys/poll.h" HAVE_SYS_POLL_H)
  243. CHECK_INCLUDE_FILE_CONCAT("assert.h" HAVE_ASSERT_H)
  244. CHECK_INCLUDE_FILE_CONCAT("limits.h" HAVE_LIMITS_H)
  245. IF(CMAKE_USE_OPENSSL)
  246. CHECK_INCLUDE_FILE_CONCAT("openssl/x509.h" HAVE_OPENSSL_X509_H)
  247. CHECK_INCLUDE_FILE_CONCAT("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
  248. CHECK_INCLUDE_FILE_CONCAT("openssl/rsa.h" HAVE_OPENSSL_RSA_H)
  249. CHECK_INCLUDE_FILE_CONCAT("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
  250. CHECK_INCLUDE_FILE_CONCAT("openssl/pem.h" HAVE_OPENSSL_PEM_H)
  251. CHECK_INCLUDE_FILE_CONCAT("openssl/ssl.h" HAVE_OPENSSL_SSL_H)
  252. CHECK_INCLUDE_FILE_CONCAT("openssl/err.h" HAVE_OPENSSL_ERR_H)
  253. CHECK_INCLUDE_FILE_CONCAT("openssl/rand.h" HAVE_OPENSSL_RAND_H)
  254. CHECK_INCLUDE_FILE_CONCAT("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H)
  255. ENDIF(CMAKE_USE_OPENSSL)
  256. IF(NOT CURL_SPECIAL_LIBZ)
  257. CHECK_INCLUDE_FILE_CONCAT("zlib.h" HAVE_ZLIB_H)
  258. ENDIF(NOT CURL_SPECIAL_LIBZ)
  259. CHECK_INCLUDE_FILE_CONCAT("sys/socket.h" HAVE_SYS_SOCKET_H)
  260. CHECK_INCLUDE_FILE_CONCAT("netinet/in.h" HAVE_NETINET_IN_H)
  261. CHECK_INCLUDE_FILE_CONCAT("net/if.h" HAVE_NET_IF_H)
  262. CHECK_INCLUDE_FILE_CONCAT("netinet/if_ether.h"
  263. HAVE_NETINET_IF_ETHER_H)
  264. CHECK_INCLUDE_FILE_CONCAT("netinet/tcp.h"
  265. HAVE_NETINET_TCP_H)
  266. CHECK_INCLUDE_FILE_CONCAT("sys/select.h" HAVE_SYS_SELECT_H)
  267. CHECK_INCLUDE_FILE_CONCAT("utime.h" HAVE_UTIME_H)
  268. CHECK_INCLUDE_FILE_CONCAT("netinet/in.h" HAVE_NETINET_IN_H)
  269. CHECK_INCLUDE_FILE_CONCAT("pwd.h" HAVE_PWD_H)
  270. CHECK_INCLUDE_FILE_CONCAT("sgtty.h" HAVE_SGTTY_H)
  271. CHECK_INCLUDE_FILE_CONCAT("stdint.h" HAVE_STDINT_H)
  272. CHECK_INCLUDE_FILE_CONCAT("stdlib.h" HAVE_STDLIB_H)
  273. CHECK_INCLUDE_FILE_CONCAT("string.h" HAVE_STRING_H)
  274. CHECK_INCLUDE_FILE_CONCAT("strings.h" HAVE_STRINGS_H)
  275. CHECK_INCLUDE_FILE_CONCAT("sys/param.h" HAVE_SYS_PARAM_H)
  276. CHECK_INCLUDE_FILE_CONCAT("sys/stat.h" HAVE_SYS_STAT_H)
  277. CHECK_INCLUDE_FILE_CONCAT("sys/time.h" HAVE_SYS_TIME_H)
  278. CHECK_INCLUDE_FILE_CONCAT("sys/resource.h" HAVE_SYS_RESOURCE_H)
  279. CHECK_INCLUDE_FILE_CONCAT("termios.h" HAVE_TERMIOS_H)
  280. CHECK_INCLUDE_FILE_CONCAT("termio.h" HAVE_TERMIO_H)
  281. CHECK_INCLUDE_FILE_CONCAT("io.h" HAVE_IO_H)
  282. CHECK_INCLUDE_FILE_CONCAT("time.h" HAVE_TIME_H)
  283. CHECK_INCLUDE_FILE_CONCAT("unistd.h" HAVE_UNISTD_H)
  284. CHECK_INCLUDE_FILE_CONCAT("sys/utime.h" HAVE_SYS_UTIME_H)
  285. CHECK_INCLUDE_FILE_CONCAT("sockio.h" HAVE_SOCKIO_H)
  286. CHECK_INCLUDE_FILE_CONCAT("sys/sockio.h" HAVE_SYS_SOCKIO_H)
  287. CHECK_INCLUDE_FILE_CONCAT("x509.h" HAVE_X509_H)
  288. CHECK_INCLUDE_FILE_CONCAT("locale.h" HAVE_LOCALE_H)
  289. CHECK_INCLUDE_FILE_CONCAT("setjmp.h" HAVE_SETJMP_H)
  290. CHECK_INCLUDE_FILE_CONCAT("signal.h" HAVE_SIGNAL_H)
  291. CHECK_INCLUDE_FILE_CONCAT("sys/ioctl.h" HAVE_SYS_IOCTL_H)
  292. CHECK_INCLUDE_FILE_CONCAT("sys/utsname.h" HAVE_SYS_UTSNAME_H)
  293. CHECK_INCLUDE_FILE_CONCAT("idn-free.h" HAVE_IDN_FREE_H)
  294. CHECK_INCLUDE_FILE_CONCAT("idna.h" HAVE_IDNA_H)
  295. CHECK_INCLUDE_FILE_CONCAT("tld.h" HAVE_TLD_H)
  296. CHECK_INCLUDE_FILE_CONCAT("arpa/tftp.h" HAVE_ARPA_TFTP_H)
  297. CHECK_INCLUDE_FILE_CONCAT("errno.h" HAVE_ERRNO_H)
  298. CHECK_INCLUDE_FILE_CONCAT("libgen.h" HAVE_LIBGEN_H)
  299. CHECK_INCLUDE_FILE_CONCAT("sys/filio.h" HAVE_SYS_FILIO_H)
  300. CHECK_TYPE_SIZE(size_t SIZEOF_SIZE_T)
  301. CHECK_TYPE_SIZE(ssize_t SIZEOF_SSIZE_T)
  302. CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG)
  303. CHECK_TYPE_SIZE("long" SIZEOF_LONG)
  304. CHECK_TYPE_SIZE("__int64" SIZEOF___INT64)
  305. CHECK_TYPE_SIZE("long double" SIZEOF_LONG_DOUBLE)
  306. CHECK_TYPE_SIZE("time_t" SIZEOF_TIME_T)
  307. IF(NOT HAVE_SIZEOF_SSIZE_T)
  308. IF(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
  309. SET(ssize_t long)
  310. ENDIF(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
  311. IF(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T)
  312. SET(ssize_t __int64)
  313. ENDIF(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T)
  314. ENDIF(NOT HAVE_SIZEOF_SSIZE_T)
  315. IF(HAVE_SIZEOF_LONG_LONG)
  316. SET(HAVE_LONGLONG 1)
  317. SET(HAVE_LL 1)
  318. ENDIF(HAVE_SIZEOF_LONG_LONG)
  319. FIND_FILE(RANDOM_FILE urandom /dev)
  320. MARK_AS_ADVANCED(RANDOM_FILE)
  321. #strtoll \
  322. #socket \
  323. #select \
  324. #strdup \
  325. #strstr \
  326. #strtok_r \
  327. #uname \
  328. #strcasecmp \
  329. #stricmp \
  330. #strcmpi \
  331. #gethostbyaddr \
  332. #gettimeofday \
  333. #inet_addr \
  334. #inet_ntoa \
  335. #inet_pton \
  336. #perror \
  337. #closesocket \
  338. #siginterrupt \
  339. #sigaction \
  340. #signal \
  341. #getpass_r \
  342. #strlcat \
  343. #getpwuid \
  344. #geteuid \
  345. #dlopen \
  346. #utime \
  347. #sigsetjmp \
  348. #basename \
  349. #setlocale \
  350. #ftruncate \
  351. #pipe \
  352. #poll \
  353. #getprotobyname \
  354. #getrlimit \
  355. #setrlimit \
  356. #fork
  357. # Check for some functions that are used
  358. CHECK_SYMBOL_EXISTS(basename "${CURL_INCLUDES}" HAVE_BASENAME)
  359. CHECK_SYMBOL_EXISTS(socket "${CURL_INCLUDES}" HAVE_SOCKET)
  360. CHECK_SYMBOL_EXISTS(poll "${CURL_INCLUDES}" HAVE_POLL)
  361. CHECK_SYMBOL_EXISTS(select "${CURL_INCLUDES}" HAVE_SELECT)
  362. CHECK_SYMBOL_EXISTS(strdup "${CURL_INCLUDES}" HAVE_STRDUP)
  363. CHECK_SYMBOL_EXISTS(strstr "${CURL_INCLUDES}" HAVE_STRSTR)
  364. CHECK_SYMBOL_EXISTS(strtok_r "${CURL_INCLUDES}" HAVE_STRTOK_R)
  365. CHECK_SYMBOL_EXISTS(strftime "${CURL_INCLUDES}" HAVE_STRFTIME)
  366. CHECK_SYMBOL_EXISTS(uname "${CURL_INCLUDES}" HAVE_UNAME)
  367. CHECK_SYMBOL_EXISTS(strcasecmp "${CURL_INCLUDES}" HAVE_STRCASECMP)
  368. CHECK_SYMBOL_EXISTS(stricmp "${CURL_INCLUDES}" HAVE_STRICMP)
  369. CHECK_SYMBOL_EXISTS(strcmpi "${CURL_INCLUDES}" HAVE_STRCMPI)
  370. CHECK_SYMBOL_EXISTS(strncmpi "${CURL_INCLUDES}" HAVE_STRNCMPI)
  371. CHECK_SYMBOL_EXISTS(basename "${CURL_INCLUDES}" HAVE_BASENAME)
  372. IF(NOT HAVE_STRNCMPI)
  373. SET(HAVE_STRCMPI)
  374. ENDIF(NOT HAVE_STRNCMPI)
  375. CHECK_SYMBOL_EXISTS(gethostbyaddr "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR)
  376. CHECK_SYMBOL_EXISTS(gettimeofday "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY)
  377. CHECK_SYMBOL_EXISTS(inet_addr "${CURL_INCLUDES}" HAVE_INET_ADDR)
  378. # windows only has this for vista, but will link with it and say
  379. # that it has it at link time! So, force it off
  380. IF(WIN32)
  381. SET(HAVE_INET_PTON 0 CACHE "" INTERNAL )
  382. ENDIF(WIN32)
  383. CHECK_SYMBOL_EXISTS(inet_pton "${CURL_INCLUDES}" HAVE_INET_PTON)
  384. CHECK_SYMBOL_EXISTS(inet_ntoa "${CURL_INCLUDES}" HAVE_INET_NTOA)
  385. CHECK_SYMBOL_EXISTS(inet_ntoa_r "${CURL_INCLUDES}" HAVE_INET_NTOA_R)
  386. CHECK_SYMBOL_EXISTS(tcsetattr "${CURL_INCLUDES}" HAVE_TCSETATTR)
  387. CHECK_SYMBOL_EXISTS(tcgetattr "${CURL_INCLUDES}" HAVE_TCGETATTR)
  388. CHECK_SYMBOL_EXISTS(perror "${CURL_INCLUDES}" HAVE_PERROR)
  389. CHECK_SYMBOL_EXISTS(closesocket "${CURL_INCLUDES}" HAVE_CLOSESOCKET)
  390. CHECK_SYMBOL_EXISTS(setvbuf "${CURL_INCLUDES}" HAVE_SETVBUF)
  391. CHECK_SYMBOL_EXISTS(sigsetjmp "${CURL_INCLUDES}" HAVE_SIGSETJMP)
  392. CHECK_SYMBOL_EXISTS(getpass_r "${CURL_INCLUDES}" HAVE_GETPASS_R)
  393. CHECK_SYMBOL_EXISTS(strlcat "${CURL_INCLUDES}" HAVE_STRLCAT)
  394. CHECK_SYMBOL_EXISTS(getpwuid "${CURL_INCLUDES}" HAVE_GETPWUID)
  395. CHECK_SYMBOL_EXISTS(geteuid "${CURL_INCLUDES}" HAVE_GETEUID)
  396. CHECK_SYMBOL_EXISTS(utime "${CURL_INCLUDES}" HAVE_UTIME)
  397. IF(CMAKE_USE_OPENSSL)
  398. CHECK_SYMBOL_EXISTS(RAND_status "${CURL_INCLUDES}" HAVE_RAND_STATUS)
  399. CHECK_SYMBOL_EXISTS(RAND_screen "${CURL_INCLUDES}" HAVE_RAND_SCREEN)
  400. CHECK_SYMBOL_EXISTS(RAND_egd "${CURL_INCLUDES}" HAVE_RAND_EGD)
  401. CHECK_SYMBOL_EXISTS(CRYPTO_cleanup_all_ex_data "${CURL_INCLUDES}"
  402. HAVE_CRYPTO_CLEANUP_ALL_EX_DATA)
  403. ENDIF(CMAKE_USE_OPENSSL)
  404. CHECK_SYMBOL_EXISTS(gmtime_r "${CURL_INCLUDES}" HAVE_GMTIME_R)
  405. CHECK_SYMBOL_EXISTS(localtime_r "${CURL_INCLUDES}" HAVE_LOCALTIME_R)
  406. CHECK_SYMBOL_EXISTS(gethostbyname "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME)
  407. CHECK_SYMBOL_EXISTS(gethostbyname_r "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME_R)
  408. CHECK_SYMBOL_EXISTS(gethostbyaddr_r "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR_R)
  409. CHECK_SYMBOL_EXISTS(signal "${CURL_INCLUDES}" HAVE_SIGNAL_FUNC)
  410. CHECK_SYMBOL_EXISTS(SIGALRM "${CURL_INCLUDES}" HAVE_SIGNAL_MACRO)
  411. IF(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
  412. SET(HAVE_SIGNAL 1)
  413. ENDIF(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
  414. CHECK_SYMBOL_EXISTS(uname "${CURL_INCLUDES}" HAVE_UNAME)
  415. CHECK_SYMBOL_EXISTS(strtoll "${CURL_INCLUDES}" HAVE_STRTOLL)
  416. CHECK_SYMBOL_EXISTS(_strtoi64 "${CURL_INCLUDES}" HAVE__STRTOI64)
  417. CHECK_SYMBOL_EXISTS(strerror_r "${CURL_INCLUDES}" HAVE_STRERROR_R)
  418. CHECK_SYMBOL_EXISTS(siginterrupt "${CURL_INCLUDES}" HAVE_SIGINTERRUPT)
  419. CHECK_SYMBOL_EXISTS(perror "${CURL_INCLUDES}" HAVE_PERROR)
  420. CHECK_SYMBOL_EXISTS(fork "${CURL_INCLUDES}" HAVE_FORK)
  421. CHECK_SYMBOL_EXISTS(pipe "${CURL_INCLUDES}" HAVE_PIPE)
  422. CHECK_SYMBOL_EXISTS(ftruncate "${CURL_INCLUDES}" HAVE_FTRUNCATE)
  423. CHECK_SYMBOL_EXISTS(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME)
  424. CHECK_SYMBOL_EXISTS(getrlimit "${CURL_INCLUDES}" HAVE_GETRLIMIT)
  425. CHECK_SYMBOL_EXISTS(idn_free "${CURL_INCLUDES}" HAVE_IDN_FREE)
  426. CHECK_SYMBOL_EXISTS(idna_strerror "${CURL_INCLUDES}" HAVE_IDNA_STRERROR)
  427. CHECK_SYMBOL_EXISTS(tld_strerror "${CURL_INCLUDES}" HAVE_TLD_STRERROR)
  428. CHECK_SYMBOL_EXISTS(setlocale "${CURL_INCLUDES}" HAVE_SETLOCALE)
  429. CHECK_SYMBOL_EXISTS(setrlimit "${CURL_INCLUDES}" HAVE_SETRLIMIT)
  430. # only build compat strtok if we need to
  431. IF (NOT HAVE_STRTOK_R)
  432. SET(libCurl_SRCS ${libCurl_SRCS}
  433. strtok.c
  434. )
  435. ENDIF (NOT HAVE_STRTOK_R)
  436. # only build compat strtoofft if we need to
  437. IF(NOT HAVE_STRTOLL AND NOT HAVE__STRTOI64)
  438. SET(libCurl_SRCS ${libCurl_SRCS}
  439. strtoofft.c
  440. )
  441. ENDIF(NOT HAVE_STRTOLL AND NOT HAVE__STRTOI64)
  442. # sigaction and sigsetjmp are special. Use special mechanism for
  443. # detecting those, but only if previous attempt failed.
  444. IF(HAVE_SIGNAL_H)
  445. CHECK_SYMBOL_EXISTS(sigaction "signal.h" HAVE_SIGACTION)
  446. ENDIF(HAVE_SIGNAL_H)
  447. IF(NOT HAVE_SIGSETJMP)
  448. IF(HAVE_SETJMP_H)
  449. CHECK_SYMBOL_EXISTS(sigsetjmp "setjmp.h" HAVE_MACRO_SIGSETJMP)
  450. IF(HAVE_MACRO_SIGSETJMP)
  451. SET(HAVE_SIGSETJMP 1)
  452. ENDIF(HAVE_MACRO_SIGSETJMP)
  453. ENDIF(HAVE_SETJMP_H)
  454. ENDIF(NOT HAVE_SIGSETJMP)
  455. # For other curl specific tests, use this macro.
  456. MACRO(CURL_INTERNAL_TEST CURL_TEST)
  457. IF("${CURL_TEST}" MATCHES "^${CURL_TEST}$")
  458. SET(MACRO_CHECK_FUNCTION_DEFINITIONS
  459. "-D${CURL_TEST} ${CMAKE_REQUIRED_FLAGS}")
  460. IF(CMAKE_REQUIRED_LIBRARIES)
  461. SET(CURL_TEST_ADD_LIBRARIES
  462. "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
  463. ENDIF(CMAKE_REQUIRED_LIBRARIES)
  464. MESSAGE(STATUS "Performing Curl Test ${CURL_TEST}")
  465. TRY_COMPILE(${CURL_TEST}
  466. ${CMAKE_BINARY_DIR}
  467. ${LIBCURL_SOURCE_DIR}/CMake/CurlTests.c
  468. CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
  469. "${CURL_TEST_ADD_LIBRARIES}"
  470. OUTPUT_VARIABLE OUTPUT)
  471. IF(${CURL_TEST})
  472. SET(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
  473. MESSAGE(STATUS "Performing Curl Test ${CURL_TEST} - Success")
  474. FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
  475. "Performing Curl Test ${CURL_TEST} passed with the following output:\n"
  476. "${OUTPUT}\n")
  477. ELSE(${CURL_TEST})
  478. MESSAGE(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
  479. SET(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
  480. FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
  481. "Performing Curl Test ${CURL_TEST} failed with the following output:\n"
  482. "${OUTPUT}\n")
  483. ENDIF(${CURL_TEST})
  484. ENDIF("${CURL_TEST}" MATCHES "^${CURL_TEST}$")
  485. ENDMACRO(CURL_INTERNAL_TEST)
  486. MACRO(CURL_INTERNAL_TEST_RUN CURL_TEST)
  487. IF("${CURL_TEST}_COMPILE" MATCHES "^${CURL_TEST}_COMPILE$")
  488. SET(MACRO_CHECK_FUNCTION_DEFINITIONS
  489. "-D${CURL_TEST} ${CMAKE_REQUIRED_FLAGS}")
  490. IF(CMAKE_REQUIRED_LIBRARIES)
  491. SET(CURL_TEST_ADD_LIBRARIES
  492. "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
  493. ENDIF(CMAKE_REQUIRED_LIBRARIES)
  494. MESSAGE(STATUS "Performing Curl Test ${CURL_TEST}")
  495. TRY_RUN(${CURL_TEST} ${CURL_TEST}_COMPILE
  496. ${CMAKE_BINARY_DIR}
  497. ${LIBCURL_SOURCE_DIR}/CMake/CurlTests.c
  498. CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
  499. "${CURL_TEST_ADD_LIBRARIES}"
  500. OUTPUT_VARIABLE OUTPUT)
  501. IF(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
  502. SET(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
  503. MESSAGE(STATUS "Performing Curl Test ${CURL_TEST} - Success")
  504. ELSE(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
  505. MESSAGE(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
  506. SET(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
  507. FILE(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
  508. "Performing Curl Test ${CURL_TEST} failed with the following output:\n"
  509. "${OUTPUT}")
  510. IF(${CURL_TEST}_COMPILE)
  511. FILE(APPEND
  512. "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
  513. "There was a running problem of this test\n")
  514. ENDIF(${CURL_TEST}_COMPILE)
  515. FILE(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
  516. "\n\n")
  517. ENDIF(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
  518. ENDIF("${CURL_TEST}_COMPILE" MATCHES "^${CURL_TEST}_COMPILE$")
  519. ENDMACRO(CURL_INTERNAL_TEST_RUN)
  520. # Do curl specific tests
  521. #OPTION(CURL_HAVE_DISABLED_NONBLOCKING "Disable non-blocking socket detection" OFF)
  522. SET(CURL_NONBLOCKING_TESTS)
  523. IF(NOT CURL_HAVE_DISABLED_NONBLOCKING)
  524. SET(CURL_NONBLOCKING_TESTS
  525. HAVE_FIONBIO
  526. HAVE_IOCTLSOCKET
  527. HAVE_IOCTLSOCKET_CASE
  528. HAVE_O_NONBLOCK
  529. HAVE_SO_NONBLOCK
  530. )
  531. ENDIF(NOT CURL_HAVE_DISABLED_NONBLOCKING)
  532. FOREACH(CURL_TEST
  533. ${CURL_NONBLOCKING_TESTS}
  534. TIME_WITH_SYS_TIME
  535. HAVE_O_NONBLOCKHAVE_GETHOSTBYADDR_R_5
  536. HAVE_GETHOSTBYADDR_R_7
  537. HAVE_GETHOSTBYADDR_R_8
  538. HAVE_GETHOSTBYADDR_R_5_REENTRANT
  539. HAVE_GETHOSTBYADDR_R_7_REENTRANT
  540. HAVE_GETHOSTBYADDR_R_8_REENTRANT
  541. HAVE_GETHOSTBYNAME_R_3
  542. HAVE_GETHOSTBYNAME_R_5
  543. HAVE_GETHOSTBYNAME_R_6
  544. HAVE_GETHOSTBYNAME_R_3_REENTRANT
  545. HAVE_GETHOSTBYNAME_R_5_REENTRANT
  546. HAVE_GETHOSTBYNAME_R_6_REENTRANT
  547. HAVE_SOCKLEN_T
  548. HAVE_IN_ADDR_T
  549. STDC_HEADERS
  550. RETSIGTYPE_TEST
  551. HAVE_INET_NTOA_R_DECL
  552. HAVE_INET_NTOA_R_DECL_REENTRANT
  553. HAVE_GETADDRINFO
  554. HAVE_FILE_OFFSET_BITS
  555. )
  556. CURL_INTERNAL_TEST(${CURL_TEST})
  557. ENDFOREACH(CURL_TEST)
  558. IF(HAVE_FILE_OFFSET_BITS)
  559. SET(_FILE_OFFSET_BITS 64)
  560. ENDIF(HAVE_FILE_OFFSET_BITS)
  561. FOREACH(CURL_TEST
  562. HAVE_GLIBC_STRERROR_R
  563. HAVE_POSIX_STRERROR_R
  564. )
  565. CURL_INTERNAL_TEST_RUN(${CURL_TEST})
  566. ENDFOREACH(CURL_TEST)
  567. # Check for reentrant
  568. FOREACH(CURL_TEST
  569. HAVE_GETHOSTBYADDR_R_5
  570. HAVE_GETHOSTBYADDR_R_7
  571. HAVE_GETHOSTBYADDR_R_8
  572. HAVE_GETHOSTBYNAME_R_3
  573. HAVE_GETHOSTBYNAME_R_5
  574. HAVE_GETHOSTBYNAME_R_6
  575. HAVE_INET_NTOA_R_DECL_REENTRANT)
  576. IF(NOT ${CURL_TEST})
  577. IF(${CURL_TEST}_REENTRANT)
  578. SET(NEED_REENTRANT 1)
  579. ENDIF(${CURL_TEST}_REENTRANT)
  580. ENDIF(NOT ${CURL_TEST})
  581. ENDFOREACH(CURL_TEST)
  582. IF(NEED_REENTRANT)
  583. FOREACH(CURL_TEST
  584. HAVE_GETHOSTBYADDR_R_5
  585. HAVE_GETHOSTBYADDR_R_7
  586. HAVE_GETHOSTBYADDR_R_8
  587. HAVE_GETHOSTBYNAME_R_3
  588. HAVE_GETHOSTBYNAME_R_5
  589. HAVE_GETHOSTBYNAME_R_6)
  590. SET(${CURL_TEST} 0)
  591. IF(${CURL_TEST}_REENTRANT)
  592. SET(${CURL_TEST} 1)
  593. ENDIF(${CURL_TEST}_REENTRANT)
  594. ENDFOREACH(CURL_TEST)
  595. ENDIF(NEED_REENTRANT)
  596. IF(HAVE_INET_NTOA_R_DECL_REENTRANT)
  597. SET(HAVE_INET_NTOA_R_DECL 1)
  598. SET(NEED_REENTRANT 1)
  599. ENDIF(HAVE_INET_NTOA_R_DECL_REENTRANT)
  600. # Some other minor tests
  601. IF(NOT HAVE_SOCKLEN_T)
  602. SET(socklen_t "int")
  603. ENDIF(NOT HAVE_SOCKLEN_T)
  604. IF(NOT HAVE_IN_ADDR_T)
  605. SET(in_addr_t "unsigned long")
  606. ENDIF(NOT HAVE_IN_ADDR_T)
  607. # Fix libz / zlib.h
  608. IF(NOT CURL_SPECIAL_LIBZ)
  609. IF(NOT HAVE_LIBZ)
  610. SET(HAVE_ZLIB_H 0)
  611. ENDIF(NOT HAVE_LIBZ)
  612. IF(NOT HAVE_ZLIB_H)
  613. SET(HAVE_LIBZ 0)
  614. ENDIF(NOT HAVE_ZLIB_H)
  615. ENDIF(NOT CURL_SPECIAL_LIBZ)
  616. IF(_FILE_OFFSET_BITS)
  617. SET(_FILE_OFFSET_BITS 64)
  618. ENDIF(_FILE_OFFSET_BITS)
  619. SET(CMAKE_REQUIRED_FLAGS "-D_FILE_OFFSET_BITS=64")
  620. SET(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/curl/curl.h")
  621. CHECK_TYPE_SIZE("curl_off_t" SIZEOF_CURL_OFF_T)
  622. SET(CMAKE_EXTRA_INCLUDE_FILES)
  623. SET(CMAKE_REQUIRED_FLAGS)
  624. # Check for nonblocking
  625. SET(HAVE_DISABLED_NONBLOCKING 1)
  626. IF(HAVE_FIONBIO OR
  627. HAVE_IOCTLSOCKET OR
  628. HAVE_IOCTLSOCKET_CASE OR
  629. HAVE_O_NONBLOCK)
  630. SET(HAVE_DISABLED_NONBLOCKING)
  631. ENDIF(HAVE_FIONBIO OR
  632. HAVE_IOCTLSOCKET OR
  633. HAVE_IOCTLSOCKET_CASE OR
  634. HAVE_O_NONBLOCK)
  635. IF(RETSIGTYPE_TEST)
  636. SET(RETSIGTYPE void)
  637. ELSE(RETSIGTYPE_TEST)
  638. SET(RETSIGTYPE int)
  639. ENDIF(RETSIGTYPE_TEST)
  640. IF(CMAKE_COMPILER_IS_GNUCC AND APPLE)
  641. INCLUDE(CheckCCompilerFlag)
  642. CHECK_C_COMPILER_FLAG(-Wno-long-double HAVE_C_FLAG_Wno_long_double)
  643. IF(HAVE_C_FLAG_Wno_long_double)
  644. # The Mac version of GCC warns about use of long double. Disable it.
  645. GET_SOURCE_FILE_PROPERTY(MPRINTF_COMPILE_FLAGS mprintf.c COMPILE_FLAGS)
  646. IF(MPRINTF_COMPILE_FLAGS)
  647. SET(MPRINTF_COMPILE_FLAGS "${MPRINTF_COMPILE_FLAGS} -Wno-long-double")
  648. ELSE(MPRINTF_COMPILE_FLAGS)
  649. SET(MPRINTF_COMPILE_FLAGS "-Wno-long-double")
  650. ENDIF(MPRINTF_COMPILE_FLAGS)
  651. SET_SOURCE_FILES_PROPERTIES(mprintf.c PROPERTIES
  652. COMPILE_FLAGS ${MPRINTF_COMPILE_FLAGS})
  653. ENDIF(HAVE_C_FLAG_Wno_long_double)
  654. ENDIF(CMAKE_COMPILER_IS_GNUCC AND APPLE)
  655. INCLUDE(CMake/OtherTests.cmake)
  656. # The rest of the build
  657. INCLUDE_DIRECTORIES(${LIBCURL_SOURCE_DIR})
  658. INCLUDE_DIRECTORIES(${LIBCURL_BINARY_DIR})
  659. OPTION(CMAKE_BUILD_CURL_SHARED "Should curl be built shared" TRUE)
  660. IF(CMAKE_BUILD_CURL_SHARED)
  661. SET(LIBRARY_TYPE SHARED)
  662. ADD_DEFINITIONS(-DHAVE_CONFIG_H)
  663. ELSE(CMAKE_BUILD_CURL_SHARED)
  664. ADD_DEFINITIONS(-DHAVE_CONFIG_H
  665. -DCURL_STATICLIB)
  666. ENDIF(CMAKE_BUILD_CURL_SHARED)
  667. SET(CURL_STATICLIB)
  668. CONFIGURE_FILE(${LIBCURL_SOURCE_DIR}/config.h.in
  669. ${LIBCURL_BINARY_DIR}/config.h)
  670. ADD_LIBRARY(cmcurl ${LIBRARY_TYPE} ${libCurl_SRCS})
  671. TARGET_LINK_LIBRARIES(cmcurl ${CURL_LIBS})
  672. IF(CMAKE_BUILD_CURL_SHARED)
  673. SET_TARGET_PROPERTIES(cmcurl PROPERTIES DEFINE_SYMBOL BUILDING_LIBCURL
  674. RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
  675. INSTALL_TARGETS(/bin cmcurl)
  676. ENDIF(CMAKE_BUILD_CURL_SHARED)
  677. OPTION(CURL_TESTING "Do libCurl testing" OFF)
  678. IF(CURL_TESTING)
  679. SUBDIRS(Testing)
  680. ENDIF(CURL_TESTING)
  681. ADD_EXECUTABLE(LIBCURL Testing/curltest.c)
  682. TARGET_LINK_LIBRARIES(LIBCURL cmcurl ${CMAKE_DL_LIBS})
  683. ADD_TEST(curl "${EXECUTABLE_OUTPUT_PATH}/LIBCURL")