build: implement support for selecting multiple device profiles

Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
Felix Fietkau 2016-05-22 22:02:31 +02:00
parent 9ae952cf8c
commit f8ebbbc568
3 changed files with 48 additions and 1 deletions

View file

@ -482,7 +482,7 @@ endef
ifdef IB
DEVICE_CHECK_PROFILE = $(filter $(1),$(PROFILE))
else
DEVICE_CHECK_PROFILE = $(CONFIG_TARGET_$(call target_conf,$(BOARD)$(if $(SUBTARGET),_$(SUBTARGET)))_$(1))
DEVICE_CHECK_PROFILE = $(CONFIG_TARGET_$(if $(CONFIG_TARGET_MULTI_PROFILE),DEVICE_)$(call target_conf,$(BOARD)$(if $(SUBTARGET),_$(SUBTARGET)))_$(1))
endif
define Device/Check

View file

@ -87,6 +87,7 @@ sub parse_target_metadata($) {
priority => 999,
packages => []
};
$1 =~ /^DEVICE_/ and $target->{has_devices} = 1;
push @{$target->{profiles}}, $profile;
};
/^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1;

View file

@ -102,6 +102,9 @@ EOF
if ($target->{arch} =~ /\w/) {
$confstr .= "\tselect $target->{arch}\n";
}
if ($target->{has_devices}) {
$confstr .= "\tselect HAS_DEVICES\n";
}
}
foreach my $dep (@{$target->{depends}}) {
@ -186,6 +189,21 @@ endchoice
choice
prompt "Target Profile"
EOF
foreach my $target (@target) {
my $profile = $target->{profiles}->[0];
$profile or next;
print <<EOF;
default TARGET_$target->{conf}_$profile->{id} if TARGET_$target->{conf}
EOF
}
print <<EOF;
config TARGET_MULTI_PROFILE
bool "Multiple devices"
depends on HAS_DEVICES
EOF
foreach my $target (@target) {
@ -215,9 +233,37 @@ EOF
print <<EOF;
endchoice
menu "Target Devices"
depends on TARGET_MULTI_PROFILE
EOF
foreach my $target (@target) {
my $profiles = $target->{profiles};
foreach my $profile (@{$target->{profiles}}) {
next unless $profile->{id} =~ /^DEVICE_/;
print <<EOF;
config TARGET_DEVICE_$target->{conf}_$profile->{id}
bool "$profile->{name}"
depends on TARGET_$target->{conf}
EOF
my @pkglist = merge_package_lists($target->{packages}, $profile->{packages});
foreach my $pkg (@pkglist) {
print "\tselect DEFAULT_$pkg\n";
$defaults{$pkg} = 1;
}
}
}
print <<EOF;
endmenu
config HAS_SUBTARGETS
bool
config HAS_DEVICES
bool
config TARGET_BOARD
string