| 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 extra ]] && cd extra && pax -rw . ${LINUX_DIR}/ |
| 28 |
-[ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches $(MAKE_TRACE) |
| 29 |
-[ -d ../generic-${UNAME_R}/patches ] && $(PATCH) $(LINUX_DIR) ../generic-${UNAME_R}/patches $(MAKE_TRACE) |
| 30 |
-[ -d ./patches ] && $(PATCH) $(LINUX_DIR) ./patches $(MAKE_TRACE) |
| 31 |
-[ -d ./$(DEVICE)/patches ] && $(PATCH) $(LINUX_DIR) ./$(DEVICE)/patches $(MAKE_TRACE) |
| 32 |
touch $@ |
| 33 |
|
| 34 |
$(LINUX_DIR)/.config: $(LINUX_BUILD_DIR)/.extract $(BUILD_DIR)/.fwrtkernelconfig |
| 35 |
$(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-configure |
| 36 |
$(CP) $(BUILD_DIR)/.fwrtkernelconfig $(LINUX_DIR)/.config |
| 37 |
ifeq ($(KERNEL),2.4) |
| 38 |
$(SED) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" \ |
| 39 |
$(LINUX_DIR)/Makefile \ |
| 40 |
$(LINUX_DIR)/arch/*/Makefile |
| 41 |
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) |
| 42 |
env GCC_HONOUR_COPTS=s $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" dep $(MAKE_TRACE) |
| 43 |
else |
| 44 |
echo N | env GCC_HONOUR_COPTS=s $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" oldconfig $(MAKE_TRACE) |
| 45 |
env GCC_HONOUR_COPTS=s $(MAKE) -C $(LINUX_DIR) V=1 CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" prepare scripts $(MAKE_TRACE) HOSTCFLAGS='-O2 -idirafter ${TOPDIR}/scripts' |
| 46 |
endif |
| 47 |
touch -c $(LINUX_DIR)/.config |
| 48 |
|
| 49 |
$(LINUX_DIR)/vmlinux: $(LINUX_DIR)/.config |
| 50 |
ifneq ($(strip ${FWRT_INITRAMFS_SOURCE}),) |
| 51 |
cd ${TOPDIR} && cp $(strip ${FWRT_INITRAMFS_SOURCE}) \ |
| 52 |
${LINUX_DIR}/usr/initramfs_data.cpio.gz && \ |
| 53 |
touch ${LINUX_DIR}/usr/initramfs_data.cpio.gz |
| 54 |
endif |
| 55 |
$(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-compile |
| 56 |
env GCC_HONOUR_COPTS=s $(MAKE) -C $(LINUX_DIR) V=1 CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" $(MAKE_TRACE) HOSTCFLAGS='-O2 -idirafter ${TOPDIR}/scripts' |
| 57 |
$(TRACE) target/linux/$(BOARD)-$(KERNEL)-modules-compile |
| 58 |
env GCC_HONOUR_COPTS=s $(MAKE) -C "$(LINUX_DIR)" V=1 CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" modules $(MAKE_TRACE) HOSTCFLAGS='-O2 -idirafter ${TOPDIR}/scripts' |
| 59 |
$(TRACE) target/linux/$(BOARD)-$(KERNEL)-modules-install |
| 60 |
rm -rf $(LINUX_BUILD_DIR)/modules |
| 61 |
env GCC_HONOUR_COPTS=s $(MAKE) -C "$(LINUX_DIR)" V=1 CROSS_COMPILE="$(KERNEL_CROSS)" DEPMOD=true INSTALL_MOD_PATH=$(LINUX_BUILD_DIR)/modules modules_install $(MAKE_TRACE) HOSTCFLAGS='-O2 -idirafter ${TOPDIR}/scripts' |
| 62 |
$(TRACE) target/linux/$(BOARD)-$(KERNEL)-create-packages |
| 63 |
-mkdir $(BUILD_DIR)/kmod-control |
| 64 |
env GCC_HONOUR_COPTS=s $(MAKE) $(KERNEL_IPKG) $(TARGETS) $(MAKE_TRACE) |
| 65 |
touch -c $(LINUX_DIR)/vmlinux |
| 66 |
|
| 67 |
$(LINUX_KERNEL): $(LINUX_DIR)/vmlinux |
| 68 |
$(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-strip |
| 69 |
ifeq ($(KERNEL),2.4) |
| 70 |
ifeq ($(BOARD),brcm) |
| 71 |
ifneq ($(FS),nfs) |
| 72 |
$(TARGET_CROSS)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE) |
| 73 |
else |
| 74 |
$(TARGET_CROSS)objcopy -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE) |
| 75 |
endif |
| 76 |
else |
| 77 |
$(TARGET_CROSS)objcopy -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE) |
| 78 |
endif |
| 79 |
else |
| 80 |
ifeq ($(BOARD),brcm) |
| 81 |
$(TARGET_CROSS)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE) |
| 82 |
endif |
| 83 |
endif |
| 84 |
|
| 85 |
$(KERNEL_IPKG): |
| 86 |
$(TRACE) target/linux/$(BOARD)-$(KERNEL)-$(DEVICE)-$(FS)-create-kernel-package |
| 87 |
rm -rf $(KERNEL_IDIR) |
| 88 |
mkdir -p $(KERNEL_IDIR)/etc |
| 89 |
${MBSH} ${SCRIPT_DIR}/make-ipkg-dir.sh ${KERNEL_IDIR} \ |
| 90 |
../kernel.control ${BOARD}-${KERNEL}-${LINUX_VERSION} ${ARCH} |
| 91 |
$(IPKG_BUILD) $(KERNEL_IDIR) $(PACKAGE_DIR) $(MAKE_TRACE) |
| 92 |
|
| 93 |
prepare: |
| 94 |
compile: $(LINUX_KERNEL) |
| 95 |
|
| 96 |
install: compile |
| 97 |
env GCC_HONOUR_COPTS=s $(MAKE) $(KPKG_MAKEOPTS) $(LINUX_KERNEL) $(MAKE_TRACE) |
| 98 |
$(TRACE) target/linux/$(BOARD)-$(KERNEL)-modules-install |
| 99 |
rm -rf ${LINUX_BUILD_DIR}/root* |
| 100 |
cd ${BUILD_DIR} && pax -rw -pe root ${LINUX_BUILD_DIR}/ |
| 101 |
printf '%s\n%s\n' 'dest root /' \ |
| 102 |
'option offline_root $(LINUX_BUILD_DIR)/root' \ |
| 103 |
>$(LINUX_BUILD_DIR)/ipkg.conf |
| 104 |
ifneq ($(strip $(INSTALL_TARGETS)),) |
| 105 |
$(IPKG_KERNEL) install $(INSTALL_TARGETS) $(MAKE_TRACE) |
| 106 |
endif |
| 107 |
|
| 108 |
noinstall: |
| 109 |
rm -rf ${LINUX_BUILD_DIR}/root* |
| 110 |
cd ${BUILD_DIR} && pax -rw -pe root ${LINUX_BUILD_DIR}/ |
| 111 |
printf '%s\n%s\n' 'dest root /' \ |
| 112 |
'option offline_root $(LINUX_BUILD_DIR)/root' \ |
| 113 |
>$(LINUX_BUILD_DIR)/ipkg.conf |
| 114 |
|
| 115 |
clean: |
| 116 |
rm -rf $(LINUX_BUILD_DIR) |
| 117 |
rm -f $(TARGETS) |