diff options
| author | ruki <[email protected]> | 2024-04-29 22:33:34 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-04-29 22:33:34 +0800 |
| commit | 1f63fff2b8959bceeae228520ec2eb6512cd0c58 (patch) | |
| tree | d6d4b6f25a8bb473f987aeb2fbb85a4d0ac91325 /xmake/rules/c++/modules | |
| parent | 1d3ff91e1a49e5569d0f156e6a69f73df8d71a77 (diff) | |
fix incremental compilation for gcc-14 #5022
Diffstat (limited to 'xmake/rules/c++/modules')
| -rw-r--r-- | xmake/rules/c++/modules/modules_support/gcc/builder.lua | 13 |
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 |
