summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur LAURENT <[email protected]>2022-12-06 19:10:17 +0100
committerArthur LAURENT <[email protected]>2022-12-06 19:10:39 +0100
commit425e4b9bfd3c3a457294998e3c8f0271b7a008a6 (patch)
tree2d7c4c34181821a7d4e30bfbf26b971bda43792a
parent36b847657952d6f3d97ba827a4d1dc8fe9163c8b (diff)
fix gcc
-rw-r--r--xmake/rules/c++/modules/modules_support/gcc.lua24
1 files changed, 15 insertions, 9 deletions
diff --git a/xmake/rules/c++/modules/modules_support/gcc.lua b/xmake/rules/c++/modules/modules_support/gcc.lua
index 9754b63ee..a0843ba3b 100644
--- a/xmake/rules/c++/modules/modules_support/gcc.lua
+++ b/xmake/rules/c++/modules/modules_support/gcc.lua
@@ -72,17 +72,9 @@ function load(target)
if os.isfile(_get_module_mapper(target)) then
os.rm(_get_module_mapper(target))
end
- target:add("cxxflags", modulemapperflag .. _get_module_mapper(target), {force = true, expand = false})
+ target:add("cxxflags", modulemapperflag .. path(_get_module_mapper(target)), {force = true, expand = false})
-- fix cxxabi issue, @see https://github.com/xmake-io/xmake/issues/2716#issuecomment-1225057760
target:add("cxxflags", "-D_GLIBCXX_USE_CXX11_ABI=0")
- local deps_mappers
- for _, dep in ipairs(target:orderdeps()) do
- deps_mappers = deps_mappers or {}
- table.insert(deps_mappers, 1, modulemapperflag .. _get_module_mapper(dep))
- end
- if deps_mappers then
- target:add("cxxflags", deps_mappers, {force = true, expand = false})
- end
end
-- get includedirs for stl headers
@@ -487,6 +479,20 @@ function build_modules_for_batchcmds(target, batchcmds, objectfiles, modules, op
break
end
end
+ -- append dependencies module now to ensures deps modulemap is filled
+ for required, _ in pairs(module.requires) do
+ local m
+ for _, dep in ipairs(target:orderdeps()) do
+ m = _get_module_from_mapper(_get_module_mapper(dep), required)
+ if m then
+ break
+ end
+ end
+ if m then
+ _add_module_to_mapper(mapper_file, m[1], m[2])
+ break
+ end
+ end
local flags = {"-x", "c++","-c", path(cppfile), "-o", path(objectfile)}
batchcmds:show_progress(opt.progress, "${color.build.object}compiling.module.$(mode) %s", name or cppfile)
batchcmds:mkdir(path.directory(objectfile))