Browse Source

obs-scripting: Fix missing frontend bindings for Lua

The obslua.i file requires `ENABLE_UI` to be defined for the swig
compiler to pull in the actual obs-frontend-api header. If this is not
the case, swig will not discover the required methods and ENUMs and
in turn will not make those available in the scripting environment.
PatTheMav 3 years ago
parent
commit
893d3ce218
1 changed files with 6 additions and 3 deletions
  1. 6 3
      deps/obs-scripting/obslua/CMakeLists.txt

+ 6 - 3
deps/obs-scripting/obslua/CMakeLists.txt

@@ -30,9 +30,8 @@ swig_add_library(
 
 
 target_link_libraries(obslua PRIVATE OBS::scripting OBS::libobs Luajit::Luajit)
 target_link_libraries(obslua PRIVATE OBS::scripting OBS::libobs Luajit::Luajit)
 
 
-set_target_properties(
-  obslua PROPERTIES SWIG_COMPILE_DEFINITIONS
-                    "SWIG_TYPE_TABLE=obslua;SWIG_LUA_INTERPRETER_NO_DEBUG")
+list(APPEND _SWIG_DEFINITIONS "SWIG_TYPE_TABLE=obslua"
+     "SWIG_LUA_INTERPRETER_NO_DEBUG")
 
 
 set_target_properties(
 set_target_properties(
   obslua
   obslua
@@ -44,11 +43,15 @@ target_compile_definitions(obslua PRIVATE SWIG_TYPE_TABLE=obslua
                                           SWIG_LUA_INTERPRETER_NO_DEBUG)
                                           SWIG_LUA_INTERPRETER_NO_DEBUG)
 
 
 if(ENABLE_UI)
 if(ENABLE_UI)
+  list(APPEND _SWIG_DEFINITIONS "ENABLE_UI")
   target_link_libraries(obslua PRIVATE OBS::frontend-api)
   target_link_libraries(obslua PRIVATE OBS::frontend-api)
 
 
   target_compile_definitions(obslua PRIVATE ENABLE_UI)
   target_compile_definitions(obslua PRIVATE ENABLE_UI)
 endif()
 endif()
 
 
+set_target_properties(obslua PROPERTIES SWIG_COMPILE_DEFINITIONS
+                                        "${_SWIG_DEFINITIONS}")
+
 if(OS_WINDOWS)
 if(OS_WINDOWS)
   if(MSVC)
   if(MSVC)
     target_compile_options(obslua PRIVATE /wd4054 /wd4197 /wd4244 /wd4267)
     target_compile_options(obslua PRIVATE /wd4054 /wd4197 /wd4244 /wd4267)