char-rtc-obs/CMakeLists.txt

72 lines
2.3 KiB
CMake

project(char-rtc-obs)
find_package(Corrosion QUIET)
if(NOT Corrosion_FOUND)
include(FetchContent)
FetchContent_Declare(
Corrosion
GIT_REPOSITORY https://github.com/corrosion-rs/corrosion.git
GIT_TAG v0.3.1)
FetchContent_MakeAvailable(Corrosion)
endif()
set(CHAR_RTC_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
corrosion_import_crate(MANIFEST_PATH rtc-backend/Cargo.toml)
corrosion_set_env_vars(
char-rtc-backend "CHAR_RTC_GENERATED_DIR=${CHAR_RTC_GENERATED_DIR}"
"CHAR_RTC_OBS_VERSION=${OBS_VERSION_CANONICAL}")
# Force dependent crates to link against the correct deployment target
if(OS_MACOS)
corrosion_set_env_vars(
char-rtc-backend
"CFLAGS_aarch64_apple_darwin=-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}"
"CFLAGS_x86_64_apple_darwin=-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}"
)
corrosion_add_target_rustflags(
char-rtc-backend
-Clink-arg=-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET})
endif()
set(CMAKE_PREFIX_PATH "${QTDIR}")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_qt(COMPONENTS Core Widgets Gui)
add_library(char-rtc-obs MODULE)
target_sources(char-rtc-obs PRIVATE
char-rtc.c
whip-service.c whip-service.h
whip-output.c whip-output.h
whip-setup.cpp whip-setup.h
"${CHAR_RTC_GENERATED_DIR}/bindings.h"
)
set_source_files_properties("${CHAR_RTC_GENERATED_DIR}/bindings.h"
PROPERTIES GENERATED TRUE)
target_link_libraries(char-rtc-obs char-rtc-backend
OBS::libobs OBS::frontend-api
Qt::Core Qt::Widgets Qt::Gui)
target_include_directories(char-rtc-obs PRIVATE ${CHAR_RTC_GENERATED_DIR} ${Qt5Core_INCLUDES} ${Qt5Widgets_INCLUDES} ${Qt5Gui_INCLUDES})
if(OS_WINDOWS)
set(MODULE_DESCRIPTION "live.umm.gay module")
configure_file("${CMAKE_SOURCE_DIR}/cmake/bundle/windows/obs-module.rc.in"
char-rtc-obs.rc)
target_sources(char-rtc-obs PRIVATE char-rtc-obs.rc)
endif()
if(OS_MACOS)
find_library(COREFOUNDATION CoreFoundation)
find_library(SECURITY_FRAMEWORK Security)
find_library(SYSTEMCONFIGURATION SystemConfiguration)
mark_as_advanced(COREFOUNDATION SECURITY_FRAMEWOR SYSTEMCONFIGURATION)
target_link_libraries(char-rtc-obs ${COREFOUNDATION} ${SECURITY_FRAMEWORK}
${SYSTEMCONFIGURATION})
endif()
set_target_properties(char-rtc-obs PROPERTIES FOLDER "plugins")
setup_plugin_target(char-rtc-obs data)