cmake_minimum_required(VERSION 3.16...3.25) legacy_check() if(NOT ENABLE_SCRIPTING) target_disable_feature(obs-scripting "Scripting support") return() endif() add_library(obs-cstrcache INTERFACE) add_library(OBS::cstrcache ALIAS obs-cstrcache) target_sources(obs-cstrcache INTERFACE cstrcache.cpp cstrcache.h) target_include_directories(obs-cstrcache INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}") find_package(SWIG 4 REQUIRED) add_library(obs-scripting SHARED) add_library(OBS::scripting ALIAS obs-scripting) include(cmake/lua.cmake) include(cmake/python.cmake) if(NOT ENABLE_SCRIPTING_LUA AND NOT ENABLE_SCRIPTING_PYTHON) target_disable_feature(obs-scripting "Scripting support") return() else() target_enable_feature(obs-scripting "Scripting support") endif() target_sources( obs-scripting PUBLIC obs-scripting.h PRIVATE obs-scripting.c obs-scripting-logging.c obs-scripting-callback.h $<$:obs-scripting-python-frontend.c> $<$:obs-scripting-lua-frontend.c>) target_compile_definitions(obs-scripting PRIVATE SCRIPT_DIR="${OBS_SCRIPT_PLUGIN_PATH}" $<$:ENABLE_UI>) target_compile_features(obs-scripting PRIVATE cxx_auto_type) target_include_directories(obs-scripting PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(obs-scripting PRIVATE OBS::libobs OBS::cstrcache $<$:OBS::frontend-api> $<$:OBS::w32-pthreads> $<$:objc>) if(OS_WINDOWS) configure_file(cmake/windows/obs-module.rc.in obs-scripting.rc) target_sources(obs-scripting PRIVATE obs-scripting.rc) endif() set_target_properties_obs(obs-scripting PROPERTIES FOLDER scripting PREFIX "")