summaryrefslogtreecommitdiff
path: root/xmake/rules/c++/modules/modules_support
diff options
context:
space:
mode:
authorArthur LAURENT <[email protected]>2024-01-31 13:02:11 +0100
committerArthur LAURENT <[email protected]>2024-01-31 13:45:43 +0100
commit89f151ab335ad2aa1e5d1cc900f1e3837caa6437 (patch)
tree51400158d69a54fafac973d4a7b8ca40ff540265 /xmake/rules/c++/modules/modules_support
parentf3ec9cc0f7cf6d0b48dce8a69c5f6103b9dd6df3 (diff)
add a test for aliased headerunits
Diffstat (limited to 'xmake/rules/c++/modules/modules_support')
-rw-r--r--xmake/rules/c++/modules/modules_support/builder.lua2
-rw-r--r--xmake/rules/c++/modules/modules_support/clang/builder.lua5
-rw-r--r--xmake/rules/c++/modules/modules_support/gcc/builder.lua12
-rw-r--r--xmake/rules/c++/modules/modules_support/msvc/builder.lua4
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)