summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-09-08 12:23:12 +0800
committerruki <[email protected]>2019-09-08 12:23:12 +0800
commit311693f056cc268de9b811963a5677c7166a0a35 (patch)
tree14445a8a34832009da21cee0debef9dc0c0be5f2
parent938d89e1ab1b7b56335a128b94df0a34d594a0f1 (diff)
improve link progress
-rw-r--r--xmake/actions/build/kinds/binary.lua15
-rw-r--r--xmake/actions/build/kinds/shared.lua15
-rw-r--r--xmake/actions/build/kinds/static.lua15
-rw-r--r--xmake/rules/cuda/devlink/xmake.lua2
4 files changed, 46 insertions, 1 deletions
diff --git a/xmake/actions/build/kinds/binary.lua b/xmake/actions/build/kinds/binary.lua
index 0d242108b..976422e40 100644
--- a/xmake/actions/build/kinds/binary.lua
+++ b/xmake/actions/build/kinds/binary.lua
@@ -117,7 +117,13 @@ end
-- link target
function _link_target(target, opt)
+ -- get progress
+ local progress = opt.progress
+ local progress_before = {start = progress.start, stop = progress.start}
+ local progress_after = {start = progress.stop, stop = progress.stop}
+
-- do before link for target
+ opt.progress = progress_before
local before_link = target:script("link_before")
if before_link then
before_link(target, opt)
@@ -132,9 +138,11 @@ function _link_target(target, opt)
end
-- on link
+ opt.progress = progress
target:script("link", _on_link_target)(target, table.join(opt, {origin = _do_link_target}))
-- do after link for target
+ opt.progress = progress_after
local after_link = target:script("link_after")
if after_link then
after_link(target, opt)
@@ -152,9 +160,16 @@ end
-- build binary target
function build(target, opt)
+ -- separate progress
+ local progress = opt.progress
+ local progress_mid = math.max(progress.start, progress.stop - 1)
+
-- build objects
+ opt = table.copy(opt)
+ opt.progress = {start = progress.start, stop = progress_mid}
object.build(target, opt)
-- link target
+ opt.progress = {start = progress_mid, stop = progress.stop}
_link_target(target, opt)
end
diff --git a/xmake/actions/build/kinds/shared.lua b/xmake/actions/build/kinds/shared.lua
index f6a8d6161..2c2b163db 100644
--- a/xmake/actions/build/kinds/shared.lua
+++ b/xmake/actions/build/kinds/shared.lua
@@ -130,7 +130,13 @@ end
-- link target
function _link_target(target, opt)
+ -- get progress
+ local progress = opt.progress
+ local progress_before = {start = progress.start, stop = progress.start}
+ local progress_after = {start = progress.stop, stop = progress.stop}
+
-- do before link for target
+ opt.progress = progress_before
local before_link = target:script("link_before")
if before_link then
before_link(target, opt)
@@ -145,9 +151,11 @@ function _link_target(target, opt)
end
-- on link
+ opt.progress = progress
target:script("link", _on_link_target)(target, table.join(opt, {origin = _do_link_target}))
-- do after link for target
+ opt.progress = progress_after
local after_link = target:script("link_after")
if after_link then
after_link(target, opt)
@@ -165,9 +173,16 @@ end
-- build shared target
function build(target, opt)
+ -- separate progress
+ local progress = opt.progress
+ local progress_mid = math.max(progress.start, progress.stop - 1)
+
-- build objects
+ opt = table.copy(opt)
+ opt.progress = {start = progress.start, stop = progress_mid}
object.build(target, opt)
-- link target
+ opt.progress = {start = progress_mid, stop = progress.stop}
_link_target(target, opt)
end
diff --git a/xmake/actions/build/kinds/static.lua b/xmake/actions/build/kinds/static.lua
index c9a6987dd..b81925113 100644
--- a/xmake/actions/build/kinds/static.lua
+++ b/xmake/actions/build/kinds/static.lua
@@ -126,7 +126,13 @@ end
-- link target
function _link_target(target, opt)
+ -- get progress
+ local progress = opt.progress
+ local progress_before = {start = progress.start, stop = progress.start}
+ local progress_after = {start = progress.stop, stop = progress.stop}
+
-- do before link for target
+ opt.progress = progress_before
local before_link = target:script("link_before")
if before_link then
before_link(target, opt)
@@ -141,9 +147,11 @@ function _link_target(target, opt)
end
-- on link
+ opt.progress = progress
target:script("link", _on_link_target)(target, table.join(opt, {origin = _do_link_target}))
-- do after link for target
+ opt.progress = progress_after
local after_link = target:script("link_after")
if after_link then
after_link(target, opt)
@@ -161,9 +169,16 @@ end
-- build static target
function build(target, opt)
+ -- separate progress
+ local progress = opt.progress
+ local progress_mid = math.max(progress.start, progress.stop - 1)
+
-- build objects
+ opt = table.copy(opt)
+ opt.progress = {start = progress.start, stop = progress_mid}
object.build(target, opt)
-- link target
+ opt.progress = {start = progress_mid, stop = progress.stop}
_link_target(target, opt)
end
diff --git a/xmake/rules/cuda/devlink/xmake.lua b/xmake/rules/cuda/devlink/xmake.lua
index 7b28b9046..18692c33d 100644
--- a/xmake/rules/cuda/devlink/xmake.lua
+++ b/xmake/rules/cuda/devlink/xmake.lua
@@ -92,7 +92,7 @@ rule("cuda.build.devlink")
local verbose = option.get("verbose")
-- trace progress info
- cprintf("${color.build.progress}" .. theme.get("text.build.progress_format") .. ":${clear} ", opt.progress.stop)
+ cprintf("${color.build.progress}" .. theme.get("text.build.progress_format") .. ":${clear} ", opt.progress.start)
if verbose then
cprint("${dim color.build.target}devlinking.$(mode) %s", path.filename(targetfile))
else