# Copyright 2019-2022, Mesa contributors # Copyright 2022, Collabora, Ltd. # SPDX-License-Identifier: MIT # Based on https://gitlab.freedesktop.org/mesa/mesa/-/blob/8396df5ad90aeb6ab2267811aba2187954562f81/.gitlab-ci/windows/mesa_build.ps1 [CmdletBinding()] param ( # Should we install the project? [Parameter()] [switch] $Install = $false, # Should we package the project? [Parameter()] [switch] $Package = $false, # Should we run the test suite? [Parameter()] [switch] $RunTests = $false ) $ErrorActionPreference = 'Stop' $env:PYTHONUTF8 = 1 Get-Date Write-Host "Compiling Monado" $sourcedir = (Resolve-Path "$PSScriptRoot/../..") $builddir = Join-Path $sourcedir "build" $installdir = Join-Path $sourcedir "install" $vcpkgdir = "c:\vcpkg" $toolchainfile = Join-Path $vcpkgdir "scripts/buildsystems/vcpkg.cmake" Remove-Item -Recurse -Force $installdir -ErrorAction SilentlyContinue Write-Output "builddir:$builddir" Write-Output "installdir:$installdir" Write-Output "sourcedir:$sourcedir" Write-Output "toolchainfile:$toolchainfile" # $installPath = & "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -version 17 -property installationpath # Write-Information "vswhere.exe installPath: $installPath" # if (!$installPath) { # throw "Could not find VS2022 using vswhere!" # } $installPath = "C:\BuildTools" Write-Output "installPath: $installPath" # Note that we can't have $ErrorActionPreference as "Stop" here: # it "errors" (not finding some shared tool because of our mini build tools install) # but the error doesn't matter for our use case. Write-Output "There may be a harmless error about 'Team Explorer' shown next, which may be ignored." $ErrorActionPreference = 'Continue' Import-Module (Join-Path $installPath "Common7\Tools\Microsoft.VisualStudio.DevShell.dll") Enter-VsDevShell -VsInstallPath $installPath -SkipAutomaticLocation -DevCmdArguments '-arch=x64 -no_logo -host_arch=amd64' $ErrorActionPreference = 'Stop' Push-Location $sourcedir $cmakeArgs = @( "-S" "." "-B" "$builddir" "-GNinja" "-DCMAKE_BUILD_TYPE=RelWithDebInfo" "-DCMAKE_TOOLCHAIN_FILE=$toolchainfile" "-DCMAKE_INSTALL_PREFIX=$installdir" "-DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON" ) cmake @cmakeArgs if (!$?) { throw "cmake generate failed!" } Write-Information "Building" cmake --build $builddir if (!$?) { throw "cmake build failed!" } if ($RunTests) { Write-Information "Running tests" cmake --build $builddir --target test } if ($Install) { Write-Information "Installing" cmake --build $builddir --target install } if ($Package) { Write-Information "Packaging" cmake --build $builddir --target package }