CMakeLists.txt 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. include(cmake/cstrcache.cmake)
  8. find_package(SWIG 4 REQUIRED)
  9. add_library(obs-scripting SHARED)
  10. add_library(OBS::scripting ALIAS obs-scripting)
  11. include(cmake/lua.cmake)
  12. include(cmake/python.cmake)
  13. if(NOT ENABLE_SCRIPTING_LUA AND NOT ENABLE_SCRIPTING_PYTHON)
  14. target_disable_feature(obs-scripting "Scripting support")
  15. return()
  16. else()
  17. target_enable_feature(obs-scripting "Scripting support")
  18. endif()
  19. target_sources(
  20. obs-scripting
  21. PUBLIC obs-scripting.h
  22. PRIVATE obs-scripting-callback.h obs-scripting-logging.c obs-scripting.c)
  23. target_compile_definitions(obs-scripting PRIVATE SCRIPT_DIR="${OBS_SCRIPT_PLUGIN_PATH}"
  24. $<$<BOOL:${ENABLE_UI}>:ENABLE_UI>)
  25. target_include_directories(obs-scripting PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
  26. # cmake-format: off
  27. target_link_libraries(
  28. obs-scripting
  29. PRIVATE OBS::libobs
  30. OBS::cstrcache
  31. $<$<BOOL:${ENABLE_UI}>:OBS::frontend-api>
  32. $<$<PLATFORM_ID:Windows>:OBS::w32-pthreads>
  33. $<$<PLATFORM_ID:Darwin>:objc>)
  34. # cmake-format: on
  35. if(OS_WINDOWS)
  36. configure_file(cmake/windows/obs-module.rc.in obs-scripting.rc)
  37. target_sources(obs-scripting PRIVATE obs-scripting.rc)
  38. endif()
  39. # cmake-format: off
  40. set_target_properties_obs(obs-scripting PROPERTIES FOLDER scripting)
  41. if (OS_WINDOWS OR OS_MACOS)
  42. set_property(TARGET obs-scripting PROPERTY PREFIX "")
  43. endif()
  44. # cmake-format: on