summaryrefslogtreecommitdiff
path: root/gui/win32/scripts/build.ps1
diff options
context:
space:
mode:
Diffstat (limited to 'gui/win32/scripts/build.ps1')
-rw-r--r--gui/win32/scripts/build.ps187
1 files changed, 87 insertions, 0 deletions
diff --git a/gui/win32/scripts/build.ps1 b/gui/win32/scripts/build.ps1
new file mode 100644
index 0000000..a5c01e5
--- /dev/null
+++ b/gui/win32/scripts/build.ps1
@@ -0,0 +1,87 @@
+$originalLocation = Get-Location
+$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
+Set-Location $scriptPath
+
+. $scriptPath\_entry.ps1
+
+$generator = ""
+$arch = "x64"
+
+$vsPaths = @(
+ "C:\Program Files\Microsoft Visual Studio\2022\Community",
+ "C:\Program Files\Microsoft Visual Studio\2022\Professional",
+ "C:\Program Files\Microsoft Visual Studio\2022\Enterprise",
+ "C:\Program Files\Microsoft Visual Studio\2022\BuildTools",
+ "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community",
+ "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional",
+ "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise",
+ "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools",
+ "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community",
+ "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional",
+ "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise",
+ "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools"
+)
+
+foreach ($path in $vsPaths) {
+ if (Test-Path $path) {
+ if ($path -match "2022") {
+ $generator = "Visual Studio 17 2022"
+ } elseif ($path -match "2019") {
+ $generator = "Visual Studio 16 2019"
+ } elseif ($path -match "2017") {
+ $generator = "Visual Studio 15 2017"
+ }
+ break
+ }
+}
+
+if ([string]::IsNullOrEmpty($generator)) {
+ if (Get-Command ninja -ErrorAction SilentlyContinue) {
+ $generator = "Ninja"
+ }
+ elseif (Get-Command nmake -ErrorAction SilentlyContinue) {
+ $generator = "NMake Makefiles"
+ }
+ elseif (Get-Command mingw32-make -ErrorAction SilentlyContinue) {
+ $generator = "MinGW Makefiles"
+ }
+ else {
+ Write-Host "No suitable generator found. Please install Visual Studio or another build system." -ForegroundColor Red
+ exit 1
+ }
+}
+
+if (!(Test-Path -Path "..\build")) {
+ New-Item -ItemType Directory -Path "..\build" | Out-Null
+}
+Set-Location "..\build"
+
+if ($generator -match "Visual Studio") {
+ if ($generator -match "Visual Studio 15 2017") {
+ cmake .. -G "$generator" -A $arch
+ } else {
+ cmake .. -G "$generator" -A $arch
+ }
+} else {
+ cmake .. -G "$generator"
+}
+
+if ($LASTEXITCODE -ne 0) {
+ Write-Host "CMake configuration failed!" -ForegroundColor Red
+ Set-Location $originalLocation
+ exit 1
+}
+
+if ($generator -match "Visual Studio") {
+ cmake --build . --config Release
+} else {
+ cmake --build .
+}
+
+if ($LASTEXITCODE -ne 0) {
+ Write-Host "Build failed!" -ForegroundColor Red
+ Set-Location $originalLocation
+ exit 1
+}
+
+Set-Location $originalLocation