aboutsummaryrefslogtreecommitdiff
path: root/docs/markdown/snippets
diff options
context:
space:
mode:
Diffstat (limited to 'docs/markdown/snippets')
-rw-r--r--docs/markdown/snippets/swift-pass-c-compiler-options.md7
-rw-r--r--docs/markdown/snippets/swift_cxx_interoperability.md16
2 files changed, 17 insertions, 6 deletions
diff --git a/docs/markdown/snippets/swift-pass-c-compiler-options.md b/docs/markdown/snippets/swift-pass-c-compiler-options.md
index 3610a8e..90904b9 100644
--- a/docs/markdown/snippets/swift-pass-c-compiler-options.md
+++ b/docs/markdown/snippets/swift-pass-c-compiler-options.md
@@ -1,8 +1,9 @@
## Swift compiler receives select C family compiler options
-Meson now passes select few C family (C/Obj-C) compiler options to the
-Swift compiler, notably *-std=*, in order to improve the compatibility
-of C code as interpreted by the C compiler and the Swift compiler.
+Meson now passes select few C family (C/C++/Obj-C/Obj-C++) compiler
+options to the Swift compiler, notably *-std=*, in order to improve
+the compatibility of C code as interpreted by the C compiler and the
+Swift compiler.
NB: This does not include any of the options set in the target's
c_flags.
diff --git a/docs/markdown/snippets/swift_cxx_interoperability.md b/docs/markdown/snippets/swift_cxx_interoperability.md
index f18e114..9e324f9 100644
--- a/docs/markdown/snippets/swift_cxx_interoperability.md
+++ b/docs/markdown/snippets/swift_cxx_interoperability.md
@@ -1,13 +1,23 @@
## Swift/C++ interoperability is now supported
It is now possible to create Swift executables that can link to C++ or
-Objective-C++ libraries. Only specifying a bridging header for the Swift
-target is required.
+Objective-C++ libraries. To enable this feature, set the target kwarg
+_swift\_interoperability\_mode_ to 'cpp'.
+
+To import C++ code, specify a bridging header in the Swift target's
+sources, or use another way such as adding a directory containing a
+Clang module map to its include path.
+
+Note: Enabling C++ interoperability in a library target is a breaking
+change. Swift libraries that enable it need their consumers to enable
+it as well, as per [the Swift documentation][1].
Swift 5.9 is required to use this feature. Xcode 15 is required if the
Xcode backend is used.
```meson
lib = static_library('mylib', 'mylib.cpp')
-exe = executable('prog', 'main.swift', 'mylib.h', link_with: lib)
+exe = executable('prog', 'main.swift', 'mylib.h', link_with: lib, swift_interoperability_mode: 'cpp')
```
+
+[1]: https://www.swift.org/documentation/cxx-interop/project-build-setup/#vending-packages-that-enable-c-interoperability