diff --git a/cmake/Modules/ObsHelpers.cmake b/cmake/Modules/ObsHelpers.cmake index 398fb716e..c0073d786 100644 --- a/cmake/Modules/ObsHelpers.cmake +++ b/cmake/Modules/ObsHelpers.cmake @@ -60,6 +60,8 @@ if(NOT UNIX_STRUCTURE) set(OBS_DATA_PATH "../${OBS_DATA_DESTINATION}") set(OBS_INSTALL_PREFIX "") set(OBS_RELATIVE_PREFIX "../") + + set(OBS_SCRIPT_PLUGIN_DESTINATION "${OBS_DATA_DESTINATION}/obs-scripting/${_lib_suffix}bit") else() set(OBS_EXECUTABLE_DESTINATION "bin/${_lib_suffix}bit") set(OBS_EXECUTABLE32_DESTINATION "bin/32bit") @@ -74,10 +76,14 @@ if(NOT UNIX_STRUCTURE) set(OBS_DATA_PATH "../../${OBS_DATA_DESTINATION}") set(OBS_INSTALL_PREFIX "") set(OBS_RELATIVE_PREFIX "../../") + + set(OBS_SCRIPT_PLUGIN_DESTINATION "${OBS_DATA_DESTINATION}/obs-scripting/${_lib_suffix}bit") endif() set(OBS_CMAKE_DESTINATION "cmake") set(OBS_INCLUDE_DESTINATION "include") set(OBS_UNIX_STRUCTURE "0") + + set(OBS_SCRIPT_PLUGIN_PATH "${OBS_RELATIVE_PREFIX}${OBS_SCRIPT_PLUGIN_DESTINATION}") else() if(NOT OBS_MULTIARCH_SUFFIX AND DEFINED ENV{OBS_MULTIARCH_SUFFIX}) set(OBS_MULTIARCH_SUFFIX "$ENV{OBS_MULTIARCH_SUFFIX}") @@ -100,6 +106,9 @@ else() set(OBS_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/") set(OBS_RELATIVE_PREFIX "../") set(OBS_UNIX_STRUCTURE "1") + + set(OBS_SCRIPT_PLUGIN_DESTINATION "${OBS_LIBRARY_DESTINATION}/obs-scripting") + set(OBS_SCRIPT_PLUGIN_PATH "${OBS_INSTALL_PREFIX}${OBS_SCRIPT_PLUGIN_DESTINATION}") endif() function(obs_finish_bundle) diff --git a/deps/obs-scripting/obs-scripting-config.h.in b/deps/obs-scripting/obs-scripting-config.h.in index e3f60a601..420512637 100644 --- a/deps/obs-scripting/obs-scripting-config.h.in +++ b/deps/obs-scripting/obs-scripting-config.h.in @@ -16,6 +16,7 @@ #define OFF 0 #endif +#define SCRIPT_DIR "@OBS_SCRIPT_PLUGIN_PATH@" #define PYTHON_LIB "@PYTHON_LIB@" #define COMPILE_LUA @LUAJIT_FOUND@ #define COMPILE_PYTHON @PYTHON_FOUND@ diff --git a/deps/obs-scripting/obs-scripting-lua.c b/deps/obs-scripting/obs-scripting-lua.c index cf73f0836..bf362451e 100644 --- a/deps/obs-scripting/obs-scripting-lua.c +++ b/deps/obs-scripting/obs-scripting-lua.c @@ -31,12 +31,20 @@ # define ARCH_DIR "32bit" #endif +#ifdef __APPLE__ +# define SO_EXT "dylib" +#elif _WIN32 +# define SO_EXT "dll" +#else +# define SO_EXT "so" +#endif + static const char *startup_script_template = "\ for val in pairs(package.preload) do\n\ package.preload[val] = nil\n\ end\n\ -require \"obslua\"\n\ -package.path = package.path .. \"%s\"\n"; +package.cpath = package.cpath .. \";\" .. \"%s\" .. \"/?." SO_EXT "\"\n\ +require \"obslua\"\n"; static const char *get_script_path_func = "\ function script_path()\n\ @@ -1267,8 +1275,7 @@ void obs_lua_load(void) /* ---------------------------------------------- */ /* Initialize Lua startup script */ - dstr_printf(&tmp, startup_script_template, - dep_paths.array); + dstr_printf(&tmp, startup_script_template, SCRIPT_DIR); startup_script = tmp.array; dstr_free(&dep_paths); diff --git a/deps/obs-scripting/obs-scripting-python.c b/deps/obs-scripting/obs-scripting-python.c index 84bf235f5..8ee4345a7 100644 --- a/deps/obs-scripting/obs-scripting-python.c +++ b/deps/obs-scripting/obs-scripting-python.c @@ -1649,6 +1649,8 @@ bool obs_scripting_load_python(const char *python_path) /* ---------------------------------------------- */ /* Load main interface module */ + add_to_python_path(SCRIPT_DIR); + py_obspython = PyImport_ImportModule("obspython"); bool success = !py_error(); if (!success) { diff --git a/deps/obs-scripting/obslua/CMakeLists.txt b/deps/obs-scripting/obslua/CMakeLists.txt index 3024233b2..eb30a88c6 100644 --- a/deps/obs-scripting/obslua/CMakeLists.txt +++ b/deps/obs-scripting/obslua/CMakeLists.txt @@ -31,10 +31,13 @@ function(install_plugin_bin_swig target additional_target) set_target_properties(${additional_target} PROPERTIES PREFIX "") + install(TARGETS "${additional_target}" + LIBRARY DESTINATION "${OBS_SCRIPT_PLUGIN_DESTINATION}") + add_custom_command(TARGET ${additional_target} POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy "$" - "${OBS_OUTPUT_DIR}/$/bin/${_bit_suffix}$" + "${OBS_OUTPUT_DIR}/$/data/obs-scripting/${_bit_suffix}$" VERBATIM) endfunction() diff --git a/deps/obs-scripting/obspython/CMakeLists.txt b/deps/obs-scripting/obspython/CMakeLists.txt index 263a4b95a..5edb4027a 100644 --- a/deps/obs-scripting/obspython/CMakeLists.txt +++ b/deps/obs-scripting/obspython/CMakeLists.txt @@ -45,15 +45,20 @@ function(install_plugin_bin_swig target additional_target) set_target_properties(${additional_target} PROPERTIES PREFIX "") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/obspython.py" + DESTINATION "${OBS_SCRIPT_PLUGIN_DESTINATION}") + install(TARGETS "${additional_target}" + LIBRARY DESTINATION "${OBS_SCRIPT_PLUGIN_DESTINATION}") + add_custom_command(TARGET ${additional_target} POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_BINARY_DIR}/obspython.py" - "${OBS_OUTPUT_DIR}/$/bin/${_bit_suffix}/obspython.py" + "${OBS_OUTPUT_DIR}/$/data/obs-scripting/${_bit_suffix}/obspython.py" VERBATIM) add_custom_command(TARGET ${additional_target} POST_BUILD COMMAND "${CMAKE_COMMAND}" -E copy "$" - "${OBS_OUTPUT_DIR}/$/bin/${_bit_suffix}$" + "${OBS_OUTPUT_DIR}/$/data/obs-scripting/${_bit_suffix}$" VERBATIM) endfunction()