Ok, try to make shfs work with 2.6.19, raw fixes, so might need better reading of...
[openwrt.git] / scripts / gen_target_mk.pl
index 52f2a5c..613c35b 100755 (executable)
@@ -10,6 +10,7 @@ use strict;
 
 my @target;
 my $target;
+my $profile;
 
 while (<>) {
        chomp;
@@ -17,18 +18,15 @@ while (<>) {
                $target = {
                        id => $1,
                        board => $2,
-                       kernel => $3
+                       kernel => $3,
+                       profiles => []
                };
                push @target, $target;
        };
        /^Target-Name:\s*(.+)\s*$/ and $target->{name} = $1;
        /^Target-Path:\s*(.+)\s*$/ and $target->{path} = $1;
        /^Target-Arch:\s*(.+)\s*$/ and $target->{arch} = $1;
-       /^Target-Features:\s*(.+)\s*$/ and do {
-               my $f = [];
-               $target->{features} = $f;
-               @$f = split /\s+/, $1;
-       };
+       /^Target-Features:\s*(.+)\s*$/ and $target->{features} = [ split(/\s+/, $1) ];
        /^Target-Description:/ and do {
                my $desc;
                while (<>) {
@@ -40,6 +38,17 @@ while (<>) {
        /^Linux-Version:\s*(.+)\s*$/ and $target->{version} = $1;
        /^Linux-Release:\s*(.+)\s*$/ and $target->{release} = $1;
        /^Linux-Kernel-Arch:\s*(.+)\s*$/ and $target->{karch} = $1;
+       /^Default-Packages:\s*(.+)\s*$/ and $target->{packages} = [ split(/\s+/, $1) ];
+       /^Target-Profile:\s*(.+)\s*$/ and do {
+               $profile = {
+                       id => $1,
+                       name => $1,
+                       packages => []
+               };
+               push @{$target->{profiles}}, $profile;
+       };
+       /^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1;
+       /^Target-Profile-Packages:\s*(.*)\s*$/ and $profile->{packages} = [ split(/\s+/, $1) ];
 }
 
 @target = sort {
@@ -47,19 +56,33 @@ while (<>) {
 } @target;
 
 foreach $target (@target) {
+       my ($profiles_def, $profiles_eval);
        my $conf = uc $target->{kernel}.'_'.$target->{board};
        $conf =~ tr/\.-/__/;
-       print <<EOF
+       
+       foreach my $profile (@{$target->{profiles}}) {
+               $profiles_def .= "
+  define Profile/$conf\_$profile->{id}
+    ID:=$profile->{id}
+    NAME:=$profile->{name}
+    PACKAGES:=".join(" ", @{$profile->{packages}})."
+  endef";
+  $profiles_eval .= "
+\$(eval \$(call Profile,$conf\_$profile->{id}))"
+       }
+       print "
 ifeq (\$(CONFIG_LINUX_$conf),y)
   define Target
     KERNEL:=$target->{kernel}
     BOARD:=$target->{board}
+    BOARDNAME:=$target->{name}
     LINUX_VERSION:=$target->{version}
     LINUX_RELEASE:=$target->{release}
     LINUX_KARCH:=$target->{karch}
-  endef
-endif
+    DEFAULT_PACKAGES:=".join(" ", @{$target->{packages}})."
+  endef$profiles_def
+endif$profiles_eval
 
-EOF
+"
 }
 print "\$(eval \$(call Target))\n";
This page took 0.023191 seconds and 4 git commands to generate.