summaryrefslogtreecommitdiff
path: root/make/unit-cc.pl
diff options
context:
space:
mode:
Diffstat (limited to 'make/unit-cc.pl')
-rwxr-xr-xmake/unit-cc.pl73
1 files changed, 37 insertions, 36 deletions
diff --git a/make/unit-cc.pl b/make/unit-cc.pl
index a494fb74b..a06d7b10f 100755
--- a/make/unit-cc.pl
+++ b/make/unit-cc.pl
@@ -19,32 +19,25 @@
#
+BEGIN {
+ push @INC, $ENV{SOURCEPATH};
+ require 5.10.0;
+}
+
use strict;
-use warnings;
-BEGIN { push @INC, $ENV{SOURCEPATH}; }
+use warnings FATAL => qw(all);
+
+use File::Spec::Functions qw(abs2rel);
+
use make::configure;
+use make::console;
chdir $ENV{BUILDPATH};
my $type = shift;
my $out = shift;
-my $verbose = ($type =~ s/-v$//);
-
-## BEGIN HACK: REMOVE IN 2.2!
-sub read_config_cache {
- my %cfg = ();
- open(CACHE, '../.config.cache') or return %cfg;
- while (my $line = <CACHE>) {
- next if $line =~ /^\s*($|\#)/;
- my ($key, $value) = ($line =~ /^(\S+)="(.*)"$/);
- $cfg{$key} = $value;
- }
- close(CACHE);
- return %cfg;
-}
-our %config = read_config_cache();
-## END HACK
+our %config = read_configure_cache();
if ($type eq 'gen-ld') {
do_static_find(@ARGV);
@@ -65,10 +58,19 @@ if ($type eq 'gen-ld') {
}
exit 1;
+sub message($$$) {
+ my ($type, $file, $command) = @_;
+ if ($ENV{INSPIRCD_VERBOSE}) {
+ print "$command\n";
+ } else {
+ print_format "\t<|GREEN $type:|>\t\t$file\n";
+ }
+}
+
sub do_static_find {
my @flags;
for my $file (@ARGV) {
- push @flags, getlinkerflags($file);
+ push @flags, get_property($file, 'LinkerFlags');
}
open F, '>', $out;
print F join ' ', @flags;
@@ -77,7 +79,7 @@ sub do_static_find {
}
sub do_static_link {
- my $execstr = "$ENV{RUNLD} -o $out $ENV{CORELDFLAGS}";
+ my $execstr = "$ENV{CXX} -o $out $ENV{CORELDFLAGS}";
for (@ARGV) {
if (/\.cmd$/) {
open F, '<', $_;
@@ -90,19 +92,23 @@ sub do_static_link {
}
}
$execstr .= ' '.$ENV{LDLIBS};
- print "$execstr\n" if $verbose;
+ message 'LINK', $out, $execstr;
exec $execstr;
}
sub do_core_link {
- my $execstr = "$ENV{RUNLD} -o $out $ENV{CORELDFLAGS} @_ $ENV{LDLIBS}";
- print "$execstr\n" if $verbose;
+ my $execstr = "$ENV{CXX} -o $out $ENV{CORELDFLAGS} @_ $ENV{LDLIBS}";
+ message 'LINK', $out, $execstr;
exec $execstr;
}
sub do_link_dir {
- my $execstr = "$ENV{RUNLD} -o $out $ENV{PICLDFLAGS} @_";
- print "$execstr\n" if $verbose;
+ my ($dir, $link_flags) = (shift, '');
+ for my $file (<$dir/*.cpp>) {
+ $link_flags .= get_property($file, 'LinkerFlags') . ' ';
+ }
+ my $execstr = "$ENV{CXX} -o $out $ENV{PICLDFLAGS} $link_flags @_";
+ message 'LINK', $out, $execstr;
exec $execstr;
}
@@ -111,27 +117,22 @@ sub do_compile {
my $flags = '';
my $libs = '';
- my $binary = $ENV{RUNCC};
if ($do_compile) {
- $flags = $ENV{CXXFLAGS};
- $flags =~ s/ -pedantic// if nopedantic($file);
- $flags .= ' ' . getcompilerflags($file);
+ $flags = $ENV{CORECXXFLAGS} . ' ' . get_property($file, 'CompileFlags');
- if ($file =~ m#(?:^|/)((?:m|cmd)_[^/. ]+)(?:\.cpp|/.*\.cpp)$#) {
- $flags .= ' -DMODNAME='.$1.'.so';
+ if ($file =~ m#(?:^|/)((?:m|core)_[^/. ]+)(?:\.cpp|/.*\.cpp)$#) {
+ $flags .= ' -DMODNAME=\\"'.$1.'\\"';
}
- } else {
- $binary = $ENV{RUNLD};
}
if ($do_link) {
$flags = join ' ', $flags, $ENV{PICLDFLAGS};
- $libs = join ' ', getlinkerflags($file);
+ $libs = get_property($file, 'LinkerFlags');
} else {
$flags .= ' -c';
}
- my $execstr = "$binary -o $out $flags $file $libs";
- print "$execstr\n" if $verbose;
+ my $execstr = "$ENV{CXX} -o $out $flags $file $libs";
+ message 'BUILD', abs2rel($file, "$ENV{SOURCEPATH}/src"), $execstr;
exec $execstr;
}