feat: scaffold net10.0-ios target for ImGui.App (phase 0 of iOS support)#180
Merged
Conversation
Phase 0 of iOS support. Adds the net10.0-ios TFM (mac-only via IsOSPlatform condition so Linux/Windows desktop builds are unaffected), guards Silk.NET PackageReferences and platform-specific source files out of the iOS compile, and ships a throwing ImGuiApp stub so the assembly can be referenced from iOS consumers without breaking the public API surface. The UIKit/Metal platform layer and the upstream Hexa.NET iOS native runtimes land in follow-up PRs against this branch. https://claude.ai/code/session_01XLQNGeHpAb5vCraERJLpUU
ImageSharp 4.0.0 (introduced by dependabot #179) requires a paid commercial license and fails the build with NETSDK targets error: "No Six Labors license found. Please obtain a license from https://sixlabors.com/pricing/". The dependabot auto-merge bypassed the CI build that would have caught this, leaving main red. Pinning back to 3.1.12 (the last MIT-licensed version) unblocks this PR and main. Long-term, the project should decide between purchasing a license or migrating to an alternative image loader; that's out of scope for the iOS scaffolding work on this branch. https://claude.ai/code/session_01XLQNGeHpAb5vCraERJLpUU
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Summary
Phase 0 of multi-PR work to add iOS support to
ImGui.App. This PR is scaffolding only — it adds thenet10.0-iosTFM so the assembly can be compiled and referenced from iOS consumers, but the runtime backend (UIKit lifecycle + Metal renderer + touch input) lands in follow-ups against this same branch.Changes
ImGui.App.csproj:net10.0-iosto<TargetFrameworks>, conditional on$([MSBuild]::IsOSPlatform('OSX'))so Linux/Windows desktop builds (CI included) see the exact same TFM list as before.<SupportedOSPlatformVersion>15.0</SupportedOSPlatformVersion>for iOS.Silk.NET.*PackageReferences into anItemGroupconditional on non-iOS.<Compile Remove>entries on iOS for desktop-only sources:ImGuiApp.cs,ImGuiAppConfig.cs,ImGuiAppWindowState.cs,FontMemoryGuard.cs,ForceDpiAware.cs,GdiPlusHelper.cs,NativeMethods.cs,ImGuiController/**. (All verified to be either Silk-using or Windows-PInvoke files; none of the remaining sources depend on the excluded types.)Platform/iOS/ImGuiApp.iOS.cs(new): minimalImGuiAppstatic class guarded by#if IOS.Start()andStop()throwPlatformNotSupportedExceptionfor now so the assembly compiles and the symbol exists, but consumer code that actually invokes it fails fast with a clear message.Design notes
IsOSPlatform('OSX')keeps Linux CI green while still building the iOS TFM on developer Macs and any future macOS CI runner.#if !IOS-wrapping them?ImGuiApp.csalone is 1861 lines woven through withSilk.NET.*types — wrapping cleanly is more disruptive than excluding wholesale during scaffolding. Phase 1 will introduce a platform-abstraction layer so the desktop and iOS code paths share the bulk of the cross-platform logic.Out of scope (follow-up PRs against this branch)
UIApplicationDelegate/MTKView) and Metal rendering wired through the upstream Hexa.NET ImGui Metal backend (depends on a ktsu-dev R&D sibling that produces iOS-arm64 + iossimulator-arm64 native runtimes for Hexa.NET.ImGui; that work is being coordinated with the Hexa author for upstream reconvergence)..csproj.Test plan
dotnet restoresucceeds on Linux (TFM filter keeps net10.0-ios out of restore on non-macOS).dotnet build -f net10.0produces no new errors versus baseline. (Pre-existingSixLabors.ImageSharp 4.0.0license error from Bump SixLabors.ImageSharp from 3.1.12 to 4.0.0 #179 still present and unrelated.)dotnet build -f net10.0-ioson macOS with the iOS workload installed (cannot verify from Linux CI; needs developer/runner verification).net10.0only) and tests project unaffected — they resolveImGui.App's net10.0 TFM exactly as before.https://claude.ai/code/session_01XLQNGeHpAb5vCraERJLpUU
Generated by Claude Code