mirror of
https://github.com/zeromq/libzmq.git
synced 2025-03-18 17:36:57 +00:00
Fix configure failure on 32-bit MSVC.
Windows libraries being checked (ws2_32, rpcrt4, iphlpapi) contain functions following stdcall convention. While on 64-bit platform it makes no difference, on 32-bit it does. For example, function WSAGetLastError is mangled by MSVC like "_WSAGetLastError@0". CMake checks if a function FUNC is present in a library by compiling a simple C source containing function definition "char FUNC()" and then calling it. Since stdcall functions are mangled in such a way that requires correct number of arguments (written after "@"), checking for a function with non-zero number of arguments will fail. That is why we check for functions which have zero arguments and we also force stdcall convention.
This commit is contained in:
parent
759790cadc
commit
279bcb2843
@ -117,10 +117,15 @@ check_include_files(windows.h ZMQ_HAVE_WINDOWS)
|
|||||||
check_include_files(sys/uio.h ZMQ_HAVE_UIO)
|
check_include_files(sys/uio.h ZMQ_HAVE_UIO)
|
||||||
check_include_files(sys/eventfd.h ZMQ_HAVE_EVENTFD)
|
check_include_files(sys/eventfd.h ZMQ_HAVE_EVENTFD)
|
||||||
|
|
||||||
check_library_exists(ws2_32 WSAStartup "" HAVE_WS2_32)
|
if(MSVC)
|
||||||
check_library_exists(ws2 WSAStartup "" HAVE_WS2)
|
# Force stdcall convention
|
||||||
check_library_exists(rpcrt4 UuidCreate "" HAVE_RPCRT4)
|
set(CMAKE_REQUIRED_FLAGS "/Gz")
|
||||||
check_library_exists(iphlpapi GetNetworkParams "" HAVE_IPHLAPI)
|
endif()
|
||||||
|
check_library_exists(ws2_32 WSAGetLastError "" HAVE_WS2_32)
|
||||||
|
check_library_exists(ws2 WSAGetLastError "" HAVE_WS2)
|
||||||
|
check_library_exists(rpcrt4 RpcErrorClearInformation "" HAVE_RPCRT4)
|
||||||
|
check_library_exists(iphlpapi GetAdapterOrderMap "" HAVE_IPHLAPI)
|
||||||
|
unset(CMAKE_REQUIRED_FLAGS)
|
||||||
|
|
||||||
check_cxx_symbol_exists(SO_PEERCRED sys/socket.h ZMQ_HAVE_SO_PEERCRED)
|
check_cxx_symbol_exists(SO_PEERCRED sys/socket.h ZMQ_HAVE_SO_PEERCRED)
|
||||||
check_cxx_symbol_exists(LOCAL_PEERCRED sys/socket.h ZMQ_HAVE_LOCAL_PEERCRED)
|
check_cxx_symbol_exists(LOCAL_PEERCRED sys/socket.h ZMQ_HAVE_LOCAL_PEERCRED)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user