diff options
Diffstat (limited to 'rules/xchain-kernel.make')
-rw-r--r-- | rules/xchain-kernel.make | 504 |
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 |