summaryrefslogtreecommitdiff
path: root/xmake/modules
diff options
context:
space:
mode:
authorruki <[email protected]>2020-05-25 22:37:50 +0800
committerruki <[email protected]>2020-05-25 09:47:00 +0800
commit96f786bb7b5f810ef22f22e8bbb4e16f3f9be61d (patch)
tree16ed789d34afcbf86227b98137b182412f4e1c28 /xmake/modules
parent9d3a7676056506b949fb4c04b29e00f427fb19c2 (diff)
improve to load deps
Diffstat (limited to 'xmake/modules')
-rw-r--r--xmake/modules/core/project/depend.lua46
1 files changed, 13 insertions, 33 deletions
diff --git a/xmake/modules/core/project/depend.lua b/xmake/modules/core/project/depend.lua
index 8863e2f2e..20b63e7e6 100644
--- a/xmake/modules/core/project/depend.lua
+++ b/xmake/modules/core/project/depend.lua
@@ -22,37 +22,15 @@
import("private.tools.cl.parse_deps", {alias = "parse_deps_cl"})
import("private.tools.gcc.parse_deps", {alias = "parse_deps_gcc"})
--- load depfiles for gcc
-function _load_depfiles_gcc(dependinfo)
-
- local depfiles = dependinfo.depfiles_gcc
+-- load depfiles
+function _load_depfiles(parser, dependinfo, depfiles)
+ depfiles = parser(depfiles)
if depfiles then
- depfiles = parse_deps_gcc(depfiles)
- if depfiles then
- if dependinfo.files then
- table.join2(dependinfo.files, depfiles)
- else
- dependinfo.files = depfiles
- end
- end
- 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
+ if dependinfo.files then
+ table.join2(dependinfo.files, depfiles)
+ else
+ dependinfo.files = depfiles
end
- dependinfo.depfiles_cl = nil
end
end
@@ -64,10 +42,12 @@ function load(dependfile)
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_cl(dependinfo)
- else
- _load_depfiles_gcc(dependinfo)
+ if dependinfo.depfiles_gcc then
+ _load_depfiles(parse_deps_gcc, dependinfo, dependinfo.depfiles_gcc)
+ dependinfo.depfiles_gcc = nil
+ elseif dependinfo.depfiles_cl then
+ _load_depfiles(parse_deps_cl, dependinfo, dependinfo.depfiles_cl)
+ dependinfo.depfiles_cl = nil
end
return dependinfo
end