summaryrefslogtreecommitdiff
path: root/xmake/rules/c++/modules/modules_support
diff options
context:
space:
mode:
authorruki <[email protected]>2024-04-29 22:33:34 +0800
committerruki <[email protected]>2024-04-29 22:33:34 +0800
commit1f63fff2b8959bceeae228520ec2eb6512cd0c58 (patch)
treed6d4b6f25a8bb473f987aeb2fbb85a4d0ac91325 /xmake/rules/c++/modules/modules_support
parent1d3ff91e1a49e5569d0f156e6a69f73df8d71a77 (diff)
fix incremental compilation for gcc-14 #5022
Diffstat (limited to 'xmake/rules/c++/modules/modules_support')
-rw-r--r--xmake/rules/c++/modules/modules_support/gcc/builder.lua13
1 files changed, 7 insertions, 6 deletions
diff --git a/xmake/rules/c++/modules/modules_support/gcc/builder.lua b/xmake/rules/c++/modules/modules_support/gcc/builder.lua
index ee7476097..d4f5a01f1 100644
--- a/xmake/rules/c++/modules/modules_support/gcc/builder.lua
+++ b/xmake/rules/c++/modules/modules_support/gcc/builder.lua
@@ -136,14 +136,15 @@ end
function _generate_modulemapper_file(target, module, cppfile)
local maplines = _get_maplines(target, module)
local mapper_path = path.join(os.tmpdir(), target:name():replace(" ", "_"), name or cppfile:replace(" ", "_"))
- local mapper_file = io.open(mapper_path, "wb")
- mapper_file:write("root " .. path.unix(os.projectdir()))
- mapper_file:write("\n")
+ local mapper_content = {}
+ table.insert(mapper_content, "root " .. path.unix(os.projectdir()))
for _, mapline in ipairs(maplines) do
- mapper_file:write(mapline)
- mapper_file:write("\n")
+ table.insert(mapper_content, mapline)
+ end
+ mapper_content = table.concat(mapper_content, "\n") .. "\n"
+ if not os.isfile(mapper_path) or io.readfile(mapper_path, {encoding = "binary"}) ~= mapper_content then
+ io.writefile(mapper_path, mapper_content, {encoding = "binary"})
end
- mapper_file:close()
return mapper_path
end