legacy.cmake 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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 TRUE)
  18. swig_add_library(
  19. obslua
  20. LANGUAGE lua
  21. TYPE MODULE
  22. SOURCES obslua.i ../cstrcache.cpp ../cstrcache.h)
  23. target_link_libraries(obslua PRIVATE OBS::scripting OBS::libobs Luajit::Luajit)
  24. list(APPEND _SWIG_DEFINITIONS "SWIG_TYPE_TABLE=obslua" "SWIG_LUA_INTERPRETER_NO_DEBUG")
  25. set_target_properties(
  26. obslua
  27. PROPERTIES FOLDER "scripting"
  28. VERSION "${OBS_VERSION_MAJOR}"
  29. SOVERSION "${OBS_VERSION_CANONICAL}")
  30. target_compile_definitions(obslua PRIVATE SWIG_TYPE_TABLE=obslua SWIG_LUA_INTERPRETER_NO_DEBUG)
  31. if(ENABLE_UI)
  32. list(APPEND _SWIG_DEFINITIONS "ENABLE_UI")
  33. target_link_libraries(obslua PRIVATE OBS::frontend-api)
  34. target_compile_definitions(obslua PRIVATE ENABLE_UI)
  35. endif()
  36. set_target_properties(obslua PROPERTIES SWIG_COMPILE_DEFINITIONS "${_SWIG_DEFINITIONS}")
  37. if(OS_WINDOWS)
  38. if(MSVC)
  39. target_compile_options(obslua PRIVATE /wd4054 /wd4197 /wd4244 /wd4267)
  40. endif()
  41. elseif(OS_MACOS)
  42. set_target_properties(obslua PROPERTIES MACHO_CURRENT_VERSION 0 MACHO_COMPATIBILITY_VERSION 0)
  43. endif()
  44. if(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND SWIG_VERSION VERSION_LESS "4.1")
  45. target_compile_options(obslua PRIVATE -Wno-maybe-uninitialized)
  46. endif()
  47. setup_script_plugin_target(obslua)