Apple M1 support

It will be only a matter of time before Apple will require developers to submit updates for Mac apps with Apple Silicon binary included. Is there already (or will there be) an Apple Silicon compatible C++ client library?

@Pinky The Apple Silicon stuff is hot off the press from Apple so we’ve not had the chance to start to address it. I think it’s best to open a feature request on the C++ client to discuss what’s involved to make it compatible. It will likely depend on the dependencies we have in the code to also receive compatibility updates for Apple Silicon.

Thanks. No idea where to do that, but I’ll take a look :wink: Can’t be too overly complex as the new Macs are basically big iPads for which a client already exists.

Just to let you all know:

I’ve compiled boost for M1 (libthread and libchrono) and modified the Mac build script to compile the Nakama C++ client for arm64 (added “-DCMAKE_OSX_ARCHITECTURES=’ + ARCH” to the cmake command, ran it for x86_64 and arm64 and then used lipo to create a universal static library). Seems to work great.

I unfortunately have no experience with github to give back to the community, but at least with these steps one can easily build the client for M1 too.

4 Likes

What about for server-side stuff?

Any news on arm images? I (unfortunately) have to use a mac m1 instead of Linux and it seems that Docker is extremely slow (compared to a old linux laptop) maybe arm images could be faster? Or maybe it’s just Docker in general which is slow on mac?
I have even started using Gitpod which build images much faster (but may have big compute)

.gitpod.yml

ports:
  - port: 7348
  - port: 7349
  - port: 7350
  - port: 7351

vscode:
  extensions:
    - ms-azuretools.vscode-docker@latest
    - golang.go@latest

I suppose I’m not the only one developing with Nakama on mac m1

EDIT:

Also 1/2 the build crashes with qemu: uncaught target signal 11 (Segmentation fault) - core dumped but I’m not sure ARM images would improve this `qemu: uncaught target signal 11 (Segmentation fault) - core dumped` when running `docker-compose up` on Apple Silicon · Issue #5123 · docker/for-mac · GitHub

@louis030195 This discussion is mostly about the Nakama C++ client Apple M1 support, but for the server we’re looking into building darwin/arm64 binaries for the next release just like we already do for darwin/amd64.

We just want to make sure everything works as expected. As you’ve also noted even large projects like Docker have not had a smooth start on M1, so we’re taking the time to test thoroughly.

Until then the best approach is to use our Docker images. Alternatively you can try building your own binaries for darwin/arm64 - our build process is documented in the Nakama repo.

2 Likes