summaryrefslogtreecommitdiff
path: root/xmake/modules/core/project/depend.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2020-03-02 22:42:57 +0800
committerruki <[email protected]>2020-03-02 10:17:44 +0800
commitf33ee9fc657023fc8875f919715342d7066519e5 (patch)
treebd1b97f50601810d5b874269dd620f34259666c2 /xmake/modules/core/project/depend.lua
parent2b41fac5b92bc0e5e3c4a848dfd7d9a1435fd20f (diff)
improve parse_deps for gcc
Diffstat (limited to 'xmake/modules/core/project/depend.lua')
-rw-r--r--xmake/modules/core/project/depend.lua38
1 files changed, 29 insertions, 9 deletions
diff --git a/xmake/modules/core/project/depend.lua b/xmake/modules/core/project/depend.lua
index 7c8fa2ca5..70c72b11e 100644
--- a/xmake/modules/core/project/depend.lua
+++ b/xmake/modules/core/project/depend.lua
@@ -18,13 +18,16 @@
-- @file depend.lua
--
--- load depfiles for the given tool style, e.g. gcc, cl, ..
-function _load_depfiles(dependinfo, style)
+-- imports
+import("private.tools.cl.parse_deps", {alias = "parse_deps_cl"})
+import("private.tools.gcc.parse_deps", {alias = "parse_deps_gcc"})
- -- parse depfiles for gcc
- local depfiles = dependinfo["depfiles_" .. style]
+-- load depfiles for gcc
+function _load_depfiles_gcc(dependinfo)
+
+ local depfiles = dependinfo.depfiles_gcc
if depfiles then
- local depfiles = import("private.tools." .. style .. ".parse_deps", {anonymous = true})(depfiles)
+ depfiles = parse_deps_gcc(depfiles)
if depfiles then
if dependinfo.files then
table.join2(dependinfo.files, depfiles)
@@ -32,22 +35,39 @@ function _load_depfiles(dependinfo, style)
dependinfo.files = depfiles
end
end
- dependinfo["depfiles_" .. style] = nil
+ dependinfo.depfiles_gcc = nil
+ end
+end
+
+-- load depfiles for cl
+function _load_depfiles_cl(dependinfo)
+
+ local depfiles = dependinfo.depfiles_cl
+ if depfiles then
+ depfiles = parse_deps_cl(depfiles)
+ if depfiles then
+ if dependinfo.files then
+ table.join2(dependinfo.files, depfiles)
+ else
+ dependinfo.files = depfiles
+ end
+ end
+ dependinfo.depfiles_cl = nil
end
end
-- load dependent info from the given file (.d)
function load(dependfile)
- if os.isfile(dependfile) then
+ if os.isfile(dependfile) then
-- may be the depend file has been incomplete when if the compilation process is abnormally interrupted
local dependinfo = try { function() return io.load(dependfile) end }
if dependinfo then
-- attempt to load depfiles from the compilers
if is_plat("windows") then
- _load_depfiles(dependinfo, "cl")
+ _load_depfiles_cl(dependinfo)
else
- _load_depfiles(dependinfo, "gcc")
+ _load_depfiles_gcc(dependinfo)
end
return dependinfo
end