Commit e39447cc authored by Anay Wadhera's avatar Anay Wadhera
Browse files

uniffi_bindgen: Add support for specifying extra link frameworks in generated modulemap file

When including another static library in the form of an xcframework (C++/C), the resulting Rust library also takes a dependency on the frameworks that are linked as part of that xcframework. This change allows specifying the frameworks so that this contract is upheld.
parent 2489b7c3
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@
  it also means foreign implemented traits also must when Swift 6 conformance is enabled.
  See the Swift section of the manual for more. ([#2450](https://github.com/mozilla/uniffi-rs/pull/2450))

- You can now optionally specify extra frameworks like `CoreBluetooth` or `CoreFoundation` when generating a modulemap file for an xcframework.

[All changes in [[UnreleasedUniFFIVersion]]](https://github.com/mozilla/uniffi-rs/compare/v0.29.0...HEAD).

## v0.29.0 (backend crates: v0.29.0) - (_2025-02-06_)
+7 −0
Original line number Diff line number Diff line
@@ -1988,6 +1988,13 @@ dependencies = [
 "uniffi",
]

[[package]]
name = "uniffi-fixture-swift-link-frameworks"
version = "0.1.0"
dependencies = [
 "uniffi",
]

[[package]]
name = "uniffi-fixture-swift-omit-argument-labels"
version = "0.22.0"
+1 −0
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ members = [
  "fixtures/swift-omit-labels",
  "fixtures/futures",
  "fixtures/swift-bridging-header-compile",
  "fixtures/swift-link-frameworks",
  "fixtures/type-limits",
  "fixtures/large-enum",
  "fixtures/large-error",
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ more likely to change than other configurations.
| `custom_types`                     |                          | A map which controls how custom types are exposed to Swift. See the [custom types section of the manual](../types/custom_types.md#custom-types-in-the-bindings-code) |
| `omit_localized_error_conformance` | `false`                  | Whether to make generated error types conform to `LocalizedError`.                                                                                                   |
| `omit_checksums`                   | `false`                  | Whether to omit checking the library checksums as the library is initialized. Changing this will shoot yourself in the foot if you mixup your build pipeline in any way, but might speed up initialization.
| `link_frameworks`                  | `[]`                     | The extra frameworks to link this binary against, such as `CoreBluetooth` or `CoreAudio`. Usually only used for interacting with native platform libraries.

[^1]: `namespace` is the top-level namespace from your UDL file.

+22 −0
Original line number Diff line number Diff line
[package]
name = "uniffi-fixture-swift-link-frameworks"
version = "0.1.0"
edition = "2021"
license = "MPL-2.0"
publish = false

[lib]
crate-type = ["lib", "cdylib"]
name = "uniffi_swift_link_frameworks"

[dependencies]
uniffi = { workspace = true }

[build-dependencies]
uniffi = { workspace = true, features = ["build"] }

[dev-dependencies]
uniffi = { workspace = true, features = ["bindgen-tests"] }

[features]
ffi-trace = ["uniffi/ffi-trace"]
Loading