wabiverse / SwiftUSD

Pixar's universal scene description for swift and the open source metaverse.
https://wabiverse.github.io/SwiftUSD/documentation/pixarusd/
Other
66 stars 5 forks source link

Support iOS with SwiftUSD #4

Closed furby-tm closed 9 months ago

furby-tm commented 11 months ago

What

SwiftUSD should work across iOS and visionOS, no different than the macOS platform.

iOS and visionOS both remain untested and unattempted for use in Swift packages. The theory is that there are few changes to be made, if any, then when building for macOS. The rationale is that the Boost, Python, and MoltenVK *.xcframework dependencies have already been built to be supportive of these platforms, but further testing is necessary to ensure this remains true.

Why

SwiftUSD is intended to be operating system agnostic, and fully supported across Linux, all Apple family devices (macOS, visionOS, iOS, watchOS, and tvOS), and Microsoft Windows.


Discussed in Q&A

Originally posted by **@SimonBenAnderson** December 4, 2023 Hi Wabiverse Team, I was wondering if the SwiftUSD binding that you have work for the iOS environment? As I have been looking for Swift OpenUSD bindings for an app Thanks, Simon

furby-tm commented 11 months ago

Quick update, I believe any issues related with this are more to do with Xcode's ability to build the MetaverseKit and SwiftUSD swift packages, and less to do with swift or anything platform-specific.

I have addressed one of these Xcode errors with this workaround related to Xcode's inability to build swift packages that depend on (more than one) .xcframework that contain a module.modulemap file to it's headers.

furby-tm commented 11 months ago

I have addressed another Xcode error with this workaround for Xcode's inability to build a target that does not provide object files, because its tooling is hardcoded to expect the output of at least some symbols for all libraries.

The fix for that has been included in v23.11.3, so be sure to have it pinned as the version minimum for the SwiftUSD dependency within your own project's Package.swift file or Xcode dependencies if your aim is to build with Xcode.

furby-tm commented 11 months ago

I can confirm that after the above two workarounds, that Xcode is successfully able to build SwiftUSD on macOS, I will target the other platforms (iOS & visionOS) and fix any issues as they arise.

Will continue to update this issue with any more relevant findings.

furby-tm commented 10 months ago

Hey @SimonBenAnderson, I did not forget about you, I deeply apologize as I had just about fixed everything else before I returned back to supporting iOS and visionOS, I have been working on bringing these platforms in the latest dev branch, with the only thing that's left to support these additional platforms is to fix the proper library for python in MetaversePythonFramework, and everything else appears it will fall in place - I greatly appreciate your patience.

furby-tm commented 10 months ago

iOS is now supported & tested. You can grab it in the latest release, still need to fixup visionOS's python, but iOS is complete, update your swift project to include this latest release accordingly:

dependencies: [
  .package(url: "https://github.com/wabiverse/SwiftUSD.git", from: "23.11.21"),
]

Enjoy 🎉 .

SimonBenAnderson commented 9 months ago

@furby-tm Thank you so much! I cant wait to give this a go. Sorry about the late reply.