summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/projects/swift/cxx_interop/xmake.lua1
-rw-r--r--xmake/rules/swift/xmake.lua11
2 files changed, 7 insertions, 5 deletions
diff --git a/tests/projects/swift/cxx_interop/xmake.lua b/tests/projects/swift/cxx_interop/xmake.lua
index cd5ef0469..68f7ede78 100644
--- a/tests/projects/swift/cxx_interop/xmake.lua
+++ b/tests/projects/swift/cxx_interop/xmake.lua
@@ -6,3 +6,4 @@ target("cxx_interop")
set_values("swift.modulename", "SwiftFibonacci")
set_values("swift.interop", "cxx")
set_values("swift.interop.headername", "fibonacci-Swift.h")
+ set_values("swift.interop.cxxmain", true)
diff --git a/xmake/rules/swift/xmake.lua b/xmake/rules/swift/xmake.lua
index afb8983cb..b54fe5724 100644
--- a/xmake/rules/swift/xmake.lua
+++ b/xmake/rules/swift/xmake.lua
@@ -59,9 +59,6 @@ rule("swift.interop", function()
target:add("includedirs", outdir, {public = true})
local mode = (type(target:values("swift.interop")) == "string") and target:values("swift.interop") or "objc"
- if mode == "cxx" then
- target:add("scflags", "-cxx-interoperability-mode=default")
- end
local headername = (target:values("swift.interop.headername") or (target:name() .. "-Swift.h"))
local header = path.join(outdir, headername)
@@ -184,10 +181,14 @@ rule("swift.build")
set_sourcekinds("sc")
on_build_files("private.action.build.object", {jobgraph = true, batch = true})
on_config(function (target)
- if target:is_library() then
- target:add("scflags", "-parse-as-library")
+ local mode = (type(target:values("swift.interop")) == "string") and target:values("swift.interop") or "objc"
+ if mode == "cxx" then
+ target:add("scflags", "-cxx-interoperability-mode=default")
end
+ if target:is_library() or target:values("swift.interop.cxxmain") then
+ target:add("scflags", "-parse-as-library")
+ end
local modulename = target:values("swift.modulename") or target:name()
target:add("scflags", "-module-name", modulename, {force = true})
-- we use swift-frontend to support multiple modules