1 # Makefile for building the IXP4xx kernel.
3 # Based on the build script for the Loft from Giant Shoulder, Inc.
5 # Based on the great work done in OpenEmbedded for the Linksys NSLU2
6 # written by the nslu2-linux development community.
8 # This builds the kernel in the linux-${REVISION} directory.
9 # It then installs all the kernel modules in lib
10 # and creates a tarball there containing all the modules
11 # under the lib/modules/${REVISION} directory.
13 # N.B. You may need to change your crosstool path
33 # CROSS_COMPILE = /home/slug/angstrom/tmp/cross/bin/${ARCH}-angstrom-linux-gnueabi-
35 REVISION
:= $(shell sed
-e
's/-\(git\|v\).*//' patches
/${PATCHVER}/KERNEL
)
36 SNAPSHOT
:= $(shell sed
-e
's/-v.*//' patches
/${PATCHVER}/KERNEL
)
37 COMMITID
:= $(shell sed
-e
's/.*-\(v[0-9.]*.*\)/\1/' patches
/${PATCHVER}/KERNEL
)
39 APEX_REVISION
= 1.5.13
42 ARM_KERNEL_SHIM_REVISION
= 1.5
52 KERNEL_SOURCE
= http
://www2.kernel.org
/pub
/linux
/kernel
/v
${MAJORVER}/linux-
${BASEVER}.
tar.bz2
53 KERNEL_PATCH
= http
://www2.kernel.org
/pub
/linux
/kernel
/v
${MAJORVER}/testing
/patch-
${REVISION}.bz2
54 KERNEL_SNAPSHOT
= http
://www2.kernel.org
/pub
/linux
/kernel
/v
${MAJORVER}/snapshots
/patch-
${SNAPSHOT}.bz2
56 APEX_SOURCE
= ftp
://ftp.buici.com
/pub
/apex
/apex-
${APEX_REVISION}.
tar.gz
58 ARM_KERNEL_SHIM_SOURCE
= ftp
://ftp.buici.com
/pub
/arm
/arm-kernel-shim
/arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION}.
tar.gz
60 # CROSS_COMPILE ?= ${ARCH}-linux-gnu-
61 CROSS_COMPILE ?
= ${ARCH}-linux-
64 CROSS_COMPILE_FLAGS
= CROSS_COMPILE
=${CROSS_COMPILE}
69 all: kernel modules arm-kernel-shim apex
71 kernel
: vmlinuz-nslu2-
${SNAPSHOT}-${ARCH} vmlinuz-nas100d-
${SNAPSHOT}-${ARCH} vmlinuz-ixp4xx-
${SNAPSHOT}-${ARCH} vmlinuz-dsmg600-
${SNAPSHOT}-${ARCH} vmlinuz-fsg3-
${SNAPSHOT}-${ARCH}
72 modules
: modules-
${SNAPSHOT}-${ARCH}.
tar.gz
73 patched
: linux-
${SNAPSHOT}-${ARCH}/.config
74 apex
: apex-
${APEX_CONFIG}-nslu2-
${ARCH}-${APEX_REVISION}.bin \
75 apex-
${APEX_CONFIG}-nslu2-16mb-
${ARCH}-${APEX_REVISION}.bin \
76 apex-
${APEX_CONFIG}-nas100d-
${ARCH}-${APEX_REVISION}.bin \
77 apex-
${APEX_CONFIG}-dsmg600-
${ARCH}-${APEX_REVISION}.bin \
78 apex-
${APEX_CONFIG}-fsg3-
${ARCH}-${APEX_REVISION}.bin
80 arm-kernel-shim-nslu2
${ENDIAN}e.bin \
81 arm-kernel-shim-nas100d
${ENDIAN}e.bin \
82 arm-kernel-shim-dsmg600
${ENDIAN}e.bin \
83 arm-kernel-shim-fsg3
${ENDIAN}e.bin
85 apex-
${APEX_CONFIG}-%-${ARCH}-${APEX_REVISION}.bin
: apex-
${APEX_REVISION}/src
/mach-ixp42x
/${APEX_CONFIG}-%-${ARCH}_config
86 ( cd apex-
${APEX_REVISION} ; \
87 ${MAKE} ${CROSS_COMPILE_FLAGS} ARCH
=arm
clean ; \
88 ${MAKE} ${CROSS_COMPILE_FLAGS} ARCH
=arm
${APEX_CONFIG}-$*-${ARCH}_config
)
89 ( cd apex-
${APEX_REVISION} ; \
90 ${MAKE} ${CROSS_COMPILE_FLAGS} ARCH
=arm
all )
92 devio
'<<'apex-
${APEX_REVISION}/apex.bin
>$@
'cp$$'
94 devio
'<<'apex-
${APEX_REVISION}/apex.bin
>$@
'xp $$,4'
97 .PRECIOUS
: apex-
${APEX_REVISION}/src
/mach-ixp42x
/${APEX_CONFIG}-%-${ARCH}_config
99 apex-
${APEX_REVISION}/src
/mach-ixp42x
/${APEX_CONFIG}-%-${ARCH}_config
: \
100 downloads
/apex-
${APEX_REVISION}.
tar.gz
101 [ -e apex-
${APEX_REVISION} ] || \
102 ( tar zxf downloads
/apex-
${APEX_REVISION}.
tar.gz
; \
103 cd apex-
${APEX_REVISION} ; \
104 ln
-s ..
/patches
/apex patches
; \
105 [ ! -e patches
/series
] || quilt push
-a
)
106 touch apex-
${APEX_REVISION}/Makefile
108 downloads
/apex-
${APEX_REVISION}.
tar.gz
:
109 [ -e downloads
/apex-
${APEX_REVISION}.
tar.gz
] || \
110 ( mkdir
-p downloads
; cd downloads
; \
111 wget
${APEX_SOURCE} )
113 arm-kernel-shim-
%${ENDIAN}e.bin
: arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION}/config-
%${ENDIAN}e.h
114 ( cd arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION} ; \
115 mv config.h config.h.orig
; cp config-
$*${ENDIAN}e.h config.h
; \
116 ${MAKE} ${CROSS_COMPILE_FLAGS} clean arm-kernel-shim.bin
)
117 cp arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION}/arm-kernel-shim.bin \
118 arm-kernel-shim-
$*${ENDIAN}e.bin
120 arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION}/config-
%${ENDIAN}e.h
: \
121 downloads
/arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION}.
tar.gz
122 [ -e arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION} ] || \
123 ( tar zxf downloads
/arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION}.
tar.gz
; \
124 cd arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION} ; \
125 ln
-s ..
/patches
/arm-kernel-shim patches
; \
126 [ ! -e patches
/series
] || quilt push
-a
)
128 sed
-e
's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' patches
/arm-kernel-shim
/config-
$*.h \
129 > arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION}/config-
$*${ENDIAN}e.h
131 sed
-e
's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' patches
/arm-kernel-shim
/config-
$*.h \
132 > arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION}/config-
$*${ENDIAN}e.h
135 downloads
/arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION}.
tar.gz
:
136 [ -e downloads
/arm-kernel-shim-
${ARM_KERNEL_SHIM_REVISION}.
tar.gz
] || \
137 ( mkdir
-p downloads
; cd downloads
; \
138 wget
${ARM_KERNEL_SHIM_SOURCE} )
140 modules-
${SNAPSHOT}-${ARCH}.
tar.gz
: vmlinuz-
${SNAPSHOT}-${ARCH}
141 ( cd linux-
${SNAPSHOT}-${ARCH} ; \
142 INSTALL_MOD_PATH
="../modules-${SNAPSHOT}-${ARCH}" ${MAKE} ${CROSS_COMPILE_FLAGS} ARCH
=arm modules modules_install
) || true
143 rm -f modules-
${SNAPSHOT}-${ARCH}/lib
/modules
/${SNAPSHOT}/build modules-
${SNAPSHOT}-${ARCH}/lib
/modules
/${SNAPSHOT}/source
144 ifeq (${SNAPSHOT},${BASEVER})
145 tar -C modules-
${SNAPSHOT}-${ARCH} -zcf modules-
${SNAPSHOT}-${ARCH}.
tar.gz .
147 tar -C modules-
${SNAPSHOT}-${ARCH} -zcf modules-
${SNAPSHOT}-${ARCH}.
tar.gz .
150 vmlinuz-ixp4xx-
${SNAPSHOT}-${ARCH}: vmlinuz-
${SNAPSHOT}-${ARCH}
162 vmlinuz-
%-${SNAPSHOT}-${ARCH}: vmlinuz-
${SNAPSHOT}-${ARCH} arm-kernel-shim-
%${ENDIAN}e.bin
164 cat arm-kernel-shim-
$*${ENDIAN}e.bin vmlinuz-
${SNAPSHOT}-${ARCH} > $@
166 ( cat arm-kernel-shim-
$*${ENDIAN}e.bin vmlinuz-
${SNAPSHOT}-${ARCH} > $$$$ ; \
167 devio
'<<'$$$$ >$@
'xp $$,4' ; \
171 vmlinuz-
${SNAPSHOT}-${ARCH}: linux-
${SNAPSHOT}-${ARCH}/.config
172 ( cd linux-
${SNAPSHOT}-${ARCH} ; \
173 ${MAKE} ${CROSS_COMPILE_FLAGS} ARCH
=arm bzImage
)
174 cp linux-
${SNAPSHOT}-${ARCH}/arch
/arm
/boot
/zImage vmlinuz-
${SNAPSHOT}-${ARCH}
176 menuconfig
: linux-
${SNAPSHOT}-${ARCH}/.config
177 ${MAKE} -C linux-
${SNAPSHOT}-${ARCH} ARCH
=arm CROSS_COMPILE
=${CROSS_COMPILE} menuconfig
179 ifneq (${SNAPSHOT},${COMMITID})
180 linux-
${SNAPSHOT}-${ARCH}/.config
: \
181 patches
/${PATCHVER}/$(DEFCONFIG
)
182 [ -e linux-
${SNAPSHOT}-${ARCH} ] || \
184 git
://git.kernel.org
/pub
/scm
/linux
/kernel
/git
/torvalds
/linux-2.6.git \
185 linux-
${SNAPSHOT}-${ARCH} )
186 ( cd linux-
${SNAPSHOT}-${ARCH} ; \
187 git checkout master
; \
188 git reset
--hard
${COMMITID} ; \
190 ( cd linux-
${SNAPSHOT}-${ARCH} ; \
191 ln
-s ..
/patches
/${PATCHVER} patches
; \
194 ifeq (${SNAPSHOT},${BASEVER})
195 linux-
${SNAPSHOT}-${ARCH}/.config
: \
196 downloads
/linux-
${BASEVER}.
tar.bz2 \
197 patches
/${PATCHVER}/$(DEFCONFIG
)
198 [ -e linux-
${SNAPSHOT}-${ARCH} ] || \
199 ( tar xjf downloads
/linux-
${BASEVER}.
tar.bz2
; \
200 mv linux-
${BASEVER} linux-
${SNAPSHOT}-${ARCH} ; \
201 cd linux-
${SNAPSHOT}-${ARCH} ; \
202 ln
-s ..
/patches
/${PATCHVER} patches
; \
205 ifeq (${REVISION},${SNAPSHOT})
206 linux-
${SNAPSHOT}-${ARCH}/.config
: \
207 downloads
/linux-
${BASEVER}.
tar.bz2 \
208 downloads
/patch-
${REVISION}.bz2 \
209 patches
/${PATCHVER}/$(DEFCONFIG
)
210 [ -e linux-
${SNAPSHOT}-${ARCH} ] || \
211 ( tar xjf downloads
/linux-
${BASEVER}.
tar.bz2
; \
212 mv linux-
${BASEVER} linux-
${SNAPSHOT}-${ARCH} ; \
213 bzcat downloads
/patch-
${REVISION}.bz2 | \
214 patch
-d linux-
${SNAPSHOT}-${ARCH} -p1
; \
215 cd linux-
${SNAPSHOT}-${ARCH} ; \
216 ln
-s ..
/patches
/${PATCHVER} patches
; \
219 ifeq (${REVISION},${BASEVER})
220 linux-
${SNAPSHOT}-${ARCH}/.config
: \
221 downloads
/linux-
${BASEVER}.
tar.bz2 \
222 downloads
/patch-
${SNAPSHOT}.bz2 \
223 patches
/${PATCHVER}/$(DEFCONFIG
)
224 [ -e linux-
${SNAPSHOT}-${ARCH} ] || \
225 ( tar xjf downloads
/linux-
${BASEVER}.
tar.bz2
; \
226 mv linux-
${BASEVER} linux-
${SNAPSHOT}-${ARCH} ; \
227 bzcat downloads
/patch-
${SNAPSHOT}.bz2 | \
228 patch
-d linux-
${SNAPSHOT}-${ARCH} -p1
; \
229 cd linux-
${SNAPSHOT}-${ARCH} ; \
230 ln
-s ..
/patches
/${PATCHVER} patches
; \
233 linux-
${SNAPSHOT}-${ARCH}/.config
: \
234 downloads
/linux-
${BASEVER}.
tar.bz2 \
235 downloads
/patch-
${REVISION}.bz2 \
236 downloads
/patch-
${SNAPSHOT}.bz2 \
237 patches
/${PATCHVER}/$(DEFCONFIG
)
238 [ -e linux-
${SNAPSHOT}-${ARCH} ] || \
239 ( tar xjf downloads
/linux-
${BASEVER}.
tar.bz2
; \
240 mv linux-
${BASEVER} linux-
${SNAPSHOT}-${ARCH} ; \
241 bzcat downloads
/patch-
${REVISION}.bz2 downloads
/patch-
${SNAPSHOT}.bz2 | \
242 patch
-d linux-
${SNAPSHOT}-${ARCH} -p1
; \
243 cd linux-
${SNAPSHOT}-${ARCH} ; \
244 ln
-s ..
/patches
/${PATCHVER} patches
; \
251 sed
-e
's/.*CONFIG_CPU_BIG_ENDIAN.*/CONFIG_CPU_BIG_ENDIAN=y/' \
252 < patches
/${PATCHVER}/$(DEFCONFIG
) > linux-
${SNAPSHOT}-${ARCH}/.config
254 sed
-e
's/.*CONFIG_CPU_BIG_ENDIAN.*/\# CONFIG_CPU_BIG_ENDIAN is not set/' \
255 < patches
/${PATCHVER}/$(DEFCONFIG
) > linux-
${SNAPSHOT}-${ARCH}/.config
258 downloads
/linux-
${BASEVER}.
tar.bz2
:
259 [ -e downloads
/linux-
${BASEVER}.
tar.bz2
] || \
260 ( mkdir
-p downloads
; cd downloads
; \
261 wget
${KERNEL_SOURCE} )
263 downloads
/patch-
${REVISION}.bz2
:
264 [ -e downloads
/patch-
${REVISION}.bz2
] || \
265 ( mkdir
-p downloads
; cd downloads
; \
266 wget
${KERNEL_PATCH} )
268 ifneq (${REVISION},${SNAPSHOT})
269 downloads
/patch-
${SNAPSHOT}.bz2
:
270 [ -e downloads
/patch-
${SNAPSHOT}.bz2
] || \
271 ( mkdir
-p downloads
; cd downloads
; \
272 wget
${KERNEL_SNAPSHOT} )
278 clobber: clobber-apex clobber-arm-kernel-shim
279 rm -rf vmlinuz-
* modules-
*.
tar.gz
280 rm -rf linux-
* modules-
*
286 clobber-arm-kernel-shim
:
287 rm -rf arm-kernel-shim-
*
289 .PHONY
: all kernel menuconfig modules
clobber apex clobber-apex clobber-arm-kernel-shim