CMakeLists.txt 3.0 KB

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