summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-03-21 09:24:00 +0800
committerruki <[email protected]>2021-03-21 09:24:00 +0800
commit03b2656fb77fb3339e43bf8871398b0e2f052a80 (patch)
tree8cef8f9e1953eef7ee717d66983e4c5413a7a921
parent7556e19a1193841aa49871ffab35bc3e56bd481e (diff)
improve builder
-rw-r--r--xmake/core/package/package.lua5
-rw-r--r--xmake/core/project/target.lua2
-rw-r--r--xmake/core/tool/builder.lua49
-rw-r--r--xmake/core/tool/linker.lua2
4 files changed, 24 insertions, 34 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index a59ee7c5d..d609c907d 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -60,6 +60,11 @@ function _instance:name()
return self._NAME
end
+-- get the type: package
+function _instance:type()
+ return "package"
+end
+
-- get the package configure
function _instance:get(name)
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua
index e65c12c32..1c3503667 100644
--- a/xmake/core/project/target.lua
+++ b/xmake/core/project/target.lua
@@ -450,7 +450,7 @@ function _instance:info()
return self._INFO:info()
end
--- get the type: option
+-- get the type: target
function _instance:type()
return "target"
end
diff --git a/xmake/core/tool/builder.lua b/xmake/core/tool/builder.lua
index 48ba6777e..08a6080c7 100644
--- a/xmake/core/tool/builder.lua
+++ b/xmake/core/tool/builder.lua
@@ -155,17 +155,21 @@ function builder:_add_flags_from_config(flags)
end
end
--- add flags from the option
-function builder:_add_flags_from_option(flags, opt)
- for _, flagkind in ipairs(self:_flagkinds()) do
- self:_add_flags_from_flagkind(flags, opt, flagkind)
+-- add flags from the target options
+function builder:_add_flags_from_targetopts(flags, target)
+ for _, opt in ipairs(target:orderopts()) do
+ for _, flagkind in ipairs(self:_flagkinds()) do
+ self:_add_flags_from_flagkind(flags, opt, flagkind)
+ end
end
end
--- add flags from the package
-function builder:_add_flags_from_package(flags, pkg, target)
- for _, flagkind in ipairs(self:_flagkinds()) do
- table.join2(flags, self:_mapflags(pkg:get(flagkind), flagkind, target))
+-- add flags from the target packages
+function builder:_add_flags_from_targetpkgs(flags, target)
+ for _, pkg in ipairs(target:orderpkgs()) do
+ for _, flagkind in ipairs(self:_flagkinds()) do
+ table.join2(flags, self:_mapflags(pkg:get(flagkind), flagkind, target))
+ end
end
end
@@ -194,14 +198,10 @@ function builder:_add_flags_from_target(flags, target)
if target:type() == "target" then
-- add flags from options
- for _, opt in ipairs(target:orderopts()) do
- self:_add_flags_from_option(targetflags, opt)
- end
+ self:_add_flags_from_targetopts(targetflags, target)
-- add flags from packages
- for _, pkg in ipairs(target:orderpkgs()) do
- self:_add_flags_from_package(targetflags, pkg, target)
- end
+ self:_add_flags_from_targetpkgs(targetflags, target)
-- inherit flags (public/interface) from all dependent targets
self:_inherit_flags_from_targetdeps(targetflags, target)
@@ -211,12 +211,8 @@ function builder:_add_flags_from_target(flags, target)
for _, flagkind in ipairs(self:_flagkinds()) do
self:_add_flags_from_flagkind(targetflags, target, flagkind)
end
-
- -- cache it
cache[key] = targetflags
end
-
- -- add flags
table.join2(flags, targetflags)
end
@@ -225,11 +221,7 @@ function builder:_add_flags_from_argument(flags, target, args)
-- add flags from the flag kinds (cxflags, ..)
for _, flagkind in ipairs(self:_flagkinds()) do
-
- -- add auto mapping flags
table.join2(flags, self:_mapflags(args[flagkind], flagkind, target))
-
- -- add original flags
local original_flags = (args.force or {})[flagkind]
if original_flags then
table.join2(flags, original_flags)
@@ -237,16 +229,9 @@ function builder:_add_flags_from_argument(flags, target, args)
end
-- add flags (named) from the language
- if target then
- local key = target:type()
- self:_add_flags_from_language(flags, target, {
- [key] = function (name) return args[name] end,
- toolchain = function (name) return platform.toolconfig(name) end})
- else
- self:_add_flags_from_language(flags, nil, {
- target = function (name) return args[name] end,
- toolchain = function (name) return platform.toolconfig(name) end})
- end
+ self:_add_flags_from_language(flags, nil, {
+ target = function (name) return args[name] end,
+ toolchain = function (name) return platform.toolconfig(name) end})
end
-- add flags from the language
diff --git a/xmake/core/tool/linker.lua b/xmake/core/tool/linker.lua
index a90dba8c1..65eabce46 100644
--- a/xmake/core/tool/linker.lua
+++ b/xmake/core/tool/linker.lua
@@ -230,7 +230,7 @@ function linker:linkflags(opt)
-- get target kind
local targetkind = opt.targetkind
- if not targetkind and target and target.targetkind then
+ if not targetkind and target and target:type() == "target" then
targetkind = target:kind()
end