Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Windows on Arm support #2397

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft

WIP: Windows on Arm support #2397

wants to merge 1 commit into from

Conversation

archanox
Copy link

@archanox archanox commented Jul 21, 2024

PR Details

This is a highly experimental WIP draft of getting the entire Stride suite to compile and run on Windows on Arm (WoA).
There has been a lot of broad stroke changes that change projects from win-x64 to win-arm64, just to test this proof of concept.
I have gone through every mention of x86/x64 through the repo to add in arm64 where appropriate, but there are some issues surrounding the native libraries. I feel that there's perhaps documentation somewhere on how to build these binaries that exist in the repo, maybe?

I am seeking any and all feedback and assistance with this PR where possible. I am on Discord in the Stride server as pierce @archanox

Milestone:

  1. Getting the solution to build for arm64 with everything working (tests, packaged, installer built, etc)
  2. Configure multiple targets for a win-x64 build and win-arm64

Current Issues checked in:

  • ClearScript was only bundled with x86/x64 binaries. Dependencies for the Metrics were erroneously upgraded for the entire project. Untested.
  • There are missing binaries for arm64 that do not exist in the repo
  • 32bit/64bit checks assume x86 platform
  • Native library build scripts appear to be pointing at an old version of visual studio
  • MSBuild paths for x86/x64 have been temporarily removed until successful build & test.
  • Preliminary ARM64 UWP changes were checked in, but will likely be reverted.

Goal of this PR:

  • To develop on a WoA device, with Visual Studio integration and to build for Windows and Linux platforms.

Outside the scope of this PR:

  • CI for automated builds of the arm64 version
  • NuGet publishing

Related Issue

#2018

Types of changes

  • Docs change / refactoring / dependency upgrade
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist

  • My change requires a change to the documentation.
  • I have added tests to cover my changes.
  • All new and existing tests passed.
  • I have built and run the editor to try this change out.

@archanox
Copy link
Author

@dotnet-policy-service agree

@anthony-linaro
Copy link

Was there any more movement on this (or discussion on other platforms)? Was there anything preventing review?

@archanox
Copy link
Author

Was there any more movement on this (or discussion on other platforms)? Was there anything preventing review?

Hi Anthony, no movement I'm afraid. I've been pretty intimidated by Stride's bespoke build system.
At the time of me authoring this PR, there was still a lot of native dependencies that are precompiled and checked into the repo.

The last thing I believe I got stuck on was actually building the dependencies and locating where they need to live. MSBuild wasn't very transparent to what the cause was, merely just reporting what broke because of it.

As for review, if anyone else is interested in this PR, I'd advise just spinning up a new one without the mess I made when making the entire solution build and run just for aarch64 rather than x64.

If you are interested in picking this up and wish to avoid reading the mess in the singular commit, I think the main take aways are that

  • the MSBuild location in the registry is in another location.
  • The version of MSBuild that Stride targeted when I looked last was a version prior to a native WoA version of it.
  • And the Url referenced to download MSBuild for arm64 is actually a fat binary for both x64 and arm64.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants