summaryrefslogtreecommitdiff
path: root/xmake/rules/c++/modules/modules_support
diff options
context:
space:
mode:
authorArthur LAURENT <[email protected]>2024-07-21 16:48:40 +0200
committerArthur LAURENT <[email protected]>2024-07-21 16:48:40 +0200
commite5ba7a1d14ef6f8afa2491b4dc0131169aaa4a76 (patch)
treeef2bdc37b3522e626aefaa296f60493eba81a9a7 /xmake/rules/c++/modules/modules_support
parent2412ed94e70b00b0c2f3bd8c4553828efd458b1b (diff)
add a policy to disable module culling
Diffstat (limited to 'xmake/rules/c++/modules/modules_support')
-rw-r--r--xmake/rules/c++/modules/modules_support/dependency_scanner.lua14
1 files changed, 9 insertions, 5 deletions
diff --git a/xmake/rules/c++/modules/modules_support/dependency_scanner.lua b/xmake/rules/c++/modules/modules_support/dependency_scanner.lua
index d59a4436a..cef55fbd5 100644
--- a/xmake/rules/c++/modules/modules_support/dependency_scanner.lua
+++ b/xmake/rules/c++/modules/modules_support/dependency_scanner.lua
@@ -422,11 +422,15 @@ function sort_modules_by_dependencies(target, objectfiles, modules)
local objectfiles_sorted_set = hashset.from(objectfiles_sorted)
for _, objectfile in ipairs(objectfiles) do
if not objectfiles_sorted_set:has(objectfile) then
- -- cull unreferenced non-public named module but add non-module files and implementation modules
- local _, provide, cppfile = compiler_support.get_provided_module(modules[objectfile])
- local fileconfig = target:fileconfig(cppfile)
- local public = fileconfig and fileconfig.public
- if not provide or public then
+ if target:policy("build.c++.modules.culling") then
+ -- cull unreferenced non-public named module but add non-module files and implementation modules
+ local _, provide, cppfile = compiler_support.get_provided_module(modules[objectfile])
+ local fileconfig = target:fileconfig(cppfile)
+ local public = fileconfig and fileconfig.public
+ if not provide or public then
+ table.insert(result, objectfile)
+ end
+ else
table.insert(result, objectfile)
end
end