[perl #127556] update installperl to new location of W32 libperl link lib
authorDaniel Dragan <bulk88@hotmail.com>
Thu, 18 Feb 2016 00:15:39 +0000 (11:15 +1100)
committerTony Cook <tony@develop-help.com>
Thu, 18 Feb 2016 00:16:08 +0000 (11:16 +1100)
commit bf543eaf90 made the Win32 GCC or VC linkers produce
[lib]perl[5xx].[a/lib] in the /lib/CORE dir to reduce the prereq recipie
lines needing to run until XS modules can be built ("Extensions" which
builds all DLL XS modules is the longest running target and every effort
should be made for it to be started sooner by the make tool in parallel
build). The file is now made in /lib/CORE, previously it was made in root
and xcopy-ed to /lib/CORE in the same target that built the file. xcopy is
a seperate process run so was remove in that commit.

installperl doesn't use uninstalled /lib/CORE to determine the contents of
installed /lib/CORE (maybe that is a bug or bad design?), so the linking
lib was not being installed after a "[g/d]make install" making it
impossible to compile XS code on Win32 Perl. Change installperl
to look for the linking lib in /lib/CORE on Win32 and not in root. Even
though the nmake makefile still does the XCOPY since it is older/less
maintained, the installperl code still works since the root and /lib/CORE
files are identical on the nmake build and built in the same target.

installperl

index 5ea37be..f4d850b 100755 (executable)
@@ -373,6 +373,8 @@ elsif ($Is_Cygwin) { # On Cygwin symlink it to CORE to make Makefile happy
     ( copy("$installbin/$libperl", $coredll) &&
       push(@corefiles, $instcoredll)
     )
+} elsif ($Is_W32) {
+    @corefiles = <*.h>;
 } else {
     # [als] hard-coded 'libperl' name... not good!
     @corefiles = <*.h libperl*.* perl*$Config{lib_ext}>;
@@ -393,6 +395,13 @@ foreach my $file (@corefiles) {
     }
 }
 
+if ($Is_W32) { #linking lib isn't made in root but in CORE on Win32
+    @corefiles = <lib/CORE/libperl*.* lib/CORE/perl*$Config{lib_ext}>;
+    my $dest;
+    copy_if_diff($_,($dest = $installarchlib.substr($_,3))) &&
+       chmod($NON_SO_MODE, $dest) foreach @corefiles;
+}
+
 # Install main perl executables
 # Make links to ordinary names if installbin directory isn't current directory.