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