summaryrefslogtreecommitdiff
path: root/xmake/rules/rust/build/target.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2019-09-02 22:52:54 +0800
committerruki <[email protected]>2019-09-02 11:17:27 +0800
commited6d5a86251d32c2b73dd0ca382b68aeeddcfee1 (patch)
tree49254ef95e202687616432695a0d990fe48aff9b /xmake/rules/rust/build/target.lua
parent7f3180689e0acb358fd3b44717580983f247d49e (diff)
improve to pass progress info to build target
Diffstat (limited to 'xmake/rules/rust/build/target.lua')
-rw-r--r--xmake/rules/rust/build/target.lua78
1 files changed, 5 insertions, 73 deletions
diff --git a/xmake/rules/rust/build/target.lua b/xmake/rules/rust/build/target.lua
index d10220a5e..2acff260e 100644
--- a/xmake/rules/rust/build/target.lua
+++ b/xmake/rules/rust/build/target.lua
@@ -26,79 +26,11 @@ import("core.tool.compiler")
import("core.project.depend")
-- build the source files
-function main(target, sourcebatch, opt)
-
- -- is verbose?
- local verbose = option.get("verbose")
-
- -- get progress range
- local progress = assert(opt.progress, "no progress!")
-
- -- get source files and kind
- local sourcefiles = sourcebatch.sourcefiles
- local sourcekind = sourcebatch.sourcekind
-
- -- get object file
- local objectfile = target:objectfile(path.join(path.directory(sourcefiles[1]), "__go__"))
-
- -- get depend file
- local dependfile = target:dependfile(objectfile)
-
- -- remove the object files in sourcebatch
- local objectfiles_set = hashset.from(sourcebatch.objectfiles)
- for idx, file in irpairs(target:objectfiles()) do
- if objectfiles_set:has(file) then
- table.remove(target:objectfiles(), idx)
- end
- end
-
- -- add object file
- table.insert(target:objectfiles(), objectfile)
-
- -- load compiler
- local compinst = compiler.load(sourcekind, {target = target})
-
- -- get compile flags
- local compflags = compinst:compflags({target = target})
-
- -- load dependent info
- local dependinfo = option.get("rebuild") and {} or (depend.load(dependfile) or {})
-
- -- need build this object?
- local depvalues = {compinst:program(), compflags}
- if not depend.is_changed(dependinfo, {lastmtime = os.mtime(objectfile), values = depvalues}) then
- return
- end
-
- -- trace progress info
- for index, sourcefile in ipairs(sourcefiles) do
-
- -- calculate progress
- local progress_now = progress.start + ((index - 1) * (progress.stop - progress.start)) / #sourcefiles
-
- -- trace progress info
- cprintf("${color.build.progress}" .. theme.get("text.build.progress_format") .. ":${clear} ", progress_now)
- if verbose then
- cprint("${dim color.build.object}compiling.$(mode) %s", sourcefile)
- else
- cprint("${color.build.object}compiling.$(mode) %s", sourcefile)
- end
- end
-
- -- trace verbose info
- if verbose then
- print(compinst:compcmd(sourcefiles, objectfile, {compflags = compflags}))
- end
-
- -- flush io buffer to update progress info
- io.flush()
+function build_sourcefiles(target, sourcebatch, opt)
+end
- -- compile it
- dependinfo.files = {}
- assert(compinst:compile(sourcefiles, objectfile, {dependinfo = dependinfo, compflags = compflags}))
+-- build target
+function main(target, opt)
- -- update files and values to the dependent file
- dependinfo.values = depvalues
- table.join2(dependinfo.files, sourcefiles)
- depend.save(dependinfo, dependfile)
+ print(opt)
end