diff options
| author | ruki <[email protected]> | 2019-09-02 22:52:54 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-09-02 11:17:27 +0800 |
| commit | ed6d5a86251d32c2b73dd0ca382b68aeeddcfee1 (patch) | |
| tree | 49254ef95e202687616432695a0d990fe48aff9b /xmake/rules/rust/build/target.lua | |
| parent | 7f3180689e0acb358fd3b44717580983f247d49e (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.lua | 78 |
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 |
