summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-10-17 23:00:15 +0800
committerruki <[email protected]>2022-10-17 23:00:15 +0800
commitcd0b3f31b288a0676099218677b03456e266fd9f (patch)
tree91b619fb2ef9cc6071d73ed706f9accdd3871d42
parenta481c634dcc591198fb4d64a2f376a8da795e23c (diff)
load components
-rw-r--r--xmake/core/package/component.lua28
-rw-r--r--xmake/core/package/package.lua25
2 files changed, 31 insertions, 22 deletions
diff --git a/xmake/core/package/component.lua b/xmake/core/package/component.lua
index c37742662..6ebaf4a41 100644
--- a/xmake/core/package/component.lua
+++ b/xmake/core/package/component.lua
@@ -32,15 +32,14 @@ local option = require("base/option")
local hashset = require("base/hashset")
local scopeinfo = require("base/scopeinfo")
local interpreter = require("base/interpreter")
-local memcache = require("cache/memcache")
-local config = require("project/config")
+local language = require("language/language")
-- new an instance
function _instance.new(name, opt)
opt = opt or {}
local instance = table.inherit(_instance)
instance._NAME = name
- instance._INFO = nil -- TODO
+ instance._INFO = scopeinfo.new("component", {}, {interpreter = component._interpreter()})
instance._PACKAGE = opt.package
return instance
end
@@ -89,6 +88,29 @@ function _instance:extraconf_set(name, item, key, value)
return self._INFO:extraconf_set(name, item, key, value)
end
+-- the interpreter
+function component._interpreter()
+ local interp = component._INTERPRETER
+ if not interp then
+ interp = interpreter.new()
+ interp:api_define(component.apis())
+ interp:api_define(language.apis())
+ component._INTERPRETER = interp
+ end
+ return interp
+end
+
+-- get component apis
+function component.apis()
+ return {
+ values = {
+ -- component.add_xxx
+ "component.add_extsources"
+ }
+ }
+end
+
+
-- new component
function component.new(name, opt)
return _instance.new(name, opt)
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index 35b2d649c..7bc658d63 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -1992,26 +1992,13 @@ end
-- the interpreter
function package._interpreter()
-
- -- the interpreter has been initialized? return it directly
- if package._INTERPRETER then
- return package._INTERPRETER
+ local interp = package._INTERPRETER
+ if not interp then
+ interp = interpreter.new()
+ interp:api_define(package.apis())
+ interp:api_define(language.apis())
+ package._INTERPRETER = interp
end
-
- -- init interpreter
- local interp = interpreter.new()
- assert(interp)
-
- -- define apis
- interp:api_define(package.apis())
-
- -- define apis for language
- interp:api_define(language.apis())
-
- -- save interpreter
- package._INTERPRETER = interp
-
- -- ok?
return interp
end