summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-09-28 00:44:58 +0800
committerruki <[email protected]>2021-09-28 00:44:58 +0800
commit7828621e2165455f90a0b4eecadddec0b7e6cdb0 (patch)
treef07c8136f6cc07ce78f28275c70203a6c5f9fa57
parentc828253601411a49e036ec4847155991b5e095e2 (diff)
improve target:sourcekinds
-rw-r--r--xmake/core/project/target.lua9
-rw-r--r--xmake/rules/swig/xmake.lua4
2 files changed, 11 insertions, 2 deletions
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua
index 3e2d308f9..52126b78c 100644
--- a/xmake/core/project/target.lua
+++ b/xmake/core/project/target.lua
@@ -1605,6 +1605,15 @@ function _instance:sourcekinds()
table.insert(sourcekinds, sourcekind)
end
end
+ -- if the source file is added dynamically, we may not be able to get the sourcekinds,
+ -- so we can only continue to get it from the rule
+ -- https://github.com/xmake-io/xmake/issues/1622#issuecomment-927726697
+ for _, ruleinst in ipairs(self:orderules()) do
+ local rule_sourcekinds = ruleinst:get("sourcekinds")
+ if rule_sourcekinds then
+ table.insert(sourcekinds, rule_sourcekinds)
+ end
+ end
sourcekinds = table.unique(sourcekinds)
self._SOURCEKINDS = sourcekinds
end
diff --git a/xmake/rules/swig/xmake.lua b/xmake/rules/swig/xmake.lua
index 738cc12fd..29b2673a2 100644
--- a/xmake/rules/swig/xmake.lua
+++ b/xmake/rules/swig/xmake.lua
@@ -70,14 +70,14 @@ rule("swig.base")
rule("swig.c")
set_extensions(".i")
- add_deps("swig.base")
+ add_deps("swig.base", "c.build")
on_buildcmd_file(function (target, batchcmds, sourcefile, opt)
import("build_module_file")(target, batchcmds, sourcefile, table.join({sourcekind = "cc"}, opt))
end)
rule("swig.cpp")
set_extensions(".i")
- add_deps("swig.base")
+ add_deps("swig.base", "c++.build")
on_buildcmd_file(function (target, batchcmds, sourcefile, opt)
import("build_module_file")(target, batchcmds, sourcefile, table.join({sourcekind = "cxx"}, opt))
end)