diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index a363a74f113..a3816f347d1 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -47,13 +47,13 @@
-
+
https://github.com/dotnet/arcade
- fa4a48044d33222537e6dbd000f8a2adaa7a15c7
+ 734d875ba2abfb5c8f5f52368e7d4711ee366e31
-
+
https://github.com/dotnet/arcade
- fa4a48044d33222537e6dbd000f8a2adaa7a15c7
+ 734d875ba2abfb5c8f5f52368e7d4711ee366e31
diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh
index 5c05b39f101..6fa2c8aa551 100755
--- a/eng/common/cross/build-rootfs.sh
+++ b/eng/common/cross/build-rootfs.sh
@@ -6,7 +6,7 @@ usage()
{
echo "Usage: $0 [BuildArch] [CodeName] [lldbx.y] [--skipunmount] --rootfsdir ]"
echo "BuildArch can be: arm(default), armel, arm64, x86"
- echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine, alpine3.9 or alpine3.13. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen."
+ echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine, alpine3.13 or alpine3.14. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen."
echo " for FreeBSD can be: freebsd11, freebsd12, freebsd13"
echo " for illumos can be: illumos."
echo "lldbx.y - optional, LLDB version, can be: lldb3.9(default), lldb4.0, lldb5.0, lldb6.0 no-lldb. Ignored for alpine and FreeBSD"
@@ -32,9 +32,9 @@ __UbuntuPackages="build-essential"
__AlpinePackages="alpine-base"
__AlpinePackages+=" build-base"
__AlpinePackages+=" linux-headers"
-__AlpinePackagesEdgeCommunity=" lldb-dev"
-__AlpinePackagesEdgeMain+=" python3"
-__AlpinePackagesEdgeMain+=" libedit"
+__AlpinePackages+=" lldb-dev"
+__AlpinePackages+=" python3"
+__AlpinePackages+=" libedit"
# symlinks fixer
__UbuntuPackages+=" symlinks"
@@ -185,23 +185,17 @@ while :; do
__UbuntuRepo=
__Tizen=tizen
;;
- alpine|alpine3.9)
+ alpine|alpine3.13)
__CodeName=alpine
__UbuntuRepo=
- __AlpineVersion=3.9
- __AlpinePackagesEdgeMain+=" llvm11-libs"
- __AlpinePackagesEdgeMain+=" clang-libs"
+ __AlpineVersion=3.13
+ __AlpinePackages+=" llvm10-libs"
;;
- alpine3.13)
+ alpine3.14)
__CodeName=alpine
__UbuntuRepo=
- __AlpineVersion=3.13
- # Alpine 3.13 has all the packages we need in the 3.13 repository
- __AlpinePackages+=$__AlpinePackagesEdgeCommunity
- __AlpinePackagesEdgeCommunity=
- __AlpinePackages+=$__AlpinePackagesEdgeMain
- __AlpinePackagesEdgeMain=
- __AlpinePackages+=" llvm10-libs"
+ __AlpineVersion=3.14
+ __AlpinePackages+=" llvm11-libs"
;;
freebsd11)
__FreeBSDBase="11.3-RELEASE"
@@ -279,20 +273,6 @@ if [[ "$__CodeName" == "alpine" ]]; then
-U --allow-untrusted --root $__RootfsDir --arch $__AlpineArch --initdb \
add $__AlpinePackages
- if [[ -n "$__AlpinePackagesEdgeMain" ]]; then
- $__ApkToolsDir/apk-tools-$__ApkToolsVersion/apk \
- -X http://dl-cdn.alpinelinux.org/alpine/edge/main \
- -U --allow-untrusted --root $__RootfsDir --arch $__AlpineArch --initdb \
- add $__AlpinePackagesEdgeMain
- fi
-
- if [[ -n "$__AlpinePackagesEdgeCommunity" ]]; then
- $__ApkToolsDir/apk-tools-$__ApkToolsVersion/apk \
- -X http://dl-cdn.alpinelinux.org/alpine/edge/community \
- -U --allow-untrusted --root $__RootfsDir --arch $__AlpineArch --initdb \
- add $__AlpinePackagesEdgeCommunity
- fi
-
rm -r $__ApkToolsDir
elif [[ "$__CodeName" == "freebsd" ]]; then
mkdir -p $__RootfsDir/usr/local/etc
diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake
index ec8971eb019..6501c3a955f 100644
--- a/eng/common/cross/toolchain.cmake
+++ b/eng/common/cross/toolchain.cmake
@@ -44,7 +44,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86")
set(TOOLCHAIN "i686-linux-gnu")
elseif (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
- set(triple "x86_64-unknown-freebsd11")
+ set(triple "x86_64-unknown-freebsd12")
elseif (ILLUMOS)
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(TOOLCHAIN "x86_64-illumos")
@@ -91,6 +91,9 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
set(CMAKE_CXX_COMPILER_TARGET ${triple})
set(CMAKE_ASM_COMPILER_TARGET ${triple})
set(CMAKE_SYSROOT "${CROSS_ROOTFS}")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld")
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=lld")
+ set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=lld")
elseif(ILLUMOS)
set(CMAKE_SYSROOT "${CROSS_ROOTFS}")
diff --git a/eng/common/native/find-native-compiler.sh b/eng/common/native/init-compiler.sh
similarity index 52%
rename from eng/common/native/find-native-compiler.sh
rename to eng/common/native/init-compiler.sh
index aed19d07d50..1daadf32a52 100644
--- a/eng/common/native/find-native-compiler.sh
+++ b/eng/common/native/init-compiler.sh
@@ -1,39 +1,32 @@
#!/usr/bin/env bash
#
-# This file locates the native compiler with the given name and version and sets the environment variables to locate it.
+# This file detects the C/C++ compiler and exports it to the CC/CXX environment variables
#
-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
+if [[ "$#" -lt 2 ]]; then
echo "Usage..."
- echo "find-native-compiler.sh "
+ echo "init-compiler.sh "
+ echo "Specify the target architecture."
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
+. "$( cd -P "$( dirname "$0" )" && pwd )"/../pipeline-logging-functions.sh
-compiler="$1"
+build_arch="$1"
+compiler="$2"
cxxCompiler="$compiler++"
-majorVersion="$2"
-minorVersion="$3"
+majorVersion="$3"
+minorVersion="$4"
-if [ "$compiler" = "gcc" ]; then cxxCompiler="g++"; fi
+# clear the existing CC and CXX from environment
+CC=
+CXX=
+LDFLAGS=
+
+if [[ "$compiler" == "gcc" ]]; then cxxCompiler="g++"; fi
check_version_exists() {
desired_version=-1
@@ -50,38 +43,38 @@ check_version_exists() {
echo "$desired_version"
}
-if [ -z "$CLR_CC" ]; then
+if [[ -z "$CLR_CC" ]]; then
# Set default versions
- if [ -z "$majorVersion" ]; then
+ 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
+ if [[ "$compiler" == "clang" ]]; then versions=( 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5 )
+ elif [[ "$compiler" == "gcc" ]]; then versions=( 11 10 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
+ if [[ "$desired_version" != "-1" ]]; then majorVersion="${parts[0]}"; break; fi
done
- if [ -z "$majorVersion" ]; then
+ if [[ -z "$majorVersion" ]]; then
if command -v "$compiler" > /dev/null; then
- if [ "$(uname)" != "Darwin" ]; 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")"
+ CC="$(command -v "$compiler")"
+ 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 [[ "$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")"
+ CC="$(command -v "$compiler")"
+ 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
@@ -91,31 +84,40 @@ if [ -z "$CLR_CC" ]; then
fi
else
desired_version="$(check_version_exists "$majorVersion" "$minorVersion")"
- if [ "$desired_version" = "-1" ]; then
+ 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
+ if [[ -z "$CC" ]]; then
+ CC="$(command -v "$compiler$desired_version")"
+ CXX="$(command -v "$cxxCompiler$desired_version")"
+ if [[ -z "$CXX" ]]; then CXX="$(command -v "$cxxCompiler")"; fi
fi
else
- if [ ! -f "$CLR_CC" ]; then
+ 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"
+ CC="$CLR_CC"
+ CXX="$CLR_CXX"
fi
-if [ -z "$CC" ]; then
- Write-PipelineTelemetryError -category "Build" "Unable to find $compiler."
+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")"
+if [[ "$compiler" == "clang" ]]; then
+ if command -v "lld$desired_version" > /dev/null; then
+ # Only lld version >= 9 can be considered stable
+ if [[ "$majorVersion" -ge 9 ]]; then
+ LDFLAGS="-fuse-ld=lld"
+ fi
+ fi
+fi
+
+SCAN_BUILD_COMMAND="$(command -v "scan-build$desired_version")"
+
+export CC CXX LDFLAGS SCAN_BUILD_COMMAND
diff --git a/global.json b/global.json
index 3f9c56e2f44..2997e6339d6 100644
--- a/global.json
+++ b/global.json
@@ -18,7 +18,7 @@
"rollForward": "latestMajor"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "7.0.0-beta.21459.5",
- "Microsoft.DotNet.Helix.Sdk": "7.0.0-beta.21459.5"
+ "Microsoft.DotNet.Arcade.Sdk": "7.0.0-beta.21466.4",
+ "Microsoft.DotNet.Helix.Sdk": "7.0.0-beta.21466.4"
}
}