ff916e5f2c
Current build scripts rely on comparing a architecture string provided by the OS which will be localised in certain languages. This change uses a boolean 64-bit flag to use script-defined identifiers to avoid this issue.
138 lines
4.7 KiB
PowerShell
138 lines
4.7 KiB
PowerShell
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
|