summaryrefslogtreecommitdiff
path: root/mk/kernel-build.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/kernel-build.mk
Initial import
Diffstat (limited to 'mk/kernel-build.mk')
-rw-r--r--mk/kernel-build.mk61
1 files changed, 61 insertions, 0 deletions
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)