ObsDefaults_Windows.cmake 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. cmake_minimum_required(VERSION 3.20)
  2. # Enable modern cmake policies
  3. if(POLICY CMP0009)
  4. cmake_policy(SET CMP0009 NEW)
  5. endif()
  6. if(POLICY CMP0011)
  7. cmake_policy(SET CMP0011 NEW)
  8. endif()
  9. if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
  10. set(CMAKE_INSTALL_PREFIX
  11. "${CMAKE_BINARY_DIR}/rundir"
  12. CACHE STRING "Directory to install OBS after building" FORCE)
  13. endif()
  14. # Enable building Windows modules with file descriptors
  15. # https://github.com/obsproject/obs-studio/commit/51be039cf82fc347587d16b48f74e65e86bee301
  16. set(MODULE_DESCRIPTION "OBS Studio")
  17. macro(setup_obs_project)
  18. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  19. set(_ARCH_SUFFIX 64)
  20. else()
  21. set(_ARCH_SUFFIX 32)
  22. endif()
  23. set(OBS_OUTPUT_DIR "${CMAKE_BINARY_DIR}/rundir")
  24. set(OBS_EXECUTABLE_DESTINATION "bin/${_ARCH_SUFFIX}bit")
  25. set(OBS_EXECUTABLE32_DESTINATION "bin/32bit")
  26. set(OBS_EXECUTABLE64_DESTINATION "bin/64bit")
  27. set(OBS_LIBRARY_DESTINATION "bin/${_ARCH_SUFFIX}bit")
  28. set(OBS_LIBRARY32_DESTINATION "bin/32bit")
  29. set(OBS_LIBRARY64_DESTINATION "bin/64bit")
  30. set(OBS_EXECUTABLE_EXPORT_DESTINATION "bin/${_ARCH_SUFFIX}bit")
  31. set(OBS_LIBRARY_EXPORT_DESTINATION "bin/${_ARCH_SUFFIX}bit")
  32. set(OBS_PLUGIN_DESTINATION "obs-plugins/${_ARCH_SUFFIX}bit")
  33. set(OBS_PLUGIN32_DESTINATION "obs-plugins/32bit")
  34. set(OBS_PLUGIN64_DESTINATION "obs-plugins/64bit")
  35. set(OBS_INCLUDE_DESTINATION "include")
  36. set(OBS_CMAKE_DESTINATION "cmake")
  37. set(OBS_DATA_DESTINATION "data")
  38. set(OBS_DATA_PATH "../../${OBS_DATA_DESTINATION}")
  39. set(OBS_INSTALL_PREFIX "")
  40. set(OBS_SCRIPT_PLUGIN_DESTINATION
  41. "${OBS_DATA_DESTINATION}/obs-scripting/${_ARCH_SUFFIX}bit")
  42. set(OBS_SCRIPT_PLUGIN_PATH "../../${OBS_SCRIPT_PLUGIN_DESTINATION}")
  43. string(REPLACE "-" ";" UI_VERSION_SPLIT ${OBS_VERSION})
  44. list(GET UI_VERSION_SPLIT 0 UI_VERSION)
  45. string(REPLACE "." ";" UI_VERSION_SEMANTIC ${UI_VERSION})
  46. list(GET UI_VERSION_SEMANTIC 0 UI_VERSION_MAJOR)
  47. list(GET UI_VERSION_SEMANTIC 1 UI_VERSION_MINOR)
  48. list(GET UI_VERSION_SEMANTIC 2 UI_VERSION_PATCH)
  49. if(INSTALLER_RUN
  50. AND NOT DEFINED ENV{OBS_InstallerTempDir}
  51. AND NOT DEFINED ENV{obsInstallerTempDir})
  52. message(
  53. FATAL_ERROR
  54. "Environment variable obsInstallerTempDir is needed for multiarch installer generation"
  55. )
  56. endif()
  57. if(DEFINED ENV{OBS_DepsPath${_ARCH_SUFFIX}})
  58. set(DepsPath${_ARCH_SUFFIX} "$ENV{OBS_DepsPath${_ARCH_SUFFIX}}")
  59. elseif(DEFINED ENV{OBS_DepsPath})
  60. set(DepsPath "$ENV{DepsPath}")
  61. elseif(DEFINED ENV{DepsPath${_ARCH_SUFFIX}})
  62. set(DepsPath${_ARCH_SUFFIX} "$ENV{DepsPath${_ARCH_SUFFIX}}")
  63. elseif(DEFINED ENV{DepsPath})
  64. set(DepsPath "$ENV{DepsPath}")
  65. endif()
  66. if(DEFINED ENV{OBS_QTDIR${_ARCH_SUFFIX}})
  67. set(QTDIR${_ARCH_SUFFIX} "$ENV{OBS_QTDIR${_ARCH_SUFFIX}}")
  68. elseif(DEFINED ENV{OBS_QTDIR})
  69. set(QTDIR "$ENV{OBS_QTDIR}")
  70. elseif(DEFINED ENV{QTDIR${_ARCH_SUFFIX}})
  71. set(QTDIR${_ARCH_SUFFIX} "$ENV{QTDIR${_ARCH_SUFFIX}}")
  72. elseif(DEFINED ENV{QTDIR})
  73. set(QTDIR "$ENV{QTDIR}")
  74. endif()
  75. if(DEFINED DepsPath${_ARCH_SUFFIX})
  76. list(APPEND CMAKE_PREFIX_PATH "${DepsPath${_ARCH_SUFFIX}}"
  77. "${DepsPath${_ARCH_SUFFIX}}/bin")
  78. elseif(DEFINED DepsPath)
  79. list(APPEND CMAKE_PREFIX_PATH "${DepsPath}" "${DepsPath}/bin")
  80. elseif(NOT DEFINED CMAKE_PREFIX_PATH)
  81. message(
  82. WARNING
  83. "No CMAKE_PREFIX_PATH set: OBS requires pre-built dependencies for building on Windows."
  84. "Please download the appropriate obs-deps package for your architecture and set CMAKE_PREFIX_PATH "
  85. "to the base directory and 'bin' directory inside it:\n"
  86. "CMAKE_PREFIX_PATH=\"<PATH_TO_OBS_DEPS>\"\n"
  87. "Download pre-built OBS dependencies at https://github.com/obsproject/obs-deps/releases\n"
  88. )
  89. endif()
  90. if(DEFINED QTDIR${_ARCH_SUFFIX})
  91. list(APPEND CMAKE_PREFIX_PATH "${QTDIR${_ARCH_SUFFIX}}")
  92. elseif(DEFINED QTDIR)
  93. list(APPEND CMAKE_PREFIX_PATH "${QTDIR}")
  94. endif()
  95. if(DEFINED ENV{VLCPath})
  96. set(VLCPath "$ENV{VLCPath}")
  97. elseif(DEFINED ENV{OBS_VLCPath})
  98. set(VLCPath "$ENV{OBS_VLCPath}")
  99. endif()
  100. if(DEFINED VLCPath)
  101. set(VLC_PATH "${VLCPath}")
  102. endif()
  103. if(DEFINED ENV{CEF_ROOT_DIR})
  104. set(CEF_ROOT_DIR "$ENV{CEF_ROOT_DIR}")
  105. elseif(DEFINED ENV{OBS_CEF_ROOT_DIR})
  106. set(CEF_ROOT_DIR "$ENV{OBS_CEF_ROOT_DIR}")
  107. endif()
  108. if(DEFINED ENV{OBS_InstallerTempDir})
  109. file(TO_CMAKE_PATH "$ENV{OBS_InstallerTempDir}" _INSTALLER_TEMP_DIR)
  110. elseif(DEFINED ENV{obsInstallerTempDir})
  111. file(TO_CMAKE_PATH "$ENV{obsInstallerTempDir}" _INSTALLER_TEMP_DIR)
  112. endif()
  113. set(ENV{OBS_InstallerTempDir} "${_INSTALLER_TEMP_DIR}")
  114. unset(_INSTALLER_TEMP_DIR)
  115. if(DEFINED ENV{OBS_AdditionalInstallFiles})
  116. file(TO_CMAKE_PATH "$ENV{OBS_AdditionalInstallFiles}" _ADDITIONAL_FILES)
  117. elseif(DEFINED ENV{obsAdditionalInstallFiles})
  118. file(TO_CMAKE_PATH "$ENV{obsAdditionalInstallFiles}" _ADDITIONAL_FILES)
  119. else()
  120. set(_ADDITIONAL_FILES "${CMAKE_SOURCE_DIR}/additional_install_files")
  121. endif()
  122. set(ENV{OBS_AdditionalInstallFiles} "${_ADDITIONAL_FILES}")
  123. unset(_ADDITIONAL_FILES)
  124. list(APPEND CMAKE_INCLUDE_PATH
  125. "$ENV{OBS_AdditionalInstallFiles}/include${_ARCH_SUFFIX}"
  126. "$ENV{OBS_AdditionalInstallFiles}/include")
  127. list(
  128. APPEND
  129. CMAKE_LIBRARY_PATH
  130. "$ENV{OBS_AdditionalInstallFiles}/lib${_ARCH_SUFFIX}"
  131. "$ENV{OBS_AdditionalInstallFiles}/lib"
  132. "$ENV{OBS_AdditionalInstallFiles}/libs${_ARCH_SUFFIX}"
  133. "$ENV{OBS_AdditionalInstallFiles}/libs"
  134. "$ENV{OBS_AdditionalInstallFiles}/bin${_ARCH_SUFFIX}"
  135. "$ENV{OBS_AdditionalInstallFiles}/bin")
  136. if(BUILD_FOR_DISTRIBUTION OR DEFINED ENV{CI})
  137. set_option(ENABLE_RTMPS ON)
  138. endif()
  139. endmacro()