2020-12-14 16:47:13 +00:00
# StreamFX - The premier VFX plugin for OBS Studio.
# Copyright (C) 2017 - 2020 Michael Fabian Dirks
2018-09-25 23:17:08 +00:00
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
2017-06-28 21:21:42 +00:00
2018-04-24 10:31:43 +00:00
# CMake Setup
2020-12-14 16:47:13 +00:00
cmake_minimum_required ( VERSION 3.8...4.0 )
2017-11-02 23:30:53 +00:00
2021-01-31 14:57:42 +00:00
################################################################################
2020-12-14 16:47:13 +00:00
# Configure Type
2021-01-31 14:57:42 +00:00
################################################################################
# Detect if we are building by ourselves or as part of something else.
if ( "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_LIST_DIR}" )
set ( GROUPED OFF )
set ( PREFIX "" )
else ( )
set ( GROUPED ON )
set ( PREFIX "StreamFX_" )
endif ( )
set ( LOGPREFIX "StreamFX:" )
################################################################################
# Versioning
################################################################################
2019-10-13 03:42:54 +00:00
set ( VERSION_MAJOR 0 )
2021-06-09 01:48:20 +00:00
set ( VERSION_MINOR 11 )
2019-12-22 07:31:00 +00:00
set ( VERSION_PATCH 0 )
2019-10-13 03:42:54 +00:00
set ( VERSION_TWEAK 0 )
2021-10-24 19:57:07 +00:00
set ( VERSION_SUFFIX "a7" )
2021-01-31 14:57:42 +00:00
set ( VERSION_COMMIT "00000000" )
# Check if we are in a git repository.
2019-10-13 03:42:54 +00:00
if ( EXISTS "${CMAKE_CURRENT_LIST_DIR}/.git" )
2021-01-31 14:57:42 +00:00
# Try and figure out where git is.
find_program ( GIT git
P A T H S
/ b i n
/ s b i n
/ u s r / b i n
/ u s r / l o c a l / b i n
2018-09-25 23:17:08 +00:00
)
2021-01-31 14:57:42 +00:00
if ( GIT )
set ( GIT_RESULT )
set ( GIT_OUTPUT )
set ( GIT_ERROR )
execute_process (
2021-02-06 15:24:43 +00:00
C O M M A N D " $ { G I T } " d e s c r i b e - - t a g s - - l o n g - - m a t c h " [ 0 - 9 ] * . [ 0 - 9 ] * . [ 0 - 9 ] * " - - a b b r e v = 8 H E A D
2021-01-31 14:57:42 +00:00
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ C U R R E N T _ L I S T _ D I R }
R E S U L T _ V A R I A B L E G I T _ R E S U L T
O U T P U T _ V A R I A B L E G I T _ O U T P U T
E R R O R _ V A R I A B L E G I T _ E R R O R
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E
E R R O R _ S T R I P _ T R A I L I N G _ W H I T E S P A C E
E R R O R _ Q U I E T
)
if ( GIT_RESULT EQUAL 0 )
string ( REPLACE "-" "." GIT_OUTPUT "${GIT_OUTPUT}" )
string ( REPLACE "." ";" GIT_OUTPUT "${GIT_OUTPUT}" )
# Parse Version
list ( GET GIT_OUTPUT 0 VERSION_MAJOR )
list ( GET GIT_OUTPUT 1 VERSION_MINOR )
list ( GET GIT_OUTPUT 2 VERSION_PATCH )
2021-03-23 19:41:20 +00:00
list ( GET GIT_OUTPUT 3 VERSION_TWEAK )
2021-01-31 14:57:42 +00:00
list ( GET GIT_OUTPUT 4 VERSION_COMMIT )
# Patch needs additional parsing.
# This may be a [0-9]*[a-z]*[0-9]+ string.
2021-03-23 19:41:20 +00:00
string ( REGEX MATCHALL "^([0-9]+)([a-z]+[0-9]+)?" T_MATCHES "${VERSION_PATCH}" )
2021-01-31 14:57:42 +00:00
set ( VERSION_PATCH "${CMAKE_MATCH_1}" )
if ( CMAKE_MATCH_2 )
set ( VERSION_SUFFIX "${CMAKE_MATCH_2}" )
2021-01-31 16:21:52 +00:00
else ( )
set ( VERSION_SUFFIX "" )
2021-01-31 14:57:42 +00:00
endif ( )
else ( )
message ( WARNING "${LOGPREFIX} Failed to detect version, using default instead." )
endif ( )
2019-10-13 03:42:54 +00:00
endif ( )
2021-03-23 19:41:20 +00:00
else ( )
message ( STATUS "${LOGPREFIX} Not a git repository, automatic version detection disabled." )
2019-10-13 03:42:54 +00:00
endif ( )
2021-01-31 14:57:42 +00:00
# Allow manual overrides of the detected version.
2021-01-31 16:21:52 +00:00
set ( ${ PREFIX } VERSION "" CACHE STRING "Override StreamFX version with this string. Format: Major.Minor.Patch[Suffix][-Tweak[-Commit8c]]" )
2021-03-23 19:41:20 +00:00
if ( NOT ( ${ PREFIX } VERSION STREQUAL "" ) )
2021-01-31 14:57:42 +00:00
string ( REPLACE "-" "." T_VERSION "${${PREFIX}VERSION}" )
2021-01-31 16:21:52 +00:00
string ( REPLACE "." ";" T_VERSION "${${PREFIX}VERSION}" )
list ( LENGTH T_VERSION T_VERSIONLEN )
list ( GET T_VERSION 0 VERSION_MAJOR )
list ( GET T_VERSION 1 VERSION_MINOR )
list ( GET T_VERSION 2 VERSION_PATCH )
if ( T_VERSIONLEN GREATER_EQUAL 3 )
2021-03-23 19:41:20 +00:00
list ( GET T_VERSION 3 VERSION_TWEAK )
2021-01-31 16:21:52 +00:00
else ( )
set ( VERSION_BUILD 0 )
endif ( )
if ( T_VERSIONLEN GREATER_EQUAL 4 )
list ( GET T_VERSION 4 VERSION_COMMIT )
else ( )
2021-03-23 19:41:20 +00:00
set ( VERSION_COMMIT "" )
2021-01-31 16:21:52 +00:00
endif ( )
# Patch needs additional parsing.
# This may be a [0-9]*[a-z]*[0-9]+ string.
2021-03-23 19:41:20 +00:00
string ( REGEX MATCHALL "^([0-9]+)([a-z]+[0-9]+)?" T_MATCHES "${VERSION_PATCH}" )
2021-01-31 16:21:52 +00:00
set ( VERSION_PATCH "${CMAKE_MATCH_1}" )
if ( CMAKE_MATCH_2 )
set ( VERSION_SUFFIX "${CMAKE_MATCH_2}" )
else ( )
set ( VERSION_SUFFIX "" )
endif ( )
2021-01-31 14:57:42 +00:00
endif ( )
# Generate Version String
2021-03-23 19:41:20 +00:00
if ( NOT ( VERSION_COMMIT STREQUAL "" ) )
2020-09-28 00:02:46 +00:00
set ( VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_TWEAK}${VERSION_SUFFIX}-${VERSION_COMMIT}" )
2020-04-22 20:49:09 +00:00
else ( )
set ( VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_TWEAK}${VERSION_SUFFIX}" )
endif ( )
2018-04-24 10:31:43 +00:00
2021-01-31 14:57:42 +00:00
# Log the detected version.
message ( STATUS "${LOGPREFIX} Version ${VERSION_STRING}" )
################################################################################
# Project
################################################################################
2019-12-21 16:03:00 +00:00
project (
2019-12-22 05:26:28 +00:00
S t r e a m F X
2018-09-25 23:17:08 +00:00
V E R S I O N $ { V E R S I O N _ M A J O R } . $ { V E R S I O N _ M I N O R } . $ { V E R S I O N _ P A T C H } . $ { V E R S I O N _ T W E A K }
2020-12-14 16:47:13 +00:00
D E S C R I P T I O N " A d d i t i o n a l s o u r c e s , f i l t e r s , t r a n s i t i o n s a n d e n c o d e r s f o r O B S S t u d i o . "
H O M E P A G E _ U R L " h t t p s : / / s t r e a m f x . x a y m a r . c o m / "
2018-09-25 23:17:08 +00:00
)
2021-01-31 14:57:42 +00:00
2020-12-14 16:47:13 +00:00
# Full Project Name
set ( PROJECT_FULL_NAME "StreamFX (for OBS Studio)" )
# Description
2020-01-13 00:52:30 +00:00
set ( PROJECT_DESCRIPTION "Better Production Quality, for free." )
2020-12-14 16:47:13 +00:00
# Authors (TODO: Generate this from AUTHORS)
2018-12-23 19:49:18 +00:00
set ( PROJECT_AUTHORS "Michael Fabian 'Xaymar' Dirks <info@xaymar.com>" )
2020-12-14 16:47:13 +00:00
# Copyright Years (TODO: Update every year)
2020-01-13 00:52:30 +00:00
set ( PROJECT_COPYRIGHT_YEARS "2018 - 2020" )
2017-06-28 21:21:42 +00:00
2020-12-14 16:47:13 +00:00
# Versioning
set ( PROJECT_VERSION_STRING ${ VERSION_STRING } )
2017-11-02 23:30:53 +00:00
################################################################################
2020-12-14 16:47:13 +00:00
# Modules
2017-11-02 23:30:53 +00:00
################################################################################
2020-12-14 16:47:13 +00:00
# Search Paths
2021-03-22 21:14:19 +00:00
set ( CMAKE_MODULE_PATH
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e / c l a n g "
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e / m o d u l e s "
2020-12-14 16:47:13 +00:00
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e "
)
2020-07-27 06:22:07 +00:00
2020-12-14 16:47:13 +00:00
# Include
include ( "Architecture" ) # Architecture Detection
include ( "util" ) # CacheClear, CacheSet
include ( "DownloadProject" ) # DownloadProject
2019-12-21 16:03:00 +00:00
2020-12-14 16:47:13 +00:00
################################################################################
# Platform Setup
################################################################################
# Operating System
2020-09-28 19:08:07 +00:00
if ( CMAKE_SYSTEM_NAME STREQUAL "Windows" )
2020-12-14 16:47:13 +00:00
set ( D_PLATFORM_OS "windows" )
2020-09-28 19:08:07 +00:00
set ( D_PLATFORM_WINDOWS 1 )
elseif ( CMAKE_SYSTEM_NAME STREQUAL "Linux" )
2020-12-14 16:47:13 +00:00
set ( D_PLATFORM_OS "linux" )
2020-09-28 19:08:07 +00:00
set ( D_PLATFORM_LINUX 1 )
2020-10-06 09:28:23 +00:00
elseif ( CMAKE_SYSTEM_NAME STREQUAL "Darwin" )
2020-12-14 16:47:13 +00:00
set ( D_PLATFORM_OS "macos" )
2020-09-28 19:08:07 +00:00
set ( D_PLATFORM_MAC 1 )
else ( )
2020-12-14 16:47:13 +00:00
set ( D_PLATFORM_OS "unknown" )
set ( D_PLATFORM_UNKNOWN 1 )
message ( WARNING "${LOGPREFIX} The operating system '${CMAKE_SYSTEM_NAME}' is unknown to to this script, continue at your own risk." )
2018-12-23 19:49:18 +00:00
endif ( )
2017-11-02 23:30:53 +00:00
2020-12-14 16:47:13 +00:00
# Architecture
set ( D_PLATFORM_INSTR ${ ARCH_INST } )
if ( ARCH_INST STREQUAL "x86" )
set ( D_PLATFORM_INSTR_X86 ON )
2021-03-23 16:53:21 +00:00
set ( D_PLATFORM_ARCH_X86 ON )
2020-12-14 16:47:13 +00:00
elseif ( ARCH_INST STREQUAL "ARM" )
set ( D_PLATFORM_INSTR_ARM ON )
2021-03-23 16:53:21 +00:00
set ( D_PLATFORM_ARCH_ARM ON )
2020-12-14 16:47:13 +00:00
elseif ( ARCH_INST STREQUAL "IA64" )
set ( D_PLATFORM_INSTR_ITANIUM ON )
2021-03-23 16:53:21 +00:00
set ( D_PLATFORM_ARCH_ITANIUM ON )
2020-12-14 16:47:13 +00:00
endif ( )
2021-03-23 16:53:21 +00:00
set ( D_PLATFORM_ARCH ${ ARCH_INST } )
2020-12-14 16:47:13 +00:00
# Bitness
set ( D_PLATFORM_BITS ${ ARCH_BITS } )
set ( D_PLATFORM_BITS_PTR ${ ARCH_BITS_POINTER } )
2020-09-28 00:07:53 +00:00
################################################################################
# C/C++ Compiler Adjustments
################################################################################
if ( CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR ( WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) )
message ( STATUS "Applying custom flags for MSVC style build." )
# MSVC/ClangCL
# - Dynamically link Microsoft C/C++ Redistributable.
# - Enable /W3 and disable useless warnings.
# - Enable C++ exceptions with SEH exceptions.
# - Enable multi-processor compiling.
2020-09-28 19:08:07 +00:00
# Build with dynamic MSVC linkage.
2021-09-07 00:58:17 +00:00
add_compile_options (
$ < $ < C O N F I G : > : / M D >
$ < $ < C O N F I G : D e b u g > : / M D d >
$ < $ < C O N F I G : R e l e a s e > : / M D >
$ < $ < C O N F I G : R e l W i t h D e b I n f o > : / M D >
$ < $ < C O N F I G : M i n S i z e R e l > : / M D >
)
2020-09-28 19:08:07 +00:00
2020-09-28 00:07:53 +00:00
# Enable most useful warnings.
2021-03-22 21:14:19 +00:00
set ( DISABLED_WARNINGS
2020-09-28 00:07:53 +00:00
" / w d 4 0 6 1 " " / w d 4 1 0 0 " " / w d 4 1 8 0 " " / w d 4 2 0 1 " " / w d 4 4 6 4 " " / w d 4 5 0 5 " " / w d 4 5 1 4 "
" / w d 4 5 7 1 " " / w d 4 6 2 3 " " / w d 4 6 2 5 " " / w d 4 6 2 6 " " / w d 4 6 6 8 " " / w d 4 7 1 0 " " / w d 4 7 7 4 "
" / w d 4 8 2 0 " " / w d 5 0 2 6 " " / w d 5 0 2 7 " " / w d 5 0 3 9 " " / w d 5 0 4 5 " " / w d 2 6 8 1 2 "
)
add_compile_options ( "/W3" )
foreach ( WARN ${ DISABLED_WARNINGS } )
add_compile_options ( "${WARN}" )
endforeach ( )
# C++ Exceptions & SEH
add_compile_options ( "/EHa" )
# Multiprocessor compiling
add_compile_options ( "/MP" )
elseif ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
message ( STATUS "Applying custom flags for GNU style build." )
2021-03-22 21:14:19 +00:00
2020-09-28 00:07:53 +00:00
# Clang/AppleClang/GNU
2020-11-05 19:12:57 +00:00
# - Don't export by default. (Temporarily disabled)
2020-09-28 00:07:53 +00:00
# - Enable all and extra warnings.
2021-03-22 21:14:19 +00:00
2020-09-28 00:07:53 +00:00
add_compile_options ( "-Wall" )
add_compile_options ( "-Wextra" )
2020-11-05 19:12:57 +00:00
# add_compile_options("-fvisibility=hidden")
2019-09-04 01:32:18 +00:00
endif ( )
2018-12-23 19:49:18 +00:00
################################################################################
2020-12-14 16:47:13 +00:00
# Detect if we are building with OBS Studio (different from Grouped builds)
2019-12-22 05:26:28 +00:00
################################################################################
2020-12-14 16:47:13 +00:00
set ( STANDALONE ON )
if ( GROUPED AND ( TARGET libobs ) )
set ( STANDALONE OFF )
endif ( )
if ( STANDALONE )
message ( STATUS "${LOGPREFIX} This is a standalone build, please make sure you've followed the instructions." )
set ( ${ PREFIX } OBS_NATIVE OFF )
2020-01-13 00:52:30 +00:00
else ( )
2020-12-14 16:47:13 +00:00
message ( STATUS "${LOGPREFIX} This is a combined build." )
set ( ${ PREFIX } OBS_NATIVE ON )
2020-09-28 19:08:07 +00:00
endif ( )
2019-12-22 05:26:28 +00:00
2020-09-28 19:08:07 +00:00
################################################################################
# Options
################################################################################
2020-03-16 19:37:31 +00:00
# Features
2020-04-25 23:04:04 +00:00
## Encoders
2020-12-14 16:47:13 +00:00
set ( ${ PREFIX } ENABLE_ENCODER_FFMPEG ON CACHE BOOL "Enable FFmpeg Encoder integration." )
set ( ${ PREFIX } ENABLE_ENCODER_FFMPEG_AMF ON CACHE BOOL "Enable AMF Encoder in FFmpeg." )
set ( ${ PREFIX } ENABLE_ENCODER_FFMPEG_NVENC ON CACHE BOOL "Enable NVENC Encoder in FFmpeg." )
set ( ${ PREFIX } ENABLE_ENCODER_FFMPEG_PRORES ON CACHE BOOL "Enable ProRes Encoder in FFmpeg." )
2021-08-28 12:36:42 +00:00
set ( ${ PREFIX } ENABLE_ENCODER_AOM_AV1 ON CACHE BOOL "Enable AOM AV1 Encoder." )
2020-09-28 19:08:07 +00:00
2020-04-25 23:04:04 +00:00
## Filters
2020-12-14 16:47:13 +00:00
set ( ${ PREFIX } ENABLE_FILTER_BLUR ON CACHE BOOL "Enable Blur Filter" )
set ( ${ PREFIX } ENABLE_FILTER_COLOR_GRADE ON CACHE BOOL "Enable Color Grade Filter" )
2021-05-01 16:31:13 +00:00
set ( ${ PREFIX } ENABLE_FILTER_DENOISING ON CACHE BOOL "Enable Denoising filter" )
set ( ${ PREFIX } ENABLE_FILTER_DENOISING_NVIDIA ON CACHE BOOL "Enable NVIDIA provider(s) for Denoising Filter" )
2020-12-14 16:47:13 +00:00
set ( ${ PREFIX } ENABLE_FILTER_DISPLACEMENT ON CACHE BOOL "Enable Displacement Filter" )
set ( ${ PREFIX } ENABLE_FILTER_DYNAMIC_MASK ON CACHE BOOL "Enable Dynamic Mask Filter" )
2021-06-04 02:59:47 +00:00
set ( ${ PREFIX } ENABLE_FILTER_NVIDIA_FACE_TRACKING ON CACHE BOOL "Enable NVIDIA Face Tracking Filter" )
2020-12-14 16:47:13 +00:00
set ( ${ PREFIX } ENABLE_FILTER_SDF_EFFECTS ON CACHE BOOL "Enable SDF Effects Filter" )
set ( ${ PREFIX } ENABLE_FILTER_SHADER ON CACHE BOOL "Enable Shader Filter" )
set ( ${ PREFIX } ENABLE_FILTER_TRANSFORM ON CACHE BOOL "Enable Transform Filter" )
2021-09-27 22:16:21 +00:00
set ( ${ PREFIX } ENABLE_FILTER_UPSCALING ON CACHE BOOL "Enable Upscaling Filter" )
set ( ${ PREFIX } ENABLE_FILTER_UPSCALING_NVIDIA ON CACHE BOOL "Enable NVIDIA provider(s) for Upscaling Filter" )
2021-10-23 18:05:36 +00:00
set ( ${ PREFIX } ENABLE_FILTER_VIRTUAL_GREENSCREEN ON CACHE BOOL "Enable Virtual Greenscreen Filter" )
set ( ${ PREFIX } ENABLE_FILTER_VIRTUAL_GREENSCREEN_NVIDIA ON CACHE BOOL "Enable NVIDIA provider(s) for Virtual Greenscreen Filter" )
2020-09-28 19:08:07 +00:00
2020-04-25 23:04:04 +00:00
## Sources
2020-12-14 16:47:13 +00:00
set ( ${ PREFIX } ENABLE_SOURCE_MIRROR ON CACHE BOOL "Enable Mirror Source" )
set ( ${ PREFIX } ENABLE_SOURCE_SHADER ON CACHE BOOL "Enable Shader Source" )
2020-09-28 19:08:07 +00:00
2020-04-25 23:04:04 +00:00
## Transitions
2020-12-14 16:47:13 +00:00
set ( ${ PREFIX } ENABLE_TRANSITION_SHADER ON CACHE BOOL "Enable Shader Transition" )
2020-09-28 19:08:07 +00:00
2020-12-14 16:47:13 +00:00
## FrontEnd & UI
set ( ${ PREFIX } ENABLE_FRONTEND ON CACHE BOOL "Enable Frontend code." )
set ( ${ PREFIX } ENABLE_UPDATER ON CACHE BOOL "Enable automatic update checks." )
2020-09-28 19:08:07 +00:00
2020-05-31 14:50:59 +00:00
## Code Related
2020-12-14 16:47:13 +00:00
set ( ${ PREFIX } ENABLE_CLANG ON CACHE BOOL "Enable Clang integration for supported compilers." )
set ( ${ PREFIX } ENABLE_PROFILING OFF CACHE BOOL "Enable CPU and GPU performance tracking, which has a non-zero overhead at all times. Do not enable this for release builds." )
2021-01-31 21:05:23 +00:00
# Installation / Packaging
if ( STANDALONE )
set ( STRUCTURE_UNIFIED CACHE BOOL "Install for use in a Plugin Manager" )
if ( D_PLATFORM_LINUX )
set ( STRUCTURE_PACKAGEMANAGER CACHE BOOL "Install for use in a Package Manager (system-wide installation)" )
endif ( )
set ( PACKAGE_PREFIX "${CMAKE_BINARY_DIR}" CACHE PATH "Where to place the packages?" )
2021-03-23 16:53:21 +00:00
set ( PACKAGE_NAME "${PROJECT_NAME}" CACHE STRING "What should the package be called?" )
2021-01-31 21:05:23 +00:00
set ( PACKAGE_SUFFIX "" CACHE STRING "Any suffix for the package name? (Defaults to the current version string)" )
endif ( )
2020-12-14 16:47:13 +00:00
################################################################################
# Clang
################################################################################
2020-03-16 19:37:31 +00:00
2020-12-14 16:47:13 +00:00
if ( ${ PREFIX } ENABLE_CLANG AND ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/clang/Clang.cmake" ) )
include ( "Clang" )
set ( HAVE_CLANG ON )
endif ( )
2020-06-14 02:34:05 +00:00
2020-12-14 16:47:13 +00:00
################################################################################
# Standalone Build: OBS Studio
################################################################################
if ( NOT ${ PREFIX } OBS_NATIVE )
# Options
2021-03-23 16:53:21 +00:00
set ( ${ PREFIX } DOWNLOAD_OBS_URL "" CACHE STRING "(Optional) URL of prebuilt libOBS archive to download." )
set ( ${ PREFIX } DOWNLOAD_OBS_HASH "" CACHE STRING "(Optional) The hash for the libOBS archive." )
2020-11-02 15:52:02 +00:00
mark_as_advanced (
2021-03-23 16:53:21 +00:00
$ { P R E F I X } D O W N L O A D _ O B S _ U R L
$ { P R E F I X } D O W N L O A D _ O B S _ H A S H
2020-11-02 15:52:02 +00:00
)
2020-12-14 16:47:13 +00:00
# Allow overriding what version we build against.
2021-03-23 16:53:21 +00:00
if ( ${ PREFIX } DOWNLOAD_OBS_URL )
set ( _DOWNLOAD_OBS_URL "${${PREFIX}DOWNLOAD_OBS_URL}" )
set ( _DOWNLOAD_OBS_HASH "${${PREFIX}DOWNLOAD_OBS_HASH}" )
2020-11-02 15:52:02 +00:00
else ( )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_OBS_VERSION "27.0.0-ci" )
2021-03-23 16:53:21 +00:00
if ( D_PLATFORM_WINDOWS )
if ( D_PLATFORM_ARCH_X86 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_OBS_URL "https://github.com/Xaymar/obs-studio/releases/download/${_DOWNLOAD_OBS_VERSION}/obs-studio-x64-0.0.0.0-windows-${D_PLATFORM_ARCH}-${D_PLATFORM_BITS}.7z" )
2021-03-23 16:53:21 +00:00
if ( D_PLATFORM_BITS EQUAL 64 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_OBS_HASH "SHA256=EBF9853C8A553E16ECBCA22523F401E6CF1EB2E8DA93F1493FEF41D65BD06633" )
2021-03-23 16:53:21 +00:00
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
2020-11-02 15:52:02 +00:00
elseif ( D_PLATFORM_LINUX )
2021-03-23 16:53:21 +00:00
if ( D_PLATFORM_ARCH_X86 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_OBS_URL "https://github.com/Xaymar/obs-studio/releases/download/${_DOWNLOAD_OBS_VERSION}/obs-studio-x64-0.0.0.0-ubuntu-${D_PLATFORM_ARCH}-${D_PLATFORM_BITS}.7z" )
2021-03-23 16:53:21 +00:00
if ( D_PLATFORM_BITS EQUAL 64 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_OBS_HASH "SHA256=0AF6C7262C37D80C24CB18523A851FD765C04E766D8EB0F4AC0F6E75D13A035F" )
2021-03-23 16:53:21 +00:00
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
2020-11-02 15:52:02 +00:00
elseif ( D_PLATFORM_MAC )
2021-03-23 16:53:21 +00:00
if ( D_PLATFORM_ARCH_X86 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_OBS_URL "https://github.com/Xaymar/obs-studio/releases/download/${_DOWNLOAD_OBS_VERSION}/obs-studio-x64-0.0.0.0-macos-${D_PLATFORM_ARCH}-${D_PLATFORM_BITS}.7z" )
2021-03-23 16:53:21 +00:00
if ( D_PLATFORM_BITS EQUAL 64 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_OBS_HASH "SHA256=F15BC4CA8EB3F581A94372759CFE554E30D202B604B541445A5756B878E4E799" )
2021-03-23 16:53:21 +00:00
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
2020-11-02 15:52:02 +00:00
else ( )
2021-03-23 16:53:21 +00:00
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
2020-11-02 15:52:02 +00:00
return ( )
endif ( )
endif ( )
2020-12-14 16:47:13 +00:00
# Download libOBS
2020-09-28 19:08:07 +00:00
download_project (
P R O J l i b o b s
2021-03-23 16:53:21 +00:00
U R L " $ { _ D O W N L O A D _ O B S _ U R L } "
U R L _ H A S H " $ { _ D O W N L O A D _ O B S _ H A S H } "
2020-09-28 19:08:07 +00:00
D O W N L O A D _ N O _ P R O G R E S S O F F
U P D A T E _ D I S C O N N E C T E D O F F
)
2020-11-01 13:05:53 +00:00
2020-12-14 16:47:13 +00:00
include ( "${libobs_SOURCE_DIR}/cmake/LibObs/LibObsConfig.cmake" )
2021-03-23 16:53:21 +00:00
endif ( )
2020-12-14 16:47:13 +00:00
2021-03-23 16:53:21 +00:00
################################################################################
# Standalone Build: OBS Studio Dependencies
################################################################################
2020-12-14 16:47:13 +00:00
2021-03-23 16:53:21 +00:00
if ( STANDALONE AND NOT D_PLATFORM_LINUX )
# Options
set ( ${ PREFIX } DOWNLOAD_OBSDEPS_URL "" CACHE STRING "(Optional) URL of prebuilt libOBS archive to download." )
set ( ${ PREFIX } DOWNLOAD_OBSDEPS_HASH "" CACHE STRING "(Optional) The hash for the libOBS archive." )
mark_as_advanced (
$ { P R E F I X } D O W N L O A D _ O B S D E P S _ U R L
$ { P R E F I X } D O W N L O A D _ O B S D E P S _ H A S H
)
# Allow overriding what version we build against.
if ( ${ PREFIX } DOWNLOAD_OBSDEPS_URL )
set ( _DOWNLOAD_OBSDEPS_URL "${${PREFIX}DOWNLOAD_OBSDEPS_URL}" )
set ( _DOWNLOAD_OBSDEPS_HASH "${${PREFIX}DOWNLOAD_OBSDEPS_HASH}" )
else ( )
if ( D_PLATFORM_WINDOWS )
if ( D_PLATFORM_ARCH_X86 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_OBSDEPS_URL "https://github.com/Xaymar/obs-studio/releases/download/27.0.0/deps-windows-x86.7z" )
2021-03-23 16:53:21 +00:00
if ( D_PLATFORM_BITS EQUAL 64 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_OBSDEPS_HASH "SHA256=B4AED165016F0B64A7E8B256CCC12EAF8AF087F61B0B239B9D3D00277485B5B5" )
2021-03-23 16:53:21 +00:00
elseif ( D_PLATFORM_BITS EQUAL 32 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_OBSDEPS_HASH "SHA256=B4AED165016F0B64A7E8B256CCC12EAF8AF087F61B0B239B9D3D00277485B5B5" )
2021-03-23 16:53:21 +00:00
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
elseif ( D_PLATFORM_MAC )
if ( D_PLATFORM_ARCH_X86 )
if ( D_PLATFORM_BITS EQUAL 64 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_OBSDEPS_URL "https://github.com/Xaymar/obs-studio/releases/download/27.0.0/deps-macos-x86_64-2021-03-25.tar.gz" )
2021-05-01 16:31:13 +00:00
set ( _DOWNLOAD_OBSDEPS_HASH "SHA256=1C409374BCAB9D5CEEAFC121AA327E13AB222096718AF62F2648302DF62898D6" )
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
elseif ( D_PLATFORM_ARCH_ARM )
if ( D_PLATFORM_BITS EQUAL 64 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_OBSDEPS_URL "https://github.com/Xaymar/obs-studio/releases/download/27.0.0/deps-macos-arm64-2021-03-25.tar.gz" )
2021-05-01 16:31:13 +00:00
set ( _DOWNLOAD_OBSDEPS_HASH "SHA256=C0EC57D360AF190E372D6BB883134FA26B1A7E49840DD146B172B48D548B55BC" )
2021-03-23 16:53:21 +00:00
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
2020-12-14 16:47:13 +00:00
else ( )
2021-03-23 16:53:21 +00:00
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
2020-12-14 16:47:13 +00:00
endif ( )
2021-03-23 16:53:21 +00:00
endif ( )
2021-03-22 21:14:19 +00:00
2021-03-23 16:53:21 +00:00
# Download libOBS
download_project (
P R O J o b s d e p s
U R L " $ { _ D O W N L O A D _ O B S D E P S _ U R L } "
U R L _ H A S H " $ { _ D O W N L O A D _ O B S D E P S _ H A S H } "
D O W N L O A D _ N O _ P R O G R E S S O F F
U P D A T E _ D I S C O N N E C T E D O F F
)
if ( D_PLATFORM_WINDOWS )
set ( _OBSDEPS_PATH "${obsdeps_SOURCE_DIR}/win${D_PLATFORM_BITS}" )
elseif ( D_PLATFORM_MAC )
set ( _OBSDEPS_PATH "${obsdeps_SOURCE_DIR}/obsdeps" )
2020-09-28 19:08:07 +00:00
endif ( )
2020-12-14 16:47:13 +00:00
endif ( )
2020-09-28 19:08:07 +00:00
2020-12-14 16:47:13 +00:00
################################################################################
# Standalone Build: Qt v5.x
################################################################################
2021-03-23 16:53:21 +00:00
if ( STANDALONE AND NOT D_PLATFORM_LINUX )
2020-12-14 16:47:13 +00:00
set ( ${ PREFIX } DOWNLOAD_QT OFF CACHE BOOL "Download Qt?" )
if ( ${ PREFIX } DOWNLOAD_QT )
2021-03-23 16:53:21 +00:00
set ( ${ PREFIX } DOWNLOAD_QT_URL "" CACHE STRING "" )
2020-12-14 16:47:13 +00:00
set ( ${ PREFIX } DOWNLOAD_QT_HASH "" CACHE STRING "" )
mark_as_advanced (
2021-03-23 16:53:21 +00:00
$ { P R E F I X } D O W N L O A D _ Q T _ U R L
$ { P R E F I X } D O W N L O A D _ Q T _ H A S H
2020-12-14 16:47:13 +00:00
)
2021-03-22 21:14:19 +00:00
2021-03-23 16:53:21 +00:00
# Allow overriding what version we build against.
if ( ${ PREFIX } DOWNLOAD_QT_URL )
set ( _DOWNLOAD_QT_URL "${${PREFIX}DOWNLOAD_QT_URL}" )
set ( _DOWNLOAD_QT_HASH "${${PREFIX}DOWNLOAD_QT_HASH}" )
else ( )
if ( D_PLATFORM_WINDOWS )
if ( D_PLATFORM_ARCH_X86 )
if ( D_PLATFORM_BITS EQUAL 64 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_QT_URL "https://github.com/Xaymar/obs-studio/releases/download/27.0.0/qt-5.15.2-windows-x86-64.7z" )
2021-03-23 16:53:21 +00:00
set ( _DOWNLOAD_QT_HASH "SHA256=109B9C21EF165B0C46DFAA9AD23124F2070ED4D74207C4AFB308183CB8D43BDD" )
elseif ( D_PLATFORM_BITS EQUAL 32 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_QT_URL "https://github.com/Xaymar/obs-studio/releases/download/27.0.0/qt-5.15.2-windows-x86-32.7z" )
2021-03-23 16:53:21 +00:00
set ( _DOWNLOAD_QT_HASH "SHA256=372E4FBF2A15DD4FDA955A07334D8B8AC6802990148C9CB4E766C90205F8F570" )
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
elseif ( D_PLATFORM_MAC )
if ( D_PLATFORM_ARCH_X86 )
if ( D_PLATFORM_BITS EQUAL 64 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_QT_URL "https://github.com/Xaymar/obs-studio/releases/download/27.0.0/qt-5.15.2-macos-x86_64-2021-03-25.tar.gz" )
2021-05-01 16:31:13 +00:00
set ( _DOWNLOAD_QT_HASH "SHA256=FFABB54624B931EA3FCC06BED244895F50CEFC95DE09D792D280C46D4F91D4C5" )
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
elseif ( D_PLATFORM_ARCH_ARM )
if ( D_PLATFORM_BITS EQUAL 64 )
2021-06-02 13:16:40 +00:00
set ( _DOWNLOAD_QT_URL "https://github.com/Xaymar/obs-studio/releases/download/27.0.0/qt-5.15.2-macos-arm64-2021-03-25.tar.gz" )
2021-05-01 16:31:13 +00:00
set ( _DOWNLOAD_QT_HASH "SHA256=366BA8AC0FA0CAC440AFB9ED1C2EF5932E50091DC43BDE8B5C4B490082B6F19F" )
2021-03-23 16:53:21 +00:00
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
else ( )
message ( FATAL_ERROR "${LOGPREFIX} Platform '${D_PLATFORM_OS}' with architecture '${D_PLATFORM_ARCH}' and bitness '${D_PLATFORM_BITS}' is not supported." )
return ( )
endif ( )
endif ( )
2020-12-14 16:47:13 +00:00
download_project (
P R O J q t
2021-03-23 16:53:21 +00:00
U R L " $ { _ D O W N L O A D _ Q T _ U R L } "
2020-12-14 16:47:13 +00:00
U R L _ H A S H " $ { _ D O W N L O A D _ Q T _ H A S H } "
2021-03-23 16:53:21 +00:00
D O W N L O A D _ N O _ P R O G R E S S O F F
U P D A T E _ D I S C O N N E C T E D O F F
2020-12-14 16:47:13 +00:00
)
set ( Qt5_DIR "${qt_SOURCE_DIR}" CACHE STRING "Path to Qt5" )
2021-03-23 16:53:21 +00:00
if ( D_PLATFORM_WINDOWS )
if ( D_PLATFORM_ARCH_X86 )
if ( D_PLATFORM_BITS EQUAL 64 )
CacheSet ( Qt5_DIR "${qt_SOURCE_DIR}/lib/cmake/Qt5" )
elseif ( D_PLATFORM_BITS EQUAL 32 )
CacheSet ( Qt5_DIR "${qt_SOURCE_DIR}/lib/cmake/Qt5" )
endif ( )
endif ( )
elseif ( D_PLATFORM_MAC )
CacheSet ( Qt5_DIR "${qt_SOURCE_DIR}/lib/cmake/Qt5" )
2020-12-14 16:47:13 +00:00
endif ( )
endif ( )
2018-12-23 19:49:18 +00:00
endif ( )
2018-04-24 10:31:43 +00:00
2020-12-14 16:47:13 +00:00
################################################################################
# Components
################################################################################
# Component resolving:
# 1. Check which features are enabled. For each feature, set what they require to ON.
# 2. Try and find required items.
# 3. Again check which features are enabled, if their requirements are missing, warn about it and disable them.
# TODO: Consider making this an error instead.
2021-10-23 19:03:42 +00:00
macro ( is_feature_enabled FEATURE OUTPUT )
2020-12-14 16:47:13 +00:00
set ( T_ENABLED ${ ${PREFIX } ENABLE_ ${ FEATURE } } )
set ( T_DISABLED ${ ${PREFIX } DISABLE_ ${ FEATURE } } )
if ( T_ENABLED AND NOT T_DISABLED )
2021-10-23 19:03:42 +00:00
set ( ${ OUTPUT } ON )
2020-12-14 16:47:13 +00:00
else ( )
2021-10-23 19:03:42 +00:00
# set(${PREFIX}DISABLE_${FEATURE} ON CACHE INTERNAL "" FORCE)
set ( ${ OUTPUT } OFF )
2020-12-14 16:47:13 +00:00
endif ( )
2021-10-23 19:03:42 +00:00
endmacro ( )
2020-12-14 16:47:13 +00:00
2021-02-14 12:15:22 +00:00
macro ( set_feature_disabled FEATURE DISABLED )
2021-10-23 19:03:42 +00:00
set ( ${ PREFIX } DISABLE_ ${ FEATURE } ${ DISABLED } CACHE INTERNAL "" FORCE )
2021-02-14 12:15:22 +00:00
endmacro ( )
2020-12-14 16:47:13 +00:00
# Features
function ( feature_encoder_ffmpeg RESOLVE )
is_feature_enabled ( ENCODER_FFMPEG T_CHECK )
if ( RESOLVE AND T_CHECK )
if ( NOT HAVE_FFMPEG )
message ( WARNING "${LOGPREFIX}: FFmpeg Encoder requires FFmpeg. Disabling..." )
set_feature_disabled ( ENCODER_FFMPEG ON )
else ( )
# AMF
is_feature_enabled ( ENCODER_FFMPEG_AMF T_CHECK )
if ( T_CHECK AND D_PLATFORM_MAC )
message ( WARNING "${LOGPREFIX}: FFmpeg Encoder 'AMF' requires Windows or Linux. Disabling..." )
set_feature_disabled ( ENCODER_FFMPEG_AMF ON )
endif ( )
# NVENC
is_feature_enabled ( ENCODER_FFMPEG_NVENC T_CHECK )
if ( T_CHECK AND D_PLATFORM_MAC )
message ( WARNING "${LOGPREFIX}: FFmpeg Encoder 'NVENC' requires Windows or Linux. Disabling..." )
set_feature_disabled ( ENCODER_FFMPEG_NVENC ON )
endif ( )
# ProRes
is_feature_enabled ( ENCODER_FFMPEG_PRORES T_CHECK )
endif ( )
elseif ( T_CHECK )
set ( REQUIRE_FFMPEG ON PARENT_SCOPE )
endif ( )
endfunction ( )
2021-08-28 12:36:42 +00:00
function ( feature_encoder_aom_av1 RESOLVE )
is_feature_enabled ( ENCODER_AOM_AV1 T_CHECK )
if ( RESOLVE AND T_CHECK )
if ( NOT HAVE_AOM )
message ( WARNING "${LOGPREFIX}: AOM AV1 encoder missing AOM library. Disabling..." )
set_feature_disabled ( ENCODER_AOM_AV1 ON )
endif ( )
elseif ( T_CHECK )
set ( REQUIRE_AOM ON PARENT_SCOPE )
endif ( )
endfunction ( )
2020-12-14 16:47:13 +00:00
function ( feature_filter_blur RESOLVE )
is_feature_enabled ( FILTER_BLUR T_CHECK )
endfunction ( )
function ( feature_filter_color_grade RESOLVE )
is_feature_enabled ( FILTER_COLOR_GRADE T_CHECK )
endfunction ( )
2021-05-01 16:31:13 +00:00
function ( feature_filter_denoising RESOLVE )
is_feature_enabled ( FILTER_DENOISING T_CHECK )
if ( RESOLVE AND T_CHECK )
# Verify that the requirements for the providers are available
if ( NOT HAVE_NVIDIA_VFX_SDK )
message ( WARNING "${LOGPREFIX}: 'NVIDIA Video Effects SDK' is missing. Disabling NVIDIA provider..." )
set_feature_disabled ( FILTER_DENOISING_NVIDIA ON )
endif ( )
# Verify that we have at least one provider for Video Denoising.
is_feature_enabled ( FILTER_DENOISING_NVIDIA T_CHECK_NVIDIA )
if ( NOT T_CHECK_NVIDIA )
message ( WARNING "${LOGPREFIX}: Denoising has no available providers. Disabling..." )
set_feature_disabled ( FILTER_DENOISING ON )
endif ( )
elseif ( T_CHECK )
set ( REQUIRE_NVIDIA_VFX_SDK ON PARENT_SCOPE )
endif ( )
endfunction ( )
2020-12-14 16:47:13 +00:00
function ( feature_filter_displacement RESOLVE )
is_feature_enabled ( FILTER_DISPLACEMENT T_CHECK )
endfunction ( )
function ( feature_filter_dynamic_mask RESOLVE )
is_feature_enabled ( FILTER_DYNAMIC_MASK T_CHECK )
endfunction ( )
function ( feature_filter_nvidia_face_tracking RESOLVE )
is_feature_enabled ( FILTER_NVIDIA_FACE_TRACKING T_CHECK )
if ( RESOLVE AND T_CHECK )
if ( NOT D_PLATFORM_WINDOWS )
message ( WARNING "${LOGPREFIX}: NVIDIA Face Tracking requires Windows. Disabling..." )
set_feature_disabled ( FILTER_NVIDIA_FACE_TRACKING ON )
elseif ( NOT HAVE_NVIDIA_ARSDK )
message ( WARNING "${LOGPREFIX}: NVIDIA Face Tracking requires NVIDIA AR SDK. Disabling..." )
set_feature_disabled ( FILTER_NVIDIA_FACE_TRACKING ON )
elseif ( NOT HAVE_NVIDIA_CUDA )
message ( WARNING "${LOGPREFIX}: NVIDIA Face Tracking requires NVIDIA CUDA. Disabling..." )
set_feature_disabled ( FILTER_NVIDIA_FACE_TRACKING ON )
endif ( )
elseif ( T_CHECK )
set ( REQUIRE_NVIDIA_ARSDK ON PARENT_SCOPE )
set ( REQUIRE_NVIDIA_CUDA ON PARENT_SCOPE )
endif ( )
endfunction ( )
function ( feature_filter_sdf_effects RESOLVE )
is_feature_enabled ( FILTER_SDF_EFFECTS T_CHECK )
endfunction ( )
function ( feature_filter_shader RESOLVE )
is_feature_enabled ( FILTER_SHADER T_CHECK )
endfunction ( )
function ( feature_filter_transform RESOLVE )
is_feature_enabled ( FILTER_TRANSFORM T_CHECK )
endfunction ( )
2021-09-27 22:16:21 +00:00
function ( feature_filter_upscaling RESOLVE )
is_feature_enabled ( FILTER_UPSCALING T_CHECK )
2021-06-02 21:37:18 +00:00
if ( RESOLVE AND T_CHECK )
# Verify that the requirements for the providers are available
if ( NOT HAVE_NVIDIA_VFX_SDK )
2021-09-27 22:16:21 +00:00
message ( WARNING "${LOGPREFIX}: 'NVIDIA Video Effects SDK' is missing. Disabling NVIDIA provider(s)..." )
set_feature_disabled ( FILTER_UPSCALING_NVIDIA ON )
2021-06-02 21:37:18 +00:00
endif ( )
# Verify that we have at least one provider for Video Super-Resolution.
2021-09-27 22:16:21 +00:00
is_feature_enabled ( FILTER_UPSCALING_NVIDIA T_CHECK_NVIDIA )
2021-06-02 21:37:18 +00:00
if ( NOT T_CHECK_NVIDIA )
2021-09-27 22:16:21 +00:00
message ( WARNING "${LOGPREFIX}: Upscaling has no available providers. Disabling..." )
set_feature_disabled ( FILTER_UPSCALING ON )
2021-06-02 21:37:18 +00:00
endif ( )
elseif ( T_CHECK )
set ( REQUIRE_NVIDIA_VFX_SDK ON PARENT_SCOPE )
endif ( )
endfunction ( )
2021-10-23 18:05:36 +00:00
function ( feature_filter_virtual_greenscreen RESOLVE )
is_feature_enabled ( FILTER_VIRTUAL_GREENSCREEN T_CHECK )
if ( RESOLVE AND T_CHECK )
# Verify that the requirements for the providers are available
if ( NOT HAVE_NVIDIA_VFX_SDK )
message ( WARNING "${LOGPREFIX}: 'NVIDIA Video Effects SDK' is missing. Disabling NVIDIA provider(s)..." )
set_feature_disabled ( FILTER_VIRTUAL_GREENSCREEN_NVIDIA ON )
endif ( )
# Verify that we have at least one provider for Video Super-Resolution.
is_feature_enabled ( FILTER_VIRTUAL_GREENSCREEN_NVIDIA T_CHECK_NVIDIA )
if ( NOT T_CHECK_NVIDIA )
message ( WARNING "${LOGPREFIX}: Virtual Greenscreen has no available providers. Disabling..." )
set_feature_disabled ( FILTER_VIRTUAL_GREENSCREEN ON )
endif ( )
elseif ( T_CHECK )
set ( REQUIRE_NVIDIA_VFX_SDK ON PARENT_SCOPE )
endif ( )
endfunction ( )
2020-12-14 16:47:13 +00:00
function ( feature_source_mirror RESOLVE )
is_feature_enabled ( SOURCE_MIRROR T_CHECK )
endfunction ( )
function ( feature_source_shader RESOLVE )
is_feature_enabled ( SOURCE_SHADER T_CHECK )
endfunction ( )
function ( feature_transition_shader RESOLVE )
is_feature_enabled ( TRANSITION_SHADER T_CHECK )
endfunction ( )
function ( feature_frontend RESOLVE )
is_feature_enabled ( FRONTEND T_CHECK )
if ( RESOLVE AND T_CHECK )
if ( NOT HAVE_QT )
message ( WARNING "${LOGPREFIX}: Front-End requires Qt. Disabling..." )
set_feature_disabled ( FRONTEND ON )
elseif ( NOT HAVE_OBSFE )
message ( WARNING "${LOGPREFIX}: Front-End requires OBS FrontEnd API. Disabling..." )
set_feature_disabled ( FRONTEND ON )
endif ( )
elseif ( T_CHECK )
set ( REQUIRE_QT ON PARENT_SCOPE )
set ( REQUIRE_OBSFE ON PARENT_SCOPE )
endif ( )
endfunction ( )
function ( feature_updater RESOLVE )
is_feature_enabled ( UPDATER T_CHECK )
if ( RESOLVE AND T_CHECK )
if ( NOT HAVE_CURL )
message ( WARNING "${LOGPREFIX}: Updater requires CURL. Disabling..." )
set_feature_disabled ( UPDATER ON )
elseif ( NOT HAVE_JSON )
message ( WARNING "${LOGPREFIX}: Updater requires nlohmann::json. Disabling..." )
set_feature_disabled ( UPDATER ON )
endif ( )
elseif ( T_CHECK )
set ( REQUIRE_CURL ON PARENT_SCOPE )
set ( REQUIRE_JSON ON PARENT_SCOPE )
endif ( )
endfunction ( )
# Set Requirements
feature_encoder_ffmpeg ( OFF )
2021-08-28 12:36:42 +00:00
feature_encoder_aom_av1 ( OFF )
2020-12-14 16:47:13 +00:00
feature_filter_blur ( OFF )
feature_filter_color_grade ( OFF )
2021-05-01 16:31:13 +00:00
feature_filter_denoising ( OFF )
2020-12-14 16:47:13 +00:00
feature_filter_displacement ( OFF )
feature_filter_dynamic_mask ( OFF )
feature_filter_nvidia_face_tracking ( OFF )
feature_filter_sdf_effects ( OFF )
feature_filter_shader ( OFF )
feature_filter_transform ( OFF )
2021-09-27 22:16:21 +00:00
feature_filter_upscaling ( OFF )
2021-10-23 18:05:36 +00:00
feature_filter_virtual_greenscreen ( OFF )
2020-12-14 16:47:13 +00:00
feature_source_mirror ( OFF )
feature_source_shader ( OFF )
feature_transition_shader ( OFF )
feature_frontend ( OFF )
feature_updater ( OFF )
# Fulfill Requirements
2021-03-22 21:14:19 +00:00
#- CURL
2020-12-14 16:47:13 +00:00
set ( HAVE_CURL OFF )
2020-09-09 03:01:24 +00:00
if ( REQUIRE_CURL )
2020-12-14 16:47:13 +00:00
if ( D_PLATFORM_WINDOWS )
2020-09-28 19:08:07 +00:00
if ( ${ PREFIX } OBS_NATIVE ) # Already defined by OBS
2020-09-09 03:01:24 +00:00
set ( CURL_LIBRARIES "${CURL_LIB}" )
set ( CURL_INCLUDE_DIRS "${CURL_INCLUDE_DIR}" )
2020-09-28 19:08:07 +00:00
else ( )
2021-03-23 16:53:21 +00:00
set ( CURL_LIBRARIES "${_OBSDEPS_PATH}/bin/libcurl.lib" )
set ( CURL_INCLUDE_DIRS "${_OBSDEPS_PATH}/include" )
2020-09-09 03:01:24 +00:00
endif ( )
2020-09-09 03:06:15 +00:00
set ( CURL_LIBRARY_DEBUG ${ CURL_LIBRARIES } )
set ( CURL_LIBRARY_RELEASE ${ CURL_LIBRARIES } )
set ( CURL_INCLUDE_DIR ${ CURL_INCLUDE_DIRS } )
2020-09-09 03:01:24 +00:00
set ( CURL_FOUND ON )
2020-09-09 03:06:15 +00:00
else ( )
2020-09-28 19:08:07 +00:00
find_package ( CURL )
endif ( )
set ( HAVE_CURL ${ CURL_FOUND } )
endif ( )
2021-03-22 21:14:19 +00:00
#- FFmpeg
2020-12-14 16:47:13 +00:00
set ( HAVE_FFMPEG OFF )
2020-09-28 19:08:07 +00:00
if ( REQUIRE_FFMPEG )
2020-12-14 16:47:13 +00:00
if ( D_PLATFORM_WINDOWS AND NOT ${ PREFIX } OBS_NATIVE )
2020-09-28 19:08:07 +00:00
find_path (
F F m p e g P a t h " l i b a v c o d e c / a v c o d e c . h "
H I N T S
$ { O B S _ D E P E N D E N C I E S _ D I R }
2021-03-23 16:53:21 +00:00
$ { _ O B S D E P S _ P A T H }
2020-09-28 19:08:07 +00:00
$ { D e p s P a t h }
$ { D e p s P a t h 3 2 }
$ { D e p s P a t h 6 4 }
2021-03-22 21:14:19 +00:00
2020-09-28 19:08:07 +00:00
P A T H S
/ u s r / i n c l u d e
/ u s r / l o c a l / i n c l u d e
/ o p t / l o c a l / i n c l u d e
/ s w / i n c l u d e
P A T H _ S U F F I X E S
2020-12-14 16:47:13 +00:00
w i n $ { D _ P L A T F O R M _ B I T S }
w i n $ { D _ P L A T F O R M _ B I T S } / b i n
w i n $ { D _ P L A T F O R M _ B I T S } / i n c l u d e
w i n $ { D _ P L A T F O R M _ I N S T R }
w i n $ { D _ P L A T F O R M _ I N S T R } / b i n
w i n $ { D _ P L A T F O R M _ I N S T R } / i n c l u d e
2020-09-28 19:08:07 +00:00
b i n
i n c l u d e
)
2020-09-09 03:01:24 +00:00
endif ( )
2020-12-14 16:47:13 +00:00
2020-09-28 19:08:07 +00:00
find_package ( FFmpeg COMPONENTS avutil avcodec swscale )
set ( HAVE_FFMPEG ${ FFmpeg_FOUND } )
2020-09-09 03:01:24 +00:00
endif ( )
2021-08-28 12:36:42 +00:00
#- AOM
set ( HAVE_AOM OFF )
if ( REQUIRE_AOM )
if ( NOT D_PLATFORM_MAC )
find_package ( AOM )
set ( HAVE_AOM ${ AOM_FOUND } )
endif ( )
endif ( )
2021-03-22 21:14:19 +00:00
#- JSON
2020-12-14 16:47:13 +00:00
set ( HAVE_JSON OFF )
if ( REQUIRE_JSON )
if ( NOT EXISTS "${PROJECT_SOURCE_DIR}/third-party/nlohmann-json/single_include" )
message ( FATAL_ERROR "${LOGPREFIX} Please make sure to update git submodules to their latest supported version." )
return ( )
else ( )
set ( JSON_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/third-party/nlohmann-json/single_include" )
set ( HAVE_JSON ON )
endif ( )
2020-09-28 19:08:07 +00:00
endif ( )
2021-03-22 21:14:19 +00:00
#- NVIDIA Augmented Reality SDK (Windows)
2020-12-14 16:47:13 +00:00
set ( HAVE_NVIDIA_ARSDK OFF )
2021-02-14 12:15:22 +00:00
if ( REQUIRE_NVIDIA_ARSDK AND D_PLATFORM_WINDOWS )
2020-12-14 16:47:13 +00:00
if ( EXISTS "${PROJECT_SOURCE_DIR}/third-party/nvidia-arsdk/version.h" )
set ( NVAR_ROOT "${PROJECT_SOURCE_DIR}/third-party/nvidia-arsdk" )
2020-09-28 19:08:07 +00:00
endif ( )
2020-12-14 16:47:13 +00:00
find_package ( NVAR )
2020-09-28 19:08:07 +00:00
2020-12-14 16:47:13 +00:00
set ( HAVE_NVIDIA_ARSDK ${ NVAR_FOUND } )
2020-09-28 19:08:07 +00:00
endif ( )
2020-12-14 16:47:13 +00:00
2021-05-01 16:31:13 +00:00
#- NVIDIA Video Effects SDK
set ( HAVE_NVIDIA_VFX_SDK OFF )
if ( REQUIRE_NVIDIA_VFX_SDK AND D_PLATFORM_WINDOWS )
if ( EXISTS "${PROJECT_SOURCE_DIR}/third-party/nvidia-maxine-vfx-sdk/version.h" )
set ( HAVE_NVIDIA_VFX_SDK ON )
endif ( )
if ( NOT TARGET NVIDIA::VFX )
add_library ( NVIDIA::VFX IMPORTED INTERFACE )
2021-09-28 02:53:50 +00:00
target_include_directories ( NVIDIA::VFX
2021-05-01 16:31:13 +00:00
I N T E R F A C E
" $ { P R O J E C T _ S O U R C E _ D I R } / t h i r d - p a r t y / n v i d i a - m a x i n e - v f x - s d k / n v v f x / i n c l u d e / "
2021-09-28 02:53:50 +00:00
" $ { P R O J E C T _ S O U R C E _ D I R } / t h i r d - p a r t y / n v i d i a - m a x i n e - v f x - s d k / n v v f x / s r c / "
2021-05-01 16:31:13 +00:00
)
endif ( )
2021-10-24 12:26:51 +00:00
set ( REQUIRE_NVIDIA_CUDA ON )
2021-05-01 16:31:13 +00:00
endif ( )
2021-03-22 21:14:19 +00:00
#- NVIDIA CUDA (Windows)
2020-12-14 16:47:13 +00:00
set ( HAVE_NVIDIA_CUDA OFF )
2021-02-14 12:15:22 +00:00
if ( REQUIRE_NVIDIA_CUDA AND D_PLATFORM_WINDOWS )
2020-12-14 16:47:13 +00:00
set ( HAVE_NVIDIA_CUDA ON )
2020-09-28 19:08:07 +00:00
endif ( )
2021-03-22 21:14:19 +00:00
#- OBS Front-End API
2020-12-14 16:47:13 +00:00
set ( HAVE_OBSFE OFF )
2020-09-28 19:08:07 +00:00
if ( REQUIRE_OBSFE )
2020-12-14 16:47:13 +00:00
if ( ${ PREFIX } OBS_NATIVE )
if ( TARGET obs-frontend-api )
set ( HAVE_OBSFE ON )
2020-09-28 19:08:07 +00:00
endif ( )
else ( )
2020-12-14 16:47:13 +00:00
if ( EXISTS "${libobs_SOURCE_DIR}/cmake/obs-frontend-api/obs-frontend-apiConfig.cmake" )
include ( "${libobs_SOURCE_DIR}/cmake/obs-frontend-api/obs-frontend-apiConfig.cmake" )
set ( HAVE_OBSFE ON )
2020-09-28 19:08:07 +00:00
endif ( )
endif ( )
endif ( )
2020-09-09 03:04:42 +00:00
2021-03-22 21:14:19 +00:00
#- Qt5
2020-12-14 16:47:13 +00:00
set ( HAVE_QT OFF )
if ( REQUIRE_QT )
2021-03-22 21:14:19 +00:00
find_package ( Qt5
2020-12-14 16:47:13 +00:00
C O M P O N E N T S W i d g e t s C o r e R E Q U I R E D
)
set ( HAVE_QT ${ Qt5_FOUND } )
2020-09-28 19:08:07 +00:00
endif ( )
2020-12-14 16:47:13 +00:00
# Verify Requirements
feature_encoder_ffmpeg ( ON )
2021-08-28 12:36:42 +00:00
feature_encoder_aom_av1 ( ON )
2020-12-14 16:47:13 +00:00
feature_filter_blur ( ON )
feature_filter_color_grade ( ON )
2021-05-01 16:31:13 +00:00
feature_filter_denoising ( ON )
2020-12-14 16:47:13 +00:00
feature_filter_displacement ( ON )
feature_filter_dynamic_mask ( ON )
feature_filter_nvidia_face_tracking ( ON )
feature_filter_sdf_effects ( ON )
feature_filter_shader ( ON )
feature_filter_transform ( ON )
2021-09-27 22:16:21 +00:00
feature_filter_upscaling ( ON )
2021-10-23 18:05:36 +00:00
feature_filter_virtual_greenscreen ( ON )
2020-12-14 16:47:13 +00:00
feature_source_mirror ( ON )
feature_source_shader ( ON )
feature_transition_shader ( ON )
feature_frontend ( ON )
feature_updater ( ON )
2020-09-28 19:08:07 +00:00
2017-06-28 21:21:42 +00:00
################################################################################
# Code
################################################################################
2020-03-16 19:37:31 +00:00
set ( PROJECT_DATA_LOCALE )
set ( PROJECT_DATA_EFFECTS )
set ( PROJECT_DATA_SHADERS )
set ( PROJECT_LIBRARIES )
set ( PROJECT_LIBRARIES_DELAYED )
2020-04-05 08:33:35 +00:00
set ( PROJECT_INCLUDE_DIRS )
2020-03-16 19:37:31 +00:00
set ( PROJECT_TEMPLATES )
set ( PROJECT_PRIVATE_GENERATED )
set ( PROJECT_PRIVATE_SOURCE )
2020-04-05 08:33:35 +00:00
set ( PROJECT_UI )
2020-09-28 19:08:07 +00:00
set ( PROJECT_UI_SOURCE )
2020-09-09 03:01:24 +00:00
set ( PROJECT_DEFINITIONS )
2020-03-16 19:37:31 +00:00
2020-12-14 16:47:13 +00:00
# Configure Files
configure_file (
" t e m p l a t e s / c o n f i g . h p p . i n "
" g e n e r a t e d / c o n f i g . h p p "
)
LIST ( APPEND PROJECT_TEMPLATES "templates/config.hpp.in" )
LIST ( APPEND PROJECT_PRIVATE_GENERATED "${PROJECT_BINARY_DIR}/generated/config.hpp" )
configure_file (
" t e m p l a t e s / v e r s i o n . h p p . i n "
" g e n e r a t e d / v e r s i o n . h p p "
)
LIST ( APPEND PROJECT_TEMPLATES "templates/version.hpp.in" )
LIST ( APPEND PROJECT_PRIVATE_GENERATED "${PROJECT_BINARY_DIR}/generated/version.hpp" )
configure_file (
" t e m p l a t e s / m o d u l e . c p p . i n "
" g e n e r a t e d / m o d u l e . c p p "
)
LIST ( APPEND PROJECT_TEMPLATES "templates/module.cpp.in" )
LIST ( APPEND PROJECT_PRIVATE_GENERATED "${PROJECT_BINARY_DIR}/generated/module.cpp" )
if ( D_PLATFORM_WINDOWS ) # Windows Support
set ( PROJECT_PRODUCT_NAME "${PROJECT_FULL_NAME}" )
set ( PROJECT_COMPANY_NAME "${PROJECT_AUTHORS}" )
set ( PROJECT_COPYRIGHT "${PROJECT_AUTHORS} © ${PROJECT_COPYRIGHT_YEARS}" )
set ( PROJECT_LEGAL_TRADEMARKS_1 "" )
set ( PROJECT_LEGAL_TRADEMARKS_2 "" )
configure_file (
" t e m p l a t e s / v e r s i o n . r c . i n "
" g e n e r a t e d / v e r s i o n . r c "
@ O N L Y
)
LIST ( APPEND PROJECT_TEMPLATES "templates/version.rc.in" )
LIST ( APPEND PROJECT_PRIVATE_GENERATED "${PROJECT_BINARY_DIR}/generated/version.rc" )
2020-09-28 19:08:07 +00:00
endif ( )
2020-12-14 16:47:13 +00:00
# Minimum Dependencies
list ( APPEND PROJECT_LIBRARIES libobs )
# Components
if ( HAVE_CURL )
2020-09-09 03:01:24 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / u t i l / u t i l - c u r l . h p p "
" s o u r c e / u t i l / u t i l - c u r l . c p p "
)
2020-09-28 19:08:07 +00:00
list ( APPEND PROJECT_LIBRARIES ${ CURL_LIBRARY_RELEASE } )
list ( APPEND PROJECT_INCLUDE_DIRS ${ CURL_INCLUDE_DIR } )
endif ( )
2020-12-14 16:47:13 +00:00
if ( HAVE_FFMPEG )
2020-09-09 03:01:24 +00:00
list ( APPEND PROJECT_LIBRARIES
2020-09-28 19:08:07 +00:00
$ { F F M P E G _ L I B R A R I E S }
2020-09-09 03:01:24 +00:00
)
list ( APPEND PROJECT_INCLUDE_DIRS
2020-09-28 19:08:07 +00:00
$ { F F M P E G _ I N C L U D E _ D I R S }
2020-12-14 16:47:13 +00:00
)
endif ( )
if ( HAVE_JSON )
list ( APPEND PROJECT_INCLUDE_DIRS ${ JSON_INCLUDE_DIR } )
endif ( )
if ( HAVE_NVIDIA_ARSDK )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / n v i d i a / a r / n v i d i a - a r . h p p "
" s o u r c e / n v i d i a / a r / n v i d i a - a r . c p p "
" s o u r c e / n v i d i a / a r / n v i d i a - a r - f e a t u r e . h p p "
" s o u r c e / n v i d i a / a r / n v i d i a - a r - f e a t u r e . c p p "
)
list ( APPEND PROJECT_LIBRARIES
n v A R P r o x y
)
2020-09-28 19:08:07 +00:00
endif ( )
2020-12-14 16:47:13 +00:00
2021-05-01 16:31:13 +00:00
if ( HAVE_NVIDIA_ARSDK OR HAVE_NVIDIA_VFX_SDK )
2021-05-01 16:31:13 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / n v i d i a / c v / n v i d i a - c v . h p p "
" s o u r c e / n v i d i a / c v / n v i d i a - c v . c p p "
2021-05-02 20:34:28 +00:00
" s o u r c e / n v i d i a / c v / n v i d i a - c v - i m a g e . h p p "
" s o u r c e / n v i d i a / c v / n v i d i a - c v - i m a g e . c p p "
2021-05-02 23:13:19 +00:00
" s o u r c e / n v i d i a / c v / n v i d i a - c v - t e x t u r e . h p p "
" s o u r c e / n v i d i a / c v / n v i d i a - c v - t e x t u r e . c p p "
2021-05-01 16:31:13 +00:00
)
endif ( )
2021-05-01 16:31:13 +00:00
if ( HAVE_NVIDIA_VFX_SDK )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / n v i d i a / v f x / n v i d i a - v f x . h p p "
" s o u r c e / n v i d i a / v f x / n v i d i a - v f x . c p p "
2021-05-01 16:31:13 +00:00
" s o u r c e / n v i d i a / v f x / n v i d i a - v f x - d e n o i s i n g . h p p "
" s o u r c e / n v i d i a / v f x / n v i d i a - v f x - d e n o i s i n g . c p p "
2021-07-04 01:56:20 +00:00
" s o u r c e / n v i d i a / v f x / n v i d i a - v f x - e f f e c t . h p p "
" s o u r c e / n v i d i a / v f x / n v i d i a - v f x - e f f e c t . c p p "
2021-10-23 15:49:06 +00:00
" s o u r c e / n v i d i a / v f x / n v i d i a - v f x - g r e e n s c r e e n . h p p "
" s o u r c e / n v i d i a / v f x / n v i d i a - v f x - g r e e n s c r e e n . c p p "
2021-06-02 21:37:18 +00:00
" s o u r c e / n v i d i a / v f x / n v i d i a - v f x - s u p e r r e s o l u t i o n . h p p "
" s o u r c e / n v i d i a / v f x / n v i d i a - v f x - s u p e r r e s o l u t i o n . c p p "
2021-05-01 16:31:13 +00:00
)
list ( APPEND PROJECT_LIBRARIES
N V I D I A : : V F X
)
endif ( )
2020-12-14 16:47:13 +00:00
if ( HAVE_NVIDIA_CUDA )
2020-09-28 19:08:07 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / n v i d i a / c u d a / n v i d i a - c u d a . h p p "
" s o u r c e / n v i d i a / c u d a / n v i d i a - c u d a . c p p "
2021-04-25 22:32:35 +00:00
" s o u r c e / n v i d i a / c u d a / n v i d i a - c u d a - o b s . h p p "
" s o u r c e / n v i d i a / c u d a / n v i d i a - c u d a - o b s . c p p "
2020-09-28 19:08:07 +00:00
" s o u r c e / n v i d i a / c u d a / n v i d i a - c u d a - c o n t e x t . h p p "
" s o u r c e / n v i d i a / c u d a / n v i d i a - c u d a - c o n t e x t . c p p "
" s o u r c e / n v i d i a / c u d a / n v i d i a - c u d a - g s - t e x t u r e . h p p "
" s o u r c e / n v i d i a / c u d a / n v i d i a - c u d a - g s - t e x t u r e . c p p "
" s o u r c e / n v i d i a / c u d a / n v i d i a - c u d a - m e m o r y . h p p "
" s o u r c e / n v i d i a / c u d a / n v i d i a - c u d a - m e m o r y . c p p "
" s o u r c e / n v i d i a / c u d a / n v i d i a - c u d a - s t r e a m . h p p "
" s o u r c e / n v i d i a / c u d a / n v i d i a - c u d a - s t r e a m . c p p "
2020-09-09 03:01:24 +00:00
)
2021-06-17 11:28:13 +00:00
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ N V I D I A _ C U D A
)
2020-09-09 03:01:24 +00:00
endif ( )
2020-12-14 16:47:13 +00:00
if ( REQUIRE_OBSFE AND HAVE_OBSFE )
list ( APPEND PROJECT_LIBRARIES obs-frontend-api )
endif ( )
if ( REQUIRE_QT AND HAVE_QT )
list ( APPEND PROJECT_LIBRARIES Qt5::Core Qt5::Widgets )
2020-09-09 03:04:42 +00:00
endif ( )
2020-12-14 16:47:13 +00:00
################################################################################
# Features
################################################################################
2020-09-28 19:08:07 +00:00
# Core
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
2020-04-22 20:58:33 +00:00
" s o u r c e / c o n f i g u r a t i o n . h p p "
" s o u r c e / c o n f i g u r a t i o n . c p p "
2020-04-02 15:02:01 +00:00
" s o u r c e / c o m m o n . h p p "
2020-04-22 20:49:09 +00:00
" s o u r c e / s t r i n g s . h p p "
2020-03-16 19:37:31 +00:00
" s o u r c e / p l u g i n . h p p "
" s o u r c e / p l u g i n . c p p "
2020-07-12 16:41:50 +00:00
" s o u r c e / u t i l / u t i l i t y . h p p "
" s o u r c e / u t i l / u t i l i t y . c p p "
2020-11-05 05:35:31 +00:00
" s o u r c e / u t i l / u t i l - b i t m a s k . h p p "
2020-07-12 16:41:50 +00:00
" s o u r c e / u t i l / u t i l - e v e n t . h p p "
2020-08-09 20:47:33 +00:00
" s o u r c e / u t i l / u t i l - l i b r a r y . c p p "
" s o u r c e / u t i l / u t i l - l i b r a r y . h p p "
2020-11-08 05:47:47 +00:00
" s o u r c e / u t i l / u t i l - l o g g i n g . c p p "
" s o u r c e / u t i l / u t i l - l o g g i n g . h p p "
2021-05-01 16:31:13 +00:00
" s o u r c e / u t i l / u t i l - p l a t f o r m . h p p "
" s o u r c e / u t i l / u t i l - p l a t f o r m . c p p "
2020-07-12 16:41:50 +00:00
" s o u r c e / u t i l / u t i l - t h r e a d p o o l . c p p "
" s o u r c e / u t i l / u t i l - t h r e a d p o o l . h p p "
2020-03-16 19:37:31 +00:00
" s o u r c e / g f x / g f x - s o u r c e - t e x t u r e . h p p "
" s o u r c e / g f x / g f x - s o u r c e - t e x t u r e . c p p "
" s o u r c e / o b s / g s / g s - h e l p e r . h p p "
" s o u r c e / o b s / g s / g s - h e l p e r . c p p "
" s o u r c e / o b s / g s / g s - e f f e c t . h p p "
" s o u r c e / o b s / g s / g s - e f f e c t . c p p "
" s o u r c e / o b s / g s / g s - e f f e c t - p a r a m e t e r . h p p "
" s o u r c e / o b s / g s / g s - e f f e c t - p a r a m e t e r . c p p "
" s o u r c e / o b s / g s / g s - e f f e c t - p a s s . h p p "
" s o u r c e / o b s / g s / g s - e f f e c t - p a s s . c p p "
" s o u r c e / o b s / g s / g s - e f f e c t - t e c h n i q u e . h p p "
" s o u r c e / o b s / g s / g s - e f f e c t - t e c h n i q u e . c p p "
" s o u r c e / o b s / g s / g s - i n d e x b u f f e r . h p p "
" s o u r c e / o b s / g s / g s - i n d e x b u f f e r . c p p "
" s o u r c e / o b s / g s / g s - l i m i t s . h p p "
" s o u r c e / o b s / g s / g s - m i p m a p p e r . h p p "
" s o u r c e / o b s / g s / g s - m i p m a p p e r . c p p "
" s o u r c e / o b s / g s / g s - r e n d e r t a r g e t . h p p "
" s o u r c e / o b s / g s / g s - r e n d e r t a r g e t . c p p "
" s o u r c e / o b s / g s / g s - s a m p l e r . h p p "
" s o u r c e / o b s / g s / g s - s a m p l e r . c p p "
" s o u r c e / o b s / g s / g s - t e x t u r e . h p p "
" s o u r c e / o b s / g s / g s - t e x t u r e . c p p "
" s o u r c e / o b s / g s / g s - v e r t e x . h p p "
" s o u r c e / o b s / g s / g s - v e r t e x . c p p "
" s o u r c e / o b s / g s / g s - v e r t e x b u f f e r . h p p "
" s o u r c e / o b s / g s / g s - v e r t e x b u f f e r . c p p "
2020-06-14 18:16:26 +00:00
" s o u r c e / o b s / o b s - e n c o d e r - f a c t o r y . h p p "
" s o u r c e / o b s / o b s - e n c o d e r - f a c t o r y . c p p "
2020-03-16 19:37:31 +00:00
" s o u r c e / o b s / o b s - s i g n a l - h a n d l e r . h p p "
" s o u r c e / o b s / o b s - s i g n a l - h a n d l e r . c p p "
" s o u r c e / o b s / o b s - s o u r c e . h p p "
" s o u r c e / o b s / o b s - s o u r c e . c p p "
" s o u r c e / o b s / o b s - s o u r c e - f a c t o r y . h p p "
" s o u r c e / o b s / o b s - s o u r c e - f a c t o r y . c p p "
" s o u r c e / o b s / o b s - s o u r c e - t r a c k e r . h p p "
" s o u r c e / o b s / o b s - s o u r c e - t r a c k e r . c p p "
" s o u r c e / o b s / o b s - t o o l s . h p p "
" s o u r c e / o b s / o b s - t o o l s . c p p "
2018-09-25 23:17:08 +00:00
)
2020-09-28 19:08:07 +00:00
list ( APPEND PROJECT_DATA
2021-02-02 21:22:47 +00:00
" d a t a / e f f e c t s / c o l o r _ c o n v e r s i o n _ r g b _ h s l . e f f e c t "
" d a t a / e f f e c t s / c o l o r _ c o n v e r s i o n _ r g b _ h s v . e f f e c t "
" d a t a / e f f e c t s / c o l o r _ c o n v e r s i o n _ r g b _ y u v . e f f e c t "
2020-09-28 19:08:07 +00:00
" d a t a / e f f e c t s / m i p g e n . e f f e c t "
" d a t a / e f f e c t s / p a c k - u n p a c k . e f f e c t "
2021-10-06 00:05:46 +00:00
" d a t a / e f f e c t s / s t a n d a r d . e f f e c t "
2021-02-02 21:23:10 +00:00
" d a t a / e f f e c t s / s h a r e d . e f f e c t "
2020-12-14 16:47:13 +00:00
" d a t a / l o c a l e / e n - U S . i n i "
2020-09-28 19:08:07 +00:00
)
2020-12-14 16:47:13 +00:00
list ( APPEND PROJECT_INCLUDE_DIRS
" $ { P R O J E C T _ B I N A R Y _ D I R } / g e n e r a t e d "
" $ { P R O J E C T _ S O U R C E _ D I R } / s o u r c e "
)
file ( GLOB_RECURSE PROJECT_EXAMPLES "data/examples/*" )
list ( APPEND PROJECT_DATA ${ PROJECT_EXAMPLES } )
2020-09-09 03:06:15 +00:00
2020-12-14 16:47:13 +00:00
# Encoder/FFmpeg
is_feature_enabled ( ENCODER_FFMPEG T_CHECK )
if ( T_CHECK )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
# FFmpeg
" s o u r c e / f f m p e g / a v f r a m e - q u e u e . c p p "
" s o u r c e / f f m p e g / a v f r a m e - q u e u e . h p p "
" s o u r c e / f f m p e g / s w s c a l e . h p p "
" s o u r c e / f f m p e g / s w s c a l e . c p p "
" s o u r c e / f f m p e g / t o o l s . h p p "
" s o u r c e / f f m p e g / t o o l s . c p p "
" s o u r c e / f f m p e g / h w a p i / b a s e . h p p "
" s o u r c e / f f m p e g / h w a p i / b a s e . c p p "
" s o u r c e / f f m p e g / h w a p i / d 3 d 1 1 . h p p "
" s o u r c e / f f m p e g / h w a p i / d 3 d 1 1 . c p p "
2021-03-22 21:14:19 +00:00
2020-03-16 19:37:31 +00:00
# Encoders
2020-06-14 20:22:44 +00:00
" s o u r c e / e n c o d e r s / e n c o d e r - f f m p e g . h p p "
" s o u r c e / e n c o d e r s / e n c o d e r - f f m p e g . c p p "
2020-03-16 19:37:31 +00:00
# Encoders/Codecs
" s o u r c e / e n c o d e r s / c o d e c s / h e v c . h p p "
" s o u r c e / e n c o d e r s / c o d e c s / h e v c . c p p "
" s o u r c e / e n c o d e r s / c o d e c s / h 2 6 4 . h p p "
" s o u r c e / e n c o d e r s / c o d e c s / h 2 6 4 . c p p "
" s o u r c e / e n c o d e r s / c o d e c s / p r o r e s . h p p "
" s o u r c e / e n c o d e r s / c o d e c s / p r o r e s . c p p "
# Encoders/Handlers
" s o u r c e / e n c o d e r s / h a n d l e r s / h a n d l e r . h p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / h a n d l e r . c p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / d e b u g _ h a n d l e r . h p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / d e b u g _ h a n d l e r . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ E N C O D E R _ F F M P E G
)
2020-12-14 16:47:13 +00:00
# AMF
is_feature_enabled ( ENCODER_FFMPEG_AMF T_CHECK )
if ( T_CHECK )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / e n c o d e r s / h a n d l e r s / a m f _ s h a r e d . h p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / a m f _ s h a r e d . c p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / a m f _ h 2 6 4 _ h a n d l e r . h p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / a m f _ h 2 6 4 _ h a n d l e r . c p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / a m f _ h e v c _ h a n d l e r . h p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / a m f _ h e v c _ h a n d l e r . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ E N C O D E R _ F F M P E G _ A M F
)
endif ( )
2021-03-22 21:14:19 +00:00
2020-12-14 16:47:13 +00:00
# NVENC
is_feature_enabled ( ENCODER_FFMPEG_NVENC T_CHECK )
if ( T_CHECK )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / e n c o d e r s / h a n d l e r s / n v e n c _ s h a r e d . h p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / n v e n c _ s h a r e d . c p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / n v e n c _ h 2 6 4 _ h a n d l e r . h p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / n v e n c _ h 2 6 4 _ h a n d l e r . c p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / n v e n c _ h e v c _ h a n d l e r . h p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / n v e n c _ h e v c _ h a n d l e r . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ E N C O D E R _ F F M P E G _ N V E N C
)
endif ( )
2021-03-22 21:14:19 +00:00
2020-12-14 16:47:13 +00:00
# ProRES
is_feature_enabled ( ENCODER_FFMPEG_PRORES T_CHECK )
if ( T_CHECK )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / e n c o d e r s / h a n d l e r s / p r o r e s _ a w _ h a n d l e r . h p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / p r o r e s _ a w _ h a n d l e r . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ E N C O D E R _ F F M P E G _ P R O R E S
)
endif ( )
2020-03-16 19:37:31 +00:00
endif ( )
2021-08-28 12:36:42 +00:00
# Encoder/AOM-AV1
is_feature_enabled ( ENCODER_AOM_AV1 T_CHECK )
if ( T_CHECK )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / e n c o d e r s / c o d e c s / a v 1 . h p p "
" s o u r c e / e n c o d e r s / c o d e c s / a v 1 . c p p "
" s o u r c e / e n c o d e r s / e n c o d e r - a o m - a v 1 . h p p "
" s o u r c e / e n c o d e r s / e n c o d e r - a o m - a v 1 . c p p "
)
list ( APPEND PROJECT_INCLUDE_DIRS
$ { A O M _ I N C L U D E _ D I R }
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ E N C O D E R _ A O M _ A V 1
)
endif ( )
2020-12-14 16:47:13 +00:00
# Filter/Blur
is_feature_enabled ( FILTER_BLUR T_CHECK )
if ( T_CHECK )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_DATA
" d a t a / e f f e c t s / m a s k . e f f e c t "
2021-06-08 04:08:07 +00:00
" d a t a / e f f e c t s / b l u r / c o m m o n . e f f e c t "
2020-03-16 19:37:31 +00:00
" d a t a / e f f e c t s / b l u r / b o x . e f f e c t "
" d a t a / e f f e c t s / b l u r / b o x - l i n e a r . e f f e c t "
" d a t a / e f f e c t s / b l u r / d u a l - f i l t e r i n g . e f f e c t "
" d a t a / e f f e c t s / b l u r / g a u s s i a n . e f f e c t "
" d a t a / e f f e c t s / b l u r / g a u s s i a n - l i n e a r . e f f e c t "
)
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / g f x / b l u r / g f x - b l u r - b a s e . h p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - b a s e . c p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - b o x . h p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - b o x . c p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - b o x - l i n e a r . h p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - b o x - l i n e a r . c p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - d u a l - f i l t e r i n g . h p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - d u a l - f i l t e r i n g . c p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - g a u s s i a n . h p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - g a u s s i a n . c p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - g a u s s i a n - l i n e a r . h p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - g a u s s i a n - l i n e a r . c p p "
" s o u r c e / f i l t e r s / f i l t e r - b l u r . h p p "
2020-12-14 16:47:13 +00:00
" s o u r c e / f i l t e r s / f i l t e r - b l u r . c p p "
2020-03-16 19:37:31 +00:00
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ B L U R
)
endif ( )
2020-12-14 16:47:13 +00:00
# Filter/Color Grade
is_feature_enabled ( FILTER_COLOR_GRADE T_CHECK )
if ( T_CHECK )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_DATA
" d a t a / e f f e c t s / c o l o r - g r a d e . e f f e c t "
)
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / f i l t e r s / f i l t e r - c o l o r - g r a d e . h p p "
2021-03-22 21:14:19 +00:00
" s o u r c e / f i l t e r s / f i l t e r - c o l o r - g r a d e . c p p "
2020-03-16 19:37:31 +00:00
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ C O L O R _ G R A D E
)
2021-02-02 21:54:25 +00:00
set ( REQUIRE_LUT ON )
2020-03-16 19:37:31 +00:00
endif ( )
2020-12-14 16:47:13 +00:00
# Filter/Displacement
is_feature_enabled ( FILTER_DISPLACEMENT T_CHECK )
if ( T_CHECK )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_DATA
" d a t a / e f f e c t s / d i s p l a c e . e f f e c t "
)
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / f i l t e r s / f i l t e r - d i s p l a c e m e n t . h p p "
" s o u r c e / f i l t e r s / f i l t e r - d i s p l a c e m e n t . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ D I S P L A C E M E N T
)
endif ( )
2020-12-14 16:47:13 +00:00
# Filter/Dynamic Mask
is_feature_enabled ( FILTER_DYNAMIC_MASK T_CHECK )
if ( T_CHECK )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_DATA
" d a t a / e f f e c t s / c h a n n e l - m a s k . e f f e c t "
)
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / f i l t e r s / f i l t e r - d y n a m i c - m a s k . h p p "
" s o u r c e / f i l t e r s / f i l t e r - d y n a m i c - m a s k . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ D Y N A M I C _ M A S K
)
endif ( )
2020-12-14 16:47:13 +00:00
# Filter/NVIDIA Face Tracking
is_feature_enabled ( FILTER_NVIDIA_FACE_TRACKING T_CHECK )
if ( T_CHECK )
2020-03-25 17:31:22 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / f i l t e r s / f i l t e r - n v - f a c e - t r a c k i n g . h p p "
" s o u r c e / f i l t e r s / f i l t e r - n v - f a c e - t r a c k i n g . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ N V I D I A _ F A C E _ T R A C K I N G
)
endif ( )
2020-12-14 16:47:13 +00:00
# Filter/SDF Effects
is_feature_enabled ( FILTER_SDF_EFFECTS T_CHECK )
if ( T_CHECK )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_DATA
" d a t a / e f f e c t s / s d f / s d f - p r o d u c e r . e f f e c t "
" d a t a / e f f e c t s / s d f / s d f - c o n s u m e r . e f f e c t "
)
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / f i l t e r s / f i l t e r - s d f - e f f e c t s . h p p "
" s o u r c e / f i l t e r s / f i l t e r - s d f - e f f e c t s . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ S D F _ E F F E C T S
)
endif ( )
2020-12-14 16:47:13 +00:00
# Filter/Shader
is_feature_enabled ( FILTER_SHADER T_CHECK )
if ( T_CHECK )
set ( REQUIRE_PART_SHADER ON )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
2020-03-28 17:54:56 +00:00
" s o u r c e / f i l t e r s / f i l t e r - s h a d e r . h p p "
" s o u r c e / f i l t e r s / f i l t e r - s h a d e r . c p p "
2020-03-16 19:37:31 +00:00
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ S H A D E R
)
endif ( )
2020-12-14 16:47:13 +00:00
# Filter/Transform
2021-02-14 11:58:32 +00:00
is_feature_enabled ( FILTER_TRANSFORM T_CHECK )
2020-12-14 16:47:13 +00:00
if ( T_CHECK )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / f i l t e r s / f i l t e r - t r a n s f o r m . h p p "
" s o u r c e / f i l t e r s / f i l t e r - t r a n s f o r m . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ T R A N S F O R M
)
endif ( )
2021-10-23 18:05:36 +00:00
# Filter/Denoising
2021-05-01 16:31:13 +00:00
is_feature_enabled ( FILTER_DENOISING T_CHECK )
if ( T_CHECK )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / f i l t e r s / f i l t e r - d e n o i s i n g . h p p "
" s o u r c e / f i l t e r s / f i l t e r - d e n o i s i n g . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ D E N O I S I N G
)
is_feature_enabled ( FILTER_DENOISING_NVIDIA T_CHECK )
if ( T_CHECK )
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ D E N O I S I N G _ N V I D I A
)
endif ( )
endif ( )
2021-10-23 18:05:36 +00:00
# Filter/Upscaling
2021-09-27 22:16:21 +00:00
is_feature_enabled ( FILTER_UPSCALING T_CHECK )
2021-06-02 21:37:18 +00:00
if ( T_CHECK )
list ( APPEND PROJECT_PRIVATE_SOURCE
2021-09-27 22:16:21 +00:00
" s o u r c e / f i l t e r s / f i l t e r - u p s c a l i n g . h p p "
" s o u r c e / f i l t e r s / f i l t e r - u p s c a l i n g . c p p "
2021-06-02 21:37:18 +00:00
)
list ( APPEND PROJECT_DEFINITIONS
2021-09-27 22:16:21 +00:00
E N A B L E _ F I L T E R _ U P S C A L I N G
2021-06-02 21:37:18 +00:00
)
2021-09-27 22:16:21 +00:00
is_feature_enabled ( FILTER_UPSCALING_NVIDIA T_CHECK )
2021-06-02 21:37:18 +00:00
if ( T_CHECK )
list ( APPEND PROJECT_DEFINITIONS
2021-09-27 22:16:21 +00:00
E N A B L E _ F I L T E R _ U P S C A L I N G _ N V I D I A
2021-06-02 21:37:18 +00:00
)
endif ( )
endif ( )
2021-10-23 18:05:36 +00:00
# Filter/Virtual Greenscreen
is_feature_enabled ( FILTER_VIRTUAL_GREENSCREEN T_CHECK )
if ( T_CHECK )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / f i l t e r s / f i l t e r - v i r t u a l - g r e e n s c r e e n . h p p "
" s o u r c e / f i l t e r s / f i l t e r - v i r t u a l - g r e e n s c r e e n . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ V I R T U A L _ G R E E N S C R E E N
)
is_feature_enabled ( FILTER_VIRTUAL_GREENSCREEN_NVIDIA T_CHECK )
if ( T_CHECK )
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ V I R T U A L _ G R E E N S C R E E N _ N V I D I A
)
endif ( )
endif ( )
2020-12-14 16:47:13 +00:00
# Source/Mirror
is_feature_enabled ( SOURCE_MIRROR T_CHECK )
if ( T_CHECK )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / s o u r c e s / s o u r c e - m i r r o r . h p p "
" s o u r c e / s o u r c e s / s o u r c e - m i r r o r . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ S O U R C E _ M I R R O R
)
endif ( )
2020-12-14 16:47:13 +00:00
# Source/Shader
is_feature_enabled ( SOURCE_SHADER T_CHECK )
if ( T_CHECK )
set ( REQUIRE_PART_SHADER ON )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / s o u r c e s / s o u r c e - s h a d e r . h p p "
" s o u r c e / s o u r c e s / s o u r c e - s h a d e r . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ S O U R C E _ S H A D E R
)
endif ( )
2020-12-14 16:47:13 +00:00
# Transition/Shader
is_feature_enabled ( TRANSITION_SHADER T_CHECK )
if ( T_CHECK )
set ( REQUIRE_PART_SHADER ON )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
2020-03-28 17:38:45 +00:00
" s o u r c e / t r a n s i t i o n s / t r a n s i t i o n - s h a d e r . h p p "
" s o u r c e / t r a n s i t i o n s / t r a n s i t i o n - s h a d e r . c p p "
2020-03-16 19:37:31 +00:00
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ T R A N S I T I O N _ S H A D E R
)
endif ( )
2020-12-14 16:47:13 +00:00
# Profiling
is_feature_enabled ( PROFILING T_CHECK )
if ( T_CHECK )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / u t i l / u t i l - p r o f i l e r . c p p "
" s o u r c e / u t i l / u t i l - p r o f i l e r . h p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ P R O F I L I N G
)
endif ( )
# Updater
is_feature_enabled ( UPDATER T_CHECK )
if ( T_CHECK )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / u p d a t e r . h p p "
" s o u r c e / u p d a t e r . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ U P D A T E R
)
endif ( )
# Frontend
is_feature_enabled ( FRONTEND T_CHECK )
if ( T_CHECK )
2020-09-28 19:08:07 +00:00
list ( APPEND PROJECT_UI
" u i / s t r e a m f x . q r c "
" u i / a b o u t . u i "
" u i / a b o u t - e n t r y . u i "
)
list ( APPEND PROJECT_UI_SOURCE
" s o u r c e / u i / u i - c o m m o n . h p p "
" s o u r c e / u i / u i . h p p "
" s o u r c e / u i / u i . c p p "
" s o u r c e / u i / u i - a b o u t . h p p "
" s o u r c e / u i / u i - a b o u t . c p p "
" s o u r c e / u i / u i - a b o u t - e n t r y . h p p "
" s o u r c e / u i / u i - a b o u t - e n t r y . c p p "
)
list ( APPEND PROJECT_INCLUDE_DIRS
" s o u r c e / u i "
)
2020-04-25 23:04:04 +00:00
list ( APPEND PROJECT_DEFINITIONS
2020-09-28 19:08:07 +00:00
E N A B L E _ F R O N T E N D
2020-04-25 23:04:04 +00:00
)
2021-03-22 21:14:19 +00:00
2020-12-14 16:47:13 +00:00
is_feature_enabled ( UPDATER T_CHECK )
if ( T_CHECK )
2020-09-28 19:08:07 +00:00
list ( APPEND PROJECT_UI_SOURCE
" s o u r c e / u i / u i - u p d a t e r . h p p "
" s o u r c e / u i / u i - u p d a t e r . c p p "
)
list ( APPEND PROJECT_UI
" u i / u p d a t e r . u i "
)
endif ( )
2020-04-25 23:04:04 +00:00
endif ( )
2020-12-14 16:47:13 +00:00
################################################################################
# Parts
################################################################################
# Shaders
if ( REQUIRE_PART_SHADER )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / g f x / s h a d e r / g f x - s h a d e r . h p p "
" s o u r c e / g f x / s h a d e r / g f x - s h a d e r . c p p "
" s o u r c e / g f x / s h a d e r / g f x - s h a d e r - p a r a m . h p p "
" s o u r c e / g f x / s h a d e r / g f x - s h a d e r - p a r a m . c p p "
" s o u r c e / g f x / s h a d e r / g f x - s h a d e r - p a r a m - a u d i o . h p p "
" s o u r c e / g f x / s h a d e r / g f x - s h a d e r - p a r a m - a u d i o . c p p "
" s o u r c e / g f x / s h a d e r / g f x - s h a d e r - p a r a m - b a s i c . h p p "
" s o u r c e / g f x / s h a d e r / g f x - s h a d e r - p a r a m - b a s i c . c p p "
" s o u r c e / g f x / s h a d e r / g f x - s h a d e r - p a r a m - m a t r i x . h p p "
" s o u r c e / g f x / s h a d e r / g f x - s h a d e r - p a r a m - m a t r i x . c p p "
" s o u r c e / g f x / s h a d e r / g f x - s h a d e r - p a r a m - t e x t u r e . h p p "
" s o u r c e / g f x / s h a d e r / g f x - s h a d e r - p a r a m - t e x t u r e . c p p "
)
endif ( )
2020-01-13 00:52:30 +00:00
2021-02-02 21:25:06 +00:00
# LUT
if ( REQUIRE_LUT )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / g f x / l u t / g f x - l u t . h p p "
" s o u r c e / g f x / l u t / g f x - l u t . c p p "
" s o u r c e / g f x / l u t / g f x - l u t - c o n s u m e r . h p p "
" s o u r c e / g f x / l u t / g f x - l u t - c o n s u m e r . c p p "
" s o u r c e / g f x / l u t / g f x - l u t - p r o d u c e r . h p p "
" s o u r c e / g f x / l u t / g f x - l u t - p r o d u c e r . c p p "
)
list ( APPEND PROJECT_DATA
" d a t a / e f f e c t s / l u t . e f f e c t "
" d a t a / e f f e c t s / l u t - c o n s u m e r . e f f e c t "
" d a t a / e f f e c t s / l u t - p r o d u c e r . e f f e c t "
)
endif ( )
2020-12-14 16:47:13 +00:00
# Windows
if ( D_PLATFORM_WINDOWS )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / w i n d l l . c p p "
2020-09-28 19:08:07 +00:00
)
2020-12-14 16:47:13 +00:00
list ( APPEND PROJECT_LIBRARIES
2020-03-20 22:39:21 +00:00
D e l a y i m p . l i b
)
2020-12-14 16:47:13 +00:00
# Disable/Enable a ton of things.
list ( APPEND PROJECT_DEFINITIONS
# Microsoft Visual C++
2020-09-28 19:08:07 +00:00
_ C R T _ S E C U R E _ N O _ W A R N I N G S
_ E N A B L E _ E X T E N D E D _ A L I G N E D _ S T O R A G E
# windows.h
W I N 3 2 _ L E A N _ A N D _ M E A N
N O G P I C A P M A S K S
N O V I R T U A L K E Y C O D E S
#NOWINMESSAGES
N O W I N S T Y L E S
N O S Y S M E T R I C S
N O M E N U S
N O I C O N S
N O K E Y S T A T E S
N O S Y S C O M M A N D S
N O R A S T E R O P S
N O S H O W W I N D O W
N O A T O M
N O C L I P B O A R D
N O C O L O R
#NOCTLMGR
N O D R A W T E X T
#NOGDI
N O K E R N E L
#NOUSER
#NONLS
N O M B
N O M E M M G R
N O M E T A F I L E
N O M I N M A X
#NOMSG
N O O P E N F I L E
N O S C R O L L
N O S E R V I C E
N O S O U N D
#NOTEXTMETRIC
N O W H
N O W I N O F F S E T S
N O C O M M
N O K A N J I
#NOHELP
N O P R O F I L E R
N O D E F E R W I N D O W P O S
N O M C X
N O I M E
N O M D I
N O I N O U T
2018-09-25 23:17:08 +00:00
)
2018-12-23 19:49:18 +00:00
endif ( )
2018-09-25 23:17:08 +00:00
2020-12-14 16:47:13 +00:00
# GCC before 9.0, Clang before 9.0
if ( ( CMAKE_C_COMPILER_ID STREQUAL "GNU" )
OR ( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
OR ( CMAKE_C_COMPILER_ID STREQUAL "Clang" )
OR ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) )
if ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0 )
list ( APPEND PROJECT_LIBRARIES
" s t d c + + f s "
)
endif ( )
endif ( )
################################################################################
# Register Library
################################################################################
# Combine all variables that matter.
set ( PROJECT_FILES
# Always exist
$ { P R O J E C T _ D A T A }
$ { P R O J E C T _ P R I V A T E _ G E N E R A T E D }
$ { P R O J E C T _ P R I V A T E _ S O U R C E }
$ { P R O J E C T _ T E M P L A T E S }
# UI-only (empty if not enabled)
$ { P R O J E C T _ U I }
$ { P R O J E C T _ U I _ S O U R C E }
)
# Set source groups for IDE generators.
source_group ( TREE "${PROJECT_SOURCE_DIR}/data" PREFIX "Data" FILES ${ PROJECT_DATA } )
source_group ( TREE "${PROJECT_SOURCE_DIR}/source" PREFIX "Source" FILES ${ PROJECT_PRIVATE_SOURCE } ${ PROJECT_UI_SOURCE } )
source_group ( TREE "${PROJECT_BINARY_DIR}/generated" PREFIX "Source" FILES ${ PROJECT_PRIVATE_GENERATED } )
source_group ( TREE "${PROJECT_SOURCE_DIR}/templates" PREFIX "Templates" FILES ${ PROJECT_TEMPLATES } )
source_group ( TREE "${PROJECT_SOURCE_DIR}/ui" PREFIX "User Interface" FILES ${ PROJECT_UI } )
# Prevent unwanted files from being built as source.
set_source_files_properties ( ${ PROJECT_DATA } ${ PROJECT_TEMPLATES } ${ PROJECT_UI } PROPERTIES
H E A D E R _ F I L E _ O N L Y O N
)
# Prevent non-UI files from being Qt'd
if ( HAVE_QT )
set_source_files_properties ( ${ PROJECT_DATA } ${ PROJECT_TEMPLATES } ${ PROJECT_PRIVATE_GENERATED } ${ PROJECT_PRIVATE_SOURCE } PROPERTIES
S K I P _ A U T O G E N O N
S K I P _ A U T O M O C O N
S K I P _ A U T O R C C O N
S K I P _ A U T O U I C O N
)
endif ( )
# Register the library
add_library ( ${ PROJECT_NAME } MODULE ${ PROJECT_FILES } ) # We are a module for libOBS.
target_include_directories ( ${ PROJECT_NAME } PRIVATE ${ PROJECT_INCLUDE_DIRS } )
target_compile_definitions ( ${ PROJECT_NAME } PRIVATE ${ PROJECT_DEFINITIONS } )
target_link_libraries ( ${ PROJECT_NAME } ${ PROJECT_LIBRARIES } )
# Set C++ Standard and Extensions
2020-09-28 19:08:07 +00:00
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
2020-12-14 16:47:13 +00:00
C X X _ S T A N D A R D 1 7
2020-09-28 19:08:07 +00:00
C X X _ S T A N D A R D _ R E Q U I R E D O N
2020-12-14 16:47:13 +00:00
C X X _ E X T E N S I O N S O F F
)
# Remove prefix on other platforms.
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
P R E F I X " "
I M P O R T _ P R E F I X " "
2019-04-19 05:15:18 +00:00
)
2020-12-14 16:47:13 +00:00
# Set file version (on anything but MacOS)
if ( NOT D_PLATFORM_MAC )
2020-09-28 19:08:07 +00:00
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
2018-09-25 23:17:08 +00:00
V E R S I O N $ { P R O J E C T _ V E R S I O N _ M A J O R } . $ { P R O J E C T _ V E R S I O N _ M I N O R } . $ { P R O J E C T _ V E R S I O N _ P A T C H } . $ { P R O J E C T _ V E R S I O N _ T W E A K }
S O V E R S I O N $ { P R O J E C T _ V E R S I O N _ M A J O R } . $ { P R O J E C T _ V E R S I O N _ M I N O R } . $ { P R O J E C T _ V E R S I O N _ P A T C H } . $ { P R O J E C T _ V E R S I O N _ T W E A K }
)
2018-12-23 19:49:18 +00:00
endif ( )
2018-09-25 23:17:08 +00:00
2020-12-14 16:47:13 +00:00
# Delay-Loading on Microsoft Visual C++
if ( D_PLATFORM_WINDOWS )
foreach ( DELAYLOAD ${ PROJECT_LIBRARIES_DELAYED } )
get_target_property ( _lf ${ PROJECT_NAME } LINK_FLAGS )
if ( NOT _lf )
set ( _lf "" )
endif ( )
set_target_properties ( ${ PROJECT_NAME } PROPERTIES LINK_FLAGS "${_lf} /DELAYLOAD:${DELAYLOAD}" )
add_link_options ( "/DELAYLOAD:${DELAYLOAD}" )
endforeach ( )
endif ( )
# Enable Qt if needed
if ( HAVE_QT )
2020-09-28 19:08:07 +00:00
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
2020-12-14 16:47:13 +00:00
A U T O U I C O N
2020-04-05 08:33:35 +00:00
A U T O U I C _ S E A R C H _ P A T H S " $ { P R O J E C T _ S O U R C E _ D I R } ; $ { P R O J E C T _ S O U R C E _ D I R } / u i "
2020-12-14 16:47:13 +00:00
A U T O M O C O N
A U T O R C C O N
2020-06-11 20:35:44 +00:00
A U T O G E N _ B U I L D _ D I R " $ { P R O J E C T _ B I N A R Y _ D I R } / g e n e r a t e d "
2020-04-05 08:33:35 +00:00
)
endif ( )
2021-02-19 09:59:24 +00:00
# MacOS: Disable automatic Code Signing in Xcode
if ( D_PLATFORM_MAC )
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
X C O D E _ A T T R I B U T E _ C O D E _ S I G N _ I D E N T I T Y " "
X C O D E _ A T T R I B U T E _ C O D E _ S I G N I N G _ R E Q U I R E D " N O "
)
endif ( )
2020-12-14 16:47:13 +00:00
################################################################################
# Extra Tools
################################################################################
# Clang
is_feature_enabled ( CLANG T_CHECK )
if ( T_CHECK AND HAVE_CLANG )
2020-04-18 14:23:08 +00:00
generate_compile_commands_json (
T A R G E T S $ { P R O J E C T _ N A M E }
)
clang_tidy (
2020-09-28 19:08:07 +00:00
T A R G E T S $ { P R O J E C T _ N A M E }
2020-04-18 14:23:08 +00:00
V E R S I O N 9 . 0 . 0
)
2020-04-05 08:33:35 +00:00
clang_format (
T A R G E T S $ { P R O J E C T _ N A M E }
D E P E N D E N C Y
V E R S I O N 9 . 0 . 0
)
endif ( )
2021-02-18 19:44:54 +00:00
# Apple otool
if ( D_PLATFORM_MAC )
# OBS
2021-03-22 21:14:19 +00:00
mac_get_linker_id ( TARGET libobs OUTPUT T_OBS_LINK )
2021-02-18 19:44:54 +00:00
add_custom_command ( TARGET ${ PROJECT_NAME } POST_BUILD
2021-03-22 21:14:19 +00:00
C O M M A N D i n s t a l l _ n a m e _ t o o l A R G S - c h a n g e " $ { T _ O B S _ L I N K } " " @ e x e c u t a b l e _ p a t h / . . / F r a m e w o r k s / l i b o b s . 0 . d y l i b " $ < T A R G E T _ F I L E : $ { P R O J E C T _ N A M E } >
2021-02-18 19:44:54 +00:00
)
message ( STATUS "${LOGPREFIX} Added post-build step for adjusting libobs linking path." )
# OBS Front-End API
2021-03-22 21:14:19 +00:00
if ( REQUIRE_OBSFE AND HAVE_OBSFE )
mac_get_linker_id ( TARGET obs-frontend-api OUTPUT T_OBSFE_LINK )
2021-02-18 19:44:54 +00:00
add_custom_command ( TARGET ${ PROJECT_NAME } POST_BUILD
2021-03-22 21:14:19 +00:00
C O M M A N D i n s t a l l _ n a m e _ t o o l A R G S - c h a n g e " $ { T _ O B S F E _ L I N K } " " @ e x e c u t a b l e _ p a t h / . . / F r a m e w o r k s / l i b o b s - f r o n t e n d - a p i . d y l i b " $ < T A R G E T _ F I L E : $ { P R O J E C T _ N A M E } >
2021-02-18 19:44:54 +00:00
)
message ( STATUS "${LOGPREFIX} Added post-build step for adjusting libobs-frontend-api linking path." )
endif ( )
# Qt5
if ( REQUIRE_QT AND HAVE_QT )
2021-03-22 21:14:19 +00:00
# Figure out the linker location for Qt5::Core
mac_get_linker_id ( TARGET Qt5::Core OUTPUT T_QT5CORE_LINK )
# Figure out the linker location for Qt5::Gui
mac_get_linker_id ( TARGET Qt5::Gui OUTPUT T_QT5GUI_LINK )
# Figure out the linker location for Qt5::Widsgets
mac_get_linker_id ( TARGET Qt5::Widgets OUTPUT T_QT5WIDGETS_LINK )
2021-02-18 19:44:54 +00:00
add_custom_command ( TARGET ${ PROJECT_NAME } POST_BUILD
# - QtCore
2021-03-22 21:14:19 +00:00
C O M M A N D i n s t a l l _ n a m e _ t o o l A R G S - c h a n g e " $ { T _ Q T 5 C O R E _ L I N K } " " @ e x e c u t a b l e _ p a t h / . . / F r a m e w o r k s / Q t C o r e . f r a m e w o r k / V e r s i o n s / 5 / Q t C o r e " $ < T A R G E T _ F I L E : $ { P R O J E C T _ N A M E } >
2021-02-18 19:44:54 +00:00
# - QtGui
2021-03-22 21:14:19 +00:00
C O M M A N D i n s t a l l _ n a m e _ t o o l A R G S - c h a n g e " $ { T _ Q T 5 G U I _ L I N K } " " @ e x e c u t a b l e _ p a t h / . . / F r a m e w o r k s / Q t G u i . f r a m e w o r k / V e r s i o n s / 5 / Q t G u i " $ < T A R G E T _ F I L E : $ { P R O J E C T _ N A M E } >
2021-02-18 19:44:54 +00:00
# - QtWidgets
2021-03-22 21:14:19 +00:00
C O M M A N D i n s t a l l _ n a m e _ t o o l A R G S - c h a n g e " $ { T _ Q T 5 W I D G E T S _ L I N K } " " @ e x e c u t a b l e _ p a t h / . . / F r a m e w o r k s / Q t W i d g e t s . f r a m e w o r k / V e r s i o n s / 5 / Q t W i d g e t s " $ < T A R G E T _ F I L E : $ { P R O J E C T _ N A M E } >
2021-02-18 19:44:54 +00:00
)
2021-03-22 21:14:19 +00:00
message ( STATUS "${LOGPREFIX} Added post-build step for adjusting Qt5::Core linking path (Found: ${Qt5_DIR} resolved to ${T_QT5CORE_LINK})." )
message ( STATUS "${LOGPREFIX} Added post-build step for adjusting Qt5::Gui linking path (Found: ${Qt5_DIR} resolved to ${T_QT5GUI_LINK})." )
message ( STATUS "${LOGPREFIX} Added post-build step for adjusting Qt5::Widgets linking path (Found: ${Qt5_DIR} resolved to ${T_QT5WIDGETS_LINK})." )
2021-02-18 19:44:54 +00:00
endif ( )
endif ( )
2017-06-28 21:21:42 +00:00
################################################################################
2018-09-25 23:17:08 +00:00
# Installation
2017-06-28 21:21:42 +00:00
################################################################################
2020-09-28 19:08:07 +00:00
if ( ${ PREFIX } OBS_NATIVE )
2020-12-14 16:47:13 +00:00
# Grouped builds don't offer standalone services.
2018-09-25 23:17:08 +00:00
install_obs_plugin_with_data ( ${ PROJECT_NAME } data )
2021-08-28 12:36:42 +00:00
# Dependency: AOM
if ( HAVE_AOM AND AOM_BINARY AND D_PLATFORM_WINDOWS )
add_custom_command ( TARGET ${ PROJECT_NAME } POST_BUILD
C O M M A N D " $ { C M A K E _ C O M M A N D } " - E c o p y
" $ { A O M _ B I N A R Y } "
" $ { C M A K E _ B I N A R Y _ D I R } / r u n d i r / $ < C O N F I G U R A T I O N > / d a t a / o b s - p l u g i n s / $ { P R O J E C T _ N A M E } "
V E R B A T I M )
endif ( )
2018-12-23 19:49:18 +00:00
else ( )
2021-01-31 21:05:23 +00:00
if ( STRUCTURE_UNIFIED )
install (
D I R E C T O R Y " d a t a / "
D E S T I N A T I O N " d a t a / "
F I L E _ P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
D I R E C T O R Y _ P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
)
if ( D_PLATFORM_WINDOWS )
install (
T A R G E T S $ { P R O J E C T _ N A M E }
R U N T I M E D E S T I N A T I O N " b i n / w i n d o w s - $ { D _ P L A T F O R M _ I N S T R } - $ { D _ P L A T F O R M _ B I T S } / " C O M P O N E N T S t r e a m F X
L I B R A R Y D E S T I N A T I O N " b i n / w i n d o w s - $ { D _ P L A T F O R M _ I N S T R } - $ { D _ P L A T F O R M _ B I T S } / " C O M P O N E N T S t r e a m F X
P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
)
if ( MSVC )
install (
F I L E S $ < T A R G E T _ P D B _ F I L E : $ { P R O J E C T _ N A M E } >
D E S T I N A T I O N " b i n / w i n d o w s - $ { D _ P L A T F O R M _ I N S T R } - $ { D _ P L A T F O R M _ B I T S } / "
C O M P O N E N T S t r e a m F X
O P T I O N A L
)
endif ( )
2021-08-28 12:36:42 +00:00
# Dependency: AOM
if ( HAVE_AOM AND AOM_BINARY AND D_PLATFORM_WINDOWS )
install (
F I L E S $ { A O M _ B I N A R Y }
D E S T I N A T I O N " d a t a / " C O M P O N E N T S t r e a m F X
)
endif ( )
2021-01-31 21:05:23 +00:00
elseif ( D_PLATFORM_LINUX )
install (
T A R G E T S $ { P R O J E C T _ N A M E }
R U N T I M E D E S T I N A T I O N " b i n / l i n u x - $ { D _ P L A T F O R M _ I N S T R } - $ { D _ P L A T F O R M _ B I T S } / " C O M P O N E N T S t r e a m F X
L I B R A R Y D E S T I N A T I O N " b i n / l i n u x - $ { D _ P L A T F O R M _ I N S T R } - $ { D _ P L A T F O R M _ B I T S } / " C O M P O N E N T S t r e a m F X
P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
)
elseif ( D_PLATFORM_MAC )
install (
T A R G E T S $ { P R O J E C T _ N A M E }
R U N T I M E D E S T I N A T I O N " b i n / m a c - $ { D _ P L A T F O R M _ I N S T R } - $ { D _ P L A T F O R M _ B I T S } / " C O M P O N E N T S t r e a m F X
L I B R A R Y D E S T I N A T I O N " b i n / m a c - $ { D _ P L A T F O R M _ I N S T R } - $ { D _ P L A T F O R M _ B I T S } / " C O M P O N E N T S t r e a m F X
P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
)
endif ( )
install (
F I L E S L I C E N S E
D E S T I N A T I O N " L I C E N S E "
C O M P O N E N T S t r e a m F X
)
install (
F I L E S i c o n . p n g
D E S T I N A T I O N " i c o n . p n g "
C O M P O N E N T S t r e a m F X
)
elseif ( D_PLATFORM_WINDOWS )
install (
T A R G E T S $ { P R O J E C T _ N A M E }
R U N T I M E D E S T I N A T I O N " o b s - p l u g i n s / $ { D _ P L A T F O R M _ B I T S } b i t / " C O M P O N E N T S t r e a m F X
L I B R A R Y D E S T I N A T I O N " o b s - p l u g i n s / $ { D _ P L A T F O R M _ B I T S } b i t / " C O M P O N E N T S t r e a m F X
)
install (
D I R E C T O R Y " d a t a / "
D E S T I N A T I O N " d a t a / o b s - p l u g i n s / $ { P R O J E C T _ N A M E } / "
)
if ( MSVC )
install (
F I L E S $ < T A R G E T _ P D B _ F I L E : $ { P R O J E C T _ N A M E } >
D E S T I N A T I O N " o b s - p l u g i n s / $ { D _ P L A T F O R M _ B I T S } b i t / "
O P T I O N A L
)
endif ( )
2021-08-28 12:36:42 +00:00
# Dependency: AOM
if ( HAVE_AOM AND AOM_BINARY AND D_PLATFORM_WINDOWS )
install (
F I L E S $ { A O M _ B I N A R Y }
D E S T I N A T I O N " d a t a / o b s - p l u g i n s / $ { P R O J E C T _ N A M E } / " C O M P O N E N T S t r e a m F X
)
endif ( )
2021-01-31 21:05:23 +00:00
elseif ( D_PLATFORM_LINUX )
if ( STRUCTURE_PACKAGEMANAGER )
install (
T A R G E T S $ { P R O J E C T _ N A M E }
R U N T I M E D E S T I N A T I O N " l i b / o b s - p l u g i n s / " C O M P O N E N T S t r e a m F X
L I B R A R Y D E S T I N A T I O N " l i b / o b s - p l u g i n s / " C O M P O N E N T S t r e a m F X
P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
)
install (
D I R E C T O R Y " d a t a / "
D E S T I N A T I O N " s h a r e / o b s / o b s - p l u g i n s / $ { P R O J E C T _ N A M E } "
C O M P O N E N T S t r e a m F X
F I L E _ P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
D I R E C T O R Y _ P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
)
else ( )
install (
T A R G E T S $ { P R O J E C T _ N A M E }
R U N T I M E D E S T I N A T I O N " p l u g i n s / $ { P R O J E C T _ N A M E } / b i n / $ { D _ P L A T F O R M _ B I T S } b i t / " C O M P O N E N T S t r e a m F X
L I B R A R Y D E S T I N A T I O N " p l u g i n s / $ { P R O J E C T _ N A M E } / b i n / $ { D _ P L A T F O R M _ B I T S } b i t / " C O M P O N E N T S t r e a m F X
P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
)
install (
D I R E C T O R Y " d a t a / "
D E S T I N A T I O N " p l u g i n s / $ { P R O J E C T _ N A M E } / d a t a / "
C O M P O N E N T S t r e a m F X
F I L E _ P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
D I R E C T O R Y _ P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
)
endif ( )
elseif ( D_PLATFORM_MAC )
install (
T A R G E T S $ { P R O J E C T _ N A M E }
2021-02-21 03:04:10 +00:00
R U N T I M E D E S T I N A T I O N " $ { P R O J E C T _ N A M E } / b i n / " C O M P O N E N T S t r e a m F X
L I B R A R Y D E S T I N A T I O N " $ { P R O J E C T _ N A M E } / b i n / " C O M P O N E N T S t r e a m F X
2021-01-31 21:05:23 +00:00
P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
)
install (
D I R E C T O R Y " d a t a / "
2021-02-21 03:04:10 +00:00
D E S T I N A T I O N " $ { P R O J E C T _ N A M E } / d a t a / "
2021-01-31 21:05:23 +00:00
C O M P O N E N T S t r e a m F X
F I L E _ P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
D I R E C T O R Y _ P E R M I S S I O N S W O R L D _ E X E C U T E ; W O R L D _ R E A D ; O W N E R _ E X E C U T E ; O W N E R _ R E A D ; O W N E R _ W R I T E ; G R O U P _ E X E C U T E ; G R O U P _ R E A D ; G R O U P _ W R I T E
)
endif ( )
endif ( )
################################################################################
# Packaging
################################################################################
if ( NOT ${ PREFIX } OBS_NATIVE )
# Packaging
if ( NOT PACKAGE_SUFFIX )
set ( _PACKAGE_SUFFIX_OVERRIDE "${VERSION_STRING}" )
else ( )
set ( _PACKAGE_SUFFIX_OVERRIDE "${PACKAGE_SUFFIX}" )
endif ( )
set ( _PACKAGE_FULL_NAME "${PACKAGE_PREFIX}/${PACKAGE_NAME}-${_PACKAGE_SUFFIX_OVERRIDE}" )
if ( STRUCTURE_UNIFIED )
add_custom_target (
P A C K A G E _ Z I P
$ { C M A K E _ C O M M A N D } - E t a r c f v " $ { _ P A C K A G E _ F U L L _ N A M E } . o b s " - - f o r m a t = z i p - -
" . "
W O R K I N G _ D I R E C T O R Y " $ { C M A K E _ I N S T A L L _ P R E F I X } "
)
else ( )
add_custom_target (
P A C K A G E _ 7 Z
$ { C M A K E _ C O M M A N D } - E t a r c f v " $ { _ P A C K A G E _ F U L L _ N A M E } . 7 z " - - f o r m a t = 7 z i p - -
" . "
W O R K I N G _ D I R E C T O R Y " $ { C M A K E _ I N S T A L L _ P R E F I X } "
)
add_custom_target (
P A C K A G E _ Z I P
$ { C M A K E _ C O M M A N D } - E t a r c f v " $ { _ P A C K A G E _ F U L L _ N A M E } . z i p " - - f o r m a t = z i p - -
" . "
W O R K I N G _ D I R E C T O R Y " $ { C M A K E _ I N S T A L L _ P R E F I X } "
)
# Windows
if ( D_PLATFORM_WINDOWS )
## Installer (InnoSetup)
get_filename_component ( ISS_FILES_DIR "${CMAKE_INSTALL_PREFIX}" ABSOLUTE )
file ( TO_NATIVE_PATH "${ISS_FILES_DIR}" ISS_FILES_DIR )
2021-03-15 05:48:24 +00:00
2021-03-28 05:44:16 +00:00
get_filename_component ( ISS_PACKAGE_DIR "${PACKAGE_PREFIX}" ABSOLUTE )
2021-01-31 21:05:23 +00:00
file ( TO_NATIVE_PATH "${ISS_PACKAGE_DIR}" ISS_PACKAGE_DIR )
2021-03-15 05:48:24 +00:00
2021-01-31 21:05:23 +00:00
get_filename_component ( ISS_SOURCE_DIR "${PROJECT_SOURCE_DIR}" ABSOLUTE )
file ( TO_NATIVE_PATH "${ISS_SOURCE_DIR}" ISS_SOURCE_DIR )
2021-03-15 05:48:24 +00:00
2021-01-31 21:05:23 +00:00
get_filename_component ( ISS_MSVCHELPER_PATH "${msvc-redist-helper_BUILD_DIR}" ABSOLUTE )
file ( TO_NATIVE_PATH "${ISS_MSVCHELPER_PATH}" ISS_MSVCHELPER_PATH )
2021-03-15 05:48:24 +00:00
2021-01-31 21:05:23 +00:00
configure_file (
" t e m p l a t e s / i n s t a l l e r . i s s . i n "
2021-03-15 05:48:24 +00:00
" i n s t a l l e r . i s s "
)
endif ( )
# Apple MacOS
if ( D_PLATFORM_MAC )
# .pkg Installer
configure_file (
" t e m p l a t e s / i n s t a l l e r . p k g p r o j . i n "
" i n s t a l l e r . p k g p r o j "
@ O N L Y
2021-01-31 21:05:23 +00:00
)
endif ( )
endif ( )
2018-12-23 19:49:18 +00:00
endif ( )