sony / meta-flutter

Yocto recipes for Flutter Engine and custom embedders
BSD 3-Clause "New" or "Revised" License
84 stars 21 forks source link

arm64 issue when compiling on M1 #59

Open bvoq opened 1 year ago

bvoq commented 1 year ago

Hi, I've created a Dockerfile to reproduce this issue and you can find it here: https://github.com/bvoq/FlutterMetaDockerfile/tree/main/fluttergcc11wayland You only need Docker installed and you can run build.sh and the rest should be taken care of.

The code runs successfully on an older Mac with x86_64 architecture but not on arm64 Macs. The reason is that gcc-multilib is not supported for arm64 architecture. Installing just g++-11 and gcc-11 separately leads to the following issue:

My build platform is aarch64-linux, since I'm using M1 Mac with Docker. Failing build configuration:

Build Configuration:
BB_VERSION           = "2.0.0"
BUILD_SYS            = "aarch64-linux"
NATIVELSBSTRING      = "ubuntu-22.04"
TARGET_SYS           = "aarch64-poky-linux"
MACHINE              = "qemuarm64"
DISTRO               = "poky"
DISTRO_VERSION       = "4.0.4"
TUNE_FEATURES        = "aarch64 armv8a crc cortexa57"
TARGET_FPU           = ""
meta                 
meta-poky            
meta-yocto-bsp       = "<unknown>:<unknown>"
meta-clang           = "kirkstone:c728c3f9168c8a4ed05163a51dd48ca1ad8ac21d"
meta-flutter         = "main:3c6ba93ad2de2ae1d9c71a9b34c55fc93d8ef024"
HidenoriMatsubayashi commented 1 year ago

Thanks for the issue, but I have never tried to build flutter/engine on aarch64 machines. I'm not sure flutter/engine builds are supported on aarch64 arch.

https://github.com/sony/flutter-embedded-linux/wiki/Building-Flutter-Engine-from-source shows how to build on x64 CPUs basically.

bvoq commented 1 year ago

Ok I have more info regarding this. The main issue is that gcc-multilib is not supported by arm64 and it is not sufficient to install just gcc-11 and g++11.

image

You can simulate x86_64 architecture on Docker on M1 MacBooks but you will into the known inotify issue, described here: https://docs.docker.com/desktop/mac/apple-silicon/

Maybe the code would have to be refactored with clang support to support arm? Anyways, I'm happy with my working version on x86_64, thanks!

HidenoriMatsubayashi commented 1 year ago

Maybe the code would have to be refactored with clang support to support arm?

What do you mean? meta-flutter doesn't require GCC, it just uses only clang.

bvoq commented 1 year ago

What do you mean? meta-flutter doesn't require GCC, it just uses only clang.

hmm maybe yocto then? because gcc-multilib is a requirement for yocto. It might however be another issue related to arm64.