Despite your skeptiscism, after some more digging together with Intrepid who enjoys messing with build problems, I appear to have found the exact spot of the problem. You see, here is the line in Config Config_heavy.pl for ActivePerl5.8.8:
lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -libpath:"C
+:\Perl\lib\CORE" -machine:x86'
And here is what is made of in in ActivePerl::Config:
_override("lddlflags", "-mdll");
which lists the option for the dynamic libraries, i.e. the DLLs made out of the XS modules.
Do you see anything missing? Well, actually, a lot is missing, but most importantly, the command line switch to include the library search directory "C:\Perl\lib\CORE" is not there any more.
So, with a bit of cleanup, i.e. poring the library path out of _orig_config instead of hardcoding it, I guess I have the most acceptable patch.
update I've made a more politically correct patch, which gets the (MSVC style) -libpath: parameter switches out of the original lddlflags setting, and replaces each with the gcc style -L switch for MinGW. I've tested it and it seems to work, even with quotes and backslashes in place.
_override("lddlflags", join " ", "-mdll",
map "-L$_", map /^-libpath:(.+)/,
_orig_conf("lddlflags") =~ /(?=\S)(?>[^"\s]+|"[^"]*")+/g);
update The code has been updated (from a simple split " ") so it can properly handle spaces embedded between quotes. |