xref: /freebsd/usr.bin/mkimg/tests/Makefile (revision 59c8e88e72633afbc47a4ace0d2170d00d51f7dc)
1
2.PATH:	${.CURDIR}
3
4PACKAGE=	tests
5
6_REBASE_SCRIPT=	mkimg_test
7ATF_TESTS_SH=	${_REBASE_SCRIPT}
8
9SOURCES!=	cd ${.CURDIR}; echo *.hex
10${PACKAGE}FILES+=		${SOURCES:S,.hex,,g}
11
12.for f in ${${PACKAGE}FILES}
13$f: $f.hex
14	sed -e '/^#.*/D' < ${.ALLSRC} > ${.TARGET}
15.endfor
16
17# Note: Pre-generating this test file saves a lot of time when building on
18# emulated platforms such as QEMU. It can take about 2-5 seconds to generate
19# the test file using jot (depending on the emulated architecture) and this
20# is done for each of the 168 test configurations.
21# The effect is even more pronounced on CHERI-RISCV QEMU (emulating CHERI inside
22# QEMU adds additional run-time overhead): Running the apm_1x1_512_raw without
23# the pre-generated file takes about 108 seconds of which 102 seconds (over 95%)
24# were spent running jot -b. It's even worse on CHERI-MIPS QEMU: 187 seconds
25# for jot -b P 2097152 > /dev/null. By using a pre-generated 4MB file, the
26# slowest test variant (vtoc8_63x255_4096_vhdx) now only takes 29 seconds (of
27# which 26s are spent in hexdump -C) instead of previously 2min30s.
28${PACKAGE}FILES+=	partition_data_4M.bin
29partition_data_4M.bin: Makefile
30	jot -b P 2097152 > ${.TARGET} || rm -f ${.TARGET}
31
32CLEANFILES+=	${${PACKAGE}FILES}}
33
34rebase: partition_data_4M.bin ${_REBASE_SCRIPT} .PHONY
35	cd ${.CURDIR}; PATH=${.OBJDIR}/..:$${PATH}:/usr/bin:/bin \
36	    /usr/libexec/atf-sh ${.OBJDIR}/${_REBASE_SCRIPT} -s ${.OBJDIR} rebase
37
38.include <bsd.test.mk>
39