build system cleanup. move shared include files into $(TOPDIR)/include, move lzma, mkfs.* into toolchain/
build system cleanup. move shared include files into $(TOPDIR)/include, move lzma, mkfs.* into toolchain/

git-svn-id: svn://svn.openwrt.org/openwrt/branches/buildroot-ng/openwrt@4032 3c298f89-4303-0410-b956-a3cf2f4a3e73

file:b/include/image.mk (new)
--- /dev/null
+++ b/include/image.mk
@@ -1,1 +1,78 @@
+include $(TOPDIR)/rules.mk
 
+KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
+
+ifneq ($(CONFIG_BIG_ENDIAN),y)
+JFFS2OPTS     :=  --pad --little-endian --squash
+SQUASHFS_OPTS :=  -le
+else
+JFFS2OPTS     :=  --pad --big-endian --squash
+SQUASHFS_OPTS :=  -be
+endif
+
+ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
+  ifeq ($(CONFIG_TARGET_ROOTFS_JFFS2),y)
+    define Image/mkfs/jffs2
+		rm -rf $(BUILD_DIR)/root/jffs
+		
+		$(STAGING_DIR)/bin/mkfs.jffs2 $(JFFS2OPTS) -e 0x10000 -o $(KDIR)/root.jffs2-64k -d $(BUILD_DIR)/root
+		$(STAGING_DIR)/bin/mkfs.jffs2 $(JFFS2OPTS) -e 0x20000 -o $(KDIR)/root.jffs2-128k -d $(BUILD_DIR)/root
+	
+		$(call Image/Build,jffs2-64k)
+		$(call Image/Build,jffs2-128k)
+    endef
+  endif
+    
+  ifeq ($(CONFIG_TARGET_ROOTFS_SQUASHFS),y)
+    define Image/mkfs/squashfs
+		@mkdir -p $(BUILD_DIR)/root/jffs
+		$(STAGING_DIR)/bin/mksquashfs-lzma $(BUILD_DIR)/root $(KDIR)/root.squashfs -nopad -noappend -root-owned $(SQUASHFS_OPTS)
+		$(call Image/Build,squashfs)
+    endef
+  endif
+    
+  ifeq ($(CONFIG_TARGET_ROOTFS_TGZ),y)
+    define Image/mkfs/tgz
+		tar -zcf $(BIN_DIR)/openwrt-rootfs.tgz --owner=root --group=root -C $(BUILD_DIR)/root/ .
+    endef
+  endif
+endif
+
+define Image/mkfs/prepare/default
+	find $(BUILD_DIR)/root -type f -not -perm +0100 | xargs chmod 0644
+	find $(BUILD_DIR)/root -type f -perm +0100 | xargs chmod 0755
+	find $(BUILD_DIR)/root -type d | xargs chmod 0755
+	mkdir -p $(BUILD_DIR)/root/tmp
+	chmod 0777 $(BUILD_DIR)/root/tmp
+endef
+
+define Image/mkfs/prepare
+	$(call Image/mkfs/prepare/default)
+endef
+
+define BuildImage
+compile:
+	$(call Build/Compile)
+
+install:
+	$(call Image/Prepare)
+	$(call Image/mkfs/prepare)
+	$(call Image/BuildKernel)
+	$(call Image/mkfs/jffs2)
+	$(call Image/mkfs/squashfs)
+	$(call Image/mkfs/tgz)
+	
+clean:
+	$(call Build/Clean)
+endef
+
+compile-targets:
+install-targets:
+clean-targets:
+
+source:
+prepare:
+compile: compile-targets
+install: compile install-targets
+clean: clean-targets
+

--- /dev/null
+++ b/include/kernel-build.mk
@@ -1,1 +1,126 @@
+include $(TOPDIR)/include/modules-$(KERNEL).mk
 
+LINUX_SOURCE:=linux-$(LINUX_VERSION).tar.bz2
+LINUX_SITE=http://www.us.kernel.org/pub/linux/kernel/v$(KERNEL) \
+           http://www.us.kernel.org/pub/linux/kernel/v$(KERNEL) \
+           http://www.kernel.org/pub/linux/kernel/v$(KERNEL) \
+           http://www.de.kernel.org/pub/linux/kernel/v$(KERNEL)
+
+KERNEL_IDIR:=$(KERNEL_BUILD_DIR)/kernel-ipkg
+KERNEL_IPKG:=$(KERNEL_BUILD_DIR)/kernel_$(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)_$(ARCH).ipk
+INSTALL_TARGETS += $(KERNEL_IPKG)
+
+$(TARGETS): $(PACKAGE_DIR)
+
+$(LINUX_DIR):
+	mkdir -p $@
+
+$(PACKAGE_DIR):
+	mkdir -p $@
+
+$(DL_DIR)/$(LINUX_SOURCE):
+	-mkdir -p $(DL_DIR)
+	$(SCRIPT_DIR)/download.pl $(DL_DIR) $(LINUX_SOURCE) $(LINUX_KERNEL_MD5SUM) $(LINUX_SITE)
+
+$(LINUX_DIR)/.unpacked: $(DL_DIR)/$(LINUX_SOURCE)
+	-mkdir -p $(KERNEL_BUILD_DIR)
+	bzcat $(DL_DIR)/$(LINUX_SOURCE) | tar -C $(KERNEL_BUILD_DIR) $(TAR_OPTIONS) -
+	touch $@
+
+ifeq ($(KERNEL),2.4)
+$(LINUX_DIR)/.configured: $(LINUX_DIR)/.patched
+	$(SED) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" \
+	  $(LINUX_DIR)/Makefile  \
+	  $(LINUX_DIR)/arch/*/Makefile
+	$(SED) "s,\-mcpu=,\-mtune=,g;" $(LINUX_DIR)/arch/mips/Makefile
+	$(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_KARCH) oldconfig include/linux/compile.h include/linux/version.h
+	touch $@
+
+$(LINUX_DIR)/.depend_done: $(LINUX_DIR)/.configured
+	$(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) dep
+	touch $@
+
+$(LINUX_DIR)/vmlinux: $(LINUX_DIR)/.depend_done
+else
+$(LINUX_DIR)/.configured: $(LINUX_DIR)/.patched
+	$(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) oldconfig prepare scripts
+	touch $@
+endif
+
+ramdisk-config: $(LINUX_DIR)/.configured FORCE
+	mv $(LINUX_DIR)/.config $(LINUX_DIR)/.config.old
+	grep -v INITRAMFS $(LINUX_DIR)/.config.old > $(LINUX_DIR)/.config
+ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
+	echo 'CONFIG_INITRAMFS_SOURCE="../../root"' >> $(LINUX_DIR)/.config
+	echo 'CONFIG_INITRAMFS_ROOT_UID=0' >> $(LINUX_DIR)/.config
+	echo 'CONFIG_INITRAMFS_ROOT_GID=0' >> $(LINUX_DIR)/.config
+	mkdir -p $(BUILD_DIR)/root/etc/init.d
+	$(CP) ../generic-2.6/files/init $(BUILD_DIR)/root/
+else
+	rm -f $(BUILD_DIR)/root/init $(BUILD_DIR)/root/etc/init.d/S00initramfs
+	echo 'CONFIG_INITRAMFS_SOURCE=""' >> $(LINUX_DIR)/.config
+endif
+
+$(LINUX_DIR)/vmlinux: $(STAMP_DIR)/.linux-compile pkg-install ramdisk-config
+	$(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) PATH=$(TARGET_PATH)
+
+$(LINUX_KERNEL): $(LINUX_DIR)/vmlinux
+	$(TARGET_CROSS)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S $< $@
+	touch -c $(LINUX_KERNEL)
+
+$(LINUX_DIR)/.modules_done:
+	rm -rf $(KERNEL_BUILD_DIR)/modules
+	$(MAKE) -C "$(LINUX_DIR)" CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) PATH="$(TARGET_PATH)" modules
+	$(MAKE) -C "$(LINUX_DIR)" CROSS_COMPILE="$(KERNEL_CROSS)" DEPMOD=true INSTALL_MOD_PATH=$(KERNEL_BUILD_DIR)/modules modules_install
+	touch $(LINUX_DIR)/.modules_done
+
+$(STAMP_DIR)/.linux-compile:
+	@$(MAKE) $(LINUX_DIR)/.modules_done $(TARGETS) $(KERNEL_IPKG)
+	ln -sf $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION) $(BUILD_DIR)/linux
+	touch $@
+
+$(KERNEL_IPKG):
+	rm -rf $(KERNEL_IDIR)
+	mkdir -p $(KERNEL_IDIR)/etc
+	$(SCRIPT_DIR)/make-ipkg-dir.sh $(KERNEL_IDIR) ../control/kernel.control $(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE) $(ARCH)
+	if [ -f ./config/$(BOARD).modules ]; then \
+		cp ./config/$(BOARD).modules $(KERNEL_IDIR)/etc/modules; \
+	fi
+	$(IPKG_BUILD) $(KERNEL_IDIR) $(KERNEL_BUILD_DIR)
+
+$(TOPDIR)/.kernel.mk:
+	echo "BOARD:=$(BOARD)" > $@
+	echo "LINUX_VERSION:=$(LINUX_VERSION)" >> $@
+	echo "LINUX_RELEASE:=$(LINUX_RELEASE)" >> $@
+
+pkg-install: FORCE
+	@{ [ "$(INSTALL_TARGETS)" != "" ] && $(IPKG) install $(INSTALL_TARGETS) || true; }
+
+source: $(DL_DIR)/$(LINUX_SOURCE)
+prepare:
+	@mkdir -p $(STAMP_DIR) $(PACKAGE_DIR)
+	@$(MAKE) $(LINUX_DIR)/.configured
+
+compile: prepare $(STAMP_DIR)/.linux-compile
+
+install: compile $(LINUX_KERNEL)
+
+mostlyclean: FORCE
+	rm -f $(STAMP_DIR)/.linux-compile
+	rm -f $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/.modules_done
+	rm -f $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/.drivers-unpacked
+	$(MAKE) -C $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION) clean
+	rm -f $(LINUX_KERNEL)
+
+rebuild: FORCE
+	-$(MAKE) mostlyclean
+	if [ -f $(LINUX_KERNEL) ]; then \
+		$(MAKE) clean; \
+	fi
+	$(MAKE) compile $(MAKE_TRACE)
+
+clean: FORCE
+	rm -f $(STAMP_DIR)/.linux-compile
+	rm -rf $(KERNEL_BUILD_DIR)
+	rm -f $(TARGETS)
+

file:b/include/kernel.mk (new)
--- /dev/null
+++ b/include/kernel.mk
@@ -1,1 +1,78 @@
+ifneq ($(DUMP),1)
+include $(TOPDIR)/.kernel.mk
 
+KERNEL:=unknown
+ifneq (,$(findstring 2.4.,$(LINUX_VERSION)))
+KERNEL:=2.4
+LINUX_KMOD_SUFFIX=o
+endif
+ifneq (,$(findstring 2.6.,$(LINUX_VERSION)))
+KERNEL:=2.6
+LINUX_KMOD_SUFFIX=ko
+endif
+
+LINUX_KARCH:=$(shell echo $(ARCH) | sed -e 's/i[3-9]86/i386/' \
+	-e 's/mipsel/mips/' \
+	-e 's/mipseb/mips/' \
+	-e 's/powerpc/ppc/' \
+	-e 's/sh[234]/sh/' \
+	-e 's/armeb/arm/' \
+)
+
+KERNEL_BUILD_DIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
+LINUX_DIR := $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)
+
+MODULES_SUBDIR:=lib/modules/$(LINUX_VERSION)
+MODULES_DIR := $(KERNEL_BUILD_DIR)/modules/$(MODULES_SUBDIR)
+TARGET_MODULES_DIR := $(LINUX_TARGET_DIR)/$(MODULES_SUBDIR)
+KMOD_BUILD_DIR := $(KERNEL_BUILD_DIR)/linux-modules
+
+LINUX_KERNEL:=$(KERNEL_BUILD_DIR)/vmlinux
+endif
+
+# FIXME: remove this crap
+define KMOD_template
+ifeq ($$(strip $(4)),)
+KDEPEND_$(1):=m
+else
+KDEPEND_$(1):=$($(4))
+endif
+
+IDEPEND_$(1):=kernel ($(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)) $(foreach pkg,$(5),", $(pkg)")
+
+PKG_$(1) := $(PACKAGE_DIR)/kmod-$(2)_$(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)_$(ARCH).ipk
+I_$(1) := $(KMOD_BUILD_DIR)/ipkg/$(2)
+
+ifeq ($$(KDEPEND_$(1)),m)
+ifneq ($(CONFIG_PACKAGE_KMOD_$(1)),)
+TARGETS += $$(PKG_$(1))
+endif
+ifeq ($(CONFIG_PACKAGE_KMOD_$(1)),y)
+INSTALL_TARGETS += $$(PKG_$(1))
+endif
+endif
+
+$$(PKG_$(1)): $(LINUX_DIR)/.modules_done
+	rm -rf $$(I_$(1))
+	$(SCRIPT_DIR)/make-ipkg-dir.sh $$(I_$(1)) ../control/kmod-$(2).control $(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE) $(ARCH)
+	echo "Depends: $$(IDEPEND_$(1))" >> $$(I_$(1))/CONTROL/control
+ifneq ($(strip $(3)),)
+	mkdir -p $$(I_$(1))/lib/modules/$(LINUX_VERSION)
+	$(CP) $(3) $$(I_$(1))/lib/modules/$(LINUX_VERSION)
+endif
+ifneq ($(6),)
+	mkdir -p $$(I_$(1))/etc/modules.d
+	for module in $(7); do \
+		echo $$$$module >> $$(I_$(1))/etc/modules.d/$(6)-$(2); \
+	done
+	echo "#!/bin/sh" >> $$(I_$(1))/CONTROL/postinst
+	echo "[ -z \"\$$$$IPKG_INSTROOT\" ] || exit" >> $$(I_$(1))/CONTROL/postinst
+	echo ". /etc/functions.sh" >> $$(I_$(1))/CONTROL/postinst
+	echo "load_modules /etc/modules.d/$(6)-$(2)" >> $$(I_$(1))/CONTROL/postinst
+	chmod 0755 $$(I_$(1))/CONTROL/postinst
+endif
+	$(8)
+	$(IPKG_BUILD) $$(I_$(1)) $(PACKAGE_DIR)
+endef
+
+

