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
#
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
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
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)
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)
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.
define Package/libgcc
SECTION:=libs
CATEGORY:=Base system
- DEFAULT:=y
DEPENDS:=@!NATIVE_TOOLCHAIN
TITLE:=GCC support library
URL:=http://gcc.gnu.org/
define Package/uclibc
SECTION:=libs
CATEGORY:=Base system
- DEFAULT:=y
DEPENDS:=@!NATIVE_TOOLCHAIN
TITLE:=C library embedded systems
URL:=http://uclibc.org/
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 \\\
define Package/kmod-brcm-wl
$(call Package/kmod-brcm-wl/Default)
- DEFAULT:=y
TITLE+= (normal version)
DESCRIPTION+= (normal version).
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.
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 \\\
define Package/busybox
SECTION:=base
CATEGORY:=Base system
- DEFAULT:=y
TITLE:=Core utilities for embedded Linux
URL:=http://busybox.net/
MENU:=1
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.
$(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.
define Package/iptables
$(call Package/iptables/Default)
- DEFAULT:=y
TITLE:=IPv4 firewall administration tool
MENU:=1
endef
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/
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 \\\
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)
define Package/nvram
SECTION:=utils
CATEGORY:=Utilities
- DEFAULT:=y
DEPENDS:=@LINUX_2_4_BRCM
TITLE:=Broadcom config utility
DESCRIPTION:=\
define Package/ppp
$(call Package/ppp/Default)
- DEFAULT:=y
DEPENDS:=+kmod-ppp
TITLE:=PPP daemon
DESCRIPTION:=\
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.
define Package/ppp-mod-pppoe
$(call Package/ppp/Default)
- DEFAULT:=y
DEPENDS:=ppp +kmod-pppoe
TITLE:=PPPoE plugin
DESCRIPTION:=\
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.
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 \\\
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 \\\
define Package/kmod-wlcompat
$(call Package/kmod-wlcompat/Default)
- DEFAULT:=y
endef
define Package/kmod-wlcompat-debug
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";
}
my @target;
my $target;
+my $profiles;
+my $profile;
sub features(@) {
my $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
};
/^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 {
} @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";
}
print <<EOF
-config LINUX_$conf
+config LINUX_$target->{conf}
bool "$target->{name}"
select $target->{arch}
$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";
-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
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)
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))
BOARD:=aruba
BOARDNAME:=Aruba
FEATURES:=jffs2 pci usb
+DEFAULT_PACKAGES += kmod-madwifi
define Target/Description
Build firmware images for Aruba boards
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
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))
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
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))