diff options
| author | Akaps316 <[email protected]> | 2026-04-03 18:47:28 +0530 |
|---|---|---|
| committer | Akaps316 <[email protected]> | 2026-04-03 20:56:23 +0530 |
| commit | 5271c90286fa0fc80fda695bb399516bb8c6b4b4 (patch) | |
| tree | 6b0e17c2c7df0a7c87f8d52524619f1f2a7d4f74 /xmake/rules/c++/modules/scanner.lua | |
| parent | 39fd35ea9d5d14079e4669b85423d488c9097cd4 (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.lua | 6 |
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() |
