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