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 $(call KMOD_template,NET_ACT_GACT,net-act-gact,\
+ $(MODULES_DIR)/kernel/net/sched/act_gact \
+,45))
+
+$(eval $(call KMOD_template,NET_ACT_MIRRED,net-act-mirred,\
+ $(MODULES_DIR)/kernel/net/sched/act_mirred \
+,45))
+
+$(eval $(call KMOD_template,NET_ACT_IPT,net-act-ipt,\
+ $(MODULES_DIR)/kernel/net/sched/act_ipt \
+,45))
+
+$(eval $(call KMOD_template,NET_ACT_PEDIT,net-act-pedit,\
+ $(MODULES_DIR)/kernel/net/sched/act_pedit \
+,45))
+
+##
+## Filtering / Firewalling
+##
+#
+# Netfilter Core
+#
+$(eval $(call KMOD_template,NETFILTER_XT_TARGET_CLASSIFY,nf-classify,\
+ $(MODULES_DIR)/kernel/net/netfilter/xt_CLASSIFY \
+,50))
+
+$(eval $(call KMOD_template,NETFILTER_XT_TARGET_CONNMARK,nf-connmark,\
+ $(MODULES_DIR)/kernel/net/netfilter/xt_CONNMARK \
+,50))
+
+$(eval $(call KMOD_template,NETFILTER_XT_TARGET_MARK,nf-mark,\
+ $(MODULES_DIR)/kernel/net/netfilter/xt_MARK \
+,50))
+
+$(eval $(call KMOD_template,NETFILTER_XT_TARGET_NFQUEUE,nf-queue,\
+ $(MODULES_DIR)/kernel/net/netfilter/xt_NFQUEUE \
+,50))
+
+$(eval $(call KMOD_template,NETFILTER_XT_TARGET_NOTRACK,nf-notrack,\
+ $(MODULES_DIR)/kernel/net/netfilter/xt_NOTRACK \
+,50))
+
+#
+# IP: Netfilter
+#
+$(eval $(call KMOD_template,NF_CONNTRACK,nf-conntrack,\
+ $(MODULES_DIR)/kernel/net/netfilter/nf_conntrack \
+,50))
+
+$(eval $(call KMOD_template,NF_CONNTRACK_IPV4,nf-conntrack-ipv4,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_defrag_ipv4 \
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_conntrack_ipv4 \
+,51))
+
+$(eval $(call KMOD_template,IP_NF_FTP,nf-ip-conntrack-ftp,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_ftp \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_IRC,nf-ip-conntrack-irc,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_irc \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_NETBIOS_NS,nf-ip-conntrack-netbios-ns,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_netbios_ns \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_TFTP,nf-ip-conntrack-tftp,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_tftp \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_AMANDA,nf-ip-conntrack-amanda,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_amanda \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_PPTP,nf-ip-conntrack-pptp,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_pptp \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_H323,nf-ip-conntrack-h323,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_h323 \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_SIP,nf-ip-conntrack-sip,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_sip \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_IPTABLES,nf-ip-iptables,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_tables \
+,50))
+
+$(eval $(call KMOD_template,IP_NF_MATCH_IPRANGE,nf-ip-match-iprange,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_iprange \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_MATCH_TOS,nf-ip-match-tos,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_tos \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_MATCH_RECENT,nf-ip-match-recent,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_recent \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_MATCH_ECN,nf-ip-match-ecn,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_ecn \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_MATCH_AH,nf-ip-match-ah,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_ah \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_MATCH_TTL,nf-ip-match-ttl,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_ttl \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_MATCH_OWNER,nf-ip-match-owner,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_owner \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_MATCH_ADDRTYPE,nf-ip-match-addrtype,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_addrtype \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_MATCH_HASHLIMIT,nf-ip-match-hashlimit,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_hashlimit \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_MATCH_STATE,nf-ip-match-state,\
+ $(MODULES_DIR)/kernel/net/netfilter/xt_state \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_MATCH_MULTIPORT,nf-ip-match-multiport,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_multiport \
+,55))
+
+#
+# Filtering
+#
+$(eval $(call KMOD_template,IP_NF_FILTER,nf-ip-filter,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/iptable_filter \
+,55))
+
+$(eval $(call KMOD_template,IP_NF_TARGET_REJECT,nf-ip-target-reject,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_REJECT \
+,60))
+
+$(eval $(call KMOD_template,IP_NF_TARGET_LOG,nf-ip-target-log,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_LOG \
+,60))
+
+$(eval $(call KMOD_template,IP_NF_TARGET_ULOG,nf-ip-target-ulog,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_ULOG \
+,60))
+
+$(eval $(call KMOD_template,IP_NF_TARGET_TCPMSS,nf-ip-target-tcpmss,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_TCPMSS \
+,60))
+
+$(eval $(call KMOD_template,NF_NAT,nf-nat,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat \
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/iptable_nat \
+,60))
+
+$(eval $(call KMOD_template,IP_NF_PPTP,nf-ip-nat-pptp,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_nat_pptp \
+,65))
+
+$(eval $(call KMOD_template,IP_NF_TFTP,nf-ip-nat-tftp,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_nat_tftp \
+,65))
+
+$(eval $(call KMOD_template,IP_NF_FTP,nf-ip-nat-ftp,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_nat_ftp \
+,65))
+
+$(eval $(call KMOD_template,IP_NF_IRC,nf-ip-nat-irc,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_nat_irc \
+,65))
+
+$(eval $(call KMOD_template,IP_NF_AMANDA,nf-ip-nat-amanda,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_nat_amanda \
+,65))
+
+$(eval $(call KMOD_template,IP_NF_SIP,nf-ip-nat-sip,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_nat_sip \
+,65))
+
+$(eval $(call KMOD_template,IP_NF_H323,nf-ip-nat-h323,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_nat_h323 \
+,65))
+
+$(eval $(call KMOD_template,IP_NF_TARGET_MASQUERADE,nf-ip-target-masquerade,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_MASQUERADE \
+,65))
+
+$(eval $(call KMOD_template,IP_NF_TARGET_REDIRECT,nf-ip-target-redirect,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_REDIRECT \
+,65))
+
+$(eval $(call KMOD_template,IP_NF_TARGET_NETMAP,nf-ip-target-netmap,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_NETMAP \
+,65))
+
+$(eval $(call KMOD_template,IP_NF_TARGET_SAME,nf-ip-target-same,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_SAME \
+,65))
+
+#
+# Mangle
+#
+$(eval $(call KMOD_template,IP_NF_MANGLE,nf-ip-mangle,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/iptable_mangle \
+,60))
+
+$(eval $(call KMOD_template,IP_NF_TARGET_TOS,nf-ip-target-tos,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_TOS \
+,65))
+
+$(eval $(call KMOD_template,IP_NF_TARGET_ECN,nf-ip-target-ecn,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_ECN \
+,65))
+
+$(eval $(call KMOD_template,IP_NF_TARGET_TTL,nf-ip-target-ttl,\
+ $(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_TTL \
+,65))
+
+#
+# IPVS
+#
+
+IPVSPATH=$(MODULES_DIR)/kernel/net/netfilter/ipvs
+
+$(eval $(call KMOD_template,IP_VS,ip-vs,\
+ $(IPVSPATH)/ip_vs \
+,55))
+
+$(eval $(call KMOD_template,IP_VS_RR,ip-vs-rr,\
+ $(IPVSPATH)/ip_vs_rr \
+,55))
+
+$(eval $(call KMOD_template,IP_VS_WRR,ip-vs-wrr,\
+ $(IPVSPATH)/ip_vs_wrr \
+,55))
+
+$(eval $(call KMOD_template,IP_VS_LC,ip-vs-lc,\
+ $(IPVSPATH)/ip_vs_lc \
+,55))
+
+$(eval $(call KMOD_template,IP_VS_WLC,ip-vs-wlc,\
+ $(IPVSPATH)/ip_vs_wlc \
+,55))
+
+$(eval $(call KMOD_template,IP_VS_LBLC,ip-vs-lblc,\
+ $(IPVSPATH)/ip_vs_lblc \
+,55))
+
+$(eval $(call KMOD_template,IP_VS_LBLCR,ip-vs-lblcr,\
+ $(IPVSPATH)/ip_vs_lblcr \
+,55))
+
+$(eval $(call KMOD_template,IP_VS_DH,ip-vs-dh,\
+ $(IPVSPATH)/ip_vs_dh \
+,55))
+
+$(eval $(call KMOD_template,IP_VS_SH,ip-vs-sh,\
+ $(IPVSPATH)/ip_vs_sh \
+,55))
+
+$(eval $(call KMOD_template,IP_VS_SED,ip-vs-sed,\
+ $(IPVSPATH)/ip_vs_sed \
+,55))
+
+$(eval $(call KMOD_template,IP_VS_NQ,ip-vs-nq,\
+ $(IPVSPATH)/ip_vs_nq \
+,55))
+
+$(eval $(call KMOD_template,IP_VS_FTP,ip-vs-ftp,\
+ $(IPVSPATH)/ip_vs_ftp \
+,55))
+
+#
+# Block devices
+#
+$(eval $(call KMOD_template,BLK_DEV_LOOP,loop,\
+ $(MODULES_DIR)/kernel/drivers/block/loop \
+,20))
+
+$(eval $(call KMOD_template,BLK_DEV_NBD,nbd,\
+ $(MODULES_DIR)/kernel/drivers/block/nbd \
+,20))
+
+$(eval $(call KMOD_template,SCSI,scsi,\
+ $(MODULES_DIR)/kernel/drivers/scsi/scsi_wait_scan \
+,20))
+
+$(eval $(call KMOD_template,BLK_DEV_SD,scsi-disk,\
+ $(MODULES_DIR)/kernel/drivers/scsi/sd_mod \
+,25))
+
+$(eval $(call KMOD_template,BLK_DEV_SR,scsi-cdrom,\
+ $(MODULES_DIR)/kernel/drivers/cdrom/cdrom \
+ $(MODULES_DIR)/kernel/drivers/scsi/sr_mod \
+,25))
+
+#
+# RAID
+#
+$(eval $(call KMOD_template,BLK_DEV_MD,md,\
+ $(MODULES_DIR)/kernel/drivers/md/md-mod \
+,30))
+
+$(eval $(call KMOD_template,MD_RAID0,md-raid0,\
+ $(MODULES_DIR)/kernel/drivers/md/raid0 \
+,35))
+
+$(eval $(call KMOD_template,MD_RAID1,md-raid1,\
+ $(MODULES_DIR)/kernel/drivers/md/raid1 \
+,35))
+
+$(eval $(call KMOD_template,MD_RAID456,md-raid456,\
+ $(MODULES_DIR)/kernel/drivers/md/raid456 \
+,35))
+
+#
+# Device Mapper
+#
+$(eval $(call KMOD_template,BLK_DEV_DM,dm-mod,\
+ $(MODULES_DIR)/kernel/drivers/md/dm-mod \
+,35))
+
+$(eval $(call KMOD_template,DM_CRYPT,dm-crypt,\
+ $(MODULES_DIR)/kernel/drivers/md/dm-crypt \
+,40))
+
+$(eval $(call KMOD_template,DM_MIRROR,dm-mirror,\
+ $(MODULES_DIR)/kernel/drivers/md/dm-mirror \
+,40))
+
+$(eval $(call KMOD_template,DM_SNAPSHOT,dm-snapshot,\
+ $(MODULES_DIR)/kernel/drivers/md/dm-snapshot \
+,40))
+
+
+#
+# Crypto
+#
+
+$(eval $(call KMOD_template,CRYPTO_DEV_GEODE,crypto-hw-geode,\
+ $(MODULES_DIR)/kernel/drivers/crypto/geode-aes \
+,10))
+
+$(eval $(call KMOD_template,CRYPTO_ALGAPI,crypto-algapi,\
+ $(MODULES_DIR)/kernel/crypto/crypto_algapi \
+,03))
+
+$(eval $(call KMOD_template,CRYPTO_AEAD,crypto-aead,\
+ $(MODULES_DIR)/kernel/crypto/aead \
+,04))
+
+$(eval $(call KMOD_template,CRYPTO_BLKCIPHER,crypto-blkcipher,\
+ $(MODULES_DIR)/kernel/crypto/crypto_blkcipher \
+ $(MODULES_DIR)/kernel/crypto/rng \
+ $(MODULES_DIR)/kernel/crypto/krng \
+ $(MODULES_DIR)/kernel/crypto/eseqiv \
+ $(MODULES_DIR)/kernel/crypto/chainiv \
+,05))
+
+$(eval $(call KMOD_template,CRYPTO_HASH,crypto-hash,\
+ $(MODULES_DIR)/kernel/crypto/crypto_hash \
+,05))
+
+$(eval $(call KMOD_template,CRYPTO_MANAGER,crypto-manager,\
+ $(MODULES_DIR)/kernel/crypto/cryptomgr \
+,06))
+
+$(eval $(call KMOD_template,CRYPTO_HMAC,crypto-hmac,\
+ $(MODULES_DIR)/kernel/crypto/hmac \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_NULL,crypto-null,\
+ $(MODULES_DIR)/kernel/crypto/crypto_null \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_MD4,crypto-md4,\
+ $(MODULES_DIR)/kernel/crypto/md4 \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_MD5,crypto-md5,\
+ $(MODULES_DIR)/kernel/crypto/md5 \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_SHA1,crypto-sha1,\
+ $(MODULES_DIR)/kernel/crypto/sha1_generic \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_SHA256,crypto-sha256,\
+ $(MODULES_DIR)/kernel/crypto/sha256_generic \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_SHA512,crypto-sha512,\
+ $(MODULES_DIR)/kernel/crypto/sha512_generic \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_WP512,crypto-whirlpool,\
+ $(MODULES_DIR)/kernel/crypto/wp512 \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_TGR192,crypto-tiger,\
+ $(MODULES_DIR)/kernel/crypto/tgr192 \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_ECB,crypto-ecb,\
+ $(MODULES_DIR)/kernel/crypto/ecb \
+,10))
+
+$(eval $(call KMOD_template,CRYPTO_CBC,crypto-cbc,\
+ $(MODULES_DIR)/kernel/crypto/cbc \
+,10))
+
+$(eval $(call KMOD_template,CRYPTO_DES,crypto-des,\
+ $(MODULES_DIR)/kernel/crypto/des_generic \
+,10))
+
+$(eval $(call KMOD_template,CRYPTO_BLOWFISH,crypto-blowfish,\
+ $(MODULES_DIR)/kernel/crypto/blowfish \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_TWOFISH,crypto-twofish,\
+ $(MODULES_DIR)/kernel/crypto/twofish_common \
+ $(MODULES_DIR)/kernel/crypto/twofish \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_TWOFISH_586,crypto-twofish-i586,\
+ $(MODULES_DIR)/kernel/arch/x86/crypto/twofish-i586 \
+,12))
+
+$(eval $(call KMOD_template,CRYPTO_SERPENT,crypto-serpent,\
+ $(MODULES_DIR)/kernel/crypto/serpent \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_AES,crypto-aes,\
+ $(MODULES_DIR)/kernel/crypto/aes_generic \
+,10))
+
+$(eval $(call KMOD_template,CRYPTO_AES_586,crypto-aes-i586,\
+ $(MODULES_DIR)/kernel/arch/x86/crypto/aes-i586 \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_CAST5,crypto-cast5,\
+ $(MODULES_DIR)/kernel/crypto/cast5 \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_CAST6,crypto-cast6,\
+ $(MODULES_DIR)/kernel/crypto/cast6 \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_TEA,crypto-tea,\
+ $(MODULES_DIR)/kernel/crypto/tea \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_ARC4,crypto-arc4,\
+ $(MODULES_DIR)/kernel/crypto/arc4 \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_KHAZAD,crypto-khazad,\
+ $(MODULES_DIR)/kernel/crypto/khazad \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_ANUBIS,crypto-anubis,\
+ $(MODULES_DIR)/kernel/crypto/anubis \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_CAMELLIA,crypto-camellia,\
+ $(MODULES_DIR)/kernel/crypto/camellia \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_FCRYPT,crypto-fcrypt,\
+ $(MODULES_DIR)/kernel/crypto/fcrypt \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_DEFLATE,crypto-deflate,\
+ $(MODULES_DIR)/kernel/crypto/deflate \
+,10))
+
+$(eval $(call KMOD_template,CRYPTO_LZO,crypto-lzo,\
+ $(MODULES_DIR)/kernel/crypto/lzo \
+,10))
+
+$(eval $(call KMOD_template,CRYPTO_MICHAEL_MIC,crypto-michael-mic,\
+ $(MODULES_DIR)/kernel/crypto/michael_mic \
+,11))
+
+$(eval $(call KMOD_template,CRYPTO_CRC32C,crypto-crc32c,\
+ $(MODULES_DIR)/kernel/crypto/crc32c \
+,11))
+
+$(eval $(call KMOD_template,OCF_CRYPTOSOFT,cryptodev-cryptosoft,\
+ ${MODULES_DIR}/kernel/crypto/ocf/cryptosoft \
+,12))
+
+$(eval $(call KMOD_template,OCF_SAFE,cryptodev-safe,\
+ ${MODULES_DIR}/kernel/crypto/ocf/safe/safe \
+,12))
+
+$(eval $(call KMOD_template,OCF_IXP4XX,cryptodev-ixp4xx,\
+ ${MODULES_DIR}/kernel/crypto/ocf/ixp4xx/ixp4xx \
+,12))
+
+$(eval $(call KMOD_template,OCF_HIFN,cryptodev-hifn,\
+ ${MODULES_DIR}/kernel/crypto/ocf/hifn/hifn7751 \
+,12))
+
+$(eval $(call KMOD_template,OCF_TALITOS,cryptodev-talitos,\
+ ${MODULES_DIR}/kernel/crypto/ocf/talitos/talitos \
+,12))
+
+#
+# Filesystems
+#
+$(eval $(call KMOD_template,CIFS,fs-cifs,\
+ $(MODULES_DIR)/kernel/fs/cifs/cifs \
+,30))
+
+$(eval $(call KMOD_template,CODA_FS,fs-coda,\
+ $(MODULES_DIR)/kernel/fs/coda/coda \
+,30))
+
+ifneq ($(ADK_KERNEL_EXT2_FS),y)
+$(eval $(call KMOD_template,EXT2_FS,fs-ext2,\
+ $(MODULES_DIR)/kernel/fs/ext2/ext2 \
+,30))
+endif
+
+$(eval $(call KMOD_template,EXT3_FS,fs-ext3,\
+ $(MODULES_DIR)/kernel/fs/jbd/jbd \
+ $(MODULES_DIR)/kernel/fs/ext3/ext3 \
+,30))
+
+$(eval $(call KMOD_template,FUSE_FS,fs-fuse,\
+ $(MODULES_DIR)/kernel/fs/fuse/fuse \
+,30))
+
+$(eval $(call KMOD_template,HFSPLUS_FS,fs-hfsplus,\
+ $(MODULES_DIR)/kernel/fs/hfsplus/hfsplus \
+,30))
+
+$(eval $(call KMOD_template,SUNRPC,fs-rpc,\
+ $(MODULES_DIR)/kernel/net/sunrpc/sunrpc \
+,24))
+
+$(eval $(call KMOD_template,SUNRPC_GSS,fs-rpcgss,\
+ $(MODULES_DIR)/kernel/net/sunrpc/auth_gss/auth_rpcgss \
+,25))
+
+$(eval $(call KMOD_template,RPCSEC_GSS_KRB5,fs-rpcsec-krb5,\
+ $(MODULES_DIR)/kernel/net/sunrpc/auth_gss/rpcsec_gss_krb5 \
+,26))
+
+ifneq ($(ADK_KERNEL_NFS_FS),y)
+$(eval $(call KMOD_template,NFS_FS,fs-nfs,\
+ $(MODULES_DIR)/kernel/fs/lockd/lockd \
+ $(MODULES_DIR)/kernel/fs/nfs/nfs \
+,30))
+endif
+
+$(eval $(call KMOD_template,EXPORTFS,fs-exportfs,\
+ $(MODULES_DIR)/kernel/fs/exportfs/exportfs \
+,20))
+
+$(eval $(call KMOD_template,NFSD,fs-nfsd,\
+ $(MODULES_DIR)/kernel/fs/nfsd/nfsd \
+,30))
+
+$(eval $(call KMOD_template,NTFS_FS,fs-ntfs,\
+ $(MODULES_DIR)/kernel/fs/ntfs/ntfs \
+,30))
+
+$(eval $(call KMOD_template,VFAT_FS,fs-vfat,\
+ $(MODULES_DIR)/kernel/fs/fat/fat \
+ $(MODULES_DIR)/kernel/fs/fat/vfat \
+,30))
+
+$(eval $(call KMOD_template,XFS_FS,fs-xfs,\
+ $(MODULES_DIR)/kernel/fs/xfs/xfs \
+,30))
+
+$(eval $(call KMOD_template,YAFFS_FS,fs-yaffs,\
+ $(MODULES_DIR)/kernel/fs/yaffs2/yaffs \
+,30))
+
+$(eval $(call KMOD_template,REISERFS_FS,fs-reiserfs,\
+ $(MODULES_DIR)/kernel/fs/reiserfs/reiserfs \
+,30))
+
+$(eval $(call KMOD_template,ISO9660_FS,fs-iso9660,\
+ $(MODULES_DIR)/kernel/fs/isofs/isofs \
+,30))
+
+$(eval $(call KMOD_template,UDF_FS,fs-udf,\
+ $(MODULES_DIR)/kernel/fs/udf/udf \
+,30))
+
+#
+# Multimedia
+#
+$(eval $(call KMOD_template,SOUND,soundcore,\
+ $(MODULES_DIR)/kernel/sound/soundcore \
+,30))
+
+$(eval $(call KMOD_template,SND,sound-alsa,\
+ $(MODULES_DIR)/kernel/sound/core/snd-page-alloc \
+ $(MODULES_DIR)/kernel/sound/core/snd \
+ $(MODULES_DIR)/kernel/sound/core/snd-timer \
+ $(MODULES_DIR)/kernel/sound/core/snd-pcm \
+,40))
+
+$(eval $(call KMOD_template,SND_OSSEMUL,sound-alsa-oss-emul,\
+ $(MODULES_DIR)/kernel/sound/core/oss/snd-mixer-oss \
+ $(MODULES_DIR)/kernel/sound/core/oss/snd-pcm-oss \
+,45))
+
+$(eval $(call KMOD_template,SND_AC97_CODEC,sound-alsa-ac97-codec,\
+ $(MODULES_DIR)/kernel/sound/ac97_bus \
+ $(MODULES_DIR)/kernel/sound/pci/ac97/snd-ac97-codec \
+,50))
+
+$(eval $(call KMOD_template,SND_VIA82XX,sound-alsa-via82xx,\
+ $(MODULES_DIR)/kernel/sound/drivers/mpu401/snd-mpu401-uart \
+ $(MODULES_DIR)/kernel/sound/pci/snd-via82xx \
+,55))
+
+$(eval $(call KMOD_template,SND_CS5535AUDIO,sound-alsa-cs5535,\
+ $(MODULES_DIR)/kernel/sound/pci/cs5535audio/snd-cs5535audio \
+,55))
+
+$(eval $(call KMOD_template,VIDEODEV,videodev,\
+ $(MODULES_DIR)/kernel/drivers/media/video/videodev \
+,65))
+
+$(eval $(call KMOD_template,PWC,pwc,\
+ $(MODULES_DIR)/kernel/drivers/usb/pwc \
+,70))
+
+
+#
+# PCMCIA/CardBus
+#
+
+$(eval $(call KMOD_template,PCCARD,pccard,\
+ $(MODULES_DIR)/kernel/drivers/pcmcia/pcmcia_core \
+,40))
+
+$(eval $(call KMOD_template,PCMCIA,pcmcia,\
+ $(MODULES_DIR)/kernel/drivers/pcmcia/pcmcia \
+,50))
+
+$(eval $(call KMOD_template,CARDBUS,cardbus,\
+ $(MODULES_DIR)/kernel/drivers/pcmcia/rsrc_nonstatic \
+ $(MODULES_DIR)/kernel/drivers/pcmcia/yenta_socket \
+,50))
+
+$(eval $(call KMOD_template,PCMCIA_SERIAL_CS,pcmcia-serial,\
+ $(MODULES_DIR)/kernel/drivers/serial/serial_cs \
+,55))
+
+#
+# Input
+#
+
+$(eval $(call KMOD_template,KEYBOARD_ATKBD,input-keyboard,\
+ $(MODULES_DIR)/kernel/drivers/input/keyboard/atkbd \
+,45))
+
+$(eval $(call KMOD_template,INPUT_MOUSEDEV,input-mouse,\
+ $(MODULES_DIR)/kernel/drivers/input/mousedev \
+,45))
+
+#
+# USB
+#
+USB_CORE_MODULE = drivers/usb/core/usbcore
+USB_OHCI_MODULE = drivers/usb/host/ohci-hcd
+USB_UHCI_MODULE = drivers/usb/host/uhci-hcd
+USB_OHCI_SYMBOL = USB_OHCI_HCD
+USB_UHCI_SYMBOL = USB_UHCI_HCD
+
+ifeq ($(ADK_LINUX_CRIS_FOXBOARD),)
+$(eval $(call KMOD_template,USB,usb-core,\
+ $(MODULES_DIR)/kernel/$(USB_CORE_MODULE) \
+,50))
+endif
+
+$(eval $(call KMOD_template,$(USB_OHCI_SYMBOL),usb-ohci,\
+ $(MODULES_DIR)/kernel/$(USB_OHCI_MODULE) \
+,60))
+
+$(eval $(call KMOD_template,$(USB_UHCI_SYMBOL),usb-uhci,\
+ $(MODULES_DIR)/kernel/$(USB_UHCI_MODULE) \
+,60))
+
+$(eval $(call KMOD_template,USB_EHCI_HCD,usb-ehci,\
+ $(MODULES_DIR)/kernel/drivers/usb/host/ehci-hcd \
+,60))
+
+USB_ACM_MODULES = drivers/usb/class/cdc-acm
+USB_PRINTER_MODULES = drivers/usb/class/usblp
+
+$(eval $(call KMOD_template,USB_ACM,usb-acm,\
+ $(foreach mod,$(USB_ACM_MODULES),$(MODULES_DIR)/kernel/$(mod)) \
+,70))
+
+$(eval $(call KMOD_template,USB_HID,usb-hid,\
+ $(MODULES_DIR)/kernel/drivers/hid/usbhid/usbhid \
+,60))
+
+$(eval $(call KMOD_template,USB_PRINTER,usb-printer,\
+ $(foreach mod,$(USB_PRINTER_MODULES),$(MODULES_DIR)/kernel/$(mod)) \
+,60))
+
+$(eval $(call KMOD_template,USB_SERIAL,usb-serial,\
+ $(MODULES_DIR)/kernel/drivers/usb/serial/usbserial \
+,60))
+
+$(eval $(call KMOD_template,USB_SERIAL_BELKIN,usb-serial-belkin,\
+ $(MODULES_DIR)/kernel/drivers/usb/serial/belkin_sa \
+,61))
+
+$(eval $(call KMOD_template,USB_SERIAL_FTDI_SIO,usb-serial-ftdi,\
+ $(MODULES_DIR)/kernel/drivers/usb/serial/ftdi_sio \
+,61))
+
+$(eval $(call KMOD_template,USB_SERIAL_MCT_U232,usb-serial-mct-u232,\
+ $(MODULES_DIR)/kernel/drivers/usb/serial/mct_u232 \
+,61))
+
+$(eval $(call KMOD_template,USB_SERIAL_PL2303,usb-serial-pl2303,\
+ $(MODULES_DIR)/kernel/drivers/usb/serial/pl2303 \
+,61))
+
+$(eval $(call KMOD_template,USB_SERIAL_VISOR,usb-serial-visor,\
+ $(MODULES_DIR)/kernel/drivers/usb/serial/visor \
+,61))
+
+$(eval $(call KMOD_template,USB_STORAGE,usb-storage,\
+ $(MODULES_DIR)/kernel/drivers/usb/storage/usb-storage \
+,65))
+
+$(eval $(call KMOD_template,USB_PEGASUS,usb-pegasus,\
+ $(MODULES_DIR)/kernel/drivers/net/usb/pegasus \
+,65))
+
+#
+# Bluetooth
+#
+BLUETOOTH_PREFIX = BT
+BLUETOOTH = bluetooth
+
+$(eval $(call KMOD_template,$(BLUETOOTH_PREFIX),bluetooth,\
+ $(MODULES_DIR)/kernel/net/bluetooth/$(BLUETOOTH) \
+,70))
+
+$(eval $(call KMOD_template,$(BLUETOOTH_PREFIX)_HCIUSB,bluetooth-hci-usb,\
+ $(MODULES_DIR)/kernel/drivers/bluetooth/hci_usb \
+,75))
+
+$(eval $(call KMOD_template,$(BLUETOOTH_PREFIX)_HCIUART,bluetooth-hci-uart,\
+ $(MODULES_DIR)/kernel/drivers/bluetooth/hci_uart \
+,75))
+
+$(eval $(call KMOD_template,$(BLUETOOTH_PREFIX)_L2CAP,bluetooth-l2cap,\
+ $(MODULES_DIR)/kernel/net/bluetooth/l2cap \
+,80))
+
+$(eval $(call KMOD_template,$(BLUETOOTH_PREFIX)_SCO,bluetooth-sco,\
+ $(MODULES_DIR)/kernel/net/bluetooth/sco \
+,85))
+
+$(eval $(call KMOD_template,$(BLUETOOTH_PREFIX)_BNEP,bluetooth-bnep,\
+ $(MODULES_DIR)/kernel/net/bluetooth/bnep/bnep \
+,85))
+
+$(eval $(call KMOD_template,$(BLUETOOTH_PREFIX)_RFCOMM,bluetooth-rfcomm,\
+ $(MODULES_DIR)/kernel/net/bluetooth/rfcomm/rfcomm \
+,85))
+
+#
+# Misc devices
+#
+SOFTDOG_MODULES = drivers/char/watchdog/softdog
+
+$(eval $(call KMOD_template,SOFTDOG,softdog,\
+ $(foreach mod,$(SOFTDOG_MODULES),$(MODULES_DIR)/kernel/$(mod)) \
+,95))
+
+$(eval $(call KMOD_template,FW_LOADER,fw-loader,\
+ $(MODULES_DIR)/kernel/drivers/base/firmware_class \
+,01))
+
+$(eval $(call KMOD_template,EEPROM_93CX6,eeprom-93cx6,\
+ $(MODULES_DIR)/kernel/drivers/misc/eeprom/eeprom_93cx6 \
+,05))
+
+$(eval $(call KMOD_template,LEDS_CLASS,led-class,\
+ $(MODULES_DIR)/kernel/drivers/leds/led-class \
+,05))
+
+#
+# NLS
+#
+$(eval $(call KMOD_template,NLS,nls-base,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_base \
+,10))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_437,nls-cp437,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp437 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_737,nls-cp737,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp737 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_775,nls-cp775,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp775 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_850,nls-cp850,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp850 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_852,nls-cp852,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp852 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_857,nls-cp857,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp857 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_860,nls-cp860,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp860 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_861,nls-cp861,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp861 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_862,nls-cp862,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp862 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_863,nls-cp863,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp863 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_864,nls-cp864,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp864 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_865,nls-cp865,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp865 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_866,nls-cp866,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp866 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_869,nls-cp869,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp869 \
+,20))
+
+NLS_CODEPAGE_874_MODULES := fs/nls/nls_cp874
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_874,nls-cp874,\
+ $(foreach mod,$(NLS_CODEPAGE_874_MODULES),$(MODULES_DIR)/kernel/$(mod)) \
+,20))
+
+NLS_CODEPAGE_932_MODULES := fs/nls/nls_cp932
+NLS_CODEPAGE_932_MODULES += fs/nls/nls_euc-jp
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_932,nls-cp932,\
+ $(foreach mod,$(NLS_CODEPAGE_932_MODULES),$(MODULES_DIR)/kernel/$(mod)) \
+,20))
+
+NLS_CODEPAGE_936_MODULES := fs/nls/nls_cp936
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_936,nls-cp936,\
+ $(foreach mod,$(NLS_CODEPAGE_936_MODULES),$(MODULES_DIR)/kernel/$(mod)) \
+,20))
+
+NLS_CODEPAGE_949_MODULES := fs/nls/nls_cp949
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_949,nls-cp949,\
+ $(foreach mod,$(NLS_CODEPAGE_949_MODULES),$(MODULES_DIR)/kernel/$(mod)) \
+,20))
+
+NLS_CODEPAGE_950_MODULES := fs/nls/nls_cp950
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_950,nls-cp950,\
+ $(foreach mod,$(NLS_CODEPAGE_950_MODULES),$(MODULES_DIR)/kernel/$(mod)) \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_1250,nls-cp1250,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp1250 \
+,20))
+
+$(eval $(call KMOD_template,NLS_CODEPAGE_1251,nls-cp1251,\
+ $(MODULES_DIR)/kernel/fs/nls/nls_cp1251 \
+,20))
+
+$(eval $(call KMOD_template,NLS_ASCII,nls-ascii, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_ascii \
+,20))
+
+$(eval $(call KMOD_template,NLS_ISO8859_1,nls-iso8859-1, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_iso8859-1 \
+,20))
+
+$(eval $(call KMOD_template,NLS_ISO8859_2,nls-iso8859-2, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_iso8859-2 \
+,20))
+
+$(eval $(call KMOD_template,NLS_ISO8859_3,nls-iso8859-3, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_iso8859-3 \
+,20))
+
+$(eval $(call KMOD_template,NLS_ISO8859_4,nls-iso8859-4, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_iso8859-4 \
+,20))
+
+$(eval $(call KMOD_template,NLS_ISO8859_5,nls-iso8859-5, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_iso8859-5 \
+,20))
+
+$(eval $(call KMOD_template,NLS_ISO8859_6,nls-iso8859-6, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_iso8859-6 \
+,20))
+
+$(eval $(call KMOD_template,NLS_ISO8859_7,nls-iso8859-7, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_iso8859-7 \
+,20))
+
+NLS_ISO8859_8_MODULES := fs/nls/nls_cp1255
+
+$(eval $(call KMOD_template,NLS_ISO8859_8,nls-iso8859-8, \
+ $(foreach mod,$(NLS_ISO8859_8_MODULES),$(MODULES_DIR)/kernel/$(mod)) \
+,20))
+
+$(eval $(call KMOD_template,NLS_ISO8859_9,nls-iso8859-9, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_iso8859-9 \
+,20))
+
+$(eval $(call KMOD_template,NLS_ISO8859_13,nls-iso8859-13, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_iso8859-13 \
+,20))
+
+$(eval $(call KMOD_template,NLS_ISO8859_14,nls-iso8859-14, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_iso8859-14 \
+,20))
+
+$(eval $(call KMOD_template,NLS_ISO8859_15,nls-iso8859-15, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_iso8859-15 \
+,20))
+
+$(eval $(call KMOD_template,NLS_KOI8_R,nls-koi8-r, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_koi8-r \
+,20))
+
+$(eval $(call KMOD_template,NLS_KOI8_U,nls-koi8-u, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_koi8-u \
+ $(MODULES_DIR)/kernel/fs/nls/nls_koi8-ru \
+,20))
+
+$(eval $(call KMOD_template,NLS_UTF8,nls-utf8, \
+ $(MODULES_DIR)/kernel/fs/nls/nls_utf8 \
+,20))
+
+# ISDN
+ISDN_MODULES=drivers/isdn/i4l/isdn
+
+$(eval $(call KMOD_template,ISDN,isdn, \
+ $(foreach mod,$(ISDN_MODULES),$(MODULES_DIR)/kernel/$(mod)) \
+,60))
+
+$(eval $(call KMOD_template,ISDN_CAPI,isdn-capi, \
+ $(MODULES_DIR)/kernel/drivers/isdn/capi/kernelcapi \
+ $(MODULES_DIR)/kernel/drivers/isdn/capi/capi \
+,60))
+
+$(eval $(call KMOD_template,SLHC,slhc, \
+ $(MODULES_DIR)/kernel/drivers/net/slhc \
+,65))
+
+$(eval $(call KMOD_template,HISAX,hisax, \
+ $(MODULES_DIR)/kernel/drivers/isdn/hisax/hisax \
+,70))
+
+MISDN_MODULES=drivers/isdn/hardware/mISDN/mISDN_core
+MISDN_MODULES+=drivers/isdn/hardware/mISDN/mISDN_l1
+MISDN_MODULES+=drivers/isdn/hardware/mISDN/mISDN_l2
+MISDN_MODULES+=drivers/isdn/hardware/mISDN/mISDN_dsp
+MISDN_MODULES+=drivers/isdn/hardware/mISDN/mISDN_dtmf
+MISDN_MODULES+=drivers/isdn/hardware/mISDN/mISDN_isac
+MISDN_MODULES+=drivers/isdn/hardware/mISDN/mISDN_x25dte
+MISDN_MODULES+=drivers/isdn/hardware/mISDN/l3udss1
+
+$(eval $(call KMOD_template,MISDN_DRV,misdn, \
+ $(foreach mod, $(MISDN_MODULES),$(MODULES_DIR)/kernel/$(mod)) \
+,75))
+
+$(eval $(call KMOD_template,MISDN_AVM_FRITZ,misdn-avm, \
+ $(MODULES_DIR)/kernel/drivers/isdn/hardware/mISDN/avmfritz \
+,80))
+
+$(eval $(call KMOD_template,MISDN_HFCPCI,misdn-hfc-pci, \
+ $(MODULES_DIR)/kernel/drivers/isdn/hardware/mISDN/hfcpci \
+,80))
+
+$(eval $(call KMOD_template,MISDN_HFCMULTI,misdn-hfc-multi, \
+ $(MODULES_DIR)/kernel/drivers/isdn/hardware/mISDN/hfcmulti \
+,80))
+
+$(eval $(call KMOD_template,MISDN_HFCMINI,misdn-hfc-minipci, \
+ $(MODULES_DIR)/kernel/drivers/isdn/hardware/mISDN/hfcsmini \
+,80))
+
+$(eval $(call KMOD_template,MISDN_XHFC,misdn-xhfc, \
+ $(MODULES_DIR)/kernel/drivers/isdn/hardware/mISDN/xhfc \
+,80))
+
+$(eval $(call KMOD_template,MISDN_SPEEDFAX,misdn-speedfax, \
+ $(MODULES_DIR)/kernel/drivers/isdn/hardware/mISDN/sedlfax \
+,80))
+
+# Library modules
+$(eval $(call KMOD_template,CRC_CCITT,crc-ccitt, \
+ $(MODULES_DIR)/kernel/lib/crc-ccitt \
+,01))
+
+$(eval $(call KMOD_template,CRC_ITU_T,crc-itu-t, \
+ $(MODULES_DIR)/kernel/lib/crc-itu-t \
+,01))
+
+$(eval $(call KMOD_template,CRC32,crc32, \
+ $(MODULES_DIR)/kernel/lib/crc32 \
+,01))
+
+$(eval $(call KMOD_template,LIBCRC32C,libcrc32c, \
+ $(MODULES_DIR)/kernel/lib/libcrc32c \
+,01))
+
+#
+# parallel port support
+
+$(eval $(call KMOD_template,LP,lp,\
+ $(MODULES_DIR)/kernel/drivers/char/lp \
+,60))
+
+$(eval $(call KMOD_template,PPDEV,ppdev,\
+ $(MODULES_DIR)/kernel/drivers/char/ppdev \
+,60))
+
+$(eval $(call KMOD_template,PARPORT,parport,\
+ $(MODULES_DIR)/kernel/drivers/parport/parport \
+,50))
+
+$(eval $(call KMOD_template,PLIP,plip,\
+ $(MODULES_DIR)/kernel/drivers/net/plip \
+,51))
diff --git a/mk/package.mk b/mk/package.mk
new file mode 100644
index 000000000..8b5d547b8
--- /dev/null
+++ b/mk/package.mk
@@ -0,0 +1,212 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+all: build-all-ipkgs
+
+TCFLAGS:= ${TARGET_CFLAGS}
+TCXXFLAGS:= ${TARGET_CFLAGS}
+TCPPFLAGS:= ${TARGET_CPPFLAGS}
+ifneq ($(DEBUG),1)
+TCPPFLAGS+= -DNDEBUG
+endif
+TLDFLAGS:= ${TARGET_LDFLAGS} -Wl,-rpath -Wl,/usr/lib \
+ -Wl,-rpath-link -Wl,${STAGING_DIR}/usr/lib \
+ -L${STAGING_DIR}/lib -L${STAGING_DIR}/usr/lib
+ifeq ($(DEBUG),1)
+CONFIGURE_ARGS+= --enable-debug
+else
+CONFIGURE_ARGS+= --disable-debug
+endif
+ifeq ($(ADK_IPV6),y)
+CONFIGURE_ARGS+= --enable-ipv6
+else
+CONFIGURE_ARGS+= --disable-ipv6
+endif
+CONFIGURE_ENV+= ${TARGET_CONFIGURE_OPTS} \
+ ${HOST_CONFIGURE_OPTS} \
+ CC='${TARGET_CC}' CXX='${TARGET_CXX}' \
+ CFLAGS='$(strip ${TCFLAGS})' \
+ CXXFLAGS='$(strip ${TCXXFLAGS})' \
+ CPPFLAGS='$(strip ${TCPPFLAGS})' \
+ LDFLAGS='$(strip ${TLDFLAGS})' \
+ PKG_CONFIG_PATH='${STAGING_DIR}/usr/lib/pkgconfig' \
+ PKG_CONFIG_LIBDIR=/dev/null \
+ CONFIG_SHELL='$(strip ${SHELL})' \
+ ac_cv_func_realloc_0_nonnull=yes \
+ ac_cv_func_malloc_0_nonnull=yes
+MAKE_FILE?= Makefile
+# this is environment for 'make all' and 'make install'
+MAKE_ENV?=
+# this is arguments for 'make all' and 'make install'
+XAKE_FLAGS?=
+# this is arguments for 'make all' ONLY
+MAKE_FLAGS?=
+# this is arguments for 'make install' ONLY
+FAKE_FLAGS?=
+ALL_TARGET?= all
+INSTALL_TARGET?= install
+MAKE_ENV+= PATH='${TARGET_PATH}' \
+ ${HOST_CONFIGURE_OPTS} \
+ WRKDIR='${WRKDIR}' WRKDIST='${WRKDIST}' \
+ WRKSRC='${WRKSRC}' WRKBUILD='${WRKBUILD}' \
+ PKG_CONFIG_PATH='${STAGING_DIR}/usr/lib/pkgconfig' \
+ PKG_CONFIG_LIBDIR=/dev/null \
+ CC='${TARGET_CC}' CXX='${TARGET_CXX}' \
+ AR='${TARGET_CROSS}ar' RANLIB='${TARGET_CROSS}ranlib' \
+ NM='${TARGET_CROSS}nm' \
+ CFLAGS='$(strip ${TCFLAGS})' \
+ CXXFLAGS='$(strip ${TCXXFLAGS})' \
+ CPPFLAGS='$(strip ${TCPPFLAGS})' \
+ LDFLAGS='$(strip ${TLDFLAGS})'
+MAKE_FLAGS+= ${XAKE_FLAGS}
+FAKE_FLAGS+= ${XAKE_FLAGS}
+
+ifeq ($(strip ${WRKDIR_BSD}),)
+WRKDIR_BASE:= ${BUILD_DIR}
+else
+WRKDIR_BASE:= $(shell pwd)
+endif
+
+_EXTRACT_COOKIE= ${WRKDIST}/.extract_done
+_PATCH_COOKIE= ${WRKDIST}/.prepared
+_CONFIGURE_COOKIE= ${WRKBUILD}/.configure_done
+_BUILD_COOKIE= ${WRKBUILD}/.build_done
+_FAKE_COOKIE= ${WRKINST}/.fake_done
+_IPKGS_COOKIE= ${PACKAGE_DIR}/.stamps/${PKG_NAME}${PKG_VERSION}-${PKG_RELEASE}
+
+_IN_PACKAGE:= 1
+include ${TOPDIR}/mk/buildhlp.mk
+-include info.mk
+
+# defined in buildhlp.mk ('extract' can fail, use 'patch' then)
+extract: ${_EXTRACT_COOKIE}
+patch: ${_PATCH_COOKIE}
+
+# defined below (will be moved to pkg-bottom.mk!)
+configure: ${_CONFIGURE_COOKIE}
+build: ${_BUILD_COOKIE}
+fake: ${_FAKE_COOKIE}
+
+# our recursive build entry point
+build-all-ipkgs: ${_IPKGS_COOKIE}
+
+define PKG_template
+IPKG_$(1)= $(PACKAGE_DIR)/$(2)_$(3)_$(4).ipk
+IDIR_$(1)= $(WRKDIR)/fake-${ARCH}/ipkg-$(2)
+ifneq (${ADK_PACKAGE_$(1)}${DEVELOPER},)
+ALL_IPKGS+= $$(IPKG_$(1))
+ALL_IDIRS+= $${IDIR_$(1)}
+endif
+INFO_$(1)= $(IPKG_STATE_DIR)/info/$(2).list
+
+ifeq ($(ADK_PACKAGE_$(1)),y)
+install-targets: $$(INFO_$(1))
+endif
+
+IDEPEND_$(1):= $$(strip $(5))
+
+_ALL_CONTROLS+= $$(IDIR_$(1))/CONTROL/control
+ICONTROL_$(1)?= ipkg/$(2).control
+$$(IDIR_$(1))/CONTROL/control: ${_PATCH_COOKIE}
+ ${BASH} ${SCRIPT_DIR}/make-ipkg-dir.sh $${IDIR_$(1)} $${ICONTROL_$(1)} $(3) $(4)
+ @adeps='$$(strip $${IDEPEND_$(1)})'; if [[ -n $$$$adeps ]]; then \
+ comma=; \
+ deps=; \
+ last=; \
+ for dep in $$$$adeps; do \
+ if [[ $$$$last = kernel && $$$$dep = \(* ]]; then \
+ deps="$$$$deps $$$$dep"; \
+ else \
+ deps="$$$$deps$$$$comma$$$$dep"; \
+ fi; \
+ comma=", "; \
+ last=$$$$dep; \
+ done; \
+ echo "Depends: $$$$deps" >>$${IDIR_$(1)}/CONTROL/control; \
+ fi
+ for file in conffiles preinst postinst prerm postrm; do \
+ [ ! -f ./ipkg/$(2).$$$$file ] || cp ./ipkg/$(2).$$$$file $$(IDIR_$(1))/CONTROL/$$$$file; \
+ done
+ifneq ($(strip $${ICONTROL_ADDON_$(1)}),)
+ echo $${ICONTROL_ADDON_$(1)} >> $${IDIR_$(1)}/CONTROL/control
+endif
+
+$$(IPKG_$(1)): $$(IDIR_$(1))/CONTROL/control $${_FAKE_COOKIE}
+ifneq ($(DEBUG),1)
+ $${RSTRIP} $${IDIR_$(1)} $(MAKE_TRACE)
+endif
+ cd $${IDIR_$(1)}; for script in etc/init.d/*; do \
+ [[ -e $$$$script ]] || continue; \
+ chmod 0755 "$$$$script"; \
+ done
+ @mkdir -p $${PACKAGE_DIR} '$${STAGING_PARENT}/pkg' \
+ '$${STAGING_DIR}/scripts'
+ @if test -s '$${STAGING_PARENT}/pkg/$(1)'; then \
+ cd '$${STAGING_DIR}'; \
+ while read fn; do \
+ rm -f "$$$$fn"; \
+ done <'$${STAGING_PARENT}/pkg/$(1)'; \
+ fi
+ @rm -f '$${STAGING_PARENT}/pkg/$(1)'
+ @cd $${IDIR_$(1)}; \
+ x=$$$$(find tmp var -mindepth 1 2>/dev/null); if [[ -n $$$$x ]]; then \
+ echo 'WARNING: $${IPKG_$(1)} installs files into a' \
+ 'ramdisk location:' >&2; \
+ echo "$$$$x" | sed 's/^/- /' >&2; \
+ fi; \
+ if [ "${PKG_NAME}" != "uClibc" -a "${PKG_NAME}" != "glibc" -a "${PKG_NAME}" != "libpthread" -a "${PKG_NAME}" != "libstdcxx" -a "${PKG_NAME}" != "libthread-db" ];then \
+ find lib \( -name lib\*.so\* -o -name lib\*.a \) \
+ -exec echo 'WARNING: $${IPKG_$(1)} installs files in /lib -' \
+ ' fix this!' >&2 \; -quit 2>/dev/null; fi; \
+ find usr ! -type d 2>/dev/null | \
+ grep -v -e '^usr/share' -e '^usr/man' -e '^usr/info' | \
+ tee '$${STAGING_PARENT}/pkg/$(1)' | \
+ cpio -apdlmu --quiet '$${STAGING_DIR}'
+ @cd '$${STAGING_DIR}'; grep 'usr/lib/.*\.la$$$$' \
+ '$${STAGING_PARENT}/pkg/$(1)' | while read fn; do \
+ chmod u+w $$$$fn; \
+ printf '%s\nwq\n' '/^libdir='\''*/s##&${STAGING_DIR}#' | \
+ ed -s $$$$fn; \
+ done; grep 'usr/s*bin/' '$${STAGING_PARENT}/pkg/$(1)' | \
+ while read fn; do \
+ b="$$$$(dd if="$$$$fn" bs=2 count=1 2>/dev/null)"; \
+ [[ $$$$b = '#!' ]] || continue; \
+ cp "$$$$fn" scripts/; \
+ echo "scripts/$$$$(basename "$$$$fn")" \
+ >>'$${STAGING_PARENT}/pkg/$(1)'; \
+ done
+ $${IPKG_BUILD} $${IDIR_$(1)} $${PACKAGE_DIR} $(MAKE_TRACE)
+
+clean-targets: clean-dev-$(1)
+
+clean-dev-$(1):
+ @if test -s '$${STAGING_PARENT}/pkg/$(1)'; then \
+ cd '$${STAGING_DIR}'; \
+ while read fn; do \
+ rm -f "$$$$fn"; \
+ done <'$${STAGING_PARENT}/pkg/$(1)'; \
+ fi
+ @rm -f '$${STAGING_PARENT}/pkg/$(1)'
+
+$$(INFO_$(1)): $$(IPKG_$(1))
+ $(IPKG) install $$(IPKG_$(1))
+endef
+
+install-targets:
+install:
+ @$(CMD_TRACE) "installing... "
+ @$(MAKE) install-targets $(MAKE_TRACE)
+
+clean-targets:
+clean:
+ @$(CMD_TRACE) "cleaning... "
+ @$(MAKE) clean-targets $(MAKE_TRACE)
+ rm -rf ${WRKDIR} ${ALL_IPKGS} ${PACKAGE_DIR}/.stamps/${PKG_NAME}*
+
+distclean: clean
+ rm -f ${FULLDISTFILES}
+
+.PHONY: all refetch extract patch configure \
+ build fake package install clean build-all-ipkgs
diff --git a/mk/pkg-bottom.mk b/mk/pkg-bottom.mk
new file mode 100644
index 000000000..c5ac91df3
--- /dev/null
+++ b/mk/pkg-bottom.mk
@@ -0,0 +1,212 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+#-
+# Comments:
+# * pre/do/post-foo are always defined here, but empty. This is so
+# that we can call it (BSD make has .if target(foo) but GNU not)
+# and it won't error out.
+# * ${_foo_COOKIE} are the actual targets
+# * default is "manual" -> define a do-foo: target in the Makefile
+# * if you have a style -> define a pre-foo: and post-foo: if they
+# are required, but the do-foo: magic is done here
+# * we want to use styles (configure:gnu, build/install:auto), for
+# making the Makefiles of the packages more clear
+
+#--- configure
+pre-configure:
+do-configure:
+post-configure:
+${_CONFIGURE_COOKIE}: ${_PATCH_COOKIE}
+ mkdir -p ${WRKBUILD}
+ @${MAKE} pre-configure $(MAKE_TRACE)
+
+ifneq ($(filter autotool,${CONFIGURE_STYLE}),)
+ cd ${WRKBUILD}; \
+ autoreconf -vif $(MAKE_TRACE)
+endif
+ifneq ($(filter autoconf,${CONFIGURE_STYLE}),)
+ cd ${WRKBUILD}; \
+ autoconf $(MAKE_TRACE)
+endif
+ifneq ($(filter gnu,${CONFIGURE_STYLE}),)
+ @$(CMD_TRACE) "configuring... "
+ @cd ${WRKBUILD}; \
+ for i in $$(find . -name config.sub);do \
+ if [ -f $$i ]; then \
+ ${CP} $$i $$i.bak; \
+ ${CP} ${SCRIPT_DIR}/config.sub $$i; \
+ fi; \
+ done; \
+ for i in $$(find . -name config.guess);do \
+ if [ -f $$i ]; then \
+ ${CP} $$i $$i.bak; \
+ ${CP} ${SCRIPT_DIR}/config.guess $$i; \
+ fi; \
+ done;
+ cd ${WRKBUILD}; rm -f config.{cache,status}; \
+ env ${CONFIGURE_ENV} \
+ ${BASH} ${WRKSRC}/configure \
+ --build=${GNU_HOST_NAME} \
+ --host=${GNU_TARGET_NAME} \
+ --target=${GNU_TARGET_NAME} \
+ --program-prefix= \
+ --program-suffix= \
+ --prefix=/usr \
+ --datadir=/usr/share \
+ --mandir=/usr/share/man \
+ --libexecdir=/usr/sbin \
+ --localstatedir=/var \
+ --sysconfdir=/etc \
+ --disable-nls \
+ --enable-shared \
+ --enable-static \
+ --disable-dependency-tracking \
+ --disable-libtool-lock \
+ ${CONFIGURE_ARGS} $(MAKE_TRACE)
+else ifeq ($(filter-out manual,${CONFIGURE_STYLE}),)
+ env ${CONFIGURE_ENV} ${MAKE} do-configure $(MAKE_TRACE)
+else
+ @echo "Invalid CONFIGURE_STYLE '${CONFIGURE_STYLE}'" >&2
+ @exit 1
+endif
+ @${MAKE} post-configure $(MAKE_TRACE)
+ touch $@
+
+#--- build
+pre-build:
+do-build:
+post-build:
+${_BUILD_COOKIE}: ${_CONFIGURE_COOKIE}
+ @env ${MAKE_ENV} ${MAKE} pre-build $(MAKE_TRACE)
+ @$(CMD_TRACE) "compiling... "
+ifneq ($(filter auto,${BUILD_STYLE}),)
+ cd ${WRKBUILD} && env ${MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \
+ ${MAKEJOBS} ${MAKE_FLAGS} ${ALL_TARGET} $(MAKE_TRACE)
+else ifneq ($(filter manual,${BUILD_STYLE}),)
+ env ${MAKE_ENV} ${MAKE} do-build $(MAKE_TRACE)
+else ifeq ($(strip ${BUILD_STYLE}),)
+ env ${MAKE_ENV} ${MAKE} do-build $(MAKE_TRACE)
+else
+ @echo "Invalid BUILD_STYLE '${BUILD_STYLE}'" >&2
+ @exit 1
+endif
+ @env ${MAKE_ENV} ${MAKE} post-build $(MAKE_TRACE)
+ touch $@
+
+#--- fake
+pre-install:
+do-install:
+post-install:
+${_FAKE_COOKIE}: ${_BUILD_COOKIE}
+ -rm -f ${_ALL_CONTROLS}
+ @mkdir -p '${STAGING_PARENT}/pkg' ${WRKINST} '${STAGING_DIR}/scripts'
+ @${MAKE} ${_ALL_CONTROLS} $(MAKE_TRACE)
+ @env ${MAKE_ENV} ${MAKE} pre-install $(MAKE_TRACE)
+ifneq ($(filter auto,${INSTALL_STYLE}),)
+ cd ${WRKBUILD} && env ${MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \
+ DESTDIR='${WRKINST}' ${FAKE_FLAGS} ${INSTALL_TARGET} $(MAKE_TRACE)
+else ifneq ($(filter manual,${INSTALL_STYLE}),)
+ env ${MAKE_ENV} ${MAKE} do-install $(MAKE_TRACE)
+else ifeq ($(strip ${INSTALL_STYLE}),)
+ env ${MAKE_ENV} ${MAKE} do-install $(MAKE_TRACE)
+else
+ @echo "Invalid INSTALL_STYLE '${INSTALL_STYLE}'" >&2
+ @exit 1
+endif
+ifneq ($(filter confprog,${INSTALL_STYLE}),)
+ for a in ${WRKINST}/usr/{bin/*-config,lib/pkgconfig/*.pc}; do \
+ [[ -e $$a ]] || continue; \
+ $(SED) "s,^prefix=.*,prefix=${STAGING_DIR}/usr," $$a; \
+ done
+endif
+ @env ${MAKE_ENV} ${MAKE} post-install $(MAKE_TRACE)
+ @if test -s '${STAGING_PARENT}/pkg/${PKG_NAME}'; then \
+ cd '${STAGING_DIR}'; \
+ while read fn; do \
+ rm -f "$$fn"; \
+ done <'${STAGING_PARENT}/pkg/${PKG_NAME}'; \
+ fi
+ @rm -f '${STAGING_PARENT}/pkg/${PKG_NAME}'
+ @cd ${WRKINST}; \
+ if [ "${PKG_NAME}" != "uClibc" -a "${PKG_NAME}" != "glibc" -a "${PKG_NAME}" != "libpthread" -a "${PKG_NAME}" != "libstdcxx" -a "${PKG_NAME}" != "libthread-db" ];then \
+ find lib \( -name lib\*.so\* -o -name lib\*.a \) \
+ -exec echo 'WARNING: ${PKG_NAME} installs files in /lib -' \
+ ' fix this!' >&2 \; -quit 2>/dev/null; fi;\
+ find usr ! -type d 2>/dev/null | \
+ grep -v -e '^usr/share' -e '^usr/man' -e '^usr/info' | \
+ tee '${STAGING_PARENT}/pkg/${PKG_NAME}' | \
+ cpio -apdlmu --quiet '${STAGING_DIR}'
+ @cd '${STAGING_DIR}'; grep 'usr/lib/.*\.la$$' \
+ '${STAGING_PARENT}/pkg/${PKG_NAME}' | while read fn; do \
+ chmod u+w $$fn; \
+ $(SED) "s,\(^libdir='\| \|-L\|^dependency_libs='\)/usr/lib,\1$(STAGING_DIR)/usr/lib,g" $$fn; \
+ done; grep 'usr/s*bin/' '${STAGING_PARENT}/pkg/${PKG_NAME}' | \
+ while read fn; do \
+ b="$$(dd if="$$fn" bs=2 count=1 2>/dev/null)"; \
+ [[ $$b = '#!' ]] || continue; \
+ cp "$$fn" scripts/; \
+ echo "scripts/$$(basename "$$fn")" \
+ >>'${STAGING_PARENT}/pkg/${PKG_NAME}'; \
+ done
+ touch $@
+
+#--- package
+${_IPKGS_COOKIE}:
+ @clean=0; \
+ for f in ${ALL_IPKGS}; do \
+ [[ -e $$f ]] && clean=1; \
+ done; \
+ [[ $$clean = 0 ]] || ${MAKE} clean
+ exec ${MAKE} package
+
+package: ${ALL_IPKGS}
+ @cd ${WRKDIR}/fake-${ARCH} || exit 1; \
+ y=; sp=; for x in ${ALL_IDIRS}; do \
+ y="$$y$$sp$${x#$(WRKDIR)/fake-${ARCH}/}"; \
+ sp=' '; \
+ done; ls=; ln=; x=1; [[ -z $$y ]] || \
+ md5sum $$(find $$y -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' \
+ 'package "${PKG_NAME}"! 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
+ touch ${_IPKGS_COOKIE}
+
+#--- clean
+clean-targets: clean-dev-generic
+
+clean-dev-generic:
+ @if test -s '${STAGING_PARENT}/pkg/${PKG_NAME}'; then \
+ cd '${STAGING_DIR}'; \
+ while read fn; do \
+ rm -f "$$fn"; \
+ done <'${STAGING_PARENT}/pkg/${PKG_NAME}'; \
+ fi
+ @rm -f '${STAGING_PARENT}/pkg/${PKG_NAME}'
diff --git a/mk/rootfs.mk b/mk/rootfs.mk
new file mode 100644
index 000000000..e23769979
--- /dev/null
+++ b/mk/rootfs.mk
@@ -0,0 +1,21 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+define rootfs_template
+ifeq ($(ADK_TARGET_ROOTFS_$(2)),y)
+FS:=$(1)
+FS_CMDLINE:=$(3)
+endif
+endef
+
+$(eval $(call rootfs_template,ext2-cf,EXT2_CF))
+$(eval $(call rootfs_template,ext2-mmc,EXT2_MMC))
+$(eval $(call rootfs_template,ext2,EXT2))
+$(eval $(call rootfs_template,initramfs,INITRAMFS))
+$(eval $(call rootfs_template,squashfs,SQUASHFS))
+$(eval $(call rootfs_template,yaffs,YAFFS))
+$(eval $(call rootfs_template,nfsroot,NFSROOT,root=/dev/nfs ip=dhcp))
+
+export FS
diff --git a/mk/split-cfg.mk b/mk/split-cfg.mk
new file mode 100644
index 000000000..0aa5acba1
--- /dev/null
+++ b/mk/split-cfg.mk
@@ -0,0 +1,10 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+#-
+# must work with both BSD and GNU make
+
+${TOPDIR}/.cfg/ADK_HAVE_DOT_CONFIG: ${TOPDIR}/.config \
+ ${TOPDIR}/mk/split-cfg.mk ${TOPDIR}/scripts/split-cfg.sh
+ ${BASH} ${TOPDIR}/scripts/split-cfg.sh '${TOPDIR}'
diff --git a/mk/toolchain.mk b/mk/toolchain.mk
new file mode 100644
index 000000000..2701736ca
--- /dev/null
+++ b/mk/toolchain.mk
@@ -0,0 +1,6 @@
+prepare: ${WRKDIST}/.prepared $(WRKBUILD)/.headers
+configure: ${WRKBUILD}/.configure_done
+compile: $(WRKBUILD)/.compiled
+install: $(WRKBUILD)/.installed
+clean:
+ rm -rf $(WRKDIR)
diff --git a/mk/tools.mk b/mk/tools.mk
new file mode 100644
index 000000000..429e741c2
--- /dev/null
+++ b/mk/tools.mk
@@ -0,0 +1,6 @@
+prepare: ${WRKDIST}/.prepared
+configure: ${WRKBUILD}/.configure_done
+compile: $(WRKBUILD)/.compiled
+install: $(WRKBUILD)/.installed
+clean:
+ rm -rf $(WRKDIR)
diff --git a/mk/vars.mk b/mk/vars.mk
new file mode 100644
index 000000000..93f40be23
--- /dev/null
+++ b/mk/vars.mk
@@ -0,0 +1,120 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+CP= cp -fpR
+INSTALL_DIR= install -d -m0755
+INSTALL_DATA= install -m0644
+INSTALL_BIN= install -m0755
+INSTALL_SCRIPT= install -m0755
+MAKEFLAGS= $(EXTRA_MAKEFLAGS)
+BUILD_USER= $(shell id -un)
+BUILD_GROUP= $(shell id -gn)
+ifeq ($(DEBUG),1)
+TARGET_DEBUGGING:= -g -O0 -fno-omit-frame-pointer
+else
+TARGET_DEBUGGING:= -fomit-frame-pointer
+endif
+ifeq ($(ADK_SSP),y)
+TARGET_SSP:= -fstack-protector-all
+endif
+TARGET_CFLAGS:= $(TARGET_OPTIMIZATION) $(TARGET_CFLAGS_ARCH) $(TARGET_DEBUGGING) $(TARGET_SSP)
+
+BASE_DIR:= $(TOPDIR)
+DISTDIR?= ${BASE_DIR}/dl
+BUILD_DIR:= ${BASE_DIR}/build_${CPU_ARCH}
+BUILD_DIR_PFX:= $(BASE_DIR)/build_*
+STAGING_PARENT:= ${BASE_DIR}/cross_${CPU_ARCH}
+STAGING_PARENT_PFX:= ${BASE_DIR}/cross_*
+STAGING_TOOLS:= ${STAGING_PARENT}/host
+STAGING_DIR:= ${STAGING_PARENT}/target
+TOOLCHAIN_BUILD_DIR= $(BASE_DIR)/toolchain_build_${CPU_ARCH}
+TOOLCHAIN_BUILD_DIR_PFX=$(BASE_DIR)/toolchain_build_*
+TOOLS_BUILD_DIR= $(BASE_DIR)/tools_build
+SCRIPT_DIR:= $(BASE_DIR)/scripts
+BIN_DIR:= $(BASE_DIR)/bin_${DEVICE}
+BIN_DIR_PFX:= $(BASE_DIR)/bin_*
+PACKAGE_DIR:= $(BIN_DIR)/packages
+TARGET_DIR:= $(BASE_DIR)/root_${DEVICE}
+TARGET_DIR_PFX:= $(BASE_DIR)/root_*
+TARGET_PATH= ${SCRIPT_DIR}:${STAGING_TOOLS}/bin:${STAGING_DIR}/scripts:${_PATH}
+ifeq ($(ADK_TARGET_LIB_GLIBC),y)
+REAL_GNU_TARGET_NAME= $(CPU_ARCH)-linux-gnu
+GNU_TARGET_NAME= $(CPU_ARCH)-linux
+KERNEL_CROSS:= $(STAGING_TOOLS)/bin/$(CPU_ARCH)-linux-gnu-
+TARGET_CROSS:= $(STAGING_TOOLS)/bin/$(CPU_ARCH)-linux-gnu-
+else
+REAL_GNU_TARGET_NAME= $(CPU_ARCH)-linux-uclibc
+GNU_TARGET_NAME= $(CPU_ARCH)-linux
+KERNEL_CROSS:= $(STAGING_TOOLS)/bin/$(CPU_ARCH)-linux-uclibc-
+TARGET_CROSS:= $(STAGING_TOOLS)/bin/$(CPU_ARCH)-linux-uclibc-
+endif
+TOOLCHAIN_SYSROOT:= $(TOOLCHAIN_BUILD_DIR)/libc_dev
+TARGET_COMPILER_PREFIX?=${TARGET_CROSS}
+TARGET_CC:= ${TARGET_COMPILER_PREFIX}gcc
+TARGET_CXX:= ${TARGET_COMPILER_PREFIX}g++
+TARGET_CPPFLAGS+= -I${STAGING_DIR}/usr/include
+TARGET_LDFLAGS+= -Wl,-O2
+PATCH= ${BASH} $(SCRIPT_DIR)/patch.sh
+SED:= sed -i -e
+LINUX_DIR:= $(BUILD_DIR)/linux
+
+TARGET_CONFIGURE_OPTS= PATH='${TARGET_PATH}' \
+ AR=$(TARGET_CROSS)ar \
+ AS=$(TARGET_CROSS)as \
+ LD=$(TARGET_CROSS)ld \
+ NM=$(TARGET_CROSS)nm \
+ CC="$(TARGET_CC)" \
+ GCC="$(TARGET_CC)" \
+ CXX="$(TARGET_CXX)" \
+ RANLIB=$(TARGET_CROSS)ranlib
+HOST_CONFIGURE_OPTS= CC_FOR_BUILD='${HOSTCC}' \
+ CFLAGS_FOR_BUILD='${HOSTCFLAGS}' \
+ CPPFLAGS_FOR_BUILD='${HOSTCPPFLAGS}' \
+ LDFLAGS_FOR_BUILD='${HOSTLDFLAGS}'
+
+# invoke ipkg-build with some default options
+IPKG_BUILD:= PATH='${TARGET_PATH}' ${BASH} \
+ ${TOPDIR}/scripts/ipkg-build -c -o 0 -g 0
+# where to build (and put) .ipk packages
+IPKG_TARGET_DIR:= $(PACKAGE_DIR)
+IPKG:= IPKG_TMP=$(BUILD_DIR)/tmp \
+ IPKG_INSTROOT=$(TARGET_DIR) \
+ IPKG_CONF_DIR=$(STAGING_DIR)/etc \
+ IPKG_OFFLINE_ROOT=$(TARGET_DIR) \
+ ${BASH} ${SCRIPT_DIR}/ipkg -force-defaults -force-depends
+IPKG_STATE_DIR:= $(TARGET_DIR)/usr/lib/ipkg
+
+RSTRIP:= prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh
+
+EXTRACT_CMD= mkdir -p ${WRKDIR}; \
+ cd ${WRKDIR} && \
+ for file in ${FULLDISTFILES}; do case $$file in \
+ *.cpio) \
+ cat $$file | cpio -i -d --quiet ;; \
+ *.tar) \
+ tar -xf $$file ;; \
+ *.cpio.Z | *.cpio.gz | *.cgz | *.mcz) \
+ gzip -dc $$file | cpio -i -d --quiet ;; \
+ *.tar.Z | *.tar.gz | *.taz | *.tgz) \
+ gzip -dc $$file | tar -xf - ;; \
+ *.cpio.bz2 | *.cbz) \
+ bzip2 -dc $$file | cpio -i -d --quiet ;; \
+ *.tar.bz2 | *.tbz | *.tbz2) \
+ bzip2 -dc $$file | tar -xf - ;; \
+ *.zip) \
+ unzip -d ${WRKDIR} $$file ;; \
+ *) \
+ echo "Cannot extract '$$file'" >&2; \
+ false ;; \
+ esac; done
+
+ifeq ($(VERBOSE),1)
+QUIET:=
+else
+QUIET:= --quiet
+endif
+FETCH_CMD?= wget -t1 --timeout=30 $(QUIET)
+
+include $(TOPDIR)/mk/mirrors.mk