summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authorwbx <wbx@hydrogenium.(none)>2009-05-17 14:41:34 +0200
committerwbx <wbx@hydrogenium.(none)>2009-05-17 14:41:34 +0200
commit219a6dab8995aad9ac4860cc1a84d6f3509a03a4 (patch)
treeb9c0f3c43aebba2fcfef777592d0add39f2072f4 /mk
Initial import
Diffstat (limited to 'mk')
-rw-r--r--mk/build.mk182
-rw-r--r--mk/buildhlp.mk98
-rw-r--r--mk/cpu.mk23
-rw-r--r--mk/fetch.mk83
-rw-r--r--mk/image.mk69
-rw-r--r--mk/kernel-build.mk61
-rw-r--r--mk/kernel.mk77
-rw-r--r--mk/linux.mk11
-rw-r--r--mk/mirrors.mk147
-rw-r--r--mk/modules.mk1254
-rw-r--r--mk/package.mk212
-rw-r--r--mk/pkg-bottom.mk212
-rw-r--r--mk/rootfs.mk21
-rw-r--r--mk/split-cfg.mk10
-rw-r--r--mk/toolchain.mk6
-rw-r--r--mk/tools.mk6
-rw-r--r--mk/vars.mk120
17 files changed, 2592 insertions, 0 deletions
diff --git a/mk/build.mk b/mk/build.mk
new file mode 100644
index 000000000..b08b97273
--- /dev/null
+++ b/mk/build.mk
@@ -0,0 +1,182 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+TOPDIR=$(shell pwd)
+export TOPDIR
+
+ifneq ($(shell umask 2>/dev/null | sed 's/0*022/OK/'),OK)
+$(error your umask is not 022)
+endif
+
+CONFIG_CONFIG_IN = Config.in
+CONFIG = config
+
+noconfig_targets:= menuconfig \
+ _config \
+ _mconfig \
+ tags
+
+MAKECLEAN_SYMBOLS= ADK_TARGET_LIB_UCLIBC ADK_TARGET_LIB_GLIBC ADK_SSP ADK_IPV6 ADK_CXX
+POSTCONFIG= -@\
+ if [ -f .config.old ];then \
+ if [ -d .cfg ];then \
+ what=cleandevice; \
+ for symbol in ${MAKECLEAN_SYMBOLS}; do \
+ newval=$$(grep -e "^$$symbol=" -e "^\# $$symbol " .config); \
+ oldval=$$(cat .cfg/"$$symbol" 2>&-); \
+ [[ $$newval = $$oldval ]] && continue; \
+ echo; \
+ echo >&2 "WARNING: Toolchain related options have changed, 'make" \
+ "$$what' might be required!"; \
+ break; \
+ done; \
+ fi; \
+ if [ "$$(grep ^BUSYBOX .config|md5sum)" != "$$(grep ^BUSYBOX .config.old|md5sum)" ];then \
+ if [ -f build_$(CPU_ARCH)/w-busybox*/busybox*/.configure_done ];then \
+ rm build_$(CPU_ARCH)/w-busybox*/busybox*/.configure_done; \
+ fi; \
+ fi; \
+ fi
+
+# Pull in the user's configuration file
+ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
+-include $(TOPDIR)/.config
+endif
+
+ifeq ($(strip $(ADK_HAVE_DOT_CONFIG)),y)
+include $(TOPDIR)/rules.mk
+include ${TOPDIR}/mk/split-cfg.mk
+
+all: world
+
+.NOTPARALLEL:
+.PHONY: all world clean cleandevice cleandir distclean image_clean
+
+world: $(DISTDIR) $(BUILD_DIR) $(TARGET_DIR) $(PACKAGE_DIR) ${TOPDIR}/.cfg/ADK_HAVE_DOT_CONFIG
+ ${BASH} ${TOPDIR}/scripts/scan-pkgs.sh
+ $(MAKE) -f mk/build.mk toolchain/install target/config-prepare target/compile package/compile root_clean package/install package_index target/install
+
+package_index:
+ -cd ${PACKAGE_DIR} && \
+ ${BASH} ${TOPDIR}/scripts/ipkg-make-index.sh . >Packages
+
+$(DISTDIR):
+ mkdir -p $(DISTDIR)
+
+$(BUILD_DIR):
+ mkdir -p $(BUILD_DIR)
+
+$(TARGET_DIR):
+ mkdir -p $(TARGET_DIR)
+
+$(PACKAGE_DIR):
+ mkdir -p ${PACKAGE_DIR}/.stamps
+
+${STAGING_DIR} ${STAGING_DIR}/etc ${STAGING_TOOLS}:
+ mkdir -p ${STAGING_DIR}/{bin,etc,include,lib,usr} \
+ ${STAGING_TOOLS}/{bin,lib}
+ cd ${STAGING_DIR}/usr; ln -s ../include include
+
+${STAGING_DIR}/etc/ipkg.conf: ${STAGING_DIR}/etc
+ echo "dest root /" >${STAGING_DIR}/etc/ipkg.conf
+ echo "option offline_root ${TARGET_DIR}" >>$(STAGING_DIR)/etc/ipkg.conf
+
+package/%: ${TOPDIR}/.cfg/ADK_HAVE_DOT_CONFIG ${STAGING_DIR}/etc/ipkg.conf
+ $(MAKE) -C package $(patsubst package/%,%,$@)
+
+target/%: ${TOPDIR}/.cfg/ADK_HAVE_DOT_CONFIG
+ $(MAKE) -C target $(patsubst target/%,%,$@)
+
+toolchain/%: ${STAGING_DIR}
+ $(MAKE) -C toolchain $(patsubst toolchain/%,%,$@)
+
+image:
+ $(MAKE) -C target image
+
+switch:
+ echo "Saving configuration for device: ${DEVICE}"
+ cp .config .config.${DEVICE}
+ if [ -f .config.${DEV} ];then cp .config.${DEV} .config; \
+ cp .config.${DEV} .config.old; \
+ echo "Setting configuration to device: ${DEV}"; \
+ else echo "No old device config found";mv .config .config.bak;fi
+
+#############################################################
+#
+# Cleanup and misc junk
+#
+#############################################################
+root_clean:
+ @$(TRACE) root_clean
+ rm -rf $(TARGET_DIR)
+
+clean:
+ @$(TRACE) clean
+ $(MAKE) -C $(CONFIG) clean
+ rm -rf $(BUILD_DIR) $(BIN_DIR) $(TARGET_DIR) ${TOPDIR}/.cfg
+ rm -f ${TOPDIR}/package/*/info.mk
+
+cleankernel:
+ @$(TRACE) cleankernel
+ rm -rf $(TOOLCHAIN_BUILD_DIR)/linux* $(BUILD_DIR)/linux
+
+cleandir:
+ @$(TRACE) cleandir
+ $(MAKE) -C $(CONFIG) clean
+ rm -rf $(BUILD_DIR_PFX) $(BIN_DIR_PFX) $(TARGET_DIR_PFX) ${TOPDIR}/.cfg
+ rm -rf $(TOOLCHAIN_BUILD_DIR_PFX) $(STAGING_PARENT_PFX) $(TOOLS_BUILD_DIR)
+ rm -f .tmpconfig.h ${TOPDIR}/package/*/info.mk
+
+cleandevice:
+ @$(TRACE) cleandevice
+ $(MAKE) -C $(CONFIG) clean
+ rm -rf $(BUILD_DIR) $(BIN_DIR) $(TARGET_DIR) ${TOPDIR}/.cfg
+ rm -rf $(TOOLCHAIN_BUILD_DIR) $(STAGING_PARENT)
+ rm -f .tmpconfig.h ${TOPDIR}/package/*/info.mk
+
+distclean:
+ @$(TRACE) distclean
+ $(MAKE) -C $(CONFIG) clean
+ rm -rf $(BUILD_DIR_PFX) $(BIN_DIR_PFX) $(TARGET_DIR_PFX) $(DISTDIR) ${TOPDIR}/.cfg
+ rm -rf $(TOOLCHAIN_BUILD_DIR_PFX) $(STAGING_PARENT_PFX) $(TOOLS_BUILD_DIR)
+ rm -f .config* .tmpconfig.h ${TOPDIR}/package/*/info.mk
+
+else # ifeq ($(strip $(ADK_HAVE_DOT_CONFIG)),y)
+
+include $(TOPDIR)/prereq.mk
+
+all: menuconfig
+ @echo "Start the build with \"make\" or with \"make v\" to be verbose"
+
+# configuration
+# ---------------------------------------------------------------------------
+
+$(CONFIG)/conf:
+ @$(MAKE) -C $(CONFIG) conf
+
+$(CONFIG)/mconf:
+ @$(MAKE) -C $(CONFIG)
+
+menuconfig: $(CONFIG)/mconf
+ @$(CONFIG)/mconf $(CONFIG_CONFIG_IN)
+ ${POSTCONFIG}
+
+_config: $(CONFIG)/conf
+ -@touch .config
+ @$(CONFIG)/conf ${W} $(CONFIG_CONFIG_IN) >/dev/null
+ ${POSTCONFIG}
+
+.NOTPARALLEL: _mconfig
+_mconfig: ${CONFIG}/conf _mconfig2 _config
+_mconfig2: ${CONFIG}/conf
+ @${CONFIG}/conf -M ${RCONFIG} >/dev/null
+
+distclean:
+ @$(MAKE) -C $(CONFIG) clean
+ rm -rf $(BUILD_DIR) $(TOOLS_BUILD_DIR) $(BIN_DIR) $(DISTDIR) ${TOPDIR}/.cfg
+ rm -rf $(TOOLCHAIN_BUILD_DIR) $(STAGING_PARENT) $(TARGET_DIR)
+ rm -f .config* .tmpconfig.h ${TOPDIR}/package/*/info.mk
+
+endif # ifeq ($(strip $(ADK_HAVE_DOT_CONFIG)),y)
diff --git a/mk/buildhlp.mk b/mk/buildhlp.mk
new file mode 100644
index 000000000..b6b70d67d
--- /dev/null
+++ b/mk/buildhlp.mk
@@ -0,0 +1,98 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+ifneq ($(strip ${MASTER_SITES}),)
+ifeq ($(strip ${DISTFILES}),)
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+endif
+endif
+
+# This is where all package operation is done in
+WRKDIR?= ${WRKDIR_BASE}/w-${PKG_NAME}-${PKG_VERSION}-${PKG_RELEASE}
+# This is where source code is extracted and patched
+WRKDIST?= ${WRKDIR}/${PKG_NAME}-${PKG_VERSION}
+# This is where the configure script is seeked (localed)
+WRKSRC?= ${WRKDIST}
+# This is where configure, make and make install (fake) run from
+WRKBUILD?= ${WRKSRC}
+# This is where make install (fake) writes to
+WRKINST?= ${WRKDIR}/fake-${ARCH}/root
+
+ifeq ($(strip ${NO_CHECKSUM}),)
+_CHECKSUM_COOKIE= ${WRKDIR}/.checksum_done
+else
+_CHECKSUM_COOKIE=
+endif
+
+post-extract:
+
+ifeq ($(strip ${NO_DISTFILES}),1)
+${WRKDIST}/.extract_done:
+ rm -rf ${WRKDIST} ${WRKSRC} ${WRKBUILD}
+ mkdir -p ${WRKDIR} ${WRKDIST}
+ ${MAKE} do-extract
+ @${MAKE} post-extract
+ touch $@
+
+fetch refetch checksum do-extract:
+
+__use_generic_patch_target:=42
+else ifneq ($(strip ${DISTFILES}),)
+include ${TOPDIR}/mk/fetch.mk
+
+${WRKDIST}/.extract_done: ${_CHECKSUM_COOKIE}
+ifeq (${_CHECKSUM_COOKIE},)
+ rm -rf ${WRKDIST} ${WRKSRC} ${WRKBUILD}
+endif
+ ${EXTRACT_CMD}
+ @${MAKE} post-extract
+ touch $@
+
+__use_generic_patch_target:=42
+else ifeq ($(strip ${_IN_PACKAGE}),1)
+$(warning This package does not use the generic extraction and patch target; it's most likely to fail.)
+endif
+
+ifeq ($(strip ${__use_generic_patch_target}),42)
+post-patch:
+${WRKDIST}/.prepared: ${WRKDIST}/.extract_done
+ [ ! -d ./patches ] || ${PREVENT_PATCH} ${PATCH} ${WRKDIST} ./patches \
+ '{patch-!(*.orig),*.patch}' $(MAKE_TRACE)
+ [ ! -d ./extra ] || (cd extra; $(PREVENT_PATCH) cp -Rp . ${WRKDIST}/) \
+ $(MAKE_TRACE)
+ @${MAKE} post-patch $(MAKE_TRACE)
+ touch $@
+endif
+
+update-patches:
+ @test ! -d ${WRKDIR}.orig || rm -rf ${WRKDIR}.orig
+ @test ! -d ${WRKDIR}.orig
+ifeq ($(strip ${_IN_PACKAGE})$(strip ${_IN_CVTC}),1)
+ @$(MAKE) -s V=0 patch WRKDIR=${WRKDIR}.orig PREVENT_PATCH=: NO_CHECKSUM=1
+else
+ @$(MAKE) -s V=0 prepare WRKDIR=${WRKDIR}.orig PREVENT_PATCH=: NO_CHECKSUM=1
+endif
+ @# restore config.sub/config.guess
+ @for i in $$(find ${WRKDIR} -name config.sub);do \
+ if [ -f $$i.bak ];then \
+ mv $$i.bak $$i; \
+ fi;\
+ done
+ @for i in $$(find ${WRKDIR} -name config.guess);do \
+ if [ -f $$i.bak ];then \
+ mv $$i.bak $$i; \
+ fi;\
+ done
+ @toedit=$$(WRKDIST='${WRKDIST}' CURDIR=$$(pwd) \
+ PATCH_LIST='patch-* *.patch' WRKDIR1='${WRKDIR}' \
+ ${BASH} ${TOPDIR}/scripts/update-patches); \
+ if [[ -n $$toedit && $$toedit != FAIL ]]; then \
+ echo -n 'edit patches: '; read i; \
+ cd patches && $${VISUAL:-$${EDITOR:-/usr/bin/vi}} $$toedit; \
+ fi; \
+ rm -rf ${WRKDIR}.orig; \
+ [[ $$toedit != FAIL ]]
+
+.PHONY: update-patches
diff --git a/mk/cpu.mk b/mk/cpu.mk
new file mode 100644
index 000000000..8eb047bc9
--- /dev/null
+++ b/mk/cpu.mk
@@ -0,0 +1,23 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+#
+# optimization configure options for CPU features
+
+ifeq ($(DEVICE),alix1c)
+CONFIGURE_CPU_OPTS:= --disable-ssse3 \
+ --disable-sse \
+ --enable-amd3dnow \
+ --enable-amd3dnowext \
+ --enable-mmx \
+ --enable-mmx2
+else
+CONFIGURE_CPU_OPTS:= --disable-ssse3 \
+ --disable-sse \
+ --disable-mmxext \
+ --disable-amd3dnow \
+ --disable-amd3dnowext \
+ --disable-mmx \
+ --disable-mmx2
+endif
diff --git a/mk/fetch.mk b/mk/fetch.mk
new file mode 100644
index 000000000..c4625ccee
--- /dev/null
+++ b/mk/fetch.mk
@@ -0,0 +1,83 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+#-
+
+ifneq ($(strip ${DIST_SUBDIR}),)
+FULLDISTDIR?= ${DISTDIR}/${DIST_SUBDIR}
+else
+FULLDISTDIR?= ${DISTDIR}
+endif
+
+FULLDISTFILES= $(patsubst %,${FULLDISTDIR}/%,${DISTFILES})
+
+FETCH_STYLE?= auto
+#pre-fetch:
+do-fetch:
+#post-fetch:
+fetch:
+# @${MAKE} pre-fetch
+ifneq ($(filter auto,${FETCH_STYLE}),)
+ ${MAKE} ${FULLDISTFILES}
+else
+ ${MAKE} do-fetch
+endif
+# @${MAKE} post-fetch
+
+refetch:
+ -rm -f ${FULLDISTFILES}
+ ${MAKE} fetch
+
+# XXX for now
+_CHECKSUM_COOKIE?= ${WRKDIR}/.checksum_done
+checksum: ${_CHECKSUM_COOKIE}
+ifeq ($(strip ${NO_CHECKSUM}),)
+${_CHECKSUM_COOKIE}: ${FULLDISTFILES}
+ rm -rf ${WRKDIR}
+ @OK=n; \
+ (md5sum ${FULLDISTFILES}; echo exit) | while read sum name; do \
+ if [[ $$sum = exit ]]; then \
+ [[ $$OK = n ]] && echo >&2 "==> No distfile found!" || :; \
+ [[ $$OK = 1 ]] || exit 1; \
+ break; \
+ fi; \
+ if [[ $$sum = "$(strip ${PKG_MD5SUM})" ]]; then \
+ [[ $$OK = 0 ]] || OK=1; \
+ continue; \
+ fi; \
+ echo >&2 "==> Checksum mismatch for $${name##*/} (MD5)"; \
+ echo >&2 ":---> should be '$(strip ${PKG_MD5SUM})'"; \
+ echo >&2 ":---> really is '$$sum'"; \
+ OK=0; \
+ done
+ mkdir -p ${WRKDIR}
+ touch ${_CHECKSUM_COOKIE}
+endif
+
+# GNU make's poor excuse for loops
+define FETCH_template
+$(1):
+ @fullname='$(1)'; \
+ subname=$$$${fullname##$${DISTDIR}/}; \
+ filename=$$$${fullname##*/}; \
+ i='$${LOCAL_DISTDIR}'; \
+ if [[ -n $$$$i && -e $$$$i/$$$$subname ]]; then \
+ cd "$$$$i"; \
+ echo pax -rw "$$$$subname" '$${DISTDIR}/'; \
+ exec pax -rw "$$$$subname" '$${DISTDIR}/'; \
+ fi; \
+ mkdir -p "$$$${fullname%%/$$$$filename}"; \
+ cd "$$$${fullname%%/$$$$filename}"; \
+ for site in $${MASTER_SITES} $${MASTER_SITE_BACKUP}; do \
+ : echo "$${FETCH_CMD} $$$$site$$$$filename"; \
+ rm -f "$$$$filename"; \
+ if $${FETCH_CMD} $$$$site$$$$filename; then \
+ : check the size here; \
+ [[ ! -e $$$$filename ]] || exit 0; \
+ fi; \
+ done; \
+ exit 1
+endef
+
+$(foreach distfile,${FULLDISTFILES},$(eval $(call FETCH_template,$(distfile))))
diff --git a/mk/image.mk b/mk/image.mk
new file mode 100644
index 000000000..4388dcaad
--- /dev/null
+++ b/mk/image.mk
@@ -0,0 +1,69 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+imageprepare: kernel-install image-prepare-post
+
+image-prepare-post:
+ rng=/dev/arandom; test -e $$rng || rng=/dev/urandom; \
+ dd if=$$rng bs=512 count=1 >>${TARGET_DIR}/etc/.rnd 2>/dev/null; \
+ chmod 600 ${TARGET_DIR}/etc/.rnd
+ # Sanity checks
+ @cd ${TARGET_DIR}; ls=; ln=; li=; x=1; md5sum $$(find . -type f) | \
+ sed -e "s/*//" | \
+ while read sum name; do \
+ inode=$$(ls -i "$$name"); \
+ echo "$$sum $${inode%% *} $$name"; \
+ done | sort | while read sum inode name; do \
+ if [[ $$sum = $$ls ]]; then \
+ [[ $$li = $$inode ]] && continue; \
+ case $$x in \
+ 1) echo 'WARNING: duplicate files found' \
+ 'in filesystem! Please fix them.' >&2; \
+ echo -n "> $$ln "; \
+ ;; \
+ 2) echo -n "> $$ln "; \
+ ;; \
+ 3) echo -n ' '; \
+ ;; \
+ esac; \
+ echo -n "$$name"; \
+ x=3; \
+ else \
+ case $$x in \
+ 3) echo; \
+ x=2; \
+ ;; \
+ esac; \
+ fi; \
+ ls=$$sum; \
+ ln=$$name; \
+ li=$$inode; \
+ done
+ chmod 4511 ${TARGET_DIR}/bin/busybox
+ chmod 1777 ${TARGET_DIR}/tmp
+
+INITRAMFS= ${DEVICE}-${ARCH}-${FS}
+ROOTFSSQUASHFS= ${DEVICE}-${ARCH}-${FS}.fimage
+ROOTFSTARBALL= ${DEVICE}-${ARCH}-${FS}.tar.gz
+
+${BIN_DIR}/${ROOTFSTARBALL}: ${TARGET_DIR}
+ cd ${TARGET_DIR}; tar -cf - --owner=0 --group=0 . | gzip -n9 >$@
+
+${BIN_DIR}/${INITRAMFS}: ${TARGET_DIR}
+ cd ${TARGET_DIR}; find . | sed -n '/^\.\//s///p' | sort | \
+ cpio -R 0:0 --quiet -oC512 -Mdist -Hnewc | gzip -n9 >$@
+
+${BIN_DIR}/${ROOTFSSQUASHFS}: ${TARGET_DIR}
+ PATH='${TARGET_PATH}' \
+ mksquashfs ${TARGET_DIR} ${BUILD_DIR}/root.squashfs \
+ -nopad -noappend -root-owned -le $(MAKE_TRACE)
+ # padding of images is required
+ cat ${BIN_DIR}/${DEVICE}-${ARCH}-kernel ${BUILD_DIR}/root.squashfs > \
+ ${BUILD_DIR}/${ROOTFSSQUASHFS}
+ dd if=${BUILD_DIR}/${ROOTFSSQUASHFS} of=${BIN_DIR}/${ROOTFSSQUASHFS} \
+ bs=4063232 conv=sync $(MAKE_TRACE)
+
+imageclean:
+ rm -f $(BIN_DIR)/$(DEVICE)-*
diff --git a/mk/kernel-build.mk b/mk/kernel-build.mk
new file mode 100644
index 000000000..c07e34c23
--- /dev/null
+++ b/mk/kernel-build.mk
@@ -0,0 +1,61 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(TOPDIR)/rules.mk
+include $(TOPDIR)/mk/linux.mk
+include ${TOPDIR}/mk/buildhlp.mk
+
+KERNEL_IDIR:=$(LINUX_BUILD_DIR)/kernel-ipkg
+
+$(TOOLCHAIN_BUILD_DIR)/linux-$(KERNEL_VERSION)/.patched:
+ $(TRACE) target/$(DEVICE)-kernel-patch
+ $(PATCH) $(TOOLCHAIN_BUILD_DIR)/linux-$(KERNEL_VERSION) ../linux/patches *.patch $(MAKE_TRACE)
+ $(PATCH) $(TOOLCHAIN_BUILD_DIR)/linux-$(KERNEL_VERSION) ../linux/patches/$(KERNEL_VERSION) *.patch $(MAKE_TRACE)
+ $(PATCH) $(TOOLCHAIN_BUILD_DIR)/linux-$(KERNEL_VERSION) ../$(DEVICE)/patches *.patch $(MAKE_TRACE)
+ touch $@
+
+$(LINUX_DIR)/.prepared: $(TOOLCHAIN_BUILD_DIR)/linux-$(KERNEL_VERSION)/.patched
+ $(TRACE) target/$(DEVICE)-kernel-prepare
+ ln -sf $(TOOLCHAIN_BUILD_DIR)/linux-$(KERNEL_VERSION) $(LINUX_DIR)
+ mkdir -p $(LINUX_BUILD_DIR)/kmod-control
+ touch $@
+
+$(LINUX_DIR)/.config: $(LINUX_DIR)/.prepared $(BUILD_DIR)/.kernelconfig
+ $(TRACE) target/$(DEVICE)-kernel-configure
+ for f in $(TARGETS);do if [ -f $$f ];then rm $$f;fi;done $(MAKE_TRACE)
+ $(CP) $(BUILD_DIR)/.kernelconfig $(LINUX_DIR)/.config
+ echo N | $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(ARCH) CC="$(TARGET_CC)" oldconfig $(MAKE_TRACE)
+ $(MAKE) -C $(LINUX_DIR) V=1 CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(ARCH) CC="$(TARGET_CC)" prepare scripts $(MAKE_TRACE)
+ touch -c $(LINUX_DIR)/.config
+
+$(LINUX_DIR)/vmlinux: $(LINUX_DIR)/.config
+ $(TRACE) target/$(DEVICE)-kernel-compile
+ $(MAKE) -C $(LINUX_DIR) V=1 CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(ARCH) CC="$(TARGET_CC)" $(MAKE_TRACE)
+ $(TRACE) target/$(DEVICE)-kernel-modules-install
+ rm -rf $(LINUX_BUILD_DIR)/modules
+ $(MAKE) -C "$(LINUX_DIR)" V=1 CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(ARCH) DEPMOD=true INSTALL_MOD_PATH=$(LINUX_BUILD_DIR)/modules modules_install $(MAKE_TRACE)
+ $(TRACE) target/$(DEVICE)-create-packages
+ $(MAKE) $(KERNEL_IPKG) $(TARGETS)
+ touch -c $(LINUX_DIR)/vmlinux
+
+$(KERNEL_IPKG):
+ $(TRACE) target/$(DEVICE)-create-kernel-package
+ rm -rf $(KERNEL_IDIR)
+ @mkdir -p $(KERNEL_IDIR)/etc
+ ${BASH} ${SCRIPT_DIR}/make-ipkg-dir.sh ${KERNEL_IDIR} \
+ ../linux/kernel.control ${DEVICE}-${KERNEL_VERSION} ${ARCH}
+ $(IPKG_BUILD) $(KERNEL_IDIR) $(PACKAGE_DIR) $(MAKE_TRACE)
+
+prepare:
+compile: $(LINUX_DIR)/vmlinux
+install: compile
+ifneq ($(strip $(INSTALL_TARGETS)),)
+ $(TRACE) target/${DEVICE}-modules-install
+ $(IPKG) install $(INSTALL_TARGETS) $(MAKE_TRACE)
+endif
+
+clean:
+ rm -rf $(LINUX_BUILD_DIR)
+ rm -f $(TARGETS)
diff --git a/mk/kernel.mk b/mk/kernel.mk
new file mode 100644
index 000000000..06f3ebde2
--- /dev/null
+++ b/mk/kernel.mk
@@ -0,0 +1,77 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+
+LINUX_KMOD_SUFFIX=ko
+MODULES_SUBDIR := lib/modules/$(KERNEL_VERSION)
+LINUX_BUILD_DIR := $(BUILD_DIR)/linux-$(ARCH)-$(DEVICE)
+KMOD_BUILD_DIR := $(LINUX_BUILD_DIR)/linux-modules
+MODULES_DIR := $(LINUX_BUILD_DIR)/modules/$(MODULES_SUBDIR)
+TARGET_MODULES_DIR := $(LINUX_TARGET_DIR)/$(MODULES_SUBDIR)
+
+KERNEL_IPKG:=$(PACKAGE_DIR)/kernel_$(DEVICE)-$(KERNEL_VERSION)_$(ARCH).ipk
+INSTALL_TARGETS:= $(KERNEL_IPKG)
+NOINSTALL_TARGETS:=
+TARGETS:=
+
+# KMOD_template
+#
+# Adds a target for creating a package containing
+# the specified (kernel-provided) modules.
+# Parameters:
+# 1: the config symbol name (without leading 'ADK_[K,]PACKAGE_KMOD_')
+# this _must_ be equal to the kernel config symbol name
+# 2: the name for the package, should be unique
+# 3: actual modules to add; absolute path inside $(MODULES_DIR)
+# OMIT THE KERNEL-SPECIFIC EXTENSION!
+# 4: order of module loading at system startup; the modules in $(3) are (in their order)
+# added to this file, if $(6) is non-empty
+# 5: the kmod packages this package depends on
+#
+define KMOD_template
+
+IDEPENDK_$(1):=kernel ($(DEVICE)-$(KERNEL_VERSION)) $(foreach pkg,$(5),", $(pkg)")
+
+PKG_$(1) := $(PACKAGE_DIR)/kmod-$(2)_$(DEVICE)-$(KERNEL_VERSION)-$(KERNEL_RELEASE)_$(ARCH).ipk
+I_$(1) := $(KMOD_BUILD_DIR)/ipkg/$(2)
+
+ifeq ($$(ADK_KPACKAGE_KMOD_$(1)),m)
+TARGETS+=$$(PKG_$(1))
+endif
+ifeq ($$(ADK_KPACKAGE_KMOD_$(1)),y)
+TARGETS+=$$(PKG_$(1))
+INSTALL_TARGETS+=$$(PKG_$(1))
+endif
+
+$$(PKG_$(1)):
+ rm -rf $$(I_$(1))
+ echo "Package: kmod-$(2)" > $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control
+ echo "Priority: optional" >> $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control
+ echo "Section: sys" >> $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control
+ echo "Description: kernel module $(2)" >> $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control
+ ${BASH} ${SCRIPT_DIR}/make-ipkg-dir.sh $$(I_$(1)) \
+ $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control \
+ $(DEVICE)-$(KERNEL_VERSION)-$(KERNEL_RELEASE) $(ARCH)
+ echo "Depends: $$(IDEPENDK_$(1))" >> $$(I_$(1))/CONTROL/control
+ifneq ($(strip $(3)),)
+ mkdir -p $$(I_$(1))/lib/modules/$(KERNEL_VERSION)
+ $(CP) $(foreach mod,$(3),$(mod).$(LINUX_KMOD_SUFFIX)) $$(I_$(1))/lib/modules/$(KERNEL_VERSION)
+ifneq ($(4),)
+ mkdir -p $$(I_$(1))/etc/modules.d
+ for module in $(notdir $(3)); do \
+ echo $$$$module >> $$(I_$(1))/etc/modules.d/$(4)-$(2); \
+ done
+ echo "#!/bin/sh" >> $$(I_$(1))/CONTROL/postinst
+ echo "if [ -z \"\$$$${IPKG_INSTROOT}\" ]; then" >> $$(I_$(1))/CONTROL/postinst
+ echo ". /etc/functions.sh" >> $$(I_$(1))/CONTROL/postinst
+ echo "load_modules /etc/modules.d/$(4)-$(2)" >> $$(I_$(1))/CONTROL/postinst
+ echo "fi" >> $$(I_$(1))/CONTROL/postinst
+ chmod 0755 $$(I_$(1))/CONTROL/postinst
+endif
+endif
+ $(IPKG_BUILD) $$(I_$(1)) $(PACKAGE_DIR) $(MAKE_TRACE)
+endef
+
+include $(BUILD_DIR)/.kernelconfig
diff --git a/mk/linux.mk b/mk/linux.mk
new file mode 100644
index 000000000..e9d17e231
--- /dev/null
+++ b/mk/linux.mk
@@ -0,0 +1,11 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+PKG_NAME:= linux
+PKG_VERSION:= $(KERNEL_VERSION)
+PKG_RELEASE:= $(KERNEL_RELEASE)
+PKG_MD5SUM= $(KERNEL_MD5SUM)
+DISTFILES= $(PKG_NAME)-$(PKG_VERSION).tar.bz2
+MASTER_SITES= ${MASTER_SITE_KERNEL:=kernel/v2.6/}
diff --git a/mk/mirrors.mk b/mk/mirrors.mk
new file mode 100644
index 000000000..bbf41417a
--- /dev/null
+++ b/mk/mirrors.mk
@@ -0,0 +1,147 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+MASTER_SITE_BACKUP?= ${MASTER_SITE_OPENADK}
+
+MASTER_SITE_OPENADK?= \
+ http://www.openadk.org/distfiles/ \
+
+MASTER_SITE_MIRBSD?= \
+ http://www.mirbsd.org/MirOS/distfiles/ \
+ http://pub.allbsd.org/MirOS/distfiles/ \
+
+MASTER_SITE_KERNEL?= \
+ http://www.de.kernel.org/pub/linux/ \
+ http://www.fi.kernel.org/pub/linux/ \
+ http://www.fr.kernel.org/pub/linux/ \
+ http://www.kernel.org/pub/linux/ \
+
+MASTER_SITE_XORG?= \
+ http://ftp.gwdg.de/pub/x11/x.org/pub/X11R7.4/src/everything/ \
+ http://xorg.freedesktop.org/releases/X11R7.4/src/everything/ \
+ http://xorg.freedesktop.org/releases/individual/lib/ \
+
+MASTER_SITE_GNU?= \
+ http://ftp.gnu.org/gnu/ \
+ ftp://ftp.gnu.org/gnu/ \
+ ftp://ftp.funet.fi/pub/gnu/prep/ \
+ ftp://mirrors.usc.edu/pub/gnu/ \
+ ftp://ftp.cs.tu-berlin.de/pub/gnu/ \
+ ftp://aeneas.mit.edu/pub/gnu/ \
+ ftp://mirrors.dotsrc.org/gnu/ \
+ ftp://ftp.wustl.edu/pub/gnu/ \
+ ftp://ftp.kddilabs.jp/GNU/ \
+ ftp://ftp.mirror.ac.uk/sites/ftp.gnu.org/gnu/ \
+ ftp://sunsite.org.uk/package/gnu/ \
+ ftp://ftp.informatik.hu-berlin.de/pub/gnu/ \
+ ftp://ftp.rediris.es/mirror/gnu/gnu/ \
+ ftp://ftp.cs.univ-paris8.fr/mirrors/ftp.gnu.org/ \
+ ftp://ftp.chg.ru/pub/gnu/ \
+ ftp://ftp.uvsq.fr/pub/gnu/ \
+ ftp://ftp.sunet.se/pub/gnu/ \
+
+MASTER_SITE_SOURCEFORGE?= \
+ http://easynews.dl.sourceforge.net/sourceforge/ \
+ http://puzzle.dl.sourceforge.net/sourceforge/ \
+ http://optusnet.dl.sourceforge.net/sourceforge/ \
+ http://heanet.dl.sourceforge.net/sourceforge/ \
+ http://jaist.dl.sourceforge.net/sourceforge/ \
+ http://nchc.dl.sourceforge.net/sourceforge/ \
+ http://switch.dl.sourceforge.net/sourceforge/ \
+ http://kent.dl.sourceforge.net/sourceforge/ \
+ http://internap.dl.sourceforge.net/sourceforge/ \
+ http://mesh.dl.sourceforge.net/sourceforge/ \
+ http://ovh.dl.sourceforge.net/sourceforge/ \
+ http://surfnet.dl.sourceforge.net/sourceforge/ \
+ http://ufpr.dl.sourceforge.net/sourceforge/ \
+
+MASTER_SITE_MYSQL?= \
+ ftp://ftp.fu-berlin.de/unix/databases/mysql/ \
+ http://sunsite.informatik.rwth-aachen.de/mysql/ \
+ http://mysql.easynet.be/ \
+ http://mysql.blic.net/ \
+ http://mysql.online.bg/ \
+ http://mysql.mirrors.cybercity.dk/ \
+ http://mirrors.dotsrc.org/mysql/ \
+ http://mysql.tonnikala.org/ \
+ ftp://ftp.inria.fr/pub/MySQL/ \
+ http://mirrors.ircam.fr/pub/mysql/ \
+ http://mirrors.ee.teiath.gr/mysql/ \
+ http://mysql.sote.hu/ \
+ http://mysql.mirrors.crysys.hit.bme.hu/ \
+ http://na.mirror.garr.it/mirrors/MySQL/ \
+ http://mysql.bst.lt/ \
+ http://mysql.proserve.nl/ \
+ http://mirror.hostfuss.com/mysql/ \
+ http://mysql.mirrors.webazilla.nl/ \
+ http://mirror.dinpris.com/mysql/ \
+ http://mysql.nfsi.pt/ \
+ http://lisa.gov.pt/ftp/mysql/ \
+ ftp://mirrors.fibernet.ro/1/MySQL/ \
+ http://mysql.ran.ro/ \
+ http://mysql.directnet.ru/ \
+ ftp://ftp.dn.ru/pub/MySQL/ \
+ http://mysql.dn.ru/ \
+ http://mysql.mix.su/ \
+ http://www.fastmirrors.org/mysql/ \
+ http://mirrors.bevc.net/mysql/ \
+ http://www.wsection.com/mysql/ \
+ http://mysql.paknet.org/ \
+ http://mysql.rediris.es/ \
+ http://mysql.dataphone.se/ \
+ http://mirror.switch.ch/ftp/mirror/mysql/ \
+ ftp://ftp.solnet.ch/mirror/mysql/ \
+ http://mysql.net.ua/ \
+ ftp://ftp.tlk-l.net/pub/mirrors/mysql.com/ \
+ http://mysql.infocom.ua/ \
+ http://www.mirrorservice.org/sites/ftp.mysql.com/ \
+ http://mirrors.dedipower.com/www.mysql.com/ \
+ http://www.mirror.ac.uk/mirror/www.mysql.org/ \
+ http://mysql.mirror.rafal.ca/ \
+ http://mysql.serenitynet.com/ \
+ ftp://mirror.mcs.anl.gov/pub/mysql/ \
+ http://mirror.services.wisc.edu/mysql/ \
+ http://mysql.orst.edu/ \
+ http://mysql.he.net/ \
+ http://mysql.mirrors.pair.com/ \
+ http://mysql.mirror.redwire.net/ \
+ http://mysql.mirrors.hoobly.com/ \
+ http://mirror.trouble-free.net/mysql_mirror/ \
+ http://mirrors.24-7-solutions.net/pub/mysql/ \
+ http://www.stathy.com/mysql/ \
+ http://mirror.x10.com/mirror/mysql/ \
+ http://mysql.localhost.net.ar/ \
+ http://mirrors.uol.com.br/pub/mysql/ \
+ http://mysql.vision.cl/ \
+ http://mysql.tecnoera.com/ \
+ http://mysql.mirrors.arminco.com/ \
+ http://mysqlmirror.netandhost.in/ \
+ http://mirror.mysql-partners-jp.biz/ \
+ http://ftp.iij.ad.jp/pub/db/mysql/ \
+ http://mysql.oss.eznetsols.org/ \
+ http://mysql.holywar.net/ \
+ http://mysql.new21.com/ \
+ http://mysql.byungsoo.net/ \
+ http://mysql.isu.edu.tw/ \
+ http://mysql.cdpa.nsysu.edu.tw/ \
+ http://mysql.cs.pu.edu.tw/ \
+ http://ftp.stu.edu.tw/pub/Unix/Database/Mysql/ \
+ http://mysql.ntu.edu.tw/ \
+ http://mysql.planetmirror.com/ \
+ http://mysql.mirrors.ilisys.com.au/ \
+ http://mysql.inspire.net.nz/ \
+ http://mysql.mirror.ac.za/ \
+
+MASTER_SITE_GNOME+= \
+ ftp://ftp.acc.umu.se/pub/GNOME/sources/ \
+ ftp://ftp.rpmfind.net/linux/gnome.org/sources/ \
+ ftp://ftp.unina.it/pub/linux/GNOME/sources/ \
+ ftp://ftp.belnet.be/mirror/ftp.gnome.org/sources/ \
+ ftp://ftp.dit.upm.es/linux/gnome/sources/ \
+ ftp://ftp.dataplus.se/pub/linux/gnome/sources/ \
+ ftp://ftp.cse.buffalo.edu/pub/Gnome/sources/ \
+ ftp://ftp.linux.org.uk/mirrors/ftp.gnome.org/sources/ \
+ ftp://ftp.gnome.org/pub/GNOME/sources/ \
+
diff --git a/mk/modules.mk b/mk/modules.mk
new file mode 100644
index 000000000..5283d1ed7
--- /dev/null
+++ b/mk/modules.mk
@@ -0,0 +1,1254 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+#
+# Ethernet network devices
+#
+$(eval $(call KMOD_template,NE2K_PCI,ne2k-pci,\
+ $(MODULES_DIR)/kernel/drivers/net/8390 \
+ $(MODULES_DIR)/kernel/drivers/net/ne2k-pci \
+,20))
+
+$(eval $(call KMOD_template,E100,e100,\
+ $(MODULES_DIR)/kernel/drivers/net/e100 \
+,20))
+
+$(eval $(call KMOD_template,E1000,e1000,\
+ $(MODULES_DIR)/kernel/drivers/net/e1000/e1000 \
+,20))
+
+#
+# Wireless network devices
+#
+$(eval $(call KMOD_template,MAC80211,mac80211,\
+ $(MODULES_DIR)/kernel/net/wireless/cfg80211 \
+ $(MODULES_DIR)/kernel/net/mac80211/mac80211 \
+,15, kmod-crypto-aes kmod-crypto-arc4 kmod-crypto-ecb kmod-crc32))
+
+$(eval $(call KMOD_template,ATH5K,mac80211-ath5k,\
+ $(MODULES_DIR)/kernel/drivers/net/wireless/ath5k/ath5k \
+,20, kmod-led-class))
+
+$(eval $(call KMOD_template,RT2X00,mac80211-rt2x00,\
+ $(MODULES_DIR)/kernel/drivers/net/wireless/rt2x00/rt2x00lib \
+ $(MODULES_DIR)/kernel/drivers/net/wireless/rt2x00/rt2x00pci \
+,17))
+
+$(eval $(call KMOD_template,RT2400PCI,mac80211-rt2400pci,\
+ $(MODULES_DIR)/kernel/drivers/net/wireless/rt2x00/rt2400pci \
+,20, kmod-led-class kmod-mac80211-rt2x00))
+
+$(eval $(call KMOD_template,RT2500PCI,mac80211-rt2500pci,\
+ $(MODULES_DIR)/kernel/drivers/net/wireless/rt2x00/rt2500pci \
+,20, kmod-led-class kmod-mac80211-rt2x00))
+
+$(eval $(call KMOD_template,RT61PCI,mac80211-rt61pci,\
+ $(MODULES_DIR)/kernel/drivers/net/wireless/rt2x00/rt61pci \
+,20, kmod-led-class kmod-mac80211-rt2x00))
+
+#
+# Networking
+#
+$(eval $(call KMOD_template,ATM,atm,\
+ $(MODULES_DIR)/kernel/net/atm/atm \
+,50))
+
+$(eval $(call KMOD_template,BRIDGE,bridge,\
+ $(MODULES_DIR)/kernel/net/llc/llc \
+ $(MODULES_DIR)/kernel/net/bridge/bridge \
+,10))
+
+$(eval $(call KMOD_template,NET_IPGRE,gre,\
+ $(MODULES_DIR)/kernel/net/ipv4/ip_gre \
+,50))
+
+$(eval $(call KMOD_template,NET_IPIP,ipip,\
+ $(MODULES_DIR)/kernel/net/ipv4/tunnel4 \
+ $(MODULES_DIR)/kernel/net/ipv4/ipip \
+,60))
+
+$(eval $(call KMOD_template,IPV6,ipv6,\
+ $(MODULES_DIR)/kernel/net/ipv6/ipv6 \
+,20))
+
+$(eval $(call KMOD_template,IPV6_SIT,ipv6-sit,\
+ $(MODULES_DIR)/kernel/net/ipv6/sit \
+,25))
+
+$(eval $(call KMOD_template,PPP,ppp,\
+ $(MODULES_DIR)/kernel/drivers/net/slhc \
+ $(MODULES_DIR)/kernel/drivers/net/ppp_generic \
+ $(MODULES_DIR)/kernel/drivers/net/ppp_async \
+ $(MODULES_DIR)/kernel/drivers/net/pppox \
+,50))
+
+$(eval $(call KMOD_template,MPPE,mppe,\
+ $(MODULES_DIR)/kernel/drivers/net/ppp_mppe_mppc \
+,55))
+
+$(eval $(call KMOD_template,PPPOATM,pppoatm,\
+ $(MODULES_DIR)/kernel/net/atm/pppoatm \
+,60))
+
+$(eval $(call KMOD_template,PPPOE,pppoe,\
+ $(MODULES_DIR)/kernel/drivers/net/pppoe \
+,60))
+
+$(eval $(call KMOD_template,TUN,tun,\
+ $(MODULES_DIR)/kernel/drivers/net/tun \
+,20))
+
+$(eval $(call KMOD_template,BONDING,bonding,\
+ $(MODULES_DIR)/kernel/drivers/net/bonding/bonding \
+,20))
+
+#
+# Traffic scheduling
+#
+$(eval $(call KMOD_template,NET_SCH_CBQ,net-sched-cbq,\
+ $(MODULES_DIR)/kernel/net/sched/sch_cbq \
+,40))
+
+$(eval $(call KMOD_template,NET_SCH_HTB,net-sched-htb,\
+ $(MODULES_DIR)/kernel/net/sched/sch_htb \
+,40))
+
+$(eval $(call KMOD_template,NET_SCH_HFSC,net-sched-hfsc,\
+ $(MODULES_DIR)/kernel/net/sched/sch_hfsc \
+,40))
+
+$(eval $(call KMOD_template,NET_SCH_ATM,net-sched-atm,\
+ $(MODULES_DIR)/kernel/net/sched/sch_atm \
+,40))
+
+$(eval $(call KMOD_template,NET_SCH_PRIO,net-sched-prio,\
+ $(MODULES_DIR)/kernel/net/sched/sch_prio \
+,40))
+
+$(eval $(call KMOD_template,NET_SCH_RED,net-sched-red,\
+ $(MODULES_DIR)/kernel/net/sched/sch_red \
+,40))
+
+$(eval $(call KMOD_template,NET_SCH_SFQ,net-sched-sfq,\
+ $(MODULES_DIR)/kernel/net/sched/sch_sfq \
+,40))
+
+# busybox netapps crash, when module loaded
+#$(eval $(call KMOD_template,NET_SCH_TEQL,net-sched-teql,\
+# $(MODULES_DIR)/kernel/net/sched/sch_teql \
+#,40))
+
+$(eval $(call KMOD_template,NET_SCH_TBF,net-sched-tbf,\
+ $(MODULES_DIR)/kernel/net/sched/sch_tbf \
+,40))
+
+$(eval $(call KMOD_template,NET_SCH_GRED,net-sched-gred,\
+ $(MODULES_DIR)/kernel/net/sched/sch_gred \
+,40))
+
+$(eval $(call KMOD_template,NET_SCH_DSMARK,net-sched-dsmark,\
+ $(MODULES_DIR)/kernel/net/sched/sch_dsmark \
+,40))
+
+$(eval $(call KMOD_template,NET_SCH_INGRESS,net-sched-ingress,\
+ $(MODULES_DIR)/kernel/net/sched/sch_ingress \
+,40))
+
+#
+# classifications
+#
+$(eval $(call KMOD_template,NET_CLS_BASIC,net-cls-basic,\
+ $(MODULES_DIR)/kernel/net/sched/cls_basic \
+,40))
+
+$(eval $(call KMOD_template,NET_CLS_TCINDEX,net-cls-tcindex,\
+ $(MODULES_DIR)/kernel/net/sched/cls_tcindex \
+,40))
+
+$(eval $(call KMOD_template,NET_CLS_ROUTE4,net-cls-route,\
+ $(MODULES_DIR)/kernel/net/sched/cls_route \
+,40))
+
+$(eval $(call KMOD_template,NET_CLS_FW,net-cls-fw,\
+ $(MODULES_DIR)/kernel/net/sched/cls_fw \
+,40))
+
+$(eval $(call KMOD_template,NET_CLS_U32,net-cls-u32,\
+ $(MODULES_DIR)/kernel/net/sched/cls_u32 \
+,40))
+
+#
+# actions
+#
+$(eval $(call KMOD_template,NET_ACT_POLICE,net-act-police,\
+ $(MODULES_DIR)/kernel/net/sched/act_police \
+,45))
+
+$(eval $(cal