diff options
Diffstat (limited to 'scripts/gen_target_mk.pl')
-rwxr-xr-x | scripts/gen_target_mk.pl | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/scripts/gen_target_mk.pl b/scripts/gen_target_mk.pl index 52f2a5c06d..0e4d50a74c 100755 --- a/scripts/gen_target_mk.pl +++ b/scripts/gen_target_mk.pl @@ -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,8 +56,20 @@ while (<>) { } @target; foreach $target (@target) { + my ($profiles_def, $profiles_eval); my $conf = uc $target->{kernel}.'_'.$target->{board}; $conf =~ tr/\.-/__/; + + 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 <<EOF ifeq (\$(CONFIG_LINUX_$conf),y) define Target @@ -57,8 +78,8 @@ ifeq (\$(CONFIG_LINUX_$conf),y) LINUX_VERSION:=$target->{version} LINUX_RELEASE:=$target->{release} LINUX_KARCH:=$target->{karch} - endef -endif + endef$profiles_def +endif$profiles_eval EOF } |