Use explicit arithmetic checks in the amd64 watchOS simulator. (#20647)
[mono-project.git] / netcore / build.ps1
blob27a096852e90439bb0e6debee900f8db0168d179
1 [CmdletBinding(PositionalBinding=$false)]
2 Param(
3 [string][Alias('c')]$configuration = "Debug",
4 [switch] $pack,
5 [switch][Alias('t')]$test,
6 [switch] $rebuild,
7 [switch] $clean,
8 [switch] $llvm,
9 [switch] $skipnative,
10 [switch] $skipmscorlib,
11 [switch] $ci,
12 [switch][Alias('h')]$help,
13 [Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
16 . ../eng/common/pipeline-logging-functions.ps1
18 function Print-Usage() {
19 Write-Host "Common settings:"
20 Write-Host " -configuration <value> Build configuration: 'Debug' or 'Release' (short: -c)"
21 Write-Host " -help Print help and exit (short: -h)"
22 Write-Host ""
24 Write-Host "Actions:"
25 Write-Host " -pack Package build outputs into NuGet packages"
26 Write-Host " -test Run all unit tests in the solution (short: -t)"
27 Write-Host " -rebuild Clean only runtime build"
28 Write-Host " -clean Clean all and exit"
29 Write-Host " -llvm Enable LLVM support"
30 Write-Host " -skipnative Do not build runtime"
31 Write-Host " -skipmscorlib Do not build System.Private.CoreLib"
32 Write-Host " -ci Enable Azure DevOps telemetry decoration"
34 Write-Host "Command line arguments not listed above are passed thru to msbuild."
35 Write-Host "The above arguments can be shortened as much as to be unambiguous (e.g. -co for configuration, -t for test, etc.)."
38 try {
39 if ($help) {
40 Print-Usage
41 exit 0
44 $temp_file = [IO.Path]::GetTempFileName()
45 cmd.exe /c " ""$PSScriptRoot\..\msvc\setup-vs-msbuild-env.bat"" && set " > $temp_file
46 Get-Content $temp_file | Foreach-Object {
47 if ($_ -match "^(.*?)=(.*)$") {
48 Set-Content "env:\$($matches[1])" $matches[2]
51 Remove-Item $temp_file
53 $enable_llvm="false"
54 if ($llvm) {
55 $enable_llvm="true"
58 # clean all
59 if ($clean) {
60 MSBuild "$PSScriptRoot\build.targets" `
61 "/t:Clean" `
62 "/p:Configuration=$configuration"
64 if ($LastExitCode -ne 0) {
65 Write-PipelineTelemetryError -Category "runtime" -Message "Error cleaning"
66 exit 1
69 exit 0
72 # rebuild mono runtime
73 if ($rebuild) {
74 MSBuild "$PSScriptRoot\build.targets" `
75 "/t:build-runtime" `
76 "/p:Configuration=$configuration" `
77 "/p:RuntimeBuildTarget=clean"
79 if ($LastExitCode -ne 0) {
80 Write-PipelineTelemetryError -Category "runtime" -Message "Error cleaning unmanaged runtime"
81 exit 1
85 # build mono runtime
86 if (!$skipnative) {
87 MSBuild "$PSScriptRoot\build.targets" `
88 "/t:build-runtime" `
89 "/p:Configuration=$configuration" `
90 "/p:MONO_ENABLE_LLVM=$enable_llvm"
92 if ($LastExitCode -ne 0) {
93 Write-PipelineTelemetryError -Category "runtime" -Message "Error building unmanaged runtime"
94 exit 1
98 # build System.Private.CoreLib
99 if (!$skipmscorlib) {
100 MSBuild "$PSScriptRoot\build.targets" `
101 "/t:bcl" `
102 "/p:Configuration=$configuration"
104 if ($LastExitCode -ne 0) {
105 Write-PipelineTelemetryError -Category "bcl" -Message "Error building System.Private.CoreLib"
106 exit 1
110 if ($pack) {
111 Write-PipelineTelemetryError -Category "nupkg" -Message "Error packing NuGet package (Not Implemented)"
112 exit 1
115 # run all xunit tests
116 if ($test) {
117 MSBuild "$PSScriptRoot\build.targets" `
118 "/t:update-tests-corefx" `
119 "/p:Configuration=$configuration"
121 if ($LastExitCode -ne 0) {
122 Write-PipelineTelemetryError -Category "tests-download" -Message "Error downloading tests"
123 exit 1
126 $timeout=-1
127 if ($ci) {
128 $timeout=600
131 MSBuild "$PSScriptRoot\build.targets" `
132 "/t:run-tests-corefx" `
133 "/p:Configuration=$configuration" `
134 "/p:CoreFxTestTimeout=$timeout"
136 if ($LastExitCode -ne 0) {
137 Write-PipelineTelemetryError -Category "tests" -Message "Error running tests"
138 exit 1
142 catch {
143 Write-Host $_.ScriptStackTrace
144 Write-PipelineTelemetryError -Category "build" -Message $_
145 exit 1
148 exit 0