#!/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 <{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 <{conf} bool "$target->{name}" select $target->{arch} select LINUX_$target->{kernel} $features$help EOF } print <{profiles} or $profiles = [ { id => 'Default', name => 'Default', pkgs => [] } ]; foreach my $profile (@$profiles) { print <{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";