diff options
| author | Arthur LAURENT <[email protected]> | 2024-01-31 13:02:11 +0100 |
|---|---|---|
| committer | Arthur LAURENT <[email protected]> | 2024-01-31 13:45:43 +0100 |
| commit | 89f151ab335ad2aa1e5d1cc900f1e3837caa6437 (patch) | |
| tree | 51400158d69a54fafac973d4a7b8ca40ff540265 /xmake/rules/c++/modules/modules_support | |
| parent | f3ec9cc0f7cf6d0b48dce8a69c5f6103b9dd6df3 (diff) | |
add a test for aliased headerunits
Diffstat (limited to 'xmake/rules/c++/modules/modules_support')
4 files changed, 8 insertions, 15 deletions
diff --git a/xmake/rules/c++/modules/modules_support/builder.lua b/xmake/rules/c++/modules/modules_support/builder.lua index 5c2ec113f..db986b4ff 100644 --- a/xmake/rules/c++/modules/modules_support/builder.lua +++ b/xmake/rules/c++/modules/modules_support/builder.lua @@ -361,7 +361,7 @@ function add_headerunit_to_target_mapper(target, headerunit, bmifile) local key = hash.uuid(path.normalize(headerunit.path)) local deduplicated = _is_duplicated_headerunit(target, key) if deduplicated then - mapper[headerunit.name] = {name = headerunit.name, key = key, aliasof = deduplicated.name} + mapper[headerunit.name] = {name = headerunit.name, key = key, aliasof = deduplicated.name, headerunit = headerunit} else mapper[headerunit.name] = {name = headerunit.name, key = key, headerunit = headerunit, bmi = bmifile} end diff --git a/xmake/rules/c++/modules/modules_support/clang/builder.lua b/xmake/rules/c++/modules/modules_support/clang/builder.lua index 6a2893ea9..2c17318d4 100644 --- a/xmake/rules/c++/modules/modules_support/clang/builder.lua +++ b/xmake/rules/c++/modules/modules_support/clang/builder.lua @@ -134,14 +134,11 @@ function _get_requiresflags(target, module, opt) assert(dep_module, "module dependency %s required for %s not found", required, name) - local bmifile + local bmifile = dep_module.bmi -- aliased headerunit if dep_module.aliasof then local aliased = get_from_target_mapper(target, dep_module.aliasof) bmifile = aliased.bmi - -- named module or headerunit - else - bmifile = dep_module.bmi end local mapflag = (dep_module.opt and dep_module.opt.namedmodule) and format("%s%s=%s", modulefileflag, required, bmifile) or modulefileflag .. bmifile table.insert(requiresflags, mapflag) diff --git a/xmake/rules/c++/modules/modules_support/gcc/builder.lua b/xmake/rules/c++/modules/modules_support/gcc/builder.lua index 19f5e813b..95be560d9 100644 --- a/xmake/rules/c++/modules/modules_support/gcc/builder.lua +++ b/xmake/rules/c++/modules/modules_support/gcc/builder.lua @@ -151,20 +151,18 @@ function _get_maplines(target, module) assert(dep_module, "module dependency %s required for %s not found", required, name) - local bmifile + local bmifile = dep_module.bmi local mapline -- aliased headerunit if dep_module.aliasof then local aliased = get_from_target_mapper(target, dep_module.aliasof) bmifile = aliased.bmi - mapline = dep_module.headerunit.path:replace("\\", "/") .. " " bmifile:replace("\\", "/") + mapline = dep_module.headerunit.path:replace("\\", "/") .. " " .. bmifile:replace("\\", "/") -- headerunit elseif dep_module.headerunit then - bmifile = dep_module.bmi - mapline = dep_module.headerunit.path:replace("\\", "/") .. " " bmifile:replace("\\", "/") + mapline = dep_module.headerunit.path:replace("\\", "/") .. " " .. bmifile:replace("\\", "/") -- named module else - bmifile = dep_module.bmi mapline = required .. " " .. bmifile:replace("\\", "/") end table.insert(maplines, mapline) @@ -214,7 +212,7 @@ function populate_module_map(target, modules) for _, module in pairs(modules) do local name, provide = compiler_support.get_provided_module(module) if provide then - add_module_to_target_mapper(target, name, provide.sourcefile, path.absolute(compiler_support.get_bmi_path(provide.bmi), projectdir)) + add_module_to_target_mapper(target, name, provide.sourcefile, compiler_support.get_bmi_path(provide.bmi)) end end @@ -223,7 +221,7 @@ function populate_module_map(target, modules) local name, provide = compiler_support.get_provided_module(module) if provide then local bmifile = compiler_support.get_bmi_path(provide.bmi) - add_module_to_target_mapper(target, name, provide.sourcefile, path.absolute(bmifile, projectdir), {deps = module.requires}) + add_module_to_target_mapper(target, name, provide.sourcefile, bmifile, {deps = module.requires}) end end end diff --git a/xmake/rules/c++/modules/modules_support/msvc/builder.lua b/xmake/rules/c++/modules/modules_support/msvc/builder.lua index 9b7bd330e..00326143e 100644 --- a/xmake/rules/c++/modules/modules_support/msvc/builder.lua +++ b/xmake/rules/c++/modules/modules_support/msvc/builder.lua @@ -123,7 +123,7 @@ function _get_requiresflags(target, module, opt) assert(dep_module, "module dependency %s required for %s not found <%s>", required, name, target:name()) local mapflag - local bmifile + local bmifile = dep_module.bmi -- aliased headerunit if dep_module.aliasof then local aliased = get_from_target_mapper(target, dep_module.aliasof) @@ -131,11 +131,9 @@ function _get_requiresflags(target, module, opt) mapflag = {headerunitflag .. aliased.headerunit.type, required .. "=" .. bmifile} -- headerunit elseif dep_module.headerunit then - bmifile = dep_module.bmi mapflag = {headerunitflag .. dep_module.headerunit.type, required .. "=" .. bmifile} -- named module else - bmifile = dep_module.bmi mapflag = {referenceflag, required .. "=" .. bmifile} end table.insert(deps_flags, mapflag) |
