apex: Correct fsg3 rootfs location
[nslu2-linux/kernel.git] / Makefile
blobd50cb4a4705cac234ad0c6b939be632741efba5e
1 # Makefile for building the IXP4xx kernel.
3 # Based on the build script for the Loft from Giant Shoulder, Inc.
4 # written by Tommy B.
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
17 #ENDIAN = l
18 ENDIAN = b
19 MAJORVER = 2.6
21 # Previous Stable
22 # BASEVER = 2.6.18
23 # PATCHVER = 2.6.18
25 # Freecom FSG-3 support
26 # BASEVER = 2.6.18
27 # PATCHVER = 2.6.18-fsg3
28 # CROSS_COMPILE = /home/slug/fsg3-toolchain/tmp/cross/bin/${ARCH}-angstrom-linux-gnueabi-
30 # Latest Stable
31 BASEVER = 2.6.21.7
32 PATCHVER = 2.6.21
34 # Latest Development
35 # BASEVER = 2.6.23.11
36 # PATCHVER = 2.6.23
38 REVISION := $(shell sed -e 's/-git.*//' patches/${PATCHVER}/KERNEL)
39 SNAPSHOT := $(shell cat patches/${PATCHVER}/KERNEL)
41 APEX_REVISION = 1.5.13
42 APEX_CONFIG = slugos
44 ARM_KERNEL_SHIM_REVISION = 1.5
46 DEFCONFIG=defconfig
48 ifeq (${ENDIAN},b)
49 ARCH = armeb
50 else
51 ARCH = arm
52 endif
54 KERNEL_SOURCE = http://www2.kernel.org/pub/linux/kernel/v${MAJORVER}/linux-${BASEVER}.tar.bz2
55 KERNEL_PATCH = http://www2.kernel.org/pub/linux/kernel/v${MAJORVER}/testing/patch-${REVISION}.bz2
56 KERNEL_SNAPSHOT = http://www2.kernel.org/pub/linux/kernel/v${MAJORVER}/snapshots/patch-${SNAPSHOT}.bz2
58 APEX_SOURCE = ftp://ftp.buici.com/pub/apex/apex-${APEX_REVISION}.tar.gz
60 ARM_KERNEL_SHIM_SOURCE = ftp://ftp.buici.com/pub/arm/arm-kernel-shim/arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION}.tar.gz
62 #CROSS_COMPILE = ${ARCH}-linux-gnu-
63 CROSS_COMPILE ?= ${ARCH}-linux-
65 ifdef CROSS_COMPILE
66 CROSS_COMPILE_FLAGS = CROSS_COMPILE=${CROSS_COMPILE}
67 else
68 CROSS_COMPILE_FLAGS =
69 endif
71 all: kernel modules arm-kernel-shim apex
73 kernel: vmlinuz-nslu2-${SNAPSHOT}-${ARCH} vmlinuz-nas100d-${SNAPSHOT}-${ARCH} vmlinuz-ixp4xx-${SNAPSHOT}-${ARCH} vmlinuz-dsmg600-${SNAPSHOT}-${ARCH} vmlinuz-fsg3-${SNAPSHOT}-${ARCH}
74 modules: modules-${SNAPSHOT}-${ARCH}.tar.gz
75 patched: linux-${SNAPSHOT}-${ARCH}/.config
76 apex: apex-${APEX_CONFIG}-nslu2-${ARCH}-${APEX_REVISION}.bin \
77 apex-${APEX_CONFIG}-nslu2-16mb-${ARCH}-${APEX_REVISION}.bin \
78 apex-${APEX_CONFIG}-nas100d-${ARCH}-${APEX_REVISION}.bin \
79 apex-${APEX_CONFIG}-dsmg600-${ARCH}-${APEX_REVISION}.bin \
80 apex-${APEX_CONFIG}-fsg3-${ARCH}-${APEX_REVISION}.bin
81 arm-kernel-shim: \
82 arm-kernel-shim-nslu2${ENDIAN}e.bin \
83 arm-kernel-shim-nas100d${ENDIAN}e.bin \
84 arm-kernel-shim-dsmg600${ENDIAN}e.bin \
85 arm-kernel-shim-fsg3${ENDIAN}e.bin
87 apex-${APEX_CONFIG}-%-${ARCH}-${APEX_REVISION}.bin: apex-${APEX_REVISION}/src/mach-ixp42x/${APEX_CONFIG}-%-${ARCH}_config
88 ( cd apex-${APEX_REVISION} ; \
89 ${MAKE} ${CROSS_COMPILE_FLAGS} ARCH=arm clean ; \
90 ${MAKE} ${CROSS_COMPILE_FLAGS} ARCH=arm ${APEX_CONFIG}-$*-${ARCH}_config )
91 ( cd apex-${APEX_REVISION} ; \
92 ${MAKE} ${CROSS_COMPILE_FLAGS} ARCH=arm all )
93 ifeq (${ENDIAN},b)
94 devio '<<'apex-${APEX_REVISION}/apex.bin >$@ 'cp$$'
95 else
96 devio '<<'apex-${APEX_REVISION}/apex.bin >$@ 'xp $$,4'
97 endif
99 .PRECIOUS: apex-${APEX_REVISION}/src/mach-ixp42x/${APEX_CONFIG}-%-${ARCH}_config
101 apex-${APEX_REVISION}/src/mach-ixp42x/${APEX_CONFIG}-%-${ARCH}_config: \
102 downloads/apex-${APEX_REVISION}.tar.gz
103 [ -e apex-${APEX_REVISION} ] || \
104 ( tar zxf downloads/apex-${APEX_REVISION}.tar.gz ; \
105 cd apex-${APEX_REVISION} ; \
106 ln -s ../patches/apex patches ; \
107 [ ! -e patches/series ] || quilt push -a )
108 touch apex-${APEX_REVISION}/Makefile
110 downloads/apex-${APEX_REVISION}.tar.gz :
111 [ -e downloads/apex-${APEX_REVISION}.tar.gz ] || \
112 ( mkdir -p downloads ; cd downloads ; \
113 wget ${APEX_SOURCE} )
115 arm-kernel-shim-%${ENDIAN}e.bin: arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION}/config-%${ENDIAN}e.h
116 ( cd arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION} ; \
117 mv config.h config.h.orig ; cp config-$*${ENDIAN}e.h config.h ; \
118 ${MAKE} ${CROSS_COMPILE_FLAGS} clean arm-kernel-shim.bin )
119 cp arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION}/arm-kernel-shim.bin \
120 arm-kernel-shim-$*${ENDIAN}e.bin
122 arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION}/config-%${ENDIAN}e.h: \
123 downloads/arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION}.tar.gz
124 [ -e arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION} ] || \
125 ( tar zxf downloads/arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION}.tar.gz ; \
126 cd arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION} ; \
127 ln -s ../patches/arm-kernel-shim patches ; \
128 [ ! -e patches/series ] || quilt push -a )
129 ifeq (${ENDIAN},b)
130 sed -e 's|//#define FORCE_BIGENDIAN|#define FORCE_BIGENDIAN|' patches/arm-kernel-shim/config-$*.h \
131 > arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION}/config-$*${ENDIAN}e.h
132 else
133 sed -e 's|//#define FORCE_LITTLEENDIAN|#define FORCE_LITTLEENDIAN|' patches/arm-kernel-shim/config-$*.h \
134 > arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION}/config-$*${ENDIAN}e.h
135 endif
137 downloads/arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION}.tar.gz :
138 [ -e downloads/arm-kernel-shim-${ARM_KERNEL_SHIM_REVISION}.tar.gz ] || \
139 ( mkdir -p downloads ; cd downloads ; \
140 wget ${ARM_KERNEL_SHIM_SOURCE} )
142 modules-${SNAPSHOT}-${ARCH}.tar.gz: vmlinuz-${SNAPSHOT}-${ARCH}
143 ( cd linux-${SNAPSHOT}-${ARCH} ; \
144 INSTALL_MOD_PATH="../modules-${SNAPSHOT}-${ARCH}" ${MAKE} ${CROSS_COMPILE_FLAGS} ARCH=arm modules modules_install ) || true
145 rm -f modules-${SNAPSHOT}-${ARCH}/lib/modules/${SNAPSHOT}/build modules-${SNAPSHOT}-${ARCH}/lib/modules/${SNAPSHOT}/source
146 ifeq (${SNAPSHOT},${BASEVER})
147 tar -C modules-${SNAPSHOT}-${ARCH} -zcf modules-${SNAPSHOT}-${ARCH}.tar.gz .
148 else
149 tar -C modules-${SNAPSHOT}-${ARCH} -zcf modules-${SNAPSHOT}-${ARCH}.tar.gz .
150 endif
152 vmlinuz-ixp4xx-${SNAPSHOT}-${ARCH}: vmlinuz-${SNAPSHOT}-${ARCH}
153 ifeq (${ENDIAN},b)
154 devio '<<'$< >$@ \
155 'cp$$'
156 else
157 devio '<<'$< >$@ \
158 'wb 0xee110f10,4' \
159 'wb 0xe3c00080,4' \
160 'wb 0xee010f10,4' \
161 'xp $$,4'
162 endif
164 vmlinuz-%-${SNAPSHOT}-${ARCH}: vmlinuz-${SNAPSHOT}-${ARCH} arm-kernel-shim-%${ENDIAN}e.bin
165 ifeq (${ENDIAN},b)
166 cat arm-kernel-shim-$*${ENDIAN}e.bin vmlinuz-${SNAPSHOT}-${ARCH} > $@
167 else
168 ( cat arm-kernel-shim-$*${ENDIAN}e.bin vmlinuz-${SNAPSHOT}-${ARCH} > $$$$ ; \
169 devio '<<'$$$$ >$@ 'xp $$,4' ; \
170 rm -f $$$$ )
171 endif
173 vmlinuz-${SNAPSHOT}-${ARCH}: linux-${SNAPSHOT}-${ARCH}/.config
174 ( cd linux-${SNAPSHOT}-${ARCH} ; \
175 ${MAKE} ${CROSS_COMPILE_FLAGS} ARCH=arm bzImage )
176 cp linux-${SNAPSHOT}-${ARCH}/arch/arm/boot/zImage vmlinuz-${SNAPSHOT}-${ARCH}
178 menuconfig: linux-${SNAPSHOT}-${ARCH}/.config
179 ${MAKE} -C linux-${SNAPSHOT}-${ARCH} ARCH=arm CROSS_COMPILE=${CROSS_COMPILE} menuconfig
181 ifeq (${SNAPSHOT},${BASEVER})
182 linux-${SNAPSHOT}-${ARCH}/.config: \
183 downloads/linux-${BASEVER}.tar.bz2 \
184 patches/${PATCHVER}/series patches/${PATCHVER}/??-*.patch \
185 patches/${PATCHVER}/$(DEFCONFIG)
186 [ -e linux-${SNAPSHOT}-${ARCH} ] || \
187 ( tar xjf downloads/linux-${BASEVER}.tar.bz2 ; \
188 mv linux-${BASEVER} linux-${SNAPSHOT}-${ARCH} ; \
189 cd linux-${SNAPSHOT}-${ARCH} ; \
190 ln -s ../patches/${PATCHVER} patches ; \
191 quilt push -a )
192 else
193 ifeq (${REVISION},${SNAPSHOT})
194 linux-${SNAPSHOT}-${ARCH}/.config: \
195 downloads/linux-${BASEVER}.tar.bz2 \
196 downloads/patch-${REVISION}.bz2 \
197 patches/${PATCHVER}/series patches/${PATCHVER}/??-*.patch \
198 patches/${PATCHVER}/$(DEFCONFIG)
199 [ -e linux-${SNAPSHOT}-${ARCH} ] || \
200 ( tar xjf downloads/linux-${BASEVER}.tar.bz2 ; \
201 mv linux-${BASEVER} linux-${SNAPSHOT}-${ARCH} ; \
202 bzcat downloads/patch-${REVISION}.bz2 | \
203 patch -d linux-${SNAPSHOT}-${ARCH} -p1 ; \
204 cd linux-${SNAPSHOT}-${ARCH} ; \
205 ln -s ../patches/${PATCHVER} patches ; \
206 quilt push -a )
207 else
208 linux-${SNAPSHOT}-${ARCH}/.config: \
209 downloads/linux-${BASEVER}.tar.bz2 \
210 downloads/patch-${REVISION}.bz2 \
211 downloads/patch-${SNAPSHOT}.bz2 \
212 patches/${PATCHVER}/series patches/${PATCHVER}/??-*.patch \
213 patches/${PATCHVER}/$(DEFCONFIG)
214 [ -e linux-${SNAPSHOT}-${ARCH} ] || \
215 ( tar xjf downloads/linux-${BASEVER}.tar.bz2 ; \
216 mv linux-${BASEVER} linux-${SNAPSHOT}-${ARCH} ; \
217 bzcat downloads/patch-${REVISION}.bz2 downloads/patch-${SNAPSHOT}.bz2 | \
218 patch -d linux-${SNAPSHOT}-${ARCH} -p1 ; \
219 cd linux-${SNAPSHOT}-${ARCH} ; \
220 ln -s ../patches/${PATCHVER} patches ; \
221 quilt push -a )
222 endif
223 endif
224 ifeq (${ENDIAN},b)
225 sed -e 's/.*CONFIG_CPU_BIG_ENDIAN.*/CONFIG_CPU_BIG_ENDIAN=y/' \
226 < patches/${PATCHVER}/$(DEFCONFIG) > linux-${SNAPSHOT}-${ARCH}/.config
227 else
228 sed -e 's/.*CONFIG_CPU_BIG_ENDIAN.*/\# CONFIG_CPU_BIG_ENDIAN is not set/' \
229 < patches/${PATCHVER}/$(DEFCONFIG) > linux-${SNAPSHOT}-${ARCH}/.config
230 endif
232 downloads/linux-${BASEVER}.tar.bz2 :
233 [ -e downloads/linux-${BASEVER}.tar.bz2 ] || \
234 ( mkdir -p downloads ; cd downloads ; \
235 wget ${KERNEL_SOURCE} )
237 downloads/patch-${REVISION}.bz2 :
238 [ -e downloads/patch-${REVISION}.bz2 ] || \
239 ( mkdir -p downloads ; cd downloads ; \
240 wget ${KERNEL_PATCH} )
242 ifneq (${REVISION},${SNAPSHOT})
243 downloads/patch-${SNAPSHOT}.bz2 :
244 [ -e downloads/patch-${SNAPSHOT}.bz2 ] || \
245 ( mkdir -p downloads ; cd downloads ; \
246 wget ${KERNEL_SNAPSHOT} )
247 endif
249 downloads:
250 mkdir -p downloads
252 clobber: clobber-apex clobber-arm-kernel-shim
253 rm -rf vmlinuz-* modules-*.tar.gz
254 rm -rf linux-* modules-*
255 rm -rf *~
257 clobber-apex:
258 rm -rf apex-*
260 clobber-arm-kernel-shim:
261 rm -rf arm-kernel-shim-*
263 .PHONY: all kernel menuconfig modules clobber apex clobber-apex clobber-arm-kernel-shim
265 # End of Makefile