CMakeLists.txt 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. cmake_minimum_required(VERSION 3.22...3.25)
  2. legacy_check()
  3. if(NOT ENABLE_SCRIPTING)
  4. target_disable_feature(obs-scripting "Scripting support")
  5. return()
  6. endif()
  7. add_library(obs-cstrcache INTERFACE)
  8. add_library(OBS::cstrcache ALIAS obs-cstrcache)
  9. target_sources(obs-cstrcache INTERFACE cstrcache.cpp cstrcache.h)
  10. target_include_directories(obs-cstrcache INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
  11. find_package(SWIG 4 REQUIRED)
  12. add_library(obs-scripting SHARED)
  13. add_library(OBS::scripting ALIAS obs-scripting)
  14. include(cmake/lua.cmake)
  15. include(cmake/python.cmake)
  16. if(NOT ENABLE_SCRIPTING_LUA AND NOT ENABLE_SCRIPTING_PYTHON)
  17. target_disable_feature(obs-scripting "Scripting support")
  18. return()
  19. else()
  20. target_enable_feature(obs-scripting "Scripting support")
  21. endif()
  22. target_sources(
  23. obs-scripting
  24. PUBLIC obs-scripting.h
  25. PRIVATE obs-scripting.c obs-scripting-logging.c obs-scripting-callback.h
  26. $<$<BOOL:${ENABLE_UI}>:obs-scripting-python-frontend.c> $<$<BOOL:${ENABLE_UI}>:obs-scripting-lua-frontend.c>)
  27. target_compile_definitions(obs-scripting PRIVATE SCRIPT_DIR="${OBS_SCRIPT_PLUGIN_PATH}"
  28. $<$<BOOL:${ENABLE_UI}>:ENABLE_UI>)
  29. target_compile_features(obs-scripting PRIVATE cxx_auto_type)
  30. target_include_directories(obs-scripting PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
  31. target_link_libraries(obs-scripting PRIVATE OBS::libobs OBS::cstrcache $<$<BOOL:${ENABLE_UI}>:OBS::frontend-api>
  32. $<$<PLATFORM_ID:Windows>:OBS::w32-pthreads> $<$<PLATFORM_ID:Darwin>:objc>)
  33. if(OS_WINDOWS)
  34. configure_file(cmake/windows/obs-module.rc.in obs-scripting.rc)
  35. target_sources(obs-scripting PRIVATE obs-scripting.rc)
  36. endif()
  37. set_target_properties_obs(obs-scripting PROPERTIES FOLDER scripting PREFIX "")