summaryrefslogtreecommitdiffstats
path: root/external/meta-clang/classes/scan-build.bbclass
diff options
context:
space:
mode:
authortakeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp>2020-10-22 14:58:56 +0900
committertakeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp>2020-10-22 14:58:56 +0900
commit4204309872da5cb401cbb2729d9e2d4869a87f42 (patch)
treec7415e8600205e40ff7e91e8e5f4c411f30329f2 /external/meta-clang/classes/scan-build.bbclass
parent5b80bfd7bffd4c20d80b7c70a7130529e9a755dd (diff)
Diffstat (limited to 'external/meta-clang/classes/scan-build.bbclass')
-rw-r--r--external/meta-clang/classes/scan-build.bbclass58
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)
+}