Re: Conflict between standard headers and winsock(2).h

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2016-01-22 12:33, Marko Lindqvist wrote:
> When building a project on MSYS2 environment, my configure fails to
> find out that the winsock2.h is available there.
>  Simple AC_CHECK_HEADER() for winsock2.h fails, and so would many
> standard macros if it was to be included.  The reason for that failure
> is that while the standard headers (unistd.h in my case, though itself
> included from the very first stdio.h include already) are protected
> against conflicts with winsock stuff, they can do that only if they
> are included after winsock2.h.
> 
>  With a local macro I've confirmed that prepending '#include
> <winsock2.h>" to $ac_includes_default, when possible, does fix this.
> At least all the macros I were interested about were behaving
> correctly after that. Of course I have to call that macro of mine as
> early as possible so that it won't invalidate any tests that have been
> run on the assumption that <winsock2.h> is not included in the
> beginning.
> 
>  Is there more proper way to achieve this than directly prepending
> $ac_includes_default, or is there any plans for such support?

I have used something like the following for this situation:

AC_CHECK_HEADERS([ \
	foo1.h \
	foo2.h \
	etc.h \
	windows.h \
	winsock2.h \
	winsock.h \
	ws2tcpip.h \
	shlobj.h \
	wspiapi.h \
	], [], [], [
AC_INCLUDES_DEFAULT
#define WIN32_LEAN_AND_MEAN
#ifdef HAVE_WINDOWS_H
#include <windows.h>
#endif
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
#endif
#ifdef HAVE_WINSOCK_H
#include <winsock.h>
#endif
])

In practice, I'm sure you can skip winsock.h and I'm not sure this
solves your problem, but you might be able to adapt it...

Cheers,
Peter

_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
https://lists.gnu.org/mailman/listinfo/autoconf



[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux