scripts/metadata.pl: add support for generating profile make code for the image builder
Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
		@@ -282,12 +282,7 @@ EOF
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	foreach my $target (@target) {
 | 
						foreach my $target (@target) {
 | 
				
			||||||
		my $profiles = $target->{profiles};
 | 
							my $profiles = $target->{profiles};
 | 
				
			||||||
		$target->{sort} and @$profiles = sort {
 | 
							foreach my $profile (@{$target->{profiles}}) {
 | 
				
			||||||
			$a->{priority} <=> $b->{priority} or
 | 
					 | 
				
			||||||
			$a->{name} cmp $b->{name};
 | 
					 | 
				
			||||||
		} @$profiles;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		foreach my $profile (@$profiles) {
 | 
					 | 
				
			||||||
			print <<EOF;
 | 
								print <<EOF;
 | 
				
			||||||
config TARGET_$target->{conf}_$profile->{id}
 | 
					config TARGET_$target->{conf}_$profile->{id}
 | 
				
			||||||
	bool "$profile->{name}"
 | 
						bool "$profile->{name}"
 | 
				
			||||||
@@ -912,11 +907,26 @@ sub gen_version_filtered_list() {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub gen_profile_mk() {
 | 
				
			||||||
 | 
						my $file = shift @ARGV;
 | 
				
			||||||
 | 
						my $target = shift @ARGV;
 | 
				
			||||||
 | 
						my @targets = parse_target_metadata($file);
 | 
				
			||||||
 | 
						foreach my $cur (@targets) {
 | 
				
			||||||
 | 
							next unless $cur->{id} eq $target;
 | 
				
			||||||
 | 
							print "PROFILE_NAMES = ".join(" ", map { $_->{id} } @{$cur->{profiles}})."\n";
 | 
				
			||||||
 | 
							foreach my $profile (@{$cur->{profiles}}) {
 | 
				
			||||||
 | 
								print $profile->{id}.'_NAME:='.$profile->{name}."\n";
 | 
				
			||||||
 | 
								print $profile->{id}.'_PACKAGES:='.join(' ', @{$profile->{packages}})."\n";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub parse_command() {
 | 
					sub parse_command() {
 | 
				
			||||||
	GetOptions("ignore=s", \@ignore);
 | 
						GetOptions("ignore=s", \@ignore);
 | 
				
			||||||
	my $cmd = shift @ARGV;
 | 
						my $cmd = shift @ARGV;
 | 
				
			||||||
	for ($cmd) {
 | 
						for ($cmd) {
 | 
				
			||||||
		/^target_config$/ and return gen_target_config();
 | 
							/^target_config$/ and return gen_target_config();
 | 
				
			||||||
 | 
							/^profile_mk$/ and return gen_profile_mk();
 | 
				
			||||||
		/^package_mk$/ and return gen_package_mk();
 | 
							/^package_mk$/ and return gen_package_mk();
 | 
				
			||||||
		/^package_config$/ and return gen_package_config();
 | 
							/^package_config$/ and return gen_package_config();
 | 
				
			||||||
		/^kconfig/ and return gen_kconfig_overrides();
 | 
							/^kconfig/ and return gen_kconfig_overrides();
 | 
				
			||||||
@@ -929,6 +939,7 @@ sub parse_command() {
 | 
				
			|||||||
	print <<EOF
 | 
						print <<EOF
 | 
				
			||||||
Available Commands:
 | 
					Available Commands:
 | 
				
			||||||
	$0 target_config [file] 		Target metadata in Kconfig format
 | 
						$0 target_config [file] 		Target metadata in Kconfig format
 | 
				
			||||||
 | 
						$0 profile_mk [file] [target]		Profile metadata in makefile format
 | 
				
			||||||
	$0 package_mk [file]			Package metadata in makefile format
 | 
						$0 package_mk [file]			Package metadata in makefile format
 | 
				
			||||||
	$0 package_config [file] 		Package metadata in Kconfig format
 | 
						$0 package_config [file] 		Package metadata in Kconfig format
 | 
				
			||||||
	$0 kconfig [file] [config] [patchver]	Kernel config overrides
 | 
						$0 kconfig [file] [config] [patchver]	Kernel config overrides
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -112,6 +112,11 @@ sub parse_target_metadata($) {
 | 
				
			|||||||
				packages => []
 | 
									packages => []
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		];
 | 
							];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							$target->{sort} and @{$target->{profiles}} = sort {
 | 
				
			||||||
 | 
								$a->{priority} <=> $b->{priority} or
 | 
				
			||||||
 | 
								$a->{name} cmp $b->{name};
 | 
				
			||||||
 | 
							} @{$target->{profiles}};
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return @target;
 | 
						return @target;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user