diff options
| author | ruki <[email protected]> | 2020-03-02 22:42:57 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-03-02 10:17:44 +0800 |
| commit | f33ee9fc657023fc8875f919715342d7066519e5 (patch) | |
| tree | bd1b97f50601810d5b874269dd620f34259666c2 /xmake/modules/core/project/depend.lua | |
| parent | 2b41fac5b92bc0e5e3c4a848dfd7d9a1435fd20f (diff) | |
improve parse_deps for gcc
Diffstat (limited to 'xmake/modules/core/project/depend.lua')
| -rw-r--r-- | xmake/modules/core/project/depend.lua | 38 |
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 |
