Makefile.inc revision 1.133 1 # $NetBSD: Makefile.inc,v 1.133 2024/12/31 08:02:48 jmmv 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
35 KERNEL_SETS.arm64+= GENERIC64
36 KERNEL_SETS.arm64+= GENERIC64_PMAPMI
37 .else
38 IMAGEENDIAN= le
39 # little endian boards
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+= SMDK2410
45 EVBARM_BOARDS.armv4+= SMDK2800
46 EVBARM_BOARDS.armv4+= TS7200
47
48 EVBARM_BOARDS.xscale+= ADI_BRH
49 EVBARM_BOARDS.xscale+= CP3100
50 EVBARM_BOARDS.xscale+= GUMSTIX
51 KERNEL_SETS.xscale+= HDL_G
52 EVBARM_BOARDS.xscale+= IQ80310
53 EVBARM_BOARDS.xscale+= IQ80321
54 EVBARM_BOARDS.xscale+= TEAMASA_NPWR
55 EVBARM_BOARDS.xscale+= TWINTAIL
56
57 EVBARM_BOARDS.armv5t+= KUROBOX_PRO
58 EVBARM_BOARDS.armv5t+= MV2120
59 KERNEL_SETS.armv5t+= OPENBLOCKS_A6
60 EVBARM_BOARDS.armv5t+= OPENRD
61 EVBARM_BOARDS.armv5t+= SHEEVAPLUG
62
63 EVBARM_BOARDS.armv6+= RPI
64 EVBARM_BOARDS.armv6hf+= RPI
65 KERNEL_SETS.armv6+= RPI2
66 KERNEL_SETS.armv6hf+= RPI2
67
68 KERNEL_SETS.armv7+= GENERIC
69 KERNEL_SETS.armv7hf+= GENERIC
70
71 KERNEL_SETS.arm64+= GENERIC64
72 KERNEL_SETS.arm64+= GENERIC64_PMAPMI
73 .endif
74
75 IMAGE.rel= ${RELEASEDIR}/${RELEASEMACHINEDIR}
76 IMAGE.dir= ${IMAGE.rel}/binary/gzimg
77 IMAGE.kern= ${IMAGE.rel}/binary/kernel
78 IMAGE.instk= ${IMAGE.rel}/installation/instkernel
79
80 __mkimage: .USE
81 TOOL_MAKE=${MAKE} \
82 TOOL_MAKEFS=${TOOL_MAKEFS} \
83 TOOL_DISKLABEL=${TOOL_DISKLABEL} \
84 TOOL_FDISK=${TOOL_FDISK} \
85 TOOL_GPT=${TOOL_GPT} \
86 TOOL_GZIP=${TOOL_GZIP} \
87 TOOL_MKNOD=${TOOL_MKNOD} \
88 TOOL_PAX=${TOOL_PAX} \
89 TOOL_MKUBOOTIMAGE=${TOOL_MKUBOOTIMAGE} \
90 TOOL_MTREE=${TOOL_MTREE} \
91 HOST_SH=${HOST_SH} \
92 KERNOBJDIR=${KERNOBJDIR} \
93 MACHINE=${MACHINE} \
94 MKDTB=${MKDTB} \
95 MKPOSTFIX=${MKPOSTFIX} \
96 ${HOST_SH} ${MKIMAGE} -x -h ${.TARGET:S/smp_//} -D ${DESTDIR} \
97 -S ${NETBSDSRCDIR} -B ${IMAGEENDIAN} ${MKI_OPTS.${.TARGET}} \
98 ${IMAGE.dir}/${.TARGET:S/smp_//}.img
99 .for f in ${INSTALLBOOT_BOARDS}
100 @echo "===> Making bootable image ${IMAGE.dir:T}/${.TARGET:S/smp_//}-${f}.img.gz"
101 @cp ${IMAGE.dir}/${.TARGET:S/smp_//}.img ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img
102 @${TOOL_INSTALLBOOT} -m ${MACHINE} -o board=${f} \
103 ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img \
104 && ${TOOL_GZIP} -f ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img \
105 || rm ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img
106 .endfor
107 @echo "===> Compressing image ${IMAGE.dir}/${.TARGET:S/smp_//}.img"
108 ${TOOL_GZIP} -f ${GZIP_N_FLAG} -9 ${IMAGE.dir}/${.TARGET:S/smp_//}.img
109
110 ARCHES.earmv4= armv4
111 ARCHES.earmv4eb= armv4
112 ARCHES.earmv5= xscale armv5t
113 ARCHES.earmv5eb= xscale armv5t
114 ARCHES.earmv6= armv6
115 ARCHES.earmv6hf= armv6hf
116 ARCHES.earmv6eb= armv6
117 ARCHES.earmv6hfeb= armv6hf
118 ARCHES.earmv7= armv7
119 ARCHES.earmv7hf= armv7hf
120 ARCHES.earmv7eb= armv7
121 ARCHES.earmv7hfeb= armv7hf
122 ARCHES.aarch64= arm64
123 ARCHES.aarch64eb= arm64
124 .for arch in ${ARCHES.${MACHINE_ARCH}}
125 .for board in ${EVBARM_BOARDS.${arch}}
126 KERNEL_SETS+= ${board}
127 BUILD_KERNELS+= ${board}_INSTALL
128 .endfor
129 KERNEL_SETS+= ${KERNEL_SETS.${arch}}
130 .endfor
131
132 .if !empty(MACHINE_ARCH:Maarch64*)
133 smp_efibootaa64:
134 cd ${KERNSRCDIR}/stand/efiboot/bootaa64 && ${MAKE} release
135 SNAP_MD_POST_DEPS+= smp_efibootaa64
136 INSTALLATION_DIRS+= installation/misc
137 .endif
138
139 .if !empty(MACHINE_ARCH:Mearmv7hf)
140 smp_efibootarm:
141 cd ${KERNSRCDIR}/stand/efiboot/bootarm && ${MAKE} release
142 SNAP_MD_POST_DEPS+= smp_efibootarm
143 INSTALLATION_DIRS+= installation/misc
144 .endif
145
146 .if !empty(MACHINE_ARCH:M*armv7*) && empty(ALL_KERNELS)
147 smp_armv7: __mkimage
148 MKI_OPTS.smp_armv7= -K ${IMAGE.kern}
149 SNAP_MD_POST_DEPS+= smp_armv7
150 .endif
151
152 .if !empty(MACHINE_ARCH:Maarch64*) && empty(ALL_KERNELS)
153 smp_arm64: __mkimage
154 MKI_OPTS.smp_arm64= -K ${IMAGE.kern}
155 SNAP_MD_POST_DEPS+= smp_arm64
156 smp_arm64mbr: __mkimage
157 MKI_OPTS.smp_arm64mbr= -K ${IMAGE.kern}
158 SNAP_MD_POST_DEPS+= smp_arm64mbr
159 .endif
160
161 .if !empty(KERNEL_SETS:MRPI)
162 smp_rpi: __mkimage
163 .if empty(ALL_KERNELS) || !empty(ALL_KERNELS:MRPI)
164 MKI_OPTS.smp_rpi= -K ${IMAGE.kern}/netbsd-RPI.img.gz
165 SNAP_MD_POST_DEPS+= smp_rpi
166 .endif
167 smp_rpi_inst: ${IMAGE.instk}/netbsd-RPI_INSTALL.img.gz __mkimage
168 .if empty(ALL_KERNELS) || !empty(ALL_KERNELS:MRPI_INSTALL)
169 MKI_OPTS.smp_rpi_inst= -b -K ${IMAGE.instk}/netbsd-RPI_INSTALL.img.gz
170 SNAP_MD_POST_DEPS+= smp_rpi_inst
171 .endif
172 .endif
173
174 snap_md_post: check_DESTDIR check_RELEASEDIR snap_post .WAIT ${SNAP_MD_POST_DEPS}
175
176 .if !empty(MACHINE_ARCH:Maarch64*)
177 KERNEL_SUFFIXES= img
178 .else
179 KERNEL_SUFFIXES= bin img srec ub
180 .endif
181
182 INSTALLATION_DIRS+= binary/gzimg \
183 installation/instkernel
184