diff options
Diffstat (limited to 'make/unit-cc.pl')
-rwxr-xr-x | make/unit-cc.pl | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/make/unit-cc.pl b/make/unit-cc.pl index 23a7dfb76..489b46ff9 100755 --- a/make/unit-cc.pl +++ b/make/unit-cc.pl @@ -13,6 +13,14 @@ if ($out =~ /^-/) { $_ = $out; $out = shift; $verbose = /v/; + if (/f/) { + do_static_find(@ARGV); + exit; + } + if (/l/) { + do_static_link(@ARGV); + exit; + } } my $file = shift; @@ -32,3 +40,31 @@ my $execstr = "$ENV{RUNCC} $flags -o $out $file"; print "$execstr\n" if $verbose; exec $execstr; exit 1; + +sub do_static_find { + my @flags; + for my $file (@ARGV) { + push @flags, getlinkerflags($file); + } + open F, '>', $out; + print F join ' ', @flags; + close F; +} + +sub do_static_link { + my $execstr = "$ENV{RUNCC} -o $out $ENV{CORELDFLAGS} $ENV{LDLIBS}"; + for (@ARGV) { + if (/\.cmd$/) { + open F, '<', $_; + my $libs = <F>; + chomp $libs; + $execstr .= ' '.$libs; + close F; + } else { + $execstr .= ' '.$_; + } + } + print "$execstr\n" if $verbose; + exec $execstr; + exit 1; +} |