ObsDefaults_Linux.cmake 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. # Enable modern cmake policies
  2. if(POLICY CMP0011)
  3. cmake_policy(SET CMP0011 NEW)
  4. endif()
  5. if(POLICY CMP0072)
  6. cmake_policy(SET CMP0072 NEW)
  7. endif()
  8. if(POLICY CMP0095)
  9. cmake_policy(SET CMP0095 NEW)
  10. endif()
  11. if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND LINUX_PORTABLE)
  12. set(CMAKE_INSTALL_PREFIX
  13. "${CMAKE_BINARY_DIR}/install"
  14. CACHE STRING "Directory to install OBS after building" FORCE)
  15. endif()
  16. macro(setup_obs_project)
  17. #[[
  18. POSIX directory setup (portable)
  19. CMAKE_BINARY_DIR
  20. └ rundir
  21. └ CONFIG
  22. └ bin
  23. └ ARCH
  24. └ data
  25. └ libobs
  26. └ obs-plugins
  27. └ PLUGIN
  28. └ obs-scripting
  29. └ ARCH
  30. └ obs-studio
  31. └ obs-plugins
  32. └ ARCH
  33. POSIX directory setup (non-portable)
  34. /usr/local/
  35. └ bin
  36. └ include
  37. └ obs
  38. └ libs
  39. └ cmake
  40. └ obs-plugins
  41. └ obs-scripting
  42. └ share
  43. └ obs
  44. └ libobs
  45. └ obs-plugins
  46. └ obs-studio
  47. #]]
  48. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  49. set(_ARCH_SUFFIX 64)
  50. else()
  51. set(_ARCH_SUFFIX 32)
  52. endif()
  53. if(NOT OBS_MULTIARCH_SUFFIX AND DEFINED ENV{OBS_MULTIARCH_SUFFIX})
  54. set(OBS_MULTIARCH_SUFFIX "$ENV{OBS_MULTIARCH_SUFFIX}")
  55. endif()
  56. set(OBS_OUTPUT_DIR "${CMAKE_BINARY_DIR}/rundir")
  57. if(NOT LINUX_PORTABLE)
  58. set(OBS_EXECUTABLE_DESTINATION "${CMAKE_INSTALL_BINDIR}")
  59. set(OBS_INCLUDE_DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/obs")
  60. set(OBS_LIBRARY_DESTINATION "${CMAKE_INSTALL_LIBDIR}")
  61. set(OBS_PLUGIN_DESTINATION "${OBS_LIBRARY_DESTINATION}/obs-plugins")
  62. set(OBS_SCRIPT_PLUGIN_DESTINATION
  63. "${OBS_LIBRARY_DESTINATION}/obs-scripting")
  64. set(OBS_DATA_DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/obs")
  65. set(OBS_CMAKE_DESTINATION "${OBS_LIBRARY_DESTINATION}/cmake")
  66. set(OBS_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/")
  67. set(OBS_DATA_PATH "${OBS_DATA_DESTINATION}")
  68. set(OBS_SCRIPT_PLUGIN_PATH
  69. "${CMAKE_INSTALL_PREFIX}/${OBS_SCRIPT_PLUGIN_DESTINATION}")
  70. set(CMAKE_INSTALL_RPATH
  71. "${CMAKE_INSTALL_PREFIX}/${OBS_LIBRARY_DESTINATION}")
  72. else()
  73. set(OBS_EXECUTABLE_DESTINATION "bin/${_ARCH_SUFFIX}bit")
  74. set(OBS_INCLUDE_DESTINATION "include")
  75. set(OBS_LIBRARY_DESTINATION "bin/${_ARCH_SUFFIX}bit")
  76. set(OBS_PLUGIN_DESTINATION "obs-plugins/${_ARCH_SUFFIX}bit")
  77. set(OBS_SCRIPT_PLUGIN_DESTINATION "data/obs-scripting/${_ARCH_SUFFIX}bit")
  78. set(OBS_DATA_DESTINATION "data")
  79. set(OBS_CMAKE_DESTINATION "cmake")
  80. set(OBS_INSTALL_PREFIX "")
  81. set(OBS_DATA_PATH "../../${OBS_DATA_DESTINATION}")
  82. set(OBS_SCRIPT_PLUGIN_PATH "../../${OBS_SCRIPT_PLUGIN_DESTINATION}")
  83. set(CMAKE_INSTALL_RPATH "$ORIGIN/"
  84. "$ORIGIN/../../${OBS_LIBRARY_DESTINATION}")
  85. endif()
  86. if(BUILD_FOR_PPA)
  87. set_option(ENABLE_LIBFDK ON)
  88. set_option(ENABLE_JACK ON)
  89. set_option(ENABLE_RTMPS ON)
  90. endif()
  91. if(BUILD_FOR_DISTRIBUTION OR DEFINED ENV{CI})
  92. set_option(ENABLE_RTMPS ON)
  93. endif()
  94. set(CPACK_PACKAGE_NAME "obs-studio")
  95. set(CPACK_PACKAGE_VENDOR "${OBS_WEBSITE}")
  96. set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${OBS_COMPANY_NAME}")
  97. set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${OBS_COMMENTS}")
  98. set(CPACK_RESOURCE_FILE_LICENSE
  99. "${CMAKE_SOURCE_DIR}/UI/data/license/gplv2.txt")
  100. set(CPACK_PACKAGE_VERSION "${OBS_VERSION_CANONICAL}-${OBS_BUILD_NUMBER}")
  101. set(CPACK_PACKAGE_EXECUTABLES "obs")
  102. if(OS_LINUX AND NOT LINUX_PORTABLE)
  103. set(CPACK_GENERATOR "DEB")
  104. set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
  105. set(CPACK_SET_DESTDIR ON)
  106. set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ON)
  107. elseif(OS_FREEBSD)
  108. option(ENABLE_CPACK_GENERATOR
  109. "Enable FreeBSD CPack generator (experimental)" OFF)
  110. if(ENABLE_CPACK_GENERATOR)
  111. set(CPACK_GENERATOR "FreeBSD")
  112. endif()
  113. set(CPACK_FREEBSD_PACKAGE_DEPS
  114. "audio/fdk-aac"
  115. "audio/jack"
  116. "audio/pulseaudio"
  117. "audio/sndio"
  118. "audio/speexdsp"
  119. "devel/cmake"
  120. "devel/dbus"
  121. "devel/jansson"
  122. "devel/libsysinfo"
  123. "devel/libudev-devd"
  124. "devel/ninja"
  125. "devel/pkgconf"
  126. "devel/qt5-buildtools"
  127. "devel/qt5-core"
  128. "devel/qt5-qmake"
  129. "devel/swig"
  130. "ftp/curl"
  131. "graphics/mesa-libs"
  132. "graphics/qt5-imageformats"
  133. "graphics/qt5-svg"
  134. "lang/lua52"
  135. "lang/luajit"
  136. "lang/python37"
  137. "multimedia/ffmpeg"
  138. "multimedia/libv4l"
  139. "multimedia/libx264"
  140. "multimedia/v4l_compat"
  141. "multimedia/vlc"
  142. "print/freetype2"
  143. "security/mbedtls"
  144. "textproc/qt5-xml"
  145. "x11/xorgproto"
  146. "x11/libICE"
  147. "x11/libSM"
  148. "x11/libX11"
  149. "x11/libxcb"
  150. "x11/libXcomposite"
  151. "x11/libXext"
  152. "x11/libXfixes"
  153. "x11/libXinerama"
  154. "x11/libXrandr"
  155. "x11-fonts/fontconfig"
  156. "x11-toolkits/qt5-gui"
  157. "x11-toolkits/qt5-widgets")
  158. endif()
  159. include(CPack)
  160. endmacro()