2019-11-27 16:41:51 +01:00
|
|
|
# Copyright 2019 Google LLC
|
|
|
|
#
|
|
|
|
# Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# https://llvm.org/LICENSE.txt
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
|
2020-01-31 12:56:34 +01:00
|
|
|
param (
|
|
|
|
[Parameter(Mandatory=$false)][string]$projects="default"
|
|
|
|
)
|
|
|
|
|
2019-11-27 16:45:11 +01:00
|
|
|
. ${PSScriptRoot}\common.ps1
|
2019-11-27 16:41:51 +01:00
|
|
|
|
2020-01-31 12:56:34 +01:00
|
|
|
# set LLVM_ENABLE_PROJECTS to default value
|
|
|
|
# if -DetectProjects is set the projects are detected based on the files
|
|
|
|
# that were modified in the working copy
|
|
|
|
if ($projects -eq "default") {
|
|
|
|
$LLVM_ENABLE_PROJECTS="clang;clang-tools-extra;libcxx;libcxxabi;lld;libunwind;mlir"
|
|
|
|
} elseif ($projects -eq "detect") {
|
|
|
|
$LLVM_ENABLE_PROJECTS = (git diff | python ${PSScriptRoot}\choose_projects.py . ) | Out-String
|
2020-01-31 18:29:47 +01:00
|
|
|
$LLVM_ENABLE_PROJECTS = $LLVM_ENABLE_PROJECTS.replace("`n","").replace("`r","")
|
|
|
|
if ($LLVM_ENABLE_PROJECTS -eq "") {
|
|
|
|
Write-Error "Error detecting the affected projects."
|
|
|
|
exit 1
|
|
|
|
}
|
2020-01-31 12:56:34 +01:00
|
|
|
} else {
|
|
|
|
$LLVM_ENABLE_PROJECTS=$projects
|
|
|
|
}
|
|
|
|
|
|
|
|
Write-Output "Setting LLVM_ENABLE_PROJECTS=${LLVM_ENABLE_PROJECTS}"
|
|
|
|
|
2019-12-16 11:09:47 +01:00
|
|
|
# Delete and re-create build folder
|
2019-11-29 13:36:29 +01:00
|
|
|
Remove-Item build -Recurse -ErrorAction Ignore
|
2019-11-27 16:41:51 +01:00
|
|
|
New-Item -ItemType Directory -Force -Path build | Out-Null
|
|
|
|
Push-Location build
|
|
|
|
|
2019-12-16 11:09:47 +01:00
|
|
|
# load Vistual Studio environment variables
|
2019-11-27 16:41:51 +01:00
|
|
|
Invoke-CmdScript "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64
|
|
|
|
|
2019-12-16 11:09:47 +01:00
|
|
|
# call CMake
|
2020-01-31 18:29:47 +01:00
|
|
|
$ErrorActionPreference="Continue"
|
2019-12-13 18:59:35 +01:00
|
|
|
Invoke-Call -ScriptBlock {
|
|
|
|
cmake ..\llvm -G Ninja -DCMAKE_BUILD_TYPE=Release `
|
2020-01-31 12:56:34 +01:00
|
|
|
-D LLVM_ENABLE_PROJECTS="${LLVM_ENABLE_PROJECTS}" `
|
2019-12-13 18:59:35 +01:00
|
|
|
-D LLVM_ENABLE_ASSERTIONS=ON `
|
|
|
|
-DLLVM_LIT_ARGS="-v --xunit-xml-output test-results.xml" `
|
2019-12-16 10:46:47 +01:00
|
|
|
-D LLVM_ENABLE_DIA_SDK=OFF
|
2019-12-16 11:09:47 +01:00
|
|
|
}
|
2019-11-27 16:41:51 +01:00
|
|
|
|
|
|
|
# LLVM_ENABLE_DIA_SDK=OFF is a workaround to make the tests pass.
|
|
|
|
# see https://bugs.llvm.org/show_bug.cgi?id=44151
|
|
|
|
|
|
|
|
Pop-Location
|