| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- 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 }),
- [String]$BuildDirectory = $(if (Test-Path variable:BuildDirectory) { "${BuildDirectory}" } else { "build" }),
- [ValidateSet('x86', 'x64')]
- [String]$BuildArch = $(if (Test-Path variable:BuildArch) { "${BuildArch}" } else { ('x86', 'x64')[[System.Environment]::Is64BitOperatingSystem] }),
- [ValidateSet("Release", "RelWithDebInfo", "MinSizeRel", "Debug")]
- [String]$BuildConfiguration = $(if (Test-Path variable:BuildConfiguration) { "${BuildConfiguration}" } else { "RelWithDebInfo" })
- )
- ##############################################################################
- # Windows libobs library build function
- ##############################################################################
- #
- # This script file can be included in build scripts for Windows or run
- # directly
- #
- ##############################################################################
- $ErrorActionPreference = "Stop"
- function Build-OBS {
- 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}" })
- )
- $NumProcessors = (Get-CimInstance Win32_ComputerSystem).NumberOfLogicalProcessors
- if ( $NumProcessors -gt 1 ) {
- $env:UseMultiToolTask = $true
- $env:EnforceProcessCountAcrossBuilds = $true
- }
- Write-Status "Build OBS"
- Configure-OBS
- Ensure-Directory ${CheckoutDir}
- Write-Step "Build OBS targets..."
- $BuildDirectoryActual = "${BuildDirectory}$(if (${BuildArch} -eq "x64") { "64" } else { "32" })"
- Invoke-Expression "cmake --build ${BuildDirectoryActual} --config ${BuildConfiguration}"
- }
- function Configure-OBS {
- Ensure-Directory ${CheckoutDir}
- Write-Status "Configuration of OBS build system..."
- $NumProcessors = (Get-CimInstance Win32_ComputerSystem).NumberOfLogicalProcessors
- if ( $NumProcessors -gt 1 ) {
- $env:UseMultiToolTask = $true
- $env:EnforceProcessCountAcrossBuilds = $true
- }
- # TODO: Clean up archive and directory naming across dependencies
- $CmakePrefixPath = Resolve-Path -Path "${CheckoutDir}/../obs-build-dependencies/windows-deps-${WindowsDepsVersion}-${BuildArch}"
- $CefDirectory = Resolve-Path -Path "${CheckoutDir}/../obs-build-dependencies/cef_binary_${WindowsCefVersion}_windows_${BuildArch}"
- $BuildDirectoryActual = "${BuildDirectory}$(if (${BuildArch} -eq "x64") { "64" } else { "32" })"
- $GeneratorPlatform = "$(if (${BuildArch} -eq "x64") { "x64" } else { "Win32" })"
- $CmakeCommand = @(
- "-S . -B `"${BuildDirectoryActual}`"",
- "-G `"${CmakeGenerator}`"",
- "-DCMAKE_GENERATOR_PLATFORM=`"${GeneratorPlatform}`"",
- "-DCMAKE_SYSTEM_VERSION=`"${CmakeSystemVersion}`"",
- "-DCMAKE_PREFIX_PATH:PATH=`"${CmakePrefixPath}`"",
- "-DCEF_ROOT_DIR:PATH=`"${CefDirectory}`"",
- "-DENABLE_BROWSER=ON",
- "-DVLC_PATH:PATH=`"${CheckoutDir}/../obs-build-dependencies/vlc-${WindowsVlcVersion}`"",
- "-DENABLE_VLC=ON",
- "-DCMAKE_INSTALL_PREFIX=`"${BuildDirectoryActual}/install`"",
- "-DVIRTUALCAM_GUID=`"${Env:VIRTUALCAM-GUID}`"",
- "-DTWITCH_CLIENTID=`"${Env:TWITCH_CLIENTID}`"",
- "-DTWITCH_HASH=`"${Env:TWITCH_HASH}`"",
- "-DRESTREAM_CLIENTID=`"${Env:RESTREAM_CLIENTID}`"",
- "-DRESTREAM_HASH=`"${Env:RESTREAM_HASH}`"",
- "-DYOUTUBE_CLIENTID=`"${Env:YOUTUBE_CLIENTID}`"",
- "-DYOUTUBE_CLIENTID_HASH=`"${Env:YOUTUBE_CLIENTID_HASH}`"",
- "-DYOUTUBE_SECRET=`"${Env:YOUTUBE_SECRET}`"",
- "-DYOUTUBE_SECRET_HASH=`"${Env:YOUTUBE_SECRET_HASH}`"",
- "-DCOPIED_DEPENDENCIES=OFF",
- "-DCOPY_DEPENDENCIES=ON",
- "-DBUILD_FOR_DISTRIBUTION=`"$(if (Test-Path Env:BUILD_FOR_DISTRIBUTION) { "ON" } else { "OFF" })`"",
- "$(if (Test-Path Env:CI) { "-DOBS_BUILD_NUMBER=${Env:GITHUB_RUN_ID}" })",
- "$(if (Test-Path Variable:$Quiet) { "-Wno-deprecated -Wno-dev --log-level=ERROR" })"
- )
- Invoke-Expression "cmake ${CmakeCommand}"
- Ensure-Directory ${CheckoutDir}
- }
- function Build-OBS-Standalone {
- $ProductName = "OBS-Studio"
- $CheckoutDir = Resolve-Path -Path "$PSScriptRoot\..\.."
- $DepsBuildDir = "${CheckoutDir}/../obs-build-dependencies"
- $ObsBuildDir = "${CheckoutDir}/../obs-studio"
- . ${CheckoutDir}/CI/include/build_support_windows.ps1
- Build-OBS
- }
- function Print-Usage {
- $Lines = @(
- "Usage: ${_ScriptName}",
- "-Help : Print this help",
- "-Quiet : Suppress most build process output",
- "-Verbose : Enable more verbose build process output",
- "-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"
- )
- $Lines | Write-Host
- }
- if(!(Test-Path variable:_RunObsBuildScript)) {
- $_ScriptName = "$($MyInvocation.MyCommand.Name)"
- if($Help.isPresent) {
- Print-Usage
- exit 0
- }
- Build-OBS-Standalone
- }
|