CMakeLists.txt 2.9 KB

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