comparison Resources/CMake/LibCurlConfiguration.cmake @ 2448:862d943115f9

working on linux standard base
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 02 Jan 2018 18:04:11 +0100
parents 74d0953a3681
children ade8b4ddd8a6
comparison
equal deleted inserted replaced
2447:878b59270859 2448:862d943115f9
1 macro(CHECK_CURL_TYPE_EXISTS TYPE VARIABLE)
2 check_type_size("${TYPE}" SIZEOF_TYPE) # LANGUAGE CXX)
3
4 if (SIZEOF_TYPE)
5 set(${VARIABLE} ON)
6 else()
7 set(${VARIABLE} OFF)
8 endif()
9 endmacro()
10
11
1 if (STATIC_BUILD OR NOT USE_SYSTEM_CURL) 12 if (STATIC_BUILD OR NOT USE_SYSTEM_CURL)
2 SET(CURL_SOURCES_DIR ${CMAKE_BINARY_DIR}/curl-7.50.3) 13 SET(CURL_SOURCES_DIR ${CMAKE_BINARY_DIR}/curl-7.57.0)
3 SET(CURL_URL "http://www.orthanc-server.com/downloads/third-party/curl-7.50.3.tar.gz") 14 SET(CURL_URL "http://www.orthanc-server.com/downloads/third-party/curl-7.57.0.tar.gz")
4 SET(CURL_MD5 "870e16fd88a88b52e26a4f04dfc161db") 15 SET(CURL_MD5 "c7aab73aaf5e883ca1d7518f93649dc2")
5 16
6 DownloadPackage(${CURL_MD5} ${CURL_URL} "${CURL_SOURCES_DIR}") 17 DownloadPackage(${CURL_MD5} ${CURL_URL} "${CURL_SOURCES_DIR}")
7 18
8 include_directories( 19 include_directories(
9 ${CURL_SOURCES_DIR}/include 20 ${CURL_SOURCES_DIR}/include
40 -DUSE_SSLEAY=1 51 -DUSE_SSLEAY=1
41 ) 52 )
42 endif() 53 endif()
43 54
44 if (NOT EXISTS "${CURL_SOURCES_DIR}/lib/curl_config.h") 55 if (NOT EXISTS "${CURL_SOURCES_DIR}/lib/curl_config.h")
45 file(WRITE ${CURL_SOURCES_DIR}/lib/curl_config.h "") 56 #file(WRITE ${CURL_SOURCES_DIR}/lib/curl_config.h "")
46 57
47 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/vauth/vauth.h "#include \"../vauth.h\"\n") 58 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/vauth/vauth.h "#include \"../vauth.h\"\n")
48 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/vauth/digest.h "#include \"../digest.h\"\n") 59 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/vauth/digest.h "#include \"../digest.h\"\n")
49 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/vauth/ntlm.h "#include \"../ntlm.h\"\n") 60 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/vauth/ntlm.h "#include \"../ntlm.h\"\n")
50 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/vtls/vtls.h "#include \"../../vtls/vtls.h\"\n") 61 file(WRITE ${CURL_SOURCES_DIR}/lib/vauth/vtls/vtls.h "#include \"../../vtls/vtls.h\"\n")
68 SET(TMP_OS "x86") 79 SET(TMP_OS "x86")
69 endif() 80 endif()
70 81
71 set_property( 82 set_property(
72 SOURCE ${CURL_SOURCES} 83 SOURCE ${CURL_SOURCES}
73 PROPERTY COMPILE_DEFINITIONS "HAVE_TIME_H;HAVE_STRUCT_TIMEVAL;HAVE_SYS_STAT_H;HAVE_SOCKET;HAVE_STRUCT_SOCKADDR_STORAGE;HAVE_SYS_SOCKET_H;HAVE_SOCKET;HAVE_SYS_SOCKET_H;HAVE_NETINET_IN_H;HAVE_NETDB_H;HAVE_FCNTL_O_NONBLOCK;HAVE_FCNTL_H;HAVE_SELECT;HAVE_ERRNO_H;HAVE_SEND;HAVE_RECV;HAVE_LONGLONG;OS=\"${TMP_OS}\"" 84 PROPERTY COMPILE_DEFINITIONS "HAVE_CONFIG_H=1;OS=\"${TMP_OS}\""
74 ) 85 )
75 86
76 if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") 87 include(CheckTypeSize)
77 add_definitions( 88 include(CheckIncludeFile)
78 -DRECV_TYPE_ARG1=int 89 include(CheckSymbolExists)
79 -DRECV_TYPE_ARG2=void* 90
80 -DRECV_TYPE_ARG3=size_t 91 CHECK_INCLUDE_FILE(time.h HAVE_TIME_H)
81 -DRECV_TYPE_ARG4=int 92 CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H)
82 -DRECV_TYPE_RETV=ssize_t 93 CHECK_INCLUDE_FILE(sys/socket.h HAVE_SYS_SOCKET_H)
83 -DSEND_TYPE_ARG1=int 94 CHECK_INCLUDE_FILE(netinet/in.h HAVE_NETINET_IN_H)
84 -DSEND_TYPE_ARG2=void* 95 CHECK_INCLUDE_FILE(netdb.h HAVE_NETDB_H)
85 -DSEND_QUAL_ARG2=const 96 CHECK_INCLUDE_FILE(fcntl.h HAVE_FCNTL_H)
86 -DSEND_TYPE_ARG3=size_t 97 CHECK_INCLUDE_FILE(errno.h HAVE_ERRNO_H)
87 -DSEND_TYPE_ARG4=int 98 CHECK_INCLUDE_FILE(stdint.h HAVE_STDINT_H)
88 -DSEND_TYPE_RETV=ssize_t 99 CHECK_INCLUDE_FILE(stdio.h HAVE_STDIO_H)
89 -DSIZEOF_SHORT=2 100 CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
90 -DSIZEOF_INT=4 101
91 -DSIZEOF_SIZE_T=8 102 CHECK_CURL_TYPE_EXISTS("long long" HAVE_LONGLONG)
92 ) 103
93 elseif ("${CMAKE_SIZEOF_VOID_P}" EQUAL "4") 104 check_symbol_exists(socket "sys/socket.h" HAVE_SOCKET)
94 add_definitions( 105 check_symbol_exists(recv "sys/socket.h" HAVE_RECV)
95 -DRECV_TYPE_ARG1=int 106 check_symbol_exists(send "sys/socket.h" HAVE_SEND)
96 -DRECV_TYPE_ARG2=void* 107 check_symbol_exists(select "sys/select.h" HAVE_SELECT)
97 -DRECV_TYPE_ARG3=size_t 108
98 -DRECV_TYPE_ARG4=int 109 check_type_size("size_t" SIZEOF_SIZE_T)
99 -DRECV_TYPE_RETV=int 110 check_type_size("ssize_t" SIZEOF_SSIZE_T)
100 -DSEND_TYPE_ARG1=int 111 check_type_size("long long" SIZEOF_LONG_LONG)
101 -DSEND_TYPE_ARG2=void* 112 check_type_size("long" SIZEOF_LONG)
102 -DSEND_QUAL_ARG2=const 113 check_type_size("short" SIZEOF_SHORT)
103 -DSEND_TYPE_ARG3=size_t 114 check_type_size("int" SIZEOF_INT)
104 -DSEND_TYPE_ARG4=int 115 check_type_size("__int64" SIZEOF___INT64)
105 -DSEND_TYPE_RETV=int 116 check_type_size("long double" SIZEOF_LONG_DOUBLE)
106 -DSIZEOF_SHORT=2 117 check_type_size("time_t" SIZEOF_TIME_T)
107 -DSIZEOF_INT=4 118 check_type_size("off_t" SIZEOF_OFF_T)
108 -DSIZEOF_SIZE_T=4 119 check_type_size("socklen_t" CURL_SIZEOF_CURL_SOCKLEN_T)
109 ) 120
110 else() 121 set(CMAKE_REQUIRED_INCLUDES "${CURL_SOURCES_DIR}/include")
111 message(FATAL_ERROR "Support your platform here") 122 set(CMAKE_EXTRA_INCLUDE_FILES "curl/system.h")
112 endif() 123 check_type_size("curl_off_t" SIZEOF_CURL_OFF_T)
124
125 include(${CURL_SOURCES_DIR}/CMake/OtherTests.cmake)
126 set(HAVE_STRUCT_TIMEVAL ON) # TODO WHY IS THIS NECESSARY?
127 set(HAVE_FCNTL_O_NONBLOCK ON) # TODO WHY IS THIS NECESSARY?
128
129 configure_file(
130 ${CURL_SOURCES_DIR}/lib/curl_config.h.cmake
131 ${CURL_SOURCES_DIR}/lib/curl_config.h
132 )
113 endif() 133 endif()
114
115 else() 134 else()
116 include(FindCURL) 135 include(FindCURL)
117 include_directories(${CURL_INCLUDE_DIRS}) 136 include_directories(${CURL_INCLUDE_DIRS})
118 link_libraries(${CURL_LIBRARIES}) 137 link_libraries(${CURL_LIBRARIES})
119 138