Re: [crossfire] [PATCH] Crossfire client linking fails in trunk
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 08/12/2014 03:12, Tolga Dalman wrote: >> Actually, the current `configure` script already adds >> "-std=gnu99" or some variant thereof behind your back. While >> getaddrinfo(3) is a POSIX extension, it is still relatively >> portable. On Windows, this issue is taken care of with a few >> preprocessor definitions. > > What configure script ?? I just did > > $ mkdir build; cd build; cmake ..; make The `configure` script from Autotools, not CMake. > Yes, replacing std=c99 by std=gnu99 defines the necessary POSIX > extension macros and, thus, fixes all errors. If the code compiles correctly using "-std=gnu99", then use it. While portability is definitely a desirable, it's probably better done along with some other massive change (i.e. GIO networking). Thanks, Kevin Zheng -BEGIN PGP SIGNATURE- Version: GnuPG v2 iQEcBAEBAgAGBQJT68VnAAoJEOrPD3bCLhCQLG4IAKmxxcI6c1X14iG3iGqkn0XB 7nTchsmUiDdM0wyhxxUOAjdw0GG6Hx474yR1nh1wZwQkmiVHYxQbGV7fpVrGnPXx IouDiTBH2ZSlmfxVZVMrXhwUy3bmcaXTTZHG07jCMduQvsZZFg7pa7mm5gz9qg/3 zFegVmm/sPLLxUNR8ClqFLNEXZB1VXCmgtT8t2rCmoe7qCcnUc7Rq0Gqp0coEVt7 GoHWlsvTsawwcUTSoU5wJzv9gKwmflW0xD0wZ/hEBhxW3lpOfT2OK9fpfMdxyYly ggYbKL2+6aqqsygg+FwvGYYGdKtCkIFEymXVyCsoZlxH4aKgOQ8Tnz/f1Ald5yo= =jguB -END PGP SIGNATURE- ___ crossfire mailing list crossfire@metalforge.org http://mailman.metalforge.org/mailman/listinfo/crossfire
Re: [crossfire] [PATCH] Crossfire client linking fails in trunk
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 08/12/2014 04:42 AM, Kevin Zheng wrote: > On 08/11/2014 14:16, Tolga Dalman wrote: >> Naturally, I would compile with -std=gnu99, but that's not a portable >> solution :) > > Actually, the current `configure` script already adds "-std=gnu99" or some > variant thereof behind your back. While getaddrinfo(3) is a POSIX > extension, it is still relatively portable. On Windows, this issue is taken > care of with a few preprocessor definitions. What configure script ?? I just did $ mkdir build; cd build; cmake ..; make > It may not even be this problem at all. I need to go take a closer look at > the code; it may be just that we're missing a header file. > >> /home/tdalman/src/crossfire/client/trunk/common/client.c:497:5: warning: >> implicit declaration of function 'freeaddrinfo' >> [-Wimplicit-function-declaration] freeaddrinfo(res); ^ > > Ditto, although I'm fairly certain this is due to a missing header. Yes, replacing std=c99 by std=gnu99 defines the necessary POSIX extension macros and, thus, fixes all errors. -BEGIN PGP SIGNATURE- Version: GnuPG v2 iQEcBAEBAgAGBQJT6cxsAAoJEATLYSm2cxP9yzAH/2186LXDDXT65vVDw8Gt6Fol QeVls90TagNp75bXx5YARTO2gaFi+s8QUBnm5LafIVQZqY7wTn5tq1sc70q7CA7l BFzGKaKmtaB0iUVtrPM6GGPSf6jTK6g2xIhvcwHMgXj435bVeMlKk2VK3jMAzIQ5 l1xmpaEYlqFkuZdHaEj221o2+VM6XTN+9YV7MUwq3Xu0qbhBO+PNYWSzN3NCFIC9 zfhXcbTsPph60GIVLpI2un6SXiwMI/qAuXY7UJhBTlYbImLDtTxJUlB20qCuUpFl gMcdnQJlVq3GQgmLluQT3nzt7STUiDKotwnKGaaohMwMwTePrYwuLjuBpYtK30I= =L3xX -END PGP SIGNATURE- ___ crossfire mailing list crossfire@metalforge.org http://mailman.metalforge.org/mailman/listinfo/crossfire
Re: [crossfire] [PATCH] Crossfire client linking fails in trunk
Hi Tolga, Sorry for the follow-up. On 08/11/2014 14:16, Tolga Dalman wrote: > /home/tdalman/src/crossfire/client/trunk/common/client.c: In function > 'negotiate_connection': > /home/tdalman/src/crossfire/client/trunk/common/client.c:578:9: warning: > implicit declaration of function 'usleep' [-Wimplicit-function-declaration] > usleep(10*1000);/* 10 milliseconds */ > ^ > > is not included. I haven't had the opportunity to clean up the maze of #include's in the client source code. It appears that 'client.c' includes 'client.h', which in turn includes 'client-types.h'. This file includes conditionally, when HAVE_UNISTD_H is set (presumably for portability). How are you building the client? Which operating system/environment? Could you pastebin an entire copy of your build log? Thanks, Kevin Zheng ___ crossfire mailing list crossfire@metalforge.org http://mailman.metalforge.org/mailman/listinfo/crossfire
Re: [crossfire] [PATCH] Crossfire client linking fails in trunk
On 08/11/2014 14:16, Tolga Dalman wrote: > CMake is definitely the way to go. Unfortunately, it doesn't yet work > as expected. > > [ 7%] Building C object common/CMakeFiles/cfclient.dir/client.c.o > /home/tdalman/src/crossfire/client/trunk/common/client.c: In function > 'init_connection': > /home/tdalman/src/crossfire/client/trunk/common/client.c:344:21: error: > storage size of 'hints' isn't known > struct addrinfo hints; > ^ > > A quick analysis shows the reason explained here: > > https://stackoverflow.com/questions/12024703/why-cant-getaddrinfo-be-found-when-compiling-with-gcc-and-std-c99 > > Naturally, I would compile with -std=gnu99, but that's not a portable > solution :) Actually, the current `configure` script already adds "-std=gnu99" or some variant thereof behind your back. While getaddrinfo(3) is a POSIX extension, it is still relatively portable. On Windows, this issue is taken care of with a few preprocessor definitions. In the distant future I may rewrite parts of the client to use the GLib networking routines, which is portable thanks to the library. It may not even be this problem at all. I need to go take a closer look at the code; it may be just that we're missing a header file. > /home/tdalman/src/crossfire/client/trunk/common/client.c:497:5: warning: > implicit declaration of function 'freeaddrinfo' > [-Wimplicit-function-declaration] > freeaddrinfo(res); > ^ Ditto, although I'm fairly certain this is due to a missing header. > /home/tdalman/src/crossfire/client/trunk/common/client.c: In function > 'negotiate_connection': > /home/tdalman/src/crossfire/client/trunk/common/client.c:578:9: warning: > implicit declaration of function 'usleep' [-Wimplicit-function-declaration] > usleep(10*1000);/* 10 milliseconds */ > ^ > > is not included. Fixed locally but not committed yet; I want to do all the header fixes in one go. Thanks, Kevin Zheng ___ crossfire mailing list crossfire@metalforge.org http://mailman.metalforge.org/mailman/listinfo/crossfire
Re: [crossfire] [PATCH] Crossfire client linking fails in trunk
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 08/11/2014 04:24 PM, Kevin Zheng wrote: > On 08/11/2014 06:24, Tolga Dalman wrote: >> the attached patch fixes the client compilation on trunk. Thanks! > > Committed in r19602 with minor changes, thanks! Great! > Have you tried the CMake build system? I intend to support both Autotools > and CMake for the next release, but start to phase out the former in the > distant future. CMake is definitely the way to go. Unfortunately, it doesn't yet work as expected. [ 7%] Building C object common/CMakeFiles/cfclient.dir/client.c.o /home/tdalman/src/crossfire/client/trunk/common/client.c: In function 'init_connection': /home/tdalman/src/crossfire/client/trunk/common/client.c:344:21: error: storage size of 'hints' isn't known struct addrinfo hints; ^ A quick analysis shows the reason explained here: https://stackoverflow.com/questions/12024703/why-cant-getaddrinfo-be-found-when-compiling-with-gcc-and-std-c99 Naturally, I would compile with -std=gnu99, but that's not a portable solution :) /home/tdalman/src/crossfire/client/trunk/common/client.c:497:5: warning: implicit declaration of function 'freeaddrinfo' [-Wimplicit-function-declaration] freeaddrinfo(res); ^ Don't know, what this is. Probably a follow-up error from above. I also noticed that is not included first in this file - this could lead to further errors. /home/tdalman/src/crossfire/client/trunk/common/client.c: In function 'negotiate_connection': /home/tdalman/src/crossfire/client/trunk/common/client.c:578:9: warning: implicit declaration of function 'usleep' [-Wimplicit-function-declaration] usleep(10*1000);/* 10 milliseconds */ ^ is not included. Best regards Tolga Dalman -BEGIN PGP SIGNATURE- Version: GnuPG v2 iQEcBAEBAgAGBQJT6RaUAAoJEATLYSm2cxP9QYAH/RkhjqaAPkKPe6fsrHCLukwc 2NCzKgE5tSg31V2bKZ1MSTs9QUoA7nT5W76pl0xkwJEcPvGkxWTUbHsI8y6Q7qqx BcdqAxpT/lwUaMOjzSLP7KxkFPXEYKCYxm6qDkopMBLT/dK0MvKwohu5EYMPkNcO nlLaCTfRLN11O4lWT/T7iW/0h11cB2qpLl6u9FkPqZgNBbsiXKeOIFCUrJLiAI6G yo27jrg/tj1YLbiUKsD3GwA49oUUFswDwteu1g/dRH7t58d/2pImtrSmtWpwN782 pZ5BY+WWcuRmtfR4b2/aPcXsUmFL4RQGnXXLB0NXVrkUXXfmLqwRHCOkdMv20Q4= =1Q5L -END PGP SIGNATURE- ___ crossfire mailing list crossfire@metalforge.org http://mailman.metalforge.org/mailman/listinfo/crossfire
Re: [crossfire] [PATCH] Crossfire client linking fails in trunk
On 08/11/2014 06:24, Tolga Dalman wrote: > the attached patch fixes the client compilation on trunk. Thanks! Committed in r19602 with minor changes, thanks! Have you tried the CMake build system? I intend to support both Autotools and CMake for the next release, but start to phase out the former in the distant future. Thanks, Kevin Zheng ___ crossfire mailing list crossfire@metalforge.org http://mailman.metalforge.org/mailman/listinfo/crossfire