xref: /aosp_15_r20/external/flashrom/test_build.sh (revision 0d6140be3aa665ecc836e8907834fcd3e3b018fc)
1#!/usr/bin/env sh
2set -e
3
4# This script will only work on Linux with all dependencies installed.
5
6is_scan_build_env=0
7
8meson_programmer_opts="all auto group_ftdi group_i2c group_jlink group_pci group_serial group_usb	\
9			atahpt atapromise atavia buspirate_spi ch341a_spi ch347_spi dediprog		\
10			developerbox_spi digilent_spi dirtyjtag_spi drkaiser dummy ft2232_spi		\
11			gfxnvidia internal it8212 jlink_spi linux_mtd linux_spi parade_lspcon		\
12			mediatek_i2c_spi mstarddc_spi nic3com nicintel nicintel_eeprom nicintel_spi	\
13			nicnatsemi nicrealtek ogp_spi pickit2_spi pony_spi raiden_debug_spi rayer_spi	\
14			realtek_mst_i2c_spi satamv satasii serprog stlinkv3_spi usbblaster_spi asm106x"
15
16
17if [ "$(basename "${CC}")" = "ccc-analyzer" ] || [ -n "${COVERITY_OUTPUT}" ]; then
18	is_scan_build_env=1
19fi
20
21
22run_linter() {
23	./util/lint/lint-extended-020-signed-off-by
24}
25
26
27build_meson () {
28	build_dir=out
29	meson_opts="-Dtests=enabled -Dman-pages=enabled -Ddocumentation=enabled"
30	ninja_opts="-j $(nproc)"
31
32	rm -rf ${build_dir}
33
34	for programmer in ${meson_programmer_opts}; do
35		programmer_dir="${build_dir}/${programmer}"
36
37		# In case of clang analyzer we don't want to run it on
38		# each programmer individually. Thus, just return here.
39		if [ ${is_scan_build_env} -eq 1 ] && [ "${programmer}" != "all" ]; then
40			return
41		fi
42
43		meson setup ${programmer_dir} ${meson_opts} -Dprogrammer=${programmer}
44		ninja ${ninja_opts} -C ${programmer_dir}
45		ninja ${ninja_opts} -C ${programmer_dir} test
46	done
47}
48
49
50run_linter
51
52build_meson
53