--- /dev/null
+++ b/include/modules-2.4.mk
@@ -1,1 +1,321 @@
-
+include $(TOPDIR)/include/netfilter.mk
+
+# Networking
+
+$(eval $(call KMOD_template,ATM,atm,\
+	$(MODULES_DIR)/kernel/net/atm/atm.o \
+	$(MODULES_DIR)/kernel/net/atm/br2684.o \
+,CONFIG_ATM,,50,atm))
+
+$(eval $(call KMOD_template,GRE,gre,\
+	$(MODULES_DIR)/kernel/net/ipv4/ip_gre.o \
+,CONFIG_NET_IPGRE))
+
+$(eval $(call KMOD_template,IMQ,imq,\
+	$(MODULES_DIR)/kernel/net/ipv4/netfilter/*IMQ*.o \
+	$(MODULES_DIR)/kernel/drivers/net/imq.o \
+))
+$(eval $(call KMOD_template,IPIP,ipip,\
+	$(MODULES_DIR)/kernel/net/ipv4/ipip.o \
+,CONFIG_NET_IPIP,,60,ipip))
+
+$(eval $(call KMOD_template,IPV6,ipv6,\
+	$(MODULES_DIR)/kernel/net/ipv6/ipv6.o \
+,CONFIG_IPV6,,20,ipv6))
+
+$(eval $(call KMOD_template,PPP,ppp,\
+	$(MODULES_DIR)/kernel/drivers/net/ppp_async.o \
+	$(MODULES_DIR)/kernel/drivers/net/ppp_generic.o \
+	$(MODULES_DIR)/kernel/drivers/net/slhc.o \
+	$(MODULES_DIR)/kernel/drivers/net/pppox.o \
+,CONFIG_PPP))
+
+$(eval $(call KMOD_template,MPPE,mppe,\
+	$(MODULES_DIR)/kernel/drivers/net/ppp_mppe_mppc.o \
+,CONFIG_PPP_MPPE_MPPC))
+
+$(eval $(call KMOD_template,PPPOATM,pppoatm,\
+	$(MODULES_DIR)/kernel/net/atm/pppoatm.o \
+,CONFIG_PPPOATM))
+
+$(eval $(call KMOD_template,PPPOE,pppoe,\
+	$(MODULES_DIR)/kernel/drivers/net/pppoe.o \
+,CONFIG_PPPOE))
+
+$(eval $(call KMOD_template,SCHED,sched,\
+	$(MODULES_DIR)/kernel/net/sched/*.o \
+))
+
+$(eval $(call KMOD_template,TUN,tun,\
+	$(MODULES_DIR)/kernel/drivers/net/tun.o \
+,CONFIG_TUN,,20,tun))
+
+# Filtering / Firewalling
+
+$(eval $(call KMOD_template,ARPTABLES,arptables,\
+	$(MODULES_DIR)/kernel/net/ipv4/netfilter/arp*.o \
+,CONFIG_IP_NF_ARPTABLES))
+
+$(eval $(call KMOD_template,EBTABLES,ebtables,\
+	$(MODULES_DIR)/kernel/net/bridge/netfilter/*.o \
+,CONFIG_BRIDGE_NF_EBTABLES))
+
+# metapackage for compatibility ...
+$(eval $(call KMOD_template,IPTABLES_EXTRA,iptables-extra,\
+,,kmod-ipt-conntrack kmod-ipt-extra kmod-ipt-filter kmod-ipt-ipopt kmod-ipt-ipsec kmod-ipt-nat kmod-ipt-nat-extra kmod-ipt-queue kmod-ipt-ulogd))
+
+$(eval $(call KMOD_template,IPT_CONNTRACK,ipt-conntrack,\
+	$(foreach mod,$(IPT_CONNTRACK-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
+))
+
+$(eval $(call KMOD_template,IPT_EXTRA,ipt-extra,\
+	$(foreach mod,$(IPT_EXTRA-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
+))
+
+$(eval $(call KMOD_template,IPT_FILTER,ipt-filter,\
+	$(foreach mod,$(IPT_FILTER-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
+))
+
+$(eval $(call KMOD_template,IPT_IPOPT,ipt-ipopt,\
+	$(foreach mod,$(IPT_IPOPT-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
+))
+
+$(eval $(call KMOD_template,IPT_IPSEC,ipt-ipsec,\
+	$(foreach mod,$(IPT_IPSEC-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
+))
+
+$(eval $(call KMOD_template,IPT_NAT,ipt-nat,\
+	$(foreach mod,$(IPT_NAT-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
+))
+
+$(eval $(call KMOD_template,IPT_NAT_EXTRA,ipt-nat-extra,\
+	$(foreach mod,$(IPT_NAT_EXTRA-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
+,,,40,$(IPT_NAT_EXTRA-m)))
+
+$(eval $(call KMOD_template,IPT_QUEUE,ipt-queue,\
+	$(foreach mod,$(IPT_QUEUE-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
+))
+
+$(eval $(call KMOD_template,IPT_ULOG,ipt-ulog,\
+	$(foreach mod,$(IPT_ULOG-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
+))
+
+$(eval $(call KMOD_template,IP6TABLES,ip6tables,\
+	$(MODULES_DIR)/kernel/net/ipv6/netfilter/ip*.o \
+,CONFIG_IP6_NF_IPTABLES,kmod-ipv6))
+
+
+# Block devices
+
+$(eval $(call KMOD_template,IDE,ide,\
+	$(MODULES_DIR)/kernel/drivers/ide/*.o \
+	$(MODULES_DIR)/kernel/drivers/ide/*/*.o \
+,CONFIG_IDE,,20,pdc202xx_old ide-core ide-detect ide-disk))
+
+$(eval $(call KMOD_template,LOOP,loop,\
+    $(MODULES_DIR)/kernel/drivers/block/loop.o \
+,CONFIG_BLK_DEV_LOOP,,20,loop))
+
+$(eval $(call KMOD_template,NBD,nbd,\
+    $(MODULES_DIR)/kernel/drivers/block/nbd.o \
+,CONFIG_BLK_DEV_NBD,,20,nbd))
+
+
+# Crypto
+
+ifneq ($(wildcard $(MODULES_DIR)/kernel/crypto/*.o),)
+CONFIG_CRYPTO:=m
+endif
+$(eval $(call KMOD_template,CRYPTO,crypto,\
+	$(MODULES_DIR)/kernel/crypto/*.o \
+,CONFIG_CRYPTO))
+
+
+# Filesystems
+
+$(eval $(call KMOD_template,FS_CIFS,fs-cifs,\
+	$(MODULES_DIR)/kernel/fs/cifs/cifs.o \
+,CONFIG_CIFS,,30,cifs))
+
+$(eval $(call KMOD_template,FS_MINIX,fs-minix,\
+	$(MODULES_DIR)/kernel/fs/minix/*.o \
+,CONFIG_MINIX_FS,,30,minix))
+
+$(eval $(call KMOD_template,FS_EXT2,fs-ext2,\
+	$(MODULES_DIR)/kernel/fs/ext2/*.o \
+,CONFIG_EXT2_FS,,30,ext2))
+
+$(eval $(call KMOD_template,FS_EXT3,fs-ext3,\
+	$(MODULES_DIR)/kernel/fs/ext3/*.o \
+	$(MODULES_DIR)/kernel/fs/jbd/*.o \
+,CONFIG_EXT3_FS,,30,jbd ext3))
+
+$(eval $(call KMOD_template,FS_HFSPLUS,fs-hfsplus,\
+	$(MODULES_DIR)/kernel/fs/hfsplus/*.o \
+,CONFIG_HFSPLUS_FS,,30,hfsplus))
+
+$(eval $(call KMOD_template,FS_NFS,fs-nfs,\
+	$(MODULES_DIR)/kernel/fs/lockd/*.o \
+	$(MODULES_DIR)/kernel/fs/nfs/*.o \
+	$(MODULES_DIR)/kernel/net/sunrpc/*.o \
+,CONFIG_NFS_FS,,30,sunrpc lockd nfs))
+
+$(eval $(call KMOD_template,FS_VFAT,fs-vfat,\
+	$(MODULES_DIR)/kernel/fs/vfat/vfat.o \
+	$(MODULES_DIR)/kernel/fs/fat/fat.o \
+,CONFIG_VFAT_FS,,30,fat vfat))
+
+$(eval $(call KMOD_template,FS_XFS,fs-xfs,\
+	$(MODULES_DIR)/kernel/fs/xfs/*.o \
+,CONFIG_XFS_FS,,30,xfs))
+
+
+# Multimedia
+
+$(eval $(call KMOD_template,PWC,pwc,\
+	$(MODULES_DIR)/kernel/drivers/usb/pwc.o \
+,CONFIG_USB_PWC,kmod-videodev,63,pwc))
+
+$(eval $(call KMOD_template,SOUNDCORE,soundcore,\
+	$(MODULES_DIR)/kernel/drivers/sound/soundcore.o \
+,CONFIG_SOUND,,30,soundcore))
+
+$(eval $(call KMOD_template,VIDEODEV,videodev,\
+	$(MODULES_DIR)/kernel/drivers/media/video/videodev.o \
+,CONFIG_VIDEO_DEV,,62,videodev))
+
+
+# Network devices
+
+$(eval $(call KMOD_template,NET_3C59X,net-3c59x,\
+	$(MODULES_DIR)/kernel/drivers/net/3c59x.o \
+,CONFIG_VORTEX,,10,3c59x))
+
+$(eval $(call KMOD_template,NET_8139TOO,net-8139too,\
+	$(MODULES_DIR)/kernel/drivers/net/8139too.o \
+	$(MODULES_DIR)/kernel/drivers/net/mii.o \
+,CONFIG_8139TOO,,10,mii 8139too))
+
+$(eval $(call KMOD_template,NET_AIRO,net-airo,\
+	$(MODULES_DIR)/kernel/drivers/net/wireless/airo.o \
+,CONFIG_AIRO,,10,airo))
+
+$(eval $(call KMOD_template,NET_E100,net-e100,\
+	$(MODULES_DIR)/kernel/drivers/net/e100.o \
+,CONFIG_E100,,10,e100))
+
+$(eval $(call KMOD_template,NET_HERMES,net-hermes,\
+	$(MODULES_DIR)/kernel/drivers/net/wireless/hermes.o \
+	$(MODULES_DIR)/kernel/drivers/net/wireless/orinoco.o \
+,CONFIG_HERMES,,10,hermes orinoco))
+
+$(eval $(call KMOD_template,NET_HERMES_PCI,net-hermes-pci,\
+	$(MODULES_DIR)/kernel/drivers/net/wireless/orinoco_pci.o \
+,CONFIG_PCI_HERMES,kmod-net-hermes,11,orinoco_pci))
+
+$(eval $(call KMOD_template,NET_HERMES_PCI,net-hermes-plx,\
+	$(MODULES_DIR)/kernel/drivers/net/wireless/orinoco_plx.o \
+,CONFIG_PLX_HERMES,kmod-net-hermes,11,orinoco_plx))
+
+$(eval $(call KMOD_template,NET_NATSEMI,net-natsemi,\
+	$(MODULES_DIR)/kernel/drivers/net/natsemi.o \
+,CONFIG_NATSEMI,,10,natsemi))
+
+$(eval $(call KMOD_template,NET_PRISM54,net-prism54,\
+	$(MODULES_DIR)/kernel/drivers/net/wireless/prism54/prism54.o \
+,CONFIG_PRISM54,,10,prism54))
+
+
+# PCMCIA/CardBus
+
+$(eval $(call KMOD_template,PCMCIA_CORE,pcmcia-core,\
+	$(MODULES_DIR)/kernel/drivers/pcmcia/pcmcia_core.o \
+	$(MODULES_DIR)/kernel/drivers/pcmcia/yenta_socket.o \
+	$(MODULES_DIR)/kernel/drivers/pcmcia/ds.o \
+,CONFIG_PCMCIA,,50,pcmcia_core yenta_socket ds))
+
+$(eval $(call KMOD_template,PCMCIA_SERIAL,pcmcia-serial,\
+	$(MODULES_DIR)/kernel/drivers/char/pcmcia/serial_cs.o \
+,CONFIG_PCMCIA_SERIAL_CS,kmod-pcmcia-core,51,serial_cs))
+
+
+# USB
+
+$(eval $(call KMOD_template,USB,usb-core,\
+	$(MODULES_DIR)/kernel/drivers/usb/usbcore.o \
+,CONFIG_USB,,50,usbcore))
+
+$(eval $(call KMOD_template,USB_OHCI,usb-ohci,\
+	$(MODULES_DIR)/kernel/drivers/usb/host/usb-ohci.o \
+,CONFIG_USB_OHCI,kmod-usb-core,60,usb-ohci))
+
+$(eval $(call KMOD_template,USB_UHCI,usb-uhci,\
+	$(MODULES_DIR)/kernel/drivers/usb/host/uhci.o \
+,CONFIG_USB_UHCI_ALT,kmod-usb-core,60,uhci))
+
+$(eval $(call KMOD_template,USB2,usb2,\
+	$(MODULES_DIR)/kernel/drivers/usb/host/ehci-hcd.o \
+,CONFIG_USB_EHCI_HCD,kmod-usb-core,60,ehci-hcd))
+
+$(eval $(call KMOD_template,USB_ACM,usb-acm,\
+	$(MODULES_DIR)/kernel/drivers/usb/acm.o \
+,CONFIG_USB_ACM))
+
+$(eval $(call KMOD_template,USB_AUDIO,usb-audio,\
+	$(MODULES_DIR)/kernel/drivers/usb/audio.o \
+,CONFIG_USB_AUDIO,kmod-soundcore kmod-usb-core,61,audio))
+
+$(eval $(call KMOD_template,USB_PRINTER,usb-printer,\
+	$(MODULES_DIR)/kernel/drivers/usb/printer.o \
+,CONFIG_USB_PRINTER,kmod-usb-core,60,printer))
+
+$(eval $(call KMOD_template,USB_SERIAL,usb-serial,\
+	$(MODULES_DIR)/kernel/drivers/usb/serial/usbserial.o \
+,CONFIG_USB_SERIAL,kmod-usb-core,60,usbserial))
+
+$(eval $(call KMOD_template,USB_SERIAL_BELKIN,usb-serial-belkin,\
+	$(MODULES_DIR)/kernel/drivers/usb/serial/belkin_sa.o \
+,CONFIG_USB_SERIAL_BELKIN,kmod-usb-serial,61,belkin_sa))
+
+$(eval $(call KMOD_template,USB_SERIAL_FTDI,usb-serial-ftdi,\
+	$(MODULES_DIR)/kernel/drivers/usb/serial/ftdi_sio.o \
+,CONFIG_USB_SERIAL_FTDI_SIO,kmod-usb-serial,61,ftdi_sio))
+
+$(eval $(call KMOD_template,USB_SERIAL_MCT_U232,usb-serial-mct-u232,\
+	$(MODULES_DIR)/kernel/drivers/usb/serial/mct_u232.o \
+,CONFIG_USB_SERIAL_MCT_U232,kmod-usb-serial,61,mct_u232))
+
+$(eval $(call KMOD_template,USB_SERIAL_PL2303,usb-serial-pl2303,\
+	$(MODULES_DIR)/kernel/drivers/usb/serial/pl2303.o \
+,CONFIG_USB_SERIAL_PL2303,kmod-usb-serial,61,pl2303))
+
+$(eval $(call KMOD_template,USB_SERIAL_VISOR,usb-serial-visor,\
+	$(MODULES_DIR)/kernel/drivers/usb/serial/visor.o \
+,CONFIG_USB_SERIAL_VISOR,kmod-usb-serial,61,visor))
+
+$(eval $(call KMOD_template,USB_STORAGE,usb-storage,\
+	$(MODULES_DIR)/kernel/drivers/scsi/*.o \
+	$(MODULES_DIR)/kernel/drivers/usb/storage/*.o \
+,CONFIG_USB_STORAGE,kmod-usb-core,60,scsi_mod sd_mod usb-storage))
+
+
+# Misc. devices
+
+$(eval $(call KMOD_template,AX25,ax25,\
+	$(MODULES_DIR)/kernel/net/ax25/ax25.o \
+	$(MODULES_DIR)/kernel/drivers/net/hamradio/mkiss.o \
+,CONFIG_AX25,,90,ax25 mkiss))
+
+$(eval $(call KMOD_template,BLUETOOTH,bluetooth,\
+	$(MODULES_DIR)/kernel/net/bluetooth/*.o \
+	$(MODULES_DIR)/kernel/net/bluetooth/rfcomm/*.o \
+	$(MODULES_DIR)/kernel/drivers/bluetooth/*.o \
+,CONFIG_BLUEZ))
+
+$(eval $(call KMOD_template,SOFTDOG,softdog,\
+	$(MODULES_DIR)/kernel/drivers/char/softdog.o \
+,CONFIG_SOFT_WATCHDOG,,95,softdog))
+
+
+
+

--- /dev/null
+++ b/include/modules-2.6.mk
@@ -1,1 +1,358 @@
-
+NF_2_6:=1
+include $(TOPDIR)/include/netfilter.mk
+
+# Networking
+
+$(eval $(call KMOD_template,ATM,atm,\
+	$(MODULES_DIR)/kernel/net/atm/atm.ko \
+	$(MODULES_DIR)/kernel/net/atm/br2684.ko \
+	$(MODULES_DIR)/kernel/drivers/atm/atmtcp.ko \
+,CONFIG_ATM,,50,atm))
+
+$(eval $(call KMOD_template,GRE,gre,\
+	$(MODULES_DIR)/kernel/net/ipv4/ip_gre.ko \
+,CONFIG_NET_IPGRE))
+
+$(eval $(call KMOD_template,IMQ,imq,\
+	$(MODULES_DIR)/kernel/net/ipv4/netfilter/*IMQ*.ko \
+	$(MODULES_DIR)/kernel/drivers/net/imq.ko \
+))
+
+$(eval $(call KMOD_template,IPIP,ipip,\
+	$(MODULES_DIR)/kernel/net/ipv4/ipip.ko \
+,CONFIG_NET_IPIP,,60,ipip))
+
+$(eval $(call KMOD_template,IPV6,ipv6,\
+	$(MODULES_DIR)/kernel/net/ipv6/ipv6.ko \
+,CONFIG_IPV6,,20,ipv6))
+
+$(eval $(call KMOD_template,PPP,ppp,\
+	$(MODULES_DIR)/kernel/drivers/net/ppp_async.ko \
+	$(MODULES_DIR)/kernel/drivers/net/ppp_generic.ko \
+	$(MODULES_DIR)/kernel/drivers/net/slhc.ko \
+	$(MODULES_DIR)/kernel/lib/crc-ccitt.ko \
+,CONFIG_PPP))
+
+#$(eval $(call KMOD_template,MPPE,mppe,\
+#	$(MODULES_DIR)/kernel/drivers/net/ppp_mppe_mppc.ko \
+#,CONFIG_PPP_MPPE_MPPC))
+
+$(eval $(call KMOD_template,PPPOATM,pppoatm,\
+	$(MODULES_DIR)/kernel/net/atm/pppoatm.ko \
+,CONFIG_PPPOATM))
+
+$(eval $(call KMOD_template,PPPOE,pppoe,\
+	$(MODULES_DIR)/kernel/drivers/net/pppoe.ko \
+	$(MODULES_DIR)/kernel/drivers/net/pppox.ko \
+,CONFIG_PPPOE))
+
+$(eval $(call KMOD_template,SCHED,sched,\
+	$(MODULES_DIR)/kernel/net/sched/*.ko \
+))
+
+$(eval $(call KMOD_template,TUN,tun,\
+	$(MODULES_DIR)/kernel/drivers/net/tun.ko \
+,CONFIG_TUN,,20,tun))
+
+
+# Filtering / Firewalling
+
+$(eval $(call KMOD_template,ARPTABLES,arptables,\
+	$(MODULES_DIR)/kernel/net/ipv4/netfilter/arp*.ko \
+,CONFIG_IP_NF_ARPTABLES))
+
+$(eval $(call KMOD_template,EBTABLES,ebtables,\
+	$(MODULES_DIR)/kernel/net/bridge/netfilter/*.ko \
+,CONFIG_BRIDGE_NF_EBTABLES))
+
+# metapackage for compatibility ...
+$(eval $(call KMOD_template,IPTABLES_EXTRA,iptables-extra,\
+,,kmod-ipt-conntrack kmod-ipt-extra kmod-ipt-filter kmod-ipt-ipopt kmod-ipt-ipsec kmod-ipt-nat kmod-ipt-nat-extra kmod-ipt-queue kmod-ipt-ulogd))
+
+$(eval $(call KMOD_template,IPT_CONNTRACK,ipt-conntrack,\
+	$(foreach mod,$(IPT_CONNTRACK-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
+))
+
+$(eval $(call KMOD_template,IPT_EXTRA,ipt-extra,\
+	$(foreach mod,$(IPT_EXTRA-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
+))
+
+$(eval $(call KMOD_template,IPT_FILTER,ipt-filter,\
+	$(foreach mod,$(IPT_FILTER-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
+))
+
+$(eval $(call KMOD_template,IPT_IPOPT,ipt-ipopt,\
+	$(foreach mod,$(IPT_IPOPT-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
+))
+
+$(eval $(call KMOD_template,IPT_IPSEC,ipt-ipsec,\
+	$(foreach mod,$(IPT_IPSEC-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
+))
+
+$(eval $(call KMOD_template,IPT_NAT,ipt-nat,\
+	$(foreach mod,$(IPT_NAT-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
+))
+
+$(eval $(call KMOD_template,IPT_NAT_EXTRA,ipt-nat-extra,\
+	$(foreach mod,$(IPT_NAT_EXTRA-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
+,,,40,$(IPT_NAT_EXTRA-m)))
+
+$(eval $(call KMOD_template,IPT_QUEUE,ipt-queue,\
+	$(foreach mod,$(IPT_QUEUE-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
+))
+
+$(eval $(call KMOD_template,IPT_ULOG,ipt-ulog,\
+	$(foreach mod,$(IPT_ULOG-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
+))
+
+$(eval $(call KMOD_template,IP6TABLES,ip6tables,\
+	$(MODULES_DIR)/kernel/net/ipv6/netfilter/ip*.ko \
+,CONFIG_IP6_NF_IPTABLES,kmod-ipv6))
+
+
+# Block devices
+
+$(eval $(call KMOD_template,IDE,ide,\
+	$(MODULES_DIR)/kernel/drivers/ide/*.ko \
+	$(MODULES_DIR)/kernel/drivers/ide/*/*.ko \
+,CONFIG_IDE))
+
+$(eval $(call KMOD_template,LOOP,loop,\
+    $(MODULES_DIR)/kernel/drivers/block/loop.ko \
+,CONFIG_BLK_DEV_LOOP,,20,loop))
+
+$(eval $(call KMOD_template,NBD,nbd,\
+    $(MODULES_DIR)/kernel/drivers/block/nbd.ko \
+,CONFIG_BLK_DEV_NBD,,20,nbd))
+
+
+# Crypto
+
+$(eval $(call KMOD_template,CRYPTO,crypto,\
+	$(MODULES_DIR)/kernel/crypto/*.ko \
+))
+
+
+# Filesystems
+
+$(eval $(call KMOD_template,FS_CIFS,fs-cifs,\
+	$(MODULES_DIR)/kernel/fs/cifs/cifs.ko \
+,CONFIG_CIFS,kmod-nls-base,30,cifs))
+
+$(eval $(call KMOD_template,FS_MINIX,fs-minix,\
+	$(MODULES_DIR)/kernel/fs/minix/minix.ko \
+,CONFIG_MINIX_FS,,30,minix))
+
+$(eval $(call KMOD_template,FS_EXT2,fs-ext2,\
+	$(MODULES_DIR)/kernel/fs/ext2/ext2.ko \
+,CONFIG_EXT2_FS,,30,ext2))
+
+$(eval $(call KMOD_template,FS_EXT3,fs-ext3,\
+	$(MODULES_DIR)/kernel/fs/ext3/ext3.ko \
+	$(MODULES_DIR)/kernel/fs/jbd/jbd.ko \
+,CONFIG_EXT3_FS,,30,jbd ext3))
+
+$(eval $(call KMOD_template,FS_HFSPLUS,fs-hfsplus,\
+	$(MODULES_DIR)/kernel/fs/hfsplus/hfsplus.ko \
+,CONFIG_HFSPLUS_FS,kmod-nls-base,30,hfsplus))
+
+$(eval $(call KMOD_template,FS_NFS,fs-nfs,\
+	$(MODULES_DIR)/kernel/fs/lockd/lockd.ko \
+	$(MODULES_DIR)/kernel/fs/nfs/nfs.ko \
+	$(MODULES_DIR)/kernel/net/sunrpc/sunrpc.ko \
+,CONFIG_NFS_FS,,30,sunrpc lockd nfs))
+
+$(eval $(call KMOD_template,FS_VFAT,fs-vfat,\
+	$(MODULES_DIR)/kernel/fs/fat/fat.ko \
+	$(MODULES_DIR)/kernel/fs/vfat/vfat.ko \
+,CONFIG_VFAT_FS,kmod-nls-base,30,fat vfat))
+
+$(eval $(call KMOD_template,FS_XFS,fs-xfs,\
+	$(MODULES_DIR)/kernel/fs/xfs/xfs.ko \
+,CONFIG_XFS_FS,,30,xfs))
+
+
+# Multimedia
+
+$(eval $(call KMOD_template,PWC,pwc,\
+	$(MODULES_DIR)/kernel/drivers/usb/media/pwc/pwc.ko \
+,CONFIG_USB_PWC,kmod-videodev,63,pwc))
+
+$(eval $(call KMOD_template,SOUNDCORE,soundcore,\
+	$(MODULES_DIR)/kernel/sound/soundcore.ko \
+,CONFIG_SOUND,,30,soundcore))
+
+$(eval $(call KMOD_template,VIDEODEV,videodev,\
+	$(MODULES_DIR)/kernel/drivers/media/video/v4l1-compat.ko \
+	$(MODULES_DIR)/kernel/drivers/media/video/v4l2-common.ko \
+	$(MODULES_DIR)/kernel/drivers/media/video/videodev.ko \
+,CONFIG_VIDEO_DEV,,62,videodev))
+
+
+# NLS
+
+$(eval $(call KMOD_template,NLS_BASE,nls-base,\
+	$(MODULES_DIR)/kernel/fs/nls/nls_base.ko \
+,CONFIG_NLS,,20,nls_base))
+
+$(eval $(call KMOD_template,NLS_CP437,nls-cp437,\
+	$(MODULES_DIR)/kernel/fs/nls/nls_cp437.ko \
+,CONFIG_NLS_CODEPAGE_437,,20,nls_cp437))
+
+$(eval $(call KMOD_template,NLS_CP850,nls-cp850,\
+	$(MODULES_DIR)/kernel/fs/nls/nls_cp850.ko \
+,CONFIG_NLS_CODEPAGE_850,,20,nls_cp850))
+
+$(eval $(call KMOD_template,NLS_ISO8859_1,nls-iso8859-1,\
+	$(MODULES_DIR)/kernel/fs/nls/nls_iso8859-1.ko \
+,CONFIG_NLS_ISO8859_1,,20,nls_iso8859-1))
+
+$(eval $(call KMOD_template,NLS_ISO8859_15,nls-iso8859-15,\
+	$(MODULES_DIR)/kernel/fs/nls/nls_iso8859-15.ko \
+,CONFIG_NLS_ISO8859_15,,20,nls_iso8859-15))
+
+$(eval $(call KMOD_template,NLS_UTF8,nls-utf8,\
+	$(MODULES_DIR)/kernel/fs/nls/nls_utf8.ko \
+,CONFIG_NLS_UTF8,,20,nls_utf8))
+
+
+# Network devices
+
+$(eval $(call KMOD_template,NET_3C59X,net-3c59x,\
+	$(MODULES_DIR)/kernel/drivers/net/3c59x.ko \
+,CONFIG_VORTEX,,10,3c59x))
+
+$(eval $(call KMOD_template,NET_8139TOO,net-8139too,\
+	$(MODULES_DIR)/kernel/drivers/net/8139too.ko \
+,CONFIG_8139TOO,,10,8139too))
+
+$(eval $(call KMOD_template,NET_AIRO,net-airo,\
+	$(MODULES_DIR)/kernel/drivers/net/wireless/airo.ko \
+,CONFIG_AIRO,,10,airo))
+
+$(eval $(call KMOD_template,NET_E100,net-e100,\
+	$(MODULES_DIR)/kernel/drivers/net/e100.ko \
+,CONFIG_E100,,10,e100))
+
+$(eval $(call KMOD_template,NET_HERMES,net-hermes,\
+	$(MODULES_DIR)/kernel/drivers/net/wireless/hermes.ko \
+	$(MODULES_DIR)/kernel/drivers/net/wireless/orinoco.ko \
+,CONFIG_HERMES,,10,hermes orinoco))
+
+$(eval $(call KMOD_template,NET_HERMES_PCI,net-hermes-pci,\
+	$(MODULES_DIR)/kernel/drivers/net/wireless/orinoco_pci.ko \
+,CONFIG_PCI_HERMES,kmod-net-hermes,11,orinoco_pci))
+
+$(eval $(call KMOD_template,NET_HERMES_PCI,net-hermes-plx,\
+	$(MODULES_DIR)/kernel/drivers/net/wireless/orinoco_plx.ko \
+,CONFIG_PLX_HERMES,kmod-net-hermes,11,orinoco_plx))
+
+$(eval $(call KMOD_template,NET_NATSEMI,net-natsemi,\
+	$(MODULES_DIR)/kernel/drivers/net/natsemi.ko \
+,CONFIG_NATSEMI,,10,natsemi))
+
+$(eval $(call KMOD_template,NET_PRISM54,net-prism54,\
+	$(MODULES_DIR)/kernel/drivers/net/wireless/prism54/prism54.ko \
+,CONFIG_PRISM54,,10,prism54))
+
+
+# PCMCIA/CardBus
+
+$(eval $(call KMOD_template,PCMCIA_CORE,pcmcia-core,\
+	$(MODULES_DIR)/kernel/drivers/pcmcia/pcmcia.ko \
+	$(MODULES_DIR)/kernel/drivers/pcmcia/pcmcia_core.ko \
+	$(MODULES_DIR)/kernel/drivers/pcmcia/yenta_socket.ko \
+	$(MODULES_DIR)/kernel/drivers/pcmcia/rsrc_nonstatic.ko \
+,CONFIG_PCMCIA,,50,pcmcia_core pcmcia yenta_socket rsrc_nonstatic))
+
+$(eval $(call KMOD_template,PCMCIA_SERIAL,pcmcia-serial,\
+	$(MODULES_DIR)/kernel/drivers/serial/serial_cs.ko \
+,CONFIG_SERIAL_8250_CS))
+
+
+# USB
+
+$(eval $(call KMOD_template,USB,usb-core,\
+	$(MODULES_DIR)/kernel/drivers/usb/core/usbcore.ko \
+,CONFIG_USB,,50,usbcore))
+
+$(eval $(call KMOD_template,USB_OHCI,usb-ohci,\
+	$(MODULES_DIR)/kernel/drivers/usb/host/ohci-hcd.ko \
+,CONFIG_USB_OHCI_HCD,kmod-usb-core,60,ohci-hcd))
+
+$(eval $(call KMOD_template,USB_UHCI,usb-uhci,\
+	$(MODULES_DIR)/kernel/drivers/usb/host/uhci-hcd.ko \
+,CONFIG_USB_UHCI_HCD,kmod-usb-core,60,uhci-hcd))
+
+$(eval $(call KMOD_template,USB2,usb2,\
+	$(MODULES_DIR)/kernel/drivers/usb/host/ehci-hcd.ko \
+,CONFIG_USB_EHCI_HCD,kmod-usb-core,60,ehci-hcd))
+
+$(eval $(call KMOD_template,USB_ACM,usb-acm,\
+	$(MODULES_DIR)/kernel/drivers/usb/class/cdc-acm.ko \
+,CONFIG_USB_ACM))
+
+$(eval $(call KMOD_template,USB_AUDIO,usb-audio,\
+	$(MODULES_DIR)/kernel/drivers/usb/class/audio.ko \
+,CONFIG_USB_AUDIO,kmod-soundcore kmod-usb-core,61,audio))
+
+$(eval $(call KMOD_template,USB_PRINTER,usb-printer,\
+	$(MODULES_DIR)/kernel/drivers/usb/class/usblp.ko \
+,CONFIG_USB_PRINTER,kmod-usb-core,60,usblp))
+
+$(eval $(call KMOD_template,USB_SERIAL,usb-serial,\
+	$(MODULES_DIR)/kernel/drivers/usb/serial/usbserial.ko \
+,CONFIG_USB_SERIAL,kmod-usb-core,60,usbserial))
+
+$(eval $(call KMOD_template,USB_SERIAL_BELKIN,usb-serial-belkin,\
+	$(MODULES_DIR)/kernel/drivers/usb/serial/belkin_sa.ko \
+,CONFIG_USB_SERIAL_BELKIN,kmod-usb-serial,61,belkin_sa))
+
+$(eval $(call KMOD_template,USB_SERIAL_FTDI,usb-serial-ftdi,\
+	$(MODULES_DIR)/kernel/drivers/usb/serial/ftdi_sio.ko \
+,CONFIG_USB_SERIAL_FTDI_SIO,kmod-usb-serial,61,ftdi_sio))
+
+$(eval $(call KMOD_template,USB_SERIAL_MCT_U232,usb-serial-mct-u232,\
+	$(MODULES_DIR)/kernel/drivers/usb/serial/mct_u232.ko \
+,CONFIG_USB_SERIAL_MCT_U232,kmod-usb-serial,61,mct_u232))
+
+$(eval $(call KMOD_template,USB_SERIAL_PL2303,usb-serial-pl2303,\
+	$(MODULES_DIR)/kernel/drivers/usb/serial/pl2303.ko \
+,CONFIG_USB_SERIAL_PL2303,kmod-usb-serial,61,pl2303))
+
+$(eval $(call KMOD_template,USB_SERIAL_VISOR,usb-serial-visor,\
+	$(MODULES_DIR)/kernel/drivers/usb/serial/visor.ko \
+,CONFIG_USB_SERIAL_VISOR,kmod-usb-serial,61,visor))
+
+$(eval $(call KMOD_template,USB_STORAGE,usb-storage,\
+	$(MODULES_DIR)/kernel/drivers/scsi/scsi_mod.ko \
+	$(MODULES_DIR)/kernel/drivers/scsi/sd_mod.ko \
+	$(MODULES_DIR)/kernel/drivers/usb/storage/usb-storage.ko \
+,CONFIG_USB_STORAGE,kmod-usb-core,60,scsi_mod sd_mod usb-storage))
+
+$(eval $(call KMOD_template,USB_ATM,usb-atm,\
+        $(MODULES_DIR)/kernel/drivers/usb/atm/usbatm.ko \
+	,CONFIG_USB_ATM,kmod-usb-atm,50,usbatm))
+
+$(eval $(call KMOD_template,USB_ATM_SPEEDTOUCH,usb-atm-speedtouch,\
+        $(MODULES_DIR)/kernel/drivers/usb/atm/speedtch.ko \
+	,CONFIG_USB_SPEEDTOUCH,kmod-usb-atm-speedtouch,50,speedtch))
+
+# Misc. devices
+
+$(eval $(call KMOD_template,AX25,ax25,\
+	$(MODULES_DIR)/kernel/net/ax25/ax25.ko \
+	$(MODULES_DIR)/kernel/drivers/net/hamradio/mkiss.ko \
+,CONFIG_AX25,,90,ax25 mkiss))
+
+$(eval $(call KMOD_template,BLUETOOTH,bluetooth,\
+	$(MODULES_DIR)/kernel/net/bluetooth/bluetooth.ko \
+	$(MODULES_DIR)/kernel/net/bluetooth/l2cap.ko \
+	$(MODULES_DIR)/kernel/net/bluetooth/sco.ko \
+	$(MODULES_DIR)/kernel/net/bluetooth/rfcomm/rfcomm.ko \
+	$(MODULES_DIR)/kernel/drivers/bluetooth/hci_uart.ko \
+	$(MODULES_DIR)/kernel/drivers/bluetooth/hci_usb.ko \
+,CONFIG_BT))
+
+
+

--- /dev/null
+++ b/include/netfilter.mk
@@ -1,1 +1,117 @@
+# $Id: netfilter.mk 2411 2005-11-11 03:41:43Z nico $
 
+ifeq ($(NF_2_6),1)
+P_V4:=ipv4/netfilter/
+P_XT:=netfilter/
+else
+P_V4:=
+P_XT:=
+endif
+
+IPT_CONNTRACK-m :=
+IPT_CONNTRACK-$(CONFIG_IP_NF_MATCH_CONNMARK) += $(P_V4)ipt_connmark
+IPT_CONNTRACK-$(CONFIG_IP_NF_TARGET_CONNMARK) += $(P_V4)ipt_CONNMARK
+IPT_CONNTRACK-$(CONFIG_IP_NF_MATCH_CONNTRACK) += $(P_V4)ipt_conntrack
+IPT_CONNTRACK-$(CONFIG_IP_NF_MATCH_HELPER) += $(P_V4)ipt_helper
+IPT_CONNTRACK-$(CONFIG_IP_NF_MATCH_STATE) += $(P_V4)ipt_state
+IPT_CONNTRACK-$(CONFIG_NETFILTER_XT_MATCH_CONNTRACK) += $(P_XT)xt_conntrack
+IPT_CONNTRACK-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += $(P_XT)xt_helper
+IPT_CONNTRACK-$(CONFIG_NETFILTER_XT_MATCH_STATE) += $(P_XT)xt_state
+
+
+IPT_EXTRA-m :=
+IPT_EXTRA-$(CONFIG_IP_NF_MATCH_CONDITION) += $(P_V4)ipt_condition
+IPT_EXTRA-$(CONFIG_IP_NF_MATCH_CONNBYTES) += $(P_V4)ipt_connbytes
+IPT_EXTRA-$(CONFIG_NETFILTER_XT_MATCH_CONNBYTES) += $(P_XT)xt_connbytes
+IPT_EXTRA-$(CONFIG_IP_NF_MATCH_LIMIT) += $(P_V4)ipt_limit
+IPT_EXTRA-$(CONFIG_NETFILTER_XT_MATCH_LIMIT) += $(P_XT)xt_limit
+IPT_EXTRA-$(CONFIG_IP_NF_TARGET_LOG) += $(P_V4)ipt_LOG
+IPT_EXTRA-$(CONFIG_IP_NF_MATCH_MULTIPORT) += $(P_XT)xt_multiport
+IPT_EXTRA-$(CONFIG_NETFILTER_XT_MATCH_MULTIPORT) += $(P_XT)xt_multiport
+IPT_EXTRA-$(CONFIG_IP_NF_MATCH_OWNER) += $(P_V4)ipt_owner
+IPT_EXTRA-$(CONFIG_IP_NF_MATCH_PHYSDEV) += $(P_V4)ipt_physdev
+IPT_EXTRA-$(CONFIG_IP_NF_MATCH_PKTTYPE) += $(P_V4)ipt_pkttype
+IPT_EXTRA-$(CONFIG_NETFILTER_XT_MATCH_PKTTYPE) += $(P_XT)xt_pkttype
+IPT_EXTRA-$(CONFIG_IP_NF_MATCH_QUOTA) += $(P_V4)ipt_quota
+IPT_EXTRA-$(CONFIG_IP_NF_MATCH_RECENT) += $(P_V4)ipt_recent
+IPT_EXTRA-$(CONFIG_IP_NF_TARGET_REJECT) += $(P_V4)ipt_REJECT
+IPT_EXTRA-$(CONFIG_IP_NF_MATCH_STRING) += $(P_V4)ipt_string
+IPT_EXTRA-$(CONFIG_NETFILTER_XT_MATCH_STRING) += $(P_XT)xt_string
+
+IPT_FILTER-m :=
+IPT_FILTER-$(CONFIG_IP_NF_MATCH_IPP2P) += $(P_V4)ipt_ipp2p
+IPT_FILTER-$(CONFIG_IP_NF_MATCH_LAYER7) += $(P_V4)ipt_layer7
+
+IPT_IMQ-m :=
+IPT_IMQ-$(CONFIG_IP_NF_TARGET_IMQ) += $(P_V4)ipt_IMQ
+
+IPT_IPOPT-m :=
+IPT_IPOPT-$(CONFIG_IP_NF_MATCH_DSCP) += $(P_V4)ipt_dscp
+IPT_IPOPT-$(CONFIG_IP_NF_TARGET_DSCP) += $(P_V4)ipt_DSCP
+IPT_IPOPT-$(CONFIG_IP_NF_MATCH_ECN) += $(P_V4)ipt_ecn
+IPT_IPOPT-$(CONFIG_IP_NF_TARGET_ECN) += $(P_V4)ipt_ECN
+IPT_IPOPT-$(CONFIG_IP_NF_MATCH_LENGTH) += $(P_V4)ipt_length
+IPT_IPOPT-$(CONFIG_NETFILTER_XT_MATCH_LENGTH) += $(P_XT)xt_length
+IPT_IPOPT-$(CONFIG_IP_NF_MATCH_MAC) += $(P_V4)ipt_mac
+IPT_IPOPT-$(CONFIG_NETFILTER_XT_MATCH_MAC) += $(P_XT)xt_mac
+IPT_IPOPT-$(CONFIG_IP_NF_MATCH_MARK) += $(P_V4)ipt_mark
+IPT_IPOPT-$(CONFIG_NETFILTER_XT_MATCH_MARK) += $(P_XT)xt_mark
+IPT_IPOPT-$(CONFIG_IP_NF_TARGET_MARK) += $(P_V4)ipt_MARK
+IPT_IPOPT-$(CONFIG_NETFILTER_XT_TARGET_MARK) += $(P_XT)xt_MARK
+IPT_IPOPT-$(CONFIG_IP_NF_MATCH_TCPMSS) += $(P_V4)ipt_tcpmss
+IPT_IPOPT-$(CONFIG_NETFILTER_XT_MATCH_TCPMSS) += $(P_XT)xt_tcpmss
+IPT_IPOPT-$(CONFIG_IP_NF_TARGET_TCPMSS) += $(P_V4)ipt_TCPMSS
+IPT_IPOPT-$(CONFIG_IP_NF_MATCH_TOS) += $(P_V4)ipt_tos
+IPT_IPOPT-$(CONFIG_IP_NF_MATCH_TIME) += $(P_V4)ipt_time
+IPT_IPOPT-$(CONFIG_IP_NF_TARGET_TOS) += $(P_V4)ipt_TOS
+IPT_IPOPT-$(CONFIG_IP_NF_MATCH_TTL) += $(P_V4)ipt_ttl
+IPT_IPOPT-$(CONFIG_IP_NF_TARGET_TTL) += $(P_V4)ipt_TTL
+IPT_IPOPT-$(CONFIG_IP_NF_MATCH_UNCLEAN) += $(P_V4)ipt_unclean
+
+IPT_IPSEC-m :=
+IPT_IPSEC-$(CONFIG_IP_NF_MATCH_AH_ESP) += $(P_V4)ipt_ah $(P_V4)ipt_esp
+IPT_IPSEC-$(CONFIG_IP_NF_MATCH_AH) += $(P_V4)ipt_ah
+IPT_IPSEC-$(CONFIG_NETFILTER_XT_MATCH_ESP) += $(P_XT)xt_esp
+
+IPT_NAT-m :=
+IPT_NAT-$(CONFIG_IP_NF_NAT) += $(P_V4)ipt_SNAT $(P_V4)ipt_DNAT
+IPT_NAT-$(CONFIG_IP_NF_TARGET_MASQUERADE) += $(P_V4)ipt_MASQUERADE
+IPT_NAT-$(CONFIG_IP_NF_TARGET_MIRROR) += $(P_V4)ipt_MIRROR
+IPT_NAT-$(CONFIG_IP_NF_TARGET_REDIRECT) += $(P_V4)ipt_REDIRECT
+
+IPT_NAT_EXTRA-m := 
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_AMANDA) += $(P_V4)ip_conntrack_amanda
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_CT_PROTO_GRE) += $(P_V4)ip_conntrack_proto_gre
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_PROTO_GRE) += $(P_V4)ip_nat_proto_gre
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_H323) += $(P_V4)ip_conntrack_h323
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_H323) += $(P_V4)ip_nat_h323
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_MMS) += $(P_V4)ip_conntrack_mms
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_MMS) += $(P_V4)ip_nat_mms
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_RTSP) += $(P_V4)ip_conntrack_rtsp
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_RTSP) += $(P_V4)ip_nat_rtsp
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_PPTP) += $(P_V4)ip_conntrack_pptp
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_SIP) += $(P_V4)ip_conntrack_sip
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_PPTP) += $(P_V4)ip_nat_pptp
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_SIP) += $(P_V4)ip_nat_sip
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_SNMP_BASIC) += $(P_V4)ip_nat_snmp_basic
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_SIP) += $(P_V4)ip_conntrack_sip
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_SIP) += $(P_V4)ip_nat_sip
+IPT_NAT_EXTRA-$(CONFIG_IP_NF_TFTP) += $(P_V4)ip_conntrack_tftp
+
+IPT_QUEUE-m :=
+IPT_QUEUE-$(CONFIG_IP_NF_QUEUE) += $(P_V4)ip_queue
+
+IPT_ULOG-m :=
+IPT_ULOG-$(CONFIG_IP_NF_TARGET_ULOG) += $(P_V4)ipt_ULOG
+
+IPT_BUILTIN := $(P_V4)ipt_standard
+IPT_BUILTIN += $(P_V4)ipt_icmp $(P_V4)ipt_tcp $(P_V4)ipt_udp
+IPT_BUILTIN += $(IPT_CONNTRACK-y)
+IPT_BUILTIN += $(IPT_EXTRA-y)
+IPT_BUILTIN += $(IPT_FILTER-y)
+IPT_BUILTIN += $(IPT_IMQ-y)
+IPT_BUILTIN += $(IPT_IPOPT-y)
+IPT_BUILTIN += $(IPT_IPSEC-y)
+IPT_BUILTIN += $(IPT_NAT-y)
+IPT_BUILTIN += $(IPT_ULOG-y)
+

--- /dev/null
+++ b/include/package.mk
@@ -1,1 +1,301 @@
-
+ifneq ($(DUMP),)
+  all: dumpinfo
+else
+  all: compile
+endif
+
+define Build/DefaultTargets
+  ifeq ($(DUMP),)
+    ifneq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p $(PKG_BUILD_DIR) . $(TOPDIR)/package/rules.mk),$(PKG_BUILD_DIR))
+      ifeq ($(CONFIG_AUTOREBUILD),y)
+        $(PKG_BUILD_DIR)/.prepared: package-clean
+      endif
+    endif
+
+    ifneq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p -x ipkg $(IPKG_$(1)) $(PKG_BUILD_DIR)),$(IPKG_$(1)))
+      ifeq ($(CONFIG_AUTOREBUILD),y)
+        $(PKG_BUILD_DIR)/.built: package-rebuild
+      endif
+    endif
+  endif
+
+
+  $(PKG_BUILD_DIR)/.prepared:
+	@-rm -rf $(PKG_BUILD_DIR)
+	@mkdir -p $(PKG_BUILD_DIR)
+	$(call Build/Prepare)
+	touch $$@
+
+  $(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
+	$(call Build/Configure)
+	touch $$@
+
+  $(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
+	$(call Build/Compile)
+	touch $$@
+
+  $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed: $(PKG_BUILD_DIR)/.built
+	$(call Build/InstallDev)
+	touch $$@
+	
+  ifdef Build/InstallDev
+    compile-targets: $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed
+  endif
+
+  package-clean: FORCE
+	$(call Build/Clean)
+	$(call Build/UninstallDev)
+	rm -f $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed
+
+  package-rebuild: FORCE
+	@-rm -f $(PKG_BUILD_DIR)/.built
+
+  define Build/DefaultTargets
+  endef
+endef
+
+define Package/Default
+  CONFIGFILE:=
+  SECTION:=opt
+  CATEGORY:=Extra packages
+  DEPENDS:=
+  MAINTAINER:=OpenWrt Developers Team <openwrt-devel@openwrt.org>
+  SOURCE:=$(patsubst $(TOPDIR)/%,%,${shell pwd})
+  ifneq ($(PKG_VERSION),)
+    ifneq ($(PKG_RELEASE),)
+      VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
+    else
+      VERSION:=$(PKG_VERSION)
+    endif
+  else
+    VERSION:=$(PKG_RELEASE)
+  endif
+  PKGARCH:=$(ARCH)
+  PRIORITY:=optional
+  DEFAULT:=
+  MENU:=
+  TITLE:=
+  DESCRIPTION:=
+endef
+
+define BuildIPKGVariable
+pkg_$(subst .,_,$(subst -,_,$(1)))_$(2) = $$(Package/$(1)/$(2))
+export pkg_$(subst .,_,$(subst -,_,$(1))_$(2))
+$(1)_COMMANDS += if [ -n "$$$$$$$$pkg_$(subst .,_,$(subst -,_,$(1)))_$(2)" ]; then echo "$$$$$$$$pkg_$(subst .,_,$(subst -,_,$(1)))_$(2)" > $(2); fi;
+endef
+
+define BuildPackage
+  $(eval $(call Package/Default))
+  $(eval $(call Package/$(1)))
+
+  $(foreach FIELD, TITLE CATEGORY PRIORITY VERSION,
+    ifeq ($($(FIELD)),)
+      $$(error Package/$(1) is missing the $(FIELD) field)
+    endif
+  )
+
+  ifeq ($(PKGARCH),)
+    PKGARCH:=$(ARCH)
+  endif
+
+  ifeq ($(DESCRIPTION),)
+    $(eval DESCRIPTION:=$(TITLE))
+  endif
+
+  IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk
+  IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg/$(1)
+  INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list
+
+  ifeq ($(CONFIG_PACKAGE_$(1)),y)
+    install-targets: $$(INFO_$(1))
+  endif
+
+  ifneq ($(CONFIG_PACKAGE_$(1))$(DEVELOPER),)
+    compile-targets: $$(IPKG_$(1))
+  endif
+
+  IDEPEND_$(1):=$$(strip $$(DEPENDS))
+
+  DUMPINFO += \
+	echo "Package: $(1)"; 
+
+  ifneq ($(MENU),)
+    DUMPINFO += \
+	echo "Menu: $(MENU)";
+  endif
+
+  ifneq ($(DEFAULT),)
+    DUMPINFO += \
+	echo "Default: $(DEFAULT)";
+  endif
+
+  DUMPINFO += \
+	echo "Version: $(VERSION)"; \
+	echo "Depends: $$(IDEPEND_$(1))"; \
+	echo "Build-Depends: $(PKG_BUILDDEP)"; \
+	echo "Category: $(CATEGORY)"; \
+	echo "Title: $(TITLE)"; \
+	echo "Description: $(DESCRIPTION)" | sed -e 's,\\,\n,g';
+
+  ifneq ($(URL),)
+    DUMPINFO += \
+	echo; \
+	echo "$(URL)";
+  endif
+
+  DUMPINFO += \
+	echo "@@";
+
+  ifneq ($(CONFIG),)
+    DUMPINFO += \
+	echo "Config: $(CONFIG)" | sed -e 's,\\,\n,g'; \
+	echo "@@";
+  endif
+
+  $(eval $(call BuildIPKGVariable,$(1),conffiles))
+  $(eval $(call BuildIPKGVariable,$(1),preinst))
+  $(eval $(call BuildIPKGVariable,$(1),postinst))
+  $(eval $(call BuildIPKGVariable,$(1),prerm))
+  $(eval $(call BuildIPKGVariable,$(1),postrm))
+  $$(IDIR_$(1))/CONTROL/control: $(PKG_BUILD_DIR)/.prepared
+	mkdir -p $$(IDIR_$(1))/CONTROL
+	echo "Package: $(1)" > $$(IDIR_$(1))/CONTROL/control
+	echo "Version: $(VERSION)" >> $$(IDIR_$(1))/CONTROL/control
+	( \
+		DEPENDS=; \
+		for depend in $$(filter-out @%,$$(IDEPEND_$(1))); do \
+			DEPENDS=$$$${DEPENDS:+$$$$DEPENDS, }$$$${depend##+}; \
+		done; \
+		echo "Depends: $$$$DEPENDS" >> $$(IDIR_$(1))/CONTROL/control; \
+	)
+	echo "Source: $(SOURCE)" >> $$(IDIR_$(1))/CONTROL/control
+	echo "Section: $(SECTION)" >> $$(IDIR_$(1))/CONTROL/control
+	echo "Priority: $(PRIORITY)" >> $$(IDIR_$(1))/CONTROL/control
+	echo "Maintainer: $(MAINTAINER)" >> $$(IDIR_$(1))/CONTROL/control
+	echo "Architecture: $(PKGARCH)" >> $$(IDIR_$(1))/CONTROL/control
+	echo "Description: $(DESCRIPTION)" | sed -e 's,\\,\n ,g' >> $$(IDIR_$(1))/CONTROL/control
+	chmod 644 $$(IDIR_$(1))/CONTROL/control
+	(cd $$(IDIR_$(1))/CONTROL; \
+		$($(1)_COMMANDS) \
+	)
+
+  $$(IPKG_$(1)): $$(IDIR_$(1))/CONTROL/control $(PKG_BUILD_DIR)/.built
+	$(call Package/$(1)/install,$$(IDIR_$(1)))
+	mkdir -p $(PACKAGE_DIR)
+	-find $$(IDIR_$(1)) -name CVS | xargs rm -rf
+	-find $$(IDIR_$(1)) -name .svn | xargs rm -rf
+	-find $$(IDIR_$(1)) -name '.#*' | xargs rm -f
+	$(RSTRIP) $$(IDIR_$(1))
+	$(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
+
+  $$(INFO_$(1)): $$(IPKG_$(1))
+	$(IPKG) install $$(IPKG_$(1))
+
+  $(1)-clean:
+	rm -f $(PACKAGE_DIR)/$(1)_*
+
+  clean: $(1)-clean
+
+  $$(eval $$(call Build/DefaultTargets,$(1)))
+
+endef
+
+ifneq ($(strip $(PKG_CAT)),)
+  define Build/Prepare/Default
+	@if [ "$(PKG_CAT)" = "unzip" ]; then \
+		unzip -d $(PKG_BUILD_DIR) $(DL_DIR)/$(PKG_SOURCE) ; \
+	else \
+		$(PKG_CAT) $(DL_DIR)/$(PKG_SOURCE) | tar -C $(PKG_BUILD_DIR)/.. $(TAR_OPTIONS) - ; \
+	fi						  
+	@if [ -d ./patches ]; then \
+		$(PATCH) $(PKG_BUILD_DIR) ./patches ; \
+	fi
+  endef
+endif
+
+define Build/Prepare
+  $(call Build/Prepare/Default)
+endef
+
+define Build/Configure/Default
+	@(cd $(PKG_BUILD_DIR)/$(3); \
+	[ -x configure ] && \
+		$(2) \
+		$(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS)" \
+		CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
+		LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
+		./configure \
+		--target=$(GNU_TARGET_NAME) \
+		--host=$(GNU_TARGET_NAME) \
+		--build=$(GNU_HOST_NAME) \
+		--program-prefix="" \
+		--program-suffix="" \
+		--prefix=/usr \
+		--exec-prefix=/usr \
+		--bindir=/usr/bin \
+		--sbindir=/usr/sbin \
+		--libexecdir=/usr/lib \
+		--sysconfdir=/etc \
+		--datadir=/usr/share \
+		--localstatedir=/var \
+		--mandir=/usr/man \
+		--infodir=/usr/info \
+		$(DISABLE_NLS) \
+		$(1); \
+		true; \
+	)
+endef
+
+define Build/Configure
+  $(call Build/Configure/Default,)
+endef
+
+define Build/Compile/Default
+	$(MAKE) -C $(PKG_BUILD_DIR) \
+		$(TARGET_CONFIGURE_OPTS) \
+		CC=$(TARGET_CC) \
+		CROSS="$(TARGET_CROSS)" \
+		EXTRA_CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include" \
+		ARCH="$(ARCH)" \
+		$(1);
+endef
+
+define Build/Compile
+  $(call Build/Compile/Default,)
+endef
+
+ifneq ($(DUMP),)
+  dumpinfo: FORCE
+	@$(DUMPINFO)
+else
+  $(PACKAGE_DIR):
+	mkdir -p $@
+		
+  ifneq ($(strip $(PKG_SOURCE)),)
+    source: $(DL_DIR)/$(PKG_SOURCE)
+
+    $(DL_DIR)/$(PKG_SOURCE):
+		mkdir -p $(DL_DIR)
+		$(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(PKG_SOURCE)" "$(PKG_MD5SUM)" $(PKG_SOURCE_URL)
+
+    $(PKG_BUILD_DIR)/.prepared: $(DL_DIR)/$(PKG_SOURCE)
+  endif
+
+  source:
+  prepare: $(PKG_BUILD_DIR)/.prepared
+  configure: $(PKG_BUILD_DIR)/.configured
+
+  compile-targets:
+  compile: compile-targets
+
+  install-targets:
+  install: install-targets
+
+  clean-targets:
+  clean: FORCE
+	@$(MAKE) clean-targets
+	$(call Build/Clean)
+	rm -rf $(PKG_BUILD_DIR)
+endif
+

--- a/package/alsa/Makefile
+++ b/package/alsa/Makefile
@@ -1,7 +1,7 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=alsa-driver
 PKG_VERSION:=1.0.11
@@ -13,7 +13,7 @@
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_CAT:=bzcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 ifeq ($(LINUX_KARCH),i386)
 KERNEL_C_INCS:= -I$(LINUX_DIR)/include/asm-i386/mach-generic -I$(LINUX_DIR)/include/asm-i386/mach-default

--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -1,7 +1,7 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=base-files
 PKG_RELEASE:=8
@@ -12,7 +12,7 @@
 REV:=0
 endif
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 ifneq ($(DUMP),1)
 TARGET:=-$(BOARD)-$(KERNEL)

--- a/package/bridge/Makefile
+++ b/package/bridge/Makefile
@@ -12,7 +12,7 @@
 PKG_MD5SUM:=9b7dc52656f5cbec846a7ba3299f73bd
 PKG_CAT:=zcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/bridge
 SECTION:=base

--- a/package/broadcom-wl/Makefile
+++ b/package/broadcom-wl/Makefile
@@ -1,7 +1,7 @@
 # $Id: Makefile 2480 2005-11-14 02:07:33Z nbd $
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=broadcom-wl
 PKG_VERSION:=4.80.9.2
@@ -14,7 +14,7 @@
 PKG_MD5SUM:=7d9fab2c611369bbe075c3924ea77450
 PKG_CAT:=bzcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/kmod-brcm-wl
   SECTION:=drivers

--- a/package/busybox/Makefile
+++ b/package/busybox/Makefile
@@ -12,7 +12,7 @@
 PKG_MD5SUM:=19a0b475169335f17e421cf644616fe7
 PKG_CAT:=bzcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/busybox
 SECTION:=base

--- a/package/diag/Makefile
+++ b/package/diag/Makefile
@@ -1,14 +1,14 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=kmod-diag
 PKG_RELEASE:=1
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/kmod-diag
 SECTION:=drivers

--- a/package/dnsmasq/Makefile
+++ b/package/dnsmasq/Makefile
@@ -12,7 +12,7 @@
 PKG_MD5SUM:=489198ec87101087043adc98bbe062dc
 PKG_CAT:=zcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/dnsmasq
 SECTION:=base

--- a/package/dropbear/Makefile
+++ b/package/dropbear/Makefile
@@ -12,7 +12,7 @@
 PKG_MD5SUM:=ca8e53a766faec831882831364568421
 PKG_CAT:=zcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/dropbear
 SECTION:=base

--- a/package/ebtables/Makefile
+++ b/package/ebtables/Makefile
@@ -12,7 +12,7 @@
 PKG_MD5SUM:=f07111fcc1966be669278433c35dcc28
 PKG_CAT:=zcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/ebtables
 SECTION:=base

--- a/package/fuse/Makefile
+++ b/package/fuse/Makefile
@@ -1,7 +1,7 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=fuse
 PKG_VERSION:=2.5.3
@@ -15,7 +15,7 @@
 
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/kmod-fuse
 SECTION:=drivers

--- a/package/haserl/Makefile
+++ b/package/haserl/Makefile
@@ -12,7 +12,7 @@
 PKG_MD5SUM:=bd9195d086566f56634c0bcbbbcbebea
 PKG_CAT:=zcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/haserl
 SECTION:=base

--- a/package/hostap/Makefile
+++ b/package/hostap/Makefile
@@ -1,7 +1,7 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=hostap-driver
 PKG_VERSION:=0.4.9
@@ -15,7 +15,7 @@
 
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/kmod-hostap
 SECTION:=drivers

--- a/package/hostapd/Makefile
+++ b/package/hostapd/Makefile
@@ -14,7 +14,7 @@
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/hostapd
 SECTION:=net

--- a/package/iproute2/Makefile
+++ b/package/iproute2/Makefile
@@ -12,7 +12,7 @@
 PKG_MD5SUM:=04f57a6d366d36426d276178b600f5c5
 PKG_CAT:=zcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/ip
 SECTION:=base

--- a/package/ipsec-tools/Makefile
+++ b/package/ipsec-tools/Makefile
@@ -14,7 +14,7 @@
 
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/ipsec-tools
 SECTION:=base

--- a/package/ipset/Makefile
+++ b/package/ipset/Makefile
@@ -12,7 +12,7 @@
 PKG_MD5SUM:=1709424cc2cdb925d4fb6fd5fcaefc26
 PKG_CAT:=bzcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/ipset
 SECTION:=base

--- a/package/iptables/Makefile
+++ b/package/iptables/Makefile
@@ -1,7 +1,7 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=iptables
 PKG_VERSION:=1.3.5
@@ -20,10 +20,10 @@
 
 PKG_MENU:=IPv4 / IPv6 firewall administration
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 ifeq ($(DUMP),)
 include $(LINUX_DIR)/.config
-include $(TOPDIR)/target/linux/netfilter.mk
+include $(TOPDIR)/include/netfilter.mk
 endif
 
 define Package/iptables

file:a/package/kernel.mk (deleted)
--- a/package/kernel.mk
+++ /dev/null
@@ -1,32 +1,1 @@
-ifneq ($(DUMP),1)
-include $(BUILD_DIR)/kernel.mk
 
-KERNEL:=unknown
-ifneq (,$(findstring 2.4.,$(LINUX_VERSION)))
-KERNEL:=2.4
-LINUX_KMOD_SUFFIX=o
-endif
-ifneq (,$(findstring 2.6.,$(LINUX_VERSION)))
-KERNEL:=2.6
-LINUX_KMOD_SUFFIX=ko
-endif
-
-LINUX_KARCH:=$(shell echo $(ARCH) | sed -e 's/i[3-9]86/i386/' \
-	-e 's/mipsel/mips/' \
-	-e 's/mipseb/mips/' \
-	-e 's/powerpc/ppc/' \
-	-e 's/sh[234]/sh/' \
-	-e 's/armeb/arm/' \
-)
-
-KERNEL_BUILD_DIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
-ifeq ($(LINUX_NAME),)
-LINUX_NAME:=linux-$(LINUX_VERSION)
-endif
-LINUX_DIR := $(KERNEL_BUILD_DIR)/$(LINUX_NAME)
-
-KMOD_BUILD_DIR := $(KERNEL_BUILD_DIR)/linux-modules
-MODULES_DIR := $(KERNEL_BUILD_DIR)/modules/$(MODULES_SUBDIR)
-TARGET_MODULES_DIR := $(LINUX_TARGET_DIR)/$(MODULES_SUBDIR)
-endif
-

--- a/package/libpcap/Makefile
+++ b/package/libpcap/Makefile
@@ -14,7 +14,7 @@
 
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/libpcap
 SECTION:=base

--- a/package/linux-atm/Makefile
+++ b/package/linux-atm/Makefile
@@ -14,7 +14,7 @@
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/linux-atm
 SECTION:=libs

--- a/package/madwifi/Makefile
+++ b/package/madwifi/Makefile
@@ -1,7 +1,7 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=madwifi
 PKG_VERSION:=0.9.0
@@ -54,7 +54,7 @@
 		LDOPTS="" \
 		DOMULTI=1
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 ifeq ($(findstring AHB,$(BUS)),AHB)
 define Build/Compile/ahb

--- a/package/mini_fo/Makefile
+++ b/package/mini_fo/Makefile
@@ -1,7 +1,7 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=mini_fo
 PKG_VERSION:=0.6.2pre1
@@ -13,7 +13,7 @@
 PKG_SOURCE:=mini_fo-0-6-2-pre1.tar.bz2
 PKG_CAT:=bzcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/kmod-mini-fo
 SECTION:=drivers

--- a/package/mtd/Makefile
+++ b/package/mtd/Makefile
@@ -7,7 +7,7 @@
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/mtd
 SECTION:=base

--- a/package/nvram/Makefile
+++ b/package/nvram/Makefile
@@ -7,7 +7,7 @@
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/nvram
 SECTION:=base

--- a/package/openssl/Makefile
+++ b/package/openssl/Makefile
@@ -20,7 +20,7 @@
 OPENSSL_NO_CIPHERS:= no-idea no-md2 no-mdc2 no-rc5 no-sha0 no-rmd160 no-aes192
 OPENSSL_OPTIONS:= shared no-ec no-err no-fips no-hw no-krb5 no-threads zlib-dynamic no-engines
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/libopenssl
 SECTION:=base

--- a/package/openswan/Makefile
+++ b/package/openswan/Makefile
@@ -1,7 +1,7 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=openswan
 PKG_VERSION:=2.4.5
@@ -13,7 +13,7 @@
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_CAT:=zcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/kmod-openswan
 SECTION:=drivers

--- a/package/pcmcia-cs/Makefile
+++ b/package/pcmcia-cs/Makefile
@@ -14,7 +14,7 @@
 
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/pcmcia-cs
 SECTION:=base

--- a/package/ppp/Makefile
+++ b/package/ppp/Makefile
@@ -15,7 +15,7 @@
 
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/ppp
 SECTION:=net

--- a/package/pptp/Makefile
+++ b/package/pptp/Makefile
@@ -12,7 +12,7 @@
 PKG_MD5SUM:=9a706327fb9827541d7c86d48ceb9631
 PKG_CAT:=zcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/pptp
 SECTION:=base

--- a/package/robocfg/Makefile
+++ b/package/robocfg/Makefile
@@ -8,7 +8,7 @@
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/robocfg
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/robocfg
 SECTION:=base

file:a/package/rules.mk (deleted)
--- a/package/rules.mk
+++ /dev/null
@@ -1,301 +1,1 @@
-ifneq ($(DUMP),)
-  all: dumpinfo
-else
-  all: compile
-endif
 
-define Build/DefaultTargets
-  ifeq ($(DUMP),)
-    ifneq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p $(PKG_BUILD_DIR) . $(TOPDIR)/package/rules.mk),$(PKG_BUILD_DIR))
-      ifeq ($(CONFIG_AUTOREBUILD),y)
-        $(PKG_BUILD_DIR)/.prepared: package-clean
-      endif
-    endif
-
-    ifneq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p -x ipkg $(IPKG_$(1)) $(PKG_BUILD_DIR)),$(IPKG_$(1)))
-      ifeq ($(CONFIG_AUTOREBUILD),y)
-        $(PKG_BUILD_DIR)/.built: package-rebuild
-      endif
-    endif
-  endif
-
-
-  $(PKG_BUILD_DIR)/.prepared:
-	@-rm -rf $(PKG_BUILD_DIR)
-	@mkdir -p $(PKG_BUILD_DIR)
-	$(call Build/Prepare)
-	touch $$@
-
-  $(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
-	$(call Build/Configure)
-	touch $$@
-
-  $(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
-	$(call Build/Compile)
-	touch $$@
-
-  $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed: $(PKG_BUILD_DIR)/.built
-	$(call Build/InstallDev)
-	touch $$@
-	
-  ifdef Build/InstallDev
-    compile-targets: $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed
-  endif
-
-  package-clean: FORCE
-	$(call Build/Clean)
-	$(call Build/UninstallDev)
-	rm -f $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed
-
-  package-rebuild: FORCE
-	@-rm -f $(PKG_BUILD_DIR)/.built
-
-  define Build/DefaultTargets
-  endef
-endef
-
-define Package/Default
-  CONFIGFILE:=
-  SECTION:=opt
-  CATEGORY:=Extra packages
-  DEPENDS:=
-  MAINTAINER:=OpenWrt Developers Team <openwrt-devel@openwrt.org>
-  SOURCE:=$(patsubst $(TOPDIR)/%,%,${shell pwd})
-  ifneq ($(PKG_VERSION),)
-    ifneq ($(PKG_RELEASE),)
-      VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
-    else
-      VERSION:=$(PKG_VERSION)
-    endif
-  else
-    VERSION:=$(PKG_RELEASE)
-  endif
-  PKGARCH:=$(ARCH)
-  PRIORITY:=optional
-  DEFAULT:=
-  MENU:=
-  TITLE:=
-  DESCRIPTION:=
-endef
-
-define BuildIPKGVariable
-pkg_$(subst .,_,$(subst -,_,$(1)))_$(2) = $$(Package/$(1)/$(2))
-export pkg_$(subst .,_,$(subst -,_,$(1))_$(2))
-$(1)_COMMANDS += if [ -n "$$$$$$$$pkg_$(subst .,_,$(subst -,_,$(1)))_$(2)" ]; then echo "$$$$$$$$pkg_$(subst .,_,$(subst -,_,$(1)))_$(2)" > $(2); fi;
-endef
-
-define BuildPackage
-  $(eval $(call Package/Default))
-  $(eval $(call Package/$(1)))
-
-  $(foreach FIELD, TITLE CATEGORY PRIORITY VERSION,
-    ifeq ($($(FIELD)),)
-      $$(error Package/$(1) is missing the $(FIELD) field)
-    endif
-  )
-
-  ifeq ($(PKGARCH),)
-    PKGARCH:=$(ARCH)
-  endif
-
-  ifeq ($(DESCRIPTION),)
-    $(eval DESCRIPTION:=$(TITLE))
-  endif
-
-  IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk
-  IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg/$(1)
-  INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list
-
-  ifeq ($(CONFIG_PACKAGE_$(1)),y)
-    install-targets: $$(INFO_$(1))
-  endif
-
-  ifneq ($(CONFIG_PACKAGE_$(1))$(DEVELOPER),)
-    compile-targets: $$(IPKG_$(1))
-  endif
-
-  IDEPEND_$(1):=$$(strip $$(DEPENDS))
-
-  DUMPINFO += \
-	echo "Package: $(1)"; 
-
-  ifneq ($(MENU),)
-    DUMPINFO += \
-	echo "Menu: $(MENU)";
-  endif
-
-  ifneq ($(DEFAULT),)
-    DUMPINFO += \
-	echo "Default: $(DEFAULT)";
-  endif
-
-  DUMPINFO += \
-	echo "Version: $(VERSION)"; \
-	echo "Depends: $$(IDEPEND_$(1))"; \
-	echo "Build-Depends: $(PKG_BUILDDEP)"; \
-	echo "Category: $(CATEGORY)"; \
-	echo "Title: $(TITLE)"; \
-	echo "Description: $(DESCRIPTION)" | sed -e 's,\\,\n,g';
-
-  ifneq ($(URL),)
-    DUMPINFO += \
-	echo; \
-	echo "$(URL)";
-  endif
-
-  DUMPINFO += \
-	echo "@@";
-
-  ifneq ($(CONFIG),)
-    DUMPINFO += \
-	echo "Config: $(CONFIG)" | sed -e 's,\\,\n,g'; \
-	echo "@@";
-  endif
-
-  $(eval $(call BuildIPKGVariable,$(1),conffiles))
-  $(eval $(call BuildIPKGVariable,$(1),preinst))
-  $(eval $(call BuildIPKGVariable,$(1),postinst))
-  $(eval $(call BuildIPKGVariable,$(1),prerm))
-  $(eval $(call BuildIPKGVariable,$(1),postrm))
-  $$(IDIR_$(1))/CONTROL/control: $(PKG_BUILD_DIR)/.prepared
-	mkdir -p $$(IDIR_$(1))/CONTROL
-	echo "Package: $(1)" > $$(IDIR_$(1))/CONTROL/control
-	echo "Version: $(VERSION)" >> $$(IDIR_$(1))/CONTROL/control
-	( \
-		DEPENDS=; \
-		for depend in $$(filter-out @%,$$(IDEPEND_$(1))); do \
-			DEPENDS=$$$${DEPENDS:+$$$$DEPENDS, }$$$${depend##+}; \
-		done; \
-		echo "Depends: $$$$DEPENDS" >> $$(IDIR_$(1))/CONTROL/control; \
-	)
-	echo "Source: $(SOURCE)" >> $$(IDIR_$(1))/CONTROL/control
-	echo "Section: $(SECTION)" >> $$(IDIR_$(1))/CONTROL/control
-	echo "Priority: $(PRIORITY)" >> $$(IDIR_$(1))/CONTROL/control
-	echo "Maintainer: $(MAINTAINER)" >> $$(IDIR_$(1))/CONTROL/control
-	echo "Architecture: $(PKGARCH)" >> $$(IDIR_$(1))/CONTROL/control
-	echo "Description: $(DESCRIPTION)" | sed -e 's,\\,\n ,g' >> $$(IDIR_$(1))/CONTROL/control
-	chmod 644 $$(IDIR_$(1))/CONTROL/control
-	(cd $$(IDIR_$(1))/CONTROL; \
-		$($(1)_COMMANDS) \
-	)
-
-  $$(IPKG_$(1)): $$(IDIR_$(1))/CONTROL/control $(PKG_BUILD_DIR)/.built
-	$(call Package/$(1)/install,$$(IDIR_$(1)))
-	mkdir -p $(PACKAGE_DIR)
-	-find $$(IDIR_$(1)) -name CVS | xargs rm -rf
-	-find $$(IDIR_$(1)) -name .svn | xargs rm -rf
-	-find $$(IDIR_$(1)) -name '.#*' | xargs rm -f
-	$(RSTRIP) $$(IDIR_$(1))
-	$(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
-
-  $$(INFO_$(1)): $$(IPKG_$(1))
-	$(IPKG) install $$(IPKG_$(1))
-
-  $(1)-clean:
-	rm -f $(PACKAGE_DIR)/$(1)_*
-
-  clean: $(1)-clean
-
-  $$(eval $$(call Build/DefaultTargets,$(1)))
-
-endef
-
-ifneq ($(strip $(PKG_CAT)),)
-  define Build/Prepare/Default
-	@if [ "$(PKG_CAT)" = "unzip" ]; then \
-		unzip -d $(PKG_BUILD_DIR) $(DL_DIR)/$(PKG_SOURCE) ; \
-	else \
-		$(PKG_CAT) $(DL_DIR)/$(PKG_SOURCE) | tar -C $(PKG_BUILD_DIR)/.. $(TAR_OPTIONS) - ; \
-	fi						  
-	@if [ -d ./patches ]; then \
-		$(PATCH) $(PKG_BUILD_DIR) ./patches ; \
-	fi
-  endef
-endif
-
-define Build/Prepare
-  $(call Build/Prepare/Default)
-endef
-
-define Build/Configure/Default
-	@(cd $(PKG_BUILD_DIR)/$(3); \
-	[ -x configure ] && \
-		$(2) \
-		$(TARGET_CONFIGURE_OPTS) \
-		CFLAGS="$(TARGET_CFLAGS)" \
-		CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
-		LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
-		./configure \
-		--target=$(GNU_TARGET_NAME) \
-		--host=$(GNU_TARGET_NAME) \
-		--build=$(GNU_HOST_NAME) \
-		--program-prefix="" \
-		--program-suffix="" \
-		--prefix=/usr \
-		--exec-prefix=/usr \
-		--bindir=/usr/bin \
-		--sbindir=/usr/sbin \
-		--libexecdir=/usr/lib \
-		--sysconfdir=/etc \
-		--datadir=/usr/share \
-		--localstatedir=/var \
-		--mandir=/usr/man \
-		--infodir=/usr/info \
-		$(DISABLE_NLS) \
-		$(1); \
-		true; \
-	)
-endef
-
-define Build/Configure
-  $(call Build/Configure/Default,)
-endef
-
-define Build/Compile/Default
-	$(MAKE) -C $(PKG_BUILD_DIR) \
-		$(TARGET_CONFIGURE_OPTS) \
-		CC=$(TARGET_CC) \
-		CROSS="$(TARGET_CROSS)" \
-		EXTRA_CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include" \
-		ARCH="$(ARCH)" \
-		$(1);
-endef
-
-define Build/Compile
-  $(call Build/Compile/Default,)
-endef
-
-ifneq ($(DUMP),)
-  dumpinfo: FORCE
-	@$(DUMPINFO)
-else
-  $(PACKAGE_DIR):
-	mkdir -p $@
-		
-  ifneq ($(strip $(PKG_SOURCE)),)
-    source: $(DL_DIR)/$(PKG_SOURCE)
-
-    $(DL_DIR)/$(PKG_SOURCE):
-		mkdir -p $(DL_DIR)
-		$(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(PKG_SOURCE)" "$(PKG_MD5SUM)" $(PKG_SOURCE_URL)
-
-    $(PKG_BUILD_DIR)/.prepared: $(DL_DIR)/$(PKG_SOURCE)
-  endif
-
-  source:
-  prepare: $(PKG_BUILD_DIR)/.prepared
-  configure: $(PKG_BUILD_DIR)/.configured
-
-  compile-targets:
-  compile: compile-targets
-
-  install-targets:
-  install: install-targets
-
-  clean-targets:
-  clean: FORCE
-	@$(MAKE) clean-targets
-	$(call Build/Clean)
-	rm -rf $(PKG_BUILD_DIR)
-endif
-

--- a/package/shfs/Makefile
+++ b/package/shfs/Makefile
@@ -1,7 +1,7 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=shfs
 PKG_VERSION:=0.35
@@ -15,7 +15,7 @@
 
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/kmod-shfs
 SECTION:=drivers

--- a/package/spca5xx/Makefile
+++ b/package/spca5xx/Makefile
@@ -1,7 +1,7 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=spca5xx
 PKG_VERSION:=20060301
@@ -13,7 +13,7 @@
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_CAT:=zcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 #FIXME: add proper dependency handling on kmod-usb-core & kmod-videodev packages
 define Package/kmod-spca5xx

--- a/package/switch/Makefile
+++ b/package/switch/Makefile
@@ -1,14 +1,14 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=kmod-switch
 PKG_RELEASE:=1
 
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/kmod-switch
 SECTION:=drivers

--- a/package/udev/Makefile
+++ b/package/udev/Makefile
@@ -19,7 +19,7 @@
 
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/udev
 SECTION:=base

--- a/package/ueagle-atm/Makefile
+++ b/package/ueagle-atm/Makefile
@@ -1,7 +1,7 @@
 # $Id: Makefile 2767 2005-12-25 02:10:14Z wbx $
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=ueagle-atm
 PKG_VERSION:=1.0d1
@@ -15,7 +15,7 @@
 
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 #FIXME: add dependency on kmod-usb-core
 define Package/kmod-ueagle-atm

--- a/package/util-linux/Makefile
+++ b/package/util-linux/Makefile
@@ -16,7 +16,7 @@
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/fdisk
 SECTION:=base

--- a/package/wireless-tools/Makefile
+++ b/package/wireless-tools/Makefile
@@ -14,7 +14,7 @@
 
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/wireless-tools
 SECTION:=base

--- a/package/wlcompat/Makefile
+++ b/package/wlcompat/Makefile
@@ -1,14 +1,14 @@
 # $Id$
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=kmod-wlcompat
 PKG_RELEASE:=3
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/kmod-wlcompat
 SECTION:=drivers

--- a/package/zd1211/Makefile
+++ b/package/zd1211/Makefile
@@ -1,7 +1,7 @@
 # $Id: Makefile 3297 2006-03-02 23:42:52Z florian $
 
 include $(TOPDIR)/rules.mk
-include $(TOPDIR)/package/kernel.mk
+include $(TOPDIR)/include/kernel.mk
 
 PKG_NAME:=zd1211
 PKG_VERSION:=r69
@@ -13,7 +13,7 @@
 PKG_SOURCE:=$(PKG_NAME)-driver-$(PKG_VERSION).tgz
 PKG_CAT:=zcat
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 #FIXME: add proper dependency handling on kmod-usb-core packages
 define Package/kmod-zd1211

--- a/package/zlib/Makefile
+++ b/package/zlib/Makefile
@@ -14,7 +14,7 @@
 
 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
 
-include $(TOPDIR)/package/rules.mk
+include $(TOPDIR)/include/package.mk
 
 define Package/zlib
 SECTION:=base

--- a/target/Makefile
+++ b/target/Makefile
@@ -5,9 +5,9 @@
 $(BIN_DIR):
 	mkdir -p $(BIN_DIR)
 
-TARGETS:=linux utils lzma
+TARGETS:=linux utils
 
-linux-compile: utils-install lzma-install
+linux-compile: utils-install
 linux-install: $(BIN_DIR)
 
 download: $(patsubst %,%-source,$(TARGETS))
@@ -27,12 +27,7 @@
 	$(MAKE) -C $(patsubst %-prepare,%,$@) prepare
 %-compile: %-prepare
 	$(MAKE) -C $(patsubst %-compile,%,$@) compile
-%-rebuild: FORCE
-	$(MAKE) -C $(patsubst %-rebuild,%,$@) rebuild
 %-install: %-compile
 	$(MAKE) -C $(patsubst %-install,%,$@) install
-linux-imagebuilder: FORCE
-	$(MAKE) -C linux imagebuilder
 
 
-

--- a/target/linux/Config.in
+++ b/target/linux/Config.in
@@ -13,8 +13,8 @@
 		help
 		  Build a jffs2 root filesystem
 
-	config TARGET_ROOTFS_SQUASHFS_LZMA
-		bool "squashfs-lzma"
+	config TARGET_ROOTFS_SQUASHFS
+		bool "squashfs"
 		default y
 		depends !LINUX_2_6_ARUBA
 		depends !LINUX_2_6_XSCALE

--- a/target/linux/Makefile
+++ b/target/linux/Makefile
@@ -30,6 +30,7 @@
 	$(MAKE) -C image/$(BOARD) source
 
 prepare:
+	rm -f $(TOPDIR)/.kernel.mk
 	$(MAKE) -C $(BOARD)-$(KERNEL) prepare
 
 compile:

--- a/target/linux/ar531x-2.4/Makefile
+++ b/target/linux/ar531x-2.4/Makefile
@@ -4,10 +4,9 @@
 LINUX_RELEASE:=1
 LINUX_KERNEL_MD5SUM:=38f4d0830e95a20f4bfed17622d5557c
 
-include ../rules.mk
 include ./config
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
+include $(TOPDIR)/include/kernel.mk
+include $(TOPDIR)/include/kernel-build.mk
 
 $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
 	[ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches

--- a/target/linux/ar7-2.4/Makefile
+++ b/target/linux/ar7-2.4/Makefile
@@ -4,8 +4,8 @@
 LINUX_RELEASE:=1
 LINUX_KERNEL_MD5SUM:=38f4d0830e95a20f4bfed17622d5557c
 
-include ../rules.mk
 include ./config
+include $(TOPDIR)/include/kernel.mk
 
 ATM_FIRMWARE_VERSION:=0.4
 ATM_FIRMWARE_DIR=sangam-atm-firmware-$(ATM_FIRMWARE_VERSION)
@@ -26,8 +26,7 @@
 	$(MODULES_DIR)/kernel/drivers/net/avalanche_cpmac/avalanche_cpmac.o \
 ,CONFIG_MIPS_AVALANCHE_CPMAC,,10,avalanche_cpmac))
 
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
+include $(TOPDIR)/include/kernel-build.mk
 
 
 $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked

--- a/target/linux/aruba-2.6/Makefile
+++ b/target/linux/aruba-2.6/Makefile
@@ -4,12 +4,9 @@
 LINUX_RELEASE:=1
 LINUX_KERNEL_MD5SUM:=37ddefe96625502161f075b9d907f21e
 
-include ../rules.mk
 include ./config
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
-
+include $(TOPDIR)/include/kernel.mk
+include $(TOPDIR)/include/kernel-build.mk
 
 $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
 	[ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches $(MAKE_TRACE)

--- a/target/linux/au1000-2.6/Makefile
+++ b/target/linux/au1000-2.6/Makefile
@@ -4,12 +4,9 @@
 LINUX_RELEASE:=1
 LINUX_KERNEL_MD5SUM:=37ddefe96625502161f075b9d907f21e
 
-include ../rules.mk
 include ./config
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
-
+include $(TOPDIR)/include/kernel.mk
+include $(TOPDIR)/include/kernel-build.mk
 
 $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
 	[ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches

--- a/target/linux/brcm-2.4/Makefile
+++ b/target/linux/brcm-2.4/Makefile
@@ -4,8 +4,8 @@
 LINUX_RELEASE:=1
 LINUX_KERNEL_MD5SUM:=38f4d0830e95a20f4bfed17622d5557c
 
-include ../rules.mk
 include ./config
+include $(TOPDIR)/include/kernel.mk
 
 # broadcom specific kmod packages
 $(eval $(call KMOD_template,LP,lp,\
@@ -15,8 +15,7 @@
 	$(MODULES_DIR)/kernel/drivers/char/ppdev.o \
 ,CONFIG_PARPORT,,50,parport parport_splink lp))
 
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
+include $(TOPDIR)/include/kernel-build.mk
 
 
 $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked

--- a/target/linux/brcm-2.6/Makefile
+++ b/target/linux/brcm-2.6/Makefile
@@ -4,11 +4,9 @@
 LINUX_RELEASE:=1
 LINUX_KERNEL_MD5SUM:=37ddefe96625502161f075b9d907f21e
 
-include ../rules.mk
 include ./config
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
+include $(TOPDIR)/include/kernel.mk
+include $(TOPDIR)/include/kernel-build.mk
 
 
 $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked

--- a/target/linux/generic-2.4/modules.mk
+++ /dev/null
@@ -1,321 +1,1 @@
-include ../netfilter.mk
 
-# Networking
-
-$(eval $(call KMOD_template,ATM,atm,\
-	$(MODULES_DIR)/kernel/net/atm/atm.o \
-	$(MODULES_DIR)/kernel/net/atm/br2684.o \
-,CONFIG_ATM,,50,atm))
-
-$(eval $(call KMOD_template,GRE,gre,\
-	$(MODULES_DIR)/kernel/net/ipv4/ip_gre.o \
-,CONFIG_NET_IPGRE))
-
-$(eval $(call KMOD_template,IMQ,imq,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/*IMQ*.o \
-	$(MODULES_DIR)/kernel/drivers/net/imq.o \
-))
-$(eval $(call KMOD_template,IPIP,ipip,\
-	$(MODULES_DIR)/kernel/net/ipv4/ipip.o \
-,CONFIG_NET_IPIP,,60,ipip))
-
-$(eval $(call KMOD_template,IPV6,ipv6,\
-	$(MODULES_DIR)/kernel/net/ipv6/ipv6.o \
-,CONFIG_IPV6,,20,ipv6))
-
-$(eval $(call KMOD_template,PPP,ppp,\
-	$(MODULES_DIR)/kernel/drivers/net/ppp_async.o \
-	$(MODULES_DIR)/kernel/drivers/net/ppp_generic.o \
-	$(MODULES_DIR)/kernel/drivers/net/slhc.o \
-	$(MODULES_DIR)/kernel/drivers/net/pppox.o \
-,CONFIG_PPP))
-
-$(eval $(call KMOD_template,MPPE,mppe,\
-	$(MODULES_DIR)/kernel/drivers/net/ppp_mppe_mppc.o \
-,CONFIG_PPP_MPPE_MPPC))
-
-$(eval $(call KMOD_template,PPPOATM,pppoatm,\
-	$(MODULES_DIR)/kernel/net/atm/pppoatm.o \
-,CONFIG_PPPOATM))
-
-$(eval $(call KMOD_template,PPPOE,pppoe,\
-	$(MODULES_DIR)/kernel/drivers/net/pppoe.o \
-,CONFIG_PPPOE))
-
-$(eval $(call KMOD_template,SCHED,sched,\
-	$(MODULES_DIR)/kernel/net/sched/*.o \
-))
-
-$(eval $(call KMOD_template,TUN,tun,\
-	$(MODULES_DIR)/kernel/drivers/net/tun.o \
-,CONFIG_TUN,,20,tun))
-
-# Filtering / Firewalling
-
-$(eval $(call KMOD_template,ARPTABLES,arptables,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/arp*.o \
-,CONFIG_IP_NF_ARPTABLES))
-
-$(eval $(call KMOD_template,EBTABLES,ebtables,\
-	$(MODULES_DIR)/kernel/net/bridge/netfilter/*.o \
-,CONFIG_BRIDGE_NF_EBTABLES))
-
-# metapackage for compatibility ...
-$(eval $(call KMOD_template,IPTABLES_EXTRA,iptables-extra,\
-,,kmod-ipt-conntrack kmod-ipt-extra kmod-ipt-filter kmod-ipt-ipopt kmod-ipt-ipsec kmod-ipt-nat kmod-ipt-nat-extra kmod-ipt-queue kmod-ipt-ulogd))
-
-$(eval $(call KMOD_template,IPT_CONNTRACK,ipt-conntrack,\
-	$(foreach mod,$(IPT_CONNTRACK-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_EXTRA,ipt-extra,\
-	$(foreach mod,$(IPT_EXTRA-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_FILTER,ipt-filter,\
-	$(foreach mod,$(IPT_FILTER-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_IPOPT,ipt-ipopt,\
-	$(foreach mod,$(IPT_IPOPT-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_IPSEC,ipt-ipsec,\
-	$(foreach mod,$(IPT_IPSEC-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_NAT,ipt-nat,\
-	$(foreach mod,$(IPT_NAT-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_NAT_EXTRA,ipt-nat-extra,\
-	$(foreach mod,$(IPT_NAT_EXTRA-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-,,,40,$(IPT_NAT_EXTRA-m)))
-
-$(eval $(call KMOD_template,IPT_QUEUE,ipt-queue,\
-	$(foreach mod,$(IPT_QUEUE-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IPT_ULOG,ipt-ulog,\
-	$(foreach mod,$(IPT_ULOG-m),$(MODULES_DIR)/kernel/net/ipv4/netfilter/$(mod).o) \
-))
-
-$(eval $(call KMOD_template,IP6TABLES,ip6tables,\
-	$(MODULES_DIR)/kernel/net/ipv6/netfilter/ip*.o \
-,CONFIG_IP6_NF_IPTABLES,kmod-ipv6))
-
-
-# Block devices
-
-$(eval $(call KMOD_template,IDE,ide,\
-	$(MODULES_DIR)/kernel/drivers/ide/*.o \
-	$(MODULES_DIR)/kernel/drivers/ide/*/*.o \
-,CONFIG_IDE,,20,pdc202xx_old ide-core ide-detect ide-disk))
-
-$(eval $(call KMOD_template,LOOP,loop,\
-    $(MODULES_DIR)/kernel/drivers/block/loop.o \
-,CONFIG_BLK_DEV_LOOP,,20,loop))
-
-$(eval $(call KMOD_template,NBD,nbd,\
-    $(MODULES_DIR)/kernel/drivers/block/nbd.o \
-,CONFIG_BLK_DEV_NBD,,20,nbd))
-
-
-# Crypto
-
-ifneq ($(wildcard $(MODULES_DIR)/kernel/crypto/*.o),)
-CONFIG_CRYPTO:=m
-endif
-$(eval $(call KMOD_template,CRYPTO,crypto,\
-	$(MODULES_DIR)/kernel/crypto/*.o \
-,CONFIG_CRYPTO))
-
-
-# Filesystems
-
-$(eval $(call KMOD_template,FS_CIFS,fs-cifs,\
-	$(MODULES_DIR)/kernel/fs/cifs/cifs.o \
-,CONFIG_CIFS,,30,cifs))
-
-$(eval $(call KMOD_template,FS_MINIX,fs-minix,\
-	$(MODULES_DIR)/kernel/fs/minix/*.o \
-,CONFIG_MINIX_FS,,30,minix))
-
-$(eval $(call KMOD_template,FS_EXT2,fs-ext2,\
-	$(MODULES_DIR)/kernel/fs/ext2/*.o \
-,CONFIG_EXT2_FS,,30,ext2))
-
-$(eval $(call KMOD_template,FS_EXT3,fs-ext3,\
-	$(MODULES_DIR)/kernel/fs/ext3/*.o \
-	$(MODULES_DIR)/kernel/fs/jbd/*.o \
-,CONFIG_EXT3_FS,,30,jbd ext3))
-
-$(eval $(call KMOD_template,FS_HFSPLUS,fs-hfsplus,\
-	$(MODULES_DIR)/kernel/fs/hfsplus/*.o \
-,CONFIG_HFSPLUS_FS,,30,hfsplus))
-
-$(eval $(call KMOD_template,FS_NFS,fs-nfs,\
-	$(MODULES_DIR)/kernel/fs/lockd/*.o \
-	$(MODULES_DIR)/kernel/fs/nfs/*.o \
-	$(MODULES_DIR)/kernel/net/sunrpc/*.o \
-,CONFIG_NFS_FS,,30,sunrpc lockd nfs))
-
-$(eval $(call KMOD_template,FS_VFAT,fs-vfat,\
-	$(MODULES_DIR)/kernel/fs/vfat/vfat.o \
-	$(MODULES_DIR)/kernel/fs/fat/fat.o \
-,CONFIG_VFAT_FS,,30,fat vfat))
-
-$(eval $(call KMOD_template,FS_XFS,fs-xfs,\
-	$(MODULES_DIR)/kernel/fs/xfs/*.o \
-,CONFIG_XFS_FS,,30,xfs))
-
-
-# Multimedia
-
-$(eval $(call KMOD_template,PWC,pwc,\
-	$(MODULES_DIR)/kernel/drivers/usb/pwc.o \
-,CONFIG_USB_PWC,kmod-videodev,63,pwc))
-
-$(eval $(call KMOD_template,SOUNDCORE,soundcore,\
-	$(MODULES_DIR)/kernel/drivers/sound/soundcore.o \
-,CONFIG_SOUND,,30,soundcore))
-
-$(eval $(call KMOD_template,VIDEODEV,videodev,\
-	$(MODULES_DIR)/kernel/drivers/media/video/videodev.o \
-,CONFIG_VIDEO_DEV,,62,videodev))
-
-
-# Network devices
-
-$(eval $(call KMOD_template,NET_3C59X,net-3c59x,\
-	$(MODULES_DIR)/kernel/drivers/net/3c59x.o \
-,CONFIG_VORTEX,,10,3c59x))
-
-$(eval $(call KMOD_template,NET_8139TOO,net-8139too,\
-	$(MODULES_DIR)/kernel/drivers/net/8139too.o \
-	$(MODULES_DIR)/kernel/drivers/net/mii.o \
-,CONFIG_8139TOO,,10,mii 8139too))
-
-$(eval $(call KMOD_template,NET_AIRO,net-airo,\
-	$(MODULES_DIR)/kernel/drivers/net/wireless/airo.o \
-,CONFIG_AIRO,,10,airo))
-
-$(eval $(call KMOD_template,NET_E100,net-e100,\
-	$(MODULES_DIR)/kernel/drivers/net/e100.o \
-,CONFIG_E100,,10,e100))
-
-$(eval $(call KMOD_template,NET_HERMES,net-hermes,\
-	$(MODULES_DIR)/kernel/drivers/net/wireless/hermes.o \
-	$(MODULES_DIR)/kernel/drivers/net/wireless/orinoco.o \
-,CONFIG_HERMES,,10,hermes orinoco))
-
-$(eval $(call KMOD_template,NET_HERMES_PCI,net-hermes-pci,\
-	$(MODULES_DIR)/kernel/drivers/net/wireless/orinoco_pci.o \
-,CONFIG_PCI_HERMES,kmod-net-hermes,11,orinoco_pci))
-
-$(eval $(call KMOD_template,NET_HERMES_PCI,net-hermes-plx,\
-	$(MODULES_DIR)/kernel/drivers/net/wireless/orinoco_plx.o \
-,CONFIG_PLX_HERMES,kmod-net-hermes,11,orinoco_plx))
-
-$(eval $(call KMOD_template,NET_NATSEMI,net-natsemi,\
-	$(MODULES_DIR)/kernel/drivers/net/natsemi.o \
-,CONFIG_NATSEMI,,10,natsemi))
-
-$(eval $(call KMOD_template,NET_PRISM54,net-prism54,\
-	$(MODULES_DIR)/kernel/drivers/net/wireless/prism54/prism54.o \
-,CONFIG_PRISM54,,10,prism54))
-
-
-# PCMCIA/CardBus
-
-$(eval $(call KMOD_template,PCMCIA_CORE,pcmcia-core,\
-	$(MODULES_DIR)/kernel/drivers/pcmcia/pcmcia_core.o \
-	$(MODULES_DIR)/kernel/drivers/pcmcia/yenta_socket.o \
-	$(MODULES_DIR)/kernel/drivers/pcmcia/ds.o \
-,CONFIG_PCMCIA,,50,pcmcia_core yenta_socket ds))
-
-$(eval $(call KMOD_template,PCMCIA_SERIAL,pcmcia-serial,\
-	$(MODULES_DIR)/kernel/drivers/char/pcmcia/serial_cs.o \
-,CONFIG_PCMCIA_SERIAL_CS,kmod-pcmcia-core,51,serial_cs))
-
-
-# USB
-
-$(eval $(call KMOD_template,USB,usb-core,\
-	$(MODULES_DIR)/kernel/drivers/usb/usbcore.o \
-,CONFIG_USB,,50,usbcore))
-
-$(eval $(call KMOD_template,USB_OHCI,usb-ohci,\
-	$(MODULES_DIR)/kernel/drivers/usb/host/usb-ohci.o \
-,CONFIG_USB_OHCI,kmod-usb-core,60,usb-ohci))
-
-$(eval $(call KMOD_template,USB_UHCI,usb-uhci,\
-	$(MODULES_DIR)/kernel/drivers/usb/host/uhci.o \
-,CONFIG_USB_UHCI_ALT,kmod-usb-core,60,uhci))
-
-$(eval $(call KMOD_template,USB2,usb2,\
-	$(MODULES_DIR)/kernel/drivers/usb/host/ehci-hcd.o \
-,CONFIG_USB_EHCI_HCD,kmod-usb-core,60,ehci-hcd))
-
-$(eval $(call KMOD_template,USB_ACM,usb-acm,\
-	$(MODULES_DIR)/kernel/drivers/usb/acm.o \
-,CONFIG_USB_ACM))
-
-$(eval $(call KMOD_template,USB_AUDIO,usb-audio,\
-	$(MODULES_DIR)/kernel/drivers/usb/audio.o \
-,CONFIG_USB_AUDIO,kmod-soundcore kmod-usb-core,61,audio))
-
-$(eval $(call KMOD_template,USB_PRINTER,usb-printer,\
-	$(MODULES_DIR)/kernel/drivers/usb/printer.o \
-,CONFIG_USB_PRINTER,kmod-usb-core,60,printer))
-
-$(eval $(call KMOD_template,USB_SERIAL,usb-serial,\
-	$(MODULES_DIR)/kernel/drivers/usb/serial/usbserial.o \
-,CONFIG_USB_SERIAL,kmod-usb-core,60,usbserial))
-
-$(eval $(call KMOD_template,USB_SERIAL_BELKIN,usb-serial-belkin,\
-	$(MODULES_DIR)/kernel/drivers/usb/serial/belkin_sa.o \
-,CONFIG_USB_SERIAL_BELKIN,kmod-usb-serial,61,belkin_sa))
-
-$(eval $(call KMOD_template,USB_SERIAL_FTDI,usb-serial-ftdi,\
-	$(MODULES_DIR)/kernel/drivers/usb/serial/ftdi_sio.o \
-,CONFIG_USB_SERIAL_FTDI_SIO,kmod-usb-serial,61,ftdi_sio))
-
-$(eval $(call KMOD_template,USB_SERIAL_MCT_U232,usb-serial-mct-u232,\
-	$(MODULES_DIR)/kernel/drivers/usb/serial/mct_u232.o \
-,CONFIG_USB_SERIAL_MCT_U232,kmod-usb-serial,61,mct_u232))
-
-$(eval $(call KMOD_template,USB_SERIAL_PL2303,usb-serial-pl2303,\
-	$(MODULES_DIR)/kernel/drivers/usb/serial/pl2303.o \
-,CONFIG_USB_SERIAL_PL2303,kmod-usb-serial,61,pl2303))
-
-$(eval $(call KMOD_template,USB_SERIAL_VISOR,usb-serial-visor,\
-	$(MODULES_DIR)/kernel/drivers/usb/serial/visor.o \
-,CONFIG_USB_SERIAL_VISOR,kmod-usb-serial,61,visor))
-
-$(eval $(call KMOD_template,USB_STORAGE,usb-storage,\
-	$(MODULES_DIR)/kernel/drivers/scsi/*.o \
-	$(MODULES_DIR)/kernel/drivers/usb/storage/*.o \
-,CONFIG_USB_STORAGE,kmod-usb-core,60,scsi_mod sd_mod usb-storage))
-
-
-# Misc. devices
-
-$(eval $(call KMOD_template,AX25,ax25,\
-	$(MODULES_DIR)/kernel/net/ax25/ax25.o \
-	$(MODULES_DIR)/kernel/drivers/net/hamradio/mkiss.o \
-,CONFIG_AX25,,90,ax25 mkiss))
-
-$(eval $(call KMOD_template,BLUETOOTH,bluetooth,\
-	$(MODULES_DIR)/kernel/net/bluetooth/*.o \
-	$(MODULES_DIR)/kernel/net/bluetooth/rfcomm/*.o \
-	$(MODULES_DIR)/kernel/drivers/bluetooth/*.o \
-,CONFIG_BLUEZ))
-
-$(eval $(call KMOD_template,SOFTDOG,softdog,\
-	$(MODULES_DIR)/kernel/drivers/char/softdog.o \
-,CONFIG_SOFT_WATCHDOG,,95,softdog))
-
-
-
-

--- a/target/linux/generic-2.6/modules.mk
+++ /dev/null
@@ -1,358 +1,1 @@
-NF_2_6:=1
-include ../netfilter.mk
 
-# Networking
-
-$(eval $(call KMOD_template,ATM,atm,\
-	$(MODULES_DIR)/kernel/net/atm/atm.ko \
-	$(MODULES_DIR)/kernel/net/atm/br2684.ko \
-	$(MODULES_DIR)/kernel/drivers/atm/atmtcp.ko \
-,CONFIG_ATM,,50,atm))
-
-$(eval $(call KMOD_template,GRE,gre,\
-	$(MODULES_DIR)/kernel/net/ipv4/ip_gre.ko \
-,CONFIG_NET_IPGRE))
-
-$(eval $(call KMOD_template,IMQ,imq,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/*IMQ*.ko \
-	$(MODULES_DIR)/kernel/drivers/net/imq.ko \
-))
-
-$(eval $(call KMOD_template,IPIP,ipip,\
-	$(MODULES_DIR)/kernel/net/ipv4/ipip.ko \
-,CONFIG_NET_IPIP,,60,ipip))
-
-$(eval $(call KMOD_template,IPV6,ipv6,\
-	$(MODULES_DIR)/kernel/net/ipv6/ipv6.ko \
-,CONFIG_IPV6,,20,ipv6))
-
-$(eval $(call KMOD_template,PPP,ppp,\
-	$(MODULES_DIR)/kernel/drivers/net/ppp_async.ko \
-	$(MODULES_DIR)/kernel/drivers/net/ppp_generic.ko \
-	$(MODULES_DIR)/kernel/drivers/net/slhc.ko \
-	$(MODULES_DIR)/kernel/lib/crc-ccitt.ko \
-,CONFIG_PPP))
-
-#$(eval $(call KMOD_template,MPPE,mppe,\
-#	$(MODULES_DIR)/kernel/drivers/net/ppp_mppe_mppc.ko \
-#,CONFIG_PPP_MPPE_MPPC))
-
-$(eval $(call KMOD_template,PPPOATM,pppoatm,\
-	$(MODULES_DIR)/kernel/net/atm/pppoatm.ko \
-,CONFIG_PPPOATM))
-
-$(eval $(call KMOD_template,PPPOE,pppoe,\
-	$(MODULES_DIR)/kernel/drivers/net/pppoe.ko \
-	$(MODULES_DIR)/kernel/drivers/net/pppox.ko \
-,CONFIG_PPPOE))
-
-$(eval $(call KMOD_template,SCHED,sched,\
-	$(MODULES_DIR)/kernel/net/sched/*.ko \
-))
-
-$(eval $(call KMOD_template,TUN,tun,\
-	$(MODULES_DIR)/kernel/drivers/net/tun.ko \
-,CONFIG_TUN,,20,tun))
-
-
-# Filtering / Firewalling
-
-$(eval $(call KMOD_template,ARPTABLES,arptables,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/arp*.ko \
-,CONFIG_IP_NF_ARPTABLES))
-
-$(eval $(call KMOD_template,EBTABLES,ebtables,\
-	$(MODULES_DIR)/kernel/net/bridge/netfilter/*.ko \
-,CONFIG_BRIDGE_NF_EBTABLES))
-
-# metapackage for compatibility ...
-$(eval $(call KMOD_template,IPTABLES_EXTRA,iptables-extra,\
-,,kmod-ipt-conntrack kmod-ipt-extra kmod-ipt-filter kmod-ipt-ipopt kmod-ipt-ipsec kmod-ipt-nat kmod-ipt-nat-extra kmod-ipt-queue kmod-ipt-ulogd))
-
-$(eval $(call KMOD_template,IPT_CONNTRACK,ipt-conntrack,\
-	$(foreach mod,$(IPT_CONNTRACK-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
-))
-
-$(eval $(call KMOD_template,IPT_EXTRA,ipt-extra,\
-	$(foreach mod,$(IPT_EXTRA-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
-))
-
-$(eval $(call KMOD_template,IPT_FILTER,ipt-filter,\
-	$(foreach mod,$(IPT_FILTER-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
-))
-
-$(eval $(call KMOD_template,IPT_IPOPT,ipt-ipopt,\
-	$(foreach mod,$(IPT_IPOPT-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
-))
-
-$(eval $(call KMOD_template,IPT_IPSEC,ipt-ipsec,\
-	$(foreach mod,$(IPT_IPSEC-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
-))
-
-$(eval $(call KMOD_template,IPT_NAT,ipt-nat,\
-	$(foreach mod,$(IPT_NAT-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
-))
-
-$(eval $(call KMOD_template,IPT_NAT_EXTRA,ipt-nat-extra,\
-	$(foreach mod,$(IPT_NAT_EXTRA-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
-,,,40,$(IPT_NAT_EXTRA-m)))
-
-$(eval $(call KMOD_template,IPT_QUEUE,ipt-queue,\
-	$(foreach mod,$(IPT_QUEUE-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
-))
-
-$(eval $(call KMOD_template,IPT_ULOG,ipt-ulog,\
-	$(foreach mod,$(IPT_ULOG-m),$(MODULES_DIR)/kernel/net/$(mod).ko) \
-))
-
-$(eval $(call KMOD_template,IP6TABLES,ip6tables,\
-	$(MODULES_DIR)/kernel/net/ipv6/netfilter/ip*.ko \
-,CONFIG_IP6_NF_IPTABLES,kmod-ipv6))
-
-
-# Block devices
-
-$(eval $(call KMOD_template,IDE,ide,\
-	$(MODULES_DIR)/kernel/drivers/ide/*.ko \
-	$(MODULES_DIR)/kernel/drivers/ide/*/*.ko \
-,CONFIG_IDE))
-
-$(eval $(call KMOD_template,LOOP,loop,\
-    $(MODULES_DIR)/kernel/drivers/block/loop.ko \
-,CONFIG_BLK_DEV_LOOP,,20,loop))
-
-$(eval $(call KMOD_template,NBD,nbd,\
-    $(MODULES_DIR)/kernel/drivers/block/nbd.ko \
-,CONFIG_BLK_DEV_NBD,,20,nbd))
-
-
-# Crypto
-
-$(eval $(call KMOD_template,CRYPTO,crypto,\
-	$(MODULES_DIR)/kernel/crypto/*.ko \
-))
-
-
-# Filesystems
-
-$(eval $(call KMOD_template,FS_CIFS,fs-cifs,\
-	$(MODULES_DIR)/kernel/fs/cifs/cifs.ko \
-,CONFIG_CIFS,kmod-nls-base,30,cifs))
-
-$(eval $(call KMOD_template,FS_MINIX,fs-minix,\
-	$(MODULES_DIR)/kernel/fs/minix/minix.ko \
-,CONFIG_MINIX_FS,,30,minix))
-
-$(eval $(call KMOD_template,FS_EXT2,fs-ext2,\
-	$(MODULES_DIR)/kernel/fs/ext2/ext2.ko \
-,CONFIG_EXT2_FS,,30,ext2))
-
-$(eval $(call KMOD_template,FS_EXT3,fs-ext3,\
-	$(MODULES_DIR)/kernel/fs/ext3/ext3.ko \
-	$(MODULES_DIR)/kernel/fs/jbd/jbd.ko \
-,CONFIG_EXT3_FS,,30,jbd ext3))
-
-$(eval $(call KMOD_template,FS_HFSPLUS,fs-hfsplus,\
-	$(MODULES_DIR)/kernel/fs/hfsplus/hfsplus.ko \
-,CONFIG_HFSPLUS_FS,kmod-nls-base,30,hfsplus))
-
-$(eval $(call KMOD_template,FS_NFS,fs-nfs,\
-	$(MODULES_DIR)/kernel/fs/lockd/lockd.ko \
-	$(MODULES_DIR)/kernel/fs/nfs/nfs.ko \
-	$(MODULES_DIR)/kernel/net/sunrpc/sunrpc.ko \
-,CONFIG_NFS_FS,,30,sunrpc lockd nfs))
-
-$(eval $(call KMOD_template,FS_VFAT,fs-vfat,\
-	$(MODULES_DIR)/kernel/fs/fat/fat.ko \
-	$(MODULES_DIR)/kernel/fs/vfat/vfat.ko \
-,CONFIG_VFAT_FS,kmod-nls-base,30,fat vfat))
-
-$(eval $(call KMOD_template,FS_XFS,fs-xfs,\
-	$(MODULES_DIR)/kernel/fs/xfs/xfs.ko \
-,CONFIG_XFS_FS,,30,xfs))
-
-
-# Multimedia
-
-$(eval $(call KMOD_template,PWC,pwc,\
-	$(MODULES_DIR)/kernel/drivers/usb/media/pwc/pwc.ko \
-,CONFIG_USB_PWC,kmod-videodev,63,pwc))
-
-$(eval $(call KMOD_template,SOUNDCORE,soundcore,\
-	$(MODULES_DIR)/kernel/sound/soundcore.ko \
-,CONFIG_SOUND,,30,soundcore))
-
-$(eval $(call KMOD_template,VIDEODEV,videodev,\
-	$(MODULES_DIR)/kernel/drivers/media/video/v4l1-compat.ko \
-	$(MODULES_DIR)/kernel/drivers/media/video/v4l2-common.ko \
-	$(MODULES_DIR)/kernel/drivers/media/video/videodev.ko \
-,CONFIG_VIDEO_DEV,,62,videodev))
-
-
-# NLS
-
-$(eval $(call KMOD_template,NLS_BASE,nls-base,\
-	$(MODULES_DIR)/kernel/fs/nls/nls_base.ko \
-,CONFIG_NLS,,20,nls_base))
-
-$(eval $(call KMOD_template,NLS_CP437,nls-cp437,\
-	$(MODULES_DIR)/kernel/fs/nls/nls_cp437.ko \
-,CONFIG_NLS_CODEPAGE_437,,20,nls_cp437))
-
-$(eval $(call KMOD_template,NLS_CP850,nls-cp850,\
-	$(MODULES_DIR)/kernel/fs/nls/nls_cp850.ko \
-,CONFIG_NLS_CODEPAGE_850,,20,nls_cp850))
-
-$(eval $(call KMOD_template,NLS_ISO8859_1,nls-iso8859-1,\
-	$(MODULES_DIR)/kernel/fs/nls/nls_iso8859-1.ko \
-,CONFIG_NLS_ISO8859_1,,20,nls_iso8859-1))
-
-$(eval $(call KMOD_template,NLS_ISO8859_15,nls-iso8859-15,\
-	$(MODULES_DIR)/kernel/fs/nls/nls_iso8859-15.ko \
-,CONFIG_NLS_ISO8859_15,,20,nls_iso8859-15))
-
-$(eval $(call KMOD_template,NLS_UTF8,nls-utf8,\
-	$(MODULES_DIR)/kernel/fs/nls/nls_utf8.ko \
-,CONFIG_NLS_UTF8,,20,nls_utf8))
-
-
-# Network devices
-
-$(eval $(call KMOD_template,NET_3C59X,net-3c59x,\
-	$(MODULES_DIR)/kernel/drivers/net/3c59x.ko \
-,CONFIG_VORTEX,,10,3c59x))
-
-$(eval $(call KMOD_template,NET_8139TOO,net-8139too,\
-	$(MODULES_DIR)/kernel/drivers/net/8139too.ko \
-,CONFIG_8139TOO,,10,8139too))
-
-$(eval $(call KMOD_template,NET_AIRO,net-airo,\
-	$(MODULES_DIR)/kernel/drivers/net/wireless/airo.ko \
-,CONFIG_AIRO,,10,airo))
-
-$(eval $(call KMOD_template,NET_E100,net-e100,\
-	$(MODULES_DIR)/kernel/drivers/net/e100.ko \
-,CONFIG_E100,,10,e100))
-
-$(eval $(call KMOD_template,NET_HERMES,net-hermes,\
-	$(MODULES_DIR)/kernel/drivers/net/wireless/hermes.ko \
-	$(MODULES_DIR)/kernel/drivers/net/wireless/orinoco.ko \
-,CONFIG_HERMES,,10,hermes orinoco))
-
-$(eval $(call KMOD_template,NET_HERMES_PCI,net-hermes-pci,\
-	$(MODULES_DIR)/kernel/drivers/net/wireless/orinoco_pci.ko \
-,CONFIG_PCI_HERMES,kmod-net-hermes,11,orinoco_pci))
-
-$(eval $(call KMOD_template,NET_HERMES_PCI,net-hermes-plx,\
-	$(MODULES_DIR)/kernel/drivers/net/wireless/orinoco_plx.ko \
-,CONFIG_PLX_HERMES,kmod-net-hermes,11,orinoco_plx))
-
-$(eval $(call KMOD_template,NET_NATSEMI,net-natsemi,\
-	$(MODULES_DIR)/kernel/drivers/net/natsemi.ko \
-,CONFIG_NATSEMI,,10,natsemi))
-
-$(eval $(call KMOD_template,NET_PRISM54,net-prism54,\
-	$(MODULES_DIR)/kernel/drivers/net/wireless/prism54/prism54.ko \
-,CONFIG_PRISM54,,10,prism54))
-
-
-# PCMCIA/CardBus
-
-$(eval $(call KMOD_template,PCMCIA_CORE,pcmcia-core,\
-	$(MODULES_DIR)/kernel/drivers/pcmcia/pcmcia.ko \
-	$(MODULES_DIR)/kernel/drivers/pcmcia/pcmcia_core.ko \
-	$(MODULES_DIR)/kernel/drivers/pcmcia/yenta_socket.ko \
-	$(MODULES_DIR)/kernel/drivers/pcmcia/rsrc_nonstatic.ko \
-,CONFIG_PCMCIA,,50,pcmcia_core pcmcia yenta_socket rsrc_nonstatic))
-
-$(eval $(call KMOD_template,PCMCIA_SERIAL,pcmcia-serial,\
-	$(MODULES_DIR)/kernel/drivers/serial/serial_cs.ko \
-,CONFIG_SERIAL_8250_CS))
-
-
-# USB
-
-$(eval $(call KMOD_template,USB,usb-core,\
-	$(MODULES_DIR)/kernel/drivers/usb/core/usbcore.ko \
-,CONFIG_USB,,50,usbcore))
-
-$(eval $(call KMOD_template,USB_OHCI,usb-ohci,\
-	$(MODULES_DIR)/kernel/drivers/usb/host/ohci-hcd.ko \
-,CONFIG_USB_OHCI_HCD,kmod-usb-core,60,ohci-hcd))
-
-$(eval $(call KMOD_template,USB_UHCI,usb-uhci,\
-	$(MODULES_DIR)/kernel/drivers/usb/host/uhci-hcd.ko \
-,CONFIG_USB_UHCI_HCD,kmod-usb-core,60,uhci-hcd))
-
-$(eval $(call KMOD_template,USB2,usb2,\
-	$(MODULES_DIR)/kernel/drivers/usb/host/ehci-hcd.ko \
-,CONFIG_USB_EHCI_HCD,kmod-usb-core,60,ehci-hcd))
-
-$(eval $(call KMOD_template,USB_ACM,usb-acm,\
-	$(MODULES_DIR)/kernel/drivers/usb/class/cdc-acm.ko \
-,CONFIG_USB_ACM))
-
-$(eval $(call KMOD_template,USB_AUDIO,usb-audio,\
-	$(MODULES_DIR)/kernel/drivers/usb/class/audio.ko \
-,CONFIG_USB_AUDIO,kmod-soundcore kmod-usb-core,61,audio))
-
-$(eval $(call KMOD_template,USB_PRINTER,usb-printer,\
-	$(MODULES_DIR)/kernel/drivers/usb/class/usblp.ko \
-,CONFIG_USB_PRINTER,kmod-usb-core,60,usblp))
-
-$(eval $(call KMOD_template,USB_SERIAL,usb-serial,\
-	$(MODULES_DIR)/kernel/drivers/usb/serial/usbserial.ko \
-,CONFIG_USB_SERIAL,kmod-usb-core,60,usbserial))
-
-$(eval $(call KMOD_template,USB_SERIAL_BELKIN,usb-serial-belkin,\
-	$(MODULES_DIR)/kernel/drivers/usb/serial/belkin_sa.ko \
-,CONFIG_USB_SERIAL_BELKIN,kmod-usb-serial,61,belkin_sa))
-
-$(eval $(call KMOD_template,USB_SERIAL_FTDI,usb-serial-ftdi,\
-	$(MODULES_DIR)/kernel/drivers/usb/serial/ftdi_sio.ko \
-,CONFIG_USB_SERIAL_FTDI_SIO,kmod-usb-serial,61,ftdi_sio))
-
-$(eval $(call KMOD_template,USB_SERIAL_MCT_U232,usb-serial-mct-u232,\
-	$(MODULES_DIR)/kernel/drivers/usb/serial/mct_u232.ko \
-,CONFIG_USB_SERIAL_MCT_U232,kmod-usb-serial,61,mct_u232))
-
-$(eval $(call KMOD_template,USB_SERIAL_PL2303,usb-serial-pl2303,\
-	$(MODULES_DIR)/kernel/drivers/usb/serial/pl2303.ko \
-,CONFIG_USB_SERIAL_PL2303,kmod-usb-serial,61,pl2303))
-
-$(eval $(call KMOD_template,USB_SERIAL_VISOR,usb-serial-visor,\
-	$(MODULES_DIR)/kernel/drivers/usb/serial/visor.ko \
-,CONFIG_USB_SERIAL_VISOR,kmod-usb-serial,61,visor))
-
-$(eval $(call KMOD_template,USB_STORAGE,usb-storage,\
-	$(MODULES_DIR)/kernel/drivers/scsi/scsi_mod.ko \
-	$(MODULES_DIR)/kernel/drivers/scsi/sd_mod.ko \
-	$(MODULES_DIR)/kernel/drivers/usb/storage/usb-storage.ko \
-,CONFIG_USB_STORAGE,kmod-usb-core,60,scsi_mod sd_mod usb-storage))
-
-$(eval $(call KMOD_template,USB_ATM,usb-atm,\
-        $(MODULES_DIR)/kernel/drivers/usb/atm/usbatm.ko \
-	,CONFIG_USB_ATM,kmod-usb-atm,50,usbatm))
-
-$(eval $(call KMOD_template,USB_ATM_SPEEDTOUCH,usb-atm-speedtouch,\
-        $(MODULES_DIR)/kernel/drivers/usb/atm/speedtch.ko \
-	,CONFIG_USB_SPEEDTOUCH,kmod-usb-atm-speedtouch,50,speedtch))
-
-# Misc. devices
-
-$(eval $(call KMOD_template,AX25,ax25,\
-	$(MODULES_DIR)/kernel/net/ax25/ax25.ko \
-	$(MODULES_DIR)/kernel/drivers/net/hamradio/mkiss.ko \
-,CONFIG_AX25,,90,ax25 mkiss))
-
-$(eval $(call KMOD_template,BLUETOOTH,bluetooth,\
-	$(MODULES_DIR)/kernel/net/bluetooth/bluetooth.ko \
-	$(MODULES_DIR)/kernel/net/bluetooth/l2cap.ko \
-	$(MODULES_DIR)/kernel/net/bluetooth/sco.ko \
-	$(MODULES_DIR)/kernel/net/bluetooth/rfcomm/rfcomm.ko \
-	$(MODULES_DIR)/kernel/drivers/bluetooth/hci_uart.ko \
-	$(MODULES_DIR)/kernel/drivers/bluetooth/hci_usb.ko \
-,CONFIG_BT))
-
-
-

--- a/target/linux/image/ar7/Makefile
+++ b/target/linux/image/ar7/Makefile
@@ -1,4 +1,4 @@
-include ../image.mk
+include $(TOPDIR)/include/image.mk
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/ar7loader
 

--- a/target/linux/image/aruba/Makefile
+++ b/target/linux/image/aruba/Makefile
@@ -1,4 +1,4 @@
-include ../image.mk
+include $(TOPDIR)/include/image.mk
 
 LOADADDR = 0x81000000		# RAM start + 16M 
 KERNEL_ENTRY = 0x80100000

--- a/target/linux/image/au1000/Makefile
+++ b/target/linux/image/au1000/Makefile
@@ -1,4 +1,4 @@
-include ../image.mk
+include $(TOPDIR)/include/image.mk
 
 LOADADDR = 0x8108c8f4		# RAM start + 16M 
 KERNEL_ENTRY = 0x80100000	# Default kernel entry in arch/mips/Makefile

--- a/target/linux/image/brcm/Makefile
+++ b/target/linux/image/brcm/Makefile
@@ -1,4 +1,4 @@
-include ../image.mk
+include $(TOPDIR)/include/image.mk
 
 define Build/Compile
 	rm -f $(KDIR)/loader.gz

--- a/target/linux/image/generic/Makefile
+++ b/target/linux/image/generic/Makefile
@@ -1,4 +1,4 @@
-include ../image.mk
+include $(TOPDIR)/include/image.mk
 
 # use default targets for everything
 

--- a/target/linux/image/image.mk
+++ /dev/null
@@ -1,56 +1,1 @@
-include $(TOPDIR)/rules.mk
 
-KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
-
-ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
-ifeq ($(CONFIG_TARGET_ROOTFS_JFFS2),y)
-include $(TOPDIR)/target/linux/image/jffs2.mk
-endif
-
-ifeq ($(CONFIG_TARGET_ROOTFS_SQUASHFS_LZMA),y)
-include $(TOPDIR)/target/linux/image/squashfs.mk
-endif
-
-ifeq ($(CONFIG_TARGET_ROOTFS_TGZ),y)
-include $(TOPDIR)/target/linux/image/tgz.mk
-endif
-endif
-
-define Image/mkfs/prepare/default
-	find $(BUILD_DIR)/root -type f -not -perm +0100 | xargs chmod 0644
-	find $(BUILD_DIR)/root -type f -perm +0100 | xargs chmod 0755
-	find $(BUILD_DIR)/root -type d | xargs chmod 0755
-	mkdir -p $(BUILD_DIR)/root/tmp
-	chmod 0777 $(BUILD_DIR)/root/tmp
-endef
-
-define Image/mkfs/prepare
-	$(call Image/mkfs/prepare/default)
-endef
-
-define BuildImage
-compile:
-	$(call Build/Compile)
-
-install:
-	$(call Image/Prepare)
-	$(call Image/mkfs/prepare)
-	$(call Image/BuildKernel)
-	$(call Image/mkfs/jffs2)
-	$(call Image/mkfs/squashfs)
-	$(call Image/mkfs/tgz)
-	
-clean:
-	$(call Build/Clean)
-endef
-
-compile-targets:
-install-targets:
-clean-targets:
-
-source:
-prepare:
-compile: compile-targets
-install: compile install-targets
-clean: clean-targets
-

--- a/target/linux/image/jffs2.mk
+++ /dev/null
@@ -1,31 +1,1 @@
-ifneq ($(CONFIG_BIG_ENDIAN),y)
-JFFS2OPTS :=  --pad --little-endian --squash
-else
-JFFS2OPTS :=  --pad --big-endian --squash
-endif
 
-define Image/mkfs/jffs2
-	rm -rf $(BUILD_DIR)/root/jffs
-	
-	$(STAGING_DIR)/bin/mkfs.jffs2 $(JFFS2OPTS) -e 0x10000 -o $(KDIR)/root.jffs2-64k -d $(BUILD_DIR)/root
-	$(STAGING_DIR)/bin/mkfs.jffs2 $(JFFS2OPTS) -e 0x20000 -o $(KDIR)/root.jffs2-128k -d $(BUILD_DIR)/root
-
-	$(call Image/Build,jffs2-64k)
-	$(call Image/Build,jffs2-128k)
-endef
-
-jffs2-source: FORCE
-	$(MAKE) -C $(TOPDIR)/target/linux/image/jffs2 source
-
-$(STAGING_DIR)/bin/mkfs.jffs2:
-	$(MAKE) -C $(TOPDIR)/target/linux/image/jffs2 compile
-
-jffs2-clean: FORCE
-	$(MAKE) -C $(TOPDIR)/target/linux/image/jffs2 clean
-	rm -f $(KDIR)/root.jffs2*
-
-source: jffs2-source
-compile-targets: $(STAGING_DIR)/bin/mkfs.jffs2
-clean-targets: jffs2-clean
-
-

--- a/target/linux/image/jffs2/Makefile
+++ /dev/null
@@ -1,30 +1,1 @@
-include $(TOPDIR)/rules.mk
 
-MTD_DIR:=$(BUILD_DIR)/mtd-20050122.orig
-MTD_SOURCE=mtd_20050122.orig.tar.gz
-MTD_SITE=http://ftp.debian.org/debian/pool/main/m/mtd
-MTD_MD5SUM:=1f42c2cae08eb9e7b52d0c188f8d6338
-MKFS_JFFS2=$(MTD_DIR)/util/mkfs.jffs2
-
-$(DL_DIR)/$(MTD_SOURCE):
-	$(SCRIPT_DIR)/download.pl $(DL_DIR) $(MTD_SOURCE) $(MTD_MD5SUM) $(MTD_SITE)
-
-$(MTD_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
-	zcat $(DL_DIR)/$(MTD_SOURCE) | tar -C $(BUILD_DIR) -xvf -
-	$(PATCH) $(MTD_DIR) ./patches
-	touch $(MTD_DIR)/.unpacked
-
-$(MTD_DIR)/util/mkfs.jffs2: $(MTD_DIR)/.unpacked
-	$(MAKE) LINUXDIR=$(LINUX_DIR) -C $(MTD_DIR)/util
-
-$(STAGING_DIR)/bin/mkfs.jffs2: $(MTD_DIR)/util/mkfs.jffs2
-	$(CP) $< $@
-
-source: $(DL_DIR)/$(MTD_SOURCE)
-prepare: $(MTD_DIR)/.unpacked
-compile: $(MTD_DIR)/util/mkfs.jffs2 $(STAGING_DIR)/bin/mkfs.jffs2
-install: 
-clean: FORCE
-	rm -rf $(MTD_DIR) $(STAGING_DIR)/bin/mkfs.jffs2
-
-

--- a/target/linux/image/jffs2/patches/gcc4-fix.patch
+++ /dev/null
@@ -1,25 +1,1 @@
-diff -urN mtd-20050122.orig.old/include/mtd/jffs2-user.h mtd-20050122.orig.dev/include/mtd/jffs2-user.h
---- mtd-20050122.orig.old/include/mtd/jffs2-user.h	2004-05-05 13:57:54.000000000 +0200
-+++ mtd-20050122.orig.dev/include/mtd/jffs2-user.h	2005-07-02 10:03:09.000000000 +0200
-@@ -19,8 +19,6 @@
- #undef je32_to_cpu
- #undef jemode_to_cpu
- 
--extern int target_endian;
--
- #define t16(x) ({ uint16_t __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_16(__b); })
- #define t32(x) ({ uint32_t __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_32(__b); })
- 
-diff -urN mtd.old/util/jffs3.h mtd.dev/util/jffs3.h
---- mtd.old/util/jffs3.h	2005-01-22 00:00:13.000000000 +0100
-+++ mtd.dev/util/jffs3.h	2005-07-17 17:48:24.000000000 +0200
-@@ -177,8 +177,6 @@
- #undef je32_to_cpu
- #undef jemode_to_cpu
- 
--extern int target_endian;
--
- #define t16(x) ({ uint16_t __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_16(__b); })
- #define t32(x) ({ uint32_t __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_32(__b); })
- 
 

--- a/target/linux/image/rb532/Makefile
+++ b/target/linux/image/rb532/Makefile
@@ -1,4 +1,4 @@
-include ../image.mk
+include $(TOPDIR)/include/image.mk
 
 LOADADDR = 0x81000000		# RAM start + 16M 
 KERNEL_ENTRY = 0x80101000

--- a/target/linux/image/squashfs.mk
+++ /dev/null
@@ -1,26 +1,1 @@
-ifneq ($(CONFIG_BIG_ENDIAN),y)
-ENDIAN := le
-else
-ENDIAN := be
-endif
 
-squashfs-source: FORCE
-	$(MAKE) -C $(TOPDIR)/target/linux/image/squashfs source
-
-$(STAGING_DIR)/bin/mksquashfs-lzma:
-	$(MAKE) -C $(TOPDIR)/target/linux/image/squashfs compile
-	
-squashfs-clean: FORCE
-	$(MAKE) -C $(TOPDIR)/target/linux/image/squashfs clean
-	rm -f $(KDIR)/root.squashfs
-
-define Image/mkfs/squashfs
-	@mkdir -p $(BUILD_DIR)/root/jffs
-	$(STAGING_DIR)/bin/mksquashfs-lzma $(BUILD_DIR)/root $(KDIR)/root.squashfs -nopad -noappend -root-owned -$(ENDIAN)
-	$(call Image/Build,squashfs)
-endef
-
-FILESYSTEMS += squashfs
-compile-targets: $(STAGING_DIR)/bin/mksquashfs-lzma
-clean-targets: squashfs-clean
-

--- a/target/linux/image/squashfs/Makefile
+++ /dev/null
@@ -1,28 +1,1 @@
-include $(TOPDIR)/rules.mk
 
-SQUASHFSLZMA_DIR=$(BUILD_DIR)/squashfs3.0
-SQUASHFSLZMA_SOURCE=squashfs3.0.tar.gz
-SQUASHFSLZMA_SITE=@SF/squashfs
-SQUASHFSLZMA_MD5SUM=9fd05d0bfbb712f5fb95edafea5bc733
-
-$(DL_DIR)/$(SQUASHFSLZMA_SOURCE):
-	$(SCRIPT_DIR)/download.pl $(DL_DIR) $(SQUASHFSLZMA_SOURCE) $(SQUASHFSLZMA_MD5SUM) $(SQUASHFSLZMA_SITE)
-
-$(SQUASHFSLZMA_DIR)/.unpacked: $(DL_DIR)/$(SQUASHFSLZMA_SOURCE) 
-	zcat $(DL_DIR)/$(SQUASHFSLZMA_SOURCE) | tar -C $(BUILD_DIR) -xvf -
-	$(PATCH) $(SQUASHFSLZMA_DIR) ./patches
-	touch $(SQUASHFSLZMA_DIR)/.unpacked
-
-$(SQUASHFSLZMA_DIR)/squashfs-tools/mksquashfs-lzma: $(SQUASHFSLZMA_DIR)/.unpacked
-	$(MAKE) -C $(SQUASHFSLZMA_DIR)/squashfs-tools mksquashfs-lzma LZMAPATH=$(BUILD_DIR)/lzma
-
-$(STAGING_DIR)/bin/mksquashfs-lzma: $(SQUASHFSLZMA_DIR)/squashfs-tools/mksquashfs-lzma
-	$(CP) $< $@
-
-source: $(DL_DIR)/$(SQUASHFSLZMA_SOURCE)
-prepare: $(SQUASHFSLZMA_DIR)/.unpacked
-compile: $(SQUASHFSLZMA_DIR)/squashfs-tools/mksquashfs-lzma $(STAGING_DIR)/bin/mksquashfs-lzma
-install:
-clean: FORCE
-	rm -rf $(SQUASHFSLZMA_DIR)
-

--- a/target/linux/image/squashfs/patches/100-lzma.patch
+++ /dev/null
@@ -1,26 +1,1 @@
-diff -Nur squashfs3.0/squashfs-tools/Makefile squashfs3.0-owrt/squashfs-tools/Makefile
---- squashfs3.0/squashfs-tools/Makefile	2006-03-15 22:36:20.000000000 +0100
-+++ squashfs3.0-owrt/squashfs-tools/Makefile	2006-03-21 11:14:08.000000000 +0100
-@@ -1,4 +1,5 @@
- INCLUDEDIR = .
-+#LZMAPATH = ../lzma/SRC/7zip/Compress/LZMA_Lib
- 
- CFLAGS := -I$(INCLUDEDIR) -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2
- 
-@@ -7,6 +8,9 @@
- mksquashfs: mksquashfs.o read_fs.o sort.o
- 	$(CC) mksquashfs.o read_fs.o sort.o -lz -o $@
- 
-+mksquashfs-lzma: mksquashfs.o read_fs.o sort.o
-+	$(CXX) mksquashfs.o read_fs.o sort.o -L$(LZMAPATH) -llzma -o $@
-+
- mksquashfs.o: mksquashfs.c squashfs_fs.h mksquashfs.h global.h sort.h
- 
- read_fs.o: read_fs.c squashfs_fs.h read_fs.h global.h
-@@ -17,3 +21,5 @@
- 	$(CC) unsquashfs.o -lz -o $@
- 
- unsquashfs.o: unsquashfs.c squashfs_fs.h read_fs.h global.h
-+
-+clean:
 

--- a/target/linux/image/tgz.mk
+++ /dev/null
@@ -1,4 +1,1 @@
-define Image/mkfs/tgz
-	tar -zcf $(BIN_DIR)/openwrt-rootfs.tgz --owner=root --group=root -C $(BUILD_DIR)/root/ .
-endef
 

--- a/target/linux/image/x86/Makefile
+++ b/target/linux/image/x86/Makefile
@@ -1,4 +1,4 @@
-include ../image.mk
+include $(TOPDIR)/include/image.mk
 
 define Image/Build
 	cp $(KDIR)/root.$(1) $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(1).img

--- a/target/linux/image/xscale/Makefile
+++ b/target/linux/image/xscale/Makefile
@@ -1,4 +1,4 @@
-include ../image.mk
+include $(TOPDIR)/include/image.mk
 
 define Image/Build
 ifneq ($(FS),jffs2-64k)

file:a/target/linux/kernel.mk (deleted)
--- a/target/linux/kernel.mk
+++ /dev/null
@@ -1,123 +1,1 @@
-LINUX_SOURCE:=$(LINUX_NAME).tar.bz2
-LINUX_SITE=http://www.us.kernel.org/pub/linux/kernel/v$(KERNEL) \
-           http://www.us.kernel.org/pub/linux/kernel/v$(KERNEL) \
-           http://www.kernel.org/pub/linux/kernel/v$(KERNEL) \
-           http://www.de.kernel.org/pub/linux/kernel/v$(KERNEL)
 
-KERNEL_IDIR:=$(LINUX_BUILD_DIR)/kernel-ipkg
-
-$(TARGETS): $(PACKAGE_DIR)
-
-$(LINUX_DIR):
-	mkdir -p $@
-
-$(PACKAGE_DIR):
-	mkdir -p $@
-
-$(DL_DIR)/$(LINUX_SOURCE):
-	-mkdir -p $(DL_DIR)
-	$(SCRIPT_DIR)/download.pl $(DL_DIR) $(LINUX_SOURCE) $(LINUX_KERNEL_MD5SUM) $(LINUX_SITE)
-
-$(LINUX_DIR)/.unpacked: $(DL_DIR)/$(LINUX_SOURCE)
-	-mkdir -p $(LINUX_BUILD_DIR)
-	bzcat $(DL_DIR)/$(LINUX_SOURCE) | tar -C $(LINUX_BUILD_DIR) $(TAR_OPTIONS) -
-	touch $@
-
-ifeq ($(KERNEL),2.4)
-$(LINUX_DIR)/.configured: $(LINUX_DIR)/.patched
-	$(SED) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" \
-	  $(LINUX_DIR)/Makefile  \
-	  $(LINUX_DIR)/arch/*/Makefile
-	$(SED) "s,\-mcpu=,\-mtune=,g;" $(LINUX_DIR)/arch/mips/Makefile
-	$(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_KARCH) oldconfig include/linux/compile.h include/linux/version.h
-	touch $@
-
-$(LINUX_DIR)/.depend_done: $(LINUX_DIR)/.configured
-	$(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) dep
-	touch $@
-
-$(LINUX_DIR)/vmlinux: $(LINUX_DIR)/.depend_done
-else
-$(LINUX_DIR)/.configured: $(LINUX_DIR)/.patched
-	$(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) oldconfig prepare scripts
-	touch $@
-endif
-
-ramdisk-config: $(LINUX_DIR)/.configured FORCE
-	mv $(LINUX_DIR)/.config $(LINUX_DIR)/.config.old
-	grep -v INITRAMFS $(LINUX_DIR)/.config.old > $(LINUX_DIR)/.config
-ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
-	echo 'CONFIG_INITRAMFS_SOURCE="../../root"' >> $(LINUX_DIR)/.config
-	echo 'CONFIG_INITRAMFS_ROOT_UID=0' >> $(LINUX_DIR)/.config
-	echo 'CONFIG_INITRAMFS_ROOT_GID=0' >> $(LINUX_DIR)/.config
-	mkdir -p $(BUILD_DIR)/root/etc/init.d
-	$(CP) ../generic-2.6/files/init $(BUILD_DIR)/root/
-else
-	rm -f $(BUILD_DIR)/root/init $(BUILD_DIR)/root/etc/init.d/S00initramfs
-	echo 'CONFIG_INITRAMFS_SOURCE=""' >> $(LINUX_DIR)/.config
-endif
-
-$(LINUX_DIR)/vmlinux: $(STAMP_DIR)/.linux-compile pkg-install ramdisk-config
-	$(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) PATH=$(TARGET_PATH)
-
-$(LINUX_KERNEL): $(LINUX_DIR)/vmlinux
-	$(TARGET_CROSS)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S $< $@
-	touch -c $(LINUX_KERNEL)
-
-$(LINUX_DIR)/.modules_done:
-	rm -rf $(LINUX_BUILD_DIR)/modules
-	$(MAKE) -C "$(LINUX_DIR)" CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) PATH="$(TARGET_PATH)" modules
-	$(MAKE) -C "$(LINUX_DIR)" CROSS_COMPILE="$(KERNEL_CROSS)" DEPMOD=true INSTALL_MOD_PATH=$(LINUX_BUILD_DIR)/modules modules_install
-	touch $(LINUX_DIR)/.modules_done
-
-$(STAMP_DIR)/.linux-compile:
-	@$(MAKE) $(LINUX_DIR)/.modules_done $(TARGETS) $(KERNEL_IPKG)
-	ln -sf $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION) $(BUILD_DIR)/linux
-	touch $@
-
-$(KERNEL_IPKG):
-	rm -rf $(KERNEL_IDIR)
-	mkdir -p $(KERNEL_IDIR)/etc
-	$(SCRIPT_DIR)/make-ipkg-dir.sh $(KERNEL_IDIR) ../control/kernel.control $(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE) $(ARCH)
-	if [ -f ./config/$(BOARD).modules ]; then \
-		cp ./config/$(BOARD).modules $(KERNEL_IDIR)/etc/modules; \
-	fi
-	$(IPKG_BUILD) $(KERNEL_IDIR) $(LINUX_BUILD_DIR)
-
-$(BUILD_DIR)/kernel.mk: $(LINUX_DIR) FORCE
-	echo "BOARD:=$(BOARD)" > $@
-	echo "LINUX_NAME:=$(LINUX_NAME)" >> $@
-	echo "LINUX_VERSION:=$(LINUX_VERSION)" >> $@
-	echo "LINUX_RELEASE:=$(LINUX_RELEASE)" >> $@
-
-pkg-install: FORCE
-	@{ [ "$(INSTALL_TARGETS)" != "" ] && $(IPKG) install $(INSTALL_TARGETS) || true; }
-
-source: $(DL_DIR)/$(LINUX_SOURCE)
-prepare: $(BUILD_DIR)/kernel.mk
-	@mkdir -p $(STAMP_DIR) $(PACKAGE_DIR)
-	@$(MAKE) $(LINUX_DIR)/.configured
-
-compile: prepare $(STAMP_DIR)/.linux-compile
-
-install: compile $(LINUX_KERNEL)
-
-mostlyclean: FORCE
-	rm -f $(STAMP_DIR)/.linux-compile
-	rm -f $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION)/.modules_done
-	rm -f $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION)/.drivers-unpacked
-	$(MAKE) -C $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION) clean
-	rm -f $(LINUX_KERNEL)
-
-rebuild: FORCE
-	-$(MAKE) mostlyclean
-	if [ -f $(LINUX_KERNEL) ]; then \
-		$(MAKE) clean; \
-	fi
-	$(MAKE) compile $(MAKE_TRACE)
-
-clean: FORCE
-	rm -f $(STAMP_DIR)/.linux-compile
-	rm -rf $(LINUX_BUILD_DIR)
-	rm -f $(TARGETS)
-

