diff options
| author | ruki <[email protected]> | 2021-09-05 00:27:39 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-09-05 00:27:39 +0800 |
| commit | 58ab15fca9879617a5a3f31d7cdfa9b6dbbc87cd (patch) | |
| tree | 20b52ad45af51fdfc5324344078b3af9a56f8a51 /xmake/rules/utils | |
| parent | f1494df1cf0a7cbeb6c5f63d13f8e4699804fe9f (diff) | |
| parent | 06b0a3c599b1cfb681dbbd89b4784190aadd2f8a (diff) | |
Merge pull request #1639 from xmake-io/mergelib
Improve to merge static library
Diffstat (limited to 'xmake/rules/utils')
| -rw-r--r-- | xmake/rules/utils/merge_archive/xmake.lua | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/xmake/rules/utils/merge_archive/xmake.lua b/xmake/rules/utils/merge_archive/xmake.lua index 6d57f55bb..62e3900ff 100644 --- a/xmake/rules/utils/merge_archive/xmake.lua +++ b/xmake/rules/utils/merge_archive/xmake.lua @@ -18,12 +18,32 @@ -- @file xmake.lua -- --- define rule: utils.merge.archive rule("utils.merge.archive") - - -- set extensions set_extensions(".a", ".lib") - - -- on build file on_build_files("merge_archive") + after_link(function (target, opt) + if target:policy("build.merge_archive") and target:is_static() then + import("utils.archive.merge_staticlib") + import("core.project.depend") + import("private.utils.progress") + local libraryfiles = {} + for _, dep in ipairs(target:orderdeps()) do + if dep:is_static() then + table.insert(libraryfiles, dep:targetfile()) + end + end + if #libraryfiles > 0 then + table.insert(libraryfiles, target:targetfile()) + end + depend.on_changed(function () + progress.show(opt.progress, "${color.build.target}merging.$(mode) %s", path.filename(target:targetfile())) + if #libraryfiles > 0 then + local tmpfile = os.tmpfile() .. path.extension(target:targetfile()) + merge_staticlib(target, tmpfile, libraryfiles) + os.cp(tmpfile, target:targetfile()) + os.rm(tmpfile) + end + end, {dependfile = target:dependfile(target:targetfile() .. ".merge_archive"), files = libraryfiles}) + end + end) |
