summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur LAURENT <[email protected]>2024-07-21 18:49:22 +0200
committerArthur LAURENT <[email protected]>2024-07-21 18:49:22 +0200
commit0314af9533bab0d687bc31a2c2cc7c97416fe814 (patch)
tree3e1b8ee51bf75ca18797778059f77de51a75f4a9
parente5ba7a1d14ef6f8afa2491b4dc0131169aaa4a76 (diff)
add a fileconfig entry to disable module culling
-rw-r--r--tests/projects/c++/modules/culling2/src/hello.mpp10
-rw-r--r--tests/projects/c++/modules/culling2/test.lua1
-rw-r--r--tests/projects/c++/modules/culling2/xmake.lua6
-rw-r--r--xmake/rules/c++/modules/modules_support/dependency_scanner.lua3
4 files changed, 19 insertions, 1 deletions
diff --git a/tests/projects/c++/modules/culling2/src/hello.mpp b/tests/projects/c++/modules/culling2/src/hello.mpp
new file mode 100644
index 000000000..124bd72bc
--- /dev/null
+++ b/tests/projects/c++/modules/culling2/src/hello.mpp
@@ -0,0 +1,10 @@
+module;
+#include <cstdio>
+
+export module hello;
+
+export namespace hello {
+ void say(const char* str) {
+ printf("%s\n", str);
+ }
+}
diff --git a/tests/projects/c++/modules/culling2/test.lua b/tests/projects/c++/modules/culling2/test.lua
new file mode 100644
index 000000000..7717f8049
--- /dev/null
+++ b/tests/projects/c++/modules/culling2/test.lua
@@ -0,0 +1 @@
+inherit(".test_base")
diff --git a/tests/projects/c++/modules/culling2/xmake.lua b/tests/projects/c++/modules/culling2/xmake.lua
new file mode 100644
index 000000000..9a4d682bd
--- /dev/null
+++ b/tests/projects/c++/modules/culling2/xmake.lua
@@ -0,0 +1,6 @@
+add_rules("mode.release", "mode.debug")
+set_languages("c++20")
+
+target("culling")
+ set_kind("static")
+ add_files("src/*.mpp", {cull = false})
diff --git a/xmake/rules/c++/modules/modules_support/dependency_scanner.lua b/xmake/rules/c++/modules/modules_support/dependency_scanner.lua
index cef55fbd5..6c513242b 100644
--- a/xmake/rules/c++/modules/modules_support/dependency_scanner.lua
+++ b/xmake/rules/c++/modules/modules_support/dependency_scanner.lua
@@ -427,7 +427,8 @@ function sort_modules_by_dependencies(target, objectfiles, 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
+ local dont_cull = fileconfig and fileconfig.cull ~= nil and not fileconfig.cull
+ if not provide or public or dont_cull then
table.insert(result, objectfile)
end
else