
Bug: 826218 Change-Id: I176e1aeb0b24b21c6b4e5ee40910dce2bce52c95 Reviewed-on: https://chromium-review.googlesource.com/1239461 Reviewed-by: Nico Weber <thakis@chromium.org> Commit-Queue: Daniel Bratell <bratell@opera.com> Cr-Commit-Position: refs/heads/master@{#593522}
104 lines
2.9 KiB
Markdown
104 lines
2.9 KiB
Markdown
# Linux Chromium Arm Recipes
|
|
|
|
[TOC]
|
|
|
|
## Recipe1: Building for an ARM CrOS device
|
|
|
|
https://sites.google.com/a/chromium.org/dev/developers/how-tos/-quickly-building-for-cros-arm-x64
|
|
|
|
## Recipe2: Explicit Cross compiling
|
|
|
|
Due to the lack of ARM hardware with the grunt to build Chromium native, cross
|
|
compiling is currently the recommended method of building for ARM.
|
|
|
|
These instruction are designed to run on Ubuntu Precise.
|
|
|
|
### Installing the toolchain
|
|
|
|
The install-build-deps script can be used to install all the compiler
|
|
and library dependencies directly from Ubuntu:
|
|
|
|
$ ./build/install-build-deps.sh
|
|
|
|
### Installing the sysroot
|
|
|
|
A prebuilt sysroot image is kept up to date on Cloud Storage. It will
|
|
automatically be installed by gclient runhooks if `target_cpu=["arm"]`
|
|
is present in your `.gclient` file.
|
|
|
|
To install the sysroot manually you can run:
|
|
|
|
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm
|
|
|
|
### Building
|
|
|
|
To build for ARM, using the clang binary in the chrome tree, use the following
|
|
gn args:
|
|
|
|
target_cpu = "arm"
|
|
|
|
## Testing
|
|
|
|
### Automated Build and Testing
|
|
|
|
Chromium's testing infrastructure for ARM/Linux is somewhat limited.
|
|
There are currently two builders setup, one on the FYI waterfall and one
|
|
the the try bot waterfall:
|
|
|
|
* [Linux ARM](https://build.chromium.org/p/chromium.fyi/builders/Linux%20ARM)
|
|
* [linux_arm](https://build.chromium.org/p/tryserver.chromium.linux/builders/linux_arm)
|
|
|
|
These bots run x86-64 linux and cross-compile the ARM targets. Tests are
|
|
run on ARM hardware via swarming.
|
|
|
|
### Testing with QEMU
|
|
|
|
If you don't have a real ARM machine, you can test with QEMU. For instance,
|
|
there are some prebuilt QEMU Debian images here:
|
|
http://people.debian.org/~aurel32/qemu/. Another option is to use the rootfs
|
|
generated by rootstock, as mentioned above.
|
|
|
|
Here's a minimal xorg.conf if needed:
|
|
|
|
```
|
|
Section "InputDevice"
|
|
Identifier "Generic Keyboard"
|
|
Driver "kbd"
|
|
Option "XkbRules" "xorg"
|
|
Option "XkbModel" "pc105"
|
|
Option "XkbLayout" "us"
|
|
EndSection
|
|
|
|
Section "InputDevice"
|
|
Identifier "Configured Mouse"
|
|
Driver "mouse"
|
|
EndSection
|
|
|
|
Section "Device"
|
|
Identifier "Configured Video Device"
|
|
Driver "fbdev"
|
|
Option "UseFBDev" "true"
|
|
EndSection
|
|
|
|
Section "Monitor"
|
|
Identifier "Configured Monitor"
|
|
EndSection
|
|
|
|
Section "Screen"
|
|
Identifier "Default Screen"
|
|
Monitor "Configured Monitor"
|
|
Device "Configured Video Device"
|
|
DefaultDepth 8
|
|
SubSection "Display"
|
|
Depth 8
|
|
Modes "1024x768" "800x600" "640x480"
|
|
EndSubSection
|
|
EndSection
|
|
```
|
|
|
|
### Notes
|
|
|
|
* To building for thumb reduces the stripped release binary by around 9MB,
|
|
equating to ~33% of the binary size. To enable thumb, set `'arm_thumb': 1`
|
|
* TCmalloc does not have an ARM port, so it is disabled.
|