From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Sun, 12 Nov 2006 05:06:56 +0000 (+0000)
Subject: implement target profiles in menuconfig
X-Git-Url: https://git.rohieb.name/openwrt.git/commitdiff_plain/5be70dfb578c8793084aa8b4526fad08d68a6155?ds=sidebyside

implement target profiles in menuconfig

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5512 3c298f89-4303-0410-b956-a3cf2f4a3e73
---

diff --git a/Makefile b/Makefile
index e5e1f6fd3..eed9335a5 100644
--- a/Makefile
+++ b/Makefile
@@ -39,11 +39,11 @@ else
 endif
 export OPENWRTVERSION
 
-ifneq ($(shell ./scripts/timestamp.pl -p tmp/.pkginfo package scripts Makefile),tmp/.pkginfo)
+ifneq ($(shell ./scripts/timestamp.pl -p tmp/.pkginfo package scripts include),tmp/.pkginfo)
   tmp/.pkginfo: FORCE
 endif
 
-ifneq ($(shell ./scripts/timestamp.pl -p tmp/.targetinfo target/linux scripts Makefile),tmp/.targetinfo)
+ifneq ($(shell ./scripts/timestamp.pl -p tmp/.targetinfo target/linux scripts include),tmp/.targetinfo)
   tmp/.targetinfo: FORCE
 endif
 
diff --git a/include/kernel-build.mk b/include/kernel-build.mk
index e491e489c..35149d768 100644
--- a/include/kernel-build.mk
+++ b/include/kernel-build.mk
@@ -6,6 +6,9 @@
 #
 KERNEL_BUILD:=1
 
+# For target profile selection - the default set
+DEFAULT_PACKAGES:=base-files libgcc uclibc bridge busybox dnsmasq dropbear iptables mtd ppp ppp-mod-pppoe mtd
+
 ifeq ($(DUMP),1)
   all: dumpinfo
 else
@@ -146,41 +149,59 @@ define BuildKernel
   mostlyclean: FORCE
 	$(call Kernel/Clean)
 
+  ifeq ($(DUMP),1)
+    dumpinfo:
+		@echo 'Target: $(BOARD)-$(KERNEL)'
+		@echo 'Target-Name: $(BOARDNAME) [$(KERNEL)]'
+		@echo 'Target-Path: $(subst $(TOPDIR)/,,$(PWD))'
+		@echo 'Target-Arch: $(ARCH)'
+		@echo 'Target-Features: $(FEATURES)'
+		@echo 'Linux-Version: $(LINUX_VERSION)'
+		@echo 'Linux-Release: $(LINUX_RELEASE)'
+		@echo 'Linux-Kernel-Arch: $(LINUX_KARCH)'
+		@echo 'Target-Description:'
+		@getvar $(call shvar,Target/Description)
+		@echo '@@'
+		@echo 'Default-Packages: $(DEFAULT_PACKAGES)'
+    ifneq ($(DUMPINFO),)
+		@$(DUMPINFO)
+    endif
+  endif
+
   define BuildKernel
   endef
 endef
 
+define Profile/Default
+  NAME:=
+  PACKAGES:=
+endef
+
+define Profile
+  $(eval $(call Profile/Default))
+  $(eval $(call Profile/$(1)))
+  DUMPINFO += \
+	echo "Target-Profile: $(1)"; \
+	echo "Target-Profile-Name: $(NAME)"; \
+	echo "Target-Profile-Packages: $(PACKAGES)"; 
+endef
+
 $(eval $(call shexport,Target/Description))
 
-ifeq ($(DUMP),1)
-  dumpinfo:
-	@echo 'Target: $(BOARD)-$(KERNEL)'
-	@echo 'Target-Name: $(BOARDNAME) [$(KERNEL)]'
-	@echo 'Target-Path: $(subst $(TOPDIR)/,,$(PWD))'
-	@echo 'Target-Arch: $(ARCH)'
-	@echo 'Target-Features: $(FEATURES)'
-	@echo 'Linux-Version: $(LINUX_VERSION)'
-	@echo 'Linux-Release: $(LINUX_RELEASE)'
-	@echo 'Linux-Kernel-Arch: $(LINUX_KARCH)'
-	@echo 'Target-Description:'
-	@echo "$$$(call shvar,Target/Description)"
-	@echo '@@'
-else
-  download: $(DL_DIR)/$(LINUX_SOURCE)
-  prepare: $(LINUX_DIR)/.configured $(TMP_DIR)/.kernel.mk
-  compile: $(LINUX_DIR)/.modules
-  install: $(LINUX_DIR)/.image
+download: $(DL_DIR)/$(LINUX_SOURCE)
+prepare: $(LINUX_DIR)/.configured $(TMP_DIR)/.kernel.mk
+compile: $(LINUX_DIR)/.modules
+install: $(LINUX_DIR)/.image
 
