On 1/11/22 08:14, Alexandre Julliard wrote:
Zebediah Figura zfigura@codeweavers.com writes:
From: Alexandre Julliard julliard@winehq.org
This removes the ability to use Windows sockets on Unix.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52250 Signed-off-by: Zebediah Figura zfigura@codeweavers.com
Extended from the original revision to include all headers that interpret USE_WS_PREFIX, not just the main socket ones. Note that in particular inaddr.h can be included by iphlpapi.h without requiring winsock.h or winsock2.h.
This breaks non-Mingw builds. We could change all the places that include winsock2.h before msvcrt headers but that's not a great solution...
clang -m64 -c -o dlls/dhcpcsvc/tests/dhcpcsvc.o ../wine/dlls/dhcpcsvc/tests/dhcpcsvc.c -Idlls/dhcpcsvc/tests \ -I../wine/dlls/dhcpcsvc/tests -Iinclude -I../wine/include -I../wine/include/msvcrt -D__WINESRC__ \ -D_MSVCR_VER=0 -fPIC -fasynchronous-unwind-tables -D_WIN32 -fno-builtin -fshort-wchar -mabi=ms \ -Wall -pipe -fcf-protection=none -fno-stack-protector -fno-strict-aliasing \ -Wdeclaration-after-statement -Wempty-body -Wignored-qualifiers -Winit-self -Wno-pragma-pack \ -Wstrict-prototypes -Wtype-limits -Wvla -Wwrite-strings -Wpointer-arith -gdwarf-4 -g -O2 -Wno-enum-conversion -Wno-sometimes-uninitialized -Wno-ignored-attributes -Wno-array-bounds -Wno-absolute-value -Wno-incompatible-pointer-types ../wine/dlls/dhcpcsvc/tests/dhcpcsvc.c:33:37: error: use of undeclared identifier 'AF_UNSPEC' err = GetAdaptersAddresses( AF_UNSPEC, GAA_FLAG_SKIP_ANYCAST | GAA_FLAG_SKIP_MULTICAST | ^ 1 error generated. make: *** [Makefile:61889: dlls/dhcpcsvc/tests/dhcpcsvc.o] Error 1
Ah, I didn't realize that __WINE_USE_MSVCRT was a symbol defined by the msvcrt headers. I see a few potential solutions for this:
* define __WINE_USE_MSVCRT via winegcc and configure instead,
* use __MSVCRT__ instead, which already is? It's not clear to me the exact semantics of this symbol, though; it seems to have some meaning outside of Wine?
* just append "&& !defined(__WINESRC__)" in the condition in this patch, which doesn't seem great;
* include msvcrt headers in winsock headers; this seems like probably a bad idea.
Do any of these seem like a best solution, or are there reasons one or more won't work that I haven't anticipated?