181 lines
4.8 KiB
CMake
181 lines
4.8 KiB
CMake
# Enable modern cmake policies
|
|
if(POLICY CMP0011)
|
|
cmake_policy(SET CMP0011 NEW)
|
|
endif()
|
|
|
|
if(POLICY CMP0072)
|
|
cmake_policy(SET CMP0072 NEW)
|
|
endif()
|
|
|
|
if(POLICY CMP0095)
|
|
cmake_policy(SET CMP0095 NEW)
|
|
endif()
|
|
|
|
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND LINUX_PORTABLE)
|
|
set(CMAKE_INSTALL_PREFIX
|
|
"${CMAKE_BINARY_DIR}/install"
|
|
CACHE STRING "Directory to install OBS after building" FORCE)
|
|
endif()
|
|
|
|
macro(setup_obs_project)
|
|
#[[
|
|
POSIX directory setup (portable)
|
|
CMAKE_BINARY_DIR
|
|
└ rundir
|
|
└ CONFIG
|
|
└ bin
|
|
└ ARCH
|
|
└ data
|
|
└ libobs
|
|
└ obs-plugins
|
|
└ PLUGIN
|
|
└ obs-scripting
|
|
└ ARCH
|
|
└ obs-studio
|
|
└ obs-plugins
|
|
└ ARCH
|
|
|
|
POSIX directory setup (non-portable)
|
|
/usr/local/
|
|
└ bin
|
|
└ include
|
|
└ obs
|
|
└ libs
|
|
└ cmake
|
|
└ obs-plugins
|
|
└ obs-scripting
|
|
└ share
|
|
└ obs
|
|
└ libobs
|
|
└ obs-plugins
|
|
└ obs-studio
|
|
]]
|
|
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(_ARCH_SUFFIX 64)
|
|
else()
|
|
set(_ARCH_SUFFIX 32)
|
|
endif()
|
|
|
|
if(NOT OBS_MULTIARCH_SUFFIX AND DEFINED ENV{OBS_MULTIARCH_SUFFIX})
|
|
set(OBS_MULTIARCH_SUFFIX "$ENV{OBS_MULTIARCH_SUFFIX}")
|
|
endif()
|
|
|
|
set(OBS_OUTPUT_DIR "${CMAKE_BINARY_DIR}/rundir")
|
|
|
|
if(NOT LINUX_PORTABLE)
|
|
set(OBS_EXECUTABLE_DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
|
set(OBS_INCLUDE_DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/obs")
|
|
set(OBS_LIBRARY_DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
|
set(OBS_PLUGIN_DESTINATION "${OBS_LIBRARY_DESTINATION}/obs-plugins")
|
|
set(OBS_SCRIPT_PLUGIN_DESTINATION
|
|
"${OBS_LIBRARY_DESTINATION}/obs-scripting")
|
|
set(OBS_DATA_DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/obs")
|
|
set(OBS_CMAKE_DESTINATION "${OBS_LIBRARY_DESTINATION}/cmake")
|
|
|
|
set(OBS_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/")
|
|
set(OBS_DATA_PATH "${OBS_DATA_DESTINATION}")
|
|
|
|
set(OBS_SCRIPT_PLUGIN_PATH
|
|
"${CMAKE_INSTALL_PREFIX}/${OBS_SCRIPT_PLUGIN_DESTINATION}")
|
|
set(CMAKE_INSTALL_RPATH
|
|
"${CMAKE_INSTALL_PREFIX}/${OBS_LIBRARY_DESTINATION}")
|
|
else()
|
|
set(OBS_EXECUTABLE_DESTINATION "bin/${_ARCH_SUFFIX}bit")
|
|
set(OBS_INCLUDE_DESTINATION "include")
|
|
set(OBS_LIBRARY_DESTINATION "bin/${_ARCH_SUFFIX}bit")
|
|
set(OBS_PLUGIN_DESTINATION "obs-plugins/${_ARCH_SUFFIX}bit")
|
|
set(OBS_SCRIPT_PLUGIN_DESTINATION "data/obs-scripting/${_ARCH_SUFFIX}bit")
|
|
set(OBS_DATA_DESTINATION "data")
|
|
set(OBS_CMAKE_DESTINATION "cmake")
|
|
|
|
set(OBS_INSTALL_PREFIX "")
|
|
set(OBS_DATA_PATH "../../${OBS_DATA_DESTINATION}")
|
|
|
|
set(OBS_SCRIPT_PLUGIN_PATH "../../${OBS_SCRIPT_PLUGIN_DESTINATION}")
|
|
set(CMAKE_INSTALL_RPATH
|
|
"$ORIGIN/" "${CMAKE_INSTALL_PREFIX}/${OBS_LIBRARY_DESTINATION}")
|
|
endif()
|
|
|
|
if(BUILD_FOR_PPA)
|
|
set_option(ENABLE_LIBFDK ON)
|
|
set_option(ENABLE_JACK ON)
|
|
set_option(ENABLE_RTMPS ON)
|
|
endif()
|
|
|
|
if(BUILD_FOR_DISTRIBUTION OR DEFINED ENV{CI})
|
|
set_option(ENABLE_RTMPS ON)
|
|
endif()
|
|
|
|
set(CPACK_PACKAGE_NAME "obs-studio")
|
|
set(CPACK_PACKAGE_VENDOR "${OBS_WEBSITE}")
|
|
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${OBS_COMPANY_NAME}")
|
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${OBS_COMMENTS}")
|
|
set(CPACK_RESOURCE_FILE_LICENSE
|
|
"${CMAKE_SOURCE_DIR}/UI/data/license/gplv2.txt")
|
|
set(CPACK_PACKAGE_VERSION "${OBS_VERSION_CANONICAL}-${OBS_BUILD_NUMBER}")
|
|
set(CPACK_STRIP_FILES "bin/obs" "bin/obs-ffmpeg-mux")
|
|
set(CPACK_SOURCE_STRIP_FILES "")
|
|
set(CPACK_PACKAGE_EXECUTABLES "obs")
|
|
|
|
if(OS_LINUX AND NOT LINUX_PORTABLE)
|
|
set(CPACK_GENERATOR "DEB")
|
|
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
|
set(CPACK_SET_DESTDIR ON)
|
|
elseif(OS_FREEBSD)
|
|
option(ENABLE_CPACK_GENERATOR
|
|
"Enable FreeBSD CPack generator (experimental)" OFF)
|
|
|
|
if(ENABLE_CPACK_GENERATOR)
|
|
set(CPACK_GENERATOR "FreeBSD")
|
|
endif()
|
|
|
|
set(CPACK_FREEBSD_PACKAGE_DEPS
|
|
"audio/fdk-aac"
|
|
"audio/jack"
|
|
"audio/pulseaudio"
|
|
"audio/sndio"
|
|
"audio/speexdsp"
|
|
"devel/cmake"
|
|
"devel/dbus"
|
|
"devel/jansson"
|
|
"devel/libsysinfo"
|
|
"devel/libudev-devd"
|
|
"devel/ninja"
|
|
"devel/pkgconf"
|
|
"devel/qt5-buildtools"
|
|
"devel/qt5-core"
|
|
"devel/qt5-qmake"
|
|
"devel/swig"
|
|
"ftp/curl"
|
|
"graphics/mesa-libs"
|
|
"graphics/qt5-imageformats"
|
|
"graphics/qt5-svg"
|
|
"lang/lua52"
|
|
"lang/luajit"
|
|
"lang/python37"
|
|
"multimedia/ffmpeg"
|
|
"multimedia/libv4l"
|
|
"multimedia/libx264"
|
|
"multimedia/v4l_compat"
|
|
"multimedia/vlc"
|
|
"print/freetype2"
|
|
"security/mbedtls"
|
|
"textproc/qt5-xml"
|
|
"x11/xorgproto"
|
|
"x11/libICE"
|
|
"x11/libSM"
|
|
"x11/libX11"
|
|
"x11/libxcb"
|
|
"x11/libXcomposite"
|
|
"x11/libXext"
|
|
"x11/libXfixes"
|
|
"x11/libXinerama"
|
|
"x11/libXrandr"
|
|
"x11-fonts/fontconfig"
|
|
"x11-toolkits/qt5-gui"
|
|
"x11-toolkits/qt5-widgets")
|
|
endif()
|
|
include(CPack)
|
|
endmacro()
|