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