diff options
Diffstat (limited to 'ACE/bin/vx_repo_link.pl')
-rwxr-xr-x | ACE/bin/vx_repo_link.pl | 217 |
1 files changed, 0 insertions, 217 deletions
diff --git a/ACE/bin/vx_repo_link.pl b/ACE/bin/vx_repo_link.pl deleted file mode 100755 index b4ec5f82ed8..00000000000 --- a/ACE/bin/vx_repo_link.pl +++ /dev/null @@ -1,217 +0,0 @@ -eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' - & eval 'exec perl -S $0 $argv:q' - if 0; - -# -# $Id$ -# - - -use FindBin; -use lib $FindBin::Bin; - -use diagnostics; -use Time::Local; -use File::Basename; -use File::Spec; -use FileHandle; -use Cwd; - -my $VXDEBUG = (defined $ENV{'VX_REPO_LINK_DEBUG'}) ? $ENV{'VX_REPO_LINK_DEBUG'} : 0; -my $ace_root = $ENV{'ACE_ROOT'}; -$ace_root =~ s/\//\\/g; -my $wind_base = $ENV{'WIND_BASE'}; -$wind_base =~ s/\//\\/g; -my $AR = $ENV{'AR'}; -my $RANLIB = $ENV{'RANLIB'}; -my @lib_arr; -my $lib; -my $curdir = cwd(); -$curdir =~ s/\//\\/g; - - -if ($VXDEBUG > 1) -{ - print STDERR "AR = ". $AR . "\n"; - print STDERR "ACE_ROOT = " . $ace_root . "\n"; - print STDERR "WIND_BASE = " . $wind_base, "\n"; - print STDERR "curdir = " . $curdir, "\n"; -} - -if ($VXDEBUG > 1) { - print STDERR "LINKLIBS are:\n"; -} - -while ($#ARGV >= 0) -{ - if ($ARGV[0] =~ /^-l/) { - $lib = shift; - $lib =~ s/^-l//; - if ($VXDEBUG > 1) { - print STDERR $ace_root."/lib/lib".$lib.".a\n"; - } - push @lib_arr, $lib; - } -} - -my @lib_registry = (); - -my $LINKLIBS = ""; - -my $libobj_dir = ".lib"; -system("if not exist ".$libobj_dir." mkdir ".$libobj_dir); -foreach $lib (@lib_arr) { - my $libname = $ace_root."\\lib\\lib".$lib.".a"; - if (-e $libname) { - if (! -e $libobj_dir."\\lib".$lib.".a") { - if ($VXDEBUG) { - print STDERR "Unpacking ".$lib."...\n"; - } - system("cmd /c if exist ".$libobj_dir."\\".$lib." del /q/f ".$libobj_dir."\\".$lib."\\*.*"); - system("cmd /c (mkdir ".$libobj_dir."\\".$lib." && cd ".$libobj_dir."\\".$lib." && ".$AR." -x ".$libname." && cd ".$curdir.")"); - - if ($VXDEBUG) { - print STDERR "Processing ".$lib."...\n"; - } - - my @rpo_arr = glob ($libobj_dir."\\".$lib."\\*.rpo"); - - if ($VXDEBUG > 1) { - print STDERR "Read #".$#rpo_arr." filenames\n"; - } - - my $line; - my $fh; - my $newfh; - my $module; - foreach $rpo (@rpo_arr) { - if ($VXDEBUG > 2) { - print STDERR $rpo."\n"; - } - $fh = new FileHandle(); - $newfh = new FileHandle(); - $module = basename($rpo, ".rpo"); - open ($newfh, '>', dirname($rpo)."\\".$module.".__rpo"); - open ($fh, '<', $rpo); - while (defined ($line = readline $fh)) { - if ($line =~ /^M /) { - $line =~ s/\//\\/g; - } - elsif ($line =~ /^D /) { - $line =~ s/(^D[ ])(.*ACE_wrappers)(.*)/${1}$ace_root${3}/; - $line =~ s/\//\\/g; - } - elsif ($line =~ /^A /) { - $line =~ s/('-I)([^ ]*ACE_wrappers)([']|[^']+')/${1}$ace_root${3}/g; - $line =~ s/('-I)([^ ]*Tornado[^\/\\]+)([']|[^']+')/${1}$wind_base${3}/g; - $line =~ s/('-o' )('.*')/'-o' '$curdir\/$libobj_dir\/$lib\/$module.o'/g; - $line =~ s/\//\\/g; - } - print $newfh $line; - } - close ($fh); - close ($newfh); - - system("cmd /c (del /f/q ".$rpo." && rename ".dirname($rpo)."\\".$module.".__rpo ".basename($rpo).")"); - } - - $fh = new FileHandle(); - open($fh, '<', $libobj_dir."\\".$lib."\\.prelink.spec"); - my $lnkcmd = readline($fh); - my $arcmd = readline($fh); - my $libdeps = readline($fh); - close($fh); - - $lib_registry[++$#lib_registry] = { - lib => $lib, - linkcmd => $lnkcmd, - arcmd => $arcmd, - libdeps => (defined $libdeps ? $libdeps : '') - }; - } - - $LINKLIBS = $LINKLIBS." ".$libobj_dir."\\lib".$lib.".a"; - } - else { - $LINKLIBS = "-l".$lib." ".$LINKLIBS; - } -} - -sub _find_lib_entry -{ - my $lib = shift; - foreach my $reg (@lib_registry) { - if ($reg->{lib} =~ /(^| )$lib( |$)/) { - return $reg; - } - } - return undef; -} - -sub _prelink_lib -{ - my $lentry = shift; - my $stack = shift; - my $lib = $lentry->{lib}; - my $lnkcmd = $lentry->{linkcmd}; - my $arcmd = $lentry->{arcmd}; - my @deps = split(' ', $lentry->{libdeps}); - - $lnkcmd =~ s/\n//g; - $arcmd =~ s/\n//g; - - if ($VXDEBUG) { - print STDERR "Prelink requested for ".$lib." (dependend on ".join(' ', @deps).")...\n"; - } - - # check dependencies - foreach my $dep (@deps) { - if ($VXDEBUG > 1) { - print STDERR " Checking dependency ".$dep."(stack = ".$stack.")...\n"; - } - if (($stack !~ /\<$dep\>/) && !(-e $libobj_dir."\\lib".$dep.".a")) { - my $le = _find_lib_entry ($dep); - if (defined $le) { - _prelink_lib ($le, $stack." <".$lib.">"); - } - } - } - - # prelink library - if ($VXDEBUG) { - print STDERR "Prelinking ".$lib."...\n"; - } - - my $objs = join(' ', glob ($libobj_dir."\\".$lib."\\*.o")); - my $libs = join(' ', glob ($libobj_dir."\\*.a")); - if ($VXDEBUG > 1) { - print STDERR " > cmd /c ".$lnkcmd." ".$libobj_dir."\\.prelink_lib ".$objs." ".$libs."\n"; - } - system("cmd /c ".$lnkcmd." ".$libobj_dir."\\.prelink_lib ".$objs." ".$libs); - system("cmd /c del /f/q ".$libobj_dir."\\.prelink_lib"); - - # build prelinked library - if ($VXDEBUG) { - print STDERR "Building prelinked lib ".$lib."...\n"; - } - - $arcmd =~ s/lib$lib/$libobj_dir\\lib$lib/; - #$arcmd = $AR." r ".$libobj_dir."\\lib".$lib.".a"; - $arcmd =~ s/ rv / rc /g; - if ($VXDEBUG > 1) { - print STDERR "cmd /c echo ".$objs." | ".$arcmd."\n"; - print STDERR "cmd /c (".$RANLIB." ".$libobj_dir."\\lib".$lib.".a && rmdir /s/q ".$libobj_dir."\\".$lib.")"."\n"; - } - system("cmd /c echo ".$objs." | ".$arcmd); - system("cmd /c (".$RANLIB." ".$libobj_dir."\\lib".$lib.".a && rmdir /s/q ".$libobj_dir."\\".$lib.")"); -} - -foreach my $libentry (@lib_registry) { - if (! -e $libobj_dir."\\lib".$libentry->{lib}.".a") { - _prelink_lib ($libentry, ""); - } -} - -print $LINKLIBS."\n"; - -1; |