summaryrefslogtreecommitdiffstats
path: root/tools/win32/load-vsenv.ps1
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 12:34:54 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 12:34:54 +0000
commit0915b3ef56dfac3113cce55a59a5765dc94976be (patch)
treea8fea11d50b4f083e1bf0f90025ece7f0824784a /tools/win32/load-vsenv.ps1
parentInitial commit. (diff)
downloadicinga2-0915b3ef56dfac3113cce55a59a5765dc94976be.tar.xz
icinga2-0915b3ef56dfac3113cce55a59a5765dc94976be.zip
Adding upstream version 2.13.6.upstream/2.13.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--tools/win32/load-vsenv.ps159
1 files changed, 59 insertions, 0 deletions
diff --git a/tools/win32/load-vsenv.ps1 b/tools/win32/load-vsenv.ps1
new file mode 100644
index 0000000..c5323dc
--- /dev/null
+++ b/tools/win32/load-vsenv.ps1
@@ -0,0 +1,59 @@
+# why that env handling, see
+# https://help.appveyor.com/discussions/questions/18777-how-to-use-vcvars64bat-from-powershell#comment_44999171
+
+Set-PsDebug -Trace 1
+
+$SOURCE = Get-Location
+
+if (Test-Path env:ICINGA2_BUILDPATH) {
+ $BUILD = $env:ICINGA2_BUILDPATH
+} else {
+ $BUILD = "${SOURCE}\Build"
+}
+
+if (-not (Test-Path $BUILD)) {
+ mkdir $BUILD | Out-Null
+}
+
+if (Test-Path env:VS_INSTALL_PATH) {
+ $VSBASE = $env:VS_INSTALL_PATH
+} else {
+ $VSBASE = "C:\Program Files (x86)\Microsoft Visual Studio\2019"
+}
+
+if (Test-Path env:BITS) {
+ $bits = $env:BITS
+} else {
+ $bits = 64
+}
+
+# Execute vcvars in cmd and store env
+$vcvars_locations = @(
+ "${VSBASE}\BuildTools\VC\Auxiliary\Build\vcvars${bits}.bat"
+ "${VSBASE}\Community\VC\Auxiliary\Build\vcvars${bits}.bat"
+ "${VSBASE}\Enterprise\VC\Auxiliary\Build\vcvars${bits}.bat"
+)
+
+$vcvars = $null
+foreach ($file in $vcvars_locations) {
+ if (Test-Path $file) {
+ $vcvars = $file
+ break
+ }
+}
+
+if ($vcvars -eq $null) {
+ throw "Could not get Build environment script at locations: ${vcvars_locations}"
+}
+
+cmd.exe /c "call `"${vcvars}`" && set > `"${BUILD}\vcvars.txt`""
+if ($LastExitCode -ne 0) {
+ throw "Could not load Build environment from: ${vcvars}"
+}
+
+# Load environment for PowerShell
+Get-Content "${BUILD}\vcvars.txt" | Foreach-Object {
+ if ($_ -match "^(VSCMD.*?)=(.*)$") {
+ Set-Content ("env:" + $matches[1]) $matches[2]
+ }
+}