summaryrefslogtreecommitdiff
path: root/scripts/gen_target_mk.pl
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2006-11-11 23:11:02 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2006-11-11 23:11:02 +0000
commite158d8b6a7b3c883a8be74cb2327dda6374fc050 (patch)
tree8be2d6fbdc05c44bd84fbc88d3fb9c92c07bf179 /scripts/gen_target_mk.pl
parentb95511065669c952e554ccbe8c8054bd166019e4 (diff)
make target/linux/* directories self-contained, use the selected kernel version for the toolchain, autogenerate menuconfig and makefile code for target selection
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5498 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'scripts/gen_target_mk.pl')
-rwxr-xr-xscripts/gen_target_mk.pl65
1 files changed, 65 insertions, 0 deletions
diff --git a/scripts/gen_target_mk.pl b/scripts/gen_target_mk.pl
new file mode 100755
index 0000000000..52f2a5c06d
--- /dev/null
+++ b/scripts/gen_target_mk.pl
@@ -0,0 +1,65 @@
+#!/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;
+
+while (<>) {
+ chomp;
+ /^Target:\s*((.+)-(\d+\.\d+))\s*$/ and do {
+ $target = {
+ id => $1,
+ board => $2,
+ kernel => $3
+ };
+ 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;
+}
+
+@target = sort {
+ $a->{id} cmp $b->{id}
+} @target;
+
+foreach $target (@target) {
+ my $conf = uc $target->{kernel}.'_'.$target->{board};
+ $conf =~ tr/\.-/__/;
+ print <<EOF
+ifeq (\$(CONFIG_LINUX_$conf),y)
+ define Target
+ KERNEL:=$target->{kernel}
+ BOARD:=$target->{board}
+ LINUX_VERSION:=$target->{version}
+ LINUX_RELEASE:=$target->{release}
+ LINUX_KARCH:=$target->{karch}
+ endef
+endif
+
+EOF
+}
+print "\$(eval \$(call Target))\n";