diff --git a/Binaries/harmony_uniffiFFI.xcframework/Info.plist b/Binaries/harmony_uniffiFFI.xcframework/Info.plist
index 5d87f10..be2f9f8 100644
--- a/Binaries/harmony_uniffiFFI.xcframework/Info.plist
+++ b/Binaries/harmony_uniffiFFI.xcframework/Info.plist
@@ -8,38 +8,36 @@
BinaryPath
harmony_uniffiFFI.framework/harmony_uniffiFFI
LibraryIdentifier
- ios-arm64_x86_64-simulator
+ ios-arm64
LibraryPath
harmony_uniffiFFI.framework
SupportedArchitectures
arm64
- x86_64
SupportedPlatform
ios
- SupportedPlatformVariant
- simulator
BinaryPath
- harmony_uniffiFFI.framework/harmony_uniffiFFI
+ harmony_uniffiFFI.framework/Versions/A/harmony_uniffiFFI
LibraryIdentifier
- ios-arm64
+ macos-arm64_x86_64
LibraryPath
harmony_uniffiFFI.framework
SupportedArchitectures
arm64
+ x86_64
SupportedPlatform
- ios
+ macos
BinaryPath
harmony_uniffiFFI.framework/harmony_uniffiFFI
LibraryIdentifier
- macos-arm64_x86_64
+ ios-arm64_x86_64-simulator
LibraryPath
harmony_uniffiFFI.framework
SupportedArchitectures
@@ -48,7 +46,9 @@
x86_64
SupportedPlatform
- macos
+ ios
+ SupportedPlatformVariant
+ simulator
CFBundlePackageType
diff --git a/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Headers b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Headers
new file mode 120000
index 0000000..a177d2a
--- /dev/null
+++ b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Headers
@@ -0,0 +1 @@
+Versions/Current/Headers
\ No newline at end of file
diff --git a/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Modules b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Modules
new file mode 120000
index 0000000..5736f31
--- /dev/null
+++ b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Modules
@@ -0,0 +1 @@
+Versions/Current/Modules
\ No newline at end of file
diff --git a/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Resources b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Resources
new file mode 120000
index 0000000..953ee36
--- /dev/null
+++ b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Resources
@@ -0,0 +1 @@
+Versions/Current/Resources
\ No newline at end of file
diff --git a/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Headers/harmony_uniffiFFI.h b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Versions/A/Headers/harmony_uniffiFFI.h
similarity index 100%
rename from Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Headers/harmony_uniffiFFI.h
rename to Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Versions/A/Headers/harmony_uniffiFFI.h
diff --git a/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Modules/module.modulemap b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Versions/A/Modules/module.modulemap
similarity index 100%
rename from Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Modules/module.modulemap
rename to Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Versions/A/Modules/module.modulemap
diff --git a/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Info.plist b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Versions/A/Resources/Info.plist
similarity index 100%
rename from Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Info.plist
rename to Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Versions/A/Resources/Info.plist
diff --git a/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Versions/A/harmony_uniffiFFI b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Versions/A/harmony_uniffiFFI
new file mode 100644
index 0000000..9802dbb
Binary files /dev/null and b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Versions/A/harmony_uniffiFFI differ
diff --git a/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Versions/Current b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Versions/Current
new file mode 120000
index 0000000..8c7e5a6
--- /dev/null
+++ b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/Versions/Current
@@ -0,0 +1 @@
+A
\ No newline at end of file
diff --git a/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/harmony_uniffiFFI b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/harmony_uniffiFFI
deleted file mode 100644
index 9802dbb..0000000
Binary files a/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/harmony_uniffiFFI and /dev/null differ
diff --git a/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/harmony_uniffiFFI b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/harmony_uniffiFFI
new file mode 120000
index 0000000..1dd03d1
--- /dev/null
+++ b/Binaries/harmony_uniffiFFI.xcframework/macos-arm64_x86_64/harmony_uniffiFFI.framework/harmony_uniffiFFI
@@ -0,0 +1 @@
+Versions/Current/harmony_uniffiFFI
\ No newline at end of file
diff --git a/scripts/build_uniffi.sh b/scripts/build_uniffi.sh
index 86ad0d6..1b0ee36 100755
--- a/scripts/build_uniffi.sh
+++ b/scripts/build_uniffi.sh
@@ -124,19 +124,40 @@ make_framework() {
local fw="$slice_dir/${FRAMEWORK_NAME}.framework"
rm -rf "$fw"
- mkdir -p "$fw/Headers" "$fw/Modules"
- cp "$lib_path" "$fw/${FRAMEWORK_NAME}"
- cp build/uniffi/Headers/* "$fw/Headers/"
-
- cat > "$fw/Modules/module.modulemap" < "$mod_dir/module.modulemap" < "$fw/Info.plist" < "$plist_path" <
@@ -162,6 +183,17 @@ EOF
EOF
+
+ # macOS: create the version symlink (Current -> A) and the top-level symlinks
+ # into it that make this a valid versioned framework bundle. iOS/simulator
+ # slices are flat and need none of this.
+ if [ "$platform" = "MacOSX" ]; then
+ ln -s A "$fw/Versions/Current"
+ ln -s "Versions/Current/${FRAMEWORK_NAME}" "$fw/${FRAMEWORK_NAME}"
+ ln -s Versions/Current/Headers "$fw/Headers"
+ ln -s Versions/Current/Modules "$fw/Modules"
+ ln -s Versions/Current/Resources "$fw/Resources"
+ fi
}
make_framework "$IOS_LIB" build/frameworks/ios MinimumOSVersion "$IOS_DEPLOYMENT_TARGET" iPhoneOS