201 lines
3.9 KiB
Perl
Executable File
201 lines
3.9 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
#
|
|
# Copyright (C) 2006 OpenWrt.org
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
|
|
use strict;
|
|
|
|
my @target;
|
|
my $target;
|
|
my $profiles;
|
|
my $profile;
|
|
|
|
sub features(@) {
|
|
my $ret;
|
|
|
|
while ($_ = shift @_) {
|
|
/broken/ and $ret .= "\tdepends BROKEN\n";
|
|
/pci/ and $ret .= "\tselect PCI_SUPPORT\n";
|
|
/usb/ and $ret .= "\tselect USB_SUPPORT\n";
|
|
/atm/ and $ret .= "\tselect ATM_SUPPORT\n";
|
|
/pcmcia/ and $ret .= "\tselect PCMCIA_SUPPORT\n";
|
|
/squashfs/ and $ret .= "\tselect USES_SQUASHFS\n";
|
|
/jffs2/ and $ret .= "\tselect USES_JFFS2\n";
|
|
/ext2/ and $ret .= "\tselect USES_EXT2\n";
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
while (<>) {
|
|
chomp;
|
|
/^Target:\s*((.+)-(\d+\.\d+))\s*$/ and do {
|
|
my $conf = uc $3.'_'.$2;
|
|
$conf =~ tr/\.-/__/;
|
|
$target = {
|
|
id => $1,
|
|
conf => $conf,
|
|
board => $2,
|
|
kernel => $3
|
|
};
|
|
$target->{kernel} =~ tr/\./_/;
|
|
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-Description:/ and do {
|
|
my $desc;
|
|
while (<>) {
|
|
last if /^@@/;
|
|
$desc .= $_;
|
|
}
|
|
$target->{desc} = $desc;
|
|
};
|
|
/^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 do {
|
|
my @pkgs = split /\s+/, $1;
|
|
$target->{defaultpkgs} = \@pkgs;
|
|
};
|
|
/^Target-Profile:\s*(.+)\s*$/ and do {
|
|
$profiles = $target->{profiles} or $target->{profiles} = $profiles = [];
|
|
$profile = {
|
|
id => $1
|
|
};
|
|
push @$profiles, $profile;
|
|
};
|
|
/^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1;
|
|
/^Target-Profile-Packages:\s*(.+)\s*$/ and do {
|
|
my @pkgs = split /\s+/, $1;
|
|
$profile->{pkgs} = \@pkgs;
|
|
};
|
|
}
|
|
|
|
@target = sort {
|
|
$a->{name} cmp $b->{name}
|
|
} @target;
|
|
|
|
|
|
print <<EOF;
|
|
choice
|
|
prompt "Target System"
|
|
default LINUX_2_4_BRCM
|
|
|
|
EOF
|
|
|
|
foreach $target (@target) {
|
|
my $features = features(@{$target->{features}});
|
|
my $help = $target->{desc};
|
|
chomp $features;
|
|
$features .= "\n";
|
|
if ($help =~ /\w+/) {
|
|
$help =~ s/^\s*/\t /mg;
|
|
$help = "\thelp\n$help";
|
|
} else {
|
|
undef $help;
|
|
}
|
|
|
|
print <<EOF
|
|
config LINUX_$target->{conf}
|
|
bool "$target->{name}"
|
|
select $target->{arch}
|
|
select LINUX_$target->{kernel}
|
|
$features$help
|
|
|
|
EOF
|
|
}
|
|
|
|
print <<EOF;
|
|
if DEVEL
|
|
|
|
config LINUX_2_6_ARM
|
|
bool "UNSUPPORTED little-endian arm platform"
|
|
depends BROKEN
|
|
select LINUX_2_6
|
|
select arm
|
|
|
|
config LINUX_2_6_CRIS
|
|
bool "UNSUPPORTED cris platform"
|
|
depends BROKEN
|
|
select LINUX_2_6
|
|
select cris
|
|
|
|
config LINUX_2_6_M68K
|
|
bool "UNSUPPORTED m68k platform"
|
|
depends BROKEN
|
|
select LINUX_2_6
|
|
select m68k
|
|
|
|
config LINUX_2_6_SH3
|
|
bool "UNSUPPORTED little-endian sh3 platform"
|
|
depends BROKEN
|
|
select LINUX_2_6
|
|
select sh3
|
|
|
|
config LINUX_2_6_SH3EB
|
|
bool "UNSUPPORTED big-endian sh3 platform"
|
|
depends BROKEN
|
|
select LINUX_2_6
|
|
select sh3eb
|
|
|
|
config LINUX_2_6_SH4
|
|
bool "UNSUPPORTED little-endian sh4 platform"
|
|
depends BROKEN
|
|
select LINUX_2_6
|
|
select sh4
|
|
|
|
config LINUX_2_6_SH4EB
|
|
bool "UNSUPPORTED big-endian sh4 platform"
|
|
depends BROKEN
|
|
select LINUX_2_6
|
|
select sh4eb
|
|
|
|
config LINUX_2_6_SPARC
|
|
bool "UNSUPPORTED sparc platform"
|
|
depends BROKEN
|
|
select LINUX_2_6
|
|
select sparc
|
|
|
|
endif
|
|
|
|
endchoice
|
|
|
|
choice
|
|
prompt "Target Profile"
|
|
|
|
EOF
|
|
|
|
foreach $target (@target) {
|
|
my $profiles;
|
|
|
|
$profiles = $target->{profiles} or $profiles = [
|
|
{
|
|
id => 'Default',
|
|
name => 'Default',
|
|
pkgs => []
|
|
}
|
|
];
|
|
foreach my $profile (@$profiles) {
|
|
print <<EOF;
|
|
config LINUX_$target->{conf}_$profile->{id}
|
|
bool "$profile->{name}"
|
|
depends LINUX_$target->{conf}
|
|
EOF
|
|
foreach my $pkg (@{$target->{defaultpkgs}}, @{$profile->{pkgs}}) {
|
|
print "\tselect DEFAULT_$pkg\n";
|
|
}
|
|
print "\n";
|
|
}
|
|
}
|
|
|
|
print "endchoice\n";
|