CMakeLists.txt 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. cmake_minimum_required(VERSION 2.8.12)
  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. IF(APPLE)
  43. SWIG_LINK_LIBRARIES(obspython obs-scripting libobs)
  44. ELSE()
  45. SWIG_LINK_LIBRARIES(obspython obs-scripting libobs ${PYTHON_LIBRARIES})
  46. ENDIF()
  47. set_target_properties(_obspython PROPERTIES FOLDER "scripting")
  48. function(install_plugin_bin_swig target additional_target)
  49. if(APPLE)
  50. set(_bit_suffix "")
  51. elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
  52. set(_bit_suffix "64bit/")
  53. else()
  54. set(_bit_suffix "32bit/")
  55. endif()
  56. set_target_properties(${additional_target} PROPERTIES
  57. PREFIX "")
  58. if (APPLE)
  59. SET_TARGET_PROPERTIES(${additional_target} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
  60. endif()
  61. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/obspython.py"
  62. DESTINATION "${OBS_SCRIPT_PLUGIN_DESTINATION}")
  63. install(TARGETS "${additional_target}"
  64. LIBRARY DESTINATION "${OBS_SCRIPT_PLUGIN_DESTINATION}")
  65. add_custom_command(TARGET ${additional_target} POST_BUILD
  66. COMMAND "${CMAKE_COMMAND}" -E copy
  67. "${CMAKE_CURRENT_BINARY_DIR}/obspython.py"
  68. "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/obs-scripting/${_bit_suffix}/obspython.py"
  69. VERBATIM)
  70. add_custom_command(TARGET ${additional_target} POST_BUILD
  71. COMMAND "${CMAKE_COMMAND}" -E copy
  72. "$<TARGET_FILE:${additional_target}>"
  73. "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/obs-scripting/${_bit_suffix}$<TARGET_FILE_NAME:${additional_target}>"
  74. VERBATIM)
  75. endfunction()
  76. install_plugin_bin_swig(obs-scripting _obspython)