2018-09-25 23:17:08 +00:00
# Experimental new Sources, Filters and Transitions for OBS Studio
# Copyright (C) 2017 - 2018 Michael Fabian Dirks
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
2017-06-28 21:21:42 +00:00
2018-04-24 10:31:43 +00:00
# CMake Setup
2020-09-28 00:04:35 +00:00
cmake_minimum_required ( VERSION 3.8...3.12 )
2017-11-02 23:30:53 +00:00
2018-09-25 23:17:08 +00:00
# Automatic Versioning
2019-10-13 03:42:54 +00:00
set ( VERSION_MAJOR 0 )
2020-07-05 23:30:17 +00:00
set ( VERSION_MINOR 9 )
2019-12-22 07:31:00 +00:00
set ( VERSION_PATCH 0 )
2019-10-13 03:42:54 +00:00
set ( VERSION_TWEAK 0 )
2020-09-25 19:08:13 +00:00
set ( VERSION_SUFFIX "" )
2019-10-13 03:42:54 +00:00
if ( EXISTS "${CMAKE_CURRENT_LIST_DIR}/.git" )
set ( GIT_RESULT "" )
set ( GIT_OUTPUT "" )
2020-09-28 00:02:46 +00:00
# Get commit index
2019-12-21 16:03:00 +00:00
execute_process (
2019-12-22 07:28:32 +00:00
C O M M A N D g i t r e v - l i s t - - c o u n t - - t o p o - o r d e r $ { V E R S I O N _ M A J O R } . $ { V E R S I O N _ M I N O R } . $ { V E R S I O N _ P A T C H } $ { V E R S I O N _ S U F F I X } . . H E A D
2018-09-25 23:17:08 +00:00
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ C U R R E N T _ L I S T _ D I R }
R E S U L T _ V A R I A B L E G I T _ R E S U L T
O U T P U T _ V A R I A B L E G I T _ O U T P U T
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
)
2019-10-13 03:42:54 +00:00
if ( GIT_RESULT EQUAL 0 )
set ( VERSION_TWEAK ${ GIT_OUTPUT } )
endif ( )
2020-09-28 00:02:46 +00:00
# Get commit hash
2019-12-21 16:03:00 +00:00
execute_process (
2019-12-22 05:26:28 +00:00
C O M M A N D g i t r e v - p a r s e - - s h o r t = 8 H E A D
2018-09-25 23:17:08 +00:00
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ C U R R E N T _ L I S T _ D I R }
R E S U L T _ V A R I A B L E G I T _ R E S U L T
O U T P U T _ V A R I A B L E G I T _ O U T P U T
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
)
2019-10-13 03:42:54 +00:00
if ( GIT_RESULT EQUAL 0 )
2020-09-28 00:02:46 +00:00
set ( VERSION_COMMIT ${ GIT_OUTPUT } )
else ( )
set ( VERSION_COMMIT "" )
2019-10-13 03:42:54 +00:00
endif ( )
endif ( )
2020-09-28 00:02:46 +00:00
if ( VERSION_COMMIT )
set ( VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_TWEAK}${VERSION_SUFFIX}-${VERSION_COMMIT}" )
2020-04-22 20:49:09 +00:00
else ( )
set ( VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_TWEAK}${VERSION_SUFFIX}" )
endif ( )
2018-04-24 10:31:43 +00:00
2018-09-25 23:17:08 +00:00
# Define Project
2019-12-21 16:03:00 +00:00
project (
2019-12-22 05:26:28 +00:00
S t r e a m F X
2018-09-25 23:17:08 +00:00
V E R S I O N $ { V E R S I O N _ M A J O R } . $ { V E R S I O N _ M I N O R } . $ { V E R S I O N _ P A T C H } . $ { V E R S I O N _ T W E A K }
)
2019-12-22 05:26:28 +00:00
set ( PROJECT_FULL_NAME "StreamFX for OBS Studio" )
2020-01-13 00:52:30 +00:00
set ( PROJECT_DESCRIPTION "Better Production Quality, for free." )
2018-12-23 19:49:18 +00:00
set ( PROJECT_AUTHORS "Michael Fabian 'Xaymar' Dirks <info@xaymar.com>" )
2020-01-13 00:52:30 +00:00
set ( PROJECT_COPYRIGHT_YEARS "2018 - 2020" )
2017-06-28 21:21:42 +00:00
2020-09-28 19:08:07 +00:00
# Internal Configuration
set ( OBS_DOWNLOAD_VERSION "25.0.3-fe-ci" )
if ( WIN32 )
set ( OBS_DOWNLOAD_HASH_32 "SHA512=C8CABFAA59BDF5E4CD1C69CBC349F3E62FD6FE37A1A1A8BE4AC1B37BF087F597A313B2B004E019827C43A5951B50957B60578B7F2249383C117E634FD8714844" )
set ( OBS_DOWNLOAD_HASH_64 "SHA512=75E83548AD8FD994D45BE2395E97499BED8444C245857C811BA44D35BF3C49186B1187D3EF250F2618295D7AFA7D8ED5A66582BD140A01A46A77F6BC19BDDBE2" )
set ( OBS_DEPENDENCIES_VERSION "25.0.0" )
set ( OBS_DEPENDENCIES_HASH "SHA512=7545696B5B684E6BF57F11158FBDF7A0477C4C2CBB872070105A400E56ACD16A54934928BB917E8C952631667DB63953B56F8BACB9C52D36285EA3DD83B9F473" )
set ( OBS_QT_VERSION "5.10.1" )
set ( OBS_QT_HASH "SHA512=848B9AC00B06FCA1F1A85BD4EFEA4138D278E8EC96823C5C36CC988DDE5D27E2F91300B02F2F0E71F075CCB0D791D3C888CDA6A5048DDFE6F946A8697DFEF1E9" )
elseif ( UNIX AND NOT APPLE )
set ( OBS_DOWNLOAD_HASH_32 "" )
set ( OBS_DOWNLOAD_HASH_64 "SHA512=EAB0450F4B3D9C6252C347CD138A4AB49725CF930A742FF6D1EAEADDEDE31627D1C0A45831FE26A19C0B278386A476736CAA170B351EF833E8A5E8DAD6BB57D2" )
# Qt & Dependencies are system packages.
endif ( )
2017-11-02 23:30:53 +00:00
################################################################################
2018-12-23 19:49:18 +00:00
# Setup / Bootstrap
2017-11-02 23:30:53 +00:00
################################################################################
2020-09-28 19:08:07 +00:00
# Detect Project Type (solo, combined)
2020-07-27 06:22:07 +00:00
if ( "${CMAKE_SOURCE_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}" )
2020-09-28 19:08:07 +00:00
set ( PREFIX "" )
2020-07-27 06:22:07 +00:00
else ( )
2020-09-28 19:08:07 +00:00
set ( PREFIX "${PROJECT_NAME}_" )
2020-07-27 06:22:07 +00:00
endif ( )
2019-12-21 16:03:00 +00:00
# Search Path
2020-01-22 10:12:34 +00:00
set ( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/clang" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" "${CMAKE_CURRENT_SOURCE_DIR}/cmake" )
2019-12-21 16:03:00 +00:00
# CMake Modules
include ( "util" )
2020-05-31 14:50:59 +00:00
## Clang Integration
2020-09-28 19:08:07 +00:00
if ( ${ PREFIX } ENABLE_CLANG AND ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/clang/Clang.cmake" ) )
2020-02-13 04:21:06 +00:00
include ( "Clang" )
set ( HAVE_CLANG ON )
endif ( )
2019-12-21 16:03:00 +00:00
2020-09-28 19:08:07 +00:00
# Detect Platform & Architecture
2018-09-25 23:17:08 +00:00
math ( EXPR BITS "8*${CMAKE_SIZEOF_VOID_P}" )
2020-09-28 19:08:07 +00:00
if ( BITS EQUAL 32 )
set ( D_PLATFORM_BITS 32 )
2018-12-23 19:49:18 +00:00
set ( ARCH "x86" )
2020-09-28 19:08:07 +00:00
elseif ( BITS EQUAL 64 )
set ( D_PLATFORM_BITS 64 )
2018-12-23 19:49:18 +00:00
set ( ARCH "x64" )
2020-09-28 19:08:07 +00:00
else ( )
message ( FATAL_ERROR "Unknown architecture, please file a bug with your exact setup if you believe this to be an error." )
return ( )
endif ( )
if ( CMAKE_SYSTEM_NAME STREQUAL "Windows" )
set ( D_PLATFORM_WINDOWS 1 )
elseif ( CMAKE_SYSTEM_NAME STREQUAL "Linux" )
set ( D_PLATFORM_LINUX 1 )
elseif ( CMAKE_SYSTEM_NAME STREQUAL "Mac" )
set ( D_PLATFORM_MAC 1 )
else ( )
message ( FATAL_ERROR "Unknown platform, please file a bug with your exact setup if you believe this to be an error." )
return ( )
2018-12-23 19:49:18 +00:00
endif ( )
2017-11-02 23:30:53 +00:00
2020-09-28 00:07:53 +00:00
################################################################################
# C/C++ Compiler Adjustments
################################################################################
if ( CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR ( WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) )
message ( STATUS "Applying custom flags for MSVC style build." )
# MSVC/ClangCL
# - Dynamically link Microsoft C/C++ Redistributable.
# - Enable /W3 and disable useless warnings.
# - Enable C++ exceptions with SEH exceptions.
# - Enable multi-processor compiling.
2020-09-28 19:08:07 +00:00
# Build with dynamic MSVC linkage.
add_compile_options (
$ < $ < C O N F I G : > : / M D >
$ < $ < C O N F I G : D e b u g > : / M D d >
$ < $ < C O N F I G : R e l e a s e > : / M D >
$ < $ < C O N F I G : R e l W i t h D e b I n f o > : / M D >
$ < $ < C O N F I G : M i n S i z e R e l > : / M D >
)
2020-09-28 00:07:53 +00:00
# Enable most useful warnings.
set ( DISABLED_WARNINGS
" / w d 4 0 6 1 " " / w d 4 1 0 0 " " / w d 4 1 8 0 " " / w d 4 2 0 1 " " / w d 4 4 6 4 " " / w d 4 5 0 5 " " / w d 4 5 1 4 "
" / w d 4 5 7 1 " " / w d 4 6 2 3 " " / w d 4 6 2 5 " " / w d 4 6 2 6 " " / w d 4 6 6 8 " " / w d 4 7 1 0 " " / w d 4 7 7 4 "
" / w d 4 8 2 0 " " / w d 5 0 2 6 " " / w d 5 0 2 7 " " / w d 5 0 3 9 " " / w d 5 0 4 5 " " / w d 2 6 8 1 2 "
)
add_compile_options ( "/W3" )
foreach ( WARN ${ DISABLED_WARNINGS } )
add_compile_options ( "${WARN}" )
endforeach ( )
# C++ Exceptions & SEH
add_compile_options ( "/EHa" )
# Multiprocessor compiling
add_compile_options ( "/MP" )
elseif ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
message ( STATUS "Applying custom flags for GNU style build." )
2019-09-04 01:43:43 +00:00
2020-09-28 00:07:53 +00:00
# Clang/AppleClang/GNU
# - Don't export by default.
# - Enable all and extra warnings.
add_compile_options ( "-Wall" )
add_compile_options ( "-Wextra" )
add_compile_options ( "-fvisibility=hidden" )
2019-09-04 01:32:18 +00:00
endif ( )
# C++ Standard and Extensions
## Use C++17 and no non-standard extensions.
2019-10-13 03:42:54 +00:00
set ( _CXX_STANDARD 17 )
set ( _CXX_EXTENSIONS OFF )
2019-09-04 01:32:18 +00:00
2018-12-23 19:49:18 +00:00
################################################################################
2020-09-28 19:08:07 +00:00
# Resolve Plugin Build Type
2019-12-22 05:26:28 +00:00
################################################################################
2020-01-13 00:52:30 +00:00
if ( TARGET libobs )
2020-09-28 19:08:07 +00:00
# Plugin is built together with libOBS.
message ( STATUS "${PROJECT_NAME}: Using native libOBS." )
set ( OBS_NATIVE TRUE )
2020-04-05 08:33:35 +00:00
if ( TARGET obs-frontend-api )
2020-04-05 09:09:21 +00:00
set ( HAVE_OBS_FRONTEND TRUE )
2020-04-05 08:33:35 +00:00
endif ( )
2020-01-13 00:52:30 +00:00
else ( )
2020-09-28 19:08:07 +00:00
# Plugin is built by itself.
message ( STATUS "${PROJECT_NAME}: Using downloaded libOBS." )
if ( NOT WIN32 )
message ( STATUS "${PROJECT_NAME}: Linux builds require preinstalled development packages. Refer to the manual for more information." )
endif ( )
set ( OBS_NATIVE FALSE )
endif ( )
2019-12-22 05:26:28 +00:00
2020-09-28 19:08:07 +00:00
################################################################################
# Options
################################################################################
# Configuration by build type
if ( ${ PREFIX } OBS_NATIVE )
else ( )
# Packaging
2019-12-22 05:26:28 +00:00
set ( CMAKE_PACKAGE_PREFIX "${CMAKE_BINARY_DIR}" CACHE PATH "Path for generated archives." )
set ( CMAKE_PACKAGE_NAME "${PROJECT_NAME}" CACHE STRING "Name for the generated archives." )
set ( CMAKE_PACKAGE_SUFFIX_OVERRIDE "" CACHE STRING "Override for the suffix." )
2020-01-13 00:52:30 +00:00
2020-09-28 19:08:07 +00:00
# Unix builds
2020-04-02 19:47:41 +00:00
if ( UNIX )
set ( UNIX_LOCAL_STRUCTURE TRUE CACHE BOOL "Package for a local linux install." )
endif ( )
2019-12-22 05:26:28 +00:00
endif ( )
2020-03-16 19:37:31 +00:00
# Features
2020-04-25 23:04:04 +00:00
## Encoders
2020-09-28 19:08:07 +00:00
set ( ${ PREFIX } ENABLE_ENCODER_FFMPEG TRUE CACHE BOOL "Enable FFmpeg Encoder" )
2020-04-25 23:04:04 +00:00
## Filters
2020-09-28 19:08:07 +00:00
set ( ${ PREFIX } ENABLE_FILTER_BLUR TRUE CACHE BOOL "Enable Blur Filter" )
set ( ${ PREFIX } ENABLE_FILTER_COLOR_GRADE TRUE CACHE BOOL "Enable Color Grade Filter" )
set ( ${ PREFIX } ENABLE_FILTER_DISPLACEMENT TRUE CACHE BOOL "Enable Displacement Filter" )
set ( ${ PREFIX } ENABLE_FILTER_DYNAMIC_MASK TRUE CACHE BOOL "Enable Dynamic Mask Filter" )
set ( ${ PREFIX } ENABLE_FILTER_NVIDIA_FACE_TRACKING TRUE CACHE BOOL "Enable NVidia Face Tracking Filter" )
set ( ${ PREFIX } ENABLE_FILTER_SDF_EFFECTS TRUE CACHE BOOL "Enable SDF Effects Filter" )
set ( ${ PREFIX } ENABLE_FILTER_SHADER TRUE CACHE BOOL "Enable Shader Filter" )
set ( ${ PREFIX } ENABLE_FILTER_TRANSFORM TRUE CACHE BOOL "Enable Transform Filter" )
2020-04-25 23:04:04 +00:00
## Sources
2020-09-28 19:08:07 +00:00
set ( ${ PREFIX } ENABLE_SOURCE_MIRROR TRUE CACHE BOOL "Enable Mirror Source" )
set ( ${ PREFIX } ENABLE_SOURCE_SHADER TRUE CACHE BOOL "Enable Shader Source" )
2020-04-25 23:04:04 +00:00
## Transitions
2020-09-28 19:08:07 +00:00
set ( ${ PREFIX } ENABLE_TRANSITION_SHADER TRUE CACHE BOOL "Enable Shader Transition" )
## FrontEnd / UI
set ( ${ PREFIX } ENABLE_FRONTEND TRUE CACHE BOOL "Enable Frontend code." )
2020-05-31 14:50:59 +00:00
## Code Related
2020-09-28 19:08:07 +00:00
set ( ${ PREFIX } ENABLE_CLANG TRUE CACHE BOOL "Enable Clang integration for supported compilers." )
set ( ${ PREFIX } ENABLE_PROFILING FALSE CACHE BOOL "Enable CPU and GPU performance tracking, which has a non-zero overhead at all times. Do not enable this for release builds." )
set ( ${ PREFIX } ENABLE_UPDATER TRUE CACHE BOOL "Enable automatic update checks." )
2020-03-16 19:37:31 +00:00
2020-06-14 02:34:05 +00:00
# Code Signing
2020-09-28 19:08:07 +00:00
set ( ${ PREFIX } SIGN_ENABLED FALSE CACHE BOOL "Enable signing builds." )
set ( ${ PREFIX } SIGN_KEY "" CACHE FILEPATH "Path to the private key with which to sign." )
set ( ${ PREFIX } SIGN_PASSWORD "" CACHE STRING "Password for the private key." )
2020-06-14 02:34:05 +00:00
2019-12-22 05:26:28 +00:00
################################################################################
# CMake / Compiler Dependencies
2018-12-23 19:49:18 +00:00
################################################################################
2018-09-25 23:17:08 +00:00
2020-08-09 23:37:01 +00:00
# Configure Files
2020-09-28 19:08:07 +00:00
configure_file (
" t e m p l a t e s / c o n f i g . h p p . i n "
" $ { 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 / c o n f i g . h p p "
)
2018-12-23 19:49:18 +00:00
configure_file (
2020-08-09 23:06:20 +00:00
" t e m p l a t e s / v e r s i o n . h p p . i n "
2020-06-11 20:35:44 +00:00
" $ { 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 / v e r s i o n . h p p "
2018-12-23 19:49:18 +00:00
)
configure_file (
2020-08-09 23:06:20 +00:00
" t e m p l a t e s / m o d u l e . c p p . i n "
2020-06-11 20:35:44 +00:00
" $ { 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 / m o d u l e . c p p "
2018-12-23 19:49:18 +00:00
)
2020-09-28 19:08:07 +00:00
if ( WIN32 ) # Windows Resource Definition
set ( PROJECT_PRODUCT_NAME "${PROJECT_FULL_NAME}" )
set ( PROJECT_COMPANY_NAME "${PROJECT_AUTHORS}" )
set ( PROJECT_COPYRIGHT "${PROJECT_AUTHORS} © ${PROJECT_COPYRIGHT_YEARS}" )
set ( PROJECT_LEGAL_TRADEMARKS_1 "" )
set ( PROJECT_LEGAL_TRADEMARKS_2 "" )
configure_file (
" t e m p l a t e s / v e r s i o n . r c . i n "
" $ { 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 / v e r s i o n . r c "
@ O N L Y
)
2020-08-09 23:37:01 +00:00
endif ( )
2020-09-28 19:08:07 +00:00
################################################################################
# Code & Dependencies
################################################################################
2020-09-09 03:06:15 +00:00
2020-09-28 19:08:07 +00:00
function ( refresh_components )
# CURL
if ( ( ${ PREFIX } ENABLE_UPDATER AND NOT ${ PREFIX } DISABLE_UPDATER ) )
set ( REQUIRE_CURL TRUE PARENT_SCOPE )
2020-07-15 16:07:09 +00:00
else ( )
2020-09-28 19:08:07 +00:00
set ( REQUIRE_CURL FALSE PARENT_SCOPE )
2020-07-15 16:07:09 +00:00
endif ( )
2018-09-25 23:17:08 +00:00
2020-09-28 19:08:07 +00:00
# FFmpeg
if ( ${ PREFIX } ENABLE_ENCODER_FFMPEG AND NOT ${ PREFIX } DISABLE_ENCODER_FFMPEG )
set ( REQUIRE_FFMPEG TRUE PARENT_SCOPE )
else ( )
set ( REQUIRE_FFMPEG FALSE PARENT_SCOPE )
endif ( )
2020-04-05 08:33:35 +00:00
2020-09-28 19:08:07 +00:00
# JSON
if ( ( ${ PREFIX } ENABLE_UPDATER AND NOT ${ PREFIX } DISABLE_UPDATER ) )
set ( REQUIRE_JSON TRUE PARENT_SCOPE )
else ( )
set ( REQUIRE_JSON FALSE PARENT_SCOPE )
endif ( )
2020-04-05 08:33:35 +00:00
2020-09-28 19:08:07 +00:00
# OBS Frontend API
if ( ( ${ PREFIX } ENABLE_FRONTEND AND NOT ${ PREFIX } DISABLE_FRONTEND ) )
set ( REQUIRE_OBSFE TRUE PARENT_SCOPE )
else ( )
set ( REQUIRE_OBSFE FALSE PARENT_SCOPE )
2020-04-02 18:22:12 +00:00
endif ( )
2018-12-23 19:49:18 +00:00
2020-09-28 19:08:07 +00:00
# Qt
if ( ( ${ PREFIX } ENABLE_FRONTEND AND NOT ${ PREFIX } DISABLE_FRONTEND ) )
set ( REQUIRE_QT TRUE PARENT_SCOPE )
else ( )
set ( REQUIRE_QT FALSE PARENT_SCOPE )
endif ( )
# NVIDIA Broadcast/Augmented Reality
if ( ( ${ PREFIX } ENABLE_FILTER_NVIDIA_FACE_TRACKING AND NOT ${ PREFIX } DISABLE_FILTER_NVIDIA_FACE_TRACKING ) )
set ( REQUIRE_NVAR TRUE PARENT_SCOPE )
else ( )
set ( REQUIRE_NVAR FALSE PARENT_SCOPE )
endif ( )
2020-07-15 16:07:09 +00:00
2020-09-28 19:08:07 +00:00
# NVIDIA CUDA
if ( ( ${ PREFIX } ENABLE_FILTER_NVIDIA_FACE_TRACKING AND NOT ${ PREFIX } DISABLE_FILTER_NVIDIA_FACE_TRACKING ) )
set ( REQUIRE_NVCUDA TRUE PARENT_SCOPE )
else ( )
set ( REQUIRE_NVCUDA FALSE PARENT_SCOPE )
endif ( )
endfunction ( )
2020-04-05 08:33:35 +00:00
2020-09-28 19:08:07 +00:00
function ( resolve_components )
# Resolve features by dependencies
if ( ${ PREFIX } ENABLE_ENCODER_FFMPEG AND HAVE_FFMPEG )
set ( ${ PREFIX } DISABLE_ENCODER_FFMPEG FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_ENCODER_FFMPEG TRUE PARENT_SCOPE )
if ( ${ PREFIX } ENABLE_ENCODER_FFMPEG )
message ( WARNING "Encoder 'FFmpeg' requires FFmpeg." )
2020-07-15 16:07:09 +00:00
endif ( )
endif ( )
2020-09-28 19:08:07 +00:00
if ( ${ PREFIX } ENABLE_FILTER_BLUR )
set ( ${ PREFIX } DISABLE_FILTER_BLUR FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_FILTER_BLUR TRUE PARENT_SCOPE )
endif ( )
if ( ${ PREFIX } ENABLE_FILTER_COLOR_GRADE )
set ( ${ PREFIX } DISABLE_FILTER_COLOR_GRADE FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_FILTER_COLOR_GRADE TRUE PARENT_SCOPE )
endif ( )
if ( ${ PREFIX } ENABLE_FILTER_DISPLACEMENT )
set ( ${ PREFIX } DISABLE_FILTER_DISPLACEMENT FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_FILTER_DISPLACEMENT TRUE PARENT_SCOPE )
endif ( )
if ( ${ PREFIX } ENABLE_FILTER_DYNAMIC_MASK )
set ( ${ PREFIX } DISABLE_FILTER_DYNAMIC_MASK FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_FILTER_DYNAMIC_MASK TRUE PARENT_SCOPE )
endif ( )
if ( ${ PREFIX } ENABLE_FILTER_NVIDIA_FACE_TRACKING AND WIN32 AND HAVE_NVCUDA AND HAVE_NVAR )
set ( ${ PREFIX } DISABLE_FILTER_NVIDIA_FACE_TRACKING FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_FILTER_NVIDIA_FACE_TRACKING TRUE PARENT_SCOPE )
if ( ${ PREFIX } ENABLE_FILTER_NVIDIA_FACE_TRACKING )
message ( WARNING "Filter 'NVIDIA Face Tracking' requires Windows, NVIDIA CUDA and NVIDIA AR SDK." )
2020-07-15 16:07:09 +00:00
endif ( )
2020-09-28 19:08:07 +00:00
endif ( )
if ( ${ PREFIX } ENABLE_FILTER_SDF_EFFECTS )
set ( ${ PREFIX } DISABLE_FILTER_SDF_EFFECTS FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_FILTER_SDF_EFFECTS TRUE PARENT_SCOPE )
endif ( )
if ( ${ PREFIX } ENABLE_FILTER_SHADER )
set ( ${ PREFIX } DISABLE_FILTER_SHADER FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_FILTER_SHADER TRUE PARENT_SCOPE )
endif ( )
if ( ${ PREFIX } ENABLE_SOURCE_MIRROR )
set ( ${ PREFIX } DISABLE_SOURCE_MIRROR FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_SOURCE_MIRROR TRUE PARENT_SCOPE )
endif ( )
if ( ${ PREFIX } ENABLE_SOURCE_SHADER )
set ( ${ PREFIX } DISABLE_SOURCE_SHADER FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_SOURCE_SHADER TRUE PARENT_SCOPE )
endif ( )
if ( ${ PREFIX } ENABLE_TRANSITION_SHADER )
set ( ${ PREFIX } DISABLE_TRANSITION_SHADER FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_TRANSITION_SHADER TRUE PARENT_SCOPE )
endif ( )
if ( ${ PREFIX } ENABLE_FRONTEND AND HAVE_QT AND HAVE_OBSFE )
set ( ${ PREFIX } DISABLE_FRONTEND FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_FRONTEND TRUE PARENT_SCOPE )
if ( ${ PREFIX } ENABLE_FRONTEND )
message ( WARNING "Front-End requires Qt5 and OBS Frontend API." )
2020-07-15 16:07:09 +00:00
endif ( )
2020-09-28 19:08:07 +00:00
endif ( )
if ( ${ PREFIX } ENABLE_PROFILING )
set ( ${ PREFIX } DISABLE_PROFILING FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_PROFILING TRUE PARENT_SCOPE )
endif ( )
if ( ${ PREFIX } ENABLE_UPDATER AND HAVE_CURL AND HAVE_JSON )
set ( ${ PREFIX } DISABLE_UPDATER FALSE PARENT_SCOPE )
else ( )
set ( ${ PREFIX } DISABLE_UPDATER TRUE PARENT_SCOPE )
if ( ${ PREFIX } ENABLE_UPDATER )
message ( WARNING "Updater requires CURL and nlohmann/json" )
2020-04-05 08:33:35 +00:00
endif ( )
endif ( )
2020-09-28 19:08:07 +00:00
endfunction ( )
# Update Required Parts
refresh_components ( )
2020-04-05 08:33:35 +00:00
2020-09-28 19:08:07 +00:00
# OBS (Always first)
if ( NOT OBS_NATIVE )
if ( WIN32 )
set ( DLSUFFIX "vs2019" )
elseif ( UNIX AND NOT APPLE )
set ( DLSUFFIX "ubuntu1804" )
else ( )
message ( FATAL_ERROR "Standalone builds are not supported for this platform. Please consider submitting the necessary changes to make them work." )
endif ( )
include ( "DownloadProject" )
download_project (
P R O J l i b o b s
U R L h t t p s : / / g i t h u b . c o m / X a y m a r / o b s - s t u d i o / r e l e a s e s / d o w n l o a d / $ { O B S _ D O W N L O A D _ V E R S I O N } / o b s - s t u d i o - $ { A R C H } - 0 . 0 . 0 . 0 - $ { D L S U F F I X } . 7 z
U R L _ H A S H " $ { O B S _ D O W N L O A D _ H A S H _ $ { A R C H } } "
D O W N L O A D _ N A M E " l i b o b s . 7 z "
D O W N L O A D _ N O _ P R O G R E S S O F F
U P D A T E _ D I S C O N N E C T E D O F F
Q U I E T
)
if ( WIN32 )
download_project (
P R O J o b s d e p s
U R L h t t p s : / / g i t h u b . c o m / X a y m a r / o b s - s t u d i o / r e l e a s e s / d o w n l o a d / $ { O B S _ D E P E N D E N C I E S _ V E R S I O N } / d e p e n d e n c i e s . 7 z
U R L _ H A S H " $ { O B S _ D E P E N D E N C I E S _ H A S H } "
D O W N L O A D _ N A M E " o b s d e p s . 7 z "
D O W N L O A D _ N O _ P R O G R E S S O F F
U P D A T E _ D I S C O N N E C T E D O F F
Q U I E T
)
else ( ) # Unix systems use system packages instead.
message ( STATUS "Linux builds require that you have the necessary packages installed!" )
endif ( )
# Include config file.
set ( _INCLUDE_PREFIX "" )
if ( WIN32 )
set ( _INCLUDE_PREFIX "${libobs_SOURCE_DIR}/cmake" )
elseif ( UNIX )
set ( _INCLUDE_PREFIX "${libobs_SOURCE_DIR}/usr/local/lib/cmake" )
endif ( )
include ( "${_INCLUDE_PREFIX}/LibObs/LibObsConfig.cmake" )
2018-12-23 19:49:18 +00:00
endif ( )
2018-04-24 10:31:43 +00:00
2020-09-09 03:01:24 +00:00
# CURL
if ( REQUIRE_CURL )
2020-09-28 19:08:07 +00:00
if ( WIN32 ) # CURL built by OBS Project is not compatible with find modules.
if ( ${ PREFIX } OBS_NATIVE ) # Already defined by OBS
2020-09-09 03:01:24 +00:00
set ( CURL_LIBRARIES "${CURL_LIB}" )
set ( CURL_INCLUDE_DIRS "${CURL_INCLUDE_DIR}" )
2020-09-28 19:08:07 +00:00
else ( )
2020-09-09 03:06:15 +00:00
set ( CURL_LIBRARIES "${obsdeps_SOURCE_DIR}/win${BITS}/bin/libcurl.lib" )
set ( CURL_INCLUDE_DIRS "${obsdeps_SOURCE_DIR}/win${BITS}/include" )
2020-09-09 03:01:24 +00:00
endif ( )
2020-09-09 03:06:15 +00:00
set ( CURL_LIBRARY_DEBUG ${ CURL_LIBRARIES } )
set ( CURL_LIBRARY_RELEASE ${ CURL_LIBRARIES } )
set ( CURL_INCLUDE_DIR ${ CURL_INCLUDE_DIRS } )
2020-09-09 03:01:24 +00:00
set ( CURL_FOUND ON )
2020-09-09 03:06:15 +00:00
else ( )
2020-09-28 19:08:07 +00:00
find_package ( CURL )
endif ( )
set ( HAVE_CURL ${ CURL_FOUND } )
else ( )
set ( HAVE_CURL FALSE )
endif ( )
if ( NOT HAVE_CURL AND REQUIRE_CURL )
message ( WARNING "CURL could not be found." )
endif ( )
# FFmpeg
if ( REQUIRE_FFMPEG )
if ( WIN32 AND NOT OBS_NATIVE )
find_path (
F F m p e g P a t h " l i b a v c o d e c / a v c o d e c . h "
H I N T S
$ { O B S _ D E P E N D E N C I E S _ D I R }
$ { o b s d e p s _ S O U R C E _ D I R }
$ { D e p s P a t h }
$ { D e p s P a t h 3 2 }
$ { D e p s P a t h 6 4 }
P A T H S
/ u s r / i n c l u d e
/ u s r / l o c a l / i n c l u d e
/ o p t / l o c a l / i n c l u d e
/ s w / i n c l u d e
P A T H _ S U F F I X E S
w i n $ { B I T S }
w i n $ { B I T S } / b i n
w i n $ { B I T S } / i n c l u d e
w i n $ { A R C H }
w i n $ { A R C H } / b i n
w i n $ { A R C H } / i n c l u d e
b i n
i n c l u d e
)
2020-09-09 03:01:24 +00:00
endif ( )
2020-09-28 19:08:07 +00:00
find_package ( FFmpeg COMPONENTS avutil avcodec swscale )
set ( HAVE_FFMPEG ${ FFmpeg_FOUND } )
else ( )
set ( HAVE_FFMPEG FALSE )
endif ( )
if ( NOT HAVE_FFMPEG AND REQUIRE_FFMPEG )
message ( WARNING "FFmpeg could not be found." )
2020-09-09 03:01:24 +00:00
endif ( )
2020-09-09 03:04:42 +00:00
# JSON
2020-09-28 19:08:07 +00:00
if ( REQUIRE_JSON AND EXISTS "${PROJECT_SOURCE_DIR}/third-party/nlohmann-json/single_include" )
set ( JSON_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/third-party/nlohmann-json/single_include" )
set ( HAVE_JSON TRUE )
else ( )
set ( HAVE_JSON FALSE )
endif ( )
if ( NOT HAVE_JSON AND REQUIRE_JSON )
message ( WARNING "nlohmann/json was not found." )
endif ( )
# Qt
if ( REQUIRE_QT )
if ( WIN32 AND NOT OBS_NATIVE )
download_project (
P R O J q t
U R L h t t p s : / / g i t h u b . c o m / X a y m a r / o b s - s t u d i o / r e l e a s e s / d o w n l o a d / $ { O B S _ D E P E N D E N C I E S _ V E R S I O N } / q t _ $ { O B S _ Q T _ V E R S I O N } . 7 z
U R L _ H A S H " $ { O B S _ Q T _ H A S H } "
D O W N L O A D _ N A M E " q t . 7 z "
D O W N L O A D _ N O _ P R O G R E S S O N
U P D A T E _ D I S C O N N E C T E D O N
Q U I E T
)
set ( Qt5_DIR "${qt_SOURCE_DIR}" CACHE STRING "Path to Qt5" )
if ( "${BITS}" STREQUAL "32" )
CacheSet ( Qt5_DIR "${qt_SOURCE_DIR}/msvc2017/lib/cmake/Qt5/" )
else ( )
CacheSet ( Qt5_DIR "${qt_SOURCE_DIR}/msvc2017_64/lib/cmake/Qt5/" )
endif ( )
endif ( )
find_package ( Qt5 COMPONENTS Core Widgets )
set ( HAVE_QT ${ Qt5_FOUND } )
else ( )
set ( HAVE_QT FALSE )
endif ( )
if ( NOT HAVE_QT AND REQUIRE_QT )
message ( WARNING "Qt5 was not found." )
endif ( )
# OBS Frontend API
if ( REQUIRE_OBSFE )
if ( NOT OBS_NATIVE )
if ( EXISTS "${_INCLUDE_PREFIX}/obs-frontend-api/obs-frontend-apiConfig.cmake" )
include ( "${_INCLUDE_PREFIX}/obs-frontend-api/obs-frontend-apiConfig.cmake" )
set ( HAVE_OBSFE TRUE )
else ( )
set ( HAVE_OBSFE FALSE )
endif ( )
else ( )
if ( TARGET obs-frontend-api )
set ( HAVE_OBSFE TRUE )
else ( )
set ( HAVE_OBSFE FALSE )
endif ( )
endif ( )
endif ( )
if ( NOT HAVE_OBSFE AND REQUIRE_OBSFE )
message ( WARNING "obs-frontend-api was as not found." )
2020-09-09 03:04:42 +00:00
endif ( )
2020-09-28 19:08:07 +00:00
# NVIDIA CUDA
if ( REQUIRE_NVCUDA )
# CUDA is provided by the NVIDIA Driver, we just load it dynamically.
set ( HAVE_NVCUDA TRUE )
else ( )
set ( HAVE_NVCUDA FALSE )
endif ( )
if ( NOT HAVE_NVCUDA AND REQUIRE_NVCUDA )
message ( WARNING "NVIDIA CUDA was as not found." )
endif ( )
# NVIDIA Broadcast / Augmented Reality
if ( REQUIRE_NVAR AND EXISTS "${PROJECT_SOURCE_DIR}/third-party/nvidia-arsdk/version.h" )
set ( NVAR_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/third-party/nvidia-arsdk" )
find_package ( NVAR )
set ( HAVE_NVAR ${ NVAR_FOUND } )
else ( )
set ( HAVE_NVAR FALSE )
endif ( )
if ( NOT HAVE_NVAR AND REQUIRE_NVAR )
message ( WARNING "NVIDIA AR was as not found." )
endif ( )
# Update selected Components
resolve_components ( )
refresh_components ( )
2017-06-28 21:21:42 +00:00
################################################################################
# Code
################################################################################
2020-03-16 19:37:31 +00:00
set ( PROJECT_DATA_LOCALE )
set ( PROJECT_DATA_EFFECTS )
set ( PROJECT_DATA_SHADERS )
set ( PROJECT_LIBRARIES )
set ( PROJECT_LIBRARIES_DELAYED )
2020-04-05 08:33:35 +00:00
set ( PROJECT_INCLUDE_DIRS )
2020-03-16 19:37:31 +00:00
set ( PROJECT_TEMPLATES )
set ( PROJECT_PRIVATE_GENERATED )
set ( PROJECT_PRIVATE_SOURCE )
2020-04-05 08:33:35 +00:00
set ( PROJECT_UI )
2020-09-28 19:08:07 +00:00
set ( PROJECT_UI_SOURCE )
2020-09-09 03:01:24 +00:00
set ( PROJECT_DEFINITIONS )
2020-03-16 19:37:31 +00:00
2020-09-09 03:01:24 +00:00
# Dependencies
2020-09-28 19:08:07 +00:00
list ( APPEND PROJECT_LIBRARIES libobs )
if ( REQUIRE_QT AND HAVE_QT )
list ( APPEND PROJECT_LIBRARIES Qt5::Core Qt5::Widgets )
2020-03-16 19:37:31 +00:00
endif ( )
2020-09-28 19:08:07 +00:00
if ( REQUIRE_OBSFE AND HAVE_OBSFE )
list ( APPEND PROJECT_LIBRARIES obs-frontend-api )
endif ( )
if ( REQUIRE_JSON AND HAVE_JSON )
list ( APPEND PROJECT_INCLUDE_DIRS ${ JSON_INCLUDE_DIR } )
endif ( )
if ( REQUIRE_CURL AND HAVE_CURL )
2020-09-09 03:01:24 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / u t i l / u t i l - c u r l . h p p "
" s o u r c e / u t i l / u t i l - c u r l . c p p "
)
2020-09-28 19:08:07 +00:00
list ( APPEND PROJECT_LIBRARIES ${ CURL_LIBRARY_RELEASE } )
list ( APPEND PROJECT_INCLUDE_DIRS ${ CURL_INCLUDE_DIR } )
endif ( )
if ( REQUIRE_FFMPEG AND 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 }
)
endif ( )
if ( REQUIRE_NVCUDA AND HAVE_NVCUDA )
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 "
" 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 - c o n t e x t - s t a c k . 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 - s t a c k . 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
)
endif ( )
2020-09-28 19:08:07 +00:00
if ( REQUIRE_NVAR AND HAVE_NVAR )
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / n v i d i a / a r / n v i d i a - a r . h p p "
" s o u r c e / n v i d i a / a r / n v i d i a - a r . c p p "
" s o u r c e / n v i d i a / a r / n v i d i a - a r - f e a t u r e . h p p "
" s o u r c e / n v i d i a / a r / n v i d i a - a r - f e a t u r e . c p p "
)
list ( APPEND PROJECT_LIBRARIES
n v A R P r o x y
)
2020-09-09 03:04:42 +00:00
endif ( )
2020-09-28 19:08:07 +00:00
# Core
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
2020-04-22 20:58:33 +00:00
" s o u r c e / c o n f i g u r a t i o n . h p p "
" s o u r c e / c o n f i g u r a t i o n . c p p "
2020-04-02 15:02:01 +00:00
" s o u r c e / c o m m o n . h p p "
2020-04-22 20:49:09 +00:00
" s o u r c e / s t r i n g s . h p p "
2020-03-16 19:37:31 +00:00
" s o u r c e / p l u g i n . h p p "
" s o u r c e / p l u g i n . c p p "
2020-07-12 16:41:50 +00:00
" s o u r c e / u t i l / u t i l i t y . h p p "
" s o u r c e / u t i l / u t i l i t y . c p p "
" 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-07-12 16:41:50 +00:00
" s o u r c e / u t i l / u t i l - t h r e a d p o o l . c p p "
" s o u r c e / u t i l / u t i l - t h r e a d p o o l . h p p "
2020-03-16 19:37:31 +00:00
" s o u r c e / g f x / g f x - s o u r c e - t e x t u r e . h p p "
" s o u r c e / g f x / g f x - s o u r c e - t e x t u r e . c p p "
" s o u r c e / o b s / g s / g s - h e l p e r . h p p "
" s o u r c e / o b s / g s / g s - h e l p e r . c p p "
" s o u r c e / o b s / g s / g s - e f f e c t . h p p "
" s o u r c e / o b s / g s / g s - e f f e c t . c p p "
" s o u r c e / o b s / g s / g s - e f f e c t - p a r a m e t e r . h p p "
" s o u r c e / o b s / g s / g s - e f f e c t - p a r a m e t e r . c p p "
" s o u r c e / o b s / g s / g s - e f f e c t - p a s s . h p p "
" s o u r c e / o b s / g s / g s - e f f e c t - p a s s . c p p "
" s o u r c e / o b s / g s / g s - e f f e c t - t e c h n i q u e . h p p "
" s o u r c e / o b s / g s / g s - e f f e c t - t e c h n i q u e . c p p "
" s o u r c e / o b s / g s / g s - i n d e x b u f f e r . h p p "
" s o u r c e / o b s / g s / g s - i n d e x b u f f e r . c p p "
" s o u r c e / o b s / g s / g s - l i m i t s . h p p "
" s o u r c e / o b s / g s / g s - m i p m a p p e r . h p p "
" s o u r c e / o b s / g s / g s - m i p m a p p e r . c p p "
" s o u r c e / o b s / g s / g s - r e n d e r t a r g e t . h p p "
" s o u r c e / o b s / g s / g s - r e n d e r t a r g e t . c p p "
" s o u r c e / o b s / g s / g s - s a m p l e r . h p p "
" s o u r c e / o b s / g s / g s - s a m p l e r . c p p "
" s o u r c e / o b s / g s / g s - t e x t u r e . h p p "
" s o u r c e / o b s / g s / g s - t e x t u r e . c p p "
" s o u r c e / o b s / g s / g s - v e r t e x . h p p "
" s o u r c e / o b s / g s / g s - v e r t e x . c p p "
" s o u r c e / o b s / g s / g s - v e r t e x b u f f e r . h p p "
" s o u r c e / o b s / g s / g s - v e r t e x b u f f e r . c p p "
2020-06-14 18:16:26 +00:00
" s o u r c e / o b s / o b s - e n c o d e r - f a c t o r y . h p p "
" s o u r c e / o b s / o b s - e n c o d e r - f a c t o r y . c p p "
2020-03-16 19:37:31 +00:00
" s o u r c e / o b s / o b s - s i g n a l - h a n d l e r . h p p "
" s o u r c e / o b s / o b s - s i g n a l - h a n d l e r . c p p "
" s o u r c e / o b s / o b s - s o u r c e . h p p "
" s o u r c e / o b s / o b s - s o u r c e . c p p "
" s o u r c e / o b s / o b s - s o u r c e - f a c t o r y . h p p "
" s o u r c e / o b s / o b s - s o u r c e - f a c t o r y . c p p "
" s o u r c e / o b s / o b s - s o u r c e - t r a c k e r . h p p "
" s o u r c e / o b s / o b s - s o u r c e - t r a c k e r . c p p "
" s o u r c e / o b s / o b s - t o o l s . h p p "
" s o u r c e / o b s / o b s - t o o l s . c p p "
2018-09-25 23:17:08 +00:00
)
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_PRIVATE_GENERATED
2020-06-11 20:35:44 +00:00
" $ { 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 / m o d u l e . c p p "
" $ { 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 / v e r s i o n . h p p "
2020-08-09 23:37:01 +00:00
" $ { 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 / c o n f i g . h p p "
2019-02-11 02:54:16 +00:00
)
2020-09-28 19:08:07 +00:00
list ( APPEND PROJECT_TEMPLATES
" t e m p l a t e s / v e r s i o n . h p p . i n "
" t e m p l a t e s / m o d u l e . c p p . i n "
" t e m p l a t e s / c o n f i g . h p p . i n "
)
list ( APPEND PROJECT_DATA
" d a t a / l o c a l e / e n - U S . i n i "
" 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 . e f f e c t "
" 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 "
)
2020-04-22 20:49:09 +00:00
if ( WIN32 )
list ( APPEND PROJECT_TEMPLATES
2020-08-09 23:06:20 +00:00
" t e m p l a t e s / v e r s i o n . r c . i n "
2020-04-22 20:49:09 +00:00
)
list ( APPEND PROJECT_PRIVATE_SOURCE
2020-04-05 16:52:06 +00:00
" s o u r c e / w i n d l l . c p p "
2020-04-22 23:12:45 +00:00
)
2020-06-11 20:35:44 +00:00
list ( APPEND PROJECT_PRIVATE_GENERATED
" $ { 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 / v e r s i o n . r c "
)
2020-09-28 19:08:07 +00:00
if ( NOT OBS_NATIVE )
list ( APPEND PROJECT_TEMPLATES
" t e m p l a t e s / i n s t a l l e r . i s s . i n "
)
endif ( )
2020-04-22 23:12:45 +00:00
endif ( )
2020-09-28 19:08:07 +00:00
# Old Compiler Support
2020-04-22 23:12:45 +00:00
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 ( )
2020-04-22 20:49:09 +00:00
endif ( )
2019-04-02 02:37:37 +00:00
2020-09-28 19:08:07 +00:00
################################################################################
# Components
################################################################################
# Component: Profiling
if ( NOT ${ PREFIX } DISABLE_PROFILING )
2020-04-05 08:33:35 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
2020-09-28 19:08:07 +00:00
" 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 "
2020-04-05 08:33:35 +00:00
)
list ( APPEND PROJECT_DEFINITIONS
2020-09-28 19:08:07 +00:00
E N A B L E _ P R O F I L I N G
2020-04-05 08:33:35 +00:00
)
endif ( )
2020-09-28 19:08:07 +00:00
# Component: Updater
if ( NOT ${ PREFIX } DISABLE_UPDATER )
2020-09-09 03:06:15 +00:00
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 ( )
2020-09-28 19:08:07 +00:00
# Component: Encoder/FFmpeg
if ( NOT ${ PREFIX } DISABLE_ENCODER_FFMPEG )
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 "
2020-01-13 00:52:30 +00:00
2020-03-16 19:37:31 +00:00
# Encoders
2020-06-14 20:22:44 +00:00
" s o u r c e / e n c o d e r s / e n c o d e r - f f m p e g . h p p "
" s o u r c e / e n c o d e r s / e n c o d e r - f f m p e g . c p p "
2020-03-16 19:37:31 +00:00
# Encoders/Codecs
" s o u r c e / e n c o d e r s / c o d e c s / h e v c . h p p "
" s o u r c e / e n c o d e r s / c o d e c s / h e v c . c p p "
" s o u r c e / e n c o d e r s / c o d e c s / h 2 6 4 . h p p "
" s o u r c e / e n c o d e r s / c o d e c s / h 2 6 4 . c p p "
" s o u r c e / e n c o d e r s / c o d e c s / p r o r e s . h p p "
" s o u r c e / e n c o d e r s / c o d e c s / p r o r e s . c p p "
# Encoders/Handlers
" s o u r c e / e n c o d e r s / h a n d l e r s / h a n d l e r . h p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / h a n d l e r . c p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / d e b u g _ h a n d l e r . h p p "
" s o u r c e / e n c o d e r s / h a n d l e r s / d e b u g _ h a n d l e r . c p p "
" 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 "
" 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
)
endif ( )
2020-09-28 19:08:07 +00:00
# Component: Filter/Blur
if ( NOT ${ PREFIX } DISABLE_FILTER_BLUR )
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 "
" d a t a / e f f e c t s / b l u r / b o x . e f f e c t "
" d a t a / e f f e c t s / b l u r / b o x - l i n e a r . e f f e c t "
" d a t a / e f f e c t s / b l u r / d u a l - f i l t e r i n g . e f f e c t "
" d a t a / e f f e c t s / b l u r / g a u s s i a n . e f f e c t "
" d a t a / e f f e c t s / b l u r / g a u s s i a n - l i n e a r . e f f e c t "
)
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / g f x / b l u r / g f x - b l u r - b a s e . h p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - b a s e . c p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - b o x . h p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - b o x . c p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - b o x - l i n e a r . h p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - b o x - l i n e a r . c p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - d u a l - f i l t e r i n g . h p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - d u a l - f i l t e r i n g . c p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - g a u s s i a n . h p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - g a u s s i a n . c p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - g a u s s i a n - l i n e a r . h p p "
" s o u r c e / g f x / b l u r / g f x - b l u r - g a u s s i a n - l i n e a r . c p p "
" s o u r c e / f i l t e r s / f i l t e r - b l u r . h p p "
" 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 "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ B L U R
)
endif ( )
2020-09-28 19:08:07 +00:00
# Component: Filter/Color Grade
if ( NOT ${ PREFIX } DISABLE_FILTER_COLOR_GRADE )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_DATA
" d a t a / e f f e c t s / c o l o r - g r a d e . e f f e c t "
)
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / f i l t e r s / f i l t e r - c o l o r - g r a d e . h p p "
" 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 "
)
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
)
endif ( )
2020-09-28 19:08:07 +00:00
# Component: Filter/Displacement
if ( NOT ${ PREFIX } DISABLE_FILTER_DISPLACEMENT )
2020-03-16 19:37:31 +00:00
list ( APPEND PROJECT_DATA
" d a t a / e f f e c t s / d i s p l a c e . e f f e c t "
)
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / f i l t e r s / f i l t e r - d i s p l a c e m e n t . h p p "
" s o u r c e / f i l t e r s / f i l t e r - d i s p l a c e m e n t . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ D I S P L A C E M E N T
)
endif ( )
2020-09-28 19:08:07 +00:00
# Component: Filter/Dynamic Mask
if ( NOT ${ PREFIX } DISABLE_FILTER_DYNAMIC_MASK )
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-09-28 19:08:07 +00:00
# Component: Filter/NVIDIA Face Tracking
if ( NOT ${ PREFIX } DISABLE_FILTER_NVIDIA_FACE_TRACKING )
2020-03-25 17:31:22 +00:00
list ( APPEND PROJECT_PRIVATE_SOURCE
" s o u r c e / f i l t e r s / f i l t e r - n v - f a c e - t r a c k i n g . h p p "
" s o u r c e / f i l t e r s / f i l t e r - n v - f a c e - t r a c k i n g . c p p "
)
list ( APPEND PROJECT_DEFINITIONS
E N A B L E _ F I L T E R _ N V I D I A _ F A C E _ T R A C K I N G
)
endif ( )
2020-09-28 19:08:07 +00:00
# Component: Filter/SDF Effects
if ( NOT ${ PREFIX } DISABLE_FILTER_SDF_EFFECTS )
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-09-28 19:08:07 +00:00
# Component: Filter/Shader
if ( NOT ${ PREFIX } DISABLE_FILTER_SHADER )
2020-03-16 19:37:31 +00:00
set ( REQUIRE_SHADER_CODE ON )
list ( APPEND PROJECT_DATA
2020-05-02 17:59:58 +00:00
" d a t a / e x a m p l e s / s h a d e r s / f i l t e r / c r t - c u r v a t u r e . e f f e c t "
" d a t a / e x a m p l e s / s h a d e r s / f i l t e r / c r t - s c a n l i n e s . e f f e c t "
2020-03-16 19:37:31 +00:00
" d a t a / e x a m p l e s / s h a d e r s / f i l t e r / d r u n k . e f f e c t "
2020-05-02 17:59:58 +00:00
" d a t a / e x a m p l e s / s h a d e r s / f i l t e r / h e x a g o n i z e . e f f e c t "
" d a t a / e x a m p l e s / s h a d e r s / f i l t e r / s e m i l i n e . e f f e c t "
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-09-28 19:08:07 +00:00
# Component: Filter/Transform
if ( NOT ${ PREFIX } DISABLE_FILTER_TRANSFORM )
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 ( )
2020-09-28 19:08:07 +00:00
# Component: Source/Mirror
if ( NOT ${ PREFIX } DISABLE_SOURCE_MIRROR )
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-09-28 19:08:07 +00:00
# Component: Source/Shader
if ( NOT ${ PREFIX } DISABLE_SOURCE_SHADER )
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-09-28 19:08:07 +00:00
# Component: Transition/Shader
if ( NOT ${ PREFIX } DISABLE_TRANSITION_SHADER )
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-09-28 19:08:07 +00:00
# Component: Frontend
if ( NOT ${ PREFIX } DISABLE_FRONTEND )
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
)
2020-09-28 19:08:07 +00:00
if ( NOT ${ PREFIX } DISABLE_UPDATER )
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-09-28 19:08:07 +00:00
# Extra Parts
if ( NOT ${ PREFIX } DISABLE_FILTER_SHADER OR NOT ${ PREFIX } DISABLE_SOURCE_SHADER OR NOT ${ PREFIX } DISABLE_TRANSITION_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 "
)
2020-05-13 06:41:32 +00:00
list ( APPEND PROJECT_DATA
" d a t a / e x a m p l e s / s h a d e r s / f e a t u r e - t e s t . e f f e c t "
)
2020-03-16 19:37:31 +00:00
endif ( )
2020-01-13 00:52:30 +00:00
2020-04-05 08:33:35 +00:00
# Combine it all
2020-09-28 19:08:07 +00:00
set ( PROJECT_FILES
# Always exists
$ { P R O J E C T _ T E M P L A T E S }
2019-02-11 02:54:16 +00:00
$ { 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 }
2020-09-28 19:08:07 +00:00
$ { P R O J E C T _ D A T A }
# UI-only (empty if not enabled)
2020-04-05 08:33:35 +00:00
$ { P R O J E C T _ U I }
2020-09-28 19:08:07 +00:00
$ { P R O J E C T _ U I _ S O U R C E }
2017-09-17 19:55:16 +00:00
)
2018-09-25 23:17:08 +00:00
2020-09-28 19:08:07 +00:00
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 } )
2017-06-28 21:21:42 +00:00
2020-09-28 19:08:07 +00:00
if ( NOT ${ PREFIX } DISABLE_FRONTEND )
set_source_files_properties ( ${ PROJECT_DATA } ${ PROJECT_TEMPLATES } ${ PROJECT_PRIVATE_GENERATED } ${ PROJECT_PRIVATE_SOURCE } PROPERTIES
S K I P _ A U T O U I C T R U E
S K I P _ A U T O G E N T R U E
)
endif ( )
set_source_files_properties ( ${ PROJECT_DATA } ${ PROJECT_TEMPLATES } PROPERTIES
H E A D E R _ F I L E _ O N L Y T R U E
)
2020-08-09 23:06:20 +00:00
2017-06-28 21:21:42 +00:00
################################################################################
2018-09-25 23:17:08 +00:00
# Target
2017-06-28 21:21:42 +00:00
################################################################################
2018-12-23 19:49:18 +00:00
2020-09-28 19:08:07 +00:00
# Set up
2018-12-23 19:49:18 +00:00
add_library ( ${ PROJECT_NAME } MODULE
2020-09-28 19:08:07 +00:00
$ { P R O J E C T _ F I L E S }
)
target_include_directories ( ${ PROJECT_NAME } PRIVATE
" $ { 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 "
$ { P R O J E C T _ I N C L U D E _ D I R S }
2018-09-25 23:17:08 +00:00
)
2020-09-28 19:08:07 +00:00
target_link_libraries ( ${ PROJECT_NAME } ${ PROJECT_LIBRARIES } )
target_compile_definitions ( ${ PROJECT_NAME } PRIVATE ${ PROJECT_DEFINITIONS } )
2018-09-25 23:17:08 +00:00
2020-09-28 19:08:07 +00:00
# Extra Changes
2020-04-04 19:08:56 +00:00
set_target_properties ( ${ PROJECT_NAME }
P R O P E R T I E S
P R E F I X " "
I M P O R T _ P R E F I X " "
)
2020-03-16 19:37:31 +00:00
if ( WIN32 )
2020-09-28 19:08:07 +00:00
# /DELAYLOAD MSVC
2020-03-20 22:39:21 +00:00
target_link_libraries ( ${ PROJECT_NAME }
D e l a y i m p . l i b
)
2020-03-16 19:37:31 +00:00
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}" )
2020-09-28 19:08:07 +00:00
add_link_options ( "/DELAYLOAD:${DELAYLOAD}" )
2020-03-16 19:37:31 +00:00
endforeach ( )
2018-09-25 23:17:08 +00:00
2020-09-28 19:08:07 +00:00
# Windows.h shrinking
target_compile_definitions ( ${ PROJECT_NAME } PRIVATE
_ C R T _ S E C U R E _ N O _ W A R N I N G S
_ E N A B L E _ E X T E N D E D _ A L I G N E D _ S T O R A G E
# windows.h
W I N 3 2 _ L E A N _ A N D _ M E A N
N O G P I C A P M A S K S
N O V I R T U A L K E Y C O D E S
#NOWINMESSAGES
N O W I N S T Y L E S
N O S Y S M E T R I C S
N O M E N U S
N O I C O N S
N O K E Y S T A T E S
N O S Y S C O M M A N D S
N O R A S T E R O P S
N O S H O W W I N D O W
N O A T O M
N O C L I P B O A R D
N O C O L O R
#NOCTLMGR
N O D R A W T E X T
#NOGDI
N O K E R N E L
#NOUSER
#NONLS
N O M B
N O M E M M G R
N O M E T A F I L E
N O M I N M A X
#NOMSG
N O O P E N F I L E
N O S C R O L L
N O S E R V I C E
N O S O U N D
#NOTEXTMETRIC
N O W H
N O W I N O F F S E T S
N O C O M M
N O K A N J I
#NOHELP
N O P R O F I L E R
N O D E F E R W I N D O W P O S
N O M C X
N O I M E
N O M D I
N O I N O U T
2018-09-25 23:17:08 +00:00
)
2018-12-23 19:49:18 +00:00
endif ( )
2018-09-25 23:17:08 +00:00
2019-04-19 05:15:18 +00:00
# C++ Standard and Extensions
2020-09-28 19:08:07 +00:00
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
C X X _ S T A N D A R D $ { _ C X X _ S T A N D A R D }
C X X _ S T A N D A R D _ R E Q U I R E D O N
C X X _ E X T E N S I O N S $ { _ C X X _ E X T E N S I O N S }
2019-04-19 05:15:18 +00:00
)
2018-09-25 23:17:08 +00:00
# File Version
2020-09-28 19:08:07 +00:00
if ( NOT APPLE )
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
2018-09-25 23:17:08 +00:00
V E R S I O N $ { P R O J E C T _ V E R S I O N _ M A J O R } . $ { P R O J E C T _ V E R S I O N _ M I N O R } . $ { P R O J E C T _ V E R S I O N _ P A T C H } . $ { P R O J E C T _ V E R S I O N _ T W E A K }
S O V E R S I O N $ { P R O J E C T _ V E R S I O N _ M A J O R } . $ { P R O J E C T _ V E R S I O N _ M I N O R } . $ { P R O J E C T _ V E R S I O N _ P A T C H } . $ { P R O J E C T _ V E R S I O N _ T W E A K }
)
2018-12-23 19:49:18 +00:00
endif ( )
2018-09-25 23:17:08 +00:00
2020-04-05 08:33:35 +00:00
# UI
2020-09-28 19:08:07 +00:00
if ( NOT ${ PREFIX } DISABLE_FRONTEND )
set_target_properties ( ${ PROJECT_NAME } PROPERTIES
2020-04-05 08:33:35 +00:00
A U T O U I C T R U E
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 "
A U T O M O C T R U E
A U T O R C C T R U E
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-09-28 19:08:07 +00:00
A U T O G E N _ S O U R C E _ G R O U P " Q t / G E N "
A U T O M O C _ S O U R C E _ G R O U P " Q t / M O C "
A U T O R C C _ S O U R C E _ G R O U P " Q t / R C C "
2020-04-05 08:33:35 +00:00
)
endif ( )
2020-04-18 14:23:08 +00:00
# Clang Tools
2020-09-28 19:08:07 +00:00
if ( ${ PREFIX } ENABLE_CLANG AND HAVE_CLANG )
2020-04-18 14:23:08 +00:00
generate_compile_commands_json (
T A R G E T S $ { P R O J E C T _ N A M E }
)
clang_tidy (
2020-09-28 19:08:07 +00:00
T A R G E T S $ { P R O J E C T _ N A M E }
2020-04-18 14:23:08 +00:00
V E R S I O N 9 . 0 . 0
)
2020-04-05 08:33:35 +00:00
clang_format (
T A R G E T S $ { P R O J E C T _ N A M E }
D E P E N D E N C Y
V E R S I O N 9 . 0 . 0
)
endif ( )
2020-06-14 02:34:05 +00:00
# Signing
2020-09-28 19:08:07 +00:00
if ( ${ PREFIX } SIGN_ENABLED )
2020-06-14 02:34:05 +00:00
# Investigate: https://github.com/Monetra/mstdlib/blob/master/CMakeModules/CodeSign.cmake
if ( MSVC )
2020-09-28 19:08:07 +00:00
find_program ( ${ PREFIX } SIGN_TOOL
2020-06-14 02:34:05 +00:00
N A M E S " s i g n t o o l "
D O C " P a t h t o t h e s i g n i n g t o o l . "
R E Q U I R E D
)
2020-09-28 19:08:07 +00:00
if ( ${ PREFIX } SIGN_TOOL )
2020-06-14 02:34:05 +00:00
message ( STATUS "${PROJECT_NAME}: Signing enabled" )
add_custom_command ( TARGET ${ PROJECT_NAME } POST_BUILD
2020-09-28 19:08:07 +00:00
C O M M A N D $ { $ { P R E F I X } S I G N _ T O O L }
A R G S s i g n / p " $ { $ { P R E F I X } S I G N _ P A S S W O R D } " / f " $ { $ { P R E F I X } S I G N _ K E Y } " $ < T A R G E T _ F I L E : $ { P R O J E C T _ N A M E } >
2020-06-14 02:34:05 +00:00
)
endif ( )
endif ( )
endif ( )
2017-06-28 21:21:42 +00:00
################################################################################
2018-09-25 23:17:08 +00:00
# Installation
2017-06-28 21:21:42 +00:00
################################################################################
2020-09-28 19:08:07 +00:00
if ( ${ PREFIX } OBS_NATIVE )
2018-09-25 23:17:08 +00:00
install_obs_plugin_with_data ( ${ PROJECT_NAME } data )
2018-12-23 19:49:18 +00:00
else ( )
2020-09-28 19:08:07 +00:00
# Packaging
if ( "${CMAKE_PACKAGE_SUFFIX_OVERRIDE}" STREQUAL "" )
set ( _PACKAGE_SUFFIX_OVERRIDE "${VERSION_STRING}" )
else ( )
set ( _PACKAGE_SUFFIX_OVERRIDE "${CMAKE_PACKAGE_SUFFIX_OVERRIDE}" )
endif ( )
set ( _PACKAGE_FULL_NAME "${CMAKE_PACKAGE_PREFIX}/${CMAKE_PACKAGE_NAME}-${_PACKAGE_SUFFIX_OVERRIDE}" )
2020-04-02 19:47:41 +00:00
if ( UNIX_LOCAL_STRUCTURE )
2018-12-23 19:49:18 +00:00
install (
2020-04-02 19:47:41 +00:00
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 / $ { B I T S } b i t / " C O M P O N E N T R u n t i m e
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 / $ { B I T S } b i t / " C O M P O N E N T R u n t i m e
2018-09-25 23:17:08 +00:00
)
2020-04-02 19:47:41 +00:00
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 / "
)
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 - -
" $ { C M A K E _ I N S T A L L _ P R E F I X } / p l u g i n s / $ { P R O J E C T _ N A M E } "
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 - -
" $ { C M A K E _ I N S T A L L _ P R E F I X } / p l u g i n s / $ { P R O J E C T _ N A M E } "
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 ( )
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 / $ { B I T S } b i t / " C O M P O N E N T R u n t i m e
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 / $ { B I T S } b i t / " C O M P O N E N T R u n t i 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 / $ { B I T S } b i t / "
O P T I O N A L
)
endif ( )
2018-09-25 23:17:08 +00:00
2020-04-02 19:47:41 +00:00
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 } / "
)
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 - -
" $ { C M A K E _ I N S T A L L _ P R E F I X } / o b s - p l u g i n s "
" $ { C M A K E _ I N S T A L L _ P R E F I X } / d a t a "
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 - -
" $ { C M A K E _ I N S T A L L _ P R E F I X } / o b s - p l u g i n s "
" $ { C M A K E _ I N S T A L L _ P R E F I X } / d a t a "
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 } "
)
2020-09-28 19:08:07 +00:00
# Windows
if ( WIN32 )
## Installer (InnoSetup)
get_filename_component ( ISS_FILES_DIR "${CMAKE_INSTALL_PREFIX}" ABSOLUTE )
file ( TO_NATIVE_PATH "${ISS_FILES_DIR}" ISS_FILES_DIR )
get_filename_component ( ISS_PACKAGE_DIR "${CMAKE_PACKAGE_PREFIX}" ABSOLUTE )
file ( TO_NATIVE_PATH "${ISS_PACKAGE_DIR}" ISS_PACKAGE_DIR )
get_filename_component ( ISS_SOURCE_DIR "${PROJECT_SOURCE_DIR}" ABSOLUTE )
file ( TO_NATIVE_PATH "${ISS_SOURCE_DIR}" ISS_SOURCE_DIR )
get_filename_component ( ISS_MSVCHELPER_PATH "${msvc-redist-helper_BUILD_DIR}" ABSOLUTE )
file ( TO_NATIVE_PATH "${ISS_MSVCHELPER_PATH}" ISS_MSVCHELPER_PATH )
configure_file (
" t e m p l a t e s / i n s t a l l e r . i s s . i n "
" $ { P R O J E C T _ B I N A R Y _ D I R } / i n s t a l l e r . i s s "
)
endif ( )
2020-04-02 19:47:41 +00:00
endif ( )
2018-12-23 19:49:18 +00:00
endif ( )