-  clean: FORCE
+clean: FORCE
 	rm -f $(STAMP_DIR)/.linux-compile
 	rm -rf $(KERNEL_BUILD_DIR)
 
-  rebuild: FORCE
+rebuild: FORCE
 	@$(MAKE) mostlyclean
 	@if [ -f $(LINUX_KERNEL) ]; then \
 		$(MAKE) clean; \
 	fi
 	@$(MAKE) compile
-endif
 
 
diff --git a/package/ar7-atm/Makefile b/package/ar7-atm/Makefile
index 6ef3c2652..25ef3728d 100644
--- a/package/ar7-atm/Makefile
+++ b/package/ar7-atm/Makefile
@@ -25,7 +25,6 @@ include $(INCLUDE_DIR)/package.mk
 define KernelPackage/sangam-atm-annex-a
   SUBMENU:=Network Devices
   DEPENDS:=@LINUX_2_4_AR7 +kmod-atm
-  DEFAULT:=y
   TITLE:=AR7 ADSL driver (Annex A)
   DESCRIPTION:=The AR7 ADSL driver for Annex A
   VERSION:=$(PKG_VERSION)+$(LINUX_VERSION)-$(BOARD)-$(PKG_RELEASE)
diff --git a/package/ar7-net/Makefile b/package/ar7-net/Makefile
index a8423a3fd..fbcdf6496 100644
--- a/package/ar7-net/Makefile
+++ b/package/ar7-net/Makefile
@@ -25,7 +25,6 @@ include $(INCLUDE_DIR)/package.mk
 define KernelPackage/avalanche-cpmac
   SUBMENU:=Network Devices
   DEPENDS:=@LINUX_2_4_AR7 +kmod-atm
-  DEFAULT:=y
   TITLE:=AR7 Network driver (CPMAC)
   DESCRIPTION:=AR7 Network driver (CPMAC)
   VERSION:=$(PKG_VERSION)+$(LINUX_VERSION)-$(BOARD)-$(PKG_RELEASE)
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index ea4159d64..5af1414d4 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -35,7 +35,6 @@ CONFIG_PACKAGE_base-files$(TARGET):=$(CONFIG_PACKAGE_base-files)
 define Package/base-files$(TARGET)
   SECTION:=base
   CATEGORY:=Base system
-  DEFAULT:=y
   TITLE:=Base filesystem for OpenWrt
   DESCRIPTION:=\
 	This package contains a base filesystem and system scripts for OpenWrt.
@@ -87,7 +86,6 @@ endef
 define Package/libgcc
   SECTION:=libs
   CATEGORY:=Base system
-  DEFAULT:=y
   DEPENDS:=@!NATIVE_TOOLCHAIN
   TITLE:=GCC support library
   URL:=http://gcc.gnu.org/
@@ -106,7 +104,6 @@ endef
 define Package/uclibc
   SECTION:=libs
   CATEGORY:=Base system
-  DEFAULT:=y
   DEPENDS:=@!NATIVE_TOOLCHAIN
   TITLE:=C library embedded systems
   URL:=http://uclibc.org/
diff --git a/package/bridge/Makefile b/package/bridge/Makefile
index c186c8e70..07149fdee 100644
--- a/package/bridge/Makefile
+++ b/package/bridge/Makefile
@@ -24,7 +24,6 @@ include $(INCLUDE_DIR)/package.mk
 define Package/bridge
   SECTION:=net
   CATEGORY:=Base system
-  DEFAULT:=y
   TITLE:=Ethernet bridging configuration utility
   DESCRIPTION:=\
 	Manage ethernet bridging: a way to connect networks together to \\\
diff --git a/package/broadcom-wl/Makefile b/package/broadcom-wl/Makefile
index 3ef4bcf08..1b3964285 100644
--- a/package/broadcom-wl/Makefile
+++ b/package/broadcom-wl/Makefile
@@ -44,7 +44,6 @@ endef
 
 define Package/kmod-brcm-wl
   $(call Package/kmod-brcm-wl/Default)
-  DEFAULT:=y
   TITLE+= (normal version)
   DESCRIPTION+= (normal version).
 endef
