You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
956 B
46 lines
956 B
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
|
|
my $deps = {};
|
|
for my $line (split /\n/, `grep '^#include "' *.cpp *.h`)
|
|
{
|
|
if ($line =~ /^([^:]+):\#include "([^"]+)"/s)
|
|
{
|
|
$deps->{$1}->{$2} = 1;
|
|
}
|
|
}
|
|
|
|
my $added;
|
|
do
|
|
{
|
|
$added = 0;
|
|
for my $file (keys %$deps)
|
|
{
|
|
for my $dep (keys %{$deps->{$file}})
|
|
{
|
|
if ($deps->{$dep})
|
|
{
|
|
for my $subdep (keys %{$deps->{$dep}})
|
|
{
|
|
if (!$deps->{$file}->{$subdep})
|
|
{
|
|
$added = 1;
|
|
$deps->{$file}->{$subdep} = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} while ($added);
|
|
|
|
for my $file (sort keys %$deps)
|
|
{
|
|
if ($file =~ /\.cpp$/)
|
|
{
|
|
my $obj = $file;
|
|
$obj =~ s/\.cpp$/.o/s;
|
|
print "$obj: $file ".join(" ", sort keys %{$deps->{$file}})."\n";
|
|
print "\tg++ \$(CXXFLAGS) -c -o \$\@ \$\<\n";
|
|
}
|
|
}
|
|
|