diff options
| author | Arthur LAURENT <[email protected]> | 2022-12-06 19:10:17 +0100 |
|---|---|---|
| committer | Arthur LAURENT <[email protected]> | 2022-12-07 01:40:14 +0100 |
| commit | efdbbaa5f2ba912e923bf828d66cbd144ca341bd (patch) | |
| tree | cdc49a50938f8252589fea62a98452ab2ca64fb8 /xmake/rules/c++/modules/modules_support | |
| parent | 36b847657952d6f3d97ba827a4d1dc8fe9163c8b (diff) | |
fix gcc
Diffstat (limited to 'xmake/rules/c++/modules/modules_support')
| -rw-r--r-- | xmake/rules/c++/modules/modules_support/gcc.lua | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/xmake/rules/c++/modules/modules_support/gcc.lua b/xmake/rules/c++/modules/modules_support/gcc.lua index 9754b63ee..ee51788cd 100644 --- a/xmake/rules/c++/modules/modules_support/gcc.lua +++ b/xmake/rules/c++/modules/modules_support/gcc.lua @@ -68,21 +68,12 @@ end function load(target) local modulesflag = get_modulesflag(target) local modulemapperflag = get_modulemapperflag(target) - target:add("cxxflags", modulesflag) 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", {modulesflag, modulemapperflag .. path.translate(_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,7 +478,21 @@ function build_modules_for_batchcmds(target, batchcmds, objectfiles, modules, op break end end - local flags = {"-x", "c++","-c", path(cppfile), "-o", path(objectfile)} + -- 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)) batchcmds:vrunv(compinst:program(), table.join(compinst:compflags({target = target}), flags)) |
