From 96f786bb7b5f810ef22f22e8bbb4e16f3f9be61d Mon Sep 17 00:00:00 2001 From: ruki Date: Mon, 25 May 2020 22:37:50 +0800 Subject: improve to load deps --- xmake/modules/core/project/depend.lua | 46 ++++++++++------------------------- 1 file 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 -- cgit v1.3.1