NetBSD/etc/etc.evbarm/Makefile.inc

184 lines
5.1 KiB
PHP
Raw Normal View History

2022-11-03 12:04:56 +03:00
# $NetBSD: Makefile.inc,v 1.131 2022/11/03 09:04:56 skrll Exp $
#
# etc.evbarm/Makefile.inc -- evbarm-specific etc Makefile targets
#
2013-02-09 22:49:55 +04:00
MKIMAGE= ${NETBSDSRCDIR}/distrib/utils/embedded/mkimage
# If you change the list of distributed kernels, don't forget
# to update the release documentation in distrib/notes/common/contents
2012-08-06 11:51:13 +04:00
EVBARM_BOARDS=
.for i in armv4 xscale armv5t armv6 armv7 arm64
EVBARM_BOARDS.${i}=
.endfor
.if !empty(MACHINE_ARCH:M*eb)
IMAGEENDIAN= be
# big endian boards
2013-08-07 10:09:32 +04:00
KERNEL_SETS.armv4+= IXM1200
2018-10-21 10:08:40 +03:00
EVBARM_BOARDS.xscale+= ADI_BRH
KERNEL_SETS.xscale+= NSLU2
2018-10-21 10:08:40 +03:00
EVBARM_BOARDS.armv5t+= KUROBOX_PRO
KERNEL_SETS.armv5t+= OPENBLOCKS_A6
# Other marvell-based machines may also work but not tested yet.
EVBARM_BOARDS.armv6+= RPI
EVBARM_BOARDS.armv6hf+= RPI
KERNEL_SETS.armv6+= RPI2
KERNEL_SETS.armv6hf+= RPI2
KERNEL_SETS.armv7+= GENERIC
KERNEL_SETS.armv7hf+= GENERIC
2022-11-03 12:04:56 +03:00
KERNEL_SETS.arm64+= GENERIC64
2022-11-03 12:04:56 +03:00
KERNEL_SETS.arm64+= GENERIC64_PMAPMI
.else
IMAGEENDIAN= le
# little endian boards
EVBARM_BOARDS.armv4+= GEMINI
EVBARM_BOARDS.armv4+= INTEGRATOR
2015-01-27 23:26:34 +03:00
EVBARM_BOARDS.armv4+= INTEGRATOR_CP
2013-08-07 10:09:32 +04:00
KERNEL_SETS.armv4+= IXM1200
EVBARM_BOARDS.armv4+= SMDK2410
EVBARM_BOARDS.armv4+= SMDK2800
EVBARM_BOARDS.armv4+= TS7200
2018-10-21 10:08:40 +03:00
EVBARM_BOARDS.xscale+= ADI_BRH
EVBARM_BOARDS.xscale+= CP3100
EVBARM_BOARDS.xscale+= GUMSTIX
KERNEL_SETS.xscale+= HDL_G
EVBARM_BOARDS.xscale+= IQ80310
EVBARM_BOARDS.xscale+= IQ80321
EVBARM_BOARDS.xscale+= TEAMASA_NPWR
EVBARM_BOARDS.xscale+= TWINTAIL
2018-10-21 10:08:40 +03:00
EVBARM_BOARDS.armv5t+= KUROBOX_PRO
EVBARM_BOARDS.armv5t+= MV2120
KERNEL_SETS.armv5t+= OPENBLOCKS_A6
EVBARM_BOARDS.armv5t+= OPENRD
EVBARM_BOARDS.armv5t+= SHEEVAPLUG
2018-10-21 10:08:40 +03:00
EVBARM_BOARDS.armv6+= RPI
EVBARM_BOARDS.armv6hf+= RPI
KERNEL_SETS.armv6+= RPI2
KERNEL_SETS.armv6hf+= RPI2
2018-10-21 10:08:40 +03:00
KERNEL_SETS.armv7+= GENERIC
KERNEL_SETS.armv7hf+= GENERIC
2022-11-03 12:04:56 +03:00
KERNEL_SETS.arm64+= GENERIC64
2022-11-03 12:04:56 +03:00
KERNEL_SETS.arm64+= GENERIC64_PMAPMI
2012-08-06 11:51:13 +04:00
.endif
2013-02-10 20:40:21 +04:00
IMAGE.rel= ${RELEASEDIR}/${RELEASEMACHINEDIR}
2013-02-13 08:22:36 +04:00
IMAGE.dir= ${IMAGE.rel}/binary/gzimg
2013-02-10 20:40:21 +04:00
IMAGE.kern= ${IMAGE.rel}/binary/kernel
IMAGE.instk= ${IMAGE.rel}/installation/instkernel
2013-02-10 20:40:21 +04:00
__mkimage: .USE
TOOL_MAKE=${MAKE} \
2013-02-10 20:40:21 +04:00
TOOL_MAKEFS=${TOOL_MAKEFS} \
TOOL_DISKLABEL=${TOOL_DISKLABEL} \
TOOL_FDISK=${TOOL_FDISK} \
2020-05-24 17:44:11 +03:00
TOOL_GPT=${TOOL_GPT} \
TOOL_GZIP=${TOOL_GZIP} \
2013-02-10 20:40:21 +04:00
TOOL_MKNOD=${TOOL_MKNOD} \
TOOL_PAX=${TOOL_PAX} \
2015-05-22 04:18:05 +03:00
TOOL_MKUBOOTIMAGE=${TOOL_MKUBOOTIMAGE} \
2013-02-10 20:40:21 +04:00
TOOL_MTREE=${TOOL_MTREE} \
HOST_SH=${HOST_SH} \
KERNOBJDIR=${KERNOBJDIR} \
MACHINE=${MACHINE} \
MKDTB=${MKDTB} \
${HOST_SH} ${MKIMAGE} -x -h ${.TARGET:S/smp_//} -D ${DESTDIR} \
-S ${NETBSDSRCDIR} -B ${IMAGEENDIAN} ${MKI_OPTS.${.TARGET}} \
${IMAGE.dir}/${.TARGET:S/smp_//}.img.gz
Create bootable images in ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/gzimg. Release builds for arm platforms create compressed images in ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/gzimg. However, in some cases, e.g., armv7.img.gz, they are not bootable. Consequently, boot blocks must be manually installed in the images, which is an extra barrier for testing systems or adopting NetBSD. This has prompted creation of external repositories, e.g., armbsd.org, to host a collection of bootable images. However, this does not ease the burden on developers compiling their own systems; for them, manual installation of boot blocks is still required. For arm platforms, etc/etc.evbarm/Makefile.inc contains the commands used to create system images. Because installboot(8) can write boot blocks directly to system images, a loop through possible boards can create a series of bootable images during the normal build process. In the case of many arm platforms, installboot(8) uses U-Boot boot blocks, which are not part of the NetBSD source code. Developers can, however, install as many U-Boot boot blocks as desired, either in the default location of /usr/pkg/share/u-boot or in a set of directories pointed to by the U-Boot search path, the INSTALLBOOT_UBOOT_PATHS environment variable. For each board with an available boot block, a board-specific bootable image will be created in ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/gzimg. If a boot block is not available, which is the typical situation currently, no additional image will be created. This facility creates opportunities to build bootable images for any number of boards within the scope of a standard release build. However, that is not required and will not occur without the intervention of installing U-Boot boot blocks prior to the build.
2022-08-21 18:01:08 +03:00
${TOOL_GZIP} -cd ${IMAGE.dir}/${.TARGET:S/smp_//}.img.gz \
> ${IMAGE.dir}/${.TARGET:S/smp_//}.img
.for f in ${INSTALLBOOT_BOARDS}
@echo "===> Making bootable image ${IMAGE.dir:T}/${.TARGET:S/smp_//}-${f}.img.gz"
@cp ${IMAGE.dir}/${.TARGET:S/smp_//}.img ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img
@${TOOL_INSTALLBOOT} -m ${MACHINE} -o board=${f} \
${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img \
&& ${TOOL_GZIP} -f ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img \
|| rm ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img
.endfor
rm ${IMAGE.dir}/${.TARGET:S/smp_//}.img
2013-02-10 20:40:21 +04:00
ARCHES.earmv4= armv4
ARCHES.earmv4eb= armv4
ARCHES.earmv5= xscale armv5t
ARCHES.earmv5eb= xscale armv5t
ARCHES.earmv6= armv6
ARCHES.earmv6hf= armv6hf
ARCHES.earmv6eb= armv6
ARCHES.earmv6hfeb= armv6hf
ARCHES.earmv7= armv7
ARCHES.earmv7hf= armv7hf
ARCHES.earmv7eb= armv7
ARCHES.earmv7hfeb= armv7hf
ARCHES.aarch64= arm64
ARCHES.aarch64eb= arm64
.for arch in ${ARCHES.${MACHINE_ARCH}}
.for board in ${EVBARM_BOARDS.${arch}}
2003-04-10 06:22:06 +04:00
KERNEL_SETS+= ${board}
BUILD_KERNELS+= ${board}_INSTALL
.endfor
KERNEL_SETS+= ${KERNEL_SETS.${arch}}
.endfor
2003-04-10 06:22:06 +04:00
.if !empty(MACHINE_ARCH:Maarch64*)
2018-08-28 01:41:56 +03:00
smp_efibootaa64:
cd ${KERNSRCDIR}/stand/efiboot/bootaa64 && ${MAKE} release
SNAP_MD_POST_DEPS+= smp_efibootaa64
INSTALLATION_DIRS+= installation/misc
.endif
.if !empty(MACHINE_ARCH:Mearmv7hf)
2019-03-30 16:05:24 +03:00
smp_efibootarm:
cd ${KERNSRCDIR}/stand/efiboot/bootarm && ${MAKE} release
SNAP_MD_POST_DEPS+= smp_efibootarm
INSTALLATION_DIRS+= installation/misc
.endif
.if !empty(MACHINE_ARCH:M*armv7*) && empty(ALL_KERNELS)
smp_armv7: __mkimage
MKI_OPTS.smp_armv7= -K ${IMAGE.kern}
SNAP_MD_POST_DEPS+= smp_armv7
2012-08-06 11:51:13 +04:00
.endif
.if !empty(MACHINE_ARCH:Maarch64*) && empty(ALL_KERNELS)
smp_arm64: __mkimage
MKI_OPTS.smp_arm64= -K ${IMAGE.kern}
SNAP_MD_POST_DEPS+= smp_arm64
smp_arm64mbr: __mkimage
MKI_OPTS.smp_arm64mbr= -K ${IMAGE.kern}
SNAP_MD_POST_DEPS+= smp_arm64mbr
.endif
.if !empty(KERNEL_SETS:MRPI)
smp_rpi: __mkimage
2013-03-21 19:16:43 +04:00
.if empty(ALL_KERNELS) || !empty(ALL_KERNELS:MRPI)
MKI_OPTS.smp_rpi= -K ${IMAGE.kern}/netbsd-RPI.img.gz
2013-03-21 19:16:43 +04:00
SNAP_MD_POST_DEPS+= smp_rpi
.endif
smp_rpi_inst: ${IMAGE.instk}/netbsd-RPI_INSTALL.img.gz __mkimage
2013-03-21 19:16:43 +04:00
.if empty(ALL_KERNELS) || !empty(ALL_KERNELS:MRPI_INSTALL)
MKI_OPTS.smp_rpi_inst= -b -K ${IMAGE.instk}/netbsd-RPI_INSTALL.img.gz
2013-03-21 19:16:43 +04:00
SNAP_MD_POST_DEPS+= smp_rpi_inst
2012-08-06 11:51:13 +04:00
.endif
2013-03-17 16:19:57 +04:00
.endif
2012-08-06 11:51:13 +04:00
snap_md_post: check_DESTDIR check_RELEASEDIR snap_post .WAIT ${SNAP_MD_POST_DEPS}
2013-02-10 20:40:21 +04:00
.if !empty(MACHINE_ARCH:Maarch64*)
KERNEL_SUFFIXES= img
.else
KERNEL_SUFFIXES= bin img srec ub
.endif
INSTALLATION_DIRS+= binary/gzimg \
installation/instkernel