win32-cache.cmake (6937B)
1 #*************************************************************************** 2 # _ _ ____ _ 3 # Project ___| | | | _ \| | 4 # / __| | | | |_) | | 5 # | (__| |_| | _ <| |___ 6 # \___|\___/|_| \_\_____| 7 # 8 # Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 9 # 10 # This software is licensed as described in the file COPYING, which 11 # you should have received as part of this distribution. The terms 12 # are also available at https://curl.se/docs/copyright.html. 13 # 14 # You may opt to use, copy, modify, merge, publish, distribute and/or sell 15 # copies of the Software, and permit persons to whom the Software is 16 # furnished to do so, under the terms of the COPYING file. 17 # 18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 19 # KIND, either express or implied. 20 # 21 # SPDX-License-Identifier: curl 22 # 23 ########################################################################### 24 if(NOT WIN32) 25 message(FATAL_ERROR "This file should be included on Windows platform only") 26 endif() 27 28 if(MINGW) 29 set(HAVE_BASENAME 1) 30 set(HAVE_BOOL_T 1) # = HAVE_STDBOOL_H 31 set(HAVE_DIRENT_H 1) 32 set(HAVE_FTRUNCATE 1) 33 set(HAVE_GETTIMEOFDAY 1) 34 set(HAVE_LIBGEN_H 1) 35 set(HAVE_OPENDIR 1) 36 set(HAVE_SNPRINTF 1) 37 set(HAVE_STDBOOL_H 1) 38 set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size() 39 set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size() 40 set(HAVE_STRINGS_H 1) # wrapper to string.h 41 set(HAVE_SYS_PARAM_H 1) 42 set(HAVE_UNISTD_H 1) 43 set(HAVE_UTIME_H 1) # wrapper to sys/utime.h 44 else() 45 set(HAVE_DIRENT_H 0) 46 set(HAVE_FTRUNCATE 0) 47 set(HAVE_GETTIMEOFDAY 0) 48 set(HAVE_LIBGEN_H 0) 49 set(HAVE_OPENDIR 0) 50 set(HAVE_STRINGS_H 0) 51 set(HAVE_SYS_PARAM_H 0) 52 set(HAVE_UTIME_H 0) 53 if(MSVC) 54 set(HAVE_UNISTD_H 0) 55 set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size() 56 if(MSVC_VERSION GREATER_EQUAL 1600) 57 set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size() 58 else() 59 set(HAVE_STDINT_H 0) # detected by CMake internally in check_type_size() 60 endif() 61 if(MSVC_VERSION GREATER_EQUAL 1800) 62 set(HAVE_STDBOOL_H 1) 63 else() 64 set(HAVE_STDBOOL_H 0) 65 endif() 66 set(HAVE_BOOL_T "${HAVE_STDBOOL_H}") 67 if(MSVC_VERSION GREATER_EQUAL 1900) 68 set(HAVE_SNPRINTF 1) 69 else() 70 set(HAVE_SNPRINTF 0) 71 endif() 72 set(HAVE_BASENAME 0) 73 endif() 74 endif() 75 76 if((CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.9) OR 77 (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.6)) 78 # MinGW or clang-cl 79 set(HAVE_STDATOMIC_H 1) 80 set(HAVE_ATOMIC 1) 81 else() 82 set(HAVE_STDATOMIC_H 0) 83 set(HAVE_ATOMIC 0) 84 endif() 85 86 set(HAVE_ACCEPT4 0) 87 set(HAVE_ALARM 0) 88 set(HAVE_ARC4RANDOM 0) 89 set(HAVE_ARPA_INET_H 0) 90 set(HAVE_CLOSESOCKET 1) 91 set(HAVE_EVENTFD 0) 92 set(HAVE_FCNTL 0) 93 set(HAVE_FCNTL_H 1) 94 set(HAVE_FCNTL_O_NONBLOCK 0) 95 set(HAVE_FNMATCH 0) 96 set(HAVE_FREEADDRINFO 1) # Available in Windows XP and newer 97 set(HAVE_FSETXATTR 0) 98 set(HAVE_GETADDRINFO 1) # Available in Windows XP and newer 99 set(HAVE_GETEUID 0) 100 set(HAVE_GETHOSTBYNAME_R 0) 101 set(HAVE_GETHOSTBYNAME_R_3 0) 102 set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0) 103 set(HAVE_GETHOSTBYNAME_R_5 0) 104 set(HAVE_GETHOSTBYNAME_R_5_REENTRANT 0) 105 set(HAVE_GETHOSTBYNAME_R_6 0) 106 set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0) 107 set(HAVE_GETHOSTNAME 1) 108 set(HAVE_GETIFADDRS 0) 109 set(HAVE_GETPASS_R 0) 110 set(HAVE_GETPEERNAME 1) 111 set(HAVE_GETPPID 0) 112 set(HAVE_GETPWUID 0) 113 set(HAVE_GETPWUID_R 0) 114 set(HAVE_GETRLIMIT 0) 115 set(HAVE_GETSOCKNAME 1) 116 set(HAVE_GLIBC_STRERROR_R 0) 117 set(HAVE_GMTIME_R 0) 118 set(HAVE_IFADDRS_H 0) 119 set(HAVE_INET_NTOP 0) 120 set(HAVE_INET_PTON 0) 121 set(HAVE_IOCTLSOCKET 1) 122 set(HAVE_IOCTLSOCKET_CAMEL 0) 123 set(HAVE_IOCTLSOCKET_CAMEL_FIONBIO 0) 124 set(HAVE_IOCTLSOCKET_FIONBIO 1) 125 set(HAVE_IOCTL_FIONBIO 0) 126 set(HAVE_IOCTL_SIOCGIFADDR 0) 127 set(HAVE_IO_H 1) 128 set(HAVE_LINUX_TCP_H 0) 129 set(HAVE_LOCALE_H 1) 130 set(HAVE_MEMRCHR 0) 131 set(HAVE_MSG_NOSIGNAL 0) 132 set(HAVE_NETDB_H 0) 133 set(HAVE_NETINET_IN6_H 0) 134 set(HAVE_NETINET_IN_H 0) 135 set(HAVE_NETINET_TCP_H 0) 136 set(HAVE_NETINET_UDP_H 0) 137 set(HAVE_NET_IF_H 0) 138 set(HAVE_PIPE 0) 139 set(HAVE_PIPE2 0) 140 set(HAVE_POLL 0) 141 set(HAVE_POLL_H 0) 142 set(HAVE_POSIX_STRERROR_R 0) 143 set(HAVE_PWD_H 0) 144 set(HAVE_RECV 1) 145 set(HAVE_SELECT 1) 146 set(HAVE_SEND 1) 147 set(HAVE_SENDMMSG 0) 148 set(HAVE_SENDMSG 0) 149 set(HAVE_SETLOCALE 1) 150 set(HAVE_SETMODE 1) 151 set(HAVE_SETRLIMIT 0) 152 set(HAVE_SETSOCKOPT_SO_NONBLOCK 0) 153 set(HAVE_SIGACTION 0) 154 set(HAVE_SIGINTERRUPT 0) 155 set(HAVE_SIGNAL 1) 156 set(HAVE_SIGSETJMP 0) 157 set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1) 158 set(HAVE_SOCKET 1) 159 set(HAVE_SOCKETPAIR 0) 160 set(HAVE_STRDUP 1) 161 set(HAVE_STRERROR_R 0) 162 set(HAVE_STROPTS_H 0) 163 set(HAVE_STRUCT_SOCKADDR_STORAGE 1) 164 set(HAVE_STRUCT_TIMEVAL 1) 165 set(HAVE_SYS_EVENTFD_H 0) 166 set(HAVE_SYS_FILIO_H 0) 167 set(HAVE_SYS_IOCTL_H 0) 168 set(HAVE_SYS_POLL_H 0) 169 set(HAVE_SYS_RESOURCE_H 0) 170 set(HAVE_SYS_SELECT_H 0) 171 set(HAVE_SYS_SOCKIO_H 0) 172 set(HAVE_SYS_TYPES_H 1) 173 set(HAVE_SYS_UN_H 0) 174 set(HAVE_SYS_UTIME_H 1) 175 set(HAVE_TERMIOS_H 0) 176 set(HAVE_TERMIO_H 0) 177 set(HAVE_TIME_T_UNSIGNED 0) 178 set(HAVE_UTIME 1) 179 set(HAVE_UTIMES 0) 180 set(HAVE__SETMODE 1) 181 set(STDC_HEADERS 1) 182 183 # Types and sizes 184 185 set(HAVE_SIZEOF_SA_FAMILY_T 0) 186 set(HAVE_SIZEOF_SUSECONDS_T 0) 187 188 if(MINGW OR MSVC) 189 curl_prefill_type_size("INT" 4) 190 curl_prefill_type_size("LONG" 4) 191 curl_prefill_type_size("LONG_LONG" 8) 192 curl_prefill_type_size("__INT64" 8) 193 curl_prefill_type_size("CURL_OFF_T" 8) 194 # CURL_SOCKET_T, SIZE_T: 8 for _WIN64, 4 otherwise 195 # TIME_T: 8 for _WIN64 or UCRT or MSVC and not Windows CE, 4 otherwise 196 # Also 4 for non-UCRT 32-bit when _USE_32BIT_TIME_T is set. 197 # mingw-w64 sets _USE_32BIT_TIME_T unless __MINGW_USE_VC2005_COMPAT is explicit defined. 198 if(MSVC) 199 set(HAVE_SIZEOF_SSIZE_T 0) 200 set(HAVE_FILE_OFFSET_BITS 0) 201 curl_prefill_type_size("OFF_T" 4) 202 curl_prefill_type_size("ADDRESS_FAMILY" 2) 203 else() 204 # SSIZE_T: 8 for _WIN64, 4 otherwise 205 if(MINGW64_VERSION) 206 if(MINGW64_VERSION VERSION_GREATER_EQUAL 3.0) 207 set(HAVE_FILE_OFFSET_BITS 1) 208 curl_prefill_type_size("OFF_T" 8) 209 endif() 210 if(MINGW64_VERSION VERSION_GREATER_EQUAL 2.0) 211 curl_prefill_type_size("ADDRESS_FAMILY" 2) 212 else() 213 set(HAVE_SIZEOF_ADDRESS_FAMILY 0) 214 endif() 215 endif() 216 endif() 217 endif() 218 219 # Windows CE exceptions 220 221 if(WINCE) 222 set(HAVE_FREEADDRINFO 0) 223 set(HAVE_GETADDRINFO 0) 224 set(HAVE_LOCALE_H 0) 225 set(HAVE_SETLOCALE 0) 226 set(HAVE_SETMODE 0) 227 set(HAVE_SIGNAL 0) 228 set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 0) 229 curl_prefill_type_size("CURL_SOCKET_T" 4) 230 curl_prefill_type_size("TIME_T" 4) 231 curl_prefill_type_size("SIZE_T" 4) 232 if(MINGW32CE) 233 set(HAVE_STRTOK_R 0) 234 set(HAVE__SETMODE 0) 235 set(HAVE_FILE_OFFSET_BITS 0) 236 set(HAVE_SIZEOF_ADDRESS_FAMILY 0) 237 curl_prefill_type_size("SSIZE_T" 4) 238 curl_prefill_type_size("OFF_T" 4) 239 endif() 240 endif()