diff --git a/build-vulcast-vertical.ps1 b/build-vulcast-vertical.ps1 index 917fe2c..defaf66 100644 --- a/build-vulcast-vertical.ps1 +++ b/build-vulcast-vertical.ps1 @@ -1,15 +1,10 @@ #Requires -Version 7.2 -<# -.SYNOPSIS - Builds the Vulcast Vertical OBS plugin DLL. - Builds OBS manually, then the plugin links against it. -#> $ErrorActionPreference = 'Stop' $ProgressPreference = 'SilentlyContinue' $OBS_VERSION = '31.1.1' $DEPS_DATE = '2025-07-11' -$WORK = "$env:TEMP\vulcast-build" +$WORK = "$env:LOCALAPPDATA\vulcast-build" $SRC = "$WORK\vulcast-vertical" Write-Host "=== Vulcast Vertical Build Script ===" -ForegroundColor Cyan @@ -79,6 +74,8 @@ if (-not (Test-Path "$SRC\CMakeLists.txt")) { Write-Host " Downloading..." -ForegroundColor Yellow Invoke-WebRequest -Uri 'https://vulcast.xyz/dl/vulcast-vertical-source.zip' -OutFile "$WORK\source.zip" Expand-Archive -Path "$WORK\source.zip" -DestinationPath $WORK -Force +} else { + Write-Host " Source (cached)" -ForegroundColor DarkGray } # ---------- Step 2: OBS source ---------- @@ -88,22 +85,26 @@ if (-not (Test-Path "$OBS\CMakeLists.txt")) { Invoke-WebRequest -Uri "https://github.com/obsproject/obs-studio/archive/refs/tags/$OBS_VERSION.zip" -OutFile "$WORK\obs.zip" Expand-Archive -Path "$WORK\obs.zip" -DestinationPath $WORK -Force if (Test-Path "$WORK\obs-studio-$OBS_VERSION") { Rename-Item "$WORK\obs-studio-$OBS_VERSION" $OBS } +} else { + Write-Host " OBS source (cached)" -ForegroundColor DarkGray } # ---------- Step 3: Dependencies ---------- Write-Host "[3/5] OBS pre-built dependencies" -ForegroundColor Cyan New-Item -ItemType Directory -Path $DEPS -Force | Out-Null -if (-not (Test-Path "$DEPS\include\obs")) { - $depsUrl = "https://github.com/obsproject/obs-deps/releases/download/$DEPS_DATE/windows-deps-$DEPS_DATE-x64.zip" +if (-not (Test-Path "$DEPS\include\obs\obs.h")) { Write-Host " Downloading deps (~60MB)..." -ForegroundColor Yellow - Invoke-WebRequest -Uri $depsUrl -OutFile "$DEPS\deps.zip" + Invoke-WebRequest -Uri "https://github.com/obsproject/obs-deps/releases/download/$DEPS_DATE/windows-deps-$DEPS_DATE-x64.zip" -OutFile "$DEPS\deps.zip" Expand-Archive -Path "$DEPS\deps.zip" -DestinationPath $DEPS -Force +} else { + Write-Host " Deps (cached)" -ForegroundColor DarkGray } -if (-not (Test-Path "$DEPS\lib\cmake\Qt6")) { - $qt6Url = "https://github.com/obsproject/obs-deps/releases/download/$DEPS_DATE/windows-deps-qt6-$DEPS_DATE-x64.zip" +if (-not (Test-Path "$DEPS\lib\cmake\Qt6\Qt6Config.cmake")) { Write-Host " Downloading Qt6 (~250MB)..." -ForegroundColor Yellow - Invoke-WebRequest -Uri $qt6Url -OutFile "$DEPS\qt6.zip" + Invoke-WebRequest -Uri "https://github.com/obsproject/obs-deps/releases/download/$DEPS_DATE/windows-deps-qt6-$DEPS_DATE-x64.zip" -OutFile "$DEPS\qt6.zip" Expand-Archive -Path "$DEPS\qt6.zip" -DestinationPath $DEPS -Force +} else { + Write-Host " Qt6 (cached)" -ForegroundColor DarkGray } # ---------- Step 4: Build OBS ---------- @@ -119,8 +120,6 @@ if (-not (Test-Path "$obsBuild\libobs\Release\obs.lib")) { cmake --build $obsBuild --config Debug --target obs-frontend-api -- /m /noLogo 2>&1 | Write-Host cmake --build $obsBuild --config Release --target obs-frontend-api -- /m /noLogo 2>&1 | Write-Host - - # Install to deps dir so plugin can find it cmake --install $obsBuild --component Development --config Debug --prefix "$DEPS" 2>&1 | Write-Host cmake --install $obsBuild --component Development --config Release --prefix "$DEPS" 2>&1 | Write-Host } else { @@ -131,19 +130,22 @@ if (-not (Test-Path "$obsBuild\libobs\Release\obs.lib")) { Write-Host "[5/5] Building Vulcast Vertical" -ForegroundColor Cyan Push-Location $SRC -cmake -S . -B build ` - -G "Visual Studio 17 2022" -A x64 ` - -DBUILD_OUT_OF_TREE=On ` - -DCMAKE_PREFIX_PATH="$DEPS" ` - -DQT_VERSION=6 ` - -DCMAKE_BUILD_TYPE=Release ` - -DFETCHCONTENT_FULLY_DISCONNECTED=ON 2>&1 | Write-Host - +if (-not (Test-Path "build\CMakeCache.txt")) { + cmake -S . -B build ` + -G "Visual Studio 17 2022" -A x64 ` + -DBUILD_OUT_OF_TREE=On ` + -DCMAKE_PREFIX_PATH="$DEPS" ` + -DQT_VERSION=6 ` + -DCMAKE_BUILD_TYPE=Release ` + -DFETCHCONTENT_FULLY_DISCONNECTED=ON 2>&1 | Write-Host +} cmake --build build --config Release -- /m /noLogo 2>&1 | Write-Host Pop-Location # ---------- Done ---------- -$dll = Get-ChildItem -Path "$SRC\build" -Recurse -Filter "vulcast-vertical.dll" -ErrorAction SilentlyContinue | Select-Object -First 1 +# The plugin builds as vertical-canvas.dll (from CMakeLists project name) +$dll = Get-ChildItem -Path "$SRC\build" -Recurse -Filter "*.dll" -ErrorAction SilentlyContinue | + Where-Object { $_.Name -notmatch 'Qt6|obs-' } | Select-Object -First 1 if ($dll) { $dest = "$env:USERPROFILE\Desktop\vulcast-vertical.dll" Copy-Item $dll.FullName $dest -Force