CMakeLists.txt 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. cmake_minimum_required(VERSION 2.8)
  2. project(obspython)
  3. if(POLICY CMP0078)
  4. cmake_policy(SET CMP0078 OLD)
  5. endif()
  6. find_package(SWIG 2 REQUIRED)
  7. include(${SWIG_USE_FILE})
  8. add_definitions(-DSWIG_TYPE_TABLE=obspython -DMS_NO_COREDLL -DPy_ENABLE_SHARED=1 -DSWIG_PYTHON_INTERPRETER_NO_DEBUG)
  9. if(MSVC)
  10. add_compile_options("/wd4054")
  11. add_compile_options("/wd4100")
  12. add_compile_options("/wd4115")
  13. add_compile_options("/wd4197")
  14. add_compile_options("/wd4701")
  15. endif()
  16. include_directories(${PYTHON_INCLUDE_DIR})
  17. include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/libobs")
  18. include_directories(${CMAKE_CURRENT_SOURCE_DIR})
  19. #add_definitions( -DSWIG_TYPE_TABLE=libobs )
  20. SET_SOURCE_FILES_PROPERTIES(obspython.i PROPERTIES SWIG_FLAGS "-modern")
  21. SET_SOURCE_FILES_PROPERTIES(obspython.i PROPERTIES SWIG_FLAGS "-builtin")
  22. SET_SOURCE_FILES_PROPERTIES(obspython.i PROPERTIES SWIG_FLAGS "-modernargs")
  23. SET_SOURCE_FILES_PROPERTIES(obspython.i PROPERTIES SWIG_FLAGS "-includeall")
  24. SET_SOURCE_FILES_PROPERTIES(obspython.i PROPERTIES SWIG_FLAGS "-importall")
  25. SET_SOURCE_FILES_PROPERTIES(obspython.i PROPERTIES SWIG_FLAGS "-py3")
  26. if(WIN32)
  27. string(REGEX REPLACE "_d" "" PYTHON_LIBRARIES "${PYTHON_LIBRARIES}")
  28. endif()
  29. if(CMAKE_VERSION VERSION_GREATER 3.7.2)
  30. SWIG_ADD_LIBRARY(obspython
  31. LANGUAGE python
  32. TYPE MODULE
  33. SOURCES obspython.i ../cstrcache.cpp ../cstrcache.h)
  34. else()
  35. SWIG_ADD_MODULE(obspython python obspython.i ../cstrcache.cpp ../cstrcache.h)
  36. endif()
  37. IF(APPLE)
  38. SWIG_LINK_LIBRARIES(obspython obs-scripting libobs)
  39. ELSE()
  40. SWIG_LINK_LIBRARIES(obspython obs-scripting libobs ${PYTHON_LIBRARIES})
  41. ENDIF()
  42. function(install_plugin_bin_swig target additional_target)
  43. if(APPLE)
  44. set(_bit_suffix "")
  45. elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
  46. set(_bit_suffix "64bit/")
  47. else()
  48. set(_bit_suffix "32bit/")
  49. endif()
  50. set_target_properties(${additional_target} PROPERTIES
  51. PREFIX "")
  52. if (APPLE)
  53. SET_TARGET_PROPERTIES(${additional_target} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
  54. endif()
  55. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/obspython.py"
  56. DESTINATION "${OBS_SCRIPT_PLUGIN_DESTINATION}")
  57. install(TARGETS "${additional_target}"
  58. LIBRARY DESTINATION "${OBS_SCRIPT_PLUGIN_DESTINATION}")
  59. add_custom_command(TARGET ${additional_target} POST_BUILD
  60. COMMAND "${CMAKE_COMMAND}" -E copy
  61. "${CMAKE_CURRENT_BINARY_DIR}/obspython.py"
  62. "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/obs-scripting/${_bit_suffix}/obspython.py"
  63. VERBATIM)
  64. add_custom_command(TARGET ${additional_target} POST_BUILD
  65. COMMAND "${CMAKE_COMMAND}" -E copy
  66. "$<TARGET_FILE:${additional_target}>"
  67. "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/obs-scripting/${_bit_suffix}$<TARGET_FILE_NAME:${additional_target}>"
  68. VERBATIM)
  69. endfunction()
  70. install_plugin_bin_swig(obs-scripting _obspython)