CI: Windows: Build LLVM and llvmpipe

We will eventually need to build our own LLVM on Windows in order to
build libclc and other bits which are required for the d3d12 build, as
well as to be able to test SPIR-V/OpenCL on llvmpipe.

Start doing this now, building into the base container, and exercise
this by building llvmpipe under Windows.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4946>
This commit is contained in:
Daniel Stone
2020-05-05 15:49:22 +01:00
committed by Marge Bot
parent 69ffbcb162
commit 0f46a3191f
3 changed files with 33 additions and 5 deletions

View File

@@ -211,7 +211,7 @@ arm_test:
.windows-docker-vs2019: .windows-docker-vs2019:
variables: variables:
WINDOWS_TAG: "2020-03-24" WINDOWS_TAG: "2020-05-05-llvm"
WINDOWS_IMAGE: "$CI_REGISTRY_IMAGE/windows/x64_build:$WINDOWS_TAG" WINDOWS_IMAGE: "$CI_REGISTRY_IMAGE/windows/x64_build:$WINDOWS_TAG"
WINDOWS_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/windows/x64_build:$WINDOWS_TAG" WINDOWS_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/windows/x64_build:$WINDOWS_TAG"
@@ -222,6 +222,7 @@ windows_build_vs2019:
stage: container stage: container
variables: variables:
GIT_STRATEGY: fetch # we do actually need the full repository though GIT_STRATEGY: fetch # we do actually need the full repository though
timeout: 4h # LLVM takes ages
tags: tags:
- windows - windows
- shell - shell

View File

@@ -6,7 +6,7 @@ Get-Date
Write-Host "Compiling Mesa" Write-Host "Compiling Mesa"
$builddir = New-Item -ItemType Directory -Name "build" $builddir = New-Item -ItemType Directory -Name "build"
Push-Location $builddir.FullName Push-Location $builddir.FullName
cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=amd64 && meson -Dgallium-drivers=swrast -Dbuild-tests=true .. && ninja test" cmd.exe /C 'C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=amd64 && meson --default-library=static --buildtype=release -Db_vscrt=mt --cmake-prefix-path="C:\llvm-10" --pkg-config-path="C:\llvm-10\lib\pkgconfig;C:\llvm-10\share\pkgconfig;C:\spirv-tools\lib\pkgconfig" -Dllvm=true -Dshared-llvm=false -Dgallium-drivers=swrast -Dbuild-tests=true && ninja test'
$buildstatus = $? $buildstatus = $?
Pop-Location Pop-Location
Remove-Item -Recurse -Path $builddir Remove-Item -Recurse -Path $builddir

View File

@@ -10,7 +10,7 @@ Write-Host "Installing Chocolatey packages"
For ($i = 0; $i -lt 5; $i++) { For ($i = 0; $i -lt 5; $i++) {
choco install -y python3 --params="/InstallDir:C:\python3" choco install -y python3 --params="/InstallDir:C:\python3"
$python_install = $? $python_install = $?
choco install --allow-empty-checksums -y cmake git git-lfs ninja pkgconfiglite winflexbison choco install --allow-empty-checksums -y cmake git git-lfs ninja pkgconfiglite winflexbison --installargs "ADD_CMAKE_TO_PATH=System"
$other_install = $? $other_install = $?
$choco_installed = $other_install -and $python_install $choco_installed = $other_install -and $python_install
if ($choco_installed) { if ($choco_installed) {
@@ -25,8 +25,9 @@ if (!$choco_installed) {
# Add Chocolatey's native install path # Add Chocolatey's native install path
Update-SessionEnvironment Update-SessionEnvironment
# Python adds itself to the system environment path, which doesn't get refreshed until we start a new shell # Python and CMake add themselves to the system environment path, which doesn't get refreshed
$env:PATH = "C:\python3;C:\python3\scripts;$env:PATH" # until we start a new shell
$env:PATH = "C:\python3;C:\python3\scripts;C:\Program Files\CMake\bin;$env:PATH"
Start-Process -NoNewWindow -Wait git -ArgumentList 'config --global core.autocrlf false' Start-Process -NoNewWindow -Wait git -ArgumentList 'config --global core.autocrlf false'
@@ -52,7 +53,33 @@ Invoke-WebRequest -Uri $msvc_2019_url -OutFile C:\vs_buildtools.exe
Get-Date Get-Date
Write-Host "Installing Visual Studio 2019" Write-Host "Installing Visual Studio 2019"
Start-Process -NoNewWindow -Wait C:\vs_buildtools.exe -ArgumentList '--wait --quiet --norestart --nocache --installPath C:\BuildTools --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Component.VC.ATL --add Microsoft.VisualStudio.Component.VC.ATLMFC --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Graphics.Tools --add Microsoft.VisualStudio.Component.Windows10SDK.18362 --includeRecommended' Start-Process -NoNewWindow -Wait C:\vs_buildtools.exe -ArgumentList '--wait --quiet --norestart --nocache --installPath C:\BuildTools --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Component.VC.ATL --add Microsoft.VisualStudio.Component.VC.ATLMFC --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Graphics.Tools --add Microsoft.VisualStudio.Component.Windows10SDK.18362 --includeRecommended'
if (!$?) {
Write-Host "Failed to install Visual Studio tools"
Exit 1
}
Remove-Item C:\vs_buildtools.exe -Force Remove-Item C:\vs_buildtools.exe -Force
Get-Date
Write-Host "Cloning LLVM 10.x"
git clone -b release/10.x --depth=1 https://github.com/llvm/llvm-project llvm-project
if (!$?) {
Write-Host "Failed to clone LLVM repository"
Exit 1
}
Get-Date
# slightly convoluted syntax but avoids the CWD being under the PS filesystem meta-path
$llvm_build = New-Item -ItemType Directory -Path ".\llvm-project" -Name "build"
Push-Location -Path $llvm_build.FullName
Write-Host "Compiling LLVM and Clang"
cmd.exe /C 'C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=amd64 && cmake ../llvm -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_CRT_RELEASE=MT -DCMAKE_INSTALL_PREFIX="C:\llvm-10" -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_OPTIMIZED_TABLEGEN=TRUE -DLLVM_ENABLE_ASSERTIONS=TRUE -DLLVM_INCLUDE_UTILS=OFF -DLLVM_INCLUDE_RUNTIMES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_GO_TESTS=OFF -DLLVM_INCLUDE_BENCHMARKS=OFF -DLLVM_BUILD_LLVM_C_DYLIB=OFF -DLLVM_ENABLE_DIA_SDK=OFF -DCLANG_BUILD_TOOLS=ON && ninja -j4 install'
$buildstatus = $?
Pop-Location
Remove-Item -Recurse -Path $llvm_build
if (!$buildstatus) {
Write-Host "Failed to compile LLVM"
Exit 1
}
Get-Date Get-Date
Write-Host "Complete" Write-Host "Complete"