vcpkg/setup_vcpkg.ps1 (98 lines of code) (raw):

# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. param ([string] $vcpkgRoot, [string] $repoRoot, [string] $triplet) if ([string]::IsNullOrEmpty($vcpkgRoot)) { Write-Host "Usage: setup_vcpkg.ps1 <vcpkgRoot> <repoRoot> [triplet]" exit 1 } if ([string]::IsNullOrEmpty($triplet)) { $triplet = "x64-windows-secure" } Write-Host "vcpkgRoot: $vcpkgRoot" Write-Host "repoRoot: $repoRoot" Write-Host "triplet: $triplet" $repoVcpkgRoot = "$repoRoot/vcpkg" $portRoot = "$repoVcpkgRoot/ports" $tripletsRoot = "$repoVcpkgRoot/triplets" Write-Host "portRoot: $portRoot" Write-Host "tripletsRoot: $tripletsRoot" if ($null -ne $env:VCPKG_ROOT) { $vcpkgRoot = $env:VCPKG_ROOT } else { if (-not (Test-Path "$vcpkgRoot\.git")) { git clone https://github.com/microsoft/vcpkg $vcpkgRoot | Out-Host } Push-Location $vcpkgRoot $mostRecentVcpkgTag = git describe --tags --abbrev=0 git checkout $mostRecentVcpkgTag | Out-Host Pop-Location } function SetupTerrapin() { Write-Host "Setting up Terrapin" if ($null -eq (Get-Command "nuget.exe" -ErrorAction SilentlyContinue)) { Write-Host "Unable to find nuget.exe. To download: https://learn.microsoft.com/en-us/nuget/reference/nuget-exe-cli-reference?tabs=windows#installing-nugetexe" exit 1 } $nugetPackagesDirectory = Join-Path $env:temp "adu.vcpkg\packages" $nugetConfig = Join-Path $repoRoot "nuget.config" $packagesConfig = Join-Path $repoVcpkgRoot "packages.config" nuget restore $packagesConfig -ConfigFile $nugetConfig -PackagesDirectory $nugetPackagesDirectory | Out-Host if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } $win64Directory = (Get-ChildItem $nugetPackagesDirectory\TerrapinRetrievalTool* -Include win-x64 -Attributes Directory -Recurse) if ($null -eq $win64Directory) { Write-Host "Failed to find TerrapinRetrievalTool win-x64 directory" exit 1 } $terrapinTool = "$win64Directory\TerrapinRetrievalTool.exe" Write-Host "terrapinTool $terrapinTool" $env:X_VCPKG_ASSET_SOURCES = "x-script,`"$terrapinTool`" -b https://vcpkg.storage.devpackages.microsoft.io/artifacts/ -k https://terraprodvcpkgstoracc.blob.core.windows.net/artifacts/ -a true -p {url} -s {sha512} -d {dst};x-block-origin" Write-Host "Set X_VCPKG_ASSET_SOURCES env variable to: $env:X_VCPKG_ASSET_SOURCES" } function BootstrapVcpkg() { & $vcpkgRoot/bootstrap-vcpkg.bat | Out-Host if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } } function InstallToVcpkg([string] $packageName) { Write-Host "Calling: & $vcpkgRoot/vcpkg.exe install ${packageName}:$triplet --overlay-ports=$portRoot --overlay-triplets=$tripletsRoot" & $vcpkgRoot/vcpkg.exe install ${packageName}:$triplet --overlay-ports=$portRoot --overlay-triplets=$tripletsRoot | Out-Host if ($LASTEXITCODE -ne 0) { Write-Host "Failed to setup: $packageName" exit $LASTEXITCODE } Write-Host "Successfully setup: $packageName to $vcpkgRoot" } function IntegrateInstall() { & $vcpkgRoot/vcpkg.exe integrate install | Out-Host if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } } function ListPackages() { & $vcpkgRoot/vcpkg.exe list | Out-Host if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } } #SetupTerrapin if ($null -eq $env:VCPKG_ROOT) { BootstrapVcpkg } else { Write-OutpuHost "Skipping VCPKG bootstrap as VCPKG_ROOT is already set." } InstallToVcpkg "zlib" InstallToVcpkg "zstd" InstallToVcpkg "gtest" InstallToVcpkg "bzip2" InstallToVcpkg "e2fsprogs" InstallToVcpkg "jsoncpp" InstallToVcpkg "libconfig" InstallToVcpkg "fmt" InstallToVcpkg "bsdiff" IntegrateInstall ListPackages