From dbd3e1a81718585105ed342ecc128df149590f70 Mon Sep 17 00:00:00 2001 From: ruki Date: Tue, 10 Mar 2026 00:52:32 +0800 Subject: show target name in progress --- xmake/modules/utils/progress.lua | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'xmake/modules/utils/progress.lua') diff --git a/xmake/modules/utils/progress.lua b/xmake/modules/utils/progress.lua index b6201d5cc..40cab5ec3 100644 --- a/xmake/modules/utils/progress.lua +++ b/xmake/modules/utils/progress.lua @@ -350,8 +350,45 @@ function _show_current_coroutine_progress(maxwidth) end end +-- is show target enabled? +function _is_show_target_enabled() + local show_target = _g.show_target + if show_target == nil then + local policy_value = project.policy("build.progress_show_target") + if policy_value == nil then + show_target = true + else + show_target = policy_value + end + _g.show_target = show_target + end + return show_target +end + +-- get target name prefix from progress object +function _get_target_name_prefix(progress) + if type(progress) == "table" and progress.get then + local target_name = progress:get("target_name") + if target_name and _is_show_target_enabled() then + return "${color.build.target}<" .. target_name .. ">${clear} " + end + end +end + +-- set the associated target name for the progress object (coroutine-local) +-- it's safe to call with non-table progress (e.g. number), it will be ignored +function set_target(progress, target) + if type(progress) == "table" and progress.set then + progress:set("target_name", target:fullname()) + end +end + -- show the message with progress function show(progress, format, ...) + local target_prefix = _get_target_name_prefix(progress) + if target_prefix then + format = target_prefix .. format + end progress = type(progress) == "table" and progress:percent() or math.floor(progress) if option.get("verbose") then _show_progress_with_verbose(progress, format, ...) @@ -467,6 +504,10 @@ end -- get the message text with progress function text(progress, format, ...) + local target_prefix = _get_target_name_prefix(progress) + if target_prefix then + format = target_prefix .. format + end progress = type(progress) == "table" and progress:percent() or math.floor(progress) local progress_prefix = _get_progress_prefix() if option.get("verbose") then -- cgit v1.3.1 From 85d6d2e1647374020ea63791bbe15b55d700b094 Mon Sep 17 00:00:00 2001 From: ruki Date: Tue, 10 Mar 2026 00:53:43 +0800 Subject: improve set target --- xmake/modules/private/action/build/target.lua | 8 ++------ xmake/modules/utils/progress.lua | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) (limited to 'xmake/modules/utils/progress.lua') diff --git a/xmake/modules/private/action/build/target.lua b/xmake/modules/private/action/build/target.lua index ad50390ae..a324fd214 100644 --- a/xmake/modules/private/action/build/target.lua +++ b/xmake/modules/private/action/build/target.lua @@ -480,9 +480,7 @@ function add_filejobs_for_script(jobgraph, target, instance, sourcebatch, opt) for _, sourcefile in ipairs(sourcebatch.sourcefiles) do local jobname = string.format("%s/%s/%s", job_prefix, script_file_name, sourcefile) jobgraph:add(jobname, function (index, total, opt) - if opt.progress and opt.progress.set then - opt.progress:set("target_name", target:fullname()) - end + progress_utils.set_target(opt.progress, target) script_file(target, sourcefile, {progress = opt.progress, sourcekind = sourcekind, distcc = distcc}) end) end @@ -544,9 +542,7 @@ function add_filejobs_for_script(jobgraph, target, instance, sourcebatch, opt) for _, sourcefile in ipairs(sourcebatch.sourcefiles) do local jobname = string.format("%s/%s/%s", job_prefix, scriptcmd_file_name, sourcefile) jobgraph:add(jobname, function (index, total, opt) - if opt.progress and opt.progress.set then - opt.progress:set("target_name", target:fullname()) - end + progress_utils.set_target(opt.progress, target) local batchcmds_ = batchcmds.new({target = target}) scriptcmd_file(target, batchcmds_, sourcefile, {progress = opt.progress, sourcekind = sourcekind, distcc = distcc}) batchcmds_:runcmds({changed = target:is_rebuilt(), dryrun = option.get("dry-run")}) diff --git a/xmake/modules/utils/progress.lua b/xmake/modules/utils/progress.lua index 40cab5ec3..3e7598ac2 100644 --- a/xmake/modules/utils/progress.lua +++ b/xmake/modules/utils/progress.lua @@ -378,7 +378,7 @@ end -- set the associated target name for the progress object (coroutine-local) -- it's safe to call with non-table progress (e.g. number), it will be ignored function set_target(progress, target) - if type(progress) == "table" and progress.set then + if _is_show_target_enabled() and type(progress) == "table" and progress.set then progress:set("target_name", target:fullname()) end end -- cgit v1.3.1