summaryrefslogtreecommitdiffstats
path: root/rules/xchain-kernel.make
diff options
context:
space:
mode:
Diffstat (limited to 'rules/xchain-kernel.make')
-rw-r--r--rules/xchain-kernel.make504
1 files changed, 504 insertions, 0 deletions
diff --git a/rules/xchain-kernel.make b/rules/xchain-kernel.make
new file mode 100644
index 000000000..07bc97585
--- /dev/null
+++ b/rules/xchain-kernel.make
@@ -0,0 +1,504 @@
+# $Id: xchain-kernel.make,v 1.1 2003/04/24 08:06:33 jst Exp $
+#
+# (c) 2002 by Pengutronix e.K., Hildesheim, Germany
+# See CREDITS for details about who has contributed to this project.
+#
+# For further information about the PTXDIST project and license conditions
+# see the README file.
+#
+
+#
+# There are two "groups" of targets here: that ones starting with xchain- are
+# only used for the cross chain. The "normal" targets are used for building the
+# runtime kernel.
+#
+
+#
+# We provide this package
+#
+ifeq (y,$(PTXCONF_KERNEL_2_4_18))
+PACKAGES += xchain-kernel
+PACKAGES += kernel
+endif
+ifeq (y,$(PTXCONF_KERNEL_2_4_19))
+PACKAGES += xchain-kernel
+PACKAGES += kernel
+endif
+
+#
+# Paths and names
+#
+# FIXME: make extraversion configurable!
+#
+ifeq (y,$(PTXCONF_KERNEL_2_4_18))
+KERNEL = linux-2.4.18
+KERNEL_URL = ftp://ftp.kernel.org/pub/linux/kernel/v2.4/$(KERNEL).tar.bz2
+KERNEL_SOURCE = $(SRCDIR)/$(KERNEL).tar.bz2
+KERNEL_DIR = $(BUILDDIR)/$(KERNEL)
+KERNEL_EXTRACT = bzip2 -dc
+
+KERNEL_RMKPATCH = patch-2.4.18-rmk7
+KERNEL_RMKPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/v2.4/$(KERNEL_RMKPATCH).bz2
+KERNEL_RMKPATCH_SOURCE = $(SRCDIR)/$(KERNEL_RMKPATCH).bz2
+KERNEL_RMKPATCH_DIR = $(BUILDDIR)/$(KERNEL)
+KERNEL_RMKPATCH_EXTRACT = bzip2 -dc
+
+KERNEL_PXAPATCH = diff-2.4.18-rmk7-pxa3
+KERNEL_PXAPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/people/nico/$(KERNEL_PXAPATCH).gz
+KERNEL_PXAPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PXAPATCH).gz
+KERNEL_PXAPATCH_DIR = $(BUILDDIR)/$(KERNEL)
+KERNEL_PXAPATCH_EXTRACT = gzip -dc
+
+KERNEL_PTXPATCH = patch-2.4.18-rmk7-ptx3
+KERNEL_PTXPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PTXPATCH)
+KERNEL_PTXPATCH_URL = http://www.pengutronix.de/software/dnp/patch-2.4.18-rmk7-ptx3
+KERNEL_PTXPATCH_DIR = $(BUILDDIR)/$(KERNEL)
+KERNEL_PTXPATCH_EXTRACT = cat
+
+ifeq (y, $(PTXCONF_RTAI_ALLSOFT))
+KERNEL_RTAIPATCH = patch-2.4.18-allsoft
+endif
+ifeq (y, $(PTXCONF_RTAI_RTHAL))
+KERNEL_RTAIPATCH = patch-2.4.18-rthal5g
+endif
+KERNEL_RTAIPATCH_DIR = $(BUILDDIR)/rtai-patches
+endif
+
+ifeq (y,$(PTXCONF_KERNEL_2_4_19))
+KERNEL = linux-2.4.19
+KERNEL_URL = ftp://ftp.rfc822.org/pub/linux/kernel/v2.4/$(KERNEL).tar.bz2
+KERNEL_SOURCE = $(SRCDIR)/$(KERNEL).tar.bz2
+KERNEL_DIR = $(BUILDDIR)/$(KERNEL)
+KERNEL_EXTRACT = bzip2 -dc
+
+KERNEL_RMKPATCH = patch-2.4.19-rmk4
+KERNEL_RMKPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/v2.4/$(KERNEL_RMKPATCH).bz2
+KERNEL_RMKPATCH_SOURCE = $(SRCDIR)/$(KERNEL_RMKPATCH).bz2
+KERNEL_RMKPATCH_DIR = $(BUILDDIR)/$(KERNEL)
+KERNEL_RMKPATCH_EXTRACT = bzip2 -dc
+
+KERNEL_PXAPATCH = diff-2.4.19-rmk4-pxa1
+KERNEL_PXAPATCH_URL = ftp://ftp.arm.linux.org.uk/pub/armlinux/people/nico/$(KERNEL_PXAPATCH).gz
+KERNEL_PXAPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PXAPATCH).gz
+KERNEL_PXAPATCH_DIR = $(BUILDDIR)/$(KERNEL)
+KERNEL_PXAPATCH_EXTRACT = gzip -dc
+
+KERNEL_PTXPATCH = linux-2.4.19-rmk4-pxa1-ptx10.diff
+KERNEL_PTXPATCH_SOURCE = $(SRCDIR)/$(KERNEL_PTXPATCH)
+KERNEL_PTXPATCH_URL = http://www.pengutronix.de/software/linux-arm/$(KERNEL_PTXPATCH)
+KERNEL_PTXPATCH_DIR = $(BUILDDIR)/$(KERNEL)
+KERNEL_PTXPATCH_EXTRACT = cat
+
+ifeq (y, $(PTXCONF_RTAI_ALLSOFT))
+KERNEL_RTAIPATCH = patch-2.4.19-allsoft
+endif
+ifeq (y, $(PTXCONF_RTAI_RTHAL))
+KERNEL_RTAIPATCH = patch-2.4.19-rthal5g
+endif
+KERNEL_RTAIPATCH_DIR = $(BUILDDIR)/rtai-patches
+endif
+
+ifeq (y, $(PTXCONF_KERNEL_IMAGE_Z))
+KERNEL_TARGET = zImage
+KERNEL_TARGET_PATH = $(KERNEL_DIR)/$(PTXCONF_ARCH)/boot/zImage
+endif
+ifeq (y, $(PTXCONF_KERNEL_IMAGE_BZ))
+KERNEL_TARGET = bzImage
+KERNEL_TARGET_PATH = $(KERNEL_DIR)/$(PTXCONF_ARCH)/boot/bzImage
+endif
+ifeq (y, $(PTXCONF_KERNEL_IMAGE_U))
+KERNEL_TARGET = uImage
+KERNEL_TARGET_PATH = $(KERNEL_DIR)/uImage
+endif
+
+# ----------------------------------------------------------------------------
+# Get
+# ----------------------------------------------------------------------------
+
+kernel_get: $(STATEDIR)/kernel.get
+xchain-kernel_get: $(STATEDIR)/xchain-kernel.get
+
+kernel_get_deps = $(KERNEL_SOURCE)
+ifeq (y, $(PTXCONF_ARCH_ARM))
+kernel_get_deps += $(KERNEL_RMKPATCH_SOURCE)
+kernel_get_deps += $(KERNEL_PTXPATCH_SOURCE)
+ifeq (y, $(PTXCONF_KERNEL_XSCALE))
+kernel_get_deps += $(KERNEL_PXAPATCH_SOURCE)
+ifeq (y, $(PTXCONF_KERNEL_XSCALE_PTX))
+kernel_get_deps += $(KERNEL_PTXPATCH_SOURCE)
+endif # PTXCONF_KERNEL_XSCALE_PTX
+endif # PTXCONF_KERNEL_XSCALE
+endif # PTXCONF_ARCH_ARM
+
+$(STATEDIR)/kernel.get: $(kernel_get_deps)
+ touch $@
+
+$(STATEDIR)/xchain-kernel.get: $(kernel_get_deps)
+
+$(KERNEL_SOURCE):
+ @echo
+ @echo ------------------
+ @echo target: kernel.get
+ @echo ------------------
+ @echo
+ wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_URL)
+
+$(KERNEL_RMKPATCH_SOURCE):
+ @echo
+ @echo ---------------------------
+ @echo target: kernel-armpatch.get
+ @echo ---------------------------
+ @echo
+ wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_RMKPATCH_URL)
+
+$(KERNEL_PXAPATCH_SOURCE):
+ @echo
+ @echo ---------------------------
+ @echo target: kernel-pxapatch.get
+ @echo ---------------------------
+ @echo
+ wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_PXAPATCH_URL)
+
+$(KERNEL_PTXPATCH_SOURCE):
+ @echo
+ @echo ---------------------------
+ @echo target: kernel-ptxpatch.get
+ @echo ---------------------------
+ @echo
+ wget -P $(SRCDIR) $(PASSIVEFTP) $(KERNEL_PTXPATCH_URL)
+
+#
+# RTAI patches are included in the normal RTAI packet
+#
+rtai-patches_get: $(STATEDIR)/rtai-patches.get
+
+$(STATEDIR)/rtai-patches.get: $(RTAI_SOURCE)
+ touch $@
+
+#
+# xchain
+#
+$(STATEDIR)/xchain-kernel.get: $(kernel_get_deps)
+ @echo
+ @echo -------------------------
+ @echo target: xchain-kernel.get
+ @echo -------------------------
+ @echo
+ touch $@
+
+# ----------------------------------------------------------------------------
+# Extract
+# ----------------------------------------------------------------------------
+
+kernel_extract: $(STATEDIR)/kernel.extract
+
+kernel_extract_deps = $(STATEDIR)/kernel.get
+ifeq (y, $(PTXCONF_RTAI))
+kernel_extract_deps += $(STATEDIR)/rtai-patches.extract
+endif
+ifeq (y, $(PTXCONF_KERNEL_MTD))
+kernel_extract_deps += $(STATEDIR)/mtd.extract
+endif
+
+$(STATEDIR)/kernel.extract: $(kernel_extract_deps)
+ @echo
+ @echo ----------------------
+ @echo target: kernel.extract
+ @echo ----------------------
+ @echo
+# # remove old kernel directories before we extract
+ rm -fr $(KERNEL_DIR)
+ $(KERNEL_EXTRACT) $(KERNEL_SOURCE) | tar -C $(BUILDDIR) -xf -
+# #
+# # kernels before 2.4.19 extract to "linux" instead of "linux-version"
+# #
+ ifeq (y,$(PTXCONF_KERNEL_2_4_18))
+ cd $(BUILDDIR) && mv linux $(KERNEL_DIR)
+ endif
+# #
+# # ARM patch
+# #
+ ifeq (y,$(PTXCONF_ARCH_ARM))
+ cd $(KERNEL_DIR) && \
+ $(KERNEL_RMKPATCH_EXTRACT) $(KERNEL_RMKPATCH_SOURCE) | \
+ patch -p1
+ endif
+# #
+# # XSCALE patch
+# #
+ ifeq (y, $(PTXCONF_KERNEL_XSCALE))
+ cd $(KERNEL_DIR) && \
+ $(KERNEL_PXAPATCH_EXTRACT) $(KERNEL_PXAPATCH_SOURCE) | \
+ patch -p1
+ endif
+# #
+# # MTD patch
+# #
+ ifeq (y, $(PTXCONF_KERNEL_MTD))
+ echo "y" | /bin/sh $(MTD_DIR)/patches/patchin.sh -j $(KERNEL_DIR)
+ endif
+# #
+# # XSCALE_PTX patch
+# #
+ ifeq (y, $(PTXCONF_KERNEL_XSCALE_PTX))
+ cd $(KERNEL_DIR) && \
+ $(KERNEL_PTXPATCH_EXTRACT) $(KERNEL_PTXPATCH_SOURCE) | \
+ patch -p1
+ endif
+# #
+# # patches for all architectures
+# #
+ ifeq (y, $(PTXCONF_RTAI))
+ cd $(KERNEL_DIR) && \
+ patch -p1 < $(KERNEL_RTAIPATCH_DIR)/$(RTAI)/patches/$(KERNEL_RTAIPATCH)
+ endif
+ touch $@
+
+#
+# RTAI patch
+#
+
+rtai-patches_extract: $(STATEDIR)/rtai-patches.extract
+
+$(STATEDIR)/rtai-patches.extract: $(STATEDIR)/rtai-patches.get
+ @echo
+ @echo ----------------------------
+ @echo target: rtai-patches.extract
+ @echo ----------------------------
+ @echo
+# # remove old rtaipatch directory
+ rm -fr $(KERNEL_RTAIPATCH_DIR)
+ install -d $(KERNEL_RTAIPATCH_DIR)
+# # extract only the patches directory
+ cd $(KERNEL_RTAIPATCH_DIR) && \
+ tar zxvf $(RTAI_SOURCE) $(RTAI)/patches
+ touch $@
+
+#
+# xchain
+#
+
+xchain-kernel_extract: $(STATEDIR)/xchain-kernel.extract
+
+$(STATEDIR)/xchain-kernel.extract: $(STATEDIR)/xchain-kernel.get $(STATEDIR)/mtd.extract
+ @echo
+ @echo -----------------------------
+ @echo target: xchain-kernel.extract
+ @echo -----------------------------
+ @echo
+# #
+ rm -fr $(BUILDDIR)/xchain-kernel
+ mkdir -p $(BUILDDIR)/xchain-kernel/tmp
+ cd $(BUILDDIR)/xchain-kernel && \
+ $(KERNEL_EXTRACT) $(KERNEL_SOURCE) | tar -C $(BUILDDIR)/xchain-kernel/tmp -xf -
+# #
+# # kernels before 2.4.19 extract to "linux" instead of "linux-version"
+# #
+ ifeq (y,$(PTXCONF_KERNEL_2_4_18))
+ cd $(BUILDDIR)/xchain-kernel/tmp && mv linux $(KERNEL)
+ endif
+# #
+# # ARM patch
+# #
+ ifeq (y,$(PTXCONF_ARCH_ARM))
+ cd $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL) && \
+ $(KERNEL_RMKPATCH_EXTRACT) $(KERNEL_RMKPATCH_SOURCE) | \
+ patch -p1
+ endif
+# #
+# # XSCALE patch
+# #
+ ifeq (y, $(PTXCONF_KERNEL_XSCALE))
+ cd $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL) && \
+ $(KERNEL_PXAPATCH_EXTRACT) $(KERNEL_PXAPATCH_SOURCE) | \
+ patch -p1
+ endif
+# #
+# # MTD patch
+# #
+ ifeq (y, $(PTXCONF_KERNEL_MTD))
+ echo "y" | /bin/sh $(MTD_DIR)/patches/patchin.sh -j $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL)
+ endif
+# #
+# # XSCALE_PTX patch
+# #
+ ifeq (y, $(PTXCONF_KERNEL_XSCALE_PTX))
+ cd $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL) && \
+ $(KERNEL_PTXPATCH_EXTRACT) $(KERNEL_PTXPATCH_SOURCE) | \
+ patch -p1
+ endif
+ # fake headers
+ # FIXME: use correct version!
+ touch $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL)/include/linux/autoconf.h
+ echo "#define UTS_RELEASE \"2.4.18\"" > \
+ $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL)/include/linux/version.h;
+ echo "#define LINUX_VERSION_CODE 132114" >> \
+ $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL)/include/linux/version.h;
+ echo "#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))" >> \
+ $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL)/include/linux/version.h;
+ # we are only interested in include/ here
+ cp -a $(BUILDDIR)/xchain-kernel/tmp/$(KERNEL)/include $(BUILDDIR)/xchain-kernel/
+ rm -fr $(BUILDDIR)/xchain-kernel/tmp
+ touch $@
+
+# ----------------------------------------------------------------------------
+# Prepare
+# ----------------------------------------------------------------------------
+
+kernel_prepare: $(STATEDIR)/kernel.prepare
+
+kernel_prepare_deps = $(STATEDIR)/kernel.extract
+ifeq (y,$(PTXCONF_RTAI))
+kernel_prepare_deps += $(STATEDIR)/rtai-patches.extract
+endif
+
+ifeq (y,$(PTXCONF_ARCH_ARM))
+KERNEL_ENVIRONMENT = PATH=$(PTXCONF_PREFIX)/bin:$$PATH
+kernel_prepare_deps += $(STATEDIR)/xchain-gccstage1.install
+endif
+
+$(STATEDIR)/kernel.prepare: $(kernel_prepare_deps)
+ @echo
+ @echo ----------------------
+ @echo target: kernel.prepare
+ @echo ----------------------
+ @echo
+ ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN))
+ echo -n 'Please supply root password for sudo: '
+ # FIXME: wheel is not the correct group
+ [ -d $(PTXCONF_PREFIX) ] || \
+ $(SUDO) install -g wheel -m 0755 -o $(PTXUSER) \
+ -d $(PTXCONF_PREFIX)
+ endif
+ install .kernelconfig $(KERNEL_DIR)/.config
+ ifeq (y,$(PTXCONF_ARCH_ARM))
+ perl -p -i -e 's/^ARCH := .*/ARCH := arm/' $(KERNEL_DIR)/Makefile
+ perl -p -i -e 's/^CROSS_COMPILE .*/CROSS_COMPILE = arm-linux-/' $(KERNEL_DIR)/Makefile
+ endif
+ cd $(KERNEL_DIR) && make oldconfig
+ cd $(KERNEL_DIR) && PATH=$(PTXCONF_PREFIX)/bin:$$PATH make dep
+ touch $@
+
+#
+# xchain
+#
+
+xchain-kernel_prepare: $(STATEDIR)/xchain-kernel.prepare
+
+$(STATEDIR)/xchain-kernel.prepare: $(STATEDIR)/xchain-kernel.extract
+ @echo
+ @echo -----------------------------
+ @echo target: xchain-kernel.prepare
+ @echo -----------------------------
+ @echo
+ cd $(BUILDDIR)/xchain-kernel/include && ln -s asm-$(PTXCONF_ARCH) asm
+ ifeq (y, $(PTXCONF_ARCH_ARM))
+ cd $(BUILDDIR)/xchain-kernel/include/asm && ln -s proc-armv proc
+ ifeq (y, $(PTXCONF_ARM_ARCH_PXA))
+ cd $(BUILDDIR)/xchain-kernel/include/asm && ln -s arch-pxa arch
+ endif
+ endif
+ # fake autoconf.h
+ touch $(BUILDDIR)/xchain-kernel/include/linux/autoconf.h
+ touch $@
+
+
+# ----------------------------------------------------------------------------
+# Compile
+# ----------------------------------------------------------------------------
+
+kernel_compile: $(STATEDIR)/kernel.compile
+
+kernel_compile_deps = $(STATEDIR)/kernel.prepare
+kernel_compile_deps = $(STATEDIR)/umkimage.install
+
+$(STATEDIR)/kernel.compile: $(STATEDIR)/kernel.prepare
+ @echo
+ @echo ----------------------
+ @echo target: kernel.compile
+ @echo ----------------------
+ @echo
+ ifneq (y, $(PTXCONF_DONT_COMPILE_KERNEL))
+ $(KERNEL_ENVIRONMENT) make -C $(KERNEL_DIR) oldconfig dep clean $(KERNEL_TARGET) modules
+ endif
+ touch $@
+
+xchain-kernel_compile: $(STATEDIR)/xchain-kernel.compile
+
+$(STATEDIR)/xchain-kernel.compile:
+ touch $@
+
+# ----------------------------------------------------------------------------
+# Install
+# ----------------------------------------------------------------------------
+
+kernel_install: $(STATEDIR)/kernel.install
+
+$(STATEDIR)/kernel.install: $(STATEDIR)/kernel.compile
+ @echo
+ @echo ----------------------
+ @echo target: kernel.install
+ @echo ----------------------
+ @echo
+ ifeq (y, $(PTXCONF_KERNEL_INSTALL))
+ mkdir -p $(ROOTDIR)/boot
+ cp $(KERNEL_TARGET_PATH) $(ROOTDIR)/boot/
+ endif
+ touch $@
+
+xchain-kernel_install: $(STATEDIR)/xchain-kernel.install
+
+$(STATEDIR)/xchain-kernel.install:
+ touch $@
+
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+kernel_targetinstall: $(STATEDIR)/kernel.targetinstall
+
+$(STATEDIR)/kernel.targetinstall: $(STATEDIR)/kernel.install
+ @echo
+ @echo ----------------------------
+ @echo target: kernel.targetinstall
+ @echo ----------------------------
+ @echo
+ ifneq (y, $(PTXCONF_DONT_COMPILE_KERNEL))
+ mkdir -p $(ROOTDIR)/boot
+# #
+# # FIXME: we need to change the name to reflect the kernel version
+# # FIXME: change this to be architecture independend
+ ifeq (y,$(PTXCONF_KERNEL_INSTALL))
+ ifeq (y,$(PTXCONF_ARCH_X86))
+ install $(KERNEL_DIR)/arch/i386/boot/bzImage $(ROOTDIR)/boot
+ endif
+ ifeq (y,$(PTXCONF_ARCH_ARM))
+ mkdir -p $(ROOTDIR)/boot
+ install $(KERNEL_TARGET_PATH) $(ROOTDIR)/boot
+ endif
+ $(KERNEL_ENVIRONMENT) make -C $(KERNEL_DIR) modules_install INSTALL_MOD_PATH=$(ROOTDIR)
+# #
+ endif # PTXCONF_KERNEL_INSTALL
+ endif # PTXCONF_DONT_COMPILE_KERNEL
+ touch $@
+
+xchain-kernel_targetinstall: $(STATEDIR)/xchain-kernel.targetinstall
+
+$(STATEDIR)/xchain-kernel.targetinstall:
+ touch $@
+
+# ----------------------------------------------------------------------------
+# Clean
+# ----------------------------------------------------------------------------
+
+kernel_clean: rtai-patches_clean
+ rm -rf $(STATEDIR)/kernel.* $(KERNEL_DIR)
+
+xchain-kernel_clean:
+ rm -fr $(STATEDIR)/xchain-kernel.*
+
+rtai-patches_clean:
+ rm -rf $(STATEDIR)/rtai-patches.* $(KERNEL_RTAIPATCH_DIR)
+
+# vim: syntax=make