|
|
|
@ -8,6 +8,11 @@
|
|
|
|
|
# Copyright (C) 2023 Isaac Nudelman <isaac.nudelman@utexas.edu>
|
|
|
|
|
# AUTOGENERATED COPYRIGHT HEADER END
|
|
|
|
|
|
|
|
|
|
# ToDo:
|
|
|
|
|
# - Explore RESOURCE property: https://cmake.org/cmake/help/latest/prop_tgt/RESOURCE.html
|
|
|
|
|
# - Explore PUBLIC_HEADER property: https://cmake.org/cmake/help/latest/prop_tgt/PUBLIC_HEADER.html
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# CMake Setup
|
|
|
|
|
cmake_minimum_required(VERSION 3.26)
|
|
|
|
|
list(APPEND CMAKE_MESSAGE_INDENT "[StreamFX] ")
|
|
|
|
@ -269,13 +274,13 @@ if(_VERSION_PRERELEASE STREQUAL "a")
|
|
|
|
|
set(FEATURE_STABLE ON)
|
|
|
|
|
elseif(_VERSION_PRERELEASE STREQUAL "b")
|
|
|
|
|
set(FEATURE_DEPRECATED ON)
|
|
|
|
|
set(FEATURE_EXPERIMENTAL ON)
|
|
|
|
|
set(FEATURE_EXPERIMENTAL OFF)
|
|
|
|
|
set(FEATURE_UNSTABLE ON)
|
|
|
|
|
set(FEATURE_STABLE ON)
|
|
|
|
|
elseif(_VERSION_PRERELEASE STREQUAL "c")
|
|
|
|
|
set(FEATURE_DEPRECATED ON)
|
|
|
|
|
set(FEATURE_EXPERIMENTAL OFF)
|
|
|
|
|
set(FEATURE_UNSTABLE ON)
|
|
|
|
|
set(FEATURE_UNSTABLE OFF)
|
|
|
|
|
set(FEATURE_STABLE ON)
|
|
|
|
|
else()
|
|
|
|
|
set(FEATURE_DEPRECATED ON)
|
|
|
|
@ -288,7 +293,6 @@ endif()
|
|
|
|
|
set(${PREFIX}VERSION "" CACHE STRING "Specify an override for the automatically detected version. Accepts a mixture of SemVer 2.0 and CMake Version.")
|
|
|
|
|
|
|
|
|
|
# Compile/Link Related
|
|
|
|
|
set(${PREFIX}ENABLE_LTO ${D_HAS_IPO} CACHE BOOL "Enable Link Time Optimization for faster and smaller binaries.")
|
|
|
|
|
set(${PREFIX}ENABLE_FASTMATH ON CACHE BOOL "Enable fast math optimizations, which sacrifice precision and stability.")
|
|
|
|
|
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).")
|
|
|
|
@ -438,308 +442,6 @@ find_package("Qt6"
|
|
|
|
|
CONFIG
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
|
# Code
|
|
|
|
|
################################################################################
|
|
|
|
|
set(PROJECT_DATA )
|
|
|
|
|
set(PROJECT_LIBRARIES )
|
|
|
|
|
set(PROJECT_INCLUDE_DIRS )
|
|
|
|
|
set(PROJECT_TEMPLATES )
|
|
|
|
|
set(PROJECT_PRIVATE_GENERATED )
|
|
|
|
|
set(PROJECT_PRIVATE_SOURCE )
|
|
|
|
|
set(PROJECT_UI )
|
|
|
|
|
set(PROJECT_UI_SOURCE )
|
|
|
|
|
set(PROJECT_DEFINITIONS )
|
|
|
|
|
set(PROJECT_MEDIA )
|
|
|
|
|
|
|
|
|
|
# Data
|
|
|
|
|
file(GLOB_RECURSE PROJECT_DATA "data/*")
|
|
|
|
|
|
|
|
|
|
# Media
|
|
|
|
|
file(GLOB_RECURSE PROJECT_MEDIA "media/*")
|
|
|
|
|
|
|
|
|
|
# Templates
|
|
|
|
|
file(GLOB_RECURSE PROJECT_TEMPLATES "templates/*")
|
|
|
|
|
|
|
|
|
|
# Configure Files
|
|
|
|
|
configure_file(
|
|
|
|
|
"templates/config.hpp.in"
|
|
|
|
|
"generated/config.hpp"
|
|
|
|
|
)
|
|
|
|
|
LIST(APPEND PROJECT_TEMPLATES "templates/config.hpp.in")
|
|
|
|
|
LIST(APPEND PROJECT_PRIVATE_GENERATED "${PROJECT_BINARY_DIR}/generated/config.hpp")
|
|
|
|
|
|
|
|
|
|
configure_file(
|
|
|
|
|
"templates/version.hpp.in"
|
|
|
|
|
"generated/version.hpp"
|
|
|
|
|
)
|
|
|
|
|
LIST(APPEND PROJECT_TEMPLATES "templates/version.hpp.in")
|
|
|
|
|
LIST(APPEND PROJECT_PRIVATE_GENERATED "${PROJECT_BINARY_DIR}/generated/version.hpp")
|
|
|
|
|
|
|
|
|
|
configure_file(
|
|
|
|
|
"templates/module.cpp.in"
|
|
|
|
|
"generated/module.cpp"
|
|
|
|
|
)
|
|
|
|
|
LIST(APPEND PROJECT_TEMPLATES "templates/module.cpp.in")
|
|
|
|
|
LIST(APPEND PROJECT_PRIVATE_GENERATED "${PROJECT_BINARY_DIR}/generated/module.cpp")
|
|
|
|
|
# Minimum Dependencies
|
|
|
|
|
list(APPEND PROJECT_LIBRARIES OBS::libobs)
|
|
|
|
|
|
|
|
|
|
# Dependencies
|
|
|
|
|
list(APPEND PROJECT_PRIVATE_SOURCE
|
|
|
|
|
"source/util/util-curl.hpp"
|
|
|
|
|
"source/util/util-curl.cpp"
|
|
|
|
|
)
|
|
|
|
|
list(APPEND PROJECT_LIBRARIES CURL::libcurl)
|
|
|
|
|
|
|
|
|
|
list(APPEND PROJECT_INCLUDE_DIRS ${JSON_INCLUDE_DIR})
|
|
|
|
|
|
|
|
|
|
if(TRUE) # OpenGL
|
|
|
|
|
if(NOT TARGET khronos_glad)
|
|
|
|
|
add_library(khronos_glad STATIC
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/third-party/khronos/glad/src/gl.c"
|
|
|
|
|
)
|
|
|
|
|
target_include_directories(khronos_glad
|
|
|
|
|
PRIVATE
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/third-party/khronos/glad/include"
|
|
|
|
|
INTERFACE
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/third-party/khronos/glad/include"
|
|
|
|
|
PUBLIC
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/third-party/khronos/glad/include"
|
|
|
|
|
)
|
|
|
|
|
if(D_PLATFORM_WINDOWS)
|
|
|
|
|
target_sources(khronos_glad
|
|
|
|
|
PRIVATE
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/third-party/khronos/glad/src/wgl.c"
|
|
|
|
|
)
|
|
|
|
|
elseif(D_PLATFORM_LINUX)
|
|
|
|
|
target_sources(khronos_glad
|
|
|
|
|
PRIVATE
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/third-party/khronos/glad/src/glx.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()
|
|
|
|
|
|
|
|
|
|
list(APPEND PROJECT_LIBRARIES OBS::obs-frontend-api)
|
|
|
|
|
list(APPEND PROJECT_UI_SOURCE
|
|
|
|
|
"source/obs/browser/obs-browser-panel.hpp"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
list(APPEND PROJECT_LIBRARIES Qt6::Core Qt6::Gui Qt6::Widgets)
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
|
# Features
|
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
|
|
# Core
|
|
|
|
|
list(APPEND PROJECT_PRIVATE_SOURCE
|
|
|
|
|
"source/warning-disable.hpp"
|
|
|
|
|
"source/warning-enable.hpp"
|
|
|
|
|
"source/configuration.hpp"
|
|
|
|
|
"source/configuration.cpp"
|
|
|
|
|
"source/common.hpp"
|
|
|
|
|
"source/strings.hpp"
|
|
|
|
|
"source/plugin.hpp"
|
|
|
|
|
"source/plugin.cpp"
|
|
|
|
|
"source/util/utility.hpp"
|
|
|
|
|
"source/util/utility.cpp"
|
|
|
|
|
"source/util/util-bitmask.hpp"
|
|
|
|
|
"source/util/util-event.hpp"
|
|
|
|
|
"source/util/util-library.cpp"
|
|
|
|
|
"source/util/util-library.hpp"
|
|
|
|
|
"source/util/util-logging.cpp"
|
|
|
|
|
"source/util/util-logging.hpp"
|
|
|
|
|
"source/util/util-platform.hpp"
|
|
|
|
|
"source/util/util-platform.cpp"
|
|
|
|
|
"source/util/util-threadpool.cpp"
|
|
|
|
|
"source/util/util-threadpool.hpp"
|
|
|
|
|
"source/gfx/gfx-util.hpp"
|
|
|
|
|
"source/gfx/gfx-util.cpp"
|
|
|
|
|
"source/gfx/gfx-mipmapper.hpp"
|
|
|
|
|
"source/gfx/gfx-mipmapper.cpp"
|
|
|
|
|
"source/gfx/gfx-opengl.hpp"
|
|
|
|
|
"source/gfx/gfx-opengl.cpp"
|
|
|
|
|
"source/gfx/gfx-source-texture.hpp"
|
|
|
|
|
"source/gfx/gfx-source-texture.cpp"
|
|
|
|
|
"source/obs/gs/gs-helper.hpp"
|
|
|
|
|
"source/obs/gs/gs-helper.cpp"
|
|
|
|
|
"source/obs/gs/gs-effect.hpp"
|
|
|
|
|
"source/obs/gs/gs-effect.cpp"
|
|
|
|
|
"source/obs/gs/gs-effect-parameter.hpp"
|
|
|
|
|
"source/obs/gs/gs-effect-parameter.cpp"
|
|
|
|
|
"source/obs/gs/gs-effect-pass.hpp"
|
|
|
|
|
"source/obs/gs/gs-effect-pass.cpp"
|
|
|
|
|
"source/obs/gs/gs-effect-technique.hpp"
|
|
|
|
|
"source/obs/gs/gs-effect-technique.cpp"
|
|
|
|
|
"source/obs/gs/gs-indexbuffer.hpp"
|
|
|
|
|
"source/obs/gs/gs-indexbuffer.cpp"
|
|
|
|
|
"source/obs/gs/gs-limits.hpp"
|
|
|
|
|
"source/obs/gs/gs-rendertarget.hpp"
|
|
|
|
|
"source/obs/gs/gs-rendertarget.cpp"
|
|
|
|
|
"source/obs/gs/gs-sampler.hpp"
|
|
|
|
|
"source/obs/gs/gs-sampler.cpp"
|
|
|
|
|
"source/obs/gs/gs-texture.hpp"
|
|
|
|
|
"source/obs/gs/gs-texture.cpp"
|
|
|
|
|
"source/obs/gs/gs-vertex.hpp"
|
|
|
|
|
"source/obs/gs/gs-vertex.cpp"
|
|
|
|
|
"source/obs/gs/gs-vertexbuffer.hpp"
|
|
|
|
|
"source/obs/gs/gs-vertexbuffer.cpp"
|
|
|
|
|
"source/obs/obs-signal-handler.hpp"
|
|
|
|
|
"source/obs/obs-signal-handler.cpp"
|
|
|
|
|
"source/obs/obs-source-tracker.hpp"
|
|
|
|
|
"source/obs/obs-source-tracker.cpp"
|
|
|
|
|
"source/obs/obs-tools.hpp"
|
|
|
|
|
"source/obs/obs-tools.cpp"
|
|
|
|
|
|
|
|
|
|
# obs_encoder_info_t, obs_encoder_t, obs_weak_encoder_t
|
|
|
|
|
"source/obs/obs-encoder-factory.hpp"
|
|
|
|
|
"source/obs/obs-encoder-factory.cpp"
|
|
|
|
|
|
|
|
|
|
# obs_source_info_t, obs_source_t, obs_weak_source_t
|
|
|
|
|
"source/obs/obs-source-factory.hpp"
|
|
|
|
|
"source/obs/obs-source-factory.cpp"
|
|
|
|
|
"source/obs/obs-source.hpp"
|
|
|
|
|
"source/obs/obs-source.cpp"
|
|
|
|
|
"source/obs/obs-source-active-child.hpp"
|
|
|
|
|
"source/obs/obs-source-active-child.cpp"
|
|
|
|
|
"source/obs/obs-source-active-reference.hpp"
|
|
|
|
|
"source/obs/obs-source-active-reference.cpp"
|
|
|
|
|
"source/obs/obs-source-showing-reference.hpp"
|
|
|
|
|
"source/obs/obs-source-showing-reference.cpp"
|
|
|
|
|
"source/obs/obs-weak-source.hpp"
|
|
|
|
|
"source/obs/obs-weak-source.cpp"
|
|
|
|
|
)
|
|
|
|
|
list(APPEND PROJECT_DATA
|
|
|
|
|
"data/effects/color_conversion_rgb_hsl.effect"
|
|
|
|
|
"data/effects/color_conversion_rgb_hsv.effect"
|
|
|
|
|
"data/effects/color_conversion_rgb_yuv.effect"
|
|
|
|
|
"data/effects/mipgen.effect"
|
|
|
|
|
"data/effects/pack-unpack.effect"
|
|
|
|
|
"data/effects/standard.effect"
|
|
|
|
|
"data/effects/shared.effect"
|
|
|
|
|
"data/locale/en-US.ini"
|
|
|
|
|
)
|
|
|
|
|
list(APPEND PROJECT_INCLUDE_DIRS
|
|
|
|
|
"${PROJECT_BINARY_DIR}/generated"
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/source"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Profiling
|
|
|
|
|
list(APPEND PROJECT_PRIVATE_SOURCE
|
|
|
|
|
"source/util/util-profiler.cpp"
|
|
|
|
|
"source/util/util-profiler.hpp"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Updater
|
|
|
|
|
list(APPEND PROJECT_PRIVATE_SOURCE
|
|
|
|
|
"source/updater.hpp"
|
|
|
|
|
"source/updater.cpp"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Frontend
|
|
|
|
|
list(APPEND PROJECT_UI
|
|
|
|
|
"ui/streamfx.qrc"
|
|
|
|
|
"ui/about.ui"
|
|
|
|
|
"ui/about-entry.ui"
|
|
|
|
|
)
|
|
|
|
|
list(APPEND PROJECT_UI_SOURCE
|
|
|
|
|
"source/ui/ui-common.hpp"
|
|
|
|
|
"source/ui/ui.hpp"
|
|
|
|
|
"source/ui/ui.cpp"
|
|
|
|
|
"source/ui/ui-about.hpp"
|
|
|
|
|
"source/ui/ui-about.cpp"
|
|
|
|
|
"source/ui/ui-about-entry.hpp"
|
|
|
|
|
"source/ui/ui-about-entry.cpp"
|
|
|
|
|
"source/ui/ui-obs-browser-widget.hpp"
|
|
|
|
|
"source/ui/ui-obs-browser-widget.cpp"
|
|
|
|
|
)
|
|
|
|
|
list(APPEND PROJECT_INCLUDE_DIRS
|
|
|
|
|
"source/ui"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
list(APPEND PROJECT_UI_SOURCE
|
|
|
|
|
"source/ui/ui-updater.hpp"
|
|
|
|
|
"source/ui/ui-updater.cpp"
|
|
|
|
|
)
|
|
|
|
|
list(APPEND PROJECT_UI
|
|
|
|
|
"ui/updater.ui"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
|
# Parts
|
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
|
|
# Windows
|
|
|
|
|
if(D_PLATFORM_WINDOWS)
|
|
|
|
|
# Disable/Enable a ton of things.
|
|
|
|
|
list(APPEND PROJECT_DEFINITIONS
|
|
|
|
|
# Microsoft Visual C++
|
|
|
|
|
_CRT_SECURE_NO_WARNINGS
|
|
|
|
|
_ENABLE_EXTENDED_ALIGNED_STORAGE
|
|
|
|
|
# windows.h
|
|
|
|
|
WIN32_LEAN_AND_MEAN
|
|
|
|
|
NOGPICAPMASKS
|
|
|
|
|
NOVIRTUALKEYCODES
|
|
|
|
|
#NOWINMESSAGES
|
|
|
|
|
NOWINSTYLES
|
|
|
|
|
NOSYSMETRICS
|
|
|
|
|
NOMENUS
|
|
|
|
|
NOICONS
|
|
|
|
|
NOKEYSTATES
|
|
|
|
|
NOSYSCOMMANDS
|
|
|
|
|
NORASTEROPS
|
|
|
|
|
#NOSHOWWINDOW
|
|
|
|
|
NOATOM
|
|
|
|
|
NOCLIPBOARD
|
|
|
|
|
NOCOLOR
|
|
|
|
|
#NOCTLMGR
|
|
|
|
|
NODRAWTEXT
|
|
|
|
|
#NOGDI
|
|
|
|
|
NOKERNEL
|
|
|
|
|
#NOUSER
|
|
|
|
|
#NONLS
|
|
|
|
|
NOMB
|
|
|
|
|
NOMEMMGR
|
|
|
|
|
NOMETAFILE
|
|
|
|
|
NOMINMAX
|
|
|
|
|
#NOMSG
|
|
|
|
|
NOOPENFILE
|
|
|
|
|
NOSCROLL
|
|
|
|
|
NOSERVICE
|
|
|
|
|
NOSOUND
|
|
|
|
|
#NOTEXTMETRIC
|
|
|
|
|
NOWH
|
|
|
|
|
NOWINOFFSETS
|
|
|
|
|
NOCOMM
|
|
|
|
|
NOKANJI
|
|
|
|
|
#NOHELP
|
|
|
|
|
NOPROFILER
|
|
|
|
|
NODEFERWINDOWPOS
|
|
|
|
|
NOMCX
|
|
|
|
|
NOIME
|
|
|
|
|
NOMDI
|
|
|
|
|
NOINOUT
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
"stdc++fs"
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
|
# Helpers
|
|
|
|
|
################################################################################
|
|
|
|
@ -772,6 +474,7 @@ function(streamfx_add_library TARGET_NAME TARGET_TYPE)
|
|
|
|
|
# @rpath in installed binaries
|
|
|
|
|
INSTALL_RPATH "@executable_path/../Frameworks/;@loader_path/../Frameworks/;@loader_path/../Resources/"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if(STANDALONE)
|
|
|
|
|
set_target_properties(${TARGET_NAME} PROPERTIES
|
|
|
|
|
# @rpath in built binaries
|
|
|
|
@ -827,6 +530,7 @@ function(streamfx_add_library TARGET_NAME TARGET_TYPE)
|
|
|
|
|
"4505"
|
|
|
|
|
"4514"
|
|
|
|
|
"5245"
|
|
|
|
|
"5264"
|
|
|
|
|
# Don't warn about unreferenced variables or parameters which are assigned/initialized.
|
|
|
|
|
"4189"
|
|
|
|
|
# Don't warn about not-explicitly-handled enumeration identifiers
|
|
|
|
@ -853,6 +557,10 @@ function(streamfx_add_library TARGET_NAME TARGET_TYPE)
|
|
|
|
|
"5045"
|
|
|
|
|
# Ignore inserted padding.
|
|
|
|
|
"4324"
|
|
|
|
|
# Ignore non-standard nameless struct/union.
|
|
|
|
|
"4201"
|
|
|
|
|
# Intended behavior: Replace undefined macros with 0
|
|
|
|
|
"4668"
|
|
|
|
|
)
|
|
|
|
|
foreach(WARN ${DISABLED_WARNINGS})
|
|
|
|
|
target_compile_options(${TARGET_NAME} PRIVATE "/wd${WARN}")
|
|
|
|
@ -1002,6 +710,35 @@ function(streamfx_add_library TARGET_NAME TARGET_TYPE)
|
|
|
|
|
target_compile_options(${TARGET_NAME} PRIVATE "-Wall")
|
|
|
|
|
target_compile_options(${TARGET_NAME} PRIVATE "-Wextra")
|
|
|
|
|
|
|
|
|
|
# - Disable useless warnings
|
|
|
|
|
set(DISABLED_WARNINGS
|
|
|
|
|
# Don't warn about unused variables, parameters, labels, functions, or typedefs.
|
|
|
|
|
"unused-function"
|
|
|
|
|
"unused-label"
|
|
|
|
|
"unused-local-typedefs"
|
|
|
|
|
"unused-parameter"
|
|
|
|
|
"unused-result"
|
|
|
|
|
"unused-const-variable"
|
|
|
|
|
"unused-variable"
|
|
|
|
|
"unused-value"
|
|
|
|
|
# Don't warn about unreferenced variables or parameters which are assigned/initialized.
|
|
|
|
|
"unused-but-set-parameter"
|
|
|
|
|
"unused-but-set-variable"
|
|
|
|
|
# Don't warn about not-explicitly-handled enumeration identifiers
|
|
|
|
|
"switch"
|
|
|
|
|
# Ignore automatic padding warnings.
|
|
|
|
|
"padded"
|
|
|
|
|
# Ignore implicit '= delete;'.
|
|
|
|
|
# Ignore extra arguments for printf
|
|
|
|
|
"format-extra-args"
|
|
|
|
|
# Ignore undefined, unused or unreferenced pre-processor macros
|
|
|
|
|
"unused-macros"
|
|
|
|
|
)
|
|
|
|
|
foreach(WARN ${DISABLED_WARNINGS})
|
|
|
|
|
target_compile_options(${TARGET_NAME} PRIVATE "-Wno-${WARN}")
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# - Require enabled instruction sets.
|
|
|
|
|
if(${PREFIX}TARGET_NATIVE)
|
|
|
|
|
target_compile_options(${TARGET_NAME} PRIVATE
|
|
|
|
@ -1057,7 +794,7 @@ function(streamfx_add_component COMPONENT_NAME)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Always depend on StreamFX::Core
|
|
|
|
|
target_link_libraries(${COMPONENT_TARGET} PRIVATE $<LINK_LIBRARY:WHOLE_ARCHIVE,StreamFX_Core>)
|
|
|
|
|
target_link_libraries(${COMPONENT_TARGET} PUBLIC $<LINK_LIBRARY:WHOLE_ARCHIVE,StreamFX_Core>)
|
|
|
|
|
|
|
|
|
|
# Register the component globally.
|
|
|
|
|
get_target_property(_DEPENDS StreamFX COMPONENT_DEPENDS)
|
|
|
|
@ -1118,7 +855,6 @@ function(streamfx_add_component COMPONENT_NAME)
|
|
|
|
|
${USERINTERFACE}
|
|
|
|
|
${SOURCE_PRIVATE}
|
|
|
|
|
${GENERATED_PRIVATE}
|
|
|
|
|
PUBLIC
|
|
|
|
|
${SOURCE_PUBLIC}
|
|
|
|
|
${GENERATED_PUBLIC}
|
|
|
|
|
)
|
|
|
|
@ -1243,12 +979,6 @@ endfunction()
|
|
|
|
|
################################################################################
|
|
|
|
|
streamfx_add_library(StreamFX MODULE) # We are a module for libOBS.
|
|
|
|
|
|
|
|
|
|
target_include_directories(StreamFX PRIVATE
|
|
|
|
|
"source"
|
|
|
|
|
"include"
|
|
|
|
|
"${PROJECT_BINARY_DIR}/generated"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Ensure there is at least one file.
|
|
|
|
|
if(D_PLATFORM_WINDOWS)
|
|
|
|
|
target_sources(StreamFX
|
|
|
|
@ -1262,6 +992,7 @@ else()
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# version.rc (can't be part of a static library)
|
|
|
|
|
if(D_PLATFORM_WINDOWS) # Windows-exclusive
|
|
|
|
|
# Version Resource
|
|
|
|
|
set(PROJECT_PRODUCT_NAME "${PROJECT_FULL_NAME}")
|
|
|
|
@ -1272,36 +1003,17 @@ if(D_PLATFORM_WINDOWS) # Windows-exclusive
|
|
|
|
|
|
|
|
|
|
configure_file(
|
|
|
|
|
"templates/windows/version.rc.in"
|
|
|
|
|
"generated/version.rc"
|
|
|
|
|
"version.rc"
|
|
|
|
|
)
|
|
|
|
|
target_sources(StreamFX
|
|
|
|
|
PRIVATE
|
|
|
|
|
"templates/windows/version.rc.in"
|
|
|
|
|
"${PROJECT_BINARY_DIR}/generated/version.rc"
|
|
|
|
|
target_sources(StreamFX PRIVATE
|
|
|
|
|
"${PROJECT_BINARY_DIR}/version.rc"
|
|
|
|
|
)
|
|
|
|
|
elseif(D_PLATFORM_MAC) # MacOS exclusive Changes
|
|
|
|
|
set_target_properties(StreamFX PROPERTIES
|
|
|
|
|
# No automatic code signing in XCode
|
|
|
|
|
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ""
|
|
|
|
|
XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO"
|
|
|
|
|
|
|
|
|
|
# @rpath in installed binaries
|
|
|
|
|
INSTALL_RPATH "@executable_path/../Frameworks/;@loader_path/../Frameworks/;@loader_path/../Resources/"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if(STANDALONE)
|
|
|
|
|
set_target_properties(StreamFX PROPERTIES
|
|
|
|
|
# @rpath in built binaries
|
|
|
|
|
BUILD_WITH_INSTALL_RPATH ON
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Set file version
|
|
|
|
|
set_target_properties(StreamFX PROPERTIES
|
|
|
|
|
# Version
|
|
|
|
|
MACHO_COMPATIBILITY_VERSION ${_VERSION_MAJOR}.${_VERSION_MINOR}
|
|
|
|
|
MACHO_CURRENT_VERSION ${PROJECT_VERSION}
|
|
|
|
|
SOVERSION ${_VERSION_MAJOR}.${_VERSION_MINOR}
|
|
|
|
|
MACHO_CURRENT_VERSION ${PROJECT_VERSION}
|
|
|
|
|
VERSION ${PROJECT_VERSION}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
@ -1311,66 +1023,188 @@ set_target_properties(StreamFX PROPERTIES
|
|
|
|
|
streamfx_add_library(StreamFX_Core STATIC EXCLUDE_FROM_ALL)
|
|
|
|
|
add_library(StreamFX::Core ALIAS StreamFX_Core)
|
|
|
|
|
|
|
|
|
|
# Register the library
|
|
|
|
|
target_link_libraries(StreamFX_Core
|
|
|
|
|
PRIVATE ${PROJECT_LIBRARIES}
|
|
|
|
|
PUBLIC OBS::libobs
|
|
|
|
|
)
|
|
|
|
|
target_include_directories(StreamFX_Core
|
|
|
|
|
PRIVATE ${PROJECT_INCLUDE_DIRS}
|
|
|
|
|
PUBLIC
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/source"
|
|
|
|
|
"${PROJECT_BINARY_DIR}/generated"
|
|
|
|
|
)
|
|
|
|
|
target_compile_definitions(StreamFX_Core
|
|
|
|
|
PRIVATE ${PROJECT_DEFINITIONS}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Combine all variables that matter.
|
|
|
|
|
set(PROJECT_FILES
|
|
|
|
|
# Always exist
|
|
|
|
|
${PROJECT_DATA}
|
|
|
|
|
${PROJECT_PRIVATE_GENERATED}
|
|
|
|
|
${PROJECT_PRIVATE_SOURCE}
|
|
|
|
|
${PROJECT_TEMPLATES}
|
|
|
|
|
# UI-only (empty if not enabled)
|
|
|
|
|
${PROJECT_UI}
|
|
|
|
|
${PROJECT_UI_SOURCE}
|
|
|
|
|
# Media
|
|
|
|
|
${PROJECT_MEDIA}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# 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})
|
|
|
|
|
source_group(TREE "${PROJECT_SOURCE_DIR}/media" PREFIX "Media" FILES ${PROJECT_MEDIA})
|
|
|
|
|
|
|
|
|
|
# Prevent unwanted files from being built as source.
|
|
|
|
|
set_source_files_properties(${PROJECT_DATA} ${PROJECT_TEMPLATES} ${PROJECT_UI} ${PROJECT_MEDIA} PROPERTIES
|
|
|
|
|
HEADER_FILE_ONLY ON
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Enable Qt if needed
|
|
|
|
|
# Enable Qt
|
|
|
|
|
set_target_properties(StreamFX_Core PROPERTIES
|
|
|
|
|
AUTOUIC ON
|
|
|
|
|
AUTOUIC_SEARCH_PATHS "${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_SOURCE_DIR}/ui"
|
|
|
|
|
AUTOMOC ON
|
|
|
|
|
AUTORCC ON
|
|
|
|
|
AUTOGEN_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated"
|
|
|
|
|
AUTOGEN_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/qt"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Prevent non-UI files from being Qt'd
|
|
|
|
|
set_source_files_properties(${PROJECT_DATA} ${PROJECT_TEMPLATES} ${PROJECT_MEDIA} ${PROJECT_PRIVATE_GENERATED} ${PROJECT_PRIVATE_SOURCE} PROPERTIES
|
|
|
|
|
# Default Links
|
|
|
|
|
target_link_libraries(StreamFX_Core
|
|
|
|
|
PUBLIC
|
|
|
|
|
CURL::libcurl
|
|
|
|
|
Qt6::Core
|
|
|
|
|
Qt6::Gui
|
|
|
|
|
Qt6::Widgets
|
|
|
|
|
OBS::obs-frontend-api
|
|
|
|
|
OBS::libobs
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Default Include Dirs
|
|
|
|
|
target_include_directories(StreamFX_Core
|
|
|
|
|
PRIVATE
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/source/ui"
|
|
|
|
|
"${PROJECT_BINARY_DIR}/qt"
|
|
|
|
|
PUBLIC
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/source"
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/include"
|
|
|
|
|
"${PROJECT_BINARY_DIR}/generated"
|
|
|
|
|
${JSON_INCLUDE_DIR}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Templates
|
|
|
|
|
file(GLOB_RECURSE PROJECT_TEMPLATES FOLLOW_SYMLINKS CONFIGURE_DEPENDS "templates/*")
|
|
|
|
|
source_group(TREE "${PROJECT_SOURCE_DIR}/templates" PREFIX "Templates" FILES ${PROJECT_TEMPLATES})
|
|
|
|
|
set_source_files_properties(${PROJECT_TEMPLATES} PROPERTIES
|
|
|
|
|
HEADER_FILE_ONLY ON
|
|
|
|
|
SKIP_AUTOGEN ON
|
|
|
|
|
SKIP_AUTOMOC ON
|
|
|
|
|
SKIP_AUTORCC ON
|
|
|
|
|
SKIP_AUTOUIC ON
|
|
|
|
|
)
|
|
|
|
|
target_sources(StreamFX_Core PRIVATE ${PROJECT_TEMPLATES})
|
|
|
|
|
|
|
|
|
|
target_sources(StreamFX_Core PRIVATE ${PROJECT_FILES})
|
|
|
|
|
# Generated
|
|
|
|
|
#- config.hpp
|
|
|
|
|
configure_file(
|
|
|
|
|
"templates/config.hpp.in"
|
|
|
|
|
"generated/config.hpp"
|
|
|
|
|
)
|
|
|
|
|
#- version.hpp
|
|
|
|
|
configure_file(
|
|
|
|
|
"templates/version.hpp.in"
|
|
|
|
|
"generated/version.hpp"
|
|
|
|
|
)
|
|
|
|
|
#- module.cpp
|
|
|
|
|
configure_file(
|
|
|
|
|
"templates/module.cpp.in"
|
|
|
|
|
"generated/module.cpp"
|
|
|
|
|
)
|
|
|
|
|
#- Add all generated files
|
|
|
|
|
file(GLOB_RECURSE PROJECT_PRIVATE_GENERATED FOLLOW_SYMLINKS CONFIGURE_DEPENDS "${PROJECT_BINARY_DIR}/generated/*")
|
|
|
|
|
source_group(TREE "${PROJECT_BINARY_DIR}/generated" PREFIX "Private Files/Generated" FILES ${PROJECT_PRIVATE_GENERATED})
|
|
|
|
|
set_source_files_properties(${PROJECT_PRIVATE_GENERATED} PROPERTIES
|
|
|
|
|
SKIP_AUTOGEN ON
|
|
|
|
|
SKIP_AUTOMOC ON
|
|
|
|
|
SKIP_AUTORCC ON
|
|
|
|
|
SKIP_AUTOUIC ON
|
|
|
|
|
)
|
|
|
|
|
target_sources(StreamFX_Core PRIVATE ${PROJECT_PRIVATE_GENERATED})
|
|
|
|
|
|
|
|
|
|
# Source
|
|
|
|
|
file(GLOB_RECURSE PROJECT_PRIVATE FOLLOW_SYMLINKS CONFIGURE_DEPENDS "${PROJECT_SOURCE_DIR}/source/*")
|
|
|
|
|
list(REMOVE_ITEM PROJECT_PRIVATE "${PROJECT_SOURCE_DIR}/source/windll.cpp") # Only used by StreamFX, not part of StreamFX::Core
|
|
|
|
|
source_group(TREE "${PROJECT_SOURCE_DIR}/source" PREFIX "Private Files" FILES ${PROJECT_PRIVATE})
|
|
|
|
|
set_source_files_properties(${PROJECT_PRIVATE} PROPERTIES
|
|
|
|
|
SKIP_AUTOGEN ON
|
|
|
|
|
SKIP_AUTOMOC ON
|
|
|
|
|
SKIP_AUTORCC ON
|
|
|
|
|
SKIP_AUTOUIC ON
|
|
|
|
|
)
|
|
|
|
|
target_sources(StreamFX_Core PRIVATE ${PROJECT_PRIVATE})
|
|
|
|
|
|
|
|
|
|
# User-Interface Source
|
|
|
|
|
file(GLOB_RECURSE PROJECT_PRIVATE_UI FOLLOW_SYMLINKS CONFIGURE_DEPENDS "${PROJECT_SOURCE_DIR}/source/ui/*")
|
|
|
|
|
list(APPEND PROJECT_PRIVATE_UI "${PROJECT_SOURCE_DIR}/source/obs/browser/obs-browser-panel.hpp")
|
|
|
|
|
set_source_files_properties(${PROJECT_PRIVATE_UI} PROPERTIES
|
|
|
|
|
SKIP_AUTOGEN OFF
|
|
|
|
|
SKIP_AUTOMOC OFF
|
|
|
|
|
SKIP_AUTORCC OFF
|
|
|
|
|
SKIP_AUTOUIC OFF
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# User-Interface Definitions
|
|
|
|
|
file(GLOB_RECURSE PROJECT_UI FOLLOW_SYMLINKS CONFIGURE_DEPENDS "${PROJECT_SOURCE_DIR}/ui/*")
|
|
|
|
|
source_group(TREE "${PROJECT_SOURCE_DIR}/ui" PREFIX "User-Interface Files" FILES ${PROJECT_UI})
|
|
|
|
|
set_source_files_properties(${PROJECT_UI} PROPERTIES
|
|
|
|
|
HEADER_FILE_ONLY ON
|
|
|
|
|
)
|
|
|
|
|
target_sources(StreamFX_Core PRIVATE ${PROJECT_UI})
|
|
|
|
|
|
|
|
|
|
# Windows
|
|
|
|
|
if(D_PLATFORM_WINDOWS)
|
|
|
|
|
# Disable/Enable a ton of things.
|
|
|
|
|
target_compile_definitions(StreamFX_Core PRIVATE
|
|
|
|
|
# Microsoft Visual C++
|
|
|
|
|
_CRT_SECURE_NO_WARNINGS
|
|
|
|
|
_ENABLE_EXTENDED_ALIGNED_STORAGE
|
|
|
|
|
# windows.h
|
|
|
|
|
WIN32_LEAN_AND_MEAN
|
|
|
|
|
NOGPICAPMASKS
|
|
|
|
|
NOVIRTUALKEYCODES
|
|
|
|
|
#NOWINMESSAGES
|
|
|
|
|
NOWINSTYLES
|
|
|
|
|
NOSYSMETRICS
|
|
|
|
|
NOMENUS
|
|
|
|
|
NOICONS
|
|
|
|
|
NOKEYSTATES
|
|
|
|
|
NOSYSCOMMANDS
|
|
|
|
|
NORASTEROPS
|
|
|
|
|
#NOSHOWWINDOW
|
|
|
|
|
NOATOM
|
|
|
|
|
NOCLIPBOARD
|
|
|
|
|
NOCOLOR
|
|
|
|
|
#NOCTLMGR
|
|
|
|
|
NODRAWTEXT
|
|
|
|
|
#NOGDI
|
|
|
|
|
NOKERNEL
|
|
|
|
|
#NOUSER
|
|
|
|
|
#NONLS
|
|
|
|
|
NOMB
|
|
|
|
|
NOMEMMGR
|
|
|
|
|
NOMETAFILE
|
|
|
|
|
NOMINMAX
|
|
|
|
|
#NOMSG
|
|
|
|
|
NOOPENFILE
|
|
|
|
|
NOSCROLL
|
|
|
|
|
NOSERVICE
|
|
|
|
|
NOSOUND
|
|
|
|
|
#NOTEXTMETRIC
|
|
|
|
|
NOWH
|
|
|
|
|
NOWINOFFSETS
|
|
|
|
|
NOCOMM
|
|
|
|
|
NOKANJI
|
|
|
|
|
#NOHELP
|
|
|
|
|
NOPROFILER
|
|
|
|
|
NODEFERWINDOWPOS
|
|
|
|
|
NOMCX
|
|
|
|
|
NOIME
|
|
|
|
|
NOMDI
|
|
|
|
|
NOINOUT
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# OpenGL via GLAD
|
|
|
|
|
if(NOT TARGET StreamFX::GLAD)
|
|
|
|
|
add_library(StreamFX_GLAD STATIC
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/third-party/khronos/glad/src/gl.c"
|
|
|
|
|
)
|
|
|
|
|
target_include_directories(StreamFX_GLAD
|
|
|
|
|
PUBLIC
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/third-party/khronos/glad/include"
|
|
|
|
|
)
|
|
|
|
|
if(D_PLATFORM_WINDOWS)
|
|
|
|
|
target_sources(StreamFX_GLAD
|
|
|
|
|
PRIVATE
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/third-party/khronos/glad/src/wgl.c"
|
|
|
|
|
)
|
|
|
|
|
elseif(D_PLATFORM_LINUX)
|
|
|
|
|
target_sources(StreamFX_GLAD
|
|
|
|
|
PRIVATE
|
|
|
|
|
"${PROJECT_SOURCE_DIR}/third-party/khronos/glad/src/glx.c"
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Requires for shared/static mixing.
|
|
|
|
|
set_property(TARGET StreamFX_GLAD PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
|
|
|
|
|
|
|
|
add_library(StreamFX::GLAD ALIAS StreamFX_GLAD)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
target_link_libraries(StreamFX_Core PUBLIC StreamFX::GLAD)
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
|
# Components
|
|
|
|
@ -1510,22 +1344,54 @@ foreach(_ENTITY ${_RESOLVED})
|
|
|
|
|
|
|
|
|
|
streamfx_enabled_component(${_ENTITY2} T_CHECK)
|
|
|
|
|
if(T_CHECK)
|
|
|
|
|
target_link_libraries(${RENTITY}
|
|
|
|
|
PUBLIC
|
|
|
|
|
$<LINK_LIBRARY:WHOLE_ARCHIVE,${RENTITY2}>
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(${RENTITY} PUBLIC $<LINK_LIBRARY:WHOLE_ARCHIVE,${RENTITY2}>)
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
target_link_libraries(StreamFX
|
|
|
|
|
PRIVATE
|
|
|
|
|
$<LINK_LIBRARY:WHOLE_ARCHIVE,${RENTITY}>
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(StreamFX PUBLIC $<LINK_LIBRARY:WHOLE_ARCHIVE,${RENTITY}>)
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
target_link_libraries(StreamFX PUBLIC $<LINK_LIBRARY:WHOLE_ARCHIVE,StreamFX_Core>)
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
|
# Resources
|
|
|
|
|
################################################################################
|
|
|
|
|
# This needs to be handled separately, as CMake does not propagate Resources
|
|
|
|
|
# between dependencies. This feels like a bug in CMake, but it is better than
|
|
|
|
|
# not doing anything at all. Might eventually need to revise this when we start
|
|
|
|
|
# generating data files.
|
|
|
|
|
|
|
|
|
|
# Data
|
|
|
|
|
file(GLOB_RECURSE PROJECT_DATA "data/*")
|
|
|
|
|
source_group(TREE "${PROJECT_SOURCE_DIR}/data" PREFIX "Data" FILES ${PROJECT_DATA})
|
|
|
|
|
if(D_PLATFORM_MAC)
|
|
|
|
|
foreach(FILE IN LISTS PROJECT_DATA) # Data location
|
|
|
|
|
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
|
|
|
|
|
MACOSX_PACKAGE_LOCATION "Resources/${FILE_PATH}"
|
|
|
|
|
)
|
|
|
|
|
endforeach()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Media
|
|
|
|
|
file(GLOB_RECURSE PROJECT_MEDIA "media/*")
|
|
|
|
|
source_group(TREE "${PROJECT_SOURCE_DIR}/media" PREFIX "Media" FILES ${PROJECT_MEDIA})
|
|
|
|
|
if(D_PLATFORM_MAC)
|
|
|
|
|
#- Bundle Icon location
|
|
|
|
|
set_source_files_properties("media/icon.png" PROPERTIES
|
|
|
|
|
MACOSX_PACKAGE_LOCATION "Resources"
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Add all Resources to StreamFX
|
|
|
|
|
set_source_files_properties(${PROJECT_DATA} ${PROJECT_MEDIA} PROPERTIES
|
|
|
|
|
HEADER_FILE_ONLY ON
|
|
|
|
|
)
|
|
|
|
|
target_sources(StreamFX PRIVATE ${PROJECT_DATA} ${PROJECT_MEDIA})
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
|
# Installation
|
|
|
|
|
################################################################################
|
|
|
|
@ -1596,21 +1462,6 @@ if(STANDALONE)
|
|
|
|
|
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${MACOSX_BUNDLE_GUI_IDENTIFIER}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
MACOSX_PACKAGE_LOCATION "Resources/${FILE_PATH}"
|
|
|
|
|
)
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
# Bundle Icon
|
|
|
|
|
set_source_files_properties("media/icon.png" PROPERTIES
|
|
|
|
|
MACOSX_PACKAGE_LOCATION "Resources"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
install(
|
|
|
|
|
TARGETS StreamFX
|
|
|
|
|
RUNTIME DESTINATION "." COMPONENT StreamFX
|
|
|
|
|