02_build_obs_libs.ps1 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. Param(
  2. [Switch]$Help = $(if (Test-Path variable:Help) { $Help }),
  3. [Switch]$Quiet = $(if (Test-Path variable:Quiet) { $Quiet }),
  4. [Switch]$Verbose = $(if (Test-Path variable:Verbose) { $Verbose }),
  5. [String]$ProductName = $(if (Test-Path variable:ProductName) { "${ProductName}" } else { "obs-plugin" }),
  6. [String]$BuildDirectory = $(if (Test-Path variable:BuildDirectory) { "${BuildDirectory}" } else { "build" }),
  7. [String]$BuildArch = $(if (Test-Path variable:BuildArch) { "${BuildArch}" } else { (Get-WmiObject Win32_OperatingSystem).OSArchitecture}),
  8. [String]$BuildConfiguration = $(if (Test-Path variable:BuildConfiguration) { "${BuildConfiguration}" } else { "RelWithDebInfo" })
  9. )
  10. ##############################################################################
  11. # Windows libobs library build function
  12. ##############################################################################
  13. #
  14. # This script file can be included in build scripts for Windows or run
  15. # directly
  16. #
  17. ##############################################################################
  18. $ErrorActionPreference = "Stop"
  19. function Build-OBS-Libs {
  20. Param(
  21. [String]$BuildDirectory = $(if (Test-Path variable:BuildDirectory) { "${BuildDirectory}" }),
  22. [String]$BuildArch = $(if (Test-Path variable:BuildArch) { "${BuildArch}" }),
  23. [String]$BuildConfiguration = $(if (Test-Path variable:BuildConfiguration) { "${BuildConfiguration}" })
  24. )
  25. Write-Status "Build libobs and obs-frontend-api"
  26. Ensure-Directory ${ObsBuildDir}
  27. if ($BuildArch -eq "64-bit") {
  28. $QtDirectory = "${CheckoutDir}/../obs-build-dependencies/Qt_${WindowsQtVersion}/msvc2019_64"
  29. $DepsDirectory = "${CheckoutDir}/../obs-build-dependencies/dependencies${WindowsDepsVersion}/win64"
  30. $Env:CMAKE_PREFIX_PATH="${QtDirectory};${DepsDirectory}/bin;${DepsDirectory}"
  31. cmake -S . -B "plugin_${BuildDirectory}64" -G "Visual Studio 16 2019" `
  32. -DCMAKE_SYSTEM_VERSION="${CmakeSystemVersion}" `
  33. -DCMAKE_GENERATOR_PLATFORM=x64 `
  34. -DENABLE_PLUGINS=OFF `
  35. -DENABLE_UI=ON `
  36. -DENABLE_SCRIPTING=OFF `
  37. "$(if (Test-Path Variable:$Quiet) { "-Wno-deprecated -Wno-dev --log-level=ERROR" })"
  38. cmake --build "plugin_${BuildDirectory}64" -t obs-frontend-api --config ${BuildConfiguration}
  39. } else {
  40. $QtDirectory = "${CheckoutDir}/../obs-build-dependencies/Qt_${WindowsQtVersion}/msvc2019"
  41. $DepsDirectory = "${CheckoutDir}/../obs-build-dependencies/dependencies${WindowsDepsVersion}/win32"
  42. $Env:CMAKE_PREFIX_PATH="${QtDirectory};${DepsDirectory}/bin;${DepsDirectory}"
  43. cmake -S . -B "plugin_${BuildDirectory}32" -G "Visual Studio 16 2019" `
  44. -DCMAKE_SYSTEM_VERSION="${CmakeSystemVersion}" `
  45. -DCMAKE_GENERATOR_PLATFORM=Win32 `
  46. -DENABLE_PLUGINS=OFF `
  47. -DENABLE_UI=ON `
  48. -DENABLE_SCRIPTING=OFF `
  49. "$(if (Test-Path Variable:$Quiet) { "-Wno-deprecated -Wno-dev --log-level=ERROR" })"
  50. cmake --build "plugin_${BuildDirectory}32" -t obs-frontend-api --config ${BuildConfiguration}
  51. }
  52. Ensure-Directory ${CheckoutDir}
  53. }
  54. function Build-OBS-Libs-Standalone {
  55. $CheckoutDir = git rev-parse --show-toplevel
  56. if (Test-Path ${CheckoutDir}/CI/include/build_environment.ps1) {
  57. . ${CheckoutDir}/CI/include/build_environment.ps1
  58. }
  59. $ObsBuildDir = "${CheckoutDir}/../obs-studio"
  60. . ${CheckoutDir}/CI/include/build_support_windows.ps1
  61. Build-OBS-Libs
  62. }
  63. function Print-Usage {
  64. $Lines = @(
  65. "Usage: ${MyInvocation.MyCommand.Name}",
  66. "-Help : Print this help",
  67. "-Quiet : Suppress most build process output",
  68. "-Verbose : Enable more verbose build process output",
  69. "-BuildDirectory : Directory to use for builds - Default: build64 on 64-bit systems, build32 on 32-bit systems",
  70. "-BuildArch : Build architecture to use (32bit or 64bit) - Default: local architecture",
  71. "-BuildConfiguration : Build configuration to use - Default: RelWithDebInfo"
  72. )
  73. $Lines | Write-Host
  74. }
  75. if(!(Test-Path variable:_RunObsBuildScript)) {
  76. if($Help.isPresent) {
  77. Print-Usage
  78. exit 0
  79. }
  80. Build-OBS-Libs-Standalone
  81. }