--- a/target/linux/netfilter.mk
+++ /dev/null
@@ -1,117 +1,1 @@
-# $Id: netfilter.mk 2411 2005-11-11 03:41:43Z nico $
 
-ifeq ($(NF_2_6),1)
-P_V4:=ipv4/netfilter/
-P_XT:=netfilter/
-else
-P_V4:=
-P_XT:=
-endif
-
-IPT_CONNTRACK-m :=
-IPT_CONNTRACK-$(CONFIG_IP_NF_MATCH_CONNMARK) += $(P_V4)ipt_connmark
-IPT_CONNTRACK-$(CONFIG_IP_NF_TARGET_CONNMARK) += $(P_V4)ipt_CONNMARK
-IPT_CONNTRACK-$(CONFIG_IP_NF_MATCH_CONNTRACK) += $(P_V4)ipt_conntrack
-IPT_CONNTRACK-$(CONFIG_IP_NF_MATCH_HELPER) += $(P_V4)ipt_helper
-IPT_CONNTRACK-$(CONFIG_IP_NF_MATCH_STATE) += $(P_V4)ipt_state
-IPT_CONNTRACK-$(CONFIG_NETFILTER_XT_MATCH_CONNTRACK) += $(P_XT)xt_conntrack
-IPT_CONNTRACK-$(CONFIG_NETFILTER_XT_MATCH_HELPER) += $(P_XT)xt_helper
-IPT_CONNTRACK-$(CONFIG_NETFILTER_XT_MATCH_STATE) += $(P_XT)xt_state
-
-
-IPT_EXTRA-m :=
-IPT_EXTRA-$(CONFIG_IP_NF_MATCH_CONDITION) += $(P_V4)ipt_condition
-IPT_EXTRA-$(CONFIG_IP_NF_MATCH_CONNBYTES) += $(P_V4)ipt_connbytes
-IPT_EXTRA-$(CONFIG_NETFILTER_XT_MATCH_CONNBYTES) += $(P_XT)xt_connbytes
-IPT_EXTRA-$(CONFIG_IP_NF_MATCH_LIMIT) += $(P_V4)ipt_limit
-IPT_EXTRA-$(CONFIG_NETFILTER_XT_MATCH_LIMIT) += $(P_XT)xt_limit
-IPT_EXTRA-$(CONFIG_IP_NF_TARGET_LOG) += $(P_V4)ipt_LOG
-IPT_EXTRA-$(CONFIG_IP_NF_MATCH_MULTIPORT) += $(P_XT)xt_multiport
-IPT_EXTRA-$(CONFIG_NETFILTER_XT_MATCH_MULTIPORT) += $(P_XT)xt_multiport
-IPT_EXTRA-$(CONFIG_IP_NF_MATCH_OWNER) += $(P_V4)ipt_owner
-IPT_EXTRA-$(CONFIG_IP_NF_MATCH_PHYSDEV) += $(P_V4)ipt_physdev
-IPT_EXTRA-$(CONFIG_IP_NF_MATCH_PKTTYPE) += $(P_V4)ipt_pkttype
-IPT_EXTRA-$(CONFIG_NETFILTER_XT_MATCH_PKTTYPE) += $(P_XT)xt_pkttype
-IPT_EXTRA-$(CONFIG_IP_NF_MATCH_QUOTA) += $(P_V4)ipt_quota
-IPT_EXTRA-$(CONFIG_IP_NF_MATCH_RECENT) += $(P_V4)ipt_recent
-IPT_EXTRA-$(CONFIG_IP_NF_TARGET_REJECT) += $(P_V4)ipt_REJECT
-IPT_EXTRA-$(CONFIG_IP_NF_MATCH_STRING) += $(P_V4)ipt_string
-IPT_EXTRA-$(CONFIG_NETFILTER_XT_MATCH_STRING) += $(P_XT)xt_string
-
-IPT_FILTER-m :=
-IPT_FILTER-$(CONFIG_IP_NF_MATCH_IPP2P) += $(P_V4)ipt_ipp2p
-IPT_FILTER-$(CONFIG_IP_NF_MATCH_LAYER7) += $(P_V4)ipt_layer7
-
-IPT_IMQ-m :=
-IPT_IMQ-$(CONFIG_IP_NF_TARGET_IMQ) += $(P_V4)ipt_IMQ
-
-IPT_IPOPT-m :=
-IPT_IPOPT-$(CONFIG_IP_NF_MATCH_DSCP) += $(P_V4)ipt_dscp
-IPT_IPOPT-$(CONFIG_IP_NF_TARGET_DSCP) += $(P_V4)ipt_DSCP
-IPT_IPOPT-$(CONFIG_IP_NF_MATCH_ECN) += $(P_V4)ipt_ecn
-IPT_IPOPT-$(CONFIG_IP_NF_TARGET_ECN) += $(P_V4)ipt_ECN
-IPT_IPOPT-$(CONFIG_IP_NF_MATCH_LENGTH) += $(P_V4)ipt_length
-IPT_IPOPT-$(CONFIG_NETFILTER_XT_MATCH_LENGTH) += $(P_XT)xt_length
-IPT_IPOPT-$(CONFIG_IP_NF_MATCH_MAC) += $(P_V4)ipt_mac
-IPT_IPOPT-$(CONFIG_NETFILTER_XT_MATCH_MAC) += $(P_XT)xt_mac
-IPT_IPOPT-$(CONFIG_IP_NF_MATCH_MARK) += $(P_V4)ipt_mark
-IPT_IPOPT-$(CONFIG_NETFILTER_XT_MATCH_MARK) += $(P_XT)xt_mark
-IPT_IPOPT-$(CONFIG_IP_NF_TARGET_MARK) += $(P_V4)ipt_MARK
-IPT_IPOPT-$(CONFIG_NETFILTER_XT_TARGET_MARK) += $(P_XT)xt_MARK
-IPT_IPOPT-$(CONFIG_IP_NF_MATCH_TCPMSS) += $(P_V4)ipt_tcpmss
-IPT_IPOPT-$(CONFIG_NETFILTER_XT_MATCH_TCPMSS) += $(P_XT)xt_tcpmss
-IPT_IPOPT-$(CONFIG_IP_NF_TARGET_TCPMSS) += $(P_V4)ipt_TCPMSS
-IPT_IPOPT-$(CONFIG_IP_NF_MATCH_TOS) += $(P_V4)ipt_tos
-IPT_IPOPT-$(CONFIG_IP_NF_MATCH_TIME) += $(P_V4)ipt_time
-IPT_IPOPT-$(CONFIG_IP_NF_TARGET_TOS) += $(P_V4)ipt_TOS
-IPT_IPOPT-$(CONFIG_IP_NF_MATCH_TTL) += $(P_V4)ipt_ttl
-IPT_IPOPT-$(CONFIG_IP_NF_TARGET_TTL) += $(P_V4)ipt_TTL
-IPT_IPOPT-$(CONFIG_IP_NF_MATCH_UNCLEAN) += $(P_V4)ipt_unclean
-
-IPT_IPSEC-m :=
-IPT_IPSEC-$(CONFIG_IP_NF_MATCH_AH_ESP) += $(P_V4)ipt_ah $(P_V4)ipt_esp
-IPT_IPSEC-$(CONFIG_IP_NF_MATCH_AH) += $(P_V4)ipt_ah
-IPT_IPSEC-$(CONFIG_NETFILTER_XT_MATCH_ESP) += $(P_XT)xt_esp
-
-IPT_NAT-m :=
-IPT_NAT-$(CONFIG_IP_NF_NAT) += $(P_V4)ipt_SNAT $(P_V4)ipt_DNAT
-IPT_NAT-$(CONFIG_IP_NF_TARGET_MASQUERADE) += $(P_V4)ipt_MASQUERADE
-IPT_NAT-$(CONFIG_IP_NF_TARGET_MIRROR) += $(P_V4)ipt_MIRROR
-IPT_NAT-$(CONFIG_IP_NF_TARGET_REDIRECT) += $(P_V4)ipt_REDIRECT
-
-IPT_NAT_EXTRA-m := 
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_AMANDA) += $(P_V4)ip_conntrack_amanda
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_CT_PROTO_GRE) += $(P_V4)ip_conntrack_proto_gre
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_PROTO_GRE) += $(P_V4)ip_nat_proto_gre
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_H323) += $(P_V4)ip_conntrack_h323
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_H323) += $(P_V4)ip_nat_h323
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_MMS) += $(P_V4)ip_conntrack_mms
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_MMS) += $(P_V4)ip_nat_mms
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_RTSP) += $(P_V4)ip_conntrack_rtsp
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_RTSP) += $(P_V4)ip_nat_rtsp
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_PPTP) += $(P_V4)ip_conntrack_pptp
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_SIP) += $(P_V4)ip_conntrack_sip
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_PPTP) += $(P_V4)ip_nat_pptp
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_SIP) += $(P_V4)ip_nat_sip
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_SNMP_BASIC) += $(P_V4)ip_nat_snmp_basic
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_SIP) += $(P_V4)ip_conntrack_sip
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_NAT_SIP) += $(P_V4)ip_nat_sip
-IPT_NAT_EXTRA-$(CONFIG_IP_NF_TFTP) += $(P_V4)ip_conntrack_tftp
-
-IPT_QUEUE-m :=
-IPT_QUEUE-$(CONFIG_IP_NF_QUEUE) += $(P_V4)ip_queue
-
-IPT_ULOG-m :=
-IPT_ULOG-$(CONFIG_IP_NF_TARGET_ULOG) += $(P_V4)ipt_ULOG
-
-IPT_BUILTIN := $(P_V4)ipt_standard
-IPT_BUILTIN += $(P_V4)ipt_icmp $(P_V4)ipt_tcp $(P_V4)ipt_udp
-IPT_BUILTIN += $(IPT_CONNTRACK-y)
-IPT_BUILTIN += $(IPT_EXTRA-y)
-IPT_BUILTIN += $(IPT_FILTER-y)
-IPT_BUILTIN += $(IPT_IMQ-y)
-IPT_BUILTIN += $(IPT_IPOPT-y)
-IPT_BUILTIN += $(IPT_IPSEC-y)
-IPT_BUILTIN += $(IPT_NAT-y)
-IPT_BUILTIN += $(IPT_ULOG-y)
-