@@ -57,8 +56,8 @@ endef
 
 define Package/wlc
   $(call Package/broadcom-wl/Default)
+  TITLE:=wl driver setup utility
   DEFAULT:=y
-  TITLE:=Proprietary Broadcom wl driver setup utility
   DESCRIPTION:=\
 	This package contains an utility for initializing the proprietary Broadcom \\\
 	wl driver.
@@ -74,7 +73,8 @@ endef
 
 define Package/nas
   $(call Package/broadcom-wl/Default)
-  DEPENDS+= +nvram
+  DEPENDS+=+nvram
+  DEFAULT:=y
   TITLE:=Proprietary Broadcom WPA/WPA2 authenticator
   DESCRIPTION:=\
 	This package contains the proprietary WPA/WPA2 authenticator (nas) for the \\\
diff --git a/package/busybox/Makefile b/package/busybox/Makefile
index 05174a32b..cc3473726 100644
--- a/package/busybox/Makefile
+++ b/package/busybox/Makefile
@@ -24,7 +24,6 @@ include $(INCLUDE_DIR)/package.mk
 define Package/busybox
   SECTION:=base
   CATEGORY:=Base system
-  DEFAULT:=y
   TITLE:=Core utilities for embedded Linux
   URL:=http://busybox.net/
   MENU:=1
diff --git a/package/dnsmasq/Makefile b/package/dnsmasq/Makefile
index d7e5f18b6..d0beeb6f4 100644
--- a/package/dnsmasq/Makefile
+++ b/package/dnsmasq/Makefile
@@ -24,7 +24,6 @@ include $(INCLUDE_DIR)/package.mk
 define Package/dnsmasq
   SECTION:=net
   CATEGORY:=Base system
-  DEFAULT:=y
   TITLE:=A lightweight DNS and DHCP server
   DESCRIPTION:=\
 	It is intended to provide coupled DNS and DHCP service to a LAN.
diff --git a/package/dropbear/Makefile b/package/dropbear/Makefile
index 546facf92..1f4e47d4e 100644
--- a/package/dropbear/Makefile
+++ b/package/dropbear/Makefile
@@ -29,7 +29,6 @@ define Package/dropbear
   $(call Package/dropbear/Default)
   SECTION:=net
   CATEGORY:=Base system
-  DEFAULT:=y
   TITLE:=Small SSH2 client/server
   DESCRIPTION:=\
 	A small SSH2 server/client designed for small memory environments.
diff --git a/package/iptables/Makefile b/package/iptables/Makefile
index ee0c0941b..5fb069f6d 100644
--- a/package/iptables/Makefile
+++ b/package/iptables/Makefile
@@ -38,7 +38,6 @@ endef
 
 define Package/iptables
   $(call Package/iptables/Default)
-  DEFAULT:=y
   TITLE:=IPv4 firewall administration tool
   MENU:=1
 endef
diff --git a/package/madwifi/Makefile b/package/madwifi/Makefile
index 6fa682b06..2d952d114 100644
--- a/package/madwifi/Makefile
+++ b/package/madwifi/Makefile
@@ -77,8 +77,8 @@ endif
 
 define KernelPackage/madwifi
   SUBMENU:=Wireless Drivers
-  DEFAULT:=y if LINUX_2_6_BRCM || LINUX_2_6_ARUBA || LINUX_2_4_AR531X || LINUX_2_6_XSCALE, m if ALL
   TITLE:=Driver for Atheros wireless chipsets
+  DEPENDS:=+wireless-tools
   DESCRIPTION:=\
 	This package contains a driver for Atheros 802.11a/b/g chipsets.
   URL:=http://madwifi.org/
diff --git a/package/mtd/Makefile b/package/mtd/Makefile
index b3edb7b1b..2a27f0f5c 100644
--- a/package/mtd/Makefile
+++ b/package/mtd/Makefile
@@ -19,7 +19,6 @@ include $(INCLUDE_DIR)/package.mk
 define Package/mtd
   SECTION:=utils
   CATEGORY:=Base system
-  DEFAULT:=y
   TITLE:=Update utility for trx firmware images
   DESCRIPTION:=\
 	This package contains an utility useful to upgrade from other firmware or \\\
