]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - make/unit-cc.pl
Mark +P mode as oper-only now that it no longer requires an explicit permission string
[user/henk/code/inspircd.git] / make / unit-cc.pl
index 5110037ace2ce851c59980fb1b749aa05d1e3d8a..489b46ff93eada94a75d5d28159dc62db0a52444 100755 (executable)
@@ -1,21 +1,32 @@
 #!/usr/bin/perl
 use strict;
 use warnings;
-BEGIN { push @INC, '..'; }
+BEGIN { push @INC, $ENV{SOURCEPATH}; }
 use make::configure;
 
-my $file = shift;
+chdir $ENV{BUILDPATH};
+
+my $out = shift;
 my $verbose;
 
-if ($file =~ /^-/) {
-       $_ = $file;
-       $file = shift;
+if ($out =~ /^-/) {
+       $_ = $out;
+       $out = shift;
        $verbose = /v/;
+       if (/f/) {
+               do_static_find(@ARGV);
+               exit;
+       }
+       if (/l/) {
+               do_static_link(@ARGV);
+               exit;
+       }
 }
 
-my $out = shift;
+my $file = shift;
 
-my $cflags = nopedantic($file) ? $ENV{NICEFLAGS} : $ENV{FLAGS};
+my $cflags = $ENV{CXXFLAGS};
+$cflags =~ s/ -pedantic// if nopedantic($file);
 $cflags .= ' ' . getcompilerflags($file);
 
 my $flags;
@@ -29,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;
+}