aboutsummaryrefslogtreecommitdiff
path: root/CMake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2020-04-13 09:20:36 -0400
committerDaniel Stenberg <daniel@haxx.se>2020-04-14 23:07:18 +0200
commit89f1e639f6a8d1f4dfb309b95f49028f6c826d47 (patch)
treece6ebd190d299810df19ecab1db8894c6de2c945 /CMake
parent42e18528f63ad9be46e179cca73bc2b0d2da9eeb (diff)
cmake: Avoid MSVC C4273 warnings in send/recv checks
We use `check_c_source_compiles` to check possible send/recv signatures by reproducing the forward declarations from system headers. On Windows the `winsock2.h` header adds dll linkage settings to its forward declaration. If ours does not match the compiler warns: warning C4273: 'recv': inconsistent dll linkage Add `WINSOCK_API_LINKAGE` to our test signatures when it is defined so that our linkage is consistent with that from `winsock2.h`. Fixes #4764 Closes #5232
Diffstat (limited to 'CMake')
-rw-r--r--CMake/OtherTests.cmake6
1 files changed, 6 insertions, 0 deletions
diff --git a/CMake/OtherTests.cmake b/CMake/OtherTests.cmake
index f3b92d566..7cec6da6d 100644
--- a/CMake/OtherTests.cmake
+++ b/CMake/OtherTests.cmake
@@ -63,6 +63,9 @@ if(curl_cv_recv)
unset(curl_cv_func_recv_test CACHE)
check_c_source_compiles("
${_source_epilogue}
+ #ifdef WINSOCK_API_LINKAGE
+ WINSOCK_API_LINKAGE
+ #endif
extern ${recv_retv} ${signature_call_conv}
recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4});
int main(void) {
@@ -127,6 +130,9 @@ if(curl_cv_send)
unset(curl_cv_func_send_test CACHE)
check_c_source_compiles("
${_source_epilogue}
+ #ifdef WINSOCK_API_LINKAGE
+ WINSOCK_API_LINKAGE
+ #endif
extern ${send_retv} ${signature_call_conv}
send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4});
int main(void) {