[2.6.30] export __cpuc_flush_dcache_page for ARM targets
[openwrt/svn-archive/archive.git] / scripts / metadata.pl
index e8850c937f94f884353ba6f7a5c7b77cdfe986f1..26d878cc9ed0d64685b2285f109c81e9e0f02ee5 100755 (executable)
@@ -165,6 +165,8 @@ sub target_config_features(@) {
                /cpiogz/ and $ret .= "\tselect USES_CPIOGZ\n";
                /fpu/ and $ret .= "\tselect HAS_FPU\n";
                /ramdisk/ and $ret .= "\tselect USES_INITRAMFS\n";
+               /powerpc64/ and $ret .= "\tselect powerpc64\n";
+               /nommu/ and $ret .= "\tselect NOMMU\n";
        }
        return $ret;
 }
@@ -223,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;
 }
@@ -413,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;
 
@@ -531,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;
@@ -547,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;
@@ -592,6 +620,9 @@ sub gen_package_mk() {
                if ($config) {
                        $pkg->{buildonly} and $config = "";
                        print "package-$config += $pkg->{subdir}$pkg->{src}\n";
+                       if ($pkg->{variant}) {
+                               print "\$(curdir)/$pkg->{subdir}$pkg->{src}/variants += \$(if $config,$pkg->{variant})\n"
+                       }
                        $pkg->{prereq} and print "prereq-$config += $pkg->{subdir}$pkg->{src}\n";
                }