| # 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 installed if you have | 
 | `target_arch=arm` in your `GYP_DEFINES`. | 
 |  | 
 | 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. |