Makefile.inc revision 1.127 1 # $NetBSD: Makefile.inc,v 1.127 2022/08/21 15:01:08 brook Exp $
2 #
3 # etc.evbarm/Makefile.inc -- evbarm-specific etc Makefile targets
4 #
5
6 MKIMAGE= ${NETBSDSRCDIR}/distrib/utils/embedded/mkimage
7
8 # If you change the list of distributed kernels, don't forget
9 # to update the release documentation in distrib/notes/common/contents
10 EVBARM_BOARDS=
11 .for i in armv4 xscale armv5t armv6 armv7 arm64
12 EVBARM_BOARDS.${i}=
13 .endfor
14
15 .if !empty(MACHINE_ARCH:M*eb)
16 IMAGEENDIAN= be
17 # big endian boards
18 KERNEL_SETS.armv4+= IXM1200
19
20 EVBARM_BOARDS.xscale+= ADI_BRH
21 KERNEL_SETS.xscale+= NSLU2
22
23 EVBARM_BOARDS.armv5t+= KUROBOX_PRO
24 KERNEL_SETS.armv5t+= OPENBLOCKS_A6
25 # Other marvell-based machines may also work but not tested yet.
26
27 EVBARM_BOARDS.armv6+= RPI
28 EVBARM_BOARDS.armv6hf+= RPI
29 KERNEL_SETS.armv6+= RPI2
30 KERNEL_SETS.armv6hf+= RPI2
31
32 KERNEL_SETS.armv7+= GENERIC
33 KERNEL_SETS.armv7hf+= GENERIC
34 KERNEL_SETS.arm64+= GENERIC64
35 .else
36 IMAGEENDIAN= le
37 # little endian boards
38 #EVBARM_BOARDS.armv4+= ARMADILLO210
39 #EVBARM_BOARDS.armv4+= ARMADILLO9
40 EVBARM_BOARDS.armv4+= GEMINI
41 EVBARM_BOARDS.armv4+= INTEGRATOR
42 EVBARM_BOARDS.armv4+= INTEGRATOR_CP
43 KERNEL_SETS.armv4+= IXM1200
44 #EVBARM_BOARDS.armv4+= MINI2440
45 #EVBARM_BOARDS.armv4+= MPCSA_GENERIC
46 #EVBARM_BOARDS.armv4+= NAPPI
47 EVBARM_BOARDS.armv4+= SMDK2410
48 EVBARM_BOARDS.armv4+= SMDK2800
49 EVBARM_BOARDS.armv4+= TS7200
50
51 EVBARM_BOARDS.xscale+= ADI_BRH
52 EVBARM_BOARDS.xscale+= CP3100
53 EVBARM_BOARDS.xscale+= GUMSTIX
54 KERNEL_SETS.xscale+= HDL_G
55 EVBARM_BOARDS.xscale+= IQ80310
56 EVBARM_BOARDS.xscale+= IQ80321
57 #EVBARM_BOARDS.xscale+= LUBBOCK
58 EVBARM_BOARDS.xscale+= TEAMASA_NPWR
59 EVBARM_BOARDS.xscale+= TWINTAIL
60 #EVBARM_BOARDS.xscale+= VIPER
61 #EVBARM_BOARDS.xscale+= ZAO425
62
63 #EVBARM_BOARDS.armv5t+= DNS323
64 #EVBARM_BOARDS.armv5t+= HPT5325
65 #EVBARM_BOARDS.armv5t+= IMX23_OLINUXINO
66 EVBARM_BOARDS.armv5t+= KUROBOX_PRO
67 #EVBARM_BOARDS.armv5t+= MARVELL_NAS
68 #EVBARM_BOARDS.armv5t+= MMNET_GENERIC
69 EVBARM_BOARDS.armv5t+= MV2120
70 KERNEL_SETS.armv5t+= OPENBLOCKS_A6
71 EVBARM_BOARDS.armv5t+= OPENRD
72 #EVBARM_BOARDS.armv5t+= OSK5912
73 EVBARM_BOARDS.armv5t+= SHEEVAPLUG
74
75 #EVBARM_BOARDS.armv6+= IMX31LITE
76 #EVBARM_BOARDS.armv6hf+= IMX31LITE
77 EVBARM_BOARDS.armv6+= RPI
78 EVBARM_BOARDS.armv6hf+= RPI
79 KERNEL_SETS.armv6+= RPI2
80 KERNEL_SETS.armv6hf+= RPI2
81 EVBARM_BOARDS.armv6+= TISDP2420
82 EVBARM_BOARDS.armv6hf+= TISDP2420
83 #EVBARM_BOARDS.armv6+= TISDP2430
84
85 KERNEL_SETS.armv7+= GENERIC
86 KERNEL_SETS.armv7hf+= GENERIC
87 KERNEL_SETS.arm64+= GENERIC64
88 .endif
89
90 IMAGE.rel= ${RELEASEDIR}/${RELEASEMACHINEDIR}
91 IMAGE.dir= ${IMAGE.rel}/binary/gzimg
92 IMAGE.kern= ${IMAGE.rel}/binary/kernel
93 IMAGE.instk= ${IMAGE.rel}/installation/instkernel
94
95 # list of boards supported by installboot(8); a bootable image will be
96 # created for each (if the corresponding U-Boot package is installed
97 # in one of the directories listed in the environment variable
98 # INSTALLBOOT_UBOOT_PATHS)
99 #
100 INSTALLBOOT_BOARDS!= \
101 ${TOOL_INSTALLBOOT} -m ${MACHINE} 2>&1 \
102 | ${TOOL_AWK} 'BEGIN { FS=" " } { if (BOARDS) print $$1 } /^Known boards/{ BOARDS=1 }'
103
104 __mkimage: .USE
105 TOOL_MAKE=${MAKE} \
106 TOOL_MAKEFS=${TOOL_MAKEFS} \
107 TOOL_DISKLABEL=${TOOL_DISKLABEL} \
108 TOOL_FDISK=${TOOL_FDISK} \
109 TOOL_GPT=${TOOL_GPT} \
110 TOOL_GZIP=${TOOL_GZIP} \
111 TOOL_MKNOD=${TOOL_MKNOD} \
112 TOOL_PAX=${TOOL_PAX} \
113 TOOL_MKUBOOTIMAGE=${TOOL_MKUBOOTIMAGE} \
114 TOOL_MTREE=${TOOL_MTREE} \
115 HOST_SH=${HOST_SH} \
116 KERNOBJDIR=${KERNOBJDIR} \
117 MACHINE=${MACHINE} \
118 MKDTB=${MKDTB} \
119 ${HOST_SH} ${MKIMAGE} -x -h ${.TARGET:S/smp_//} -D ${DESTDIR} \
120 -S ${NETBSDSRCDIR} -B ${IMAGEENDIAN} ${MKI_OPTS.${.TARGET}} \
121 ${IMAGE.dir}/${.TARGET:S/smp_//}.img.gz
122 ${TOOL_GZIP} -cd ${IMAGE.dir}/${.TARGET:S/smp_//}.img.gz \
123 > ${IMAGE.dir}/${.TARGET:S/smp_//}.img
124 .for f in ${INSTALLBOOT_BOARDS}
125 @echo "===> Making bootable image ${IMAGE.dir:T}/${.TARGET:S/smp_//}-${f}.img.gz"
126 @cp ${IMAGE.dir}/${.TARGET:S/smp_//}.img ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img
127 @${TOOL_INSTALLBOOT} -m ${MACHINE} -o board=${f} \
128 ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img \
129 && ${TOOL_GZIP} -f ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img \
130 || rm ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img
131 .endfor
132 rm ${IMAGE.dir}/${.TARGET:S/smp_//}.img
133
134 ARCHES.earmv4= armv4
135 ARCHES.earmv4eb= armv4
136 ARCHES.earmv5= xscale armv5t
137 ARCHES.earmv5eb= xscale armv5t
138 ARCHES.earmv6= armv6
139 ARCHES.earmv6hf= armv6hf
140 ARCHES.earmv6eb= armv6
141 ARCHES.earmv6hfeb= armv6hf
142 ARCHES.earmv7= armv7
143 ARCHES.earmv7hf= armv7hf
144 ARCHES.earmv7eb= armv7
145 ARCHES.earmv7hfeb= armv7hf
146 ARCHES.aarch64= arm64
147 ARCHES.aarch64eb= arm64
148 .for arch in ${ARCHES.${MACHINE_ARCH}}
149 .for board in ${EVBARM_BOARDS.${arch}}
150 KERNEL_SETS+= ${board}
151 BUILD_KERNELS+= ${board}_INSTALL
152 .endfor
153 KERNEL_SETS+= ${KERNEL_SETS.${arch}}
154 .endfor
155
156 .if !empty(MACHINE_ARCH:Maarch64*)
157 smp_efibootaa64:
158 cd ${KERNSRCDIR}/stand/efiboot/bootaa64 && ${MAKE} release
159 SNAP_MD_POST_DEPS+= smp_efibootaa64
160 INSTALLATION_DIRS+= installation/misc
161 .endif
162
163 .if !empty(MACHINE_ARCH:Mearmv7hf)
164 smp_efibootarm:
165 cd ${KERNSRCDIR}/stand/efiboot/bootarm && ${MAKE} release
166 SNAP_MD_POST_DEPS+= smp_efibootarm
167 INSTALLATION_DIRS+= installation/misc
168 .endif
169
170 .if !empty(MACHINE_ARCH:M*armv7*) && empty(ALL_KERNELS)
171 smp_armv7: __mkimage
172 MKI_OPTS.smp_armv7= -K ${IMAGE.kern}
173 SNAP_MD_POST_DEPS+= smp_armv7
174 .endif
175
176 .if !empty(MACHINE_ARCH:Maarch64*) && empty(ALL_KERNELS)
177 smp_arm64: __mkimage
178 MKI_OPTS.smp_arm64= -K ${IMAGE.kern}
179 SNAP_MD_POST_DEPS+= smp_arm64
180 smp_arm64mbr: __mkimage
181 MKI_OPTS.smp_arm64mbr= -K ${IMAGE.kern}
182 SNAP_MD_POST_DEPS+= smp_arm64mbr
183 .endif
184
185 .if !empty(KERNEL_SETS:MRPI)
186 smp_rpi: __mkimage
187 .if empty(ALL_KERNELS) || !empty(ALL_KERNELS:MRPI)
188 MKI_OPTS.smp_rpi= -K ${IMAGE.kern}/netbsd-RPI.img.gz
189 SNAP_MD_POST_DEPS+= smp_rpi
190 .endif
191 smp_rpi_inst: ${IMAGE.instk}/netbsd-RPI_INSTALL.img.gz __mkimage
192 .if empty(ALL_KERNELS) || !empty(ALL_KERNELS:MRPI_INSTALL)
193 MKI_OPTS.smp_rpi_inst= -b -K ${IMAGE.instk}/netbsd-RPI_INSTALL.img.gz
194 SNAP_MD_POST_DEPS+= smp_rpi_inst
195 .endif
196 .endif
197
198 snap_md_post: check_DESTDIR check_RELEASEDIR snap_post .WAIT ${SNAP_MD_POST_DEPS}
199
200 .if !empty(MACHINE_ARCH:Maarch64*)
201 KERNEL_SUFFIXES= img
202 .else
203 KERNEL_SUFFIXES= bin img srec ub
204 .endif
205
206 INSTALLATION_DIRS+= binary/gzimg \
207 installation/instkernel
208