From 6aac6708a7abd1b7274003c32182692e21407890 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Thu, 9 Sep 2021 15:48:53 -0700 Subject: [PATCH] [script] update `scan-build` to use cmake/ninja (#6982) --- .github/workflows/build.yml | 2 +- script/check-scan-build | 135 ++++++++++++++---------------------- 2 files changed, 54 insertions(+), 83 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 102f59886..3ecd92ecb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -116,7 +116,7 @@ jobs: - name: Bootstrap run: | sudo rm /etc/apt/sources.list.d/* && sudo apt-get update - sudo apt-get --no-install-recommends install -y clang-tools-9 + sudo apt-get --no-install-recommends install -y clang-tools-9 ninja-build - name: Run run: | script/check-scan-build diff --git a/script/check-scan-build b/script/check-scan-build index ccbc52e03..57681f6ef 100755 --- a/script/check-scan-build +++ b/script/check-scan-build @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) 2020, The OpenThread Authors. +# Copyright (c) 2021, The OpenThread Authors. # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -29,93 +29,64 @@ set -euxo pipefail -readonly OT_BUILD_JOBS=$(getconf _NPROCESSORS_ONLN) +readonly OT_SRCDIR="$(pwd)" -do_scan_build() -{ - local options=( - "-DOPENTHREAD_CONFIG_ANNOUNCE_SENDER_ENABLE=1" - "-DOPENTHREAD_CONFIG_BORDER_AGENT_ENABLE=1" - "-DOPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE=1" - "-DOPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE=1" - "-DOPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE=1" - "-DOPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE=1" - "-DOPENTHREAD_CONFIG_COAP_API_ENABLE=1" - "-DOPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE=1" - "-DOPENTHREAD_CONFIG_COMMISSIONER_ENABLE=1" - "-DOPENTHREAD_CONFIG_DATASET_UPDATER_ENABLE=1" - "-DOPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE=1" - "-DOPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE=1" - "-DOPENTHREAD_CONFIG_DIAG_ENABLE=1" - "-DOPENTHREAD_CONFIG_DNS_CLIENT_ENABLE=1" - "-DOPENTHREAD_CONFIG_ECDSA_ENABLE=1" - "-DOPENTHREAD_CONFIG_HEAP_EXTERNAL_ENABLE=1" - "-DOPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE=1" - "-DOPENTHREAD_CONFIG_IP6_FRAGMENTATION_ENABLE=1" - "-DOPENTHREAD_CONFIG_IP6_SLAAC_ENABLE=1" - "-DOPENTHREAD_CONFIG_JAM_DETECTION_ENABLE=1" - "-DOPENTHREAD_CONFIG_JOINER_ENABLE=1" - "-DOPENTHREAD_CONFIG_LEGACY_ENABLE=1" - "-DOPENTHREAD_CONFIG_LINK_RAW_ENABLE=1" - "-DOPENTHREAD_CONFIG_LOG_LEVEL_DYNAMIC_ENABLE=1" - "-DOPENTHREAD_CONFIG_MAC_BEACON_RSP_WHEN_JOINABLE_ENABLE=1" - "-DOPENTHREAD_CONFIG_MAC_FILTER_ENABLE=1" - "-DOPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_ENABLE=1" - "-DOPENTHREAD_CONFIG_MAC_SOFTWARE_ACK_TIMEOUT_ENABLE=1" - "-DOPENTHREAD_CONFIG_MAC_SOFTWARE_CSMA_BACKOFF_ENABLE=1" - "-DOPENTHREAD_CONFIG_MAC_SOFTWARE_ENERGY_SCAN_ENABLE=1" - "-DOPENTHREAD_CONFIG_MAC_SOFTWARE_RETRANSMIT_ENABLE=1" - "-DOPENTHREAD_CONFIG_MAC_SOFTWARE_TX_SECURITY_ENABLE=1" - "-DOPENTHREAD_CONFIG_MLE_ATTACH_BACKOFF_ENABLE=1" - "-DOPENTHREAD_CONFIG_MLE_STEERING_DATA_SET_OOB_ENABLE=1" - "-DOPENTHREAD_CONFIG_MPL_DYNAMIC_INTERVAL_ENABLE" - "-DOPENTHREAD_CONFIG_NEIGHBOR_DISCOVERY_AGENT=1" - "-DOPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE=1" - "-DOPENTHREAD_CONFIG_PING_SENDER_ENABLE=1" - "-DOPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE=1" - "-DOPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE=1" - "-DOPENTHREAD_CONFIG_PLATFORM_USEC_TIMER_ENABLE=1" - "-DOPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE=1" - "-DOPENTHREAD_CONFIG_SNTP_CLIENT_ENABLE=1" - "-DOPENTHREAD_CONFIG_SRP_CLIENT_ENABLE=1" - "-DOPENTHREAD_CONFIG_SRP_SERVER_ENABLE=1" - "-DOPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE=1" - "-DOPENTHREAD_CONFIG_TMF_NETWORK_DIAG_MTD_ENABLE=1" - "-DOPENTHREAD_CONFIG_UDP_FORWARD_ENABLE=1" - ) - options+=( - "-DMBEDTLS_DEBUG_C" - "-I$(pwd)/third_party/mbedtls" - "-I$(pwd)/third_party/mbedtls/repo/include" - '-DMBEDTLS_CONFIG_FILE=\"mbedtls-config.h\"' - ) +readonly OT_BUILD_OPTIONS=( + "-DOT_BUILD_EXECUTABLES=OFF" + "-DOT_BORDER_AGENT=ON" + "-DOT_BORDER_ROUTER=ON" + "-DOT_COAP=ON" + "-DOT_COAP_BLOCK=ON" + "-DOT_COAP_OBSERVE=ON" + "-DOT_COAPS=ON" + "-DOT_COMMISSIONER=ON" + "-DOT_COMPILE_WARNING_AS_ERROR=ON" + "-DOT_COVERAGE=ON" + "-DOT_CHANNEL_MANAGER=ON" + "-DOT_CHANNEL_MONITOR=ON" + "-DOT_CHILD_SUPERVISION=ON" + "-DOT_DATASET_UPDATER=ON" + "-DOT_DHCP6_CLIENT=ON" + "-DOT_DHCP6_SERVER=ON" + "-DOT_DIAGNOSTIC=ON" + "-DOT_DNS_CLIENT=ON" + "-DOT_ECDSA=ON" + "-DOT_EXTERNAL_MBEDTLS=external" + "-DOT_IP6_FRAGM=ON" + "-DOT_JAM_DETECTION=ON" + "-DOT_JOINER=ON" + "-DOT_LEGACY=ON" + "-DOT_LOG_LEVEL_DYNAMIC=ON" + "-DOT_MAC_FILTER=ON" + "-DOT_MTD_NETDIAG=ON" + "-DOT_NEIGHBOR_DISCOVERY_AGENT=ON" + "-DOT_PING_SENDER=ON" + "-DOT_PLATFORM=external" + "-DOT_RCP_RESTORATION_MAX_COUNT=2" + "-DOT_REFERENCE_DEVICE=ON" + "-DOT_SERVICE=ON" + "-DOT_SLAAC=ON" + "-DOT_SNTP_CLIENT=ON" + "-DOT_SRP_CLIENT=ON" + "-DOT_SRP_SERVER=ON" +) - configure_options=( - "--enable-builtin-mbedtls=no" - "--enable-cli" - "--enable-executable=no" - "--enable-ftd" - "--enable-mtd" - "--enable-ncp" - "--enable-radio-only" - "--with-examples=simulation" - "--disable-tools" - ) - - export CPPFLAGS="${options[*]} -DOPENTHREAD_CONFIG_NCP_SPI_ENABLE=1" - scan-build-9 ./configure "${configure_options[@]}" - scan-build-9 --status-bugs -analyze-headers -v make -j"${OT_BUILD_JOBS}" - - export CPPFLAGS="${options[*]} -DOPENTHREAD_CONFIG_NCP_HDLC_ENABLE=1" - scan-build-9 ./configure "${configure_options[@]}" - scan-build-9 --status-bugs -analyze-headers -v make -j"${OT_BUILD_JOBS}" -} +readonly OT_CFLAGS=( + "-DMBEDTLS_DEBUG_C" + "-I$(pwd)/third_party/mbedtls" + "-I$(pwd)/third_party/mbedtls/repo/include" + '-DMBEDTLS_CONFIG_FILE=\"mbedtls-config.h\"' +) main() { - ./bootstrap + mkdir -p build + cd build - do_scan_build + scan-build-9 cmake -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DOT_COMPILE_WARNING_AS_ERROR=ON -DCMAKE_C_FLAGS="${OT_CFLAGS[*]}" -DCMAKE_CXX_FLAGS="${OT_CFLAGS[*]}" "${OT_BUILD_OPTIONS[@]}" "${OT_SRCDIR}" + scan-build-9 --status-bugs -analyze-headers -v ninja + + cd "${OT_SRCDIR}" } main "$@"