summaryrefslogtreecommitdiff
path: root/xmake/core/project/project.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2020-12-13 20:40:03 +0800
committerruki <[email protected]>2020-12-13 20:40:03 +0800
commitd313c481f3bc4288ca06ba0a043ae36234c151da (patch)
tree25c1e72158b313a35a3ff97f7c29207873392bb2 /xmake/core/project/project.lua
parentfe38b39cd90b8cd866121b3e443aeba277f4d3c6 (diff)
improve toolchain
Diffstat (limited to 'xmake/core/project/project.lua')
-rw-r--r--xmake/core/project/project.lua47
1 files changed, 23 insertions, 24 deletions
diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua
index 8098b88fc..0c6d5a463 100644
--- a/xmake/core/project/project.lua
+++ b/xmake/core/project/project.lua
@@ -321,7 +321,7 @@ function project._load_rules()
end
-- load toolchains
-function project._load_toolchains(opt)
+function project._load_toolchains()
-- load the project file first if has not been loaded?
local ok, errors = project._load()
@@ -338,7 +338,7 @@ function project._load_toolchains(opt)
-- make toolchain instances
local toolchains = {}
for toolchain_name, toolchain_info in pairs(results) do
- toolchains[toolchain_name] = toolchain.new(toolchain_name, toolchain_info, opt)
+ toolchains[toolchain_name] = toolchain_info
end
return toolchains
end
@@ -671,6 +671,20 @@ function project._sort_targets(targets, ordertargets, targetrefs, target)
end
end
+-- get project toolchain infos (@note only with toolchain info)
+function project._toolchains()
+ local toolchains = project._TOOLCHAINS
+ if not toolchains then
+ local errors
+ toolchains, errors = project._load_toolchains()
+ if not toolchains then
+ os.raise(errors)
+ end
+ project._TOOLCHAINS = toolchains
+ end
+ return toolchains
+end
+
-- get project apis
function project.apis()
@@ -1023,24 +1037,15 @@ end
-- get the given toolchain
function project.toolchain(name, opt)
- return project.toolchains(opt)[name]
+ local info = project._toolchains()[name]
+ if info then
+ return toolchain.load_withinfo(name, info, opt)
+ end
end
--- get project toolchains
-function project.toolchains(opt)
- opt = opt or {}
- local key = "key_" .. (opt.plat or "") .. "_" .. (opt.arch or "")
- project._TOOLCHAINS = project._TOOLCHAINS or {}
- local toolchains = project._TOOLCHAINS[key]
- if not toolchains then
- local errors
- toolchains, errors = project._load_toolchains(opt)
- if not toolchains then
- os.raise(errors)
- end
- project._TOOLCHAINS[key] = toolchains
- end
- return toolchains
+-- get project toolchains list
+function project.toolchains()
+ return table.keys(project._toolchains())
end
-- get the given task
@@ -1050,10 +1055,7 @@ end
-- get tasks
function project.tasks()
-
if not project._TASKS then
-
- -- load tasks
local tasks, errors = project._load_tasks()
if not tasks then
os.raise(errors)
@@ -1065,10 +1067,7 @@ end
-- get packages
function project.packages()
-
if not project._PACKAGES then
-
- -- load packages
local packages, errors = project._load_packages()
if not packages then
return nil, errors