diff options
| author | Saikari <[email protected]> | 2026-01-27 06:07:56 +0300 |
|---|---|---|
| committer | Saikari <[email protected]> | 2026-01-27 06:07:56 +0300 |
| commit | 17344133cb2b52d04c0ad26ca9b8d61b5280aae9 (patch) | |
| tree | 68fd4c2ae3a15c5452564996c28594f27ee46ab1 | |
| parent | 23257c45322717546109effca33421ed6a20a028 (diff) | |
refactor: extract dependency generation logic into a separate function
| -rw-r--r-- | xmake/rules/nim/build/target.lua | 73 |
1 files changed, 40 insertions, 33 deletions
diff --git a/xmake/rules/nim/build/target.lua b/xmake/rules/nim/build/target.lua index a24b3c7c2..52599b74d 100644 --- a/xmake/rules/nim/build/target.lua +++ b/xmake/rules/nim/build/target.lua @@ -25,6 +25,45 @@ import("core.tool.compiler") import("core.project.depend") import("utils.progress") +-- generate dependency info +function _generate_dependinfo(compinst, compflags, sourcefiles, dependinfo) + + -- generate dependency file (.deps) + local flags = {} + local nimcache + for _, flag in ipairs(compflags) do + table.insert(flags, flag) + if flag:startswith("--nimcache:") then + nimcache = flag:sub(12) + end + end + table.insert(flags, "--genScript") + + -- run nim --genScript to generate .deps file + local program = compinst:program() + local argv = table.join("c", flags, sourcefiles) + os.runv(program, argv, {envs = compinst:runenvs()}) + + -- parse .deps file + if nimcache then + for _, sourcefile in ipairs(sourcefiles) do + local filename = path.basename(sourcefile) + local depsfile = path.join(nimcache, filename .. ".deps") + if os.isfile(depsfile) then + local depsdata = io.readfile(depsfile) + if depsdata then + for _, line in ipairs(depsdata:split("\n")) do + line = line:trim() + if #line > 0 then + table.insert(dependinfo.files, line) + end + end + end + end + end + end +end + -- build the source files function build_sourcefiles(target, sourcebatch, opt) @@ -67,39 +106,7 @@ function build_sourcefiles(target, sourcebatch, opt) assert(compinst:build(sourcefiles, targetfile, {target = target, dependinfo = dependinfo, compflags = compflags})) -- generate dependency file (.deps) - local flags = {} - local nimcache - for _, flag in ipairs(compflags) do - table.insert(flags, flag) - if flag:startswith("--nimcache:") then - nimcache = flag:sub(12) - end - end - table.insert(flags, "--genScript") - - -- run nim --genScript to generate .deps file - local program = compinst:program() - local argv = table.join("c", flags, sourcefiles) - os.runv(program, argv, {envs = compinst:runenvs()}) - - -- parse .deps file - if nimcache then - for _, sourcefile in ipairs(sourcefiles) do - local filename = path.basename(sourcefile) - local depsfile = path.join(nimcache, filename .. ".deps") - if os.isfile(depsfile) then - local depsdata = io.readfile(depsfile) - if depsdata then - for _, line in ipairs(depsdata:split("\n")) do - line = line:trim() - if #line > 0 then - table.insert(dependinfo.files, line) - end - end - end - end - end - end + _generate_dependinfo(compinst, compflags, sourcefiles, dependinfo) -- update files and values to the dependent file dependinfo.values = depvalues |
