CMakeLists.txt 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. if(POLICY CMP0086)
  2. cmake_policy(SET CMP0086 NEW)
  3. endif()
  4. if(POLICY CMP0078)
  5. cmake_policy(SET CMP0078 NEW)
  6. endif()
  7. project(obslua)
  8. find_package(Luajit REQUIRED)
  9. if(OS_MACOS)
  10. find_package(SWIG 4 REQUIRED)
  11. elseif(OS_POSIX)
  12. find_package(SWIG 3 REQUIRED)
  13. elseif(OS_WINDOWS)
  14. find_package(SwigWindows 3 REQUIRED)
  15. endif()
  16. include(UseSWIG)
  17. set_source_files_properties(obslua.i PROPERTIES USE_TARGET_INCLUDE_DIRECTORIES
  18. TRUE)
  19. swig_add_library(
  20. obslua
  21. LANGUAGE lua
  22. TYPE MODULE
  23. SOURCES obslua.i ../cstrcache.cpp ../cstrcache.h)
  24. target_link_libraries(obslua PRIVATE OBS::scripting OBS::libobs Luajit::Luajit)
  25. list(APPEND _SWIG_DEFINITIONS "SWIG_TYPE_TABLE=obslua"
  26. "SWIG_LUA_INTERPRETER_NO_DEBUG")
  27. set_target_properties(
  28. obslua
  29. PROPERTIES FOLDER "scripting"
  30. VERSION "${OBS_VERSION_MAJOR}"
  31. SOVERSION "${OBS_VERSION_CANONICAL}")
  32. target_compile_definitions(obslua PRIVATE SWIG_TYPE_TABLE=obslua
  33. SWIG_LUA_INTERPRETER_NO_DEBUG)
  34. if(ENABLE_UI)
  35. list(APPEND _SWIG_DEFINITIONS "ENABLE_UI")
  36. target_link_libraries(obslua PRIVATE OBS::frontend-api)
  37. target_compile_definitions(obslua PRIVATE ENABLE_UI)
  38. endif()
  39. set_target_properties(obslua PROPERTIES SWIG_COMPILE_DEFINITIONS
  40. "${_SWIG_DEFINITIONS}")
  41. if(OS_WINDOWS)
  42. if(MSVC)
  43. target_compile_options(obslua PRIVATE /wd4054 /wd4197 /wd4244 /wd4267)
  44. endif()
  45. elseif(OS_MACOS)
  46. set_target_properties(obslua PROPERTIES MACHO_CURRENT_VERSION 0
  47. MACHO_COMPATIBILITY_VERSION 0)
  48. endif()
  49. setup_script_plugin_target(obslua)