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

Add ARM64 targets for Windows and Linux #170

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft

Conversation

kvnp
Copy link

@kvnp kvnp commented May 14, 2024

This PR attempts to add ARM64 targets for Windows and Linux. The arm64 build for Windows seems to work out of the box.

There are two issues I'm currently facing:

  1. Squirrel does not distinguish between multi-target builds. The releasified package does not take into account the architecture, which is given by changing the filename of the packed .nupkg file. This means that packages built for other Windows targets will be replaced, as will the entries in the RELEASES file. According to this issue How to release both x64 and ia32 versions Squirrel/Squirrel.Windows#554, a separate endpoint per target is required. This means that a separate release per architecture is required in osus releases page to solve this problem, which is not a pretty solution. What are your thoughts on this?

  2. The Linux builds compile but do not currently run. It's not clear to me how the dependencies in the folder ./osu/osu.Desktop/bin/Debug/net8.0/runtimes/linux-arm64/ are collected, as no error messages appeared during compilation. Some libraries are missing when compared to those under win-arm64. For example, bass_fx. Any advice on this matter is greatly appreciated.

@smoogipoo
Copy link
Contributor

x86 builds will never be supported. Please remove.

@smoogipoo
Copy link
Contributor

smoogipoo commented May 14, 2024

Here's a list of tasks:

  • We do not have any linux-arm64 libs (https://github.com/ppy/osu-framework/tree/master/osu.Framework.NativeLibs/runtimes)
    • This includes ffmpeg, for which we have a custom GitHub workflow. Given that GitHub doesn't yet have linux-arm runners, this is likely to be tricky to do.
    • Bass libs are found on the un4seen website.
  • SDL3-CS does not have linux-arm64 libs
    • This is something I want to do at some point anyway, because I'd rather Ryujinx use ppy.SDL3-CS rather than forking it to add linux-arm64 support on their own.
    • Package available: https://www.nuget.org/packages/ppy.SDL3-CS
  • ppy.Veldrid.SpirV does not have linux-arm64 and win-arm64 libs
    image
  • Anticheat is not compiled for linux-arm64. This is somewhat difficult to do at the moment.
  • Anticheat is not compiled for win-arm64. There are two options here:
    • This may already be working if it's still translating the win-x64 lib (what currently happens).
    • We may need to compile it for win-arm64 otherwise. Similar to linux-arm64, this may be difficult to do.

Also, I don't currently own a win-arm64 machine to test with, complicating things a bit (will look into it, but this is not a priority because it emulates win-x64 anyway and otherwise has a low userbase).

@kvnp kvnp changed the title Add x86 and ARM targets (Windows and Linux) Add ARM64 targets for Windows and Linux May 14, 2024
@kvnp
Copy link
Author

kvnp commented May 15, 2024

I rewrote the build script for SDL3 using Docker, and while the build times are not great, it looks promising. However, Git is not happy for some reason.

https://github.com/kvnp/SDL3-CS/actions/runs/9088862218

@kvnp
Copy link
Author

kvnp commented May 19, 2024

PRs for SDL3-CS, Veldrid-Spirv and ffmpeg have been opened.

How should I approach this? Just add these to a PR?

  • Anticheat is not compiled for linux-arm64. This is somewhat difficult to do at the moment.

Is there anything I can do to get this task done?

@ThatStella7922
Copy link

Figured I'd add, Windows ARM64 is exceptionally easy to test with because of Apple Silicon Macs. VMWare Fusion is free and runs Windows 11 ARM64. It's able to run osu!lazer perfectly fine with the Veldrid DX11 and OpenGL renderers, and you have the full suite of Visuai Studio ARM64 dev tools as well.

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.

3 participants