metadata: process dependencies for targets that have subtargets as well - hides the...
[openwrt.git] / scripts / metadata.pl
index 41147d0..ca00fca 100755 (executable)
@@ -225,25 +225,26 @@ EOF
        }
        if (@{$target->{subtargets}} > 0) {
                $confstr .= "\tselect HAS_SUBTARGETS\n";
-       } else {
+       }
+
+       if ($target->{arch} =~ /\w/) {
                $confstr .= "\tselect $target->{arch}\n";
-               foreach my $dep (@{$target->{depends}}) {
-                       my $mode = "depends";
-                       my $flags;
-                       my $name;
-
-                       $dep =~ /^([@\+\-]+)(.+)$/;
-                       $flags = $1;
-                       $name = $2;
-
-                       next if $name =~ /:/;
-                       $flags =~ /-/ and $mode = "deselect";
-                       $flags =~ /\+/ and $mode = "select";
-                       $flags =~ /@/ and $confstr .= "\t$mode $name\n";
-               }
-               $confstr .= $features;
        }
+       foreach my $dep (@{$target->{depends}}) {
+               my $mode = "depends";
+               my $flags;
+               my $name;
+
+               $dep =~ /^([@\+\-]+)(.+)$/;
+               $flags = $1;
+               $name = $2;
 
+               next if $name =~ /:/;
+               $flags =~ /-/ and $mode = "deselect";
+               $flags =~ /\+/ and $mode = "select";
+               $flags =~ /@/ and $confstr .= "\t$mode $name\n";
+       }
+       $confstr .= $features;
        $confstr .= "$help\n\n";
        print $confstr;
 }
@@ -415,8 +416,8 @@ sub mconf_depends {
        my @depends = @$depends;
        foreach my $depend (@depends) {
                my $m = "depends";
-               $depend =~ s/^([@\+]+)//;
-               my $flags = $1;
+               my $flags = "";
+               $depend =~ s/^([@\+]+)// and $flags = $1;
                my $vdep;
                my $condition = $parent_condition;
 
@@ -533,6 +534,30 @@ sub print_package_config_category($) {
        undef $category{$cat};
 }
 
+sub print_package_features() {
+       keys %features > 0 or return;
+       print "menu \"Package features\"\n";
+       foreach my $n (keys %features) {
+               my @features = sort { $b->{priority} <=> $a->{priority} or $a->{title} cmp $b->{title} } @{$features{$n}};
+               print <<EOF;
+choice
+       prompt "$features[0]->{target_title}"
+       default FEATURE_$features[0]->{name}
+EOF
+
+               foreach my $feature (@features) {
+                       print <<EOF;
+       config FEATURE_$feature->{name}
+               bool "$feature->{title}"
+               help
+$feature->{description}
+EOF
+               }
+               print "endchoice\n"
+       }
+       print "endmenu\n\n";
+}
+
 sub gen_package_config() {
        parse_package_metadata($ARGV[0]) or exit 1;
        print "menuconfig UCI_PRECONFIG\n\tbool \"Image configuration\"\n" if %preconfig;
@@ -549,6 +574,7 @@ sub gen_package_config() {
 EOF
                }
        }
+       print_package_features();
        print_package_config_category 'Base system';
        foreach my $cat (keys %category) {
                print_package_config_category $cat;
This page took 0.02585 seconds and 4 git commands to generate.