diff options
author | takeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp> | 2020-10-22 14:58:56 +0900 |
---|---|---|
committer | takeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp> | 2020-10-22 14:58:56 +0900 |
commit | 4204309872da5cb401cbb2729d9e2d4869a87f42 (patch) | |
tree | c7415e8600205e40ff7e91e8e5f4c411f30329f2 /external/meta-clang/classes/scan-build.bbclass | |
parent | 5b80bfd7bffd4c20d80b7c70a7130529e9a755dd (diff) |
agl-basesystem 0.1sandbox/ToshikazuOhiwa/master
Diffstat (limited to 'external/meta-clang/classes/scan-build.bbclass')
-rw-r--r-- | external/meta-clang/classes/scan-build.bbclass | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/external/meta-clang/classes/scan-build.bbclass b/external/meta-clang/classes/scan-build.bbclass new file mode 100644 index 00000000..e0de56bb --- /dev/null +++ b/external/meta-clang/classes/scan-build.bbclass @@ -0,0 +1,58 @@ +# Copyright (C) 2018 Khem Raj <raj.khem@gmail.com> +# Released under the MIT license (see COPYING.MIT for the terms) + +CFLAGS =+ "${TARGET_CC_ARCH} ${TOOLCHAIN_OPTIONS}" +CXXFLAGS =+ "${TARGET_CC_ARCH} ${TOOLCHAIN_OPTIONS}" + +#EXTRA_ANALYZER_OPTIONS ?= "-analyze-headers" +CLANG_SCAN_ENABLED ??= "1" +#CLANG_SCAN_SERVER_IP ??= "127.0.0.1" +CLANG_SCAN_SERVER_IP ??= "10.0.0.10" +CLANG_SCAN_PORT ??= "8181" +SCAN_RESULTS_DIR ?= "${TMPDIR}/static-scan/${PN}" + +scanbuild_munge_cc_cxx() { + cc="`echo ${CC} | cut -f1 -d " "`" + cxx="`echo ${CXX} | cut -f1 -d " "`" + export CC="${cc}" + export CXX="${cxx}" +} + +do_configure[prefuncs] += "scanbuild_munge_cc_cxx" + +do_scanbuild() { + cc="`echo ${CC} | cut -f1 -d " "`" + cxx="`echo ${CXX} | cut -f1 -d " "`" + #mk="scan-build --use-cc=${cc} --use-c++=${cxx} --analyzer-target=${HOST_SYS} --html-title="${BP}" -o ${SCAN_RESULTS_DIR} ${EXTRA_ANALYZER_OPTIONS} make" + #export MAKE="${mk}" + export CC="${cc}" + export CXX="${cxx}" + scan-build --use-cc=${cc} --use-c++=${cxx} --analyzer-target=${HOST_SYS} --html-title="${BP}" -o ${SCAN_RESULTS_DIR} ${EXTRA_ANALYZER_OPTIONS} ${MAKE} ${EXTRA_OEMAKE} +} + +do_scanview() { + bbplain "================================================================" + bbplain "Stating scan-view server at: http://${CLANG_SCAN_SERVER_IP}:${CLANG_SCAN_PORT}" + bbplain "Use Ctrl-C to exit" + bbplain "================================================================" + scan-view --host ${CLANG_SCAN_SERVER_IP} --port ${CLANG_SCAN_PORT} --allow-all-hosts ${SCAN_RESULTS_DIR}/*/ +} + +do_scanview[depends] += "${PN}:do_scanbuild" +do_scanbuild[cleandirs] += "${SCAN_RESULTS_DIR}" +do_scanbuild[dirs] += "${B}" +do_scanview[dirs] += "${SCAN_RESULTS_DIR}" +#do_build[recrdeptask] += "do_scanbuild" + +do_scanbuild[doc] = "Build and scan static analysis data using clang" +do_scanview[doc] = "Start a webserver to visualize static analysis data" + +addtask scanbuild after do_configure before do_compile +addtask scanview + +python () { + # Remove scanbuild task when scanning is not enabled + if not(d.getVar('CLANG_SCAN_ENABLED') == "1"): + for i in ['do_scanbuild', 'do_scanview']: + bb.build.deltask(i, d) +} |