mirror of https://github.com/dotnet/tye.git
Browse Source
- Microsoft.DotNet.Arcade.Sdk: 5.0.0-beta.20224.11 -> 5.0.0-beta.20228.4 - Microsoft.DotNet.Build.Tasks.Feed: 5.0.0-beta.20224.11 -> 5.0.0-beta.20228.4 - Microsoft.DotNet.Helix.Sdk: 5.0.0-beta.20224.11 -> 5.0.0-beta.20228.4 - Microsoft.DotNet.SignTool: 5.0.0-beta.20224.11 -> 5.0.0-beta.20228.4 - Microsoft.DotNet.SwaggerGenerator.MSBuild: 5.0.0-beta.20224.11 -> 5.0.0-beta.20228.4 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>pull/431/head
committed by
GitHub
7 changed files with 145 additions and 24 deletions
@ -0,0 +1,121 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
# |
||||
|
# This file locates the native compiler with the given name and version and sets the environment variables to locate it. |
||||
|
# |
||||
|
|
||||
|
source="${BASH_SOURCE[0]}" |
||||
|
|
||||
|
# resolve $SOURCE until the file is no longer a symlink |
||||
|
while [[ -h $source ]]; do |
||||
|
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" |
||||
|
source="$(readlink "$source")" |
||||
|
|
||||
|
# if $source was a relative symlink, we need to resolve it relative to the path where the |
||||
|
# symlink file was located |
||||
|
[[ $source != /* ]] && source="$scriptroot/$source" |
||||
|
done |
||||
|
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" |
||||
|
|
||||
|
if [ $# -lt 0 ] |
||||
|
then |
||||
|
echo "Usage..." |
||||
|
echo "find-native-compiler.sh <compiler> <compiler major version> <compiler minor version>" |
||||
|
echo "Specify the name of compiler (clang or gcc)." |
||||
|
echo "Specify the major version of compiler." |
||||
|
echo "Specify the minor version of compiler." |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
. $scriptroot/../pipeline-logging-functions.sh |
||||
|
|
||||
|
compiler="$1" |
||||
|
cxxCompiler="$compiler++" |
||||
|
majorVersion="$2" |
||||
|
minorVersion="$3" |
||||
|
|
||||
|
if [ "$compiler" = "gcc" ]; then cxxCompiler="g++"; fi |
||||
|
|
||||
|
check_version_exists() { |
||||
|
desired_version=-1 |
||||
|
|
||||
|
# Set up the environment to be used for building with the desired compiler. |
||||
|
if command -v "$compiler-$1.$2" > /dev/null; then |
||||
|
desired_version="-$1.$2" |
||||
|
elif command -v "$compiler$1$2" > /dev/null; then |
||||
|
desired_version="$1$2" |
||||
|
elif command -v "$compiler-$1$2" > /dev/null; then |
||||
|
desired_version="-$1$2" |
||||
|
fi |
||||
|
|
||||
|
echo "$desired_version" |
||||
|
} |
||||
|
|
||||
|
if [ -z "$CLR_CC" ]; then |
||||
|
|
||||
|
# Set default versions |
||||
|
if [ -z "$majorVersion" ]; then |
||||
|
# note: gcc (all versions) and clang versions higher than 6 do not have minor version in file name, if it is zero. |
||||
|
if [ "$compiler" = "clang" ]; then versions=( 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5 ) |
||||
|
elif [ "$compiler" = "gcc" ]; then versions=( 9 8 7 6 5 4.9 ); fi |
||||
|
|
||||
|
for version in "${versions[@]}"; do |
||||
|
parts=(${version//./ }) |
||||
|
desired_version="$(check_version_exists "${parts[0]}" "${parts[1]}")" |
||||
|
if [ "$desired_version" != "-1" ]; then majorVersion="${parts[0]}"; break; fi |
||||
|
done |
||||
|
|
||||
|
if [ -z "$majorVersion" ]; then |
||||
|
if command -v "$compiler" > /dev/null; then |
||||
|
if [ "$(uname)" != "Darwin" ]; then |
||||
|
Write-PipelineTelemetryError -category "Build" -type "warning" "Specific version of $compiler not found, falling back to use the one in PATH." |
||||
|
fi |
||||
|
export CC="$(command -v "$compiler")" |
||||
|
export CXX="$(command -v "$cxxCompiler")" |
||||
|
else |
||||
|
Write-PipelineTelemetryError -category "Build" "No usable version of $compiler found." |
||||
|
exit 1 |
||||
|
fi |
||||
|
else |
||||
|
if [ "$compiler" = "clang" ] && [ "$majorVersion" -lt 5 ]; then |
||||
|
if [ "$build_arch" = "arm" ] || [ "$build_arch" = "armel" ]; then |
||||
|
if command -v "$compiler" > /dev/null; then |
||||
|
Write-PipelineTelemetryError -category "Build" -type "warning" "Found clang version $majorVersion which is not supported on arm/armel architectures, falling back to use clang from PATH." |
||||
|
export CC="$(command -v "$compiler")" |
||||
|
export CXX="$(command -v "$cxxCompiler")" |
||||
|
else |
||||
|
Write-PipelineTelemetryError -category "Build" "Found clang version $majorVersion which is not supported on arm/armel architectures, and there is no clang in PATH." |
||||
|
exit 1 |
||||
|
fi |
||||
|
fi |
||||
|
fi |
||||
|
fi |
||||
|
else |
||||
|
desired_version="$(check_version_exists "$majorVersion" "$minorVersion")" |
||||
|
if [ "$desired_version" = "-1" ]; then |
||||
|
Write-PipelineTelemetryError -category "Build" "Could not find specific version of $compiler: $majorVersion $minorVersion." |
||||
|
exit 1 |
||||
|
fi |
||||
|
fi |
||||
|
|
||||
|
if [ -z "$CC" ]; then |
||||
|
export CC="$(command -v "$compiler$desired_version")" |
||||
|
export CXX="$(command -v "$cxxCompiler$desired_version")" |
||||
|
if [ -z "$CXX" ]; then export CXX="$(command -v "$cxxCompiler")"; fi |
||||
|
fi |
||||
|
else |
||||
|
if [ ! -f "$CLR_CC" ]; then |
||||
|
Write-PipelineTelemetryError -category "Build" "CLR_CC is set but path '$CLR_CC' does not exist" |
||||
|
exit 1 |
||||
|
fi |
||||
|
export CC="$CLR_CC" |
||||
|
export CXX="$CLR_CXX" |
||||
|
fi |
||||
|
|
||||
|
if [ -z "$CC" ]; then |
||||
|
Write-PipelineTelemetryError -category "Build" "Unable to find $compiler." |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
export CCC_CC="$CC" |
||||
|
export CCC_CXX="$CXX" |
||||
|
export SCAN_BUILD_COMMAND="$(command -v "scan-build$desired_version")" |
||||
Loading…
Reference in new issue