KDE/kdelibs

Paulo Jorge Guedes Paulo.Guedes at artelecom.pt
Wed Apr 5 12:42:31 CEST 2006


> -----Original Message-----
> From: Peter Kümmel [mailto:syntheticpp at gmx.net]
> Sent: quinta-feira, 16 de Fevereiro de 2006 20:03
> To: kde-buildsystem at kde.org
> Subject: Re: KDE/kdelibs
> 
> Paulo Jorge Guedes wrote:
> >> -----Original Message-----
> >> From: Paulo Jorge Guedes [mailto:Paulo.Guedes at artelecom.pt]
> >> Sent: quinta-feira, 16 de Fevereiro de 2006 17:40
> >> To: kde-buildsystem at kde.org
> >> Subject: RE: KDE/kdelibs
> >
> >>>> Can you check if you have getaddrinfo and getnameinfo in your
> > system?
> >>> I don't have any. This fails:
> >>>
> >>> #if (_WIN32_WINNT >= 0x0501)
> >> For Windows XP it should be:
> >>
> >> _WIN32_WINNT>=0x0501
> >> WINVER>=0x0501
> >>
> >> I'm getting 1024 for both.
> >>
> >> So, I guess we need to include netsupp.cpp (which doesn't compile btw)
> >> also on win32 as there is a chance this functions are not available.
> >
> > Well, on windef.h:11:
> >
> > #ifndef WINVER
> > #define WINVER 0x0400
> > /*
> >  * If you need Win32 API features newer the Win95 and WinNT then you
> > must
> >  * define WINVER before including windows.h or any other method of
> > including
> >  * the windef.h header.
> >  */
> > #endif
> > #ifndef _WIN32_WINNT
> > #define _WIN32_WINNT WINVER
> >
> > Now, the question is, what is the best way to workaround this?
> >
> > Paulo
> 
> I've tested it with mingw 3.4.2, and here are no problems
> finding getaddrinfo:
> -- Looking for getaddrinfo
> -- Looking for getaddrinfo - found
> 
> To test just for getaddrinfo:
> (I think you know all the steps, I just wanna be sure)
> 
> 1. rm CMakeCache.txt
> 2. cmake -G"MinGW Makefiles" ../kdelibs/win
> 3. make
> 4. make install
> 5. rm CMakeCache.txt
> 6. cmake -G"MinGW Makefiles" ../kdelibs
> 
> now there is a config.h in there folder, delete the line below
> //Have symbol getaddrinfo
> and run 6. again, so you can test on getaddrinfo only.
> 
> 
> The detecting of getaddrinfo should be independent of _WIN32_WINNT and
> WINVER,
> because it is defined in ws2tcpip.h (the version of your mingw
> installation)
> and there are now (at least here) #ifdefs.

I changed computer and had to install MinGW again. It happens that I'm having the same problem again.

You say those are defined in ws2tcpip.h. I can only see a declaration, which of course depends on _WIN32_WINNT:

#if (_WIN32_WINNT >= 0x0501)
void WSAAPI freeaddrinfo (struct addrinfo*);
int WSAAPI getaddrinfo (const char*,const char*,const struct addrinfo*,
		        struct addrinfo**);
int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
		       char*,DWORD,int);
#else
/* FIXME: Need WS protocol-independent API helpers.  */
#endif

My _WIN32_WINNT value is 0x0400 by default so I got this:

-- Looking for getnameinfo
-- Looking for getnameinfo - not found.

The build error I got is an undefined reference so I guess the declaration is being found somewhere. Don't know if it would link right if it was found in the config process though.

Paulo



More information about the Kde-buildsystem mailing list