Proposal to remove "support" for building macOS native

Proposal to remove “support” for building macOS native

Compiling for native on macOS is not currently possible and RIOT’s current development is moving further away from it.

  • Native is currently 32 bit only, while the latest macOS cannot run 32 bit binaries at all
  • the XFA were developed without regard to the Mach-O binary format. e.g.: the syntax of compiler attributes for sections differs
  • RIOT does not have full LLVM support and relies on GNU ld for linking to native, but the GNU ld is not available for the Mach-O target format
  • Some paths in certain makefiles need to be adjusted depending on macOS version and how the tool is installed, this is difficult to test and maintain
  • The new Macs with Apple Silicon are ARM based - does anyone intend to buy one and test RIOT development on it?

I propose that we stop caring about macOS all together:

  • Removal of most / all macOS related build system hacks
  • no testing for / on macOS in releases
  • streamlining the build system for some specific platforms, e.g. LTS Ubuntu, Fedora
  • if the build system is robust and generalised, one could add a single and central guide on how to get it to cross-compile on macOS for non-native targets
  • Other macOS issues / workarounds could be tracked via GitHub issues making them easy to search for
  • Less maintenance work, less possible points of failure, more confidence in the reliability of the build system

This would also improve the user experience. At the moment, macOS users regularly encounter problems when using RIOT. They assume it “should just work” because RIOT seems to be friendly and supports multiple platforms, but it does not. The hint that users outside the Linux world might encounter problems is just not big enough. RIOT regularly receives messages from these users via forum/mailing list/github. These could be avoided by dropping macOS and making it clear to use Linux for development.

What do you think about it? Do you want to stay with Mac or move on? :wink:


Generally I like the mentality of under-promise and over-deliver.

Can we clarify that the idea is to only drop native support for macOS but still support cross-compiling or drop any usage of macOS with RIOT?

Thanks for waiting, my post was indeed a bit unclear.

The important proposal is to drop macOS native support. It is broken beyond repair.

However, I would also recommend to discuss dropping cross-compiling support for the various reasons mentioned in the original post.