diff options
| author | ruki <[email protected]> | 2026-07-18 18:37:41 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-07-18 18:37:41 +0800 |
| commit | 108eaa6d115e03f44bd1f105328dbe90a7747b30 (patch) | |
| tree | 8f98ca03c2355a6f4acc934e0924324e3dd4a73a /xmake/rules/utils/bin2obj/utils.lua | |
| parent | c4f4ad6aec62c15fdff13721716a577690e0db81 (diff) | |
| parent | c48de38142edcb99b47bf72b0b54fe025f112fdf (diff) | |
Merge pull request #7654 from xmake-io/bin2obj
Add transform support for bin2obj/bin2c
Diffstat (limited to 'xmake/rules/utils/bin2obj/utils.lua')
| -rw-r--r-- | xmake/rules/utils/bin2obj/utils.lua | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/xmake/rules/utils/bin2obj/utils.lua b/xmake/rules/utils/bin2obj/utils.lua index 3e8802e97..bcee334f0 100644 --- a/xmake/rules/utils/bin2obj/utils.lua +++ b/xmake/rules/utils/bin2obj/utils.lua @@ -35,6 +35,7 @@ function generate_objectfile(target, batchcmds, binaryfile, opt) opt = opt or {} local rulename = opt.rulename or "utils.bin2obj" local progress = opt.progress + local fileconfig = target:fileconfig(binaryfile) -- check for cosmocc toolchain local is_cosmocc = target:toolchain("cosmocc") or (target:has_tool("cc", "cosmocc") and target:has_tool("ar", "cosmoar")) @@ -53,6 +54,16 @@ function generate_objectfile(target, batchcmds, binaryfile, opt) end end + -- transform binary data first + -- @see https://github.com/xmake-io/xmake/issues/7513 + local transform = opt.transform or (fileconfig and fileconfig.transform) or target:extraconf("rules", rulename, "transform") + if transform then + batchcmds:show_progress(progress, "${color.build.object}transforming.bin2obj %s", binaryfile) + local transformed_file = target:autogenfile(binaryfile) + batchcmds:call(transform, {binaryfile, transformed_file}, {name = "bin2obj/transform", target = target}) + binaryfile = transformed_file + end + -- get object file local objectfile = opt.objectfile if not objectfile then @@ -75,6 +86,9 @@ function generate_objectfile(target, batchcmds, binaryfile, opt) -- get zeroend (default: false, but can be overridden) local zeroend = opt.zeroend if zeroend == nil then + zeroend = fileconfig and fileconfig.zeroend + end + if zeroend == nil then zeroend = target:extraconf("rules", rulename, "zeroend") or false end |
