diff options
| author | ruki <[email protected]> | 2022-10-17 23:00:15 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-10-17 23:00:15 +0800 |
| commit | cd0b3f31b288a0676099218677b03456e266fd9f (patch) | |
| tree | 91b619fb2ef9cc6071d73ed706f9accdd3871d42 | |
| parent | a481c634dcc591198fb4d64a2f376a8da795e23c (diff) | |
load components
| -rw-r--r-- | xmake/core/package/component.lua | 28 | ||||
| -rw-r--r-- | xmake/core/package/package.lua | 25 |
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 |
