Skip to content

Add more platform support to CSFML NuGet #151

Closed
@Balnian

Description

@Balnian

As stated in issue #149 from @DemoXinMC

Additionally, we need to look at ways to provide CI and automated building of the CSFML NuGet package to cover more platforms (Mac OS is the glaring omission) as well as avoid having to manually package CSFML updates.

What is missing from the current NuGet package (in order of most important from my point of view):

  • MacOS builds
  • ARM and ARM64 build for linux and windows
  • linux-x64 rid references (need to check if it's possible)

MacOS

The missing MacOS target in the CSFML NuGet package is currently causing problems for SFML.NET on mac, because usually when you build your project the dependencies of the project are resolved and the correct binaries for the platform are extracted to the build directory allowing for a nice and tight development loop. But because of the omission of the MacOS binaries all user that build for MacOS need to download the CSFML MacOS binaries from the SFML website and then copy them to the build directory each time they clean build. This is a subpar experience compare for the linux and windows user experience.

ARM and ARM64 build for Linux and Windows

This would enable users to create projects for Single Board Computer (Like Raspberry Pi) with SFML.NET and also we could explore running on Chromebooks since they can now install linux app. Same thing for Windows because Microsoft is starting to push the Windows on ARM again with their new Surface Lineup (Surface Pro X). And it seems that ARM is getting more and more popular for non-smartphone usage and there's even rumors of the next mac running on arm... So I think it's worth starting to support ARM as a first citizen for SFML (CSFML)

linux-x64

This one I'm not sure how feasible it is, can we support the linux-x64 RID in the NuGet package? this would mean that any linux x64 platform can work with the package even if they are not based on :

  • alpine-x64
  • debian-x64
  • fedora-x64

This would mean we can generate a set of "universal" linux x64 shared objects for CSFML (which might not be possible?)

CI and automated building of the CSFML NuGet package

We could check for using GitHub Actions to automatically CI and Build the CSFML NuGet Package (and maybe even do an automatic package release?).
I've personally checked/started working on a workflow file, but I've hit some build problems.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions