CRUX-ARM : Home

Home :: Documentation :: Download :: Development :: Community :: Ports :: Packages :: Bugs :: Links :: About :: Donors
README: add fixup.dat to part1 file list
[kernel/raspberrypi2.git] / Makefile
1 #
2 # src/kernel/Makefile
3 #
4
5 TARGET = arm-crux-linux-gnueabihf
6
7 PWD = $(shell pwd)
8 WORK = $(PWD)/work
9 CROSSTOOLS = /devel/crux-arm/toolchain/crosstools
10
11 KERNEL_BRANCH = 4.5.y
12 KERNEL_VERSION = 4.5.4
13 PATCH_VERSION = 20160513
14
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
18
19
20 .PHONY: all clean config files image map menuconfig modules
21
22 all: image modules map dtb
23
24 clean: image-clean modules-clean map-clean dtb-clean
25
26 distclean: clean image-distclean modules-distclean dtb-distclean map-distclean
27
28 $(PWD)/$(KERNEL_TARBALL):
29 wget -P $(PWD) https://www.kernel.org/pub/linux/kernel/v4.x/$(KERNEL_TARBALL)
30 touch $@
31
32 $(PWD)/$(PATCH_FILE):
33 wget -P $(PWD) http://stygian.me/crux-arm/distfiles/$(PATCH_FILE)
34 touch $@
35
36 $(PWD)/$(CONFIG_FILE):
37 wget -P $(PWD) http://stygian.me/crux-arm/distfiles/$(CONFIG_FILE)
38 touch $@
39
40 files: $(PWD)/$(KERNEL_TARBALL) $(PWD)/$(PATCH_FILE) $(PWD)/$(CONFIG_FILE)
41
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
48 touch $@
49
50 $(WORK)/linux-$(KERNEL_VERSION)/.config: $(WORK)/linux-$(KERNEL_VERSION)
51 cp -v $(PWD)/$(CONFIG_FILE) $@
52 touch $@
53
54 config: files $(WORK)/linux-$(KERNEL_VERSION)/.config
55
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 $@
62 touch $@
63
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) $@
68 touch $@
69
70 image: $(WORK)/kernel7-$(KERNEL_VERSION).img
71
72 image-clean:
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 ; \
80 fi
81
82 image-distclean: image-clean
83 rm -rf $(WORK)/linux-$(KERNEL_VERSION)
84
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
90 rm -rf $(WORK)/dtb
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)
95
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 *
99
100 dtb: $(WORK)/dtb-$(KERNEL_VERSION).tar.xz
101
102 dtb-clean:
103 rm -f $(WORK)/dtb-$(KERNEL_VERSION).tar.xz
104 rm -rf $(WORK)/dtb-$(KERNEL_VERSION)
105
106 dtb-distclean: dtb-clean
107
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)
116
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
121
122 modules: $(WORK)/modules-$(KERNEL_VERSION).tar.xz
123
124 modules-clean:
125 rm -f $(WORK)/modules-$(KERNEL_VERSION).tar.xz
126 rm -rf $(WORK)/modules-$(KERNEL_VERSION)
127
128 modules-distclean: modules-clean
129
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)
133
134 map: $(WORK)/System.map-$(KERNEL_VERSION)
135
136 map-clean:
137 rm -f $(WORK)/System.map-$(KERNEL_VERSION)
138
139 map-distclean: map-clean
140
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)
147
148 # End of file