diff options
author | Kamil Rytarowski <n54@gmx.com> | 2016-02-08 12:02:20 +0100 |
---|---|---|
committer | Kamil Rytarowski <n54@gmx.com> | 2016-02-10 23:44:08 +0100 |
commit | fa6a2ab7f529a7f248a3ed8795ccfe0d6dcd373a (patch) | |
tree | 81c8bea294210cedaeed2f096abbe7f4367349fa /build.sh | |
parent | f3a008bf45b6cc8c150afd0416da59a5f23573f8 (diff) | |
download | coreclr-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-x | build.sh | 31 |
1 files changed, 24 insertions, 7 deletions
@@ -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 |