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)