diff --git a/package/nozomi/Makefile b/package/nozomi/Makefile
index 5b879de4b..a6b9c0087 100644
--- a/package/nozomi/Makefile
+++ b/package/nozomi/Makefile
@@ -30,7 +30,6 @@ define KernelPackage/nozomi
   DESCRIPTION:=Option Globetrotter HSDPA driver
   URL:=http://www.pharscape.org/
   DEPENDS:=@LINUX_2_4
-  DEFAULT:=m if ALL
   VERSION:=$(LINUX_VERSION)+$(PKG_VERSION)-$(BOARD)-$(PKG_RELEASE)
   FILES:=$(PKG_BUILD_DIR)/noz.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,70,noz)
diff --git a/package/nvram/Makefile b/package/nvram/Makefile
index 1fd82cd71..ab33c1151 100644
--- a/package/nvram/Makefile
+++ b/package/nvram/Makefile
@@ -18,7 +18,6 @@ include $(INCLUDE_DIR)/package.mk
 define Package/nvram
   SECTION:=utils
   CATEGORY:=Utilities
-  DEFAULT:=y
   DEPENDS:=@LINUX_2_4_BRCM
   TITLE:=Broadcom config utility
   DESCRIPTION:=\
diff --git a/package/ppp/Makefile b/package/ppp/Makefile
index 80c6f5afe..7d05db09a 100644
--- a/package/ppp/Makefile
+++ b/package/ppp/Makefile
@@ -33,7 +33,6 @@ endef
 
 define Package/ppp
   $(call Package/ppp/Default)
-  DEFAULT:=y
   DEPENDS:=+kmod-ppp
   TITLE:=PPP daemon
   DESCRIPTION:=\
@@ -44,7 +43,6 @@ endef
 define Package/ppp-mod-pppoa
   $(call Package/ppp/Default)
   DEPENDS:=ppp +linux-atm +kmod-pppoa
-  DEFAULT:=y if LINUX_2_4_AR7
   TITLE:=PPPoA plugin
   DESCRIPTION:=\
 	This package contains a PPPoA (PPP over ATM) plugin for ppp.
@@ -52,7 +50,6 @@ endef
 
 define Package/ppp-mod-pppoe
   $(call Package/ppp/Default)
-  DEFAULT:=y
   DEPENDS:=ppp +kmod-pppoe
   TITLE:=PPPoE plugin
   DESCRIPTION:=\
diff --git a/package/switch/Makefile b/package/switch/Makefile
index 75f312940..07208bc30 100644
--- a/package/switch/Makefile
+++ b/package/switch/Makefile
@@ -20,7 +20,6 @@ define Package/kmod-switch
   SECTION:=kernel
   CATEGORY:=Kernel drivers
   DEPENDS:=@LINUX_2_6_BRCM||LINUX_2_4_BRCM
-  DEFAULT:=y
   TITLE:=Switch drivers
   DESCRIPTION:=\
 	This package contains switch drivers for ADM6996L and BCM53XX RoboSwitch.
diff --git a/package/wireless-tools/Makefile b/package/wireless-tools/Makefile
index def2a6cc8..f78bef986 100644
--- a/package/wireless-tools/Makefile
+++ b/package/wireless-tools/Makefile
@@ -26,7 +26,6 @@ include $(INCLUDE_DIR)/package.mk
 define Package/wireless-tools
   SECTION:=net
   CATEGORY:=Base system
-  DEFAULT:=y
   TITLE:=Tools for manipulating Linux Wireless Extensions
   DESCRIPTION:=\
 	This package contains a collection of tools for configuring wireless \\\
diff --git a/package/wlcompat/Makefile b/package/wlcompat/Makefile
index fc66c90f5..4a3729465 100644
--- a/package/wlcompat/Makefile
+++ b/package/wlcompat/Makefile
@@ -19,7 +19,8 @@ include $(INCLUDE_DIR)/package.mk
 define Package/kmod-wlcompat/Default
   SECTION:=kernel
   CATEGORY:=Kernel drivers
-  DEPENDS:=kmod-brcm-wl
+  DEPENDS:=@PACKAGE_kmod-brcm-wl||PACKAGE_kmod-brcm-wl-mimo +wireless-tools
+  DEFAULT:=y
   TITLE:=Broadcom wl wrapper module
   DESCRIPTION:=\
 	This package contains a wrapper module, that provides Wireless Extension \\\
@@ -29,7 +30,6 @@ endef
 
 define Package/kmod-wlcompat
   $(call Package/kmod-wlcompat/Default)
-  DEFAULT:=y
 endef
 
 define Package/kmod-wlcompat-debug
