| 1 | # $FreeWRT$
|
|---|
| 2 | #-
|
|---|
| 3 | # This file is part of the FreeWRT project. FreeWRT is copyrighted
|
|---|
| 4 | # material, please see the LICENCE file in the top-level directory
|
|---|
| 5 | # or at http://www.freewrt.org/licence for details.
|
|---|
| 6 |
|
|---|
| 7 | DISTFILES:= linux-$(LINUX_VERSION).tar.bz2
|
|---|
| 8 | MASTER_SITES= http://www.us.kernel.org/pub/linux/kernel/v$(KERNEL)/ \
|
|---|
| 9 | http://www.us.kernel.org/pub/linux/kernel/v$(KERNEL)/ \
|
|---|
| 10 | http://www.kernel.org/pub/linux/kernel/v$(KERNEL)/ \
|
|---|
| 11 | http://www.de.kernel.org/pub/linux/kernel/v$(KERNEL)/
|
|---|
| 12 | PKG_MD5SUM:= ${LINUX_KERNEL_MD5SUM}
|
|---|
| 13 |
|
|---|
| 14 | include ${TOPDIR}/mk/buildhlp.mk
|
|---|
| 15 |
|
|---|
| 16 | KERNEL_IDIR:=$(LINUX_BUILD_DIR)/kernel-ipkg
|
|---|
| 17 |
|
|---|
| 18 | $(LINUX_BUILD_DIR)/.extract: ${_CHECKSUM_COOKIE}
|
|---|
| 19 | $(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-prepare
|
|---|
| 20 | test ! -e ${LINUX_BUILD_DIR}/linux-${LINUX_VERSION}/Rules.make || \
|
|---|
| 21 | rm -rf ${LINUX_BUILD_DIR}
|
|---|
| 22 | -mkdir -p $(LINUX_BUILD_DIR)
|
|---|
| 23 | bzcat ${FULLDISTFILES} | (cd $(LINUX_BUILD_DIR); tar xf - )
|
|---|
| 24 | rm -f $(BUILD_DIR)/linux
|
|---|
| 25 | ln -s $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION) $(BUILD_DIR)/linux
|
|---|
| 26 | $(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-patch
|
|---|
| 27 | -[ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches $(MAKE_TRACE)
|
|---|
| 28 | -[ -d ../generic-${UNAME_R}/patches ] && $(PATCH) $(LINUX_DIR) ../generic-${UNAME_R}/patches $(MAKE_TRACE)
|
|---|
| 29 | -[ -d ./patches ] && $(PATCH) $(LINUX_DIR) ./patches $(MAKE_TRACE)
|
|---|
| 30 | -[ -d ./$(DEVICE)/patches ] && $(PATCH) $(LINUX_DIR) ./$(DEVICE)/patches $(MAKE_TRACE)
|
|---|
| 31 | touch $@
|
|---|
| 32 |
|
|---|
| 33 | $(LINUX_DIR)/.config: $(LINUX_BUILD_DIR)/.extract $(BUILD_DIR)/.fwrtkernelconfig
|
|---|
| 34 | $(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-configure
|
|---|
| 35 | $(CP) $(BUILD_DIR)/.fwrtkernelconfig $(LINUX_DIR)/.config
|
|---|
| 36 | ifeq ($(KERNEL),2.4)
|
|---|
| 37 | $(SED) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" \
|
|---|
| 38 | $(LINUX_DIR)/Makefile \
|
|---|
| 39 | $(LINUX_DIR)/arch/*/Makefile
|
|---|
| 40 | env GCC_HONOUR_COPTS=s $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" oldconfig include/linux/compile.h include/linux/version.h $(MAKE_TRACE)
|
|---|
| 41 | env GCC_HONOUR_COPTS=s $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" dep $(MAKE_TRACE)
|
|---|
| 42 | else
|
|---|
| 43 | echo N | env GCC_HONOUR_COPTS=s $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" oldconfig $(MAKE_TRACE)
|
|---|
| 44 | env GCC_HONOUR_COPTS=s $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" prepare scripts $(MAKE_TRACE)
|
|---|
| 45 | endif
|
|---|
| 46 | touch -c $(LINUX_DIR)/.config
|
|---|
| 47 |
|
|---|
| 48 | $(LINUX_DIR)/vmlinux: $(LINUX_DIR)/.config
|
|---|
| 49 | $(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-compile
|
|---|
| 50 | env GCC_HONOUR_COPTS=s $(MAKE) -C $(LINUX_DIR) V=1 CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" $(MAKE_TRACE)
|
|---|
| 51 | $(TRACE) target/linux/$(BOARD)-$(KERNEL)-modules-compile
|
|---|
| 52 | env GCC_HONOUR_COPTS=s $(MAKE) -C "$(LINUX_DIR)" CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" modules $(MAKE_TRACE)
|
|---|
| 53 | $(TRACE) target/linux/$(BOARD)-$(KERNEL)-modules-install
|
|---|
| 54 | rm -rf $(LINUX_BUILD_DIR)/modules
|
|---|
| 55 | env GCC_HONOUR_COPTS=s $(MAKE) -C "$(LINUX_DIR)" CROSS_COMPILE="$(KERNEL_CROSS)" DEPMOD=true INSTALL_MOD_PATH=$(LINUX_BUILD_DIR)/modules modules_install $(MAKE_TRACE)
|
|---|
| 56 | $(TRACE) target/linux/$(BOARD)-$(KERNEL)-create-packages
|
|---|
| 57 | -mkdir $(BUILD_DIR)/kmod-control
|
|---|
| 58 | env GCC_HONOUR_COPTS=s $(MAKE) $(KERNEL_IPKG) $(TARGETS) $(MAKE_TRACE)
|
|---|
| 59 | touch -c $(LINUX_DIR)/vmlinux
|
|---|
| 60 |
|
|---|
| 61 | $(LINUX_KERNEL): $(LINUX_DIR)/vmlinux
|
|---|
| 62 | $(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-strip
|
|---|
| 63 | ifeq ($(KERNEL),2.4)
|
|---|
| 64 | ifeq ($(BOARD),brcm)
|
|---|
| 65 | ifneq ($(FS),nfs)
|
|---|
| 66 | $(TARGET_CROSS)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE)
|
|---|
| 67 | else
|
|---|
| 68 | $(TARGET_CROSS)objcopy -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE)
|
|---|
| 69 | endif
|
|---|
| 70 | else
|
|---|
| 71 | $(TARGET_CROSS)objcopy -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE)
|
|---|
| 72 | endif
|
|---|
| 73 | endif
|
|---|
| 74 |
|
|---|
| 75 | $(KERNEL_IPKG):
|
|---|
| 76 | $(TRACE) target/linux/$(BOARD)-$(KERNEL)-$(DEVICE)-$(FS)-create-kernel-package
|
|---|
| 77 | rm -rf $(KERNEL_IDIR)
|
|---|
| 78 | mkdir -p $(KERNEL_IDIR)/etc
|
|---|
| 79 | ${MBSH} ${SCRIPT_DIR}/make-ipkg-dir.sh ${KERNEL_IDIR} \
|
|---|
| 80 | ../kernel.control ${BOARD}-${KERNEL}-${LINUX_VERSION} ${ARCH}
|
|---|
| 81 | $(IPKG_BUILD) $(KERNEL_IDIR) $(PACKAGE_DIR) $(MAKE_TRACE)
|
|---|
| 82 |
|
|---|
| 83 | prepare:
|
|---|
| 84 | compile: $(LINUX_KERNEL)
|
|---|
| 85 |
|
|---|
| 86 | install: compile
|
|---|
| 87 | env GCC_HONOUR_COPTS=s $(MAKE) $(KPKG_MAKEOPTS) $(LINUX_KERNEL) $(MAKE_TRACE)
|
|---|
| 88 | $(TRACE) target/linux/$(BOARD)-$(KERNEL)-modules-install
|
|---|
| 89 | rm -rf ${LINUX_BUILD_DIR}/root*
|
|---|
| 90 | cd ${BUILD_DIR} && pax -rw -pe root ${LINUX_BUILD_DIR}/
|
|---|
| 91 | printf '%s\n%s\n' 'dest root /' \
|
|---|
| 92 | 'option offline_root $(LINUX_BUILD_DIR)/root' \
|
|---|
| 93 | >$(LINUX_BUILD_DIR)/ipkg.conf
|
|---|
| 94 | ifneq ($(strip $(INSTALL_TARGETS)),)
|
|---|
| 95 | $(IPKG_KERNEL) install $(INSTALL_TARGETS) $(MAKE_TRACE)
|
|---|
| 96 | endif
|
|---|
| 97 |
|
|---|
| 98 | clean:
|
|---|
| 99 | rm -rf $(LINUX_BUILD_DIR)
|
|---|
| 100 | rm -f $(TARGETS)
|
|---|