| # 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. |