summaryrefslogtreecommitdiff
path: root/xmake/core
diff options
context:
space:
mode:
Diffstat (limited to 'xmake/core')
-rw-r--r--xmake/core/base/private/instance_deps.lua12
-rw-r--r--xmake/core/project/project.lua11
-rw-r--r--xmake/core/project/target.lua12
3 files changed, 32 insertions, 3 deletions
diff --git a/xmake/core/base/private/instance_deps.lua b/xmake/core/base/private/instance_deps.lua
index 17145ac6f..2c9c1a7e2 100644
--- a/xmake/core/base/private/instance_deps.lua
+++ b/xmake/core/base/private/instance_deps.lua
@@ -46,6 +46,12 @@ function instance_deps.load_deps(instance, instances, deps, orderdeps, depspath,
-- @see https://github.com/xmake-io/xmake/issues/3144
local depname = plaindeps[total + 1 - idx]
local depinst = instances[depname]
+ if depinst == nil and instance.namespace then
+ local namespace = instance:namespace()
+ if namespace then
+ depinst = instances[namespace .. "::" .. depname]
+ end
+ end
if depinst then
local continue_walk = true
if walkdep then
@@ -79,6 +85,12 @@ function instance_deps._sort_instance(instance, instances, orderinstances, insta
instancerefs[instance:name()] = true
for _, depname in ipairs(table.wrap(instance:get("deps"))) do
local depinst = instances[depname]
+ if depinst == nil and instance.namespace then
+ local namespace = instance:namespace()
+ if namespace then
+ depinst = instances[namespace .. "::" .. depname]
+ end
+ end
if depinst then
local depspath_sub
if depspath then
diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua
index 77793d3e5..f395f5f6b 100644
--- a/xmake/core/project/project.lua
+++ b/xmake/core/project/project.lua
@@ -911,9 +911,16 @@ function project.is_loaded()
end
-- get the given target
-function project.target(name)
+function project.target(name, opt)
+ opt = opt or {}
local targets = project.targets()
- return targets and targets[name]
+ if targets then
+ local t = targets[name]
+ if not t and opt.namespace then
+ t = targets[opt.namespace .. "::" .. name]
+ end
+ return t
+ end
end
-- add the given target, @note if the target name is the same, it will be replaced
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua
index 2669875b5..eed55c0bf 100644
--- a/xmake/core/project/target.lua
+++ b/xmake/core/project/target.lua
@@ -257,6 +257,9 @@ function _instance:_build_deps()
-- @see https://github.com/xmake-io/xmake/issues/4689
instance_deps.load_deps(self, instances, {}, self._INHERITDEPS, {self:fullname()}, function (t, dep)
local depinherit = t:extraconf("deps", dep:name(), "inherit")
+ if depinherit == nil then
+ depinherit = t:extraconf("deps", dep:fullname(), "inherit")
+ end
return depinherit == nil or depinherit
end)
end
@@ -1107,7 +1110,14 @@ end
function _instance:dep(name)
local deps = self:deps()
if deps then
- return deps[name]
+ local dep = deps[name]
+ if dep == nil then
+ local namespace = self:namespace()
+ if namespace then
+ dep = deps[namespace .. "::" .. name]
+ end
+ end
+ return dep
end
end