03_build_plugin.ps1 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 plugin 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-Plugin {
  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 plugin ${ProductName}"
  26. Ensure-Directory ${CheckoutDir}
  27. if ($BuildArch -eq "64-bit") {
  28. $QtFolder = "${CheckoutDir}/../obs-build-dependencies/Qt_${WindowsQtVersion}/msvc2019_64"
  29. $DepsFolder = "${CheckoutDir}/../obs-build-dependencies/dependencies${WindowsDepsVersion}/win64"
  30. $Env:CMAKE_PREFIX_PATH="${QtFolder};${DepsFolder}/bin;${DepsFolder}"
  31. cmake -S . -B "${BuildDirectory}64" -G "Visual Studio 16 2019" `
  32. -DCMAKE_GENERATOR_PLATFORM=x64 `
  33. -DCMAKE_SYSTEM_VERSION="${CmakeSystemVersion}" `
  34. "$(if (Test-Path Variable:$Quiet) { "-Wno-deprecated -Wno-dev --log-level=ERROR" })"
  35. cmake --build "${BuildDirectory}64" --config ${BuildConfiguration}
  36. } else {
  37. $QtFolder = "${CheckoutDir}/../obs-build-dependencies/Qt_${WindowsQtVersion}/msvc2019"
  38. $DepsFolder = "${CheckoutDir}/../obs-build-dependencies/dependencies${WindowsDepsVersion}/win32"
  39. $Env:CMAKE_PREFIX_PATH="${QtFolder};${DepsFolder}/bin;${DepsFolder}"
  40. cmake -S . -B "${BuildDirectory}32" -G "Visual Studio 16 2019" `
  41. -DCMAKE_GENERATOR_PLATFORM=Win32 `
  42. -DCMAKE_SYSTEM_VERSION="${CmakeSystemVersion}" `
  43. "$(if (Test-Path Variable:$Quiet) { "-Wno-deprecated -Wno-dev --log-level=ERROR" })"
  44. cmake --build "${BuildDirectory}32" --config ${BuildConfiguration}
  45. }
  46. Ensure-Directory ${CheckoutDir}
  47. }
  48. function Build-Plugin-Standalone {
  49. $CheckoutDir = git rev-parse --show-toplevel
  50. if (Test-Path ${CheckoutDir}/CI/include/build_environment.ps1) {
  51. . ${CheckoutDir}/CI/include/build_environment.ps1
  52. }
  53. . ${CheckoutDir}/CI/include/build_support_windows.ps1
  54. Build-OBS-Plugin
  55. }
  56. function Print-Usage {
  57. $Lines = @(
  58. "Usage: ${MyInvocation.MyCommand.Name}",
  59. "-Help : Print this help",
  60. "-Quiet : Suppress most build process output",
  61. "-Verbose : Enable more verbose build process output",
  62. "-BuildDirectory : Directory to use for builds - Default: build64 on 64-bit systems, build32 on 32-bit systems",
  63. "-BuildArch : Build architecture to use (32bit or 64bit) - Default: local architecture",
  64. "-BuildConfiguration : Build configuration to use - Default: RelWithDebInfo"
  65. )
  66. $Lines | Write-Host
  67. }
  68. if(!(Test-Path variable:_RunObsBuildScript)) {
  69. if($Help.isPresent) {
  70. Print-Usage
  71. exit 0
  72. }
  73. Build-Plugin-Standalone
  74. }