Backport #3887
closedextension socket fails to compile with "two or more data types in declaration specifiers" under MinGW
Description
=begin
Hello,
This seems to be the same issue as the closed report #1292
make[1]: Entering directory /c/Users/Luis/Projects/oss/oci/rubyinstaller/sandbox/ruby18_build/ext/socket' gcc -I. -I../.. -I../../../../../../ruby -I../../../../../../ruby/ext/socket -DHAVE_SOCKADDR_STORAGE -DHAVE_INET_NTOA -DHAVE_GETSERVBYPORT -Dsocklen_t=int -DHAVE_WSACLEANUP -DHAVE_GETHOSTNAME -I. -g -O2 -DFD_SETSIZE=256 -c ../../../../../../ruby/ext/socket/socket.c In file included from ../../../../../../ruby/win32/win32.h:30:0, from ../../../../../../ruby/defines.h:183, from ../../../../../../ruby/ruby.h:37, from ../../../../../../ruby/ext/socket/socket.c:13: c:\users\luis\projects\oss\oci\rubyinstaller\sandbox\devkit\mingw\bin\../lib/gcc/mingw32/4.5.1/../../../../include/ws2tcpip.h:272:13: error: two or more data types in declaration specifiers make[1]: *** [socket.o] Error 1 make[1]: Leaving directory
/c/Users/Luis/Projects/oss/oci/rubyinstaller/sandbox/ruby18_build/ext/socket'
make: *** [all] Error 1
This is ruby_1_8_6 r29162 with #3883 patch applied.
Ruby configuration options were:
sh ../configure --enable-shared --with-winsock2 --disable-install-doc CFLAGS='-g -O2 -DFD_SETSIZE=256'
mkmf check for socklen_t:
have_type: checking for socklen_t... -------------------- no
"gcc -I../.. -I../../../../../../ruby -I../../../../../../ruby/ext/socket -I. -g -O2 -DFD_SETSIZE=256 -c conftest.c"
conftest.c:5:19: error: expected '=', ',', ';', 'asm' or 'attribute' before 'conftest_type'
conftest.c:6:22: error: expected '=', ',', ';', 'asm' or 'attribute' before 'conftestval'
checked program was:
/* begin /
1: #include <windows.h>
2: #include <winsock.h>
3:
4: /top/
5: typedef socklen_t conftest_type;
6: static conftest_type conftestval[sizeof(conftest_type)?1:-1];
/ end */
Checking rbconfig.rb COMMON_HEADERS:
CONFIG["COMMON_HEADERS"] = "windows.h winsock.h"
Which could indicate even --with-winsock2 has been defined, winsock.h is been forced.
Find attached the full file and generated Makefile, also config.log generated by the configure process.
GCC been used:
gcc (tdm-1) 4.5.1
Package provided by tdragon: http://tdm-gcc.tdragon.net/
=end
Files