root/trunk/freewrt/mk/kernel-build.mk

Revision 3818, 6.3 kB (checked in by tg, 1 month ago)

prefix paxmirabilis tools, WFM

Line 
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 # applying kernel patches:
19 # 0. cwd is target/linux/${BOARD}
20 # 1. if ../generic-${KERNEL} (i.e. generic-2.4 or generic-2.6) exists,
21 #    apply patches from there
22 # 2. if ../generic-${UNAME_R} (i.e. e.g. generic-2.6.23.12) exists,
23 #    apply patches from there
24 # 3. if ./patches (vendor-specific stuff) exists, apply contained patches
25 # 4. if ./${DEVICE}/patches (device-specific stuff) exists, apply the patches
26
27 $(LINUX_BUILD_DIR)/.extract: ${_CHECKSUM_COOKIE}
28         $(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-prepare
29         test ! -e ${LINUX_BUILD_DIR}/linux-${LINUX_VERSION}/Rules.make || \
30             rm -rf ${LINUX_BUILD_DIR}
31         -mkdir -p $(LINUX_BUILD_DIR)
32         bzcat ${FULLDISTFILES} | (cd $(LINUX_BUILD_DIR); tar xf - )
33         rm -f $(BUILD_DIR)/linux
34         ln -s $(LINUX_BUILD_DIR)/linux-$(LINUX_VERSION) $(BUILD_DIR)/linux
35         $(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-patch
36         -[[ -d extra ]] && cd extra && mirpax -rw . ${LINUX_DIR}/
37         -[ -d ../generic-$(KERNEL)/patches ] && $(PATCH) $(LINUX_DIR) ../generic-$(KERNEL)/patches $(MAKE_TRACE)
38         -[ -d ../generic-${UNAME_R}/patches ] && $(PATCH) $(LINUX_DIR) ../generic-${UNAME_R}/patches $(MAKE_TRACE)
39         -[ -d ./patches ] && $(PATCH) $(LINUX_DIR) ./patches $(MAKE_TRACE)
40         -[ -d ./$(DEVICE)/patches ] && $(PATCH) $(LINUX_DIR) ./$(DEVICE)/patches $(MAKE_TRACE)
41         touch $@
42
43 MAKEJOBS:=
44 ifneq (${FWRT_MAKE_PARALLEL_KERNEL},)
45 MAKEJOBS:=      -j${FWRT_MAKE_JOBS}
46 endif
47
48 $(LINUX_DIR)/.config: $(LINUX_BUILD_DIR)/.extract $(BUILD_DIR)/.fwrtkernelconfig
49         $(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-configure
50         $(CP) $(BUILD_DIR)/.fwrtkernelconfig $(LINUX_DIR)/.config
51 ifneq ($(strip ${FWRT_INITRAMFS_SOURCE}),)
52         cd ${TOPDIR} && zcat -f $(strip ${FWRT_INITRAMFS_SOURCE}) \
53             >${LINUX_DIR}/fwrt-initramfs.cpio
54         echo 'CONFIG_INITRAMFS_SOURCE="${LINUX_DIR}/fwrt-initramfs.cpio"' >>$@
55 else
56         echo 'CONFIG_INITRAMFS_SOURCE=""' >>$@
57 endif
58 ifeq ($(KERNEL),2.4)
59         $(SED) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" \
60           $(LINUX_DIR)/Makefile  \
61           $(LINUX_DIR)/arch/*/Makefile
62         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)
63         env GCC_HONOUR_COPTS=s $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" dep $(MAKE_TRACE)
64 else
65         echo N | env GCC_HONOUR_COPTS=s $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" oldconfig $(MAKE_TRACE)
66         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'
67 endif
68         touch -c $(LINUX_DIR)/.config
69
70 $(LINUX_DIR)/vmlinux: $(LINUX_DIR)/.config
71         $(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-compile
72         env GCC_HONOUR_COPTS=s $(MAKE) -C $(LINUX_DIR) V=1 ${MAKEJOBS} CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" $(MAKE_TRACE) HOSTCFLAGS='-O2 -idirafter ${TOPDIR}/scripts'
73         $(TRACE) target/linux/$(BOARD)-$(KERNEL)-modules-compile
74         env GCC_HONOUR_COPTS=s $(MAKE) -C "$(LINUX_DIR)" V=1 ${MAKEJOBS} CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(LINUX_KARCH) CC="$(TARGET_CC)" modules $(MAKE_TRACE) HOSTCFLAGS='-O2 -idirafter ${TOPDIR}/scripts'
75         $(TRACE) target/linux/$(BOARD)-$(KERNEL)-modules-install
76         rm -rf $(LINUX_BUILD_DIR)/modules
77         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'
78         $(TRACE) target/linux/$(BOARD)-$(KERNEL)-create-packages
79         -mkdir $(BUILD_DIR)/kmod-control
80         env GCC_HONOUR_COPTS=s $(MAKE) $(KERNEL_IPKG) $(TARGETS) $(MAKE_TRACE)
81         touch -c $(LINUX_DIR)/vmlinux
82
83 $(LINUX_KERNEL): $(LINUX_DIR)/vmlinux
84         $(TRACE) target/linux/$(BOARD)-$(KERNEL)-kernel-strip
85 ifeq ($(KERNEL),2.4)
86 ifeq ($(BOARD),brcm)
87 ifneq ($(FS),nfs)
88         $(TARGET_CROSS)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE)
89 else
90         $(TARGET_CROSS)objcopy -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE)
91 endif
92 else
93         $(TARGET_CROSS)objcopy -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE)
94 endif
95 else
96 ifeq ($(BOARD),brcm)
97         $(TARGET_CROSS)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE)
98 else
99 ifeq ($(BOARD),atheros)
100         $(TARGET_CROSS)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE)
101 else
102         $(TARGET_CROSS)objcopy -R .reginfo -R .note -R .comment -R .mdebug -S $< $@ $(MAKE_TRACE)
103 endif
104 endif
105 endif
106
107 $(KERNEL_IPKG):
108         $(TRACE) target/linux/$(BOARD)-$(KERNEL)-$(DEVICE)-$(FS)-create-kernel-package
109         rm -rf $(KERNEL_IDIR)
110         mkdir -p $(KERNEL_IDIR)/etc
111         ${MBSH} ${SCRIPT_DIR}/make-ipkg-dir.sh ${KERNEL_IDIR} \
112             ../kernel.control ${BOARD}-${KERNEL}-${LINUX_VERSION} ${ARCH}
113         $(IPKG_BUILD) $(KERNEL_IDIR) $(PACKAGE_DIR) $(MAKE_TRACE)
114
115 prepare:
116 compile: $(LINUX_KERNEL)
117
118 install: compile
119         env GCC_HONOUR_COPTS=s $(MAKE) $(KPKG_MAKEOPTS) $(LINUX_KERNEL) $(MAKE_TRACE)
120         $(TRACE) target/linux/$(BOARD)-$(KERNEL)-modules-install
121         rm -rf ${LINUX_BUILD_DIR}/root*
122         cd ${BUILD_DIR} && mirpax -rw -pe root ${LINUX_BUILD_DIR}/
123         printf '%s\n%s\n' 'dest root /' \
124             'option offline_root $(LINUX_BUILD_DIR)/root' \
125             >$(LINUX_BUILD_DIR)/ipkg.conf
126 ifneq ($(strip $(INSTALL_TARGETS)),)
127         $(IPKG_KERNEL) install $(INSTALL_TARGETS) $(MAKE_TRACE)
128 endif
129
130 noinstall: compile
131         env GCC_HONOUR_COPTS=s $(MAKE) $(KPKG_MAKEOPTS) $(LINUX_KERNEL) $(MAKE_TRACE)
132         rm -rf ${LINUX_BUILD_DIR}/root*
133         cd ${BUILD_DIR} && mirpax -rw -pe root ${LINUX_BUILD_DIR}/
134         printf '%s\n%s\n' 'dest root /' \
135             'option offline_root $(LINUX_BUILD_DIR)/root' \
136             >$(LINUX_BUILD_DIR)/ipkg.conf
137 ifneq ($(strip ${NOINSTALL_TARGETS}),)
138         ${IPKG_KERNEL} install ${NOINSTALL_TARGETS} ${MAKE_TRACE}
139 endif
140
141 clean:
142         rm -rf $(LINUX_BUILD_DIR)
143         rm -f $(TARGETS)
Note: See TracBrowser for help on using the browser.