blob: c99c69d28cd924bc7f573e82dc595bf341a31ac7 [file] [log] [blame]
#!/usr/bin/env perl
use strict;
my %seen = ();
# Generate dependency list for all 'priority' targets. These are targets a
# user is likely to build.
my @priority_targets = ( "openpower-pnor" );
foreach my $target (@priority_targets)
{
next if $seen{$target};
print "$target\n";
$seen{$target} = 1;
package_deps($target, 0);
}
# Generate dependency list for all other targets.
packages();
# @sub packages
# @brief Determine all the packages that can be built.
#
# Skip host-* (uninteresting) and target-* (buildroot special) packages.
sub packages
{
open TARGETS, "make --directory=`pwd`/buildroot O=`pwd`/output ".
"show-targets | sed 's/^make:.*//' |";
while (my $line = <TARGETS>)
{
chomp $line;
next if ($line eq "");
my @targets = split / /,$line;
foreach (@targets)
{
next if ($seen{$_});
next if ($_ =~ m/^host-/);
next if ($_ =~ m/^target-/);
print $_."\n";
$seen{$_} = 1;
package_deps($_, 0);
}
}
close TARGETS
}
# @sub package_deps
# @brief Collect children dependencies for a package.
sub package_deps
{
my $package = shift;
my $level = shift;
$package =~ s/-rebuild.*//; # Strip off -rebuild* subpass.
$package =~ s/linux[0-9]*/linux/; # Strip off linux version.
open DEPENDS, "make --directory=`pwd`/buildroot O=`pwd`/output ".
"$package-show-depends | sed 's/^make:.*//' |";
while (my $line = <DEPENDS>)
{
chomp $line;
next if ($line eq "");
my @depends = split / /,$line;
foreach my $depend (@depends)
{
foreach (0..$level)
{
print " ";
}
print $depend."\n";
next if ($seen{$depend});
$seen{$depend} = 1;
package_deps($depend, $level+1);
}
}
close DEPENDS;
}