diff --git a/scripts/gen_package_config.pl b/scripts/gen_package_config.pl
index 9c705af56..4ce117c06 100755
--- a/scripts/gen_package_config.pl
+++ b/scripts/gen_package_config.pl
@@ -89,10 +89,13 @@ sub print_category($) {
 			if ($c > 0) {
 				$title .= ("." x $c). " ". $pkg->{title};
 			}
+			print "\tconfig DEFAULT_".$pkg->{name}."\n";
+			print "\t\tbool\n\n";
 			print "\t";
 			$pkg->{menu} and print "menu";
 			print "config PACKAGE_".$pkg->{name}."\n";
 			print "\t\ttristate \"$title\"\n";
+			print "\t\tdefault y if DEFAULT_".$pkg->{name}."\n";
 			foreach my $default (split /\s*,\s*/, $pkg->{default}) {
 				print "\t\tdefault $default\n";
 			}
diff --git a/scripts/gen_target_config.pl b/scripts/gen_target_config.pl
index c0b83963b..4d0d6b13e 100755
--- a/scripts/gen_target_config.pl
+++ b/scripts/gen_target_config.pl
@@ -10,6 +10,8 @@ use strict;
 
 my @target;
 my $target;
+my $profiles;
+my $profile;
 
 sub features(@) {
 	my $ret;
@@ -30,8 +32,11 @@ sub features(@) {
 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
 		};
@@ -56,6 +61,22 @@ while (<>) {
 	/^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 {
@@ -63,13 +84,18 @@ while (<>) {
 } @target;
 
 
+print <<EOF;
+choice
+	prompt "Target System"
+	default LINUX_2_4_BRCM
+	
+EOF
+
 foreach $target (@target) {
-	my $conf = uc $target->{kernel}.'_'.$target->{board};
 	my $features = features(@{$target->{features}});
 	my $help = $target->{desc};
 	chomp $features;
 	$features .= "\n";
-	$conf =~ tr/\.-/__/;
 	if ($help =~ /\w+/) {
 		$help =~ s/^\s*/\t  /mg;
 		$help = "\thelp\n$help";
@@ -78,7 +104,7 @@ foreach $target (@target) {
 	}
 
 	print <<EOF
-config LINUX_$conf
+config LINUX_$target->{conf}
 	bool "$target->{name}"
 	select $target->{arch}
 $features$help
@@ -86,3 +112,87 @@ $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";
diff --git a/target/Config.in b/target/Config.in
index 0ed1d0c58..83e2e1a90 100644
--- a/target/Config.in
+++ b/target/Config.in
@@ -1,64 +1,5 @@
-choice
-	prompt "Target System"
-	default LINUX_2_4_BRCM
-
 source "tmp/.config-target.in"
 
-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
-
-
 # Kernel/Hardware features
 
 config LINUX_2_4
diff --git a/target/linux/ar7-2.4/Makefile b/target/linux/ar7-2.4/Makefile
index f3d55da19..0ecfed615 100644
--- a/target/linux/ar7-2.4/Makefile
+++ b/target/linux/ar7-2.4/Makefile
@@ -10,6 +10,7 @@ ARCH:=mipsel
 BOARD:=ar7
 BOARDNAME:=TI AR7
 FEATURES:=atm squashfs jffs2
+DEFAULT_PACKAGES += kmod-avalanche-cpmac
 
 define Target/Description
 	Build firmware images for TI AR7 based routers (w.g. Linksys WAG54G v2)
@@ -20,4 +21,23 @@ LINUX_RELEASE:=1
 LINUX_KERNEL_MD5SUM:=38f4d0830e95a20f4bfed17622d5557c
 
 include $(INCLUDE_DIR)/kernel-build.mk
+
+define Profile/AnnexA
+  NAME:=ADSL Annex A (default)
+  PACKAGES:=kmod-sangam-atm-annex-a ppp-mod-pppoa
+endef
+$(eval $(call Profile,AnnexA))
+
+define Profile/AnnexB
+  NAME:=ADSL Annex B
+  PACKAGES:=kmod-sangam-atm-annex-b ppp-mod-pppoa
+endef
+$(eval $(call Profile,AnnexB))
+
+define Profile/None
+  NAME:=No ADSL
+  PACKAGES:=
+endef
+$(eval $(call Profile,None))
+
 $(eval $(call BuildKernel))
diff --git a/target/linux/aruba-2.6/Makefile b/target/linux/aruba-2.6/Makefile
index c3946e2d1..0a4214886 100644
--- a/target/linux/aruba-2.6/Makefile
+++ b/target/linux/aruba-2.6/Makefile
@@ -10,6 +10,7 @@ ARCH:=mips
 BOARD:=aruba
 BOARDNAME:=Aruba
 FEATURES:=jffs2 pci usb
+DEFAULT_PACKAGES += kmod-madwifi
 
 define Target/Description
 	Build firmware images for Aruba boards
diff --git a/target/linux/brcm-2.4/Makefile b/target/linux/brcm-2.4/Makefile
index 7319ccabd..2294a0546 100644
--- a/target/linux/brcm-2.4/Makefile
+++ b/target/linux/brcm-2.4/Makefile
@@ -10,6 +10,7 @@ ARCH:=mipsel
 BOARD:=brcm
 BOARDNAME:=Broadcom BCM947xx/953xx
 FEATURES:=pci usb pcmcia squashfs jffs2
+DEFAULT_PACKAGES += kmod-switch nvram
 
 define Target/Description
 	Build firmware images for Broadcom based routers
@@ -26,4 +27,59 @@ LINUX_KERNEL_MD5SUM:=38f4d0830e95a20f4bfed17622d5557c
 
 include $(INCLUDE_DIR)/kernel-build.mk
 
+define Profile/Broadcom
+  NAME:=Generic, Broadcom WiFi (default)
+  PACKAGES:=kmod-brcm-wl
+endef
+$(eval $(call Profile,Broadcom))
+
+define Profile/BroadcomMimo
+  NAME:=Generic, Broadcom WiFi (MIMO)
+  PACKAGES:=kmod-brcm-wl-mimo
+endef
+$(eval $(call Profile,BroadcomMimo))
+
+define Profile/Atheros
+  NAME:=Generic, Atheros WiFi
+  PACKAGES:=kmod-madwifi
+endef
+$(eval $(call Profile,Atheros))
+
+define Profile/None
+  NAME:=Generic, No WiFi
+  PACKAGES:=
+endef
+$(eval $(call Profile,None))
+
+
+define Profile/WRT54G3G
+  NAME:=Linksys WRT54G3G
+  PACKAGES:=kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-pcmcia-core kmod-pcmcia-serial kmod-nozomi comgt
+endef
+$(eval $(call Profile,WRT54G3G))
+
+define Profile/WL500G
+  NAME:=ASUS WL-500g
+  PACKAGES:=kmod-usb-core kmod-usb-ohci kmod-lp
+endef
+$(eval $(call Profile,WL500G))
+
+define Profile/WL500GD
+  NAME:=ASUS WL-500g Deluxe
+  PACKAGES:=kmod-usb-core kmod-usb-uhci kmod-usb2
+endef
+$(eval $(call Profile,WL500GD))
+
+define Profile/WL500GP
+  NAME:=ASUS WL-500g Premium
+  PACKAGES:=kmod-usb-core kmod-usb-ohci kmod-usb2
+endef
+$(eval $(call Profile,WL500GP))
+
+define Profile/WLHDD
+  NAME:=WL-HDD
+  PACKAGES:=kmod-usb-core kmod-usb-ohci kmod-ide-core kmod-ide-pdc202xx
+endef
+$(eval $(call Profile,WLHDD))
+
 $(eval $(call BuildKernel))
diff --git a/target/linux/brcm-2.6/Makefile b/target/linux/brcm-2.6/Makefile
index 599282803..0c3f5f79a 100644
--- a/target/linux/brcm-2.6/Makefile
+++ b/target/linux/brcm-2.6/Makefile
@@ -10,6 +10,7 @@ ARCH:=mipsel
 BOARD:=brcm
 BOARDNAME:=Broadcom BCM947xx/953xx
 FEATURES:=pci usb pcmcia squashfs jffs2
+DEFAULT_PACKAGES += kmod-switch
 
 define Target/Description
 	Build firmware images for Broadcom based routers
@@ -26,4 +27,16 @@ LINUX_KERNEL_MD5SUM:=37ddefe96625502161f075b9d907f21e
 
 include $(INCLUDE_DIR)/kernel-build.mk
 
+define Profile/Atheros
+  NAME:=Atheros WiFi (default)
+  PACKAGES:=kmod-madwifi
+endef
+$(eval $(call Profile,Atheros))
+
+define Profile/None
+  NAME:=No WiFi
+  PACKAGES:=
+endef
+$(eval $(call Profile,None))
+
 $(eval $(call BuildKernel))