| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- cmake_minimum_required(VERSION 2.8)
- if(NOT ENABLE_SCRIPTING)
- message(STATUS "Scripting plugin disabled")
- return()
- endif()
- project(obs-scripting)
- if(MSVC)
- set(obs-scripting_PLATFORM_DEPS
- w32-pthreads)
- endif()
- option(DISABLE_LUA "Disable Lua scripting support" OFF)
- option(DISABLE_PYTHON "Disable Python scripting support" OFF)
- set(COMPILE_PYTHON FALSE CACHE BOOL "" FORCE)
- set(COMPILE_LUA FALSE CACHE BOOL "" FORCE)
- if(NOT DISABLE_LUA)
- find_package(Luajit QUIET)
- if(NOT DISABLE_LUA AND NOT LUAJIT_FOUND)
- message(STATUS "Luajit support not found.")
- set(LUAJIT_FOUND FALSE)
- else()
- message(STATUS "Scripting: Luajit supported")
- set(COMPILE_LUA TRUE CACHE BOOL "" FORCE)
- endif()
- else()
- message(STATUS "Scripting: Luajit support disabled")
- set(LUAJIT_FOUND FALSE)
- endif()
- if(NOT DISABLE_PYTHON)
- find_package(PythonDeps QUIET)
- if(NOT DISABLE_PYTHON AND NOT PYTHONLIBS_FOUND)
- message(STATUS "Python support not found.")
- set(PYTHON_FOUND FALSE)
- set(PYTHONLIBS_FOUND FALSE)
- else()
- message(STATUS "Scripting: Python 3 supported")
- set(PYTHON_FOUND TRUE)
- set(COMPILE_PYTHON TRUE CACHE BOOL "" FORCE)
- get_filename_component(PYTHON_LIB "${PYTHON_LIBRARIES}" NAME)
- string(REGEX REPLACE "\\.[^.]*$" "" PYTHON_LIB ${PYTHON_LIB})
- if(WIN32)
- string(REGEX REPLACE "_d" "" PYTHON_LIB "${PYTHON_LIB}")
- endif()
- endif()
- else()
- message(STATUS "Scripting: Python 3 support disabled")
- set(PYTHON_FOUND FALSE)
- set(PYTHONLIBS_FOUND FALSE)
- endif()
- find_package(SwigDeps QUIET 2)
- if(NOT SWIG_FOUND)
- message(STATUS "Scripting: SWIG not found; scripting disabled")
- return()
- endif()
- if(NOT PYTHONLIBS_FOUND AND NOT LUAJIT_FOUND)
- message(STATUS "Scripting: Neither Python 3 nor Luajit was found; scripting plugin disabled")
- return()
- endif()
- set(SCRIPTING_ENABLED ON CACHE BOOL "Internal global cmake variable" FORCE)
- if(UI_ENABLED)
- set(EXTRA_LIBS obs-frontend-api)
- include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/UI/obs-frontend-api")
- endif()
- IF(BUILD_CAPTIONS)
- string(TOUPPER "${BUILD_CAPTIONS}" BUILD_CAPTIONS)
- endif()
- configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/obs-scripting-config.h.in"
- "${CMAKE_CURRENT_BINARY_DIR}/obs-scripting-config.h")
- include(${SWIG_USE_FILE})
- include_directories(${CMAKE_SOURCE_DIR}/libobs)
- include_directories(${CMAKE_CURRENT_SOURCE_DIR})
- include_directories(${CMAKE_CURRENT_BINARY_DIR})
- if(PYTHONLIBS_FOUND)
- include_directories(${PYTHON_INCLUDE_DIR})
- set(obs-scripting-python_SOURCES
- obs-scripting-python.c
- )
- set(obs-scripting-python_HEADERS
- obs-scripting-python.h
- obs-scripting-python-import.h
- )
- if(UI_ENABLED)
- set(obs-scripting-python_SOURCES
- ${obs-scripting-python_SOURCES}
- obs-scripting-python-frontend.c
- )
- endif()
- if(WIN32 OR APPLE)
- set(obs-scripting-python_SOURCES
- ${obs-scripting-python_SOURCES}
- obs-scripting-python-import.c
- )
- else()
- set(EXTRA_LIBS ${EXTRA_LIBS} ${PYTHON_LIBRARIES})
- endif()
- endif()
- if(LUAJIT_FOUND)
- include_directories(${LUAJIT_INCLUDE_DIR})
- set(obs-scripting-lua_SOURCES
- obs-scripting-lua.c
- obs-scripting-lua-source.c
- )
- set(obs-scripting-lua_HEADERS
- obs-scripting-lua.h
- )
- if(UI_ENABLED)
- set(obs-scripting-lua_SOURCES
- ${obs-scripting-lua_SOURCES}
- obs-scripting-lua-frontend.c
- )
- endif()
- endif()
- set(obs-scripting_SOURCES
- obs-scripting.c
- obs-scripting-logging.c
- cstrcache.cpp
- )
- set(obs-scripting_HEADERS
- ${CMAKE_CURRENT_BINARY_DIR}/obs-scripting-config.h
- obs-scripting.h
- obs-scripting-callback.h
- cstrcache.h
- )
- file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/swig)
- if(PYTHONLIBS_FOUND)
- set(SWIG_PY_RUNTIME swig/swigpyrun.h)
- add_custom_command(OUTPUT ${SWIG_PY_RUNTIME}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- PRE_BUILD
- COMMAND ${SWIG_EXECUTABLE} -python -external-runtime ${SWIG_PY_RUNTIME}
- COMMENT "Scripting plugin: Building Python SWIG interface header"
- )
- set_source_files_properties(${SWIG_PY_RUNTIME} PROPERTIES GENERATED TRUE)
- endif()
- if(LUAJIT_FOUND)
- set(SWIG_LUA_RUNTIME swig/swigluarun.h)
- add_custom_command(OUTPUT ${SWIG_LUA_RUNTIME}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- PRE_BUILD
- COMMAND ${SWIG_EXECUTABLE} -lua -external-runtime ${SWIG_LUA_RUNTIME}
- COMMENT "Scripting: Building Lua SWIG interface header"
- )
- set_source_files_properties(${SWIG_LUA_RUNTIME} PROPERTIES GENERATED TRUE)
- endif()
- add_library(obs-scripting SHARED
- ${obs-scripting_SOURCES}
- ${obs-scripting_HEADERS}
- ${obs-scripting-python_SOURCES}
- ${obs-scripting-python_HEADERS}
- ${obs-scripting-lua_SOURCES}
- ${obs-scripting-lua_HEADERS}
- ${SWIG_PY_RUNTIME}
- ${SWIG_LUA_RUNTIME}
- )
- target_link_libraries(obs-scripting
- libobs
- ${LUAJIT_LIBRARIES}
- ${EXTRA_LIBS}
- ${obs-scripting_PLATFORM_DEPS}
- )
- if(PYTHONLIBS_FOUND)
- add_subdirectory(obspython)
- endif()
- if(LUAJIT_FOUND)
- add_subdirectory(obslua)
- endif()
- install_obs_core(obs-scripting)
|