summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaikari <[email protected]>2026-01-27 06:07:56 +0300
committerSaikari <[email protected]>2026-01-27 06:07:56 +0300
commit17344133cb2b52d04c0ad26ca9b8d61b5280aae9 (patch)
tree68fd4c2ae3a15c5452564996c28594f27ee46ab1
parent23257c45322717546109effca33421ed6a20a028 (diff)
refactor: extract dependency generation logic into a separate function
-rw-r--r--xmake/rules/nim/build/target.lua73
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