diff options
Diffstat (limited to 'build.sh')
-rwxr-xr-x | build.sh | 52 |
1 files changed, 44 insertions, 8 deletions
@@ -25,11 +25,12 @@ export PYTHON usage() { - echo "Usage: $0 [BuildArch] [BuildType] [-verbose] [-coverage] [-cross] [-clangx.y] [-ninja] [-configureonly] [-skipconfigure] [-skipnative] [-skipcrossarchnative] [-skipmanaged] [-skipmscorlib] [-skiptests] [-stripsymbols] [-ignorewarnings] [-cmakeargs] [-bindir]" + echo "Usage: $0 [BuildArch] [BuildType] [-verbose] [-coverage] [-cross] [-gccx.y] [-clangx.y] [-ninja] [-configureonly] [-skipconfigure] [-skipnative] [-skipcrossarchnative] [-skipmanaged] [-skipmscorlib] [-skiptests] [-stripsymbols] [-ignorewarnings] [-cmakeargs] [-bindir]" echo "BuildArch can be: -x64, -x86, -arm, -armel, -arm64" echo "BuildType can be: -debug, -checked, -release" echo "-coverage - optional argument to enable code coverage build (currently supported only for Linux and OSX)." echo "-ninja - target ninja instead of GNU make" + echo "-gccx.y - optional argument to build using gcc version x.y." echo "-clangx.y - optional argument to build using clang version x.y." echo "-cross - optional argument to signify cross compilation," echo " - will use ROOTFS_DIR environment variable if set." @@ -159,18 +160,26 @@ check_prereqs() # Minimum required version of clang is version 4.0 for arm/armel cross build - if [[ $__CrossBuild == 1 && ("$__BuildArch" == "arm" || "$__BuildArch" == "armel") ]]; then + if [[ $__CrossBuild == 1 && $__GccBuild == 0 && ("$__BuildArch" == "arm" || "$__BuildArch" == "armel") ]]; then if ! [[ "$__ClangMajorVersion" -ge "4" ]]; then echo "Please install clang4.0 or latest for arm/armel cross build"; exit 1; fi fi # Check for clang - __ClangCombinedDottedVersion=$__ClangMajorVersion; - if [[ "$__ClangMinorVersion" != "" ]]; then - __ClangCombinedDottedVersion=$__ClangCombinedDottedVersion.$__ClangMinorVersion + if [[ $__GccBuild == 0 ]]; then + __ClangCombinedDottedVersion=$__ClangMajorVersion; + if [[ "$__ClangMinorVersion" != "" ]]; then + __ClangCombinedDottedVersion=$__ClangCombinedDottedVersion.$__ClangMinorVersion + fi + hash clang-$__ClangCombinedDottedVersion 2>/dev/null || hash clang$__ClangMajorVersion$__ClangMinorVersion 2>/dev/null || hash clang 2>/dev/null || { echo >&2 "Please install clang-$__ClangMajorVersion.$__ClangMinorVersion before running this script"; exit 1; } + else + __GccCombinedDottedVersion=$__GccMajorVersion; + if [[ "$__GccMinorVersion" != "" ]]; then + __GccCombinedDottedVersion=$__GccCombinedDottedVersion.$__GccMinorVersion + fi + hash gcc-$__GccCombinedDottedVersion 2>/dev/null || hash gcc$__GccMajorVersion$__GccMinorVersion 2>/dev/null || hash gcc 2>/dev/null || { echo >&2 "Please install gcc-$__GccMajorVersion.$__GccMinorVersion before running this script"; exit 1; } fi - hash clang-$__ClangCombinedDottedVersion 2>/dev/null || hash clang$__ClangMajorVersion$__ClangMinorVersion 2>/dev/null || hash clang 2>/dev/null || { echo >&2 "Please install clang-$__ClangMajorVersion.$__ClangMinorVersion before running this script"; exit 1; } } @@ -318,8 +327,14 @@ build_native() pushd "$intermediatesForBuild" # Regenerate the CMake solution - 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" + + 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" + 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" + fi popd fi @@ -672,6 +687,9 @@ __SkipTests=0 __CrossBuild=0 __ClangMajorVersion=0 __ClangMinorVersion=0 +__GccBuild=0 +__GccMajorVersion=0 +__GccMinorVersion=0 __NuGetPath="$__PackagesDir/NuGet.exe" __HostDistroRid="" __DistroRid="" @@ -808,6 +826,24 @@ while :; do __ClangMinorVersion= ;; + gcc5|-gcc5) + __GccMajorVersion=5 + __GccMinorVersion= + __GccBuild=1 + ;; + + gcc7|-gcc7) + __GccMajorVersion=7 + __GccMinorVersion= + __GccBuild=1 + ;; + + gcc|-gcc) + __GccMajorVersion= + __GccMinorVersion= + __GccBuild=1 + ;; + ninja|-ninja) __UseNinja=1 ;; |