Tracktion Engine – aarch64 build failures (__wfe, C++17 template errors)

I’m building a DAW project using Tracktion Engine (via JUCE) and running into build failures on Linux aarch64. Thought I’d share in case others hit the same walls — and maybe there’s a cleaner solution than patching upstream. Environment: Raspberry Pi 5 (aarch64), GCC 12+, CMake. Also reproduced on Fedora Asahi (aarch64, Clang 20). Issue 1: __wfe not declared A file in Tracktion Engine uses __wfe() which isn’t available outside ARM-specific intrinsics headers. My workaround:

copy

asm volatile("wfe" ::: "memory");

This works but feels like a hack. Is there a proper cross-platform way to handle this?

Issue 2: C++17 / template errors in Tracktion Engine

Further into the build (~90%+), multiple Tracktion files fail:

tracktion_Bezier.h
tracktion_LevelMeasurer.h
tracktion_Tempo.h
tracktion_WaveNode.cpp

GCC notes std::pair parameter passing changed in C++17 (GCC 10.1). Final result: build fails with Error 2.

Context

This happens on both Raspberry Pi OS (aarch64, GCC 12) and Fedora Asahi (aarch64, Clang 20). x86_64 builds work fine.

Has anyone here built Tracktion Engine on aarch64 successfully? Any patches or CMake flags that helped?

Thanks,
Steffen

I had same issues on the Raspberry Pi 5 and use the same workaround:

//__wfe();

#if defined(__aarch64__) || defined(__arm__)
    asm volatile("wfe" ::: "memory");
#endif