Browse Source

deps/obs-scripting: Fix installed files/locations on linux

Uses the 'install' command in cmake to install scripting modules/files
(such as _obspython.so, obslua.so, and obspython.py), and changes the
install location of those files on all operating systems.  If using a
non-unix structure install, those files will be installed in
data/obs-scripting/[32bit/64bit], otherwise with unix structure installs
those files will be installed to [/usr/local/lib]/obs-scripting.
jp9000 7 years ago
parent
commit
db2d4c97e8

+ 9 - 0
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)

+ 1 - 0
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@

+ 11 - 4
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);

+ 2 - 0
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) {

+ 4 - 1
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
 			"$<TARGET_FILE:${additional_target}>"
-			"${OBS_OUTPUT_DIR}/$<CONFIGURATION>/bin/${_bit_suffix}$<TARGET_FILE_NAME:${additional_target}>"
+			"${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/obs-scripting/${_bit_suffix}$<TARGET_FILE_NAME:${additional_target}>"
 		VERBATIM)
 endfunction()
 

+ 7 - 2
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}/$<CONFIGURATION>/bin/${_bit_suffix}/obspython.py"
+			"${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/obs-scripting/${_bit_suffix}/obspython.py"
 		VERBATIM)
 	add_custom_command(TARGET ${additional_target} POST_BUILD
 		COMMAND "${CMAKE_COMMAND}" -E copy
 			"$<TARGET_FILE:${additional_target}>"
-			"${OBS_OUTPUT_DIR}/$<CONFIGURATION>/bin/${_bit_suffix}$<TARGET_FILE_NAME:${additional_target}>"
+			"${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/obs-scripting/${_bit_suffix}$<TARGET_FILE_NAME:${additional_target}>"
 		VERBATIM)
 endfunction()