summaryrefslogtreecommitdiff
path: root/build.sh
diff options
context:
space:
mode:
authorKamil Rytarowski <n54@gmx.com>2016-02-08 12:02:20 +0100
committerKamil Rytarowski <n54@gmx.com>2016-02-10 23:44:08 +0100
commitfa6a2ab7f529a7f248a3ed8795ccfe0d6dcd373a (patch)
tree81c8bea294210cedaeed2f096abbe7f4367349fa /build.sh
parentf3a008bf45b6cc8c150afd0416da59a5f23573f8 (diff)
downloadcoreclr-fa6a2ab7f529a7f248a3ed8795ccfe0d6dcd373a.tar.gz
coreclr-fa6a2ab7f529a7f248a3ed8795ccfe0d6dcd373a.tar.bz2
coreclr-fa6a2ab7f529a7f248a3ed8795ccfe0d6dcd373a.zip
Add new parameter with settable option: cmakeargs
This will allow to pass user-defined CMake arguments. One of the users is pkgsrc, which defines it to following example string: -DPYVERSSUFFIX:STRING=2.7 -DCMAKE_INSTALL_PREFIX:PATH=/usr/pkg \ -DCMAKE_MODULE_PATH:PATH=/tmp/pkgsrc-tmp/wip/coreclr-git/work/.buildlink/cmake-Modules \ -DCMAKE_SKIP_RPATH:BOOL=TRUE -DCMAKE_INSTALL_LIBDIR:PATH=lib \ -DCMAKE_INSTALL_MANDIR:PATH=man Without these values unmodified build.sh won't integrate with pkgsrc as expected. Solution suggested by Jan Vorli (Microsoft) While there, there was need to alter loop type to handle options passed to arguments. As a bonus, new loop should be POSIX confirming.
Diffstat (limited to 'build.sh')
-rwxr-xr-xbuild.sh31
1 files changed, 24 insertions, 7 deletions
diff --git a/build.sh b/build.sh
index 88067a66dd..74880aeb48 100755
--- a/build.sh
+++ b/build.sh
@@ -4,7 +4,7 @@ PYTHON=${PYTHON:-python}
usage()
{
- echo "Usage: $0 [BuildArch] [BuildType] [clean] [verbose] [coverage] [cross] [clangx.y] [ninja] [configureonly] [skipconfigure] [skipnative] [skipmscorlib] [skiptests]"
+ echo "Usage: $0 [BuildArch] [BuildType] [clean] [verbose] [coverage] [cross] [clangx.y] [ninja] [configureonly] [skipconfigure] [skipnative] [skipmscorlib] [skiptests] [cmakeargs]"
echo "BuildArch can be: x64, x86, arm, arm64"
echo "BuildType can be: Debug, Checked, Release"
echo "clean - optional argument to force a clean build."
@@ -19,6 +19,7 @@ usage()
echo "skipnative - do not build native components."
echo "skipmscorlib - do not build mscorlib.dll even if mono is installed."
echo "skiptests - skip the tests in the 'tests' subdirectory."
+ echo "cmakeargs - user-settable additional arguments passed to CMake."
exit 1
}
@@ -142,8 +143,8 @@ build_coreclr()
if [ $__SkipConfigure == 0 ]; then
# Regenerate the CMake solution
- echo "Invoking \"$__ProjectRoot/src/pal/tools/gen-buildsys-clang.sh\" \"$__ProjectRoot\" $__ClangMajorVersion $__ClangMinorVersion $__BuildArch $__BuildType $__CodeCoverage $__IncludeTests $generator"
- "$__ProjectRoot/src/pal/tools/gen-buildsys-clang.sh" "$__ProjectRoot" $__ClangMajorVersion $__ClangMinorVersion $__BuildArch $__BuildType $__CodeCoverage $__IncludeTests $generator
+ echo "Invoking \"$__ProjectRoot/src/pal/tools/gen-buildsys-clang.sh\" \"$__ProjectRoot\" $__ClangMajorVersion $__ClangMinorVersion $__BuildArch $__BuildType $__CodeCoverage $__IncludeTests $generator $__cmakeargs"
+ "$__ProjectRoot/src/pal/tools/gen-buildsys-clang.sh" "$__ProjectRoot" $__ClangMajorVersion $__ClangMinorVersion $__BuildArch $__BuildType $__CodeCoverage $__IncludeTests $generator "$__cmakeargs"
fi
if [ $__SkipCoreCLR == 1 ]; then
@@ -381,10 +382,14 @@ __ClangMinorVersion=5
__MSBuildPath=$__ProjectRoot/Tools/MSBuild.exe
__NuGetPath="$__PackagesDir/NuGet.exe"
__DistroName=""
+__cmakeargs=""
-for i in "$@"
-do
- lowerI="$(echo $i | awk '{print tolower($0)}')"
+while :; do
+ if [ $# -le 0 ]; then
+ break
+ fi
+
+ lowerI="$(echo $1 | awk '{print tolower($0)}')"
case $lowerI in
-\?|-h|--help)
usage
@@ -486,10 +491,22 @@ do
__IncludeTests=
;;
+ cmakeargs)
+ if [ -n "$2" ]; then
+ __cmakeargs="$2"
+ shift
+ else
+ echo "ERROR: 'cmakeargs' requires a non-empty option argument"
+ exit 1
+ fi
+ ;;
+
*)
- __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i"
+ __UnprocessedBuildArgs="$__UnprocessedBuildArgs $1"
;;
esac
+
+ shift
done
if [[ $__ConfigureOnly == 1 && $__SkipConfigure == 1 ]]; then