summaryrefslogtreecommitdiff
path: root/make/calcdep.pl
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-09-01 15:04:40 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-09-01 15:04:40 +0000
commit990e04bab51bf1c3771938b8f598272c1b31cdca (patch)
tree8b077d8d3326feeb6736f5eb1fa719103a8822d5 /make/calcdep.pl
parent8f8e244f4f350a53a2a84296a66468b7e5ac4a2b (diff)
Move dependency tracking from ./configure to Makefile
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11556 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'make/calcdep.pl')
-rwxr-xr-xmake/calcdep.pl23
1 files changed, 23 insertions, 0 deletions
diff --git a/make/calcdep.pl b/make/calcdep.pl
new file mode 100755
index 000000000..2b6742be3
--- /dev/null
+++ b/make/calcdep.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+use strict;
+BEGIN { push @INC, '..'; }
+use make::configure;
+
+my $file = shift;
+
+$file =~ /(.*)\.cpp$/ or die "Cannot process $file";
+my $base = $1;
+
+my $out = "$base.d";
+
+open IN, '<', $file or die "Could not read $file: $!";
+open OUT, '>', $out or die "Could not write $out: $!";
+
+my $cc_deps = qx($ENV{CC} $ENV{FLAGS} -MM $file);
+$cc_deps =~ s/.*?:\s*//;
+
+my $ext = $file =~ m#(modules|commands)/# ? '.so' : '.o';
+print OUT "$base$ext: $cc_deps";
+print OUT "\t@../make/unit-cc.pl \$(VERBOSE) $file $base$ext\n";
+print OUT "$base.d: $cc_deps";
+print OUT "\t../make/calcdep.pl $file\n";