--- a/target/linux/rb532-2.6/Makefile
+++ b/target/linux/rb532-2.6/Makefile
@@ -4,11 +4,9 @@
 LINUX_RELEASE:=1
 LINUX_KERNEL_MD5SUM:=37ddefe96625502161f075b9d907f21e
 
-include ../rules.mk
 include ./config
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
+include $(TOPDIR)/include/kernel.mk
+include $(TOPDIR)/include/kernel-build.mk
 
 $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
 	[ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches

file:a/target/linux/rules.mk (deleted)
--- a/target/linux/rules.mk
+++ /dev/null
@@ -1,86 +1,1 @@
-KERNEL:=unknown
-ifneq (,$(findstring 2.4.,$(LINUX_VERSION)))
-KERNEL:=2.4
-endif
-ifneq (,$(findstring 2.6.,$(LINUX_VERSION)))
-KERNEL:=2.6
-endif
 
-MODULES_SUBDIR:=lib/modules/$(LINUX_VERSION)
-
-LINUX_BUILD_DIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)
-ifeq ($(LINUX_NAME),)
-LINUX_NAME:=linux-$(LINUX_VERSION)
-endif
-LINUX_DIR := $(LINUX_BUILD_DIR)/$(LINUX_NAME)
-LINUX_KERNEL:=$(LINUX_BUILD_DIR)/vmlinux
-
-LINUX_TARGET_DIR:=$(LINUX_BUILD_DIR)/root
-
-LINUX_KARCH:=$(shell echo $(ARCH) | sed -e 's/i[3-9]86/i386/' \
-	-e 's/mipsel/mips/' \
-	-e 's/mipseb/mips/' \
-	-e 's/powerpc/ppc/' \
-	-e 's/sh[234]/sh/' \
-	-e 's/armeb/arm/' \
-)
-
-KMOD_BUILD_DIR := $(LINUX_BUILD_DIR)/linux-modules
-MODULES_DIR := $(LINUX_BUILD_DIR)/modules/$(MODULES_SUBDIR)
-TARGET_MODULES_DIR := $(LINUX_TARGET_DIR)/$(MODULES_SUBDIR)
-
-ifeq ($(KERNEL),2.6)
-LINUX_KMOD_SUFFIX=ko
-else
-LINUX_KMOD_SUFFIX=o
-endif
-
-define KMOD_template
-ifeq ($$(strip $(4)),)
-KDEPEND_$(1):=m
-else
-KDEPEND_$(1):=$($(4))
-endif
-
-IDEPEND_$(1):=kernel ($(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)) $(foreach pkg,$(5),", $(pkg)")
-
-PKG_$(1) := $(PACKAGE_DIR)/kmod-$(2)_$(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)_$(ARCH).ipk
-I_$(1) := $(KMOD_BUILD_DIR)/ipkg/$(2)
-
-ifeq ($$(KDEPEND_$(1)),m)
-ifneq ($(CONFIG_PACKAGE_KMOD_$(1)),)
-TARGETS += $$(PKG_$(1))
-endif
-ifeq ($(CONFIG_PACKAGE_KMOD_$(1)),y)
-INSTALL_TARGETS += $$(PKG_$(1))
-endif
-endif
-
-$$(PKG_$(1)): $(LINUX_DIR)/.modules_done
-	rm -rf $$(I_$(1))
-	$(SCRIPT_DIR)/make-ipkg-dir.sh $$(I_$(1)) ../control/kmod-$(2).control $(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE) $(ARCH)
-	echo "Depends: $$(IDEPEND_$(1))" >> $$(I_$(1))/CONTROL/control
-ifneq ($(strip $(3)),)
-	mkdir -p $$(I_$(1))/lib/modules/$(LINUX_VERSION)
-	$(CP) $(3) $$(I_$(1))/lib/modules/$(LINUX_VERSION)
-endif
-ifneq ($(6),)
-	mkdir -p $$(I_$(1))/etc/modules.d
-	for module in $(7); do \
-		echo $$$$module >> $$(I_$(1))/etc/modules.d/$(6)-$(2); \
-	done
-	echo "#!/bin/sh" >> $$(I_$(1))/CONTROL/postinst
-	echo "[ -z \"\$$$$IPKG_INSTROOT\" ] || exit" >> $$(I_$(1))/CONTROL/postinst
-	echo ". /etc/functions.sh" >> $$(I_$(1))/CONTROL/postinst
-	echo "load_modules /etc/modules.d/$(6)-$(2)" >> $$(I_$(1))/CONTROL/postinst
-	chmod 0755 $$(I_$(1))/CONTROL/postinst
-endif
-	$(8)
-	$(IPKG_BUILD) $$(I_$(1)) $(PACKAGE_DIR)
-endef
-
-KERNEL_IPKG:=$(LINUX_BUILD_DIR)/kernel_$(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)_$(ARCH).ipk
-INSTALL_TARGETS := $(KERNEL_IPKG)
-TARGETS := 
-
-

