diff options
| author | ruki <[email protected]> | 2021-03-21 09:24:00 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-03-21 09:24:00 +0800 |
| commit | 03b2656fb77fb3339e43bf8871398b0e2f052a80 (patch) | |
| tree | 8cef8f9e1953eef7ee717d66983e4c5413a7a921 | |
| parent | 7556e19a1193841aa49871ffab35bc3e56bd481e (diff) | |
improve builder
| -rw-r--r-- | xmake/core/package/package.lua | 5 | ||||
| -rw-r--r-- | xmake/core/project/target.lua | 2 | ||||
| -rw-r--r-- | xmake/core/tool/builder.lua | 49 | ||||
| -rw-r--r-- | xmake/core/tool/linker.lua | 2 |
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 |
