* Add runtimelab.yml for dotnet/runtimelab experiments CI and build infrastructure
* rename one of the ymls based on feedback
<!-- Installer sets -->
<ItemGroup Condition="$(_subset.Contains('+corehost+'))">
- <CorehostProjectToBuild Include="$(InstallerProjectRoot)corehost\build.proj" SignPhase="Binaries" />
+ <CorehostProjectToBuild Include="$(InstallerProjectRoot)corehost\corehost.proj" SignPhase="Binaries" />
<ProjectToBuild Include="@(CorehostProjectToBuild)" BuildInParallel="true" Pack="true" Category="installer" />
</ItemGroup>
runtimeFlavor: 'coreclr'
runtimeFlavorDisplayName: 'CoreCLR'
runtimeVariant: ''
+ dependsOn: []
### Build managed test components (native components are getting built as part
### of the the product build job).
# See https://docs.microsoft.com/azure/devops/pipelines/process/conditions
condition: and(succeeded(), ${{ parameters.condition }})
+ ${{ if ne(parameters.dependsOn[0], '') }}:
+ dependsOn: ${{ parameters.dependsOn }}
+
# TODO: Build of managed test components currently depends on the corresponding build job
# because it needs System.Private.Corelib; we should be able to remove this dependency
# by switching over to using reference assembly.
- ${{ if ne(parameters.stagedBuild, true) }}:
+ ${{ if and(ne(parameters.stagedBuild, true), eq(parameters.dependsOn[0], '')) }}:
dependsOn:
- ${{ format('coreclr_{0}_product_build_{1}{2}_{3}_{4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, coalesce(parameters.liveRuntimeBuildConfig, parameters.buildConfig)) }}
- ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
pool: ''
runtimeFlavor: 'coreclr'
runtimeFlavorDisplayName: 'CoreCLR'
+ dependsOn: []
### Test run job
${{ if eq(variables['System.TeamProject'], 'internal') }}:
continueOnError: true
- dependsOn:
- - ${{ if in(parameters.testGroup, 'innerloop', 'clrinterpreter') }}:
- - '${{ parameters.runtimeFlavor }}_common_test_build_p0_AnyOS_AnyCPU_${{parameters.buildConfig }}'
- - ${{ if notIn(parameters.testGroup, 'innerloop', 'clrinterpreter') }}:
- - '${{ parameters.runtimeFlavor }}_common_test_build_p1_AnyOS_AnyCPU_${{parameters.buildConfig }}'
- - ${{ if ne(parameters.stagedBuild, true) }}:
- - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- - ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
- - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveLibrariesBuildConfig) }}
+ ${{ if ne(parameters.dependsOn[0], '') }}:
+ dependsOn: ${{ parameters.dependsOn }}
+
+ ${{ if eq(parameters.dependsOn[0], '') }}:
+ dependsOn:
+ - ${{ if in(parameters.testGroup, 'innerloop', 'clrinterpreter') }}:
+ - '${{ parameters.runtimeFlavor }}_common_test_build_p0_AnyOS_AnyCPU_${{parameters.buildConfig }}'
+ - ${{ if notIn(parameters.testGroup, 'innerloop', 'clrinterpreter') }}:
+ - '${{ parameters.runtimeFlavor }}_common_test_build_p1_AnyOS_AnyCPU_${{parameters.buildConfig }}'
+ - ${{ if ne(parameters.stagedBuild, true) }}:
+ - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+ - ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
+ - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveLibrariesBuildConfig) }}
# Compute job name from template parameters
${{ if in(parameters.testGroup, 'innerloop', 'clrinterpreter') }}:
displayName: Disk Usage after Build
- ${{ if eq(parameters.runTests, false) }}:
- - ${{ if ne(parameters.isOfficialBuild, true) }}:
- - task: CopyFiles@2
- displayName: Prepare testhost folder to publish
- inputs:
- sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/testhost
- targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/testhost
-
- - task: CopyFiles@2
- displayName: Prepare runtime folder to publish
- inputs:
- sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/runtime
- targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/runtime
-
- - task: CopyFiles@2
- displayName: Prepare ref folder to publish
- inputs:
- sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/ref
- targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/ref
-
- - task: CopyFiles@2
- displayName: Prepare shared framework ref assemblies to publish
- inputs:
- sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/ref/microsoft.netcore.app
- targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/ref/microsoft.netcore.app
-
- - task: CopyFiles@2
- displayName: Prepare shared framework runtime folder to publish
- inputs:
- sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/pkg
- targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/pkg
-
- - task: CopyFiles@2
- displayName: Prepare docs folder to publish
- inputs:
- sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/docs
- targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/docs
-
- - task: CopyFiles@2
- displayName: Prepare native folder to publish
- inputs:
- sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/native
- targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/native
-
- - task: CopyFiles@2
- displayName: Prepare artifacts packages folder to publish
- inputs:
- sourceFolder: $(Build.SourcesDirectory)/artifacts/packages
- targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/packages
- condition: and(succeeded(), eq(variables['_librariesBuildProducedPackages'], true))
+ - template: /eng/pipelines/libraries/prepare-for-bin-publish.yml
+ parameters:
+ isOfficialBuild: ${{ parameters.isOfficialBuild }}
- template: /eng/pipelines/common/upload-artifact-step.yml
parameters:
--- /dev/null
+# Steps used to prepare the Artifacts Staging Directory with required files for
+# executing libraries tests as well as shared framework assets
+parameters:
+ isOfficialBuild: ''
+
+steps:
+ - ${{ if ne(parameters.isOfficialBuild, true) }}:
+ - task: CopyFiles@2
+ displayName: Prepare testhost folder to publish
+ inputs:
+ sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/testhost
+ targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/testhost
+
+ - task: CopyFiles@2
+ displayName: Prepare runtime folder to publish
+ inputs:
+ sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/runtime
+ targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/runtime
+
+ - task: CopyFiles@2
+ displayName: Prepare ref folder to publish
+ inputs:
+ sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/ref
+ targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/ref
+
+ - task: CopyFiles@2
+ displayName: Prepare shared framework ref assemblies to publish
+ inputs:
+ sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/ref/microsoft.netcore.app
+ targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/ref/microsoft.netcore.app
+
+ - task: CopyFiles@2
+ displayName: Prepare docs folder to publish
+ inputs:
+ sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/docs
+ targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/docs
+
+ - task: CopyFiles@2
+ displayName: Prepare shared framework runtime folder to publish
+ inputs:
+ sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/pkg
+ targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/pkg
+
+ - task: CopyFiles@2
+ displayName: Prepare native folder to publish
+ inputs:
+ sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/native
+ targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/bin/native
+
+ - task: CopyFiles@2
+ displayName: Prepare artifacts packages folder to publish
+ inputs:
+ sourceFolder: $(Build.SourcesDirectory)/artifacts/packages
+ targetFolder: $(Build.ArtifactStagingDirectory)/artifacts/packages
+ condition: and(succeeded(), eq(variables['_librariesBuildProducedPackages'], true))
# stress modes that each test will be run with. This is the same usage as 'testGroup' in
# eng/pipelines/common/templates/runtimes/run-test-job.yml.
coreclrTestGroup: ''
+ dependsOn: []
jobs:
- template: /eng/pipelines/libraries/base-job.yml
testDisplayName: ${{ parameters.runtimeFlavor }}_interpreter_${{ parameters.liveRuntimeBuildConfig }}
dependsOn:
- - ${{ if notIn(parameters.framework, 'allConfigurations', 'net472') }}:
- - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- # tests are built as part of product build
- - ${{ if or(ne(parameters.archType, parameters.dependsOnTestArchitecture), ne(parameters.buildConfig, parameters.dependsOnTestBuildConfiguration)) }}:
- - ${{ format('libraries_build_{0}_{1}_{2}', parameters.osGroup, parameters.dependsOnTestArchitecture, parameters.dependsOnTestBuildConfiguration) }}
- - ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
- - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveRuntimeBuildConfig) }}
+ - ${{ if ne(parameters.dependsOn[0], '') }}:
+ - ${{ parameters.dependsOn }}
+ - ${{ if eq(parameters.dependsOn[0], '') }}:
+ - ${{ if notIn(parameters.framework, 'allConfigurations', 'net472') }}:
+ - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+ # tests are built as part of product build
+ - ${{ if or(ne(parameters.archType, parameters.dependsOnTestArchitecture), ne(parameters.buildConfig, parameters.dependsOnTestBuildConfiguration)) }}:
+ - ${{ format('libraries_build_{0}_{1}_{2}', parameters.osGroup, parameters.dependsOnTestArchitecture, parameters.dependsOnTestBuildConfiguration) }}
+ - ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
+ - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveRuntimeBuildConfig) }}
variables:
- librariesTestsArtifactName: ${{ format('libraries_test_assets_{0}_{1}_{2}', parameters.osGroup, parameters.dependsOnTestArchitecture, parameters.dependsOnTestBuildConfiguration) }}
--- /dev/null
+# Setting batch to true, triggers one build at a time.
+# if there is a push while a build in progress, it will wait,
+# until the running build finishes, and produce a build with all the changes
+# that happened during the last build.
+trigger:
+ batch: true
+ branches:
+ include:
+ # Add Experiment branch here
+ paths:
+ include:
+ - '*'
+ - docs/manpages/*
+ exclude:
+ - eng/Version.Details.xml
+ - .github/*
+ - docs/*
+ - CODE-OF-CONDUCT.md
+ - CONTRIBUTING.md
+ - LICENSE.TXT
+ - PATENTS.TXT
+ - README.md
+ - SECURITY.md
+ - THIRD-PARTY-NOTICES.TXT
+
+pr:
+ branches:
+ include:
+ # Add Experiment branch here
+ paths:
+ include:
+ - '*'
+ - docs/manpages/*
+ exclude:
+ - eng/Version.Details.xml
+ - .github/*
+ - docs/*
+ - CODE-OF-CONDUCT.md
+ - CONTRIBUTING.md
+ - LICENSE.TXT
+ - PATENTS.TXT
+ - README.md
+ - SECURITY.md
+ - THIRD-PARTY-NOTICES.TXT
+
+variables:
+ - template: /eng/pipelines/common/variables.yml
+
+jobs:
+#
+# Checkout repository
+#
+- template: /eng/pipelines/common/checkout-job.yml
+
+#
+# Build with Debug config and Checked runtimeConfiguration
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
+ buildConfig: Checked
+ platforms:
+ - Linux_x64
+ - Windows_NT_x64
+ jobParameters:
+ testGroup: innerloop
+ buildArgs: -s clr+libs+installer -c debug -runtimeConfiguration Checked
+ extraStepsTemplate: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
+
+#
+# Build with Release config and Release runtimeConfiguration
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
+ buildConfig: Release
+ platforms:
+ - Linux_x64
+ - Windows_NT_x64
+ jobParameters:
+ testGroup: innerloop
+ buildArgs: -s clr+libs+libs.tests+installer -c $(_BuildConfig) /p:ArchiveTests=true
+ extraStepsTemplate: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
+ extraStepsParameters:
+ uploadTests: true
+
+#
+# Build with Release allConfigurations to produce packages
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
+ buildConfig: release
+ platforms:
+ - Windows_NT_x64
+ jobParameters:
+ testGroup: innerloop
+ nameSuffix: All_Configurations
+ buildArgs: -s libs -c $(_BuildConfig) -allConfigurations
+
+#
+# CoreCLR Test builds using live libraries release build
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml
+ buildConfig: Checked
+ platforms:
+ - Linux_x64
+ jobParameters:
+ testGroup: innerloop
+ liveLibrariesBuildConfig: Release
+ dependsOn:
+ - build_Linux_x64_Checked_
+ - build_Linux_x64_Release_
+
+#
+# CoreCLR Test executions using live libraries
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml
+ buildConfig: Checked
+ platforms:
+ - Linux_x64
+ helixQueueGroup: pr
+ helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
+ jobParameters:
+ testGroup: innerloop
+ liveLibrariesBuildConfig: Release
+ dependsOn:
+ - coreclr_common_test_build_p0_AnyOS_AnyCPU_Checked
+
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml
+ buildConfig: Checked
+ platforms:
+ - Windows_NT_x64
+ helixQueueGroup: pr
+ helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
+ jobParameters:
+ testGroup: innerloop
+ liveLibrariesBuildConfig: Release
+ dependsOn:
+ - coreclr_common_test_build_p0_AnyOS_AnyCPU_Checked
+ - build_Windows_NT_x64_Checked_
+ - build_Windows_NT_x64_Release_
+
+#
+# Libraries Release Test Execution against a release coreclr runtime
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/libraries/run-test-job.yml
+ buildConfig: Release
+ platforms:
+ - Linux_x64
+ helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ jobParameters:
+ isFullMatrix: false
+ isOfficialBuild: false
+ testScope: innerloop
+ liveRuntimeBuildConfig: Release
+ dependsOnTestBuildConfiguration: Release
+ dependsOnTestArchitecture: x64
+ dependsOn:
+ - build_Linux_x64_Release_
+
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/libraries/run-test-job.yml
+ buildConfig: Release
+ platforms:
+ - Windows_NT_x64
+ helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ jobParameters:
+ isFullMatrix: false
+ isOfficialBuild: false
+ testScope: innerloop
+ liveRuntimeBuildConfig: Release
+ dependsOnTestBuildConfiguration: Release
+ dependsOnTestArchitecture: x64
+ dependsOn:
+ - build_Windows_NT_x64_Release_
--- /dev/null
+parameters:
+ buildConfig: ''
+ archType: ''
+ osGroup: ''
+ osSubgroup: ''
+ uploadTests: false
+
+steps:
+ # Build coreclr native test output
+ - script: $(Build.SourcesDirectory)/src/coreclr/build-test$(scriptExt) skipstressdependencies skipmanaged skipgeneratelayout $(buildConfigUpper) ${{ parameters.archType }}
+ displayName: Build native test components
+
+ # Copy all build output into artifacts staging directory
+ - template: /eng/pipelines/libraries/prepare-for-bin-publish.yml
+
+ # Zip CoreCLR Build Output
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: $(Build.SourcesDirectory)/artifacts/bin/coreclr/${{ parameters.osGroup }}.${{ parameters.archType }}.$(buildConfigUpper)
+ archiveType: $(archiveType)
+ tarCompression: $(tarCompression)
+ includeRootFolder: false
+ archiveExtension: $(archiveExtension)
+ artifactName: CoreCLRProduct__${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}
+ displayName: 'CoreCLR product build'
+
+ # Zip Test Build
+ - ${{ if eq(parameters.uploadTests, true) }}:
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: $(Build.SourcesDirectory)/artifacts/helix
+ includeRootFolder: true
+ archiveType: $(archiveType)
+ archiveExtension: $(archiveExtension)
+ tarCompression: $(tarCompression)
+ artifactName: libraries_test_assets_${{ parameters.osGroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}
+ displayName: Test Assets
+
+ # Zip product native assets for use by Tests
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: $(Build.SourcesDirectory)/artifacts/tests/coreclr/obj/${{ parameters.osGroup }}.${{ parameters.archType }}.$(buildConfigUpper)
+ includeRootFolder: false
+ archiveType: $(archiveType)
+ tarCompression: $(tarCompression)
+ archiveExtension: $(archiveExtension)
+ artifactName: CoreCLRNativeTestArtifacts_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}
+ displayName: 'native test components'
+
+ # Zip Libraries Build Output
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: $(Build.ArtifactStagingDirectory)/artifacts
+ archiveType: $(archiveType)
+ tarCompression: $(tarCompression)
+ includeRootFolder: false
+ archiveExtension: $(archiveExtension)
+ artifactName: libraries_bin_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}
+ displayName: Build Assets
+++ /dev/null
-<Project>
- <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
-
- <!--
- Add basic project properties for NuGet restore, needed to import the SourceLink MSBuild tool
- package's targets into the build.
- -->
- <PropertyGroup>
- <TargetFramework>$(NetCoreAppCurrent)</TargetFramework>
- </PropertyGroup>
-
- <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
-
- <!-- Target that builds dotnet, hostfxr and hostpolicy with the same version as what NetCoreApp will be built for
- since the build produced artifacts should always version the same (even if they may not get used).
- -->
- <Target Name="Build"
- DependsOnTargets="
- GetProductVersions;
- GenerateNativeVersionFile;
- BuildCoreHostUnix;
- BuildCoreHostWindows" />
-
- <Target Name="BuildCoreHostUnix"
- Condition="'$(TargetOS)' != 'Windows_NT'"
- DependsOnTargets="GetLatestCommitHash;GenerateNativeVersionFile">
- <PropertyGroup>
- <CMakeBuildDir>$(IntermediateOutputRootPath)corehost\cmake\</CMakeBuildDir>
-
- <BuildArgs>$(Configuration) $(TargetArchitecture) -apphostver "$(AppHostVersion)" -hostver "$(HostVersion)" -fxrver "$(HostResolverVersion)" -policyver "$(HostPolicyVersion)" -commithash "$(LatestCommit)" -os $(TargetOS)</BuildArgs>
- <BuildArgs>$(BuildArgs) -cmakeargs "-DVERSION_FILE_PATH=$(NativeVersionFile)"</BuildArgs>
- <BuildArgs Condition="'$(PortableBuild)' != 'true'">$(BuildArgs) -portablebuild=false</BuildArgs>
- <BuildArgs Condition="'$(CrossBuild)' == 'true'">$(BuildArgs) -cross</BuildArgs>
- <BuildArgs Condition="'$(Compiler)' != ''">$(BuildArgs) $(Compiler)</BuildArgs>
- <BuildArgs Condition="'$(CMakeArgs)' != ''">$(BuildArgs) $(CMakeArgs)</BuildArgs>
- <BuildArgs>$(BuildArgs) -coreclrartifacts $(CoreCLRArtifactsPath)</BuildArgs>
- <BuildArgs>$(BuildArgs) -nativelibsartifacts $(LibrariesArtifactsPath)/bin/native/$(NetCoreAppCurrent)-$(TargetOS)-$(LibrariesConfiguration)-$(TargetArchitecture)</BuildArgs>
- </PropertyGroup>
-
- <!--
- Use IgnoreStandardErrorWarningFormat because Arcade sets WarnAsError and there's an existing
- warning in the macOS build when dsymutil tries to strip symbols.
- -->
- <Message Text="$(MSBuildProjectDirectory)\build.sh $(BuildArgs)" Importance="High"/>
- <Exec Command="$(MSBuildProjectDirectory)\build.sh $(BuildArgs)" IgnoreStandardErrorWarningFormat="true"/>
- </Target>
-
- <Target Name="BuildCoreHostWindows"
- Condition="'$(TargetOS)' == 'Windows_NT'"
- DependsOnTargets="GetLatestCommitHash">
-
- <!-- Generate Version files -->
- <ItemGroup>
- <HostFiles Include="dotnet">
- <FileDescription>.NET Host</FileDescription>
- </HostFiles>
- <HostFiles Include="hostfxr">
- <FileDescription>.NET Host Resolver - $(HostResolverVersion)</FileDescription>
- </HostFiles>
- <HostFiles Include="hostpolicy">
- <FileDescription>.NET Host Policy - $(HostPolicyVersion)</FileDescription>
- </HostFiles>
- <HostFiles Include="comhost">
- <FileDescription>.NET COM Host</FileDescription>
- </HostFiles>
- <HostFiles Include="ijwhost">
- <FileDescription>.NET IJW Host</FileDescription>
- </HostFiles>
- <HostFiles Include="nethost">
- <FileDescription>.NET Component Host</FileDescription>
- </HostFiles>
- </ItemGroup>
-
- <MSBuild
- Projects="$(MSBuildProjectFullPath)"
- Properties="
- GenerateNativeVersionInfo=true;
- AssemblyName=%(HostFiles.FileDescription);
- NativeVersionFile=$(IntermediateOutputRootPath)hostResourceFiles\%(HostFiles.Identity)\version_info.h"
- Targets="GenerateNativeVersionFile"
- Condition="
- '$(IncrementalNativeBuild)' != 'true' or
- !Exists('$(IntermediateOutputRootPath)hostResourceFiles\%(HostFiles.Identity)\version_info.h')"/>
-
- <PropertyGroup>
- <BuildArgs>$(Configuration) $(TargetArchitecture) apphostver $(AppHostVersion) hostver $(HostVersion) fxrver $(HostResolverVersion) policyver $(HostPolicyVersion) commit $(LatestCommit) rid $(OutputRid)</BuildArgs>
- <BuildArgs Condition="'$(PortableBuild)' == 'true'">$(BuildArgs) portable</BuildArgs>
- <BuildArgs Condition="'$(IncrementalNativeBuild)' == 'true'">$(BuildArgs) incremental-native-build</BuildArgs>
- <BuildArgs>$(BuildArgs) rootdir $(RepoRoot)</BuildArgs>
- <BuildArgs>$(BuildArgs) coreclrartifacts $(CoreCLRArtifactsPath)</BuildArgs>
- <BuildArgs>$(BuildArgs) nativelibsartifacts $(LibrariesArtifactsPath)/bin/native/$(NetCoreAppCurrent)-$(TargetOS)-$(LibrariesConfiguration)-$(TargetArchitecture)</BuildArgs>
- </PropertyGroup>
-
- <!--
- Run script that invokes Cmake to create VS files, and then calls msbuild to compile them. Use
- IgnoreStandardErrorWarningFormat because Arcade sets WarnAsError and there's an existing
- warning in the native build.
- -->
- <Message Text="$(MSBuildProjectDirectory)\build.cmd $(BuildArgs)" Importance="High"/>
- <Exec Command="$(MSBuildProjectDirectory)\build.cmd $(BuildArgs)" IgnoreStandardErrorWarningFormat="true"/>
- </Target>
-
- <Target Name="PrependWindowsHeaderIncludeToVersionHeaderFile"
- Condition="'$(TargetOS)' == 'Windows_NT'"
- AfterTargets="GenerateNativeVersionFile">
- <PropertyGroup>
- <IncludeStatementLine>#include <Windows.h></IncludeStatementLine>
- <NativeVersionFileContents>$([System.IO.File]::ReadAllText('$(NativeVersionFile)'))</NativeVersionFileContents>
- </PropertyGroup>
-
- <WriteLinesToFile
- File="$(NativeVersionFile)"
- Lines="$(IncludeStatementLine);$(NativeVersionFileContents)"
- Overwrite="true" />
- </Target>
-
-</Project>
--- /dev/null
+<Project>
+ <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
+
+ <!--
+ Add basic project properties for NuGet restore, needed to import the SourceLink MSBuild tool
+ package's targets into the build.
+ -->
+ <PropertyGroup>
+ <TargetFramework>$(NetCoreAppCurrent)</TargetFramework>
+ </PropertyGroup>
+
+ <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
+
+ <!-- Target that builds dotnet, hostfxr and hostpolicy with the same version as what NetCoreApp will be built for
+ since the build produced artifacts should always version the same (even if they may not get used).
+ -->
+ <Target Name="Build"
+ DependsOnTargets="
+ GetProductVersions;
+ GenerateNativeVersionFile;
+ BuildCoreHostUnix;
+ BuildCoreHostWindows" />
+
+ <Target Name="BuildCoreHostUnix"
+ Condition="'$(TargetOS)' != 'Windows_NT'"
+ DependsOnTargets="GetLatestCommitHash;GenerateNativeVersionFile">
+ <PropertyGroup>
+ <CMakeBuildDir>$(IntermediateOutputRootPath)corehost\cmake\</CMakeBuildDir>
+
+ <BuildArgs>$(Configuration) $(TargetArchitecture) -apphostver "$(AppHostVersion)" -hostver "$(HostVersion)" -fxrver "$(HostResolverVersion)" -policyver "$(HostPolicyVersion)" -commithash "$(LatestCommit)" -os $(TargetOS)</BuildArgs>
+ <BuildArgs>$(BuildArgs) -cmakeargs "-DVERSION_FILE_PATH=$(NativeVersionFile)"</BuildArgs>
+ <BuildArgs Condition="'$(PortableBuild)' != 'true'">$(BuildArgs) -portablebuild=false</BuildArgs>
+ <BuildArgs Condition="'$(CrossBuild)' == 'true'">$(BuildArgs) -cross</BuildArgs>
+ <BuildArgs Condition="'$(Compiler)' != ''">$(BuildArgs) $(Compiler)</BuildArgs>
+ <BuildArgs Condition="'$(CMakeArgs)' != ''">$(BuildArgs) $(CMakeArgs)</BuildArgs>
+ <BuildArgs>$(BuildArgs) -coreclrartifacts $(CoreCLRArtifactsPath)</BuildArgs>
+ <BuildArgs>$(BuildArgs) -nativelibsartifacts $(LibrariesArtifactsPath)/bin/native/$(NetCoreAppCurrent)-$(TargetOS)-$(LibrariesConfiguration)-$(TargetArchitecture)</BuildArgs>
+ </PropertyGroup>
+
+ <!--
+ Use IgnoreStandardErrorWarningFormat because Arcade sets WarnAsError and there's an existing
+ warning in the macOS build when dsymutil tries to strip symbols.
+ -->
+ <Message Text="$(MSBuildProjectDirectory)\build.sh $(BuildArgs)" Importance="High"/>
+ <Exec Command="$(MSBuildProjectDirectory)\build.sh $(BuildArgs)" IgnoreStandardErrorWarningFormat="true"/>
+ </Target>
+
+ <Target Name="BuildCoreHostWindows"
+ Condition="'$(TargetOS)' == 'Windows_NT'"
+ DependsOnTargets="GetLatestCommitHash">
+
+ <!-- Generate Version files -->
+ <ItemGroup>
+ <HostFiles Include="dotnet">
+ <FileDescription>.NET Host</FileDescription>
+ </HostFiles>
+ <HostFiles Include="hostfxr">
+ <FileDescription>.NET Host Resolver - $(HostResolverVersion)</FileDescription>
+ </HostFiles>
+ <HostFiles Include="hostpolicy">
+ <FileDescription>.NET Host Policy - $(HostPolicyVersion)</FileDescription>
+ </HostFiles>
+ <HostFiles Include="comhost">
+ <FileDescription>.NET COM Host</FileDescription>
+ </HostFiles>
+ <HostFiles Include="ijwhost">
+ <FileDescription>.NET IJW Host</FileDescription>
+ </HostFiles>
+ <HostFiles Include="nethost">
+ <FileDescription>.NET Component Host</FileDescription>
+ </HostFiles>
+ </ItemGroup>
+
+ <MSBuild
+ Projects="$(MSBuildProjectFullPath)"
+ Properties="
+ GenerateNativeVersionInfo=true;
+ AssemblyName=%(HostFiles.FileDescription);
+ NativeVersionFile=$(IntermediateOutputRootPath)hostResourceFiles\%(HostFiles.Identity)\version_info.h"
+ Targets="GenerateNativeVersionFile"
+ Condition="
+ '$(IncrementalNativeBuild)' != 'true' or
+ !Exists('$(IntermediateOutputRootPath)hostResourceFiles\%(HostFiles.Identity)\version_info.h')"/>
+
+ <PropertyGroup>
+ <BuildArgs>$(Configuration) $(TargetArchitecture) apphostver $(AppHostVersion) hostver $(HostVersion) fxrver $(HostResolverVersion) policyver $(HostPolicyVersion) commit $(LatestCommit) rid $(OutputRid)</BuildArgs>
+ <BuildArgs Condition="'$(PortableBuild)' == 'true'">$(BuildArgs) portable</BuildArgs>
+ <BuildArgs Condition="'$(IncrementalNativeBuild)' == 'true'">$(BuildArgs) incremental-native-build</BuildArgs>
+ <BuildArgs>$(BuildArgs) rootdir $(RepoRoot)</BuildArgs>
+ <BuildArgs>$(BuildArgs) coreclrartifacts $(CoreCLRArtifactsPath)</BuildArgs>
+ <BuildArgs>$(BuildArgs) nativelibsartifacts $(LibrariesArtifactsPath)/bin/native/$(NetCoreAppCurrent)-$(TargetOS)-$(LibrariesConfiguration)-$(TargetArchitecture)</BuildArgs>
+ </PropertyGroup>
+
+ <!--
+ Run script that invokes Cmake to create VS files, and then calls msbuild to compile them. Use
+ IgnoreStandardErrorWarningFormat because Arcade sets WarnAsError and there's an existing
+ warning in the native build.
+ -->
+ <Message Text="$(MSBuildProjectDirectory)\build.cmd $(BuildArgs)" Importance="High"/>
+ <Exec Command="$(MSBuildProjectDirectory)\build.cmd $(BuildArgs)" IgnoreStandardErrorWarningFormat="true"/>
+ </Target>
+
+ <Target Name="PrependWindowsHeaderIncludeToVersionHeaderFile"
+ Condition="'$(TargetOS)' == 'Windows_NT'"
+ AfterTargets="GenerateNativeVersionFile">
+ <PropertyGroup>
+ <IncludeStatementLine>#include <Windows.h></IncludeStatementLine>
+ <NativeVersionFileContents>$([System.IO.File]::ReadAllText('$(NativeVersionFile)'))</NativeVersionFileContents>
+ </PropertyGroup>
+
+ <WriteLinesToFile
+ File="$(NativeVersionFile)"
+ Lines="$(IncludeStatementLine);$(NativeVersionFileContents)"
+ Overwrite="true" />
+ </Target>
+
+</Project>
<PropertyGroup>
<TraversalGlobalProperties>BuildAllProjects=true</TraversalGlobalProperties>
<AdditionalBuildTargetFrameworks Condition="'$(DotNetBuildFromSource)' == 'true'">$(AdditionalBuildTargetFrameworks);package-$(Configuration)</AdditionalBuildTargetFrameworks>
+ <BuildAllOOBPackages Condition="'$(BuildAllOOBPackages)' == ''">true</BuildAllOOBPackages>
</PropertyGroup>
<PropertyGroup>
<ItemGroup>
<ProjectReference Include="$(PkgDir)*\*.proj" Exclude="$(PkgDir)test\*" />
- <ProjectReference Include="$(MSBuildThisFileDirectory)*\pkg\**\*.pkgproj" Condition="'$(BuildAllConfigurations)' == 'true' or '$(DotNetBuildFromSource)' == 'true'" />
+ <ProjectReference Include="$(MSBuildThisFileDirectory)*\pkg\**\*.pkgproj" Condition="('$(BuildAllConfigurations)' == 'true' or '$(DotNetBuildFromSource)' == 'true') And '$(BuildAllOOBPackages)' == 'true'" />
+ <!-- If setting BuildAllOOBPackages to false, add bellow the individual OOB packages you want to continue to build -->
</ItemGroup>
<!-- Need the PackageIndexFile file property from baseline.props -->
</PropertyGroup>
<ItemGroup>
<Compile Include="ICustomMarshaler.cs" />
- <Compile Include="..\..\..\common\XunitBase.cs" />
+ <Compile Include="..\..\..\Common\XunitBase.cs" />
</ItemGroup>
</Project>