-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Building Dart SDK for ARM or RISC V
The Dart VM runs on a variety of ARM processors on Linux and Android. This document explains how to build the Dart VM and SDK to target these platforms.
If you are building natively on the device you will be running on, you can skip this step. The build scripts download a cross-compilation toolchain using clang that supports ia32, x64, arm and arm64, so you do not need to install a cross-compiler yourself unless you want to target riscv.
If you are running Debian/Ubuntu, you can obtain a cross-compiler by doing the following:
$ sudo apt-get install g++-arm-linux-gnueabihf # For 32-bit ARM (ARMv7)
$ sudo apt-get install g++-aarch64-linux-gnu # For 64-bit ARM (ARMv8)
$ sudo apt-get install g++-riscv64-linux-gnu # For 64-bit RISC-V (RV64GC)
Follow instructions under "One-time Setup" under Android
With the default Debian/Ubuntu toolchains, simply do:
$ ./tools/build.py --no-goma --no-clang -m release -a arm create_sdk
$ ./tools/build.py --no-goma --no-clang -m release -a arm64 create_sdk
$ ./tools/build.py --no-goma --no-clang -m release -a riscv64 create_sdk
You can also produce only a Dart VM runtime, no SDK, by replacing create_sdk
with runtime
. This process involves also building a VM that targets ia32/x64, which is used to generate a few parts of the SDK.
You can use a different toolchain using the -t switch. For example, if the path to your gcc is /path/to/toolchain/prefix-gcc, then you'd invoke the build script with:
$ ./tools/build.py --no-goma --no-clang -m release -a arm -t arm=/path/to/toolchain/prefix create_sdk
$ ./tools/build.py --no-goma --no-clang -m release -a arm64 -t arm64=/path/to/toolchain/prefix create_sdk
$ ./tools/build.py --no-goma --no-clang -m release -a riscv64 -t riscv64=/path/to/toolchain/prefix create_sdk
The standalone Dart VM can also target Android. For ARM devices:
$ ./tools/build.py --no-goma -m release -a arm --os=android create_sdk
and ARM64 devices:
$ ./tools/build.py --no-goma -m release -a arm64 --os=android create_sdk
For all of these configurations, the runtime only can be built using the runtime target as above.
You can create Debian packages targeting ARM as follows:
$ ./tools/create_tarball.py
$ ./tools/create_debian_packages.py -a {armhf, armel} [-t /path/to/cross/toolchain/prefix]
If you are on Ubuntu, and no -t switch is given, you'll get a Debian package targeting ARMv7. The argument to the -a switch should be appropriate for the platform you are targeting.
Important
The wiki has moved to https://github.com/dart-lang/sdk/tree/main/docs; please don't edit the pages here.