I'm trying to boot up my old Windows build environment, and I'm getting a new and exiting build error from master. Haven't looked at the code, but will do that tomorrow night if no one has done it before then:
#### Making static: modules/_Stdio Compiling modules/_Stdio/udp.c B:\dists\Pike-v7.9-snapshot\src\modules_Stdio\udp.c(393) : error C2065: 'IPPROTO_IPV6' : undeclared identifier B:\dists\Pike-v7.9-snapshot\src\modules_Stdio\udp.c(440) : error C2065: 'IPPROTO_IPV6' : undeclared identifier B:\dists\Pike-v7.9-snapshot\src\modules_Stdio\udp.c(504) : error C2065: 'IPPROTO_IPV6' : undeclared identifier B:\dists\Pike-v7.9-snapshot\src\modules_Stdio\udp.c(590) : error C2065: 'IPPROTO_IPV6' : undeclared identifier CL returned error code 2. WARNING: Compiler failure! Trying without optimization! B:\dists\Pike-v7.9-snapshot\src\modules_Stdio\udp.c(393) : error C2065: 'IPPROTO_IPV6' : undeclared identifier B:\dists\Pike-v7.9-snapshot\src\modules_Stdio\udp.c(440) : error C2065: 'IPPROTO_IPV6' : undeclared identifier B:\dists\Pike-v7.9-snapshot\src\modules_Stdio\udp.c(504) : error C2065: 'IPPROTO_IPV6' : undeclared identifier B:\dists\Pike-v7.9-snapshot\src\modules_Stdio\udp.c(590) : error C2065: 'IPPROTO_IPV6' : undeclared identifier CL returned error code 2. Compilation command was: /home/builder/dists/Pike-v7.9-snapshot/bin/smartlink rntcl -I. -I/home/builder/dists/Pike-v7.9-snapshot/src/modules/_Stdio -I/home/builder/dists/Pike-v7.9-snapshot/build/windows_xp-5.1.2600-i386 -I/home/builder/dists/Pike-v7.9-snapshot/src -Dpike_module_init=pike_module__Stdio_init -Dpike_module_exit=pike_module__Stdio_exit -DHAVE_CONFIG_H -g -MD -c /home/builder/dists/Pike-v7.9-snapshot/src/modules/_Stdio/udp.c -o udp.o make[6]: *** [udp.o] Error 2 make[5]: *** [all] Error 2 make[4]: *** [_Stdio] Error 1 make[3]: *** [static_module_objects] Error 1 make[2]: *** [module_objects] Error 2 make[1]: *** [_make_in_builddir] Error 2 make: *** [wix] Error 2
Perhaps you don't have IPv6 support? A very brief look into MSDN gives the following, which doens't really answer the question of if it existed before Vista.
" On the Microsoft Windows Software Development Kit (SDK) released for Windows Vista and later, the organization of header files has changed and IPPROTO_IPV6 level is defined in the Ws2def.h header file which is automatically included in the Winsock2.h header file. The IPPROTO_IPV6 socket options are defined in the Ws2ipdef.h header file which is automatically included in the Ws2tcpip.h header file. The Ws2def.h and Ws2ipdef.h header files should never be used directly. "
I'm trying to boot up my old Windows build environment, and I'm getting a new and exiting build error from master. Haven't looked at the code, but will do that tomorrow night if no one has done it before then:
#### Making static: modules/_Stdio Compiling modules/_Stdio/udp.c B:\dists\Pike-v7.9-snapshot\src\modules_Stdio\udp.c(393) : error C2065: 'IPPROTO_IPV6' : undeclared identifier
[...]
Interesting...
It looks like your headerfiles (probably <WinSock2.h>) define AF_INET6 but not IPPROTO_IPV6. This seems to indicate that your <WinSock2.h> is from 2000-02-02 (since my prerelease <WinSock2.h> from 2000-09-20 does contain it.
Hmm, as a side note, I just noticed that at least the WinSDK 6.0 <WinSock2.h> (or rather <ws2def.h> (of 2007-09-27) has replaced the #define of IPPROTO_IPV6 with a corresponding enum. The file also requires the #define _WIN32_WINNT to be >= 0x0501 to add the symbol to the enum. This means that the (quite a few) places in the Pike code that use #if defined(IPPROTO_IPV6) need to be fixed as well.
-- Peter Bortas
/grubba
The build image is Windows XP and VC9 (2008), so things are expected to be a bit out of date.
Hmm, as a side note, I just noticed that at least the WinSDK 6.0 <WinSock2.h> (or rather <ws2def.h> (of 2007-09-27) has replaced the #define of IPPROTO_IPV6 with a corresponding enum. The file also requires the #define _WIN32_WINNT to be >= 0x0501 to add the symbol to the enum. This means that the (quite a few) places in the Pike code that use #if defined(IPPROTO_IPV6) need to be fixed as well.
Yea, that seems to be what's in my headers (SDK 6.0A).
Hmm, as a side note, I just noticed that at least the WinSDK 6.0 <WinSock2.h> (or rather <ws2def.h> (of 2007-09-27) has replaced the #define of IPPROTO_IPV6 with a corresponding enum. The file also requires the #define _WIN32_WINNT to be >= 0x0501 to add the symbol to the enum. This means that the (quite a few) places in the Pike code that use #if defined(IPPROTO_IPV6) need to be fixed as well.
Yea, that seems to be what's in my headers (SDK 6.0A).
Try bumping the WIN32 API #defines in src/global.h to something suitable.
So I took a look at the code now. Moveing from 2K (0x501) to XP (0x501) APIs fixed the IPv6 problems.
The next problem is that ssize_t is not in the standard and is apparently not a thing in the MS SDK. Hacked around that by defining it as an int just to get past it.
The problem after that is that las.c breaks the preprocessor. The two ifdef PIKE_DEBUG blocks inside the WALK_NONFREE_BLOCKS macro does not get parsed, which obviously leaves an uncompilable mess. Bodged around that by simply removing the debug code.
Next up was some broken prototypes. The linker is not to happy about multiple defintions that don't match exactly and use DLL export.
And then we come to the modules:
#### Making static: modules/system make[3]: Circular include <- include dependency dropped. /home/builder/dists/Pike-v7.9-snapshot/bin/smartlink rntcl -DPIKE_SRC_ROOT="/home/builder/dists/Pike-v7.9-snapshot" -I. -I/home/builder/dists/Pike-v7.9-snapshot/src -DPIKE_CORE -g -MD -O2 -LARGEADDRESSAWARE main.o language.o security.o bignum.o pike_cpulib.o interpret.o constants.o cpp.o fdlib.o cyclic.o array.o backend.o callback.o encode.o docode.o dynamic_buffer.o dynamic_load.o error.o fd_control.o fsort.o gc.o hashtable.o lex.o multiset.o signal_handler.o pike_search.o pike_types.o pike_embed.o mapping.o block_allocator.o pike_memory.o module_support.o pikecode.o object.o opcodes.o operators.o pike_float.o port.o program.o rbtree.o rusage.o sprintf.o sscanf.o stralloc.o stuff.o threads.o version.o queue.o builtin.o iterators.o svalue.o las.o builtin_functions.o peep.o malloc.o crypt.o tmodule.o \ `cat modules/linker_options ` \ -lshell32 -lkernel32 -lws2_32 -ladvapi32 pike_icon.res -o pike.exe Creating library pike.exe.lib and object pike.exe.exp cl : Command line warning D9024 : unrecognized source file type 'B:\dists\Pike-v7.9-snapshot\build\windows_xp-5.1.2600-i386\modules\Gmp\module.a', object file assumed cl : Command line warning D9024 : unrecognized source file type 'B:\dists\Pike-v7.9-snapshot\build\windows_xp-5.1.2600-i386\modules_Stdio\module.a', object file assumed cl : Command line warning D9024 : unrecognized source file type 'B:\dists\Pike-v7.9-snapshot\build\windows_xp-5.1.2600-i386\modules_math\module.a', object file assumed cl : Command line warning D9024 : unrecognized source file type 'B:\dists\Pike-v7.9-snapshot\build\windows_xp-5.1.2600-i386\modules\system\module.a', object file assumed #### Making dynamic: modules/CommonLog make[6]: *** No rule to make target `/home/builder/dists/Pike-v7.9-snapshot/build/windows_xp-5.1.2600-i386/pike.lib', needed by `module.so'. Stop. make[5]: *** [all] Error 2 make[4]: *** [CommonLog] Error 1 make[3]: *** [dynamic_module_objects] Error 1 make[2]: *** [module_objects] Error 2 make[1]: *** [_make_in_builddir] Error 2 make: *** [wix] Error 2
Which is where I will stop for tonight.
I don't think there is anything in between. 0x502 would probably be a more proper value. It's the last one before 0x600 = Longhorn.
pike-devel@lists.lysator.liu.se