Add build option to disable plugin API

This is a temporary solution to easity recover compatibility with
LuaJIT. The native plugin API doesn't isn't currently compatible
with LuaJIT and the compatibility layer we are using.
This commit is contained in:
Francesco Abbate 2021-10-03 17:22:05 +02:00
parent 847856f92d
commit 24ea6b07ec
4 changed files with 22 additions and 9 deletions

View File

@ -20,11 +20,13 @@ package.path = DATADIR .. '/?/init.lua;' .. package.path
package.path = USERDIR .. '/?.lua;' .. package.path package.path = USERDIR .. '/?.lua;' .. package.path
package.path = USERDIR .. '/?/init.lua;' .. package.path package.path = USERDIR .. '/?/init.lua;' .. package.path
local dynamic_suffix = PLATFORM == "Mac OS X" and 'lib' or (PLATFORM == "Windows" and 'dll' or 'so') if system.load_native_plugin then
package.cpath = DATADIR .. '/?.' .. dynamic_suffix .. ";" .. USERDIR .. '/?.' .. dynamic_suffix local dynamic_suffix = PLATFORM == "Mac OS X" and 'lib' or (PLATFORM == "Windows" and 'dll' or 'so')
package.native_plugins = {} package.cpath = DATADIR .. '/?.' .. dynamic_suffix .. ";" .. USERDIR .. '/?.' .. dynamic_suffix
package.searchers = { package.searchers[1], package.searchers[2], function(modname) package.native_plugins = {}
local path = package.searchpath(modname, package.cpath) package.searchers = { package.searchers[1], package.searchers[2], function(modname)
if not path then return nil end local path = package.searchpath(modname, package.cpath)
return system.load_native_plugin, path if not path then return nil end
end } return system.load_native_plugin, path
end }
end

View File

@ -28,6 +28,11 @@ lite_cargs = []
if get_option('renderer') or host_machine.system() == 'darwin' if get_option('renderer') or host_machine.system() == 'darwin'
lite_cargs += '-DLITE_USE_SDL_RENDERER' lite_cargs += '-DLITE_USE_SDL_RENDERER'
endif endif
if get_option('plugin-api')
lite_cargs += '-DLITE_XL_USE_PLUGIN_API'
endif
#=============================================================================== #===============================================================================
# Linker Settings # Linker Settings
#=============================================================================== #===============================================================================

View File

@ -2,3 +2,5 @@ option('bundle', type : 'boolean', value : false, description: 'Build a macOS bu
option('source-only', type : 'boolean', value : false, description: 'Configure source files only, doesn\'t checks for dependencies') option('source-only', type : 'boolean', value : false, description: 'Configure source files only, doesn\'t checks for dependencies')
option('portable', type : 'boolean', value : false, description: 'Portable install') option('portable', type : 'boolean', value : false, description: 'Portable install')
option('renderer', type : 'boolean', value : false, description: 'Use SDL renderer') option('renderer', type : 'boolean', value : false, description: 'Use SDL renderer')
option('plugin-api', type : 'boolean', value : true, description: 'Enable native plugin API')

View File

@ -651,6 +651,7 @@ static int f_set_window_opacity(lua_State *L) {
return 1; return 1;
} }
#ifdef LITE_XL_USE_PLUGIN_API
// Symbol table for native plugin loading. Allows for a statically // Symbol table for native plugin loading. Allows for a statically
// bound lua library to be used by native plugins. // bound lua library to be used by native plugins.
typedef struct { typedef struct {
@ -730,6 +731,7 @@ static int f_load_native_plugin(lua_State *L) {
return result; return result;
} }
#endif
static const luaL_Reg lib[] = { static const luaL_Reg lib[] = {
@ -758,7 +760,9 @@ static const luaL_Reg lib[] = {
{ "exec", f_exec }, { "exec", f_exec },
{ "fuzzy_match", f_fuzzy_match }, { "fuzzy_match", f_fuzzy_match },
{ "set_window_opacity", f_set_window_opacity }, { "set_window_opacity", f_set_window_opacity },
{ "load_native_plugin", f_load_native_plugin }, #ifdef LITE_XL_USE_PLUGIN_API
{ "load_native_plugin", f_load_native_plugin },
#endif
{ NULL, NULL } { NULL, NULL }
}; };