summaryrefslogtreecommitdiff
path: root/xmake/rules/c++/modules/scanner.lua
diff options
context:
space:
mode:
authorAkaps316 <[email protected]>2026-04-03 18:47:28 +0530
committerAkaps316 <[email protected]>2026-04-03 20:56:23 +0530
commit5271c90286fa0fc80fda695bb399516bb8c6b4b4 (patch)
tree6b0e17c2c7df0a7c87f8d52524619f1f2a7d4f74 /xmake/rules/c++/modules/scanner.lua
parent39fd35ea9d5d14079e4669b85423d488c9097cd4 (diff)
fix(c++/modules): avoid leaking private dep flags to rebuilt BMIs
Only inherit interface-visible defines/undefines/includedirs when collecting module fileconfigs from dependency targets. This fixes consumer-side BMI rebuilds under build.c++.modules.reuse.strict picking up private producer flags. Add a regression test for strict module reuse with a shared dependency.
Diffstat (limited to 'xmake/rules/c++/modules/scanner.lua')
-rw-r--r--xmake/rules/c++/modules/scanner.lua6
1 files changed, 3 insertions, 3 deletions
diff --git a/xmake/rules/c++/modules/scanner.lua b/xmake/rules/c++/modules/scanner.lua
index 2bcee1f12..400e8a0dd 100644
--- a/xmake/rules/c++/modules/scanner.lua
+++ b/xmake/rules/c++/modules/scanner.lua
@@ -283,9 +283,9 @@ function _get_targetdeps_modules(target)
fileconfig.undefines = _fileconfig.undefines
fileconfig.includedirs = _fileconfig.includedirs
end
- fileconfig.defines = table.join(fileconfig.defines or {}, dep:get("defines") or {})
- fileconfig.undefines = table.join(fileconfig.undefines or {}, dep:get("undefines") or {})
- fileconfig.includedirs = table.join(fileconfig.includedirs or {}, dep:get("includedirs") or {})
+ fileconfig.defines = table.join(fileconfig.defines or {}, dep:get("defines", {interface = true}) or {})
+ fileconfig.undefines = table.join(fileconfig.undefines or {}, dep:get("undefines", {interface = true}) or {})
+ fileconfig.includedirs = table.join(fileconfig.includedirs or {}, dep:get("includedirs", {interface = true}) or {}, dep:get("sysincludedirs", {interface = true}) or {})
if not dep:is_phony() then
if target:namespace() == dep:namespace() then
fileconfig.from_dep = dep:name()