--- a/target/linux/sibyte-2.6/Makefile
+++ b/target/linux/sibyte-2.6/Makefile
@@ -4,12 +4,9 @@
 LINUX_RELEASE:=1
 LINUX_KERNEL_MD5SUM:=37ddefe96625502161f075b9d907f21e
 
-include ../rules.mk
 include ./config
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
-
+include $(TOPDIR)/include/kernel.mk
+include $(TOPDIR)/include/kernel-build.mk
 
 $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
 	[ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches

--- a/target/linux/x86-2.4/Makefile
+++ b/target/linux/x86-2.4/Makefile
@@ -4,17 +4,14 @@
 LINUX_RELEASE:=1
 LINUX_KERNEL_MD5SUM:=38f4d0830e95a20f4bfed17622d5557c
 
-include ../rules.mk
 include ./config
+include $(TOPDIR)/include/kernel.mk
 
 $(eval $(call KMOD_template,WD1100,wd1100,\
 	$(MODULES_DIR)/kernel/drivers/char/wd1100.o \
 ,CONFIG_WD1100))
 
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
-
+include $(TOPDIR)/include/kernel-build.mk
 
 $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
 	[ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches

--- a/target/linux/x86-2.6/Makefile
+++ b/target/linux/x86-2.6/Makefile
@@ -4,12 +4,9 @@
 LINUX_RELEASE:=1
 LINUX_KERNEL_MD5SUM:=37ddefe96625502161f075b9d907f21e
 
-include ../rules.mk
 include ./config
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
-
+include $(TOPDIR)/include/kernel.mk
+include $(TOPDIR)/include/kernel-build.mk
 
 $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
 	[ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches

--- a/target/linux/xscale-2.6/Makefile
+++ b/target/linux/xscale-2.6/Makefile
@@ -4,12 +4,9 @@
 LINUX_RELEASE:=1
 LINUX_KERNEL_MD5SUM:=37ddefe96625502161f075b9d907f21e
 
-include ../rules.mk
 include ./config
-
-include ../generic-$(KERNEL)/modules.mk
-include ../kernel.mk
-
+include $(TOPDIR)/include/kernel.mk
+include $(TOPDIR)/include/kernel-build.mk
 
 $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked
 	[ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches

file:a/target/lzma/Makefile (deleted)
--- a/target/lzma/Makefile
+++ /dev/null
@@ -1,54 +1,1 @@
-#############################################################
-#
-# lzma target 
-# 
-#############################################################
 
-include $(TOPDIR)/rules.mk
-
-LZMA_DIR=$(BUILD_DIR)/lzma
-LZMA_SOURCE=lzma432.tar.bz2
-LZMA_SITE=@SF/sevenzip
-LZMA_MD5=155c1ebce5bc6710ae7ecc926226d9d7
-
-LZMA_LIB_DIR=$(LZMA_DIR)/C/7zip/Compress/LZMA_Lib
-LZMA_ALONE_DIR=$(LZMA_DIR)/C/7zip/Compress/LZMA_Alone
-
-TARGETS=$(LZMA_LIB_DIR)/liblzma.a $(LZMA_ALONE_DIR)/lzma
-
-$(DL_DIR)/$(LZMA_SOURCE):
-	$(SCRIPT_DIR)/download.pl $(DL_DIR) $(LZMA_SOURCE) $(LZMA_MD5) $(LZMA_SITE)
-
-$(LZMA_DIR)/.unpacked: $(DL_DIR)/$(LZMA_SOURCE) 
-	@rm -rf $(LZMA_DIR) && mkdir -p $(LZMA_DIR)
-	tar xjf $^ -C $(LZMA_DIR)
-	patch -d $(LZMA_DIR) -p1 < lzma-zlib.patch
-	touch $(LZMA_DIR)/.unpacked
-	
-$(LZMA_ALONE_DIR)/lzma $(LZMA_LIB_DIR)/liblzma.a: $(LZMA_DIR)/.built
-$(LZMA_DIR)/.built: $(LZMA_DIR)/.unpacked
-	$(MAKE) -C $(LZMA_LIB_DIR)
-	$(MAKE) -f makefile.gcc -C $(LZMA_ALONE_DIR)
-	touch $@
-
-lzma: $(TARGETS)
-	$(CP) $^ $(LZMA_DIR)
-
-
-lzma-clean: FORCE
-	-$(MAKE) -C $(LZMA_LIB_DIR) clean
-	-$(MAKE) -C $(LZMA_ALONE_DIR) clean
-	rm -f $(LZMA_DIR)/liblzma.a $(LZMA_DIR)/lzma
-
-lzma-dirclean: FORCE
-	rm -rf $(LZMA_DIR)
-
-#############################################################
-
-source: $(DL_DIR)/$(LZMA_SOURCE)
-prepare: $(LZMA_DIR)/.unpacked
-compile: lzma
-install: lzma FORCE
-	$(CP) $(LZMA_DIR)/lzma $(STAGING_DIR)/bin/
-clean: lzma-dirclean
-

--- a/target/lzma/lzma-zlib.patch
+++ /dev/null
@@ -1,409 +1,1 @@
-diff -Nur lzma/C/7zip/Compress/LZMA/LZMADecoder.cpp lzma.patched/C/7zip/Compress/LZMA/LZMADecoder.cpp
---- lzma/C/7zip/Compress/LZMA/LZMADecoder.cpp	2005-09-22 10:55:34.000000000 +0200
-+++ lzma.patched/C/7zip/Compress/LZMA/LZMADecoder.cpp	2006-03-25 11:04:53.000000000 +0100
-@@ -274,12 +274,17 @@
-   Byte remainder = (Byte)(properties[0] / 9);

-   int lp = remainder % 5;

-   int pb = remainder / 5;

--  if (pb > NLength::kNumPosStatesBitsMax)

--    return E_INVALIDARG;

--  _posStateMask = (1 << pb) - 1;

-   UInt32 dictionarySize = 0;

-   for (int i = 0; i < 4; i++)

-     dictionarySize += ((UInt32)(properties[1 + i])) << (i * 8);

-+  return SetDecoderPropertiesRaw(lc, lp, pb, dictionarySize);

-+}

-+

-+STDMETHODIMP CDecoder::SetDecoderPropertiesRaw(int lc, int lp, int pb, UInt32 dictionarySize)

-+{

-+  if (pb > NLength::kNumPosStatesBitsMax)

-+    return E_INVALIDARG;

-+  _posStateMask = (1 << pb) - 1;

-   if (!_outWindowStream.Create(dictionarySize))

-     return E_OUTOFMEMORY;

-   if (!_literalDecoder.Create(lp, lc))

-diff -Nur lzma/C/7zip/Compress/LZMA/LZMADecoder.h lzma.patched/C/7zip/Compress/LZMA/LZMADecoder.h
---- lzma/C/7zip/Compress/LZMA/LZMADecoder.h	2005-09-19 08:10:06.000000000 +0200
-+++ lzma.patched/C/7zip/Compress/LZMA/LZMADecoder.h	2006-03-25 11:04:53.000000000 +0100
-@@ -228,6 +228,7 @@
-       ICompressProgressInfo *progress);

- 

-   STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size);

-+  STDMETHOD(SetDecoderPropertiesRaw)(int lc, int lp, int pb, UInt32 dictionarySize);

- 

-   STDMETHOD(GetInStreamProcessedSize)(UInt64 *value);

- 

-diff -Nur lzma/C/7zip/Compress/LZMA_Lib/makefile lzma.patched/C/7zip/Compress/LZMA_Lib/makefile
---- lzma/C/7zip/Compress/LZMA_Lib/makefile	1970-01-01 01:00:00.000000000 +0100
-+++ lzma.patched/C/7zip/Compress/LZMA_Lib/makefile	2006-03-25 11:29:46.000000000 +0100
-@@ -0,0 +1,92 @@
-+PROG = liblzma.a
-+CXX = g++ -O3 -Wall
-+AR = ar
-+RM = rm -f
-+CFLAGS = -c  -I ../../../
-+
-+OBJS = \
-+  ZLib.o \
-+  LZMADecoder.o \
-+  LZMAEncoder.o \
-+  LZInWindow.o \
-+  LZOutWindow.o \
-+  RangeCoderBit.o \
-+  InBuffer.o \
-+  OutBuffer.o \
-+  FileStreams.o \
-+  Alloc.o \
-+  C_FileIO.o \
-+  CommandLineParser.o \
-+  CRC.o \
-+  StreamUtils.o \
-+  String.o \
-+  StringConvert.o \
-+  StringToInt.o \
-+  Vector.o \
-+
-+
-+all: $(PROG)
-+
-+$(PROG): $(OBJS)
-+	$(AR) r $(PROG) $(OBJS)
-+
-+ZLib.o: ZLib.cpp
-+	$(CXX) $(CFLAGS) ZLib.cpp
-+
-+LZMADecoder.o: ../LZMA/LZMADecoder.cpp
-+	$(CXX) $(CFLAGS) ../LZMA/LZMADecoder.cpp
-+
-+LZMAEncoder.o: ../LZMA/LZMAEncoder.cpp
-+	$(CXX) $(CFLAGS) ../LZMA/LZMAEncoder.cpp
-+
-+LZInWindow.o: ../LZ/LZInWindow.cpp
-+	$(CXX) $(CFLAGS) ../LZ/LZInWindow.cpp
-+
-+LZOutWindow.o: ../LZ/LZOutWindow.cpp
-+	$(CXX) $(CFLAGS) ../LZ/LZOutWindow.cpp
-+
-+RangeCoderBit.o: ../RangeCoder/RangeCoderBit.cpp
-+	$(CXX) $(CFLAGS) ../RangeCoder/RangeCoderBit.cpp
-+
-+InBuffer.o: ../../Common/InBuffer.cpp
-+	$(CXX) $(CFLAGS) ../../Common/InBuffer.cpp
-+
-+OutBuffer.o: ../../Common/OutBuffer.cpp
-+	$(CXX) $(CFLAGS) ../../Common/OutBuffer.cpp
-+
-+StreamUtils.o: ../../Common/StreamUtils.cpp
-+	$(CXX) $(CFLAGS) ../../Common/StreamUtils.cpp
-+
-+FileStreams.o: ../../Common/FileStreams.cpp
-+	$(CXX) $(CFLAGS) ../../Common/FileStreams.cpp
-+
-+Alloc.o: ../../../Common/Alloc.cpp
-+	$(CXX) $(CFLAGS) ../../../Common/Alloc.cpp
-+
-+C_FileIO.o: ../../../Common/C_FileIO.cpp
-+	$(CXX) $(CFLAGS) ../../../Common/C_FileIO.cpp
-+
-+CommandLineParser.o: ../../../Common/CommandLineParser.cpp
-+	$(CXX) $(CFLAGS) ../../../Common/CommandLineParser.cpp
-+
-+CRC.o: ../../../Common/CRC.cpp
-+	$(CXX) $(CFLAGS) ../../../Common/CRC.cpp
-+
-+MyWindows.o: ../../../Common/MyWindows.cpp
-+	$(CXX) $(CFLAGS) ../../../Common/MyWindows.cpp
-+
-+String.o: ../../../Common/String.cpp
-+	$(CXX) $(CFLAGS) ../../../Common/String.cpp
-+
-+StringConvert.o: ../../../Common/StringConvert.cpp
-+	$(CXX) $(CFLAGS) ../../../Common/StringConvert.cpp
-+
-+StringToInt.o: ../../../Common/StringToInt.cpp
-+	$(CXX) $(CFLAGS) ../../../Common/StringToInt.cpp
-+
-+Vector.o: ../../../Common/Vector.cpp
-+	$(CXX) $(CFLAGS) ../../../Common/Vector.cpp
-+
-+clean:
-+	-$(RM) $(PROG) $(OBJS)
-+
-diff -Nur lzma/C/7zip/Compress/LZMA_Lib/ZLib.cpp lzma.patched/C/7zip/Compress/LZMA_Lib/ZLib.cpp
---- lzma/C/7zip/Compress/LZMA_Lib/ZLib.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ lzma.patched/C/7zip/Compress/LZMA_Lib/ZLib.cpp	2006-03-25 11:04:53.000000000 +0100
-@@ -0,0 +1,273 @@
-+/*

-+ * lzma zlib simplified wrapper

-+ *

-+ * Copyright (c) 2005-2006 Oleg I. Vdovikin <oleg@cs.msu.su>

-+ *

-+ * This library is free software; you can redistribute 

-+ * it and/or modify it under the terms of the GNU Lesser 

-+ * General Public License as published by the Free Software 

-+ * Foundation; either version 2.1 of the License, or 

-+ * (at your option) any later version.

-+ *

-+ * This library is distributed in the hope that it will be 

-+ * useful, but WITHOUT ANY WARRANTY; without even the implied 

-+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 

-+ * PURPOSE. See the GNU Lesser General Public License 

-+ * for more details.

-+ *

-+ * You should have received a copy of the GNU Lesser General 

-+ * Public License along with this library; if not, write to 

-+ * the Free Software Foundation, Inc., 59 Temple Place, 

-+ * Suite 330, Boston, MA 02111-1307 USA 

-+ */

-+

-+/*

-+ * default values for encoder/decoder used by wrapper

-+ */

-+

-+#include <zlib.h>

-+

-+#define ZLIB_LC 3

-+#define ZLIB_LP 0

-+#define ZLIB_PB 2

-+

-+#ifdef WIN32

-+#include <initguid.h>

-+#else

-+#define INITGUID

-+#endif

-+

-+#include "../../../Common/MyWindows.h"

-+#include "../LZMA/LZMADecoder.h"

-+#include "../LZMA/LZMAEncoder.h"

-+

-+#define STG_E_SEEKERROR                  ((HRESULT)0x80030019L)

-+#define STG_E_MEDIUMFULL                 ((HRESULT)0x80030070L)

-+

-+class CInMemoryStream: 

-+  public IInStream,

-+  public IStreamGetSize,

-+  public CMyUnknownImp

-+{

-+public:

-+  CInMemoryStream(const Bytef *data, UInt64 size) : 

-+	  m_data(data), m_size(size), m_offset(0) {}

-+

-+  virtual ~CInMemoryStream() {}

-+

-+  MY_UNKNOWN_IMP2(IInStream, IStreamGetSize)

-+

-+  STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize)

-+  {

-+	  if (size > m_size - m_offset) 

-+		  size = m_size - m_offset;

-+

-+	  if (size) {

-+		  memcpy(data, m_data + m_offset, size);

-+	  }

-+

-+	  m_offset += size;

-+

-+	  if (processedSize) 

-+		  *processedSize = size;

-+

-+	  return S_OK;

-+  }

-+

-+  STDMETHOD(ReadPart)(void *data, UInt32 size, UInt32 *processedSize)

-+  {

-+	return Read(data, size, processedSize);

-+  }

-+

-+  STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition)

-+  {

-+	  UInt64 _offset;

-+

-+	  if (seekOrigin == STREAM_SEEK_SET) _offset = offset;

-+	  else if (seekOrigin == STREAM_SEEK_CUR) _offset = m_offset + offset; 

-+	  else if (seekOrigin == STREAM_SEEK_END) _offset = m_size;

-+	  else return STG_E_INVALIDFUNCTION;

-+

-+	  if (_offset < 0 || _offset > m_size)

-+		  return STG_E_SEEKERROR;

-+

-+	  m_offset = _offset;

-+

-+	  if (newPosition)

-+		  *newPosition = m_offset;

-+

-+	  return S_OK;

-+  }

-+

-+  STDMETHOD(GetSize)(UInt64 *size)

-+  {

-+	  *size = m_size;

-+	  return S_OK;

-+  }

-+protected:

-+	const Bytef *m_data;

-+	UInt64 m_size;

-+	UInt64 m_offset;

-+};

