AppleシリコンでM5UnifiedをNativeでビルドできない時やってみること

きっかけがよくわからないですがArm64のMacでM5Unified(もしくはM5GFX)のNative環境でリンクが失敗する現象に陥ったのでメモ。

上記画像のようにSDL2の関数とリンクできません。
原因はx86_64でオブジェクトを作成しちゃってるようです。

恒久対策は別にあるかもですが、とりあえずはarm64のバイナリを作るように指定すれば解決しました。
具体的にはplatformio.iniでbuild_flagsに-arch arm64を追加します。

[env:native]
platform = native
build_type = debug
build_flags = -O0 -xc++ -std=c++14 -lSDL2 -arch arm64
    -I"/usr/local/include/SDL2"
    -L"/usr/local/lib"
    -I"${sysenv.HOMEBREW_PREFIX}/include/SDL2"
    -L"${sysenv.HOMEBREW_PREFIX}/lib"
lib_deps = 
    m5stack/M5Unified@^0.1.12