- my $hasdeps = 0;
- my %deplines;
- foreach my $deps (@srcdeps) {
- my $idx;
- my $condition;
- my $prefix = "";
- my $suffix = "";
- my $deptype = "";
-
- if ($deps =~ /^(.+):(.+)/) {
- $condition = $1;
- $deps = $2;
- }
- if ($deps =~ /^(.+)\/(.+)/) {
- $deps = $1;
- $deptype = $2;
- $suffix = "/$2";
- }
-
- my $pkg_dep = $package{$deps};
- my @deps;
-
- if ($pkg_dep->{vdepends}) {
- @deps = @{$pkg_dep->{vdepends}};
- } else {
- @deps = ($deps);
- }
-
- foreach my $dep (@deps) {
- $pkg_dep = $package{$deps};
- if (defined $pkg_dep->{src}) {
- unless (!$deptype || grep { $_ eq $deptype } @{$srcpackage{$pkg_dep->{src}}{buildtypes}}) {
- warn sprintf "WARNING: Makefile '%s' has a build dependency on '%s/%s' but '%s' does not implement a '%s' build type\n",
- $pkg->{makefile}, $pkg_dep->{src}, $deptype, $pkg_dep->{makefile}, $deptype;
- next;
- }
- $idx = $pkg_dep->{subdir}.$pkg_dep->{src};
- } elsif (defined($srcpackage{$dep})) {
- $idx = $subdir{$dep}.$dep;
- }
-
- if ($idx) {
- $idx .= $suffix;
-
- my $depline;
- next if $pkg->{src} eq $pkg_dep->{src}.$suffix;
- next if $dep{$condition.":".$pkg->{src}."->".$idx};
- next if $dep{$pkg->{src}."->($dep)".$idx} and $pkg_dep->{vdepends};
- my $depstr;
-
- if ($pkg_dep->{vdepends}) {
- $depstr = "\$(if \$(CONFIG_PACKAGE_$dep),\$(curdir)/$idx/compile)";
- $dep{$pkg->{src}."->($dep)".$idx} = 1;
- } else {
- $depstr = "\$(curdir)/$idx/compile";
- $dep{$pkg->{src}."->".$idx} = 1;
- }
- $depline = get_conditional_dep($condition, $depstr);
- if ($depline) {
- $deplines{$depline}++;
- }
- }
+ foreach my $suffix (sort keys %deplines) {
+ my $depline = join(" ", sort keys %{$deplines{$suffix}});
+ if ($depline) {
+ $line .= sprintf "\$(curdir)/%s/compile += %s\n", $src->{path}.$suffix, $depline;