summaryrefslogtreecommitdiff
path: root/src/pal
diff options
context:
space:
mode:
authorJan Vorlicek <janvorli@microsoft.com>2019-03-07 17:31:39 -0800
committerJan Vorlicek <janvorli@microsoft.com>2019-03-08 01:42:37 -0800
commit7b7f8ec1e3f974a43e96c3f01cb0d5a2da913e17 (patch)
treec29f73feb1e13e724e3019178f28560a3ae60b8e /src/pal
parent98cd595b35ced3adb6efe0c667f5160f21067e0b (diff)
downloadcoreclr-7b7f8ec1e3f974a43e96c3f01cb0d5a2da913e17.tar.gz
coreclr-7b7f8ec1e3f974a43e96c3f01cb0d5a2da913e17.tar.bz2
coreclr-7b7f8ec1e3f974a43e96c3f01cb0d5a2da913e17.zip
Enable build with clang static analyzer
As part of LLVM, there is a clang static analyzer tool that provides useful analysis of potential issues in the source code base. This change enables building coreclr with that analyzer enabled.
Diffstat (limited to 'src/pal')
-rwxr-xr-xsrc/pal/tools/gen-buildsys-clang.sh19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/pal/tools/gen-buildsys-clang.sh b/src/pal/tools/gen-buildsys-clang.sh
index 2047b1eccf..95b227d89f 100755
--- a/src/pal/tools/gen-buildsys-clang.sh
+++ b/src/pal/tools/gen-buildsys-clang.sh
@@ -6,12 +6,13 @@
if [ $# -lt 4 ]
then
echo "Usage..."
- echo "gen-buildsys-clang.sh <path to top level CMakeLists.txt> <ClangMajorVersion> <ClangMinorVersion> <Architecture> [build flavor] [coverage] [ninja] [cmakeargs]"
+ echo "gen-buildsys-clang.sh <path to top level CMakeLists.txt> <ClangMajorVersion> <ClangMinorVersion> <Architecture> [build flavor] [coverage] [ninja] [scan-build] [cmakeargs]"
echo "Specify the path to the top level CMake file - <ProjectK>/src/NDP"
echo "Specify the clang version to use, split into major and minor version"
echo "Specify the target architecture."
echo "Optionally specify the build configuration (flavor.) Defaults to DEBUG."
echo "Optionally specify 'coverage' to enable code coverage build."
+ echo "Optionally specify 'scan-build' to enable build with clang static analyzer."
echo "Target ninja instead of make. ninja must be on the PATH."
echo "Pass additional arguments to CMake call."
exit 1
@@ -42,6 +43,7 @@ build_arch="$4"
buildtype=DEBUG
code_coverage=OFF
build_tests=OFF
+scan_build=OFF
generator="Unix Makefiles"
__UnprocessedCMakeArgs=""
@@ -59,6 +61,10 @@ for i in "${@:5}"; do
NINJA)
generator=Ninja
;;
+ SCAN-BUILD)
+ echo "Static analysis is turned on for this build."
+ scan_build=ON
+ ;;
*)
__UnprocessedCMakeArgs="${__UnprocessedCMakeArgs}${__UnprocessedCMakeArgs:+ }$i"
esac
@@ -152,7 +158,16 @@ fi
# Determine the current script directory
__currentScriptDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-cmake \
+cmake_command=cmake
+
+if [[ "$scan_build" == "ON" ]]; then
+ export CCC_CC=$CC
+ export CCC_CXX=$CXX
+ export SCAN_BUILD_COMMAND=$(command -v scan-build$desired_llvm_version)
+ cmake_command="$SCAN_BUILD_COMMAND $cmake_command"
+fi
+
+$cmake_command \
-G "$generator" \
"-DCMAKE_USER_MAKE_RULES_OVERRIDE=${__currentScriptDir}/$overridefile" \
"-DCMAKE_AR=$llvm_ar" \