aboutsummaryrefslogtreecommitdiff
path: root/scripts/bootstrap.ps1
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2018-05-19 17:54:12 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2018-05-19 19:23:32 -0700
commit555fa8d7cc25f409fea9626383dfc38c5d5db6b4 (patch)
tree2ab55a2880cbc035f1d5f0499abbff4e10f71f1f /scripts/bootstrap.ps1
parent9e4196d49524d41959e84f27b4080a0ec2cb37e6 (diff)
downloadvcpkg-555fa8d7cc25f409fea9626383dfc38c5d5db6b4.tar.gz
vcpkg-555fa8d7cc25f409fea9626383dfc38c5d5db6b4.zip
Merge getVisualStudioInstances into bootstrap.ps1
Diffstat (limited to 'scripts/bootstrap.ps1')
-rw-r--r--scripts/bootstrap.ps172
1 files changed, 71 insertions, 1 deletions
diff --git a/scripts/bootstrap.ps1 b/scripts/bootstrap.ps1
index 970fa0488..a2d9103dd 100644
--- a/scripts/bootstrap.ps1
+++ b/scripts/bootstrap.ps1
@@ -26,9 +26,79 @@ if (!(Test-Path $vcpkgSourcesPath))
return
}
+function getVisualStudioInstances()
+{
+ $programFiles = getProgramFiles32bit
+ $results = New-Object System.Collections.ArrayList
+ $vswhereExe = "$programFiles\Microsoft Visual Studio\Installer\vswhere.exe"
+ if (Test-Path $vswhereExe)
+ {
+ $output = & $vswhereExe -prerelease -legacy -products * -format xml
+ [xml]$asXml = $output
+
+ foreach ($instance in $asXml.instances.instance)
+ {
+ $installationPath = $instance.InstallationPath -replace "\\$" # Remove potential trailing backslash
+ $installationVersion = $instance.InstallationVersion
+
+ $isPrerelease = -7
+ if (vcpkgHasProperty -object $instance -propertyName "isPrerelease")
+ {
+ $isPrerelease = $instance.isPrerelease
+ }
+
+ if ($isPrerelease -eq 0)
+ {
+ $releaseType = "PreferenceWeight3::StableRelease"
+ }
+ elseif ($isPrerelease -eq 1)
+ {
+ $releaseType = "PreferenceWeight2::PreRelease"
+ }
+ else
+ {
+ $releaseType = "PreferenceWeight1::Legacy"
+ }
+
+ # Placed like that for easy sorting according to preference
+ $results.Add("<sol>::${releaseType}::${installationVersion}::${installationPath}::<eol>") > $null
+ }
+ }
+ else
+ {
+ Write-Verbose "Could not locate vswhere at $vswhereExe"
+ }
+
+ if ("$env:vs140comntools" -ne "")
+ {
+ $installationPath = Split-Path -Parent $(Split-Path -Parent "$env:vs140comntools")
+ $clExe = "$installationPath\VC\bin\cl.exe"
+ $vcvarsallbat = "$installationPath\VC\vcvarsall.bat"
+
+ if ((Test-Path $clExe) -And (Test-Path $vcvarsallbat))
+ {
+ $results.Add("<sol>::PreferenceWeight1::Legacy::14.0::$installationPath::<eol>") > $null
+ }
+ }
+
+ $installationPath = "$programFiles\Microsoft Visual Studio 14.0"
+ $clExe = "$installationPath\VC\bin\cl.exe"
+ $vcvarsallbat = "$installationPath\VC\vcvarsall.bat"
+
+ if ((Test-Path $clExe) -And (Test-Path $vcvarsallbat))
+ {
+ $results.Add("<sol>::PreferenceWeight1::Legacy::14.0::$installationPath::<eol>") > $null
+ }
+
+ $results.Sort()
+ $results.Reverse()
+
+ return $results
+}
+
function findAnyMSBuildWithCppPlatformToolset([string]$withVSPath)
{
- $VisualStudioInstances = & $scriptsDir\getVisualStudioInstances.ps1
+ $VisualStudioInstances = getVisualStudioInstances
if ($VisualStudioInstances -eq $null)
{
throw "Could not find Visual Studio. VS2015 or VS2017 (with C++) needs to be installed."