summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-09-01 22:23:02 +0800
committerruki <[email protected]>2019-09-01 22:23:02 +0800
commit279a2581ca28a85edbbcb18bc3934cc198c222b8 (patch)
tree187cfea6ecf5af2d2c3eae0b7e60bf0be496b894
parent80b583a69845241f61e142c99341c18583316171 (diff)
fix merge archive
-rw-r--r--tests/projects/other/merge_object/xmake.lua2
-rw-r--r--xmake/rules/utils/merge_archive/xmake.lua10
2 files changed, 7 insertions, 5 deletions
diff --git a/tests/projects/other/merge_object/xmake.lua b/tests/projects/other/merge_object/xmake.lua
index d55b610b8..772bc2c18 100644
--- a/tests/projects/other/merge_object/xmake.lua
+++ b/tests/projects/other/merge_object/xmake.lua
@@ -12,7 +12,7 @@ target("merge_object")
-- save object file
after_build_file(function (target, sourcefile)
- os.cp(target:objectfile(sourcefile), "$(buildir)/merge_object")
+ os.cp(target:objectfile(sourcefile), "$(buildir)/merge_object/")
end)
-- add target
diff --git a/xmake/rules/utils/merge_archive/xmake.lua b/xmake/rules/utils/merge_archive/xmake.lua
index ee72530d5..d78b0258c 100644
--- a/xmake/rules/utils/merge_archive/xmake.lua
+++ b/xmake/rules/utils/merge_archive/xmake.lua
@@ -37,16 +37,14 @@ rule("utils.merge.archive")
-- get object directory of the archive file
local objectdir = target:objectfile(sourcefile_lib) .. ".dir"
- -- add objectfiles
- local objectfiles = os.files(path.join(objectdir, "**" .. project_target.filename("", "object")))
- table.join2(target:objectfiles(), objectfiles)
-
-- load dependent info
local dependfile = target:dependfile(objectdir)
local dependinfo = option.get("rebuild") and {} or (depend.load(dependfile) or {})
-- need build this object?
if not depend.is_changed(dependinfo, {lastmtime = os.mtime(objectdir)}) then
+ local objectfiles = os.files(path.join(objectdir, "**" .. project_target.filename("", "object")))
+ table.join2(target:objectfiles(), objectfiles)
return
end
@@ -66,6 +64,10 @@ rule("utils.merge.archive")
os.tryrm(objectdir)
extractor.extract(sourcefile_lib, objectdir)
+ -- add objectfiles
+ local objectfiles = os.files(path.join(objectdir, "**" .. project_target.filename("", "object")))
+ table.join2(target:objectfiles(), objectfiles)
+
-- update files to the dependent file
dependinfo.files = {}
table.insert(dependinfo.files, sourcefile_lib)