summaryrefslogtreecommitdiff
path: root/make/unit-cc.pl
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2010-01-17 03:17:25 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2010-01-17 03:17:25 +0000
commit88b9ecb6b34d268f0761e6e961408871b6e91376 (patch)
tree48b0c305e29a251abee091e839dc402218579926 /make/unit-cc.pl
parent5de7651ebeee56e6deca4d5e357b22869719bb8f (diff)
PURE_STATIC improvements: Allow modules to be reloaded, generate linker arguments
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12276 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'make/unit-cc.pl')
-rwxr-xr-xmake/unit-cc.pl36
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;
+}