echo "-ignorewarnings - do not treat warnings as errors"
echo "-cmakeargs - user-settable additional arguments passed to CMake."
echo "-bindir - output directory (defaults to $__ProjectRoot/bin)"
- echo "-buildstandalonegc - builds the GC in a standalone mode. Can't be used with \"cmakeargs\"."
echo "-msbuildonunsupportedplatform - build managed binaries even if distro is not officially supported."
echo "-numproc - set the number of build processes."
exit 1
if [ "$__HostOS" == "Linux" ]; then
if [ -e /etc/os-release ]; then
source /etc/os-release
- if [[ $ID == "alpine" ]]; then
+ if [[ $ID == "alpine" || $ID == "rhel" ]]; then
# remove the last version digit
VERSION_ID=${VERSION_ID%.*}
fi
export __DistroRid="$__HostDistroRid"
fi
+ if [ "$__BuildOS" == "OSX" ]; then
+ __PortableBuild=1
+ fi
+
# Portable builds target the base RID
if [ $__PortableBuild == 1 ]; then
if [ "$__BuildOS" == "Linux" ]; then
# Parse the optdata package versions out of msbuild so that we can pass them on to CMake
local DotNetCli="$__ProjectRoot/Tools/dotnetcli/dotnet"
if [ ! -f $DotNetCli ]; then
- "$__ProjectRoot/init-tools.sh"
+ source "$__ProjectRoot/init-tools.sh"
if [ $? != 0 ]; then
echo "Failed to restore buildtools."
exit 1
fi
# Event Logging Infrastructure
- __GeneratedIntermediate="$__IntermediatesDir/Generated"
- __GeneratedIntermediateEventProvider="$__GeneratedIntermediate/eventprovider_new"
- __GeneratedIntermediateEventPipe="$__GeneratedIntermediate/eventpipe_new"
-
- if [[ -d "$__GeneratedIntermediateEventProvider" ]]; then
- rm -rf "$__GeneratedIntermediateEventProvider"
- fi
-
- if [[ -d "$__GeneratedIntermediateEventPipe" ]]; then
- rm -rf "$__GeneratedIntermediateEventPipe"
- fi
-
- if [[ ! -d "$__GeneratedIntermediate/eventprovider" ]]; then
- mkdir -p "$__GeneratedIntermediate/eventprovider"
- fi
-
- if [[ ! -d "$__GeneratedIntermediate/eventpipe" ]]; then
- mkdir -p "$__GeneratedIntermediate/eventpipe"
- fi
-
- mkdir -p "$__GeneratedIntermediateEventProvider"
- mkdir -p "$__GeneratedIntermediateEventPipe"
+ __GeneratedIntermediate="$__IntermediatesDir/eventing"
+ __GeneratedIntermediateEventProvider="$__GeneratedIntermediate/eventprovider"
+ __GeneratedIntermediateEventPipe="$__GeneratedIntermediate/eventpipe"
__PythonWarningFlags="-Wall"
if [[ $__IgnoreWarnings == 0 ]]; then
if [[ $__SkipCoreCLR == 0 || $__ConfigureOnly == 1 ]]; then
echo "Laying out dynamically generated files consumed by the build system "
- echo "Laying out dynamically generated Event Logging Test files"
- $PYTHON -B $__PythonWarningFlags "$__ProjectRoot/src/scripts/genXplatEventing.py" --man "$__ProjectRoot/src/vm/ClrEtwAll.man" --exc "$__ProjectRoot/src/vm/ClrEtwAllMeta.lst" --testdir "$__GeneratedIntermediateEventProvider/tests"
+ echo "Laying out dynamically generated Event test files, etmdummy stub functions, and external linkages"
+ $PYTHON -B $__PythonWarningFlags "$__ProjectRoot/src/scripts/genEventing.py" --inc $__IntermediatesDir/src/inc --dummy $__IntermediatesDir/src/inc/etmdummy.h --man "$__ProjectRoot/src/vm/ClrEtwAll.man" --testdir "$__GeneratedIntermediateEventProvider/tests"
if [[ $? != 0 ]]; then
exit
fi
- case $__BuildOS in
- Linux)
- echo "Laying out dynamically generated EventPipe Implementation"
- $PYTHON -B $__PythonWarningFlags "$__ProjectRoot/src/scripts/genEventPipe.py" --man "$__ProjectRoot/src/vm/ClrEtwAll.man" --intermediate "$__GeneratedIntermediateEventPipe" --exc "$__ProjectRoot/src/vm/ClrEtwAllMeta.lst"
- if [[ $? != 0 ]]; then
- exit
- fi
- ;;
- *)
- ;;
- esac
+ echo "Laying out dynamically generated EventPipe Implementation"
+ $PYTHON -B $__PythonWarningFlags "$__ProjectRoot/src/scripts/genEventPipe.py" --man "$__ProjectRoot/src/vm/ClrEtwAll.man" --intermediate "$__GeneratedIntermediateEventPipe"
#determine the logging system
case $__BuildOS in
- Linux)
+ Linux|FreeBSD)
echo "Laying out dynamically generated Event Logging Implementation of Lttng"
- $PYTHON -B $__PythonWarningFlags "$__ProjectRoot/src/scripts/genXplatLttng.py" --man "$__ProjectRoot/src/vm/ClrEtwAll.man" --intermediate "$__GeneratedIntermediateEventProvider"
+ $PYTHON -B $__PythonWarningFlags "$__ProjectRoot/src/scripts/genLttngProvider.py" --man "$__ProjectRoot/src/vm/ClrEtwAll.man" --intermediate "$__GeneratedIntermediateEventProvider"
if [[ $? != 0 ]]; then
exit
fi
;;
*)
+ echo "Laying out dummy event logging provider"
+ $PYTHON -B $__PythonWarningFlags "$__ProjectRoot/src/scripts/genDummyProvider.py" --man "$__ProjectRoot/src/vm/ClrEtwAll.man" --intermediate "$__GeneratedIntermediateEventProvider"
+ if [[ $? != 0 ]]; then
+ exit
+ fi
;;
esac
- fi
- echo "Cleaning the temp folder of dynamically generated Event Logging files"
- $PYTHON -B $__PythonWarningFlags -c "import sys;sys.path.insert(0,\"$__ProjectRoot/src/scripts\"); from Utilities import *;UpdateDirectory(\"$__GeneratedIntermediate/eventprovider\",\"$__GeneratedIntermediateEventProvider\")"
- if [[ $? != 0 ]]; then
- exit
- fi
-
- rm -rf "$__GeneratedIntermediateEventProvider"
-
- echo "Cleaning the temp folder of dynamically generated EventPipe files"
- $PYTHON -B $__PythonWarningFlags -c "import sys;sys.path.insert(0,\"$__ProjectRoot/src/scripts\"); from Utilities import *;UpdateDirectory(\"$__GeneratedIntermediate/eventpipe\",\"$__GeneratedIntermediateEventPipe\")"
- if [[ $? != 0 ]]; then
- exit
+ if [[ $__CrossBuild == 1 ]]; then
+ cp -r $__GeneratedIntermediate $__CrossCompIntermediatesDir
+ fi
fi
-
- rm -rf "$__GeneratedIntermediateEventPipe"
}
build_native()
__versionSourceFile="$intermediatesForBuild/version.cpp"
if [ $__SkipGenerateVersion == 0 ]; then
pwd
- "$__ProjectRoot/run.sh" build -Project=$__ProjectDir/build.proj -generateHeaderUnix -NativeVersionSourceFile=$__versionSourceFile $__RunArgs $__UnprocessedBuildArgs
+ "$__ProjectRoot/run.sh" build -Project=$__ProjectDir/build.proj -generateHeaderUnix -NativeVersionSourceFile=$__versionSourceFile -MsBuildEventLogging="/l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log" $__RunArgs $__UnprocessedBuildArgs
else
# Generate the dummy version.cpp, but only if it didn't exist to make sure we don't trigger unnecessary rebuild
__versionSourceLine="static char sccsid[] __attribute__((used)) = \"@(#)No version information produced\";"
echo "Failed to generate $message build project!"
exit 1
fi
-
+
# Build
if [ $__ConfigureOnly == 1 ]; then
echo "Finish configuration & skipping $message build."
__ExtraBuildArgs="$__ExtraBuildArgs -OptimizationDataDir=\"$__PackagesDir/optimization.$__BuildOS-$__BuildArch.IBC.CoreCLR/$__IbcOptDataVersion/data/\""
__ExtraBuildArgs="$__ExtraBuildArgs -EnableProfileGuidedOptimization=true"
fi
- $__ProjectRoot/run.sh build -Project=$__ProjectDir/build.proj -MsBuildLog="/flp:Verbosity=normal;LogFile=$__LogsDir/System.Private.CoreLib_$__BuildOS__$__BuildArch__$__BuildType.log" -BuildTarget -__IntermediatesDir=$__IntermediatesDir -__RootBinDir=$__RootBinDir -BuildNugetPackage=false -UseSharedCompilation=false $__RunArgs $__ExtraBuildArgs $__UnprocessedBuildArgs
+ $__ProjectRoot/run.sh build -Project=$__ProjectDir/build.proj -MsBuildEventLogging="/l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log" -MsBuildLog="/flp:Verbosity=normal;LogFile=$__LogsDir/System.Private.CoreLib_$__BuildOS__$__BuildArch__$__BuildType.log" -BuildTarget -__IntermediatesDir=$__IntermediatesDir -__RootBinDir=$__RootBinDir -BuildNugetPackage=false -UseSharedCompilation=false $__RunArgs $__ExtraBuildArgs $__UnprocessedBuildArgs
if [ $? -ne 0 ]; then
echo "Failed to build managed components."
echo "DistroRid is "$__DistroRid
echo "ROOTFS_DIR is "$ROOTFS_DIR
# Build the packages
- $__ProjectRoot/run.sh build -Project=$__SourceDir/.nuget/packages.builds -MsBuildLog="/flp:Verbosity=normal;LogFile=$__LogsDir/Nuget_$__BuildOS__$__BuildArch__$__BuildType.log" -BuildTarget -__IntermediatesDir=$__IntermediatesDir -__RootBinDir=$__RootBinDir -BuildNugetPackage=false -UseSharedCompilation=false $__RunArgs $__UnprocessedBuildArgs
+ $__ProjectRoot/run.sh build -Project=$__SourceDir/.nuget/packages.builds -MsBuildEventLogging="/l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log" -MsBuildLog="/flp:Verbosity=normal;LogFile=$__LogsDir/Nuget_$__BuildOS__$__BuildArch__$__BuildType.log" -BuildTarget -__IntermediatesDir=$__IntermediatesDir -__RootBinDir=$__RootBinDir -BuildNugetPackage=false -UseSharedCompilation=false $__RunArgs $__UnprocessedBuildArgs
if [ $? -ne 0 ]; then
echo "Failed to generate Nuget packages."
# Set the various build properties here so that CMake and MSBuild can pick them up
__ProjectDir="$__ProjectRoot"
__SourceDir="$__ProjectDir/src"
-__PackagesDir="$__ProjectDir/packages"
+__PackagesDir="${DotNetRestorePackagesPath:-${__ProjectDir}/packages}"
__RootBinDir="$__ProjectDir/bin"
__UnprocessedBuildArgs=
__RunArgs=
exit 1
fi
;;
- buildstandalonegc|-buildstandalonegc)
- __cmakeargs="$__cmakeargs -DFEATURE_STANDALONE_GC=1 -DFEATURE_STANDALONE_GC_ONLY=1"
- ;;
msbuildonunsupportedplatform|-msbuildonunsupportedplatform)
__msbuildonunsupportedplatform=1
;;