-+

-+class COutMemoryStream: 

-+  public IOutStream,

-+  public CMyUnknownImp

-+{

-+public:

-+  COutMemoryStream(Bytef *data, UInt64 maxsize) : 

-+	  m_data(data), m_size(0), m_maxsize(maxsize), m_offset(0) {}

-+  virtual ~COutMemoryStream() {}

-+  

-+  MY_UNKNOWN_IMP1(IOutStream)

-+

-+  STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize)

-+  {

-+	  if (size > m_maxsize - m_offset) 

-+		  size = m_maxsize - m_offset;

-+

-+	  if (size) {

-+		  memcpy(m_data + m_offset, data, size);

-+	  }

-+

-+	  m_offset += size;

-+

-+	  if (m_offset > m_size)

-+		m_size = m_offset;

-+

-+	  if (processedSize) 

-+		  *processedSize = size;

-+

-+	  return S_OK;

-+  }

-+  

-+  STDMETHOD(WritePart)(const void *data, UInt32 size, UInt32 *processedSize)

-+  {

-+	  return Write(data, size, processedSize);

-+  }

-+

-+  STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition)

-+  {

-+	  UInt64 _offset;

-+

-+	  if (seekOrigin == STREAM_SEEK_SET) _offset = offset;

-+	  else if (seekOrigin == STREAM_SEEK_CUR) _offset = m_offset + offset; 

-+	  else if (seekOrigin == STREAM_SEEK_END) _offset = m_size;

-+	  else return STG_E_INVALIDFUNCTION;

-+

-+	  if (_offset < 0 || _offset > m_maxsize)

-+		  return STG_E_SEEKERROR;

-+

-+	  m_offset = _offset;

-+

-+	  if (newPosition)

-+		  *newPosition = m_offset;

-+

-+	  return S_OK;

-+  }

