diff options
author | Jan Vorlicek <janvorli@microsoft.com> | 2019-03-07 17:31:39 -0800 |
---|---|---|
committer | Jan Vorlicek <janvorli@microsoft.com> | 2019-03-08 01:42:37 -0800 |
commit | 7b7f8ec1e3f974a43e96c3f01cb0d5a2da913e17 (patch) | |
tree | c29f73feb1e13e724e3019178f28560a3ae60b8e /src/pal | |
parent | 98cd595b35ced3adb6efe0c667f5160f21067e0b (diff) | |
download | coreclr-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-x | src/pal/tools/gen-buildsys-clang.sh | 19 |
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" \ |