123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- Param(
- [Switch]$Help,
- [Switch]$Quiet,
- [Switch]$Verbose,
- [Switch]$NoChoco,
- [Switch]$SkipDependencyChecks,
- [Switch]$BuildInstaller,
- [Switch]$CombinedArchs,
- [String]$BuildDirectory = "build",
- [String]$BuildArch = (Get-CimInstance CIM_OperatingSystem).OSArchitecture,
- [String]$BuildConfiguration = "RelWithDebInfo"
- )
- ##############################################################################
- # Windows plugin build script
- ##############################################################################
- #
- # This script contains all steps necessary to:
- #
- # * Build libobs and obs-frontend-api with all required dependencies
- # * Build your plugin
- # * Create 64-bit or 32-bit packages
- # * Create 64-bit or 32-bit installation packages
- # * Create combined installation packages
- #
- # Parameters:
- # -Help : Print usage help
- # -NoChco : Skip automatic dependency installation
- # via Chocolatey
- # -SkipDependencyChecks : Skips dependency checks
- # -BuildDirectory : Directory to use for builds
- # Default: Win64 on 64-bit systems
- # Win32 on 32-bit systems
- # -BuildArch : Build architecture to use (32bit or 64bit)
- # -BuildConfiguration : Build configuration to use
- # Default: RelWithDebInfo
- # -BuildInstaller : Build InnoSetup installer - Default: off"
- # -CombinedArchs : Create combined packages and installer
- # (64-bit and 32-bit) - Default: off"
- #
- # Environment Variables (optional):
- # WindowsDepsVersion : Pre-compiled Windows dependencies version
- # WindowsQtVersion : Pre-compiled Qt version
- # ObsVersion : OBS Version
- #
- ##############################################################################
- $ErrorActionPreference = "Stop"
- $_RunObsBuildScript = $true
- $CheckoutDir = git rev-parse --show-toplevel
- $DepsBuildDir = "${CheckoutDir}/../obs-build-dependencies"
- $ObsBuildDir = "${CheckoutDir}/../obs-studio"
- if (Test-Path ${CheckoutDir}/CI/include/build_environment.ps1) {
- . ${CheckoutDir}/CI/include/build_environment.ps1
- }
- . ${CheckoutDir}/CI/include/build_support_windows.ps1
- ## DEPENDENCY INSTALLATION ##
- . ${CheckoutDir}/CI/windows/01_install_dependencies.ps1
- ## OBS LIBRARY BUILD ##
- . ${CheckoutDir}/CI/windows/02_build_obs_libs.ps1
- ## PLUGIN BUILD ##
- . ${CheckoutDir}/CI/windows/03_build_plugin.ps1
- ## PLUGIN PACKAGE AND NOTARIZE ##
- . ${CheckoutDir}/CI/windows/04_package_plugin.ps1
- ## MAIN SCRIPT FUNCTIONS ##
- function Build-Obs-Plugin-Main {
- Ensure-Directory ${CheckoutDir}
- Write-Step "Fetching version tags..."
- & git fetch origin --tags
- $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}"
- if(!($SkipDependencyChecks.isPresent)) {
- Install-Dependencies -NoChoco:$NoChoco
- }
- if($CombinedArchs.isPresent) {
- Build-OBS-Libs -BuildArch 64-bit
- Build-OBS-Libs -BuildArch 32-bit
- Build-OBS-Plugin -BuildArch 64-bit
- Build-OBS-Plugin -BuildArch 32-bit
- } else {
- Build-OBS-Libs
- Build-OBS-Plugin
- }
- Package-OBS-Plugin
- }
- function Print-Usage {
- Write-Host "build-windows.ps1 - Build script for ${ProductName}"
- $Lines = @(
- "Usage: ${MyInvocation.MyCommand.Name}",
- "-Help : Print this help",
- "-Quiet : Suppress most build process output"
- "-Verbose : Enable more verbose build process output"
- "-NoChoco : Skip automatic dependency installation via Chocolatey - Default: on",
- "-SkipDependencyChecks : Skips dependency checks - Default: off",
- "-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",
- "-BuildInstaller : Build InnoSetup installer - Default: off",
- "-CombinedArchs : Create combined packages and installer (64-bit and 32-bit) - Default: off"
- )
- $Lines | Write-Host
- }
- if($Help.isPresent) {
- Print-Usage
- exit 0
- }
- Build-Obs-Plugin-Main
|