-+  

-+  STDMETHOD(SetSize)(Int64 newSize)

-+  {

-+	  if ((UInt64)newSize > m_maxsize) 

-+		  return STG_E_MEDIUMFULL;

-+

-+	  return S_OK;

-+  }

-+protected:

-+	Bytef *m_data;

-+	UInt64 m_size;

-+	UInt64 m_maxsize;

-+	UInt64 m_offset;

-+};

-+

-+ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,

-+                                  const Bytef *source, uLong sourceLen,

-+                                  int level))

-+{

-+	CInMemoryStream *inStreamSpec = new CInMemoryStream(source, sourceLen);

-+	CMyComPtr<ISequentialInStream> inStream = inStreamSpec;

-+	

-+	COutMemoryStream *outStreamSpec = new COutMemoryStream(dest, *destLen);

-+	CMyComPtr<ISequentialOutStream> outStream = outStreamSpec;

-+	

-+	NCompress::NLZMA::CEncoder *encoderSpec = 

-+		new NCompress::NLZMA::CEncoder;

-+	CMyComPtr<ICompressCoder> encoder = encoderSpec;

-+	

-+	PROPID propIDs[] = 

-+	{

-+		NCoderPropID::kDictionarySize,

-+		NCoderPropID::kPosStateBits,

-+		NCoderPropID::kLitContextBits,

-+		NCoderPropID::kLitPosBits,

-+		NCoderPropID::kAlgorithm,

-+		NCoderPropID::kNumFastBytes,

-+		NCoderPropID::kMatchFinder,

-+		NCoderPropID::kEndMarker

-+	};

-+	const int kNumProps = sizeof(propIDs) / sizeof(propIDs[0]);

-+	

-+	PROPVARIANT properties[kNumProps];

-+	for (int p = 0; p < 6; p++)

-+		properties[p].vt = VT_UI4;

-+	properties[0].ulVal = UInt32(1 << (level + 14));

-+	properties[1].ulVal = UInt32(ZLIB_PB);

-+	properties[2].ulVal = UInt32(ZLIB_LC); // for normal files

-+	properties[3].ulVal = UInt32(ZLIB_LP); // for normal files

-+	properties[4].ulVal = UInt32(2);

-+	properties[5].ulVal = UInt32(128);

-+	

-+	properties[6].vt = VT_BSTR;

-+	properties[6].bstrVal = (BSTR)(const wchar_t *)L"BT4";

-+	

-+	properties[7].vt = VT_BOOL;

-+	properties[7].boolVal = VARIANT_TRUE;

-+	

-+	if (encoderSpec->SetCoderProperties(propIDs, properties, kNumProps) != S_OK)

-+		return Z_MEM_ERROR; // should not happen

-+	

-+	HRESULT result = encoder->Code(inStream, outStream, 0, 0, 0);

-+	if (result == E_OUTOFMEMORY)

-+	{

-+		return Z_MEM_ERROR;

-+	}   

-+	else if (result != S_OK)

-+	{

-+		return Z_BUF_ERROR;	// should not happen

-+	}   

-+	

-+	UInt64 fileSize;

-+	outStreamSpec->Seek(0, STREAM_SEEK_END, &fileSize);

-+	*destLen = fileSize;

-+	

-+	return Z_OK;

-+}

-+

-+ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,

-+                                   const Bytef *source, uLong sourceLen))

