5 TARGET
= arm-crux-linux-gnueabihf
9 CROSSTOOLS
= /devel
/crux-arm
/toolchain
/crosstools
12 KERNEL_VERSION
= 4.5.4
13 PATCH_VERSION
= 20160513
15 CONFIG_FILE
= config-
$(KERNEL_VERSION
)-raspberrypi2_
$(PATCH_VERSION
)
16 PATCH_FILE
= linux-
$(KERNEL_BRANCH
)-rpi-
$(PATCH_VERSION
).patch
17 KERNEL_TARBALL
= linux-
$(KERNEL_VERSION
).
tar.xz
20 .PHONY
: all clean config files image map menuconfig modules
22 all: image modules map dtb
24 clean: image-clean modules-clean map-clean dtb-clean
26 distclean: clean image-distclean modules-distclean dtb-distclean map-distclean
28 $(PWD
)/$(KERNEL_TARBALL
):
29 wget
-P
$(PWD
) https
://www.kernel.org
/pub
/linux
/kernel
/v4.x
/$(KERNEL_TARBALL
)
33 wget
-P
$(PWD
) http
://stygian.me
/crux-arm
/distfiles
/$(PATCH_FILE
)
36 $(PWD
)/$(CONFIG_FILE
):
37 wget
-P
$(PWD
) http
://stygian.me
/crux-arm
/distfiles
/$(CONFIG_FILE
)
40 files
: $(PWD
)/$(KERNEL_TARBALL
) $(PWD
)/$(PATCH_FILE
) $(PWD
)/$(CONFIG_FILE
)
42 $(WORK
)/linux-
$(KERNEL_VERSION
):
43 bsdtar
-C
$(WORK
) -xf
$(PWD
)/$(KERNEL_TARBALL
)
44 patch
-d
$(WORK
)/linux-
$(KERNEL_VERSION
) -p1
-i
$(PWD
)/$(PATCH_FILE
)
45 sed
-e
's|LINUX_COMPILE_BY=.*|LINUX_COMPILE_BY=devel|' \
46 -e
's|LINUX_COMPILE_HOST=.*|LINUX_COMPILE_HOST=crux-arm.nu|' \
47 -i
$(WORK
)/linux-
$(KERNEL_VERSION
)/scripts
/mkcompile_h
50 $(WORK
)/linux-
$(KERNEL_VERSION
)/.config
: $(WORK
)/linux-
$(KERNEL_VERSION
)
51 cp
-v
$(PWD
)/$(CONFIG_FILE
) $@
54 config
: files
$(WORK
)/linux-
$(KERNEL_VERSION
)/.config
56 $(WORK
)/zImage-
$(KERNEL_VERSION
): config
57 cd
$(WORK
)/linux-
$(KERNEL_VERSION
) && \
58 export PATH
=$(CROSSTOOLS
)/bin
:$$PATH && \
59 export LD_LIBRARY_PATH
=$(CROSSTOOLS
)/lib
:$$LD_LIBRARY_PATH && \
60 make ARCH
=arm CROSS_COMPILE
=$(TARGET
)- zImage
61 cp
-v
$(WORK
)/linux-
$(KERNEL_VERSION
)/arch
/arm
/boot
/zImage
$@
64 $(WORK
)/kernel7-
$(KERNEL_VERSION
).img
: $(WORK
)/zImage-
$(KERNEL_VERSION
)
65 chmod
+x
$(WORK
)/linux-
$(KERNEL_VERSION
)/scripts
/mkknlimg
66 cd
$(WORK
)/linux-
$(KERNEL_VERSION
) && \
67 .
/scripts
/mkknlimg
$(WORK
)/zImage-
$(KERNEL_VERSION
) $@
70 image
: $(WORK
)/kernel7-
$(KERNEL_VERSION
).img
73 rm -f
$(WORK
)/zImage-
$(KERNEL_VERSION
)
74 rm -f
$(WORK
)/kernel7-
$(KERNEL_VERSION
).img
75 if
[ -d
$(WORK
)/linux-
$(KERNEL_VERSION
)/.config
]; then \
76 cd
$(WORK
)/linux-
$(KERNEL_VERSION
) && \
77 export PATH
=$(CROSSTOOLS
)/bin
:$$PATH && \
78 export LD_LIBRARY_PATH
=$(CROSSTOOLS
)/lib
:$$LD_LIBRARY_PATH && \
79 make ARCH
=arm CROSS_COMPILE
=$(TARGET
)- clean ; \
82 image-distclean
: image-clean
83 rm -rf
$(WORK
)/linux-
$(KERNEL_VERSION
)
85 $(WORK
)/dtb-
$(KERNEL_VERSION
): $(WORK
)/linux-
$(KERNEL_VERSION
)
86 cd
$(WORK
)/linux-
$(KERNEL_VERSION
) && \
87 export PATH
=$(CROSSTOOLS
)/bin
:$$PATH && \
88 export LD_LIBRARY_PATH
=$(CROSSTOOLS
):$$LD_LIBRARY_PATH && \
89 make ARCH
=arm CROSS_COMPILE
=$(TARGET
)- dtbs
91 mkdir
-p
$(WORK
)/dtb
/overlays
92 cp
$(WORK
)/linux-
$(KERNEL_VERSION
)/arch
/arm
/boot
/dts
/*.dtb
$(WORK
)/dtb
93 cp
$(WORK
)/linux-
$(KERNEL_VERSION
)/arch
/arm
/boot
/dts
/overlays
/*.dtb
* $(WORK
)/dtb
/overlays
94 mv
$(WORK
)/dtb
$(WORK
)/dtb-
$(KERNEL_VERSION
)
96 $(WORK
)/dtb-
$(KERNEL_VERSION
).
tar.xz
: $(WORK
)/dtb-
$(KERNEL_VERSION
)
97 cd
$(WORK
)/dtb-
$(KERNEL_VERSION
) && \
98 bsdtar
--uid
0 --gid
0 -cvJf
$(WORK
)/dtb-
$(KERNEL_VERSION
).
tar.xz
*
100 dtb
: $(WORK
)/dtb-
$(KERNEL_VERSION
).
tar.xz
103 rm -f
$(WORK
)/dtb-
$(KERNEL_VERSION
).
tar.xz
104 rm -rf
$(WORK
)/dtb-
$(KERNEL_VERSION
)
106 dtb-distclean
: dtb-clean
108 $(WORK
)/modules-
$(KERNEL_VERSION
): $(WORK
)/linux-
$(KERNEL_VERSION
)
109 cd
$(WORK
)/linux-
$(KERNEL_VERSION
) && \
110 export PATH
=$(CROSSTOOLS
)/bin
:$$PATH && \
111 export LD_LIBRARY_PATH
=$(LD_LIBRARY_PATH
)/lib
:$$LD_LIBRARY_PATH && \
112 make ARCH
=arm CROSS_COMPILE
=$(TARGET
)- modules
&& \
113 make ARCH
=arm CROSS_COMPILE
=$(TARGET
)- INSTALL_MOD_PATH
=$(WORK
)/modules-
$(KERNEL_VERSION
) modules_install
114 rm -f
$(WORK
)/modules-
$(KERNEL_VERSION
)/lib
/modules
/$(KERNEL_VERSION
)/{source
,build
}
115 touch
$(WORK
)/modules-
$(KERNEL_VERSION
)
117 $(WORK
)/modules-
$(KERNEL_VERSION
).
tar.xz
: $(WORK
)/modules-
$(KERNEL_VERSION
)
118 cd
$(WORK
)/modules-
$(KERNEL_VERSION
) && \
119 bsdtar
--uid
0 --gid
0 -cvJf
$(WORK
)/modules-
$(KERNEL_VERSION
).
tar.xz
*
120 touch
$(WORK
)/modules-
$(KERNEL_VERSION
).
tar.xz
122 modules
: $(WORK
)/modules-
$(KERNEL_VERSION
).
tar.xz
125 rm -f
$(WORK
)/modules-
$(KERNEL_VERSION
).
tar.xz
126 rm -rf
$(WORK
)/modules-
$(KERNEL_VERSION
)
128 modules-distclean
: modules-clean
130 $(WORK
)/System.map-
$(KERNEL_VERSION
): $(WORK
)/zImage-
$(KERNEL_VERSION
)
131 cp
$(WORK
)/linux-
$(KERNEL_VERSION
)/System.map
$(WORK
)/System.map-
$(KERNEL_VERSION
)
132 touch
$(WORK
)/System.map-
$(KERNEL_VERSION
)
134 map
: $(WORK
)/System.map-
$(KERNEL_VERSION
)
137 rm -f
$(WORK
)/System.map-
$(KERNEL_VERSION
)
139 map-distclean
: map-clean
141 menuconfig
: $(WORK
)/linux-
$(KERNEL_VERSION
)
142 cd
$(WORK
)/linux-
$(KERNEL_VERSION
) && \
143 export PATH
=$(CROSSTOOLS
)/bin
:$$PATH && \
144 export LD_LIBRARY_PATH
=$(CROSSTOOLS
)/lib
:$$LD_LIBRARY_PATH && \
145 make ARCH
=arm CROSS_COMPILE
=$(TARGET
)- menuconfig
146 touch
$(WORK
)/linux-
$(KERNEL_VERSION
)