123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- Param(
- [Switch]$Help,
- [Switch]$Quiet,
- [Switch]$Verbose,
- [Switch]$Package,
- [Switch]$SkipDependencyChecks,
- [Switch]$BuildInstaller,
- [Switch]$CombinedArchs,
- [String]$BuildDirectory = "build",
- [ValidateSet('x86', 'x64')]
- [String]$BuildArch = ('x86', 'x64')[[System.Environment]::Is64BitOperatingSystem],
- [ValidateSet("Release", "RelWithDebInfo", "MinSizeRel", "Debug")]
- [String]$BuildConfiguration = "RelWithDebInfo"
- )
- ##############################################################################
- # Windows OBS build script
- ##############################################################################
- #
- # This script contains all steps necessary to:
- #
- # * Build OBS with all required dependencies
- # * Create 64-bit and 32-bit variants
- #
- # Parameters:
- # -Help : Print usage help
- # -Quiet : Suppress most build process output
- # -Verbose : Enable more verbose build process output
- # -SkipDependencyChecks : Skip dependency checks
- # -BuildDirectory : Directory to use for builds
- # Default: build64 on 64-bit systems
- # build32 on 32-bit systems
- # -BuildArch : Build architecture to use (x86 or x64)
- # -BuildConfiguration : Build configuration to use
- # Default: RelWithDebInfo
- # -CombinedArchs : Create combined packages and installer
- # (x86 and x64) - Default: off
- # -Package : Prepare folder structure for installer creation
- #
- # Environment Variables (optional):
- # WindowsDepsVersion : Pre-compiled Windows dependencies version
- # WindowsQtVersion : Pre-compiled Qt version
- #
- ##############################################################################
- $ErrorActionPreference = "Stop"
- $_RunObsBuildScript = $true
- $ProductName = "OBS-Studio"
- $CheckoutDir = Resolve-Path -Path "$PSScriptRoot\.."
- $DepsBuildDir = "${CheckoutDir}/../obs-build-dependencies"
- $ObsBuildDir = "${CheckoutDir}/../obs-studio"
- . ${CheckoutDir}/CI/include/build_support_windows.ps1
- # Handle installation of build system components and build dependencies
- . ${CheckoutDir}/CI/windows/01_install_dependencies.ps1
- # Handle OBS build configuration
- . ${CheckoutDir}/CI/windows/02_build_obs.ps1
- # Handle packaging
- . ${CheckoutDir}/CI/windows/03_package_obs.ps1
- function Build-OBS-Main {
- Ensure-Directory ${CheckoutDir}
- Write-Step "Fetching version tags..."
- $null = git fetch origin --tags
- $GitBranch = git rev-parse --abbrev-ref HEAD
- $GitHash = git rev-parse --short HEAD
- $ErrorActionPreference = "SilentlyContinue"
- $GitTag = git describe --tags --abbrev=0
- $ErrorActionPreference = "Stop"
- if(Test-Path variable:BUILD_FOR_DISTRIBUTION) {
- $VersionString = "${GitTag}"
- } else {
- $VersionString = "${GitTag}-${GitHash}"
- }
- $FileName = "${ProductName}-${VersionString}"
- if($CombinedArchs.isPresent) {
- if (!(Test-Path env:obsInstallerTempDir)) {
- $Env:obsInstallerTempDir = "${CheckoutDir}/install_temp"
- }
- if(!($SkipDependencyChecks.isPresent)) {
- Install-Dependencies -BuildArch x64
- }
- Build-OBS -BuildArch x64
- if(!($SkipDependencyChecks.isPresent)) {
- Install-Dependencies -BuildArch x86
- }
- Build-OBS -BuildArch x86
- } else {
- if(!($SkipDependencyChecks.isPresent)) {
- Install-Dependencies
- }
- Build-OBS
- }
- if($Package.isPresent) {
- Package-OBS -CombinedArchs:$CombinedArchs
- }
- }
- ## MAIN SCRIPT FUNCTIONS ##
- function Print-Usage {
- Write-Host "build-windows.ps1 - Build script for ${ProductName}"
- $Lines = @(
- "Usage: ${_ScriptName}",
- "-Help : Print this help",
- "-Quiet : Suppress most build process output"
- "-Verbose : Enable more verbose build process output"
- "-SkipDependencyChecks : Skip 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 (x86 or x64) - Default: local architecture",
- "-BuildConfiguration : Build configuration to use - Default: RelWithDebInfo",
- "-CombinedArchs : Create combined packages and installer (64-bit and 32-bit) - Default: off"
- "-Package : Prepare folder structure for installer creation"
- )
- $Lines | Write-Host
- }
- $_ScriptName = "$($MyInvocation.MyCommand.Name)"
- if($Help.isPresent) {
- Print-Usage
- exit 0
- }
- Build-OBS-Main
|