-+{

-+	CInMemoryStream *inStreamSpec = new CInMemoryStream(source, sourceLen);

-+	CMyComPtr<ISequentialInStream> inStream = inStreamSpec;

-+	

-+	COutMemoryStream *outStreamSpec = new COutMemoryStream(dest, *destLen);

-+	CMyComPtr<ISequentialOutStream> outStream = outStreamSpec;

-+	

-+	NCompress::NLZMA::CDecoder *decoderSpec = 

-+		new NCompress::NLZMA::CDecoder;

-+	CMyComPtr<ICompressCoder> decoder = decoderSpec;

-+	

-+	if (decoderSpec->SetDecoderPropertiesRaw(ZLIB_LC, 

-+		ZLIB_LP, ZLIB_PB, (1 << 23)) != S_OK) return Z_DATA_ERROR;

-+	

-+	UInt64 fileSize = *destLen;

-+	

-+	if (decoder->Code(inStream, outStream, 0, &fileSize, 0) != S_OK)

-+	{

-+		return Z_DATA_ERROR;

-+	}

-+	

-+	outStreamSpec->Seek(0, STREAM_SEEK_END, &fileSize);

-+	*destLen = fileSize;

-+	

-+	return Z_OK;

-+}

 

--- a/toolchain/Makefile
+++ b/toolchain/Makefile
@@ -1,6 +1,6 @@
 # Main makefile for the toolchain
 include $(TOPDIR)/rules.mk
-TARGETS-y:=sed kernel-headers utils binutils gcc uClibc ipkg-utils libnotimpl
+TARGETS-y:=sed kernel-headers utils binutils gcc uClibc ipkg-utils libnotimpl squashfs jffs2 lzma
 TARGETS-$(CONFIG_GDB) += gdb
 
 TARGETS_DOWNLOAD:=$(patsubst %,%-source,$(TARGETS-y))
@@ -17,6 +17,7 @@
 gcc-prepare: binutils-install
 uClibc-compile: gcc-prepare
 gcc-compile: uClibc-install
+squashfs-compile: lzma-compile
 
 TOOLCHAIN_STAMP_DIR:=$(STAGING_DIR)/stampfiles
 

--- /dev/null
+++ b/toolchain/jffs2/Makefile
@@ -1,1 +1,30 @@
+include $(TOPDIR)/rules.mk
 
+MTD_DIR:=$(BUILD_DIR)/mtd-20050122.orig
+MTD_SOURCE=mtd_20050122.orig.tar.gz
+MTD_SITE=http://ftp.debian.org/debian/pool/main/m/mtd
+MTD_MD5SUM:=1f42c2cae08eb9e7b52d0c188f8d6338
+MKFS_JFFS2=$(MTD_DIR)/util/mkfs.jffs2
+
+$(DL_DIR)/$(MTD_SOURCE):
+	$(SCRIPT_DIR)/download.pl $(DL_DIR) $(MTD_SOURCE) $(MTD_MD5SUM) $(MTD_SITE)
+
+$(MTD_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
+	zcat $(DL_DIR)/$(MTD_SOURCE) | tar -C $(BUILD_DIR) -xvf -
+	$(PATCH) $(MTD_DIR) ./patches
+	touch $(MTD_DIR)/.unpacked
+
+$(MTD_DIR)/util/mkfs.jffs2: $(MTD_DIR)/.unpacked
+	$(MAKE) LINUXDIR=$(LINUX_DIR) -C $(MTD_DIR)/util
+
+$(STAGING_DIR)/bin/mkfs.jffs2: $(MTD_DIR)/util/mkfs.jffs2
+	$(CP) $< $@
+
+source: $(DL_DIR)/$(MTD_SOURCE)
+prepare: $(MTD_DIR)/.unpacked
+compile: $(MTD_DIR)/util/mkfs.jffs2 $(STAGING_DIR)/bin/mkfs.jffs2
+install: 
+clean: FORCE
+	rm -rf $(MTD_DIR) $(STAGING_DIR)/bin/mkfs.jffs2
+
+

--- /dev/null
+++ b/toolchain/jffs2/patches/100-gcc4_fix.patch
@@ -1,1 +1,25 @@
+diff -urN mtd-20050122.orig.old/include/mtd/jffs2-user.h mtd-20050122.orig.dev/include/mtd/jffs2-user.h
+--- mtd-20050122.orig.old/include/mtd/jffs2-user.h	2004-05-05 13:57:54.000000000 +0200
++++ mtd-20050122.orig.dev/include/mtd/jffs2-user.h	2005-07-02 10:03:09.000000000 +0200
+@@ -19,8 +19,6 @@
+ #undef je32_to_cpu
+ #undef jemode_to_cpu
+ 
+-extern int target_endian;
+-
+ #define t16(x) ({ uint16_t __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_16(__b); })
+ #define t32(x) ({ uint32_t __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_32(__b); })
+ 
+diff -urN mtd.old/util/jffs3.h mtd.dev/util/jffs3.h
+--- mtd.old/util/jffs3.h	2005-01-22 00:00:13.000000000 +0100
++++ mtd.dev/util/jffs3.h	2005-07-17 17:48:24.000000000 +0200
+@@ -177,8 +177,6 @@
+ #undef je32_to_cpu
+ #undef jemode_to_cpu
+ 
+-extern int target_endian;
+-
+ #define t16(x) ({ uint16_t __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_16(__b); })
+ #define t32(x) ({ uint32_t __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_32(__b); })
+ 
 

--- /dev/null
+++ b/toolchain/lzma/Makefile
@@ -1,1 +1,54 @@
+#############################################################
+#
+# lzma target 
+# 
+#############################################################
 
+include $(TOPDIR)/rules.mk
+
+LZMA_DIR=$(BUILD_DIR)/lzma
+LZMA_SOURCE=lzma432.tar.bz2
+LZMA_SITE=@SF/sevenzip
+LZMA_MD5=155c1ebce5bc6710ae7ecc926226d9d7
+
+LZMA_LIB_DIR=$(LZMA_DIR)/C/7zip/Compress/LZMA_Lib
+LZMA_ALONE_DIR=$(LZMA_DIR)/C/7zip/Compress/LZMA_Alone
+
+TARGETS=$(LZMA_LIB_DIR)/liblzma.a $(LZMA_ALONE_DIR)/lzma
+
+$(DL_DIR)/$(LZMA_SOURCE):
+	$(SCRIPT_DIR)/download.pl $(DL_DIR) $(LZMA_SOURCE) $(LZMA_MD5) $(LZMA_SITE)
+
+$(LZMA_DIR)/.unpacked: $(DL_DIR)/$(LZMA_SOURCE) 
+	@rm -rf $(LZMA_DIR) && mkdir -p $(LZMA_DIR)
+	tar xjf $^ -C $(LZMA_DIR)
+	$(PATCH) $(LZMA_DIR) ./patches
+	touch $(LZMA_DIR)/.unpacked
+	
+$(LZMA_ALONE_DIR)/lzma $(LZMA_LIB_DIR)/liblzma.a: $(LZMA_DIR)/.built
+$(LZMA_DIR)/.built: $(LZMA_DIR)/.unpacked
+	$(MAKE) -C $(LZMA_LIB_DIR)
+	$(MAKE) -f makefile.gcc -C $(LZMA_ALONE_DIR)
+	touch $@
+
+lzma: $(TARGETS)
+	$(CP) $^ $(LZMA_DIR)
+
+
+lzma-clean: FORCE
+	-$(MAKE) -C $(LZMA_LIB_DIR) clean
+	-$(MAKE) -C $(LZMA_ALONE_DIR) clean
+	rm -f $(LZMA_DIR)/liblzma.a $(LZMA_DIR)/lzma
+
+lzma-dirclean: FORCE
+	rm -rf $(LZMA_DIR)
+
+#############################################################
+
+source: $(DL_DIR)/$(LZMA_SOURCE)
+prepare: $(LZMA_DIR)/.unpacked
+compile: lzma
+install: lzma FORCE
+	$(CP) $(LZMA_DIR)/lzma $(STAGING_DIR)/bin/
+clean: lzma-dirclean
+

--- /dev/null
+++ b/toolchain/lzma/patches/100-lzma_zlib.patch
@@ -1,1 +1,409 @@
+diff -Nur lzma/C/7zip/Compress/LZMA/LZMADecoder.cpp lzma.patched/C/7zip/Compress/LZMA/LZMADecoder.cpp
+--- lzma/C/7zip/Compress/LZMA/LZMADecoder.cpp	2005-09-22 10:55:34.000000000 +0200
++++ lzma.patched/C/7zip/Compress/LZMA/LZMADecoder.cpp	2006-03-25 11:04:53.000000000 +0100
+@@ -274,12 +274,17 @@
+   Byte remainder = (Byte)(properties[0] / 9);

+   int lp = remainder % 5;

+   int pb = remainder / 5;

+-  if (pb > NLength::kNumPosStatesBitsMax)

+-    return E_INVALIDARG;

+-  _posStateMask = (1 << pb) - 1;

+   UInt32 dictionarySize = 0;

+   for (int i = 0; i < 4; i++)

+     dictionarySize += ((UInt32)(properties[1 + i])) << (i * 8);

++  return SetDecoderPropertiesRaw(lc, lp, pb, dictionarySize);

++}

++

++STDMETHODIMP CDecoder::SetDecoderPropertiesRaw(int lc, int lp, int pb, UInt32 dictionarySize)

++{

++  if (pb > NLength::kNumPosStatesBitsMax)

++    return E_INVALIDARG;

++  _posStateMask = (1 << pb) - 1;

+   if (!_outWindowStream.Create(dictionarySize))

+     return E_OUTOFMEMORY;

+   if (!_literalDecoder.Create(lp, lc))

+diff -Nur lzma/C/7zip/Compress/LZMA/LZMADecoder.h lzma.patched/C/7zip/Compress/LZMA/LZMADecoder.h
+--- lzma/C/7zip/Compress/LZMA/LZMADecoder.h	2005-09-19 08:10:06.000000000 +0200
++++ lzma.patched/C/7zip/Compress/LZMA/LZMADecoder.h	2006-03-25 11:04:53.000000000 +0100
+@@ -228,6 +228,7 @@
+       ICompressProgressInfo *progress);

+ 

+   STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size);

++  STDMETHOD(SetDecoderPropertiesRaw)(int lc, int lp, int pb, UInt32 dictionarySize);

+ 

+   STDMETHOD(GetInStreamProcessedSize)(UInt64 *value);

+ 

+diff -Nur lzma/C/7zip/Compress/LZMA_Lib/makefile lzma.patched/C/7zip/Compress/LZMA_Lib/makefile
+--- lzma/C/7zip/Compress/LZMA_Lib/makefile	1970-01-01 01:00:00.000000000 +0100
++++ lzma.patched/C/7zip/Compress/LZMA_Lib/makefile	2006-03-25 11:29:46.000000000 +0100
+@@ -0,0 +1,92 @@
++PROG = liblzma.a
++CXX = g++ -O3 -Wall
++AR = ar
++RM = rm -f
++CFLAGS = -c  -I ../../../
++
++OBJS = \
++  ZLib.o \
++  LZMADecoder.o \
++  LZMAEncoder.o \
++  LZInWindow.o \
++  LZOutWindow.o \
++  RangeCoderBit.o \
++  InBuffer.o \
++  OutBuffer.o \
++  FileStreams.o \
++  Alloc.o \
++  C_FileIO.o \
++  CommandLineParser.o \
++  CRC.o \
++  StreamUtils.o \
++  String.o \
++  StringConvert.o \
++  StringToInt.o \
++  Vector.o \
++
++
++all: $(PROG)
++
++$(PROG): $(OBJS)
++	$(AR) r $(PROG) $(OBJS)
++
++ZLib.o: ZLib.cpp
++	$(CXX) $(CFLAGS) ZLib.cpp
++
++LZMADecoder.o: ../LZMA/LZMADecoder.cpp
++	$(CXX) $(CFLAGS) ../LZMA/LZMADecoder.cpp
++
++LZMAEncoder.o: ../LZMA/LZMAEncoder.cpp
++	$(CXX) $(CFLAGS) ../LZMA/LZMAEncoder.cpp
++
++LZInWindow.o: ../LZ/LZInWindow.cpp
++	$(CXX) $(CFLAGS) ../LZ/LZInWindow.cpp
++
++LZOutWindow.o: ../LZ/LZOutWindow.cpp
++	$(CXX) $(CFLAGS) ../LZ/LZOutWindow.cpp
++
++RangeCoderBit.o: ../RangeCoder/RangeCoderBit.cpp
++	$(CXX) $(CFLAGS) ../RangeCoder/RangeCoderBit.cpp
++
++InBuffer.o: ../../Common/InBuffer.cpp
++	$(CXX) $(CFLAGS) ../../Common/InBuffer.cpp
++
++OutBuffer.o: ../../Common/OutBuffer.cpp
++	$(CXX) $(CFLAGS) ../../Common/OutBuffer.cpp
++
++StreamUtils.o: ../../Common/StreamUtils.cpp
++	$(CXX) $(CFLAGS) ../../Common/StreamUtils.cpp
++
++FileStreams.o: ../../Common/FileStreams.cpp
++	$(CXX) $(CFLAGS) ../../Common/FileStreams.cpp
++
++Alloc.o: ../../../Common/Alloc.cpp
++	$(CXX) $(CFLAGS) ../../../Common/Alloc.cpp
++
++C_FileIO.o: ../../../Common/C_FileIO.cpp
++	$(CXX) $(CFLAGS) ../../../Common/C_FileIO.cpp
++
++CommandLineParser.o: ../../../Common/CommandLineParser.cpp
++	$(CXX) $(CFLAGS) ../../../Common/CommandLineParser.cpp
++
++CRC.o: ../../../Common/CRC.cpp
++	$(CXX) $(CFLAGS) ../../../Common/CRC.cpp
++
++MyWindows.o: ../../../Common/MyWindows.cpp
++	$(CXX) $(CFLAGS) ../../../Common/MyWindows.cpp
++
++String.o: ../../../Common/String.cpp
++	$(CXX) $(CFLAGS) ../../../Common/String.cpp
++
++StringConvert.o: ../../../Common/StringConvert.cpp
++	$(CXX) $(CFLAGS) ../../../Common/StringConvert.cpp
++
++StringToInt.o: ../../../Common/StringToInt.cpp
++	$(CXX) $(CFLAGS) ../../../Common/StringToInt.cpp
++
++Vector.o: ../../../Common/Vector.cpp
++	$(CXX) $(CFLAGS) ../../../Common/Vector.cpp
++
++clean:
++	-$(RM) $(PROG) $(OBJS)
++
+diff -Nur lzma/C/7zip/Compress/LZMA_Lib/ZLib.cpp lzma.patched/C/7zip/Compress/LZMA_Lib/ZLib.cpp
+--- lzma/C/7zip/Compress/LZMA_Lib/ZLib.cpp	1970-01-01 01:00:00.000000000 +0100
++++ lzma.patched/C/7zip/Compress/LZMA_Lib/ZLib.cpp	2006-03-25 11:04:53.000000000 +0100
+@@ -0,0 +1,273 @@
++/*

++ * lzma zlib simplified wrapper

++ *

++ * Copyright (c) 2005-2006 Oleg I. Vdovikin <oleg@cs.msu.su>

++ *

++ * This library is free software; you can redistribute 

++ * it and/or modify it under the terms of the GNU Lesser 

++ * General Public License as published by the Free Software 

++ * Foundation; either version 2.1 of the License, or 

++ * (at your option) any later version.

++ *

++ * This library is distributed in the hope that it will be 

++ * useful, but WITHOUT ANY WARRANTY; without even the implied 

++ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 

++ * PURPOSE. See the GNU Lesser General Public License 

++ * for more details.

++ *

++ * You should have received a copy of the GNU Lesser General 

++ * Public License along with this library; if not, write to 

++ * the Free Software Foundation, Inc., 59 Temple Place, 

++ * Suite 330, Boston, MA 02111-1307 USA 

++ */

++

++/*

++ * default values for encoder/decoder used by wrapper

++ */

++

++#include <zlib.h>

++

++#define ZLIB_LC 3

++#define ZLIB_LP 0

++#define ZLIB_PB 2

++

++#ifdef WIN32

++#include <initguid.h>

++#else

++#define INITGUID

++#endif

++

++#include "../../../Common/MyWindows.h"

++#include "../LZMA/LZMADecoder.h"

++#include "../LZMA/LZMAEncoder.h"

++

++#define STG_E_SEEKERROR                  ((HRESULT)0x80030019L)

++#define STG_E_MEDIUMFULL                 ((HRESULT)0x80030070L)

++

++class CInMemoryStream: 

++  public IInStream,

++  public IStreamGetSize,

++  public CMyUnknownImp

++{

++public:

++  CInMemoryStream(const Bytef *data, UInt64 size) : 

++	  m_data(data), m_size(size), m_offset(0) {}

++

++  virtual ~CInMemoryStream() {}

++

++  MY_UNKNOWN_IMP2(IInStream, IStreamGetSize)

++

++  STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize)

++  {

++	  if (size > m_size - m_offset) 

++		  size = m_size - m_offset;

++

++	  if (size) {

++		  memcpy(data, m_data + m_offset, size);

++	  }

++

++	  m_offset += size;

++

++	  if (processedSize) 

++		  *processedSize = size;

++

++	  return S_OK;

++  }

++

++  STDMETHOD(ReadPart)(void *data, UInt32 size, UInt32 *processedSize)

++  {

++	return Read(data, size, processedSize);

++  }

++

++  STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition)

++  {

++	  UInt64 _offset;

++

++	  if (seekOrigin == STREAM_SEEK_SET) _offset = offset;

++	  else if (seekOrigin == STREAM_SEEK_CUR) _offset = m_offset + offset; 

++	  else if (seekOrigin == STREAM_SEEK_END) _offset = m_size;

++	  else return STG_E_INVALIDFUNCTION;

++

++	  if (_offset < 0 || _offset > m_size)

++		  return STG_E_SEEKERROR;

++

++	  m_offset = _offset;

++

++	  if (newPosition)

++		  *newPosition = m_offset;

++

++	  return S_OK;

++  }

++

++  STDMETHOD(GetSize)(UInt64 *size)

++  {

++	  *size = m_size;

++	  return S_OK;

++  }

++protected:

++	const Bytef *m_data;

++	UInt64 m_size;

++	UInt64 m_offset;

++};

++

++class COutMemoryStream: 

++  public IOutStream,

++  public CMyUnknownImp

++{

++public:

++  COutMemoryStream(Bytef *data, UInt64 maxsize) : 

++	  m_data(data), m_size(0), m_maxsize(maxsize), m_offset(0) {}

++  virtual ~COutMemoryStream() {}

++  

++  MY_UNKNOWN_IMP1(IOutStream)

++

++  STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize)

++  {

++	  if (size > m_maxsize - m_offset) 

++		  size = m_maxsize - m_offset;

++

++	  if (size) {

++		  memcpy(m_data + m_offset, data, size);

++	  }

++

++	  m_offset += size;

++

++	  if (m_offset > m_size)

++		m_size = m_offset;

++

++	  if (processedSize) 

++		  *processedSize = size;

++

++	  return S_OK;

++  }

++  

++  STDMETHOD(WritePart)(const void *data, UInt32 size, UInt32 *processedSize)

++  {

++	  return Write(data, size, processedSize);

++  }

++

++  STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition)

++  {

++	  UInt64 _offset;

++

++	  if (seekOrigin == STREAM_SEEK_SET) _offset = offset;

++	  else if (seekOrigin == STREAM_SEEK_CUR) _offset = m_offset + offset; 

++	  else if (seekOrigin == STREAM_SEEK_END) _offset = m_size;

++	  else return STG_E_INVALIDFUNCTION;

++

++	  if (_offset < 0 || _offset > m_maxsize)

++		  return STG_E_SEEKERROR;

++

++	  m_offset = _offset;

++

++	  if (newPosition)

++		  *newPosition = m_offset;

++

++	  return S_OK;

++  }

++  

++  STDMETHOD(SetSize)(Int64 newSize)

++  {

++	  if ((UInt64)newSize > m_maxsize) 

++		  return STG_E_MEDIUMFULL;

++

++	  return S_OK;

++  }

++protected:

++	Bytef *m_data;

++	UInt64 m_size;

++	UInt64 m_maxsize;

++	UInt64 m_offset;

++};

++

++ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,

++                                  const Bytef *source, uLong sourceLen,

++                                  int level))

++{

++	CInMemoryStream *inStreamSpec = new CInMemoryStream(source, sourceLen);

++	CMyComPtr<ISequentialInStream> inStream = inStreamSpec;

++	

++	COutMemoryStream *outStreamSpec = new COutMemoryStream(dest, *destLen);

++	CMyComPtr<ISequentialOutStream> outStream = outStreamSpec;

++	

++	NCompress::NLZMA::CEncoder *encoderSpec = 

++		new NCompress::NLZMA::CEncoder;

++	CMyComPtr<ICompressCoder> encoder = encoderSpec;

++	

++	PROPID propIDs[] = 

++	{

++		NCoderPropID::kDictionarySize,

++		NCoderPropID::kPosStateBits,

++		NCoderPropID::kLitContextBits,

++		NCoderPropID::kLitPosBits,

++		NCoderPropID::kAlgorithm,

++		NCoderPropID::kNumFastBytes,

++		NCoderPropID::kMatchFinder,

++		NCoderPropID::kEndMarker

++	};

++	const int kNumProps = sizeof(propIDs) / sizeof(propIDs[0]);

++	

++	PROPVARIANT properties[kNumProps];

++	for (int p = 0; p < 6; p++)

++		properties[p].vt = VT_UI4;

++	properties[0].ulVal = UInt32(1 << (level + 14));

++	properties[1].ulVal = UInt32(ZLIB_PB);

++	properties[2].ulVal = UInt32(ZLIB_LC); // for normal files

++	properties[3].ulVal = UInt32(ZLIB_LP); // for normal files

++	properties[4].ulVal = UInt32(2);

++	properties[5].ulVal = UInt32(128);

++	

++	properties[6].vt = VT_BSTR;

++	properties[6].bstrVal = (BSTR)(const wchar_t *)L"BT4";

++	

++	properties[7].vt = VT_BOOL;

++	properties[7].boolVal = VARIANT_TRUE;

++	

++	if (encoderSpec->SetCoderProperties(propIDs, properties, kNumProps) != S_OK)

++		return Z_MEM_ERROR; // should not happen

++	

++	HRESULT result = encoder->Code(inStream, outStream, 0, 0, 0);

++	if (result == E_OUTOFMEMORY)

++	{

++		return Z_MEM_ERROR;

++	}   

++	else if (result != S_OK)

++	{

++		return Z_BUF_ERROR;	// should not happen

++	}   

++	

++	UInt64 fileSize;

++	outStreamSpec->Seek(0, STREAM_SEEK_END, &fileSize);

++	*destLen = fileSize;

++	

++	return Z_OK;

++}

++

++ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,

++                                   const Bytef *source, uLong sourceLen))

++{

++	CInMemoryStream *inStreamSpec = new CInMemoryStream(source, sourceLen);

++	CMyComPtr<ISequentialInStream> inStream = inStreamSpec;

++	

++	COutMemoryStream *outStreamSpec = new COutMemoryStream(dest, *destLen);

++	CMyComPtr<ISequentialOutStream> outStream = outStreamSpec;

++	

++	NCompress::NLZMA::CDecoder *decoderSpec = 

++		new NCompress::NLZMA::CDecoder;

++	CMyComPtr<ICompressCoder> decoder = decoderSpec;

++	

++	if (decoderSpec->SetDecoderPropertiesRaw(ZLIB_LC, 

++		ZLIB_LP, ZLIB_PB, (1 << 23)) != S_OK) return Z_DATA_ERROR;

++	

++	UInt64 fileSize = *destLen;

++	

++	if (decoder->Code(inStream, outStream, 0, &fileSize, 0) != S_OK)

++	{

++		return Z_DATA_ERROR;

++	}

++	

++	outStreamSpec->Seek(0, STREAM_SEEK_END, &fileSize);

++	*destLen = fileSize;

++	

++	return Z_OK;

++}

 

--- /dev/null
+++ b/toolchain/squashfs/Makefile
@@ -1,1 +1,28 @@
+include $(TOPDIR)/rules.mk
 
+SQUASHFSLZMA_DIR=$(BUILD_DIR)/squashfs3.0
+SQUASHFSLZMA_SOURCE=squashfs3.0.tar.gz
+SQUASHFSLZMA_SITE=@SF/squashfs
+SQUASHFSLZMA_MD5SUM=9fd05d0bfbb712f5fb95edafea5bc733
+
+$(DL_DIR)/$(SQUASHFSLZMA_SOURCE):
+	$(SCRIPT_DIR)/download.pl $(DL_DIR) $(SQUASHFSLZMA_SOURCE) $(SQUASHFSLZMA_MD5SUM) $(SQUASHFSLZMA_SITE)
+
+$(SQUASHFSLZMA_DIR)/.unpacked: $(DL_DIR)/$(SQUASHFSLZMA_SOURCE) 
+	zcat $(DL_DIR)/$(SQUASHFSLZMA_SOURCE) | tar -C $(BUILD_DIR) -xvf -
+	$(PATCH) $(SQUASHFSLZMA_DIR) ./patches
+	touch $(SQUASHFSLZMA_DIR)/.unpacked
+
+$(SQUASHFSLZMA_DIR)/squashfs-tools/mksquashfs-lzma: $(SQUASHFSLZMA_DIR)/.unpacked
+	$(MAKE) -C $(SQUASHFSLZMA_DIR)/squashfs-tools mksquashfs-lzma LZMAPATH=$(BUILD_DIR)/lzma
+
+$(STAGING_DIR)/bin/mksquashfs-lzma: $(SQUASHFSLZMA_DIR)/squashfs-tools/mksquashfs-lzma
+	$(CP) $< $@
+
+source: $(DL_DIR)/$(SQUASHFSLZMA_SOURCE)
+prepare: $(SQUASHFSLZMA_DIR)/.unpacked
+compile: $(SQUASHFSLZMA_DIR)/squashfs-tools/mksquashfs-lzma $(STAGING_DIR)/bin/mksquashfs-lzma
+install:
+clean: FORCE
+	rm -rf $(SQUASHFSLZMA_DIR)
+

--- /dev/null
+++ b/toolchain/squashfs/patches/100-lzma.patch
@@ -1,1 +1,26 @@
+diff -Nur squashfs3.0/squashfs-tools/Makefile squashfs3.0-owrt/squashfs-tools/Makefile
+--- squashfs3.0/squashfs-tools/Makefile	2006-03-15 22:36:20.000000000 +0100
++++ squashfs3.0-owrt/squashfs-tools/Makefile	2006-03-21 11:14:08.000000000 +0100
+@@ -1,4 +1,5 @@
+ INCLUDEDIR = .
++#LZMAPATH = ../lzma/SRC/7zip/Compress/LZMA_Lib
+ 
+ CFLAGS := -I$(INCLUDEDIR) -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2
+ 
+@@ -7,6 +8,9 @@
+ mksquashfs: mksquashfs.o read_fs.o sort.o
+ 	$(CC) mksquashfs.o read_fs.o sort.o -lz -o $@
+ 
++mksquashfs-lzma: mksquashfs.o read_fs.o sort.o
++	$(CXX) mksquashfs.o read_fs.o sort.o -L$(LZMAPATH) -llzma -o $@
++
+ mksquashfs.o: mksquashfs.c squashfs_fs.h mksquashfs.h global.h sort.h
+ 
+ read_fs.o: read_fs.c squashfs_fs.h read_fs.h global.h
+@@ -17,3 +21,5 @@
+ 	$(CC) unsquashfs.o -lz -o $@
+ 
+ unsquashfs.o: unsquashfs.c squashfs_fs.h read_fs.h global.h
++
++clean:
 

comments