2022-09-18 16:30:41 +00:00
# Copyright (C) 2017-2022 Michael Fabian Dirks
2022-09-05 07:21:17 +00:00
# Copyright (C) 2022 Romain Vigier
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
2022-06-02 04:40:10 +00:00
cmake_minimum_required ( VERSION 3.13...4.0 )
2017-11-02 23:30:53 +00:00
2022-05-31 20:33:34 +00:00
if ( ${ CMAKE_VERSION } VERSION_LESS 3.19 )
2022-06-10 17:52:52 +00:00
set ( LOGPREFIX "[StreamFX] " )
2022-05-31 20:33:34 +00:00
else ( )
2022-06-10 17:52:52 +00:00
list ( APPEND CMAKE_MESSAGE_INDENT "[StreamFX] " )
2022-05-31 20:33:34 +00:00
set ( LOGPREFIX "" )
endif ( )
2022-09-03 18:06:33 +00:00
# MacOSX: Require at least MacOSX 10.15 for C++17 support.
if ( APPLE )
if ( CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS 10.15 )
CacheSet ( CMAKE_OSX_DEPLOYMENT_TARGET "10.15" )
endif ( )
endif ( )
2022-06-21 17:09:45 +00:00
################################################################################
# Modules
################################################################################
# Search Paths
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 / m o d u l e s "
" $ { 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 / v e r s i o n "
" $ { 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 "
)
# Include
include ( "util" ) # CacheClear, CacheSet
include ( "version" ) # version()
include ( "CheckIPOSupported" ) # check_ipo_supported
2021-01-31 14:57:42 +00:00
################################################################################
2022-05-31 20:33:34 +00:00
# Detect if we are building with OBS Studio (different from Grouped builds)
2021-01-31 14:57:42 +00:00
################################################################################
2022-05-31 20:33:34 +00:00
set ( STANDALONE ON )
2021-01-31 14:57:42 +00:00
if ( "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_LIST_DIR}" )
set ( GROUPED OFF )
set ( PREFIX "" )
else ( )
set ( GROUPED ON )
2022-06-02 06:55:40 +00:00
set ( PREFIX "StreamFX_" )
2022-08-06 20:03:38 +00:00
if ( GROUPED AND ( ( TARGET libobs ) OR ( TARGET OBS::libobs ) ) )
2022-05-31 20:33:34 +00:00
set ( STANDALONE OFF )
endif ( )
endif ( )
if ( STANDALONE )
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}This is a standalone build, please make sure you've followed the instructions." )
2022-05-31 20:33:34 +00:00
else ( )
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}This is a combined build." )
2021-01-31 14:57:42 +00:00
endif ( )
################################################################################
# Versioning
################################################################################
2022-06-21 17:09:45 +00:00
# For automatic versioning, which version is the "root" of the current changes?
2022-08-21 04:57:26 +00:00
set ( _VERSION_GIT_BASE "0.11.0" )
2022-06-11 06:02:41 +00:00
2022-06-21 17:09:45 +00:00
# What is our version goal?
2022-08-21 04:57:26 +00:00
set ( _VERSION "0.12.0" )
version ( PARSE _VERSION "${_VERSION}" )
2021-01-31 14:57:42 +00:00
2022-06-21 17:09:45 +00:00
# If possible, automatically generate versions from git.
2019-10-13 03:42:54 +00:00
if ( EXISTS "${CMAKE_CURRENT_LIST_DIR}/.git" )
2022-06-21 17:09:45 +00:00
find_program ( GIT
N A M E S
g i t
g i t . e x e
)
if ( EXISTS "${GIT}" )
# Calculate the Tweak version component from the given base version.
2021-01-31 14:57:42 +00:00
execute_process (
2022-08-21 04:57:26 +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 " $ { _ V E R S I O N _ G I T _ B A S E } " - - 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
2022-08-21 04:57:26 +00:00
O U T P U T _ V A R I A B L E _ V E R S I O N _ G I T
2021-01-31 14:57:42 +00:00
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
)
2022-06-21 17:09:45 +00:00
if ( GIT_RESULT EQUAL 0 )
# Some minor string editing so the output conforms to SemVer 2.0.0.
2022-08-21 04:57:26 +00:00
string ( REPLACE "-" ";" _VERSION_GIT "${_VERSION_GIT}" )
2022-06-21 17:09:45 +00:00
# Parse as SemVer 2.0.0
2022-08-21 04:57:26 +00:00
list ( GET _VERSION_GIT 1 _VERSION_GIT_TWEAK )
list ( GET _VERSION_GIT 2 _VERSION_GIT_BUILD )
2022-06-21 17:09:45 +00:00
# Update our global version.
2022-08-21 04:57:26 +00:00
version ( MODIFY _VERSION "${_VERSION}" COMPRESS
T W E A K " $ { _ V E R S I O N _ G I T _ T W E A K } "
B U I L D " $ { _ V E R S I O N _ G I T _ B U I L D } "
2022-06-21 17:09:45 +00:00
P R E R E L E A S E " a "
2022-08-21 04:57:26 +00:00
R E Q U I R E P A T C H T W E A K
2022-06-21 17:09:45 +00:00
)
2022-08-21 04:57:26 +00:00
version ( PARSE _VERSION "${_VERSION}" REQUIRE PATCH TWEAK )
2022-06-11 06:02:41 +00:00
else ( )
2022-06-21 17:09:45 +00:00
message ( WARNING "${LOGPREFIX}Unable to detect Tweak and Build component with 'git'." )
2022-06-11 06:02:41 +00:00
endif ( )
# Is there a tag on the current commit?
execute_process (
C O M M A N D " $ { G I T } " t a g " - - s o r t = - v : r e f n a m e " " - - p o i n t s - a t " H E A D
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
2022-08-21 04:57:26 +00:00
O U T P U T _ V A R I A B L E _ V E R S I O N _ T A G
2022-06-11 06:02:41 +00:00
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
)
2022-08-21 04:57:26 +00:00
if ( ( GIT_RESULT EQUAL 0 ) AND ( NOT "${_VERSION_TAG}" STREQUAL "" ) )
2022-06-21 17:09:45 +00:00
# Some minor string editing so the output conforms to SemVer 2.0.0.
2022-08-21 04:57:26 +00:00
string ( REGEX REPLACE "[\r\n]+.*" "" _VERSION_TAG "${_VERSION_TAG}" )
2022-06-21 17:09:45 +00:00
# Parse as SemVer 2.0.0
2022-08-21 04:57:26 +00:00
version ( PARSE _VERSION_TAG "${_VERSION_TAG}" REQUIRE PATCH TWEAK )
if ( _VERSION_TAG_PRERELEASE )
string ( SUBSTRING "${_VERSION_TAG_PRERELEASE}" 1 -1 _VERSION_TAG_TWEAK )
string ( SUBSTRING "${_VERSION_TAG_PRERELEASE}" 0 1 _VERSION_TAG_PRERELEASE )
2022-06-21 17:09:45 +00:00
2022-08-21 04:57:26 +00:00
if ( NOT _VERSION_TAG_TWEAK STREQUAL _VERSION_GIT_TWEAK )
message ( WARNING "${LOGPREFIX}'git' tag mismatches detected version: '${_VERSION_TAG_TWEAK}' != '${_VERSION_GIT_TWEAK}'." )
2022-06-21 17:09:45 +00:00
endif ( )
endif ( )
# Update our global version.
2022-08-21 04:57:26 +00:00
version ( GENERATE _VERSION COMPRESS
M A J O R " $ { _ V E R S I O N _ T A G _ M A J O R } "
M I N O R " $ { _ V E R S I O N _ T A G _ M I N O R } "
P A T C H " $ { _ V E R S I O N _ T A G _ P A T C H } "
T W E A K " $ { _ V E R S I O N _ T A G _ T W E A K } "
P R E R E L E A S E " $ { _ V E R S I O N _ T A G _ P R E R E L E A S E } "
B U I L D " $ { _ V E R S I O N _ B U I L D } "
R E Q U I R E P A T C H T W E A K
2022-06-21 17:09:45 +00:00
)
2022-08-21 04:57:26 +00:00
version ( PARSE _VERSION "${_VERSION}" REQUIRE PATCH TWEAK )
2021-01-31 14:57:42 +00:00
endif ( )
2022-06-21 17:09:45 +00:00
else ( )
message ( STATUS "${LOGPREFIX}'git' not found, automatic version detection disabled." )
2019-10-13 03:42:54 +00:00
endif ( )
2021-03-23 19:41:20 +00:00
else ( )
2022-06-10 17:52:52 +00:00
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.
2022-06-21 17:09:45 +00:00
set ( ${ PREFIX } VERSION "" CACHE STRING "Override detected or pre-configured version with this string. Accepts strings in CMake and SemVer 2.0.0 format." )
if ( NOT ( "${${PREFIX}VERSION}" STREQUAL "" ) )
2022-08-21 04:57:26 +00:00
version ( PARSE _VERSION_CFG "${${PREFIX}VERSION}" REQUIRE PATCH TWEAK )
if ( "${_VERSION_CFG_BUILD}" STREQUAL "" )
set ( _VERSION_CFG_BUILD "${_VERSION_BUILD}" )
2022-06-21 17:09:45 +00:00
endif ( )
2022-08-21 04:57:26 +00:00
version ( GENERATE _VERSION COMPRESS
M A J O R " $ { _ V E R S I O N _ C F G _ M A J O R } "
M I N O R " $ { _ V E R S I O N _ C F G _ M I N O R } "
P A T C H " $ { _ V E R S I O N _ C F G _ P A T C H } "
T W E A K " $ { _ V E R S I O N _ C F G _ T W E A K } "
P R E R E L E A S E " $ { _ V E R S I O N _ C F G _ P R E R E L E A S E } "
B U I L D " $ { _ V E R S I O N _ C F G _ B U I L D } "
2022-06-21 17:09:45 +00:00
)
2020-04-22 20:49:09 +00:00
endif ( )
2018-04-24 10:31:43 +00:00
2022-08-21 04:57:26 +00:00
set ( _VERSION_THIN "${_VERSION_MAJOR}.${_VERSION_MINOR}.${_VERSION_PATCH}" )
if ( NOT ( _VERSION_PRERELEASE STREQUAL "" ) )
set ( _VERSION_THIN "${_VERSION_THIN}${_VERSION_PRERELEASE}${_VERSION_TWEAK}" )
endif ( )
if ( NOT ( VERSION_COMMIT STREQUAL "" ) )
set ( _VERSION_THIN "${_VERSION_THIN}-${_VERSION_BUILD}" )
endif ( )
2022-06-21 17:09:45 +00:00
# Parse & Log the detected version.
2022-08-21 04:57:26 +00:00
message ( STATUS "${LOGPREFIX}Version ${_VERSION}" )
2021-01-31 14:57:42 +00:00
################################################################################
# Project
################################################################################
2022-07-30 22:14:24 +00:00
# Metadata
2022-08-21 04:57:26 +00:00
version ( GENERATE PROJECT_VERSION
M A J O R " $ { _ V E R S I O N _ M A J O R } "
M I N O R " $ { _ V E R S I O N _ M I N O R } "
P A T C H " $ { _ V E R S I O N _ P A T C H } "
T W E A K " $ { _ V E R S I O N _ T W E A K } "
R E Q U I R E P A T C H T W E A K
2022-06-21 17:09:45 +00:00
)
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
2022-08-21 04:57:26 +00:00
V E R S I O N $ { P R O J E C T _ V E R S I O N }
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
)
2022-09-03 18:06:33 +00:00
set ( PROJECT_IDENTIFER "com.xaymar.${PROJECT_NAME}.obs" )
2022-07-30 22:14:24 +00:00
set ( PROJECT_TITLE "StreamFX (for OBS Studio)" )
2018-12-23 19:49:18 +00:00
set ( PROJECT_AUTHORS "Michael Fabian 'Xaymar' Dirks <info@xaymar.com>" )
2022-07-30 22:14:24 +00:00
set ( PROJECT_COPYRIGHT "2017 - 2022, Michael Fabian Dirks. All Rights Reserved" )
set ( PROJECT_TRADEMARKS "" )
list ( APPEND PROJECT_TRADEMARKS
" A M D i s a t r a d e m a r k o f A d v a n c e d M i c r o D e v i c e s I n c . "
" N V I D I A i s a t r a d e m a r k o f N v i d i a C o r p o r a t i o n "
)
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 )
2022-06-10 17:52:52 +00:00
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
2022-05-10 17:29:58 +00:00
set ( ARCH_INSTR_32 "i386;i686;x86;arm;ARM" )
set ( ARCH_INSTR_64 "x86_64;AMD64;IA64;arm64;ARM64" )
set ( ARCH_INSTR_X86 "i386;i686;x86;x86_64;AMD64" )
set ( ARCH_INSTR_ARM "arm;ARM;arm64;ARM64" )
set ( ARCH_INSTR_ITANIUM "IA64" )
set ( ARCH_BITS 0 )
set ( ARCH_BITS_POINTER 0 )
set ( ARCH_INST "" )
# - Bitness
list ( FIND ARCH_INSTR_32 "${CMAKE_SYSTEM_PROCESSOR}" FOUND )
if ( FOUND GREATER -1 )
set ( ARCH_BITS 32 )
2020-12-14 16:47:13 +00:00
endif ( )
2022-05-10 17:29:58 +00:00
list ( FIND ARCH_INSTR_64 "${CMAKE_SYSTEM_PROCESSOR}" FOUND )
if ( FOUND GREATER -1 )
set ( ARCH_BITS 64 )
endif ( )
2020-12-14 16:47:13 +00:00
set ( D_PLATFORM_BITS ${ ARCH_BITS } )
2022-05-10 17:29:58 +00:00
# - Pointer Size (bits)
math ( EXPR ARCH_BITS_POINTER "8*${CMAKE_SIZEOF_VOID_P}" )
set ( D_PLATFORM_BITS_PTR ${ ARCH_BITS_POINTER } )
2020-09-28 00:07:53 +00:00
2022-05-10 17:29:58 +00:00
# - Basic Instruction Set
list ( FIND ARCH_INSTR_X86 "${CMAKE_SYSTEM_PROCESSOR}" FOUND )
if ( FOUND GREATER -1 )
list ( APPEND ARCH_INST "x86" )
set ( D_PLATFORM_INSTR_X86 ON )
set ( D_PLATFORM_ARCH_X86 ON )
endif ( )
2021-03-22 21:14:19 +00:00
2022-05-10 17:29:58 +00:00
list ( FIND ARCH_INSTR_ARM "${CMAKE_SYSTEM_PROCESSOR}" FOUND )
if ( FOUND GREATER -1 )
list ( APPEND ARCH_INST "ARM" )
set ( D_PLATFORM_INSTR_ARM ON )
set ( D_PLATFORM_ARCH_ARM ON )
endif ( )
2021-03-22 21:14:19 +00:00
2022-05-10 17:29:58 +00:00
list ( FIND ARCH_INSTR_ITANIUM "${CMAKE_SYSTEM_PROCESSOR}" FOUND )
if ( FOUND GREATER -1 )
list ( APPEND ARCH_INST "Itanium" )
set ( D_PLATFORM_INSTR_ITANIUM ON )
set ( D_PLATFORM_ARCH_ITANIUM ON )
2019-09-04 01:32:18 +00:00
endif ( )
2022-05-31 20:33:34 +00:00
check_ipo_supported ( RESULT D_HAS_IPO )
2022-05-10 17:29:58 +00:00
set ( D_PLATFORM_INSTR ${ ARCH_INST } )
set ( D_PLATFORM_ARCH ${ ARCH_INST } )
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Target is ${D_PLATFORM_BITS}bit ${ARCH_INST} with a pointer size of ${D_PLATFORM_BITS_PTR}bit." )
2022-05-10 17:29:58 +00:00
2020-09-28 19:08:07 +00:00
################################################################################
# Options
################################################################################
2022-08-06 20:03:38 +00:00
# Dependencies
if ( STANDALONE )
set ( libobs_DIR "" CACHE PATH "Path to libobs and obs-frontend-api" )
set ( Qt_DIR "" CACHE PATH "Path to Qt6 or Qt5" )
set ( CURL_DIR "" CACHE PATH "Path to CURL" )
set ( FFmpeg_DIR "" CACHE PATH "Path to FFmpeg" )
endif ( )
set ( AOM_DIR "" CACHE PATH "Path to AOM library" )
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." )
2022-02-24 22:04:32 +00:00
set ( ${ PREFIX } ENABLE_ENCODER_FFMPEG_DNXHR ON CACHE BOOL "Enable DNXHR 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
2021-10-25 18:40:55 +00:00
set ( ${ PREFIX } ENABLE_FILTER_AUTOFRAMING ON CACHE BOOL "Enable Auto-Framing Filter" )
set ( ${ PREFIX } ENABLE_FILTER_AUTOFRAMING_NVIDIA ON CACHE BOOL "Enable NVIDIA provider(s) Auto-Framing Filter" )
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" )
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
2022-05-31 20:33:34 +00:00
set ( ${ PREFIX } ENABLE_CLANG OFF CACHE BOOL "Enable Clang integration for supported compilers." )
2020-12-14 16:47:13 +00:00
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." )
2022-05-31 20:33:34 +00:00
## Compile/Link Related
set ( ${ PREFIX } ENABLE_LTO ${ D_HAS_IPO } CACHE BOOL "Enable Link Time Optimization for faster and smaller binaries." )
2022-06-02 06:55:40 +00:00
set ( ${ PREFIX } ENABLE_FASTMATH ON CACHE BOOL "Enable fast math optimizations, which sacrifice precision and stability." )
2022-05-31 20:33:34 +00:00
if ( D_PLATFORM_ARCH_X86 )
set ( ${ PREFIX } TARGET_X86_64_V4 OFF CACHE BOOL "Target x86-64-v4 (x86-64-v3, AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL)." )
set ( ${ PREFIX } TARGET_X86_64_V3 OFF CACHE BOOL "Target x86-64-v3 (x86-64-v2, AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, OSXSAVE)." )
set ( ${ PREFIX } TARGET_X86_64_V2_EX ON CACHE BOOL "Target extended x86-64-v2 (x86-64-v2, AVX, BMI1, BMI2, F16C, FMA, MOVBE)." )
set ( ${ PREFIX } TARGET_X86_64_V2 ON CACHE BOOL "Target x86-64-v2 (x86-64, CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3)." )
set ( ${ PREFIX } TARGET_X86_64 ON CACHE BOOL "Target x86-64 (CMOV, CX8, FPU, FXSR, MMX, OSFXSR, SCE, SSE, SSE2)." )
endif ( )
if ( NOT MSVC )
set ( ${ PREFIX } TARGET_NATIVE OFF CACHE BOOL "Target the native CPU architecture. Enable it for development or personal builds, but disable it for distribution." )
endif ( )
2022-05-31 20:33:34 +00:00
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)" )
2022-09-03 18:06:33 +00:00
elseif ( D_PLATFORM_MAC )
set ( STRUCTURE_BUNDLE ON CACHE BOOL "Install as a Loadable Bundle (.plugin)" )
2021-01-31 21:05:23 +00:00
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" ) )
2021-11-14 01:57:15 +00:00
include ( "cmake/clang/Clang.cmake" )
2020-12-14 16:47:13 +00:00
set ( HAVE_CLANG ON )
endif ( )
2020-06-14 02:34:05 +00:00
2020-12-14 16:47:13 +00:00
################################################################################
2022-08-06 20:03:38 +00:00
# Component search paths
2020-12-14 16:47:13 +00:00
################################################################################
2022-08-06 20:03:38 +00:00
list ( APPEND CMAKE_PREFIX_PATH
" $ { $ { P R E F I X } A O M _ P A T H } "
" $ { $ { P R E F I X } O B S D E P S _ P A T H } "
" $ { $ { P R E F I X } Q T _ P A T H } "
" $ { A O M _ D I R } "
" $ { C U R L _ D I R } "
" $ { D e p s P a t h } "
" $ { F F m p e g _ D I R } "
" $ { l i b o b s _ D I R } "
" $ { Q t _ D I R } "
" $ { Q t 5 _ D I R } "
" $ { Q t 6 _ D I R } "
" $ { Q T D I R } "
)
if ( D_PLATFORM_MAC )
list ( APPEND CMAKE_PREFIX_PATH
" $ { $ { P R E F I X } A O M _ P A T H } / F r a m e w o r k s "
" $ { $ { P R E F I X } O B S D E P S _ P A T H } / F r a m e w o r k s "
" $ { $ { P R E F I X } Q T _ P A T H } / F r a m e w o r k s "
" $ { A O M _ D I R } / F r a m e w o r k s "
" $ { C U R L _ D I R } / F r a m e w o r k s "
" $ { D e p s P a t h } / F r a m e w o r k s "
" $ { F F m p e g _ D I R } / F r a m e w o r k s "
" $ { l i b o b s _ D I R } / F r a m e w o r k s "
" $ { Q t _ D I R } / F r a m e w o r k s "
" $ { Q t 5 _ D I R } / F r a m e w o r k s "
" $ { Q t 6 _ D I R } / F r a m e w o r k s "
" $ { Q T D I R } / F r a m e w o r k s "
)
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 )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}FFmpeg Encoder requires FFmpeg. Disabling..." )
2020-12-14 16:47:13 +00:00
set_feature_disabled ( ENCODER_FFMPEG ON )
else ( )
# AMF
is_feature_enabled ( ENCODER_FFMPEG_AMF T_CHECK )
if ( T_CHECK AND D_PLATFORM_MAC )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}FFmpeg Encoder 'AMF' requires Windows or Linux. Disabling..." )
2020-12-14 16:47:13 +00:00
set_feature_disabled ( ENCODER_FFMPEG_AMF ON )
endif ( )
# NVENC
is_feature_enabled ( ENCODER_FFMPEG_NVENC T_CHECK )
if ( T_CHECK AND D_PLATFORM_MAC )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}FFmpeg Encoder 'NVENC' requires Windows or Linux. Disabling..." )
2020-12-14 16:47:13 +00:00
set_feature_disabled ( ENCODER_FFMPEG_NVENC ON )
endif ( )
# ProRes
is_feature_enabled ( ENCODER_FFMPEG_PRORES T_CHECK )
2022-02-24 22:04:32 +00:00
# DNxHR
is_feature_enabled ( ENCODER_FFMPEG_DNXHR T_CHECK )
2020-12-14 16:47:13 +00:00
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 )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}AOM AV1 encoder missing AOM library. Disabling..." )
2021-08-28 12:36:42 +00:00
set_feature_disabled ( ENCODER_AOM_AV1 ON )
endif ( )
elseif ( T_CHECK )
set ( REQUIRE_AOM ON PARENT_SCOPE )
endif ( )
endfunction ( )
2021-10-25 18:40:55 +00:00
function ( feature_filter_autoframing RESOLVE )
is_feature_enabled ( FILTER_AUTOFRAMING T_CHECK )
if ( RESOLVE AND T_CHECK )
# Verify that the requirements for the providers are available
if ( NOT HAVE_NVIDIA_AR_SDK )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}'NVIDIA Augmented Reality SDK' is missing. Disabling NVIDIA provider..." )
2021-10-25 18:40:55 +00:00
set_feature_disabled ( FILTER_AUTOFRAMING_NVIDIA ON )
endif ( )
2021-11-07 14:49:02 +00:00
2021-10-25 18:40:55 +00:00
# Verify that we have at least one provider for Auto-Framing.
is_feature_enabled ( FILTER_AUTOFRAMING_NVIDIA T_CHECK_NVIDIA )
2022-05-31 20:33:34 +00:00
if ( NOT T_CHECK_NVIDIA )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}Auto-Framing has no available providers. Disabling..." )
2021-10-25 18:40:55 +00:00
set_feature_disabled ( FILTER_AUTOFRAMING ON )
endif ( )
elseif ( T_CHECK )
set ( REQUIRE_NVIDIA_AR_SDK ON PARENT_SCOPE )
set ( REQUIRE_NVIDIA_CUDA 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 )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}'NVIDIA Video Effects SDK' is missing. Disabling NVIDIA provider..." )
2021-05-01 16:31:13 +00:00
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 )
2022-05-31 20:33:34 +00:00
if ( NOT T_CHECK_NVIDIA )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}Denoising has no available providers. Disabling..." )
2021-05-01 16:31:13 +00:00
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_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 )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}'NVIDIA Video Effects SDK' is missing. Disabling NVIDIA provider(s)..." )
2021-09-27 22:16:21 +00:00
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 )
2022-05-31 20:33:34 +00:00
if ( NOT T_CHECK_NVIDIA )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}Upscaling has no available providers. Disabling..." )
2021-09-27 22:16:21 +00:00
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 )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}'NVIDIA Video Effects SDK' is missing. Disabling NVIDIA provider(s)..." )
2021-10-23 18:05:36 +00:00
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 )
2022-05-31 20:33:34 +00:00
if ( NOT T_CHECK_NVIDIA )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}Virtual Greenscreen has no available providers. Disabling..." )
2021-10-23 18:05:36 +00:00
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 )
2022-08-06 16:31:59 +00:00
if ( NOT ( Qt6_FOUND OR Qt5_FOUND ) )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}Front-End requires Qt. Disabling..." )
2020-12-14 16:47:13 +00:00
set_feature_disabled ( FRONTEND ON )
2022-08-06 20:03:38 +00:00
elseif ( NOT obs-frontend-api_FOUND )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}Front-End requires OBS FrontEnd API. Disabling..." )
2020-12-14 16:47:13 +00:00
set_feature_disabled ( FRONTEND ON )
2022-09-05 07:21:17 +00:00
elseif ( NOT HAVE_JSON )
message ( WARNING "${LOGPREFIX}Front-End requires nlohmann::json. Disabling..." )
set_feature_disabled ( FRONTEND ON )
2020-12-14 16:47:13 +00:00
endif ( )
elseif ( T_CHECK )
set ( REQUIRE_QT ON PARENT_SCOPE )
2022-05-31 20:33:34 +00:00
set ( REQUIRE_OBS_FRONTEND_API ON PARENT_SCOPE )
2022-09-05 07:21:17 +00:00
set ( REQUIRE_JSON ON PARENT_SCOPE )
2020-12-14 16:47:13 +00:00
endif ( )
endfunction ( )
function ( feature_updater RESOLVE )
is_feature_enabled ( UPDATER T_CHECK )
if ( RESOLVE AND T_CHECK )
2022-08-06 20:03:38 +00:00
if ( NOT CURL_FOUND )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}Updater requires CURL. Disabling..." )
2020-12-14 16:47:13 +00:00
set_feature_disabled ( UPDATER ON )
elseif ( NOT HAVE_JSON )
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}Updater requires nlohmann::json. Disabling..." )
2020-12-14 16:47:13 +00:00
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 )
2021-10-25 18:40:55 +00:00
feature_filter_autoframing ( 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_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
2022-05-31 20:33:34 +00:00
#- OBS: Library
if ( STANDALONE )
2022-08-06 20:03:38 +00:00
find_package ( "libobs" REQUIRED CONFIG )
elseif ( NOT TARGET OBS::libobs )
# Add the missing OBS::libobs alias target if possible.
add_library ( OBS::libobs ALIAS libobs )
2022-05-31 20:33:34 +00:00
endif ( )
2022-08-20 05:50:19 +00:00
if ( D_PLATFORM_MAC )
# We may need to reconstruct the include directories on MacOS.
get_target_property ( libobs_INTERFACE_INCLUDE_DIRECTORIES OBS::libobs INTERFACE_INCLUDE_DIRECTORIES )
if ( "${libobs_INTERFACE_INCLUDE_DIRECTORIES}" STREQUAL "libobs_INTERFACE_INCLUDE_DIRECTORIES-NOTFOUND" )
get_target_property ( libobs_IMPORTED_LOCATION_RELEASE OBS::libobs IMPORTED_LOCATION_RELEASE )
get_filename_component ( libobs_IMPORTED_LOCATION_RELEASE "${libobs_IMPORTED_LOCATION_RELEASE}" DIRECTORY )
get_filename_component ( libobs_IMPORTED_LOCATION_RELEASE "${libobs_IMPORTED_LOCATION_RELEASE}" DIRECTORY )
get_filename_component ( libobs_IMPORTED_LOCATION_RELEASE "${libobs_IMPORTED_LOCATION_RELEASE}" DIRECTORY )
set ( libobs_IMPORTED_LOCATION_RELEASE "${libobs_IMPORTED_LOCATION_RELEASE}/Headers" )
set_target_properties ( OBS::libobs PROPERTIES
I N T E R F A C E _ I N C L U D E _ D I R E C T O R I E S
" $ { l i b o b s _ I M P O R T E D _ L O C A T I O N _ R E L E A S E } "
)
endif ( )
endif ( )
2022-05-31 20:33:34 +00:00
#- OBS: Front-End API
2022-08-06 20:03:38 +00:00
set ( obs-frontend-api_FOUND OFF )
2022-05-31 20:33:34 +00:00
if ( REQUIRE_OBS_FRONTEND_API )
if ( STANDALONE )
2022-08-06 20:03:38 +00:00
find_package ( "obs-frontend-api" CONFIG )
set ( obs-frontend-api_FOUND "${obs-frontend-api_FOUND}" )
elseif ( TARGET obs-frontend-api )
set ( obs-frontend-api_FOUND ON )
2022-05-31 20:33:34 +00:00
endif ( )
2022-08-06 20:03:38 +00:00
if ( NOT TARGET OBS::obs-frontend-api )
add_library ( OBS::obs-frontend-api ALIAS obs-frontend-api )
2022-05-31 20:33:34 +00:00
endif ( )
endif ( )
2021-03-22 21:14:19 +00:00
#- CURL
2022-08-06 20:03:38 +00:00
set ( CURL_FOUND OFF )
2020-09-09 03:01:24 +00:00
if ( REQUIRE_CURL )
2022-08-06 20:03:38 +00:00
find_package ( "CURL" )
2020-09-28 19:08:07 +00:00
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 )
2022-08-06 20:03:38 +00:00
find_package ( "FFmpeg"
C O M P O N E N T S " a v u t i l " " a v c o d e c " " s w s c a l e "
)
2020-09-28 19:08:07 +00:00
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 )
2022-08-06 20:03:38 +00:00
find_package ( "AOM" )
2021-08-28 12:36:42 +00:00
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" )
2022-06-10 17:52:52 +00:00
message ( FATAL_ERROR "${LOGPREFIX}Please make sure to update git submodules to their latest supported version." )
2020-12-14 16:47:13 +00:00
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-10-25 17:56:56 +00:00
#- NVIDIA Augmented Reality SDK
set ( HAVE_NVIDIA_AR_SDK OFF )
if ( REQUIRE_NVIDIA_AR_SDK AND D_PLATFORM_WINDOWS )
if ( EXISTS "${PROJECT_SOURCE_DIR}/third-party/nvidia-maxine-ar-sdk/version.h" )
set ( HAVE_NVIDIA_AR_SDK ON )
endif ( )
2021-11-07 14:49:02 +00:00
2021-10-25 17:56:56 +00:00
if ( NOT TARGET NVIDIA::AR )
add_library ( NVIDIA::AR IMPORTED INTERFACE )
target_include_directories ( NVIDIA::AR
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 - a r - s d k / n v a r / i n c l u d 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 - a r - s d k / n v a r / s r c / "
)
endif ( )
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 ( )
2022-08-06 16:31:59 +00:00
#- Qt
2020-12-14 16:47:13 +00:00
if ( REQUIRE_QT )
2022-08-06 16:31:59 +00:00
# Try Qt6 first...
2022-08-06 20:03:38 +00:00
find_package ( "Qt6"
2022-08-06 16:31:59 +00:00
C O M P O N E N T S C o r e G u i W i d g e t s
C O N F I G
)
2022-08-06 20:03:38 +00:00
# If Qt6 isn't present, try Qt5
2022-08-06 16:31:59 +00:00
if ( NOT Qt6_FOUND )
2022-08-06 20:03:38 +00:00
find_package ( "Qt5"
2022-08-06 16:31:59 +00:00
C O M P O N E N T S C o r e G u i W i d g e t s
C O N F I G
)
endif ( )
2022-08-06 20:03:38 +00:00
if ( Qt6_FOUND )
message ( STATUS "${LOGPREFIX}Using Qt6." )
elseif ( Qt5_FOUND )
message ( STATUS "${LOGPREFIX}Using Qt5." )
endif ( )
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 )
2021-10-25 18:40:55 +00:00
feature_filter_autoframing ( 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_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
################################################################################
2022-09-03 18:06:33 +00:00
set ( PROJECT_DATA )
2020-03-16 19:37:31 +00:00
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 )
2022-09-03 18:06:33 +00:00
set ( PROJECT_MEDIA )
2022-09-05 04:49:07 +00:00
# Data
file ( GLOB_RECURSE PROJECT_DATA "data/*" )
2022-09-03 18:06:33 +00:00
# Media
file ( GLOB_RECURSE PROJECT_MEDIA "media/*" )
2020-03-16 19:37:31 +00:00
2022-09-03 18:06:33 +00:00
# Templates
file ( GLOB_RECURSE PROJECT_TEMPLATES "templates/*" )
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 (
2022-09-03 18:06:33 +00:00
" t e m p l a t e s / w i n d o w s / v e r s i o n . r c . i n "
2020-12-14 16:47:13 +00:00
" g e n e r a t e d / v e r s i o n . r c "
)
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
2022-08-06 20:03:38 +00:00
list ( APPEND PROJECT_LIBRARIES OBS::libobs )
2020-12-14 16:47:13 +00:00
# Components
2022-08-06 20:03:38 +00:00
if ( CURL_FOUND )
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 "
)
2022-08-06 20:03:38 +00:00
list ( APPEND PROJECT_LIBRARIES CURL::libcurl )
2020-09-28 19:08:07 +00:00
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 ( )
2021-11-09 10:33:07 +00:00
if ( TRUE ) # OpenGL
if ( NOT TARGET khronos_glad )
add_library ( khronos_glad STATIC
" $ { 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 / k h r o n o s / g l a d / s r c / g l . c "
)
target_include_directories ( khronos_glad
P R I V A T 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 / k h r o n o s / g l a d / i n c l u d e "
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 / k h r o n o s / g l a d / i n c l u d e "
P U B L I C
" $ { 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 / k h r o n o s / g l a d / i n c l u d e "
)
if ( D_PLATFORM_WINDOWS )
target_sources ( khronos_glad
P R I V A T 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 / k h r o n o s / g l a d / s r c / w g l . c "
)
elseif ( D_PLATFORM_LINUX )
target_sources ( khronos_glad
P R I V A T 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 / k h r o n o s / g l a d / s r c / g l x . c "
)
endif ( )
# Requires for shared/static mixing.
set_property ( TARGET khronos_glad PROPERTY POSITION_INDEPENDENT_CODE ON )
endif ( )
list ( APPEND PROJECT_LIBRARIES khronos_glad )
endif ( )
2021-10-25 17:56:56 +00:00
if ( HAVE_NVIDIA_VFX_SDK OR HAVE_NVIDIA_AR_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-10-25 17:56:56 +00:00
if ( HAVE_NVIDIA_AR_SDK )
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 "
2021-10-25 17:59:02 +00:00
" 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 "
2021-10-25 18:36:40 +00:00
" s o u r c e / n v i d i a / a r / n v i d i a - a r - f a c e d e t e c t i o n . 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 a c e d e t e c t i o n . c p p "
2021-10-25 17:56:56 +00:00
)
list ( APPEND PROJECT_LIBRARIES
N V I D I A : : A R
)
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
2022-08-06 20:03:38 +00:00
if ( REQUIRE_OBS_FRONTEND_API AND obs-frontend-api_FOUND )
list ( APPEND PROJECT_LIBRARIES OBS::obs-frontend-api )
2020-12-14 16:47:13 +00:00
endif ( )
2022-08-06 16:31:59 +00:00
if ( REQUIRE_QT )
if ( Qt5_FOUND )
list ( APPEND PROJECT_LIBRARIES Qt5::Core Qt5::Gui Qt5::Widgets )
elseif ( Qt6_FOUND )
list ( APPEND PROJECT_LIBRARIES Qt6::Core Qt6::Gui Qt6::Widgets )
endif ( )
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
2022-08-29 10:29:44 +00:00
" s o u r c e / w a r n i n g - d i s a b l e . h p p "
" s o u r c e / w a r n i n g - e n a b l e . h p p "
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 "
2021-10-29 07:13:58 +00:00
" s o u r c e / g f x / g f x - d e b u g . h p p "
" s o u r c e / g f x / g f x - d e b u g . c p p "
2021-11-09 10:33:07 +00:00
" s o u r c e / g f x / g f x - o p e n g l . h p p "
" s o u r c e / g f x / g f x - o p e n g l . c 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 "
" 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 - 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 "
2022-05-14 04:29:41 +00:00
# obs_encoder_info_t, obs_encoder_t, obs_weak_encoder_t
" 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 "
# obs_source_info_t, obs_source_t, obs_weak_source_t
" 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 - i n f o . h p p "
" s o u r c e / o b s / o b s - s o u r c e - i n f o . 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 - a c t i v e - c h i l d . h p p "
" s o u r c e / o b s / o b s - s o u r c e - a c t i v e - c h i l d . c p p "
" s o u r c e / o b s / o b s - s o u r c e - a c t i v e - r e f e r e n c e . h p p "
" s o u r c e / o b s / o b s - s o u r c e - a c t i v e - r e f e r e n c e . c p p "
" s o u r c e / o b s / o b s - s o u r c e - s h o w i n g - r e f e r e n c e . h p p "
" s o u r c e / o b s / o b s - s o u r c e - s h o w i n g - r e f e r e n c e . c p p "
" s o u r c e / o b s / o b s - w e a k - s o u r c e . h p p "
" s o u r c e / o b s / o b s - w e a k - s o u r c e . 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 "
)
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 "
2022-02-24 22:04:32 +00:00
" s o u r c e / e n c o d e r s / c o d e c s / d n x h r . h p p "
" s o u r c e / e n c o d e r s / c o d e c s / d n x h r . c p p "
2020-03-16 19:37:31 +00:00
# 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
)
2022-02-24 22:04:32 +00:00
endif ( )
# DNxHR
is_feature_enabled ( ENCODER_FFMPEG_DNXHR 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 / d n x h d _ 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 n x h d _ 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 _ D N X H R
)
2020-12-14 16:47:13 +00:00
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 )
2022-05-31 20:33:34 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
2021-08-28 12:36:42 +00:00
" 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 "
)
2022-05-31 20:33:34 +00:00
list ( APPEND PROJECT_INCLUDE_DIRS
2021-08-28 12:36:42 +00:00
$ { 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 ( )
2021-10-25 18:40:55 +00:00
# Filter/Auto-Framing
is_feature_enabled ( FILTER_AUTOFRAMING 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 - a u t o f r a m 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 - a u t o f r a m i n g . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ A U T O F R A M I N G
)
is_feature_enabled ( FILTER_AUTOFRAMING_NVIDIA T_CHECK )
2022-05-31 20:33:34 +00:00
if ( T_CHECK )
2021-10-25 18:40:55 +00:00
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ A U T O F R A M I N G _ N V I D I A
)
endif ( )
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 "
)
2022-05-31 20:33:34 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
2020-03-16 19:37:31 +00:00
" 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 "
)
2022-05-31 20:33:34 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
2020-03-16 19:37:31 +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 . 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 "
)
2022-05-31 20:33:34 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
2020-03-16 19:37:31 +00:00
" 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/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 )
2022-05-31 20:33:34 +00:00
if ( T_CHECK )
2021-05-01 16:31:13 +00:00
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 )
2022-05-31 20:33:34 +00:00
if ( T_CHECK )
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 _ 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 )
2022-05-31 20:33:34 +00:00
if ( T_CHECK )
2021-10-23 18:05:36 +00:00
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
2022-08-18 05:47:21 +00:00
#NOSHOWWINDOW
2020-09-28 19:08:07 +00:00
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 }
2022-09-03 18:06:33 +00:00
# Media
$ { P R O J E C T _ M E D I A }
2020-12-14 16:47:13 +00:00
)
# 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 } )
2022-09-03 18:06:33 +00:00
source_group ( TREE "${PROJECT_SOURCE_DIR}/media" PREFIX "Media" FILES ${ PROJECT_MEDIA } )
2020-12-14 16:47:13 +00:00
# Prevent unwanted files from being built as source.
2022-09-03 18:06:33 +00:00
set_source_files_properties ( ${ PROJECT_DATA } ${ PROJECT_TEMPLATES } ${ PROJECT_UI } ${ PROJECT_MEDIA } PROPERTIES
2020-12-14 16:47:13 +00:00
H E A D E R _ F I L E _ O N L Y O N
)
# Prevent non-UI files from being Qt'd
2022-08-06 16:31:59 +00:00
if ( Qt5_Found OR Qt6_FOUND )
2022-09-03 18:06:33 +00:00
set_source_files_properties ( ${ PROJECT_DATA } ${ PROJECT_TEMPLATES } ${ PROJECT_MEDIA } ${ PROJECT_PRIVATE_GENERATED } ${ PROJECT_PRIVATE_SOURCE } PROPERTIES
2020-12-14 16:47:13 +00:00
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.
2022-08-06 20:03:38 +00:00
target_link_libraries ( ${ PROJECT_NAME } PRIVATE ${ PROJECT_LIBRARIES } )
2020-12-14 16:47:13 +00:00
target_include_directories ( ${ PROJECT_NAME } PRIVATE ${ PROJECT_INCLUDE_DIRS } )
target_compile_definitions ( ${ PROJECT_NAME } PRIVATE ${ PROJECT_DEFINITIONS } )
2022-05-31 20:33:34 +00:00
# Always generate position independent code.
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
P O S I T I O N _ I N D E P E N D E N T _ C O D E O N
)
2020-12-14 16:47:13 +00:00
# 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
)
2022-05-31 20:33:34 +00:00
# Link-Time/Interprocedural Optimization
if ( ${ PREFIX } ENABLE_LTO )
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
I N T E R P R O C E D U R A L _ O P T I M I Z A T I O N O N
)
endif ( )
2022-05-10 17:29:58 +00:00
# C/C++ Compiler Adjustments
2022-06-02 06:55:40 +00:00
if ( D_PLATFORM_WINDOWS AND ( ( CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" ) OR ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) ) )
2022-05-10 17:29:58 +00:00
# MSVC/ClangCL
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Applying custom flags for MSVC style build." )
2022-05-10 17:29:58 +00:00
2022-05-31 20:33:34 +00:00
# - Dynamically link Microsoft C/C++ Redistributable.
target_compile_options ( ${ PROJECT_NAME } PRIVATE
2022-05-10 17:29:58 +00:00
$ < $ < 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 >
)
2022-08-27 11:44:52 +00:00
# - Treat Warnings as Errors
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/Wall" )
# - Disable useless warnings
2022-05-10 17:29:58 +00:00
set ( DISABLED_WARNINGS
2022-08-28 11:08:08 +00:00
# Don't warn about unused variables, parameters, labels, functions, or typedefs.
" 4 1 0 0 "
" 4 1 0 1 "
" 4 1 0 2 "
" 4 5 0 5 "
" 4 5 1 4 "
" 5 2 4 5 "
# Don't warn about unreferenced variables or parameters which are assigned/initialized.
" 4 1 8 9 "
# Don't warn about not-explicitly-handled enumeration identifiers
" 4 0 6 1 "
# Ignore automatic padding warnings.
" 4 8 2 0 "
# Ignore assignment/move/copy being implicit '= delete;'.
" 4 6 2 3 "
" 4 6 2 5 "
" 4 6 2 6 "
" 5 0 2 6 "
" 5 0 2 7 "
# Relative include paths are fine.
" 4 4 6 4 "
# Buggy warning: printf expects string literal
" 4 7 7 4 "
# Buggy warning: subobject initialization should be wrapped in braces
" 5 2 4 6 "
# Ignore undefined, unused or unreferenced pre-processor macros
" 4 6 8 8 "
# Ignore non-inlined functions
" 4 7 1 0 "
# Ignore Spectre mitigation insertions
" 5 0 4 5 "
2022-09-18 16:30:41 +00:00
# Ignore inserted padding.
" 4 3 2 4 "
2022-05-10 17:29:58 +00:00
)
foreach ( WARN ${ DISABLED_WARNINGS } )
2022-08-27 11:44:52 +00:00
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/wd${WARN}" )
2022-05-10 17:29:58 +00:00
endforeach ( )
2022-06-02 06:55:40 +00:00
2022-05-31 20:33:34 +00:00
# - Require enabled instruction sets.
if ( D_PLATFORM_ARCH_X86 )
if ( ${ PREFIX } TARGET_X86_64_V4 )
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/arch:AVX512" )
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Targeting x86-64-v4." )
2022-05-31 20:33:34 +00:00
elseif ( ${ PREFIX } TARGET_X86_64_V3 )
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/arch:AVX2" )
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Targeting x86-64-v3." )
2022-05-31 20:33:34 +00:00
elseif ( ${ PREFIX } TARGET_X86_64_V2_EX )
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/arch:AVX" )
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Targeting extended x86-64-v2." )
2022-05-31 20:33:34 +00:00
elseif ( ${ PREFIX } TARGET_X86_64_V2 )
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/d2archSSE42" )
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Targeting x86-64-v2." )
2022-05-31 20:33:34 +00:00
elseif ( ${ PREFIX } TARGET_X86_64 )
#target_compile_options(${PROJECT_NAME} PRIVATE "/arch:SSE2")
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Targeting x86-64." )
2022-05-31 20:33:34 +00:00
endif ( )
endif ( )
2022-06-02 06:55:40 +00:00
# - Use fast unordered math if possible.
if ( ${ PREFIX } ENABLE_FASTMATH )
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/fp:fast" )
else ( )
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/fp:precise" )
if ( MSVC_VERSION GREATER 1930 )
# Keep original behavior in VS2022 and up.
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/fp:contract" )
endif ( )
endif ( )
2022-05-31 20:33:34 +00:00
# - Disable incremental builds
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/INCREMENTAL:NO" )
2022-05-10 17:29:58 +00:00
2022-05-31 20:33:34 +00:00
# - Enable C++ exceptions with SEH exceptions.
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/EHa" )
2022-05-10 17:29:58 +00:00
2022-05-31 20:33:34 +00:00
# - Enable multi-processor compiling.
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/MP" )
2022-05-10 17:29:58 +00:00
2022-05-31 20:33:34 +00:00
# - Enable updated __cplusplus macro
target_compile_options ( ${ PROJECT_NAME } PRIVATE "/Zc:__cplusplus" )
2022-06-02 06:55:40 +00:00
2022-05-31 20:33:34 +00:00
# - Generic Optimizations for Release/RelWithDebInfo/MinSizeRel
set ( FLAGS
" / O P T : R E F "
" / O P T : I C F = 3 "
" / G L "
" / G y "
" / G F "
" / O x "
" / O b 3 "
)
foreach ( FLAG ${ FLAGS } )
target_compile_options ( ${ PROJECT_NAME } PRIVATE "$<$<CONFIG:Release,RelWithDebInfo,MinSizeRel>:${FLAG}>" )
endforeach ( )
2022-06-02 06:55:40 +00:00
elseif ( D_PLATFORM_LINUX AND ( ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) OR ( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" ) ) )
# GCC/Clang
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Applying custom flags for GCC/Clang style build." )
2022-05-10 17:29:58 +00:00
2022-08-27 11:44:52 +00:00
# - Enable all warnings.
2022-05-31 20:33:34 +00:00
target_compile_options ( ${ PROJECT_NAME } PRIVATE "-Wall" )
target_compile_options ( ${ PROJECT_NAME } PRIVATE "-Wextra" )
2022-06-02 06:55:40 +00:00
2022-08-27 11:44:52 +00:00
# - Disable useless warnings
set ( DISABLED_WARNINGS
2022-08-28 11:08:08 +00:00
# Don't warn about unused variables, parameters, labels, functions, or typedefs.
" u n u s e d - f u n c t i o n "
" u n u s e d - l a b e l "
" u n u s e d - l o c a l - t y p e d e f s "
" u n u s e d - p a r a m e t e r "
" u n u s e d - r e s u l t "
" u n u s e d - c o n s t - v a r i a b l e "
" u n u s e d - v a r i a b l e "
" u n u s e d - v a l u e "
# Don't warn about unreferenced variables or parameters which are assigned/initialized.
" u n u s e d - b u t - s e t - p a r a m e t e r "
" u n u s e d - b u t - s e t - v a r i a b l e "
# Don't warn about not-explicitly-handled enumeration identifiers
" s w i t c h "
# Ignore automatic padding warnings.
" p a d d e d "
# Ignore implicit '= delete;'.
# Ignore extra arguments for printf
" f o r m a t - e x t r a - a r g s "
# Ignore undefined, unused or unreferenced pre-processor macros
" u n u s e d - m a c r o s "
2022-08-27 11:44:52 +00:00
)
foreach ( WARN ${ DISABLED_WARNINGS } )
target_compile_options ( ${ PROJECT_NAME } PRIVATE "-Wno-${WARN}" )
endforeach ( )
2022-05-31 20:33:34 +00:00
# - Require enabled instruction sets.
if ( ${ PREFIX } TARGET_NATIVE )
2022-06-02 06:55:40 +00:00
target_compile_options ( ${ PROJECT_NAME } PRIVATE
2022-05-31 20:33:34 +00:00
" - m a r c h = n a t i v e "
)
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}Targeting native architecture. Binaries will not be distributable to other systems!" )
2022-05-31 20:33:34 +00:00
elseif ( D_PLATFORM_ARCH_X86 )
if ( ${ PREFIX } TARGET_X86_64_V4 )
2022-06-02 06:55:40 +00:00
target_compile_options ( ${ PROJECT_NAME } PRIVATE
2022-05-31 20:33:34 +00:00
" - m a r c h = x 8 6 - 6 4 - v 4 "
)
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Targeting x86-64-v4." )
2022-05-31 20:33:34 +00:00
elseif ( ${ PREFIX } TARGET_X86_64_V3 )
2022-06-02 06:55:40 +00:00
target_compile_options ( ${ PROJECT_NAME } PRIVATE
2022-05-31 20:33:34 +00:00
" - m a r c h = x 8 6 - 6 4 - v 3 "
)
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Targeting x86-64-v3." )
2022-05-31 20:33:34 +00:00
elseif ( ${ PREFIX } TARGET_X86_64_V2_EX )
2022-06-02 06:55:40 +00:00
target_compile_options ( ${ PROJECT_NAME } PRIVATE
2022-05-31 20:33:34 +00:00
" - m a r c h = x 8 6 - 6 4 - v 2 "
" - m a v x "
" - m b m i 2 "
" - m b m i "
" - m f m a "
" - m f 1 6 c "
" - m m o v b e "
" - m p c l m u l "
" - m p o p c n t "
)
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Targeting extended x86-64-v2." )
2022-05-31 20:33:34 +00:00
elseif ( ${ PREFIX } TARGET_X86_64_V2 )
target_compile_options ( ${ PROJECT_NAME } PRIVATE
" - m a r c h = x 8 6 - 6 4 - v 2 "
)
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Targeting x86-64-v2." )
2022-05-31 20:33:34 +00:00
elseif ( ${ PREFIX } TARGET_X86_64 )
2022-06-02 06:55:40 +00:00
target_compile_options ( ${ PROJECT_NAME } PRIVATE
2022-05-31 20:33:34 +00:00
" - m a r c h = x 8 6 - 6 4 "
)
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Targeting x86-64." )
2022-05-31 20:33:34 +00:00
endif ( )
2022-06-02 06:55:40 +00:00
if ( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
target_compile_options ( ${ PROJECT_NAME } PRIVATE
" - m t u n e = g e n e r i c "
)
else ( )
target_compile_options ( ${ PROJECT_NAME } PRIVATE
" - m t u n e = x 8 6 - 6 4 "
)
endif ( )
endif ( )
# - Use fast unordered math if possible.
if ( ${ PREFIX } ENABLE_FASTMATH )
if ( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
target_compile_options ( ${ PROJECT_NAME } PRIVATE
" - f f a s t - m a t h "
)
else ( )
target_compile_options ( ${ PROJECT_NAME } PRIVATE
" - f f p - m o d e l = f a s t "
)
endif ( )
else ( )
target_compile_options ( ${ PROJECT_NAME } PRIVATE
" - f f p - m o d e l = p r e c i s e "
)
endif ( )
# - Don't export by default, require attributes.
# add_compile_options("-fvisibility=hidden")
elseif ( D_PLATFORM_MAC AND ( CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" ) )
# AppleClang
2022-06-10 17:52:52 +00:00
message ( STATUS "${LOGPREFIX}Applying custom flags for AppleClang style build." )
2022-06-02 06:55:40 +00:00
# - Enable most useful warnings.
target_compile_options ( ${ PROJECT_NAME } PRIVATE "-Wall" )
target_compile_options ( ${ PROJECT_NAME } PRIVATE "-Wextra" )
# - Require enabled instruction sets.
if ( ${ PREFIX } TARGET_NATIVE )
target_compile_options ( ${ PROJECT_NAME } PRIVATE
" - m a r c h = n a t i v e "
)
2022-06-10 17:52:52 +00:00
message ( WARNING "${LOGPREFIX}Targeting native architecture. Binaries will not be distributable to other systems!" )
2022-05-31 20:33:34 +00:00
endif ( )
2022-06-02 06:55:40 +00:00
# - Use fast unordered math if possible.
# FIXME: Appears to not be supported.
2022-05-31 20:33:34 +00:00
# - Don't export by default, require attributes.
2022-05-10 17:29:58 +00:00
# add_compile_options("-fvisibility=hidden")
endif ( )
2020-12-14 16:47:13 +00:00
# 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
)
2022-08-21 04:57:26 +00:00
# Set file version
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
M A C H O _ C O M P A T I B I L I T Y _ 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 }
M A C H O _ C U R R E N T _ V E R S I O N $ { P R O J E C T _ V E R S I O N }
S O 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 R O J E C T _ V E R S I O N }
)
2018-09-25 23:17:08 +00:00
2020-12-14 16:47:13 +00:00
# Enable Qt if needed
2022-08-06 16:31:59 +00:00
if ( Qt5_FOUND OR Qt6_FOUND )
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 ( )
2022-09-03 18:06:33 +00:00
# Windows exclusive changes
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 ( )
2022-09-03 18:06:33 +00:00
# MacOS exclusive Changes
2021-02-19 09:59:24 +00:00
if ( D_PLATFORM_MAC )
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
2022-09-03 18:06:33 +00:00
# No automatic code signing in XCode
2021-02-19 09:59:24 +00:00
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 "
2022-09-03 18:06:33 +00:00
# @rpath in installed binaries
I N S T A L L _ R P A T H " @ 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 o a d e r _ p a t h / . . / F r a m e w o r k s / ; @ l o a d e r _ p a t h / . . / R e s o u r c e s / "
2021-02-19 09:59:24 +00:00
)
2022-09-03 18:06:33 +00:00
if ( STANDALONE )
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
# @rpath in built binaries
B U I L D _ W I T H _ I N S T A L L _ R P A T H O N
)
endif ( )
2022-09-03 18:06:33 +00:00
# Bundle exporting
if ( STRUCTURE_BUNDLE )
# Proper location for resources in Bundles
foreach ( FILE IN LISTS PROJECT_DATA )
cmake_path ( ABSOLUTE_PATH FILE OUTPUT_VARIABLE FILE_PATH )
cmake_path ( RELATIVE_PATH FILE_PATH BASE_DIRECTORY "${PROJECT_SOURCE_DIR}/data/" )
cmake_path ( GET FILE_PATH PARENT_PATH FILE_PATH )
set_source_files_properties ( "${FILE}" PROPERTIES
M A C O S X _ P A C K A G E _ L O C A T I O N " R e s o u r c e s / $ { F I L E _ P A T H } "
)
endforeach ( )
# Bundle Icon
set_source_files_properties ( "media/icon.png" PROPERTIES
M A C O S X _ P A C K A G E _ L O C A T I O N " R e s o u r c e s "
)
# Bundle Information
set ( MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}" )
set ( MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}" )
set ( MACOSX_BUNDLE_COPYRIGHT "${PROJECT_COPYRIGHT}" )
set ( MACOSX_BUNDLE_GUI_IDENTIFIER "${PROJECT_IDENTIFER}" )
set ( MACOSX_BUNDLE_ICON_FILE "icon.png" )
set ( MACOSX_BUNDLE_VERSION_STRING "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}" )
set ( MACOSX_BUNDLE_LONG_VERSION_STRING "${_VERSION}" )
set ( MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION}" )
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
B U N D L E O N
B U N D L E _ E X T E N S I O N " p l u g i n "
O U T P U T _ N A M E $ { P R O J E C T _ N A M E }
M A C O S X _ B U N D L E _ I N F O _ P L I S T " $ { P R O J E C T _ S O U R C E _ D I R } / t e m p l a t e s / m a c o s / I n f o . p l i s t . i n "
X C O D E _ A T T R I B U T E _ P R O D U C T _ B U N D L E _ I D E N T I F I E R " $ { M A C O S X _ B U N D L E _ G U I _ I D E N T I F I E R } "
)
endif ( )
2021-02-19 09:59:24 +00:00
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 }
2022-06-13 03:23:15 +00:00
V E R S I O N 1 4 . 0 . 0
2020-04-18 14:23:08 +00:00
)
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
2022-06-13 03:23:15 +00:00
V E R S I O N 1 4 . 0 . 0
2020-04-05 08:33:35 +00:00
)
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
################################################################################
2022-05-31 20:33:34 +00:00
if ( STANDALONE )
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
2022-05-31 20:33:34 +00:00
if ( HAVE_AOM AND AOM_BINARY )
2021-08-28 12:36:42 +00:00
install (
2022-05-31 20:33:34 +00:00
F I L E S " $ { A O M _ B I N A R Y } "
2021-08-28 12:36:42 +00:00
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 )
2022-09-03 18:06:33 +00:00
if ( STRUCTURE_BUNDLE )
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 " . " 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 " . " C O M P O N E N T S t r e a m F X
B U N D L E D E S T I N A T I O N " . " 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
)
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 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
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 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 ( )
2021-01-31 21:05:23 +00:00
endif ( )
2022-05-31 20:33:34 +00:00
else ( )
if ( COMMAND setup_plugin_target )
setup_plugin_target ( ${ PROJECT_NAME } )
# Seems like we lost the ability to customize which directoy resources are in, and instead are forced to use '/data'.
if ( HAVE_AOM AND AOM_BINARY ) # Dependency: AOM
add_target_resource ( ${ PROJECT_NAME } "${AOM_BINARY}" "obs-plugins/${PROJECT_NAME}" )
endif ( )
elseif ( COMMAND install_obs_plugin_with_data )
install_obs_plugin_with_data ( ${ PROJECT_NAME } data )
if ( HAVE_AOM AND AOM_BINARY ) # Dependency: AOM
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 " $ { O B S _ D A T A _ D E S T I N A T I O N } / o b s - p l u g i n s / $ { P R O J E C T _ N A M E } "
)
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 } "
" $ { O B S _ D A T A _ D E S T I N A T I O N } / 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 ( )
endif ( )
2021-01-31 21:05:23 +00:00
endif ( )
################################################################################
# Packaging
################################################################################
2022-05-31 20:33:34 +00:00
if ( STANDALONE )
2021-01-31 21:05:23 +00:00
# Packaging
if ( NOT PACKAGE_SUFFIX )
2022-08-21 04:57:26 +00:00
set ( _PACKAGE_SUFFIX_OVERRIDE "${_VERSION_THIN}" )
2021-01-31 21:05:23 +00:00
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
2022-09-19 23:59:39 +00:00
configure_file (
" t e m p l a t e s / w i n d o w s / i n s t a l l e r . i s s . i n "
" i n s t a l l e r . i s s "
)
2021-03-15 05:48:24 +00:00
endif ( )
# Apple MacOS
if ( D_PLATFORM_MAC )
# .pkg Installer
2022-09-03 18:06:33 +00:00
set ( PACKAGES_PATH_NAME "${PROJECT_NAME}" )
if ( STRUCTURE_BUNDLE )
set ( PACKAGES_PATH_NAME "${PACKAGES_PATH_NAME}.plugin" )
endif ( )
2021-03-15 05:48:24 +00:00
configure_file (
2022-09-03 18:06:33 +00:00
" t e m p l a t e s / m a c o s / i n s t a l l e r . p k g p r o j . i n "
2021-03-15 05:48:24 +00:00
" i n s t a l l e r . p k g p r o j "
2021-01-31 21:05:23 +00:00
)
endif ( )
endif ( )
2018-12-23 19:49:18 +00:00
endif ( )