option(ENABLE_SCRIPTING_PYTHON "Enable Python scripting support" ON) if(ENABLE_SCRIPTING_PYTHON) add_subdirectory(obspython) if(OS_WINDOWS) find_package(Python 3.8...<3.11 REQUIRED Interpreter Development) elseif(OS_LINUX OR OS_FREEBSD OR OS_OPENBSD) find_package(Python 3.8 REQUIRED Interpreter Development) else() find_package(Python 3.8...<3.12 REQUIRED Interpreter Development) endif() add_custom_command( OUTPUT swig/swigpyrun.h WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory swig COMMAND ${CMAKE_COMMAND} -E env "SWIG_LIB=${SWIG_DIR}" ${SWIG_EXECUTABLE} -python $<$:-py3-stable-abi> -external-runtime swig/swigpyrun.h COMMENT "obs-scripting - generating Python 3 SWIG interface headers" ) set_source_files_properties(swig/swigpyrun.h PROPERTIES GENERATED TRUE) target_sources( obs-scripting PRIVATE $<$:obs-scripting-python-frontend.c> $<$:obs-scripting-python-import.c> obs-scripting-python-import.h obs-scripting-python.c obs-scripting-python.h swig/swigpyrun.h ) target_compile_definitions( obs-scripting PRIVATE ENABLE_SCRIPTING PYTHON_LIB="$" PUBLIC Python_FOUND ) target_include_directories( obs-scripting PRIVATE "$<$:$>" ) target_link_libraries(obs-scripting PRIVATE $<$:Python::Python>) target_link_options(obs-scripting PRIVATE $<$:LINKER:-undefined,dynamic_lookup>) else() target_disable_feature(obs-scripting "Python scripting support") endif()