Param( [Switch]$Help = $(if (Test-Path variable:Help) { $Help }), [Switch]$Quiet = $(if (Test-Path variable:Quiet) { $Quiet }), [Switch]$Verbose = $(if (Test-Path variable:Verbose) { $Verbose }), [Switch]$BuildInstaller = $(if ($BuildInstaller.isPresent) { $true }), [String]$ProductName = $(if (Test-Path variable:ProductName) { "${ProductName}" } else { "obs-plugin" }), [Switch]$CombinedArchs = $(if ($CombinedArchs.isPresent) { $true }), [String]$BuildDirectory = $(if (Test-Path variable:BuildDirectory) { "${BuildDirectory}" } else { "build" }), [String]$BuildArch = $(if (Test-Path variable:BuildArch) { "${BuildArch}" } else { (Get-WmiObject Win32_OperatingSystem).OSArchitecture}), [String]$BuildConfiguration = $(if (Test-Path variable:BuildConfiguration) { "${BuildConfiguration}" } else { "RelWithDebInfo" }) ) ############################################################################## # Windows libobs plugin package function ############################################################################## # # This script file can be included in build scripts for Windows or run # directly with the -Standalone switch # ############################################################################## $ErrorActionPreference = "Stop" function Package-OBS-Plugin { Param( [String]$BuildDirectory = $(if (Test-Path variable:BuildDirectory) { "${BuildDirectory}" }), [String]$BuildArch = $(if (Test-Path variable:BuildArch) { "${BuildArch}" }), [String]$BuildConfiguration = $(if (Test-Path variable:BuildConfiguration) { "${BuildConfiguration}" }) ) Write-Status "Package plugin ${ProductName}" Ensure-Directory ${CheckoutDir} if ($CombinedArchs.isPresent) { if (!(Test-Path ${CheckoutDir}/release/obs-plugins/64bit)) { cmake --build ${BuildDirectory}64 --config ${BuildConfiguration} -t install } if (!(Test-Path ${CheckoutDir}/release/obs-plugins/32bit)) { cmake --build ${BuildDirectory}32 --config ${BuildConfiguration} -t install } $CompressVars = @{ Path = "${CheckoutDir}/release/*" CompressionLevel = "Optimal" DestinationPath = "${FileName}-Windows.zip" } Write-Step "Creating zip archive..." Compress-Archive -Force @CompressVars if(($BuildInstaller.isPresent) -And (Test-CommandExists "iscc")) { Write-Step "Creating installer..." & iscc ${CheckoutDir}/installer/installer-Windows.generated.iss /O. /F"${FileName}-Windows-Installer" } } elseif ($BuildArch -eq "64-bit") { cmake --build ${BuildDirectory}64 --config ${BuildConfiguration} -t install $CompressVars = @{ Path = "${CheckoutDir}/release/*" CompressionLevel = "Optimal" DestinationPath = "${FileName}-Win64.zip" } Write-Step "Creating zip archive..." Compress-Archive -Force @CompressVars if(($BuildInstaller.isPresent) -And (Test-CommandExists "iscc")) { Write-Step "Creating installer..." & iscc ${CheckoutDir}/installer/installer-Windows.generated.iss /O. /F"${FileName}-Win64-Installer" } } elseif ($BuildArch -eq "32-bit") { cmake --build ${BuildDirectory}32 --config ${BuildConfiguration} -t install $CompressVars = @{ Path = "${CheckoutDir}/release/*" CompressionLevel = "Optimal" DestinationPath = "${FileName}-Win32.zip" } Write-Step "Creating zip archive..." Compress-Archive -Force @CompressVars if(($BuildInstaller.isPresent) -And (Test-CommandExists "iscc")) { Write-Step "Creating installer..." & iscc ${CheckoutDir}/installer/installer-Windows.generated.iss /O. /F"${FileName}-Win32-Installer" } } } function Package-Plugin-Standalone { $CheckoutDir = git rev-parse --show-toplevel if (Test-Path ${CheckoutDir}/CI/include/build_environment.ps1) { . ${CheckoutDir}/CI/include/build_environment.ps1 } . ${CheckoutDir}/CI/include/build_support_windows.ps1 Ensure-Directory ${CheckoutDir} $GitBranch = git rev-parse --abbrev-ref HEAD $GitHash = git rev-parse --short HEAD $ErrorActionPreference = "SilentlyContiue" $GitTag = git describe --tags --abbrev=0 $ErrorActionPreference = "Stop" if ($GitTag -eq $null) { $GitTag=$ProductVersion } $FileName = "${ProductName}-${GitTag}-${GitHash}" Package-OBS-Plugin } function Print-Usage { $Lines = @( "Usage: ${MyInvocation.MyCommand.Name}", "-Help : Print this help", "-Quiet : Suppress most build process output", "-Verbose : Enable more verbose build process output", "-CombinedArchs : Create combined architecture package", "-BuildDirectory : Directory to use for builds - Default: build64 on 64-bit systems, build32 on 32-bit systems", "-BuildArch : Build architecture to use (32bit or 64bit) - Default: local architecture", "-BuildConfiguration : Build configuration to use - Default: RelWithDebInfo" ) $Lines | Write-Host } if(!(Test-Path variable:_RunObsBuildScript)) { if($Help.isPresent) { Print-Usage exit 0 } Package-Plugin-Standalone }