tryrun_dir="$2"
build_arch="$4"
compiler="$5"
-cxxCompiler="$compiler++"
majorVersion="$6"
minorVersion="$7"
-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 "$compier$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
- echo "WARN: Specific version of $compiler not found, falling back to use the one in PATH."
- fi
- CC="$(command -v "$compiler")"
- CXX="$(command -v "$cxxCompiler")"
- else
- echo "ERROR: 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
- echo "WARN: Found clang version $majorVersion which is not supported on arm/armel architectures, falling back to use clang from PATH."
- CC="$(command -v "$compiler")"
- CXX="$(command -v "$cxxCompiler")"
- else
- echo "ERROR: 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
- echo "ERROR: Could not find specific version of $compiler: $majorVersion $minorVersion."
- exit 1
- fi
- 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
- echo "ERROR: CLR_CC is set but path '$CLR_CC' does not exist"
- exit 1
- fi
- CC="$CLR_CC"
- CXX="$CLR_CXX"
-fi
-
-if [[ -z "$CC" ]]; then
- echo "ERROR: Unable to find $compiler."
- exit 1
-fi
+source "$scriptroot/init-compiler.sh" "$build_arch" "$compiler" "$majorVersion" "$minorVersion"
CCC_CC="$CC"
CCC_CXX="$CXX"
SCAN_BUILD_COMMAND="$(command -v "scan-build$desired_version")"
-export CC CCC_CC CXX CCC_CXX SCAN_BUILD_COMMAND
+export CCC_CC CCC_CXX SCAN_BUILD_COMMAND
buildtype=DEBUG
code_coverage=OFF
--- /dev/null
+#!/usr/bin/env bash
+#
+# This file detects the C/C++ compiler and exports it to the CC/CXX environment variables
+#
+
+if [[ "$#" -lt 2 ]]; then
+ echo "Usage..."
+ echo "detect-compiler.sh <Architecture> <compiler> <compiler major version> <compiler minor version>"
+ 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
+
+build_arch="$1"
+compiler="$2"
+cxxCompiler="$compiler++"
+majorVersion="$3"
+minorVersion="$4"
+
+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
+ echo "WARN: Specific version of $compiler not found, falling back to use the one in PATH."
+ fi
+ CC="$(command -v "$compiler")"
+ CXX="$(command -v "$cxxCompiler")"
+ else
+ echo "ERROR: 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
+ echo "WARN: Found clang version $majorVersion which is not supported on arm/armel architectures, falling back to use clang from PATH."
+ CC="$(command -v "$compiler")"
+ CXX="$(command -v "$cxxCompiler")"
+ else
+ echo "ERROR: 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
+ echo "ERROR: Could not find specific version of $compiler: $majorVersion $minorVersion."
+ exit 1
+ fi
+ 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
+ echo "ERROR: CLR_CC is set but path '$CLR_CC' does not exist"
+ exit 1
+ fi
+ CC="$CLR_CC"
+ CXX="$CLR_CXX"
+fi
+
+if [[ -z "$CC" ]]; then
+ echo "ERROR: Unable to find $compiler."
+ exit 1
+fi
+
+export CC CXX
</PropertyGroup>
<PropertyGroup>
<_MonoConfigureParams Condition="$(MonoEnableLLVM) == true">$(_MonoConfigureParams) --enable--llvm </_MonoConfigureParams>
- <_MonoConfigureParams>$(_MonoConfigureParams) --with-core=only CC=clang CXX=clang++ CFLAGS="$(_MonoExtraCFLAGS)" CXXFLAGS="$(_MonoExtraCXXFLAGS)"</_MonoConfigureParams>
+ <_MonoConfigureParams>$(_MonoConfigureParams) --enable-maintainer-mode --enable-compile-warnings --with-core=only CFLAGS="$(_MonoExtraCFLAGS)" CXXFLAGS="$(_MonoExtraCXXFLAGS)"</_MonoConfigureParams>
</PropertyGroup>
<Message Text="Configuring Mono with '$(_MonoConfigureParams)'" Importance="High" />
<MakeDir Directories="$(MonoObjDir)" />
<Exec Command="NOCONFIGURE=1 $(MonoProjectRoot)autogen.sh" />
- <Exec Command="$(MonoProjectRoot)configure $(_MonoConfigureParams)" WorkingDirectory="$(MonoObjDir)" />
+ <Exec Command="bash -c 'source $(RepositoryEngineeringDir)native/init-compiler.sh $(Platform) clang && $(MonoProjectRoot)configure $(_MonoConfigureParams)'" WorkingDirectory="$(MonoObjDir)" />
<Touch Files="$(MonoObjDir)config.h" />
</Target>