summaryrefslogtreecommitdiff
path: root/build.sh
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 /build.sh
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 'build.sh')
-rwxr-xr-xbuild.sh20
1 files changed, 17 insertions, 3 deletions
diff --git a/build.sh b/build.sh
index 1d26b6b569..71b07fa2e8 100755
--- a/build.sh
+++ b/build.sh
@@ -61,6 +61,7 @@ usage()
echo "-msbuildonunsupportedplatform - build managed binaries even if distro is not officially supported."
echo "-numproc - set the number of build processes."
echo "-portablebuild - pass -portablebuild=false to force a non-portable build."
+ echo "-staticanalyzer - build with clang static analyzer enabled."
exit 1
}
@@ -276,11 +277,15 @@ build_native()
# Regenerate the CMake solution
if [[ $__GccBuild == 0 ]]; then
- echo "Invoking \"$__ProjectRoot/src/pal/tools/gen-buildsys-clang.sh\" \"$__ProjectRoot\" $__ClangMajorVersion \"$__ClangMinorVersion\" $platformArch $__BuildType $__CodeCoverage $generator $extraCmakeArguments $__cmakeargs"
- "$__ProjectRoot/src/pal/tools/gen-buildsys-clang.sh" "$__ProjectRoot" $__ClangMajorVersion "$__ClangMinorVersion" $platformArch $__BuildType $__CodeCoverage $generator "$extraCmakeArguments" "$__cmakeargs"
+ scan_build=
+ if [[ $__StaticAnalyzer == 1 ]]; then
+ scan_build=scan-build
+ fi
+ echo "Invoking \"$__ProjectRoot/src/pal/tools/gen-buildsys-clang.sh\" \"$__ProjectRoot\" $__ClangMajorVersion \"$__ClangMinorVersion\" $platformArch $__BuildType $__CodeCoverage $scan_build $generator $extraCmakeArguments $__cmakeargs"
+ source "$__ProjectRoot/src/pal/tools/gen-buildsys-clang.sh" "$__ProjectRoot" $__ClangMajorVersion "$__ClangMinorVersion" $platformArch $__BuildType $__CodeCoverage $scan_build $generator "$extraCmakeArguments" "$__cmakeargs"
else
echo "Invoking \"$__ProjectRoot/src/pal/tools/gen-buildsys-gcc.sh\" \"$__ProjectRoot\" $__GccMajorVersion \"$__GccMinorVersion\" $platformArch $__BuildType $__CodeCoverage $generator $extraCmakeArguments $__cmakeargs"
- "$__ProjectRoot/src/pal/tools/gen-buildsys-gcc.sh" "$__ProjectRoot" "$__GccMajorVersion" "$__CGccMinorVersion" $platformArch $__BuildType $__CodeCoverage $generator "$extraCmakeArguments" "$__cmakeargs"
+ source "$__ProjectRoot/src/pal/tools/gen-buildsys-gcc.sh" "$__ProjectRoot" "$__GccMajorVersion" "$__CGccMinorVersion" $platformArch $__BuildType $__CodeCoverage $generator "$extraCmakeArguments" "$__cmakeargs"
fi
popd
fi
@@ -299,6 +304,10 @@ build_native()
# Check that the makefiles were created.
pushd "$intermediatesForBuild"
+ if [ $__StaticAnalyzer == 1 ]; then
+ buildTool="$SCAN_BUILD_COMMAND $buildTool"
+ fi
+
echo "Executing $buildTool install -j $__NumProc"
$buildTool install -j $__NumProc
@@ -649,6 +658,7 @@ __BuildManagedTools=1
__SkipRestoreArg=""
__SignTypeArg=""
__OfficialBuildIdArg=""
+__StaticAnalyzer=0
# Get the number of processors available to the scheduler
# Other techniques such as `nproc` only get the number of
@@ -937,6 +947,10 @@ while :; do
__OfficialBuildIdArg="/p:OfficialBuildId=$__Id"
;;
+ -staticanalyzer)
+ __StaticAnalyzer=1
+ ;;
+
--)
# Skip -Option=Value style argument passing
;;