vcpkg/ports/zeromq/zeromq-libzmq-4310-64e6d37ab8.diff

56 lines
1.7 KiB
Diff
Raw Normal View History

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6c983c6698..21bcd414a0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -15,6 +15,7 @@ include(CheckCSourceCompiles)
include(CheckCSourceRuns)
include(CMakeDependentOption)
include(CheckCXXSymbolExists)
+include(CheckStructHasMember)
include(CheckTypeSize)
include(FindThreads)
include(GNUInstallDirs)
@@ -495,8 +496,12 @@ endif()
if(NOT WIN32)
set(ZMQ_HAVE_IPC 1)
+ set(ZMQ_HAVE_STRUCT_SOCKADDR_UN 1)
else()
check_include_files("winsock2.h;afunix.h" ZMQ_HAVE_IPC)
+ if(ZMQ_HAVE_IPC)
+ check_struct_has_member("struct sockaddr_un" sun_path "winsock2.h;afunix.h" ZMQ_HAVE_STRUCT_SOCKADDR_UN)
+ endif()
endif()
# ##################### BEGIN condition_variable_t selection
diff --git a/builds/cmake/platform.hpp.in b/builds/cmake/platform.hpp.in
index 2d23e8b288..18064362fe 100644
--- a/builds/cmake/platform.hpp.in
+++ b/builds/cmake/platform.hpp.in
@@ -59,6 +59,7 @@
#cmakedefine ZMQ_HAVE_LIBBSD
#cmakedefine ZMQ_HAVE_IPC
+#cmakedefine ZMQ_HAVE_STRUCT_SOCKADDR_UN
#cmakedefine ZMQ_USE_BUILTIN_SHA1
#cmakedefine ZMQ_USE_NSS
diff --git a/src/windows.hpp b/src/windows.hpp
index 11c7581dee..24cce83d11 100644
--- a/src/windows.hpp
+++ b/src/windows.hpp
@@ -98,3 +98,13 @@ static inline int poll (struct pollfd *pfd, unsigned long nfds, int timeout)
#define snprintf(buffer_, count_, format_, ...) \
_snprintf_s (buffer_, count_, _TRUNCATE, format_, __VA_ARGS__)
#endif
+
+// Workaround missing struct sockaddr_un in afunix.h.
+// Fix #3949.
+#if defined(ZMQ_HAVE_IPC) && !defined(ZMQ_HAVE_STRUCT_SOCKADDR_UN)
+struct sockaddr_un
+{
+ ADDRESS_FAMILY sun_family; /* AF_UNIX */
+ char sun_path[108]; /* pathname */
+};
+#endif