| Index: docs/linux_chromium_arm.md
|
| diff --git a/docs/linux_chromium_arm.md b/docs/linux_chromium_arm.md
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..927be6e79497a92460fc6f0df9f21e2b9645a430
|
| --- /dev/null
|
| +++ b/docs/linux_chromium_arm.md
|
| @@ -0,0 +1,123 @@
|
| +Note this currently contains various recipes:
|
| +
|
| +
|
| +
|
| +---
|
| +
|
| +
|
| +# Recipe1: Building for an ARM CrOS device
|
| +This recipe uses `ninja` (instead of `make`) so its startup time is much lower (sub-1s, instead of tens of seconds), is integrated with goma (for google-internal users) for very high parallelism, and uses `sshfs` instead of `scp` to significantly speed up the compile-run cycle. It has moved to https://sites.google.com/a/chromium.org/dev/developers/how-tos/-quickly-building-for-cros-arm-x64 (mostly b/c of the ease of attaching files to sites).
|
| +
|
| +
|
| +
|
| +---
|
| +
|
| +
|
| +# 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 --arm
|
| +```
|
| +
|
| +### Installing the rootfs
|
| +
|
| +A prebuilt rootfs 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:
|
| +```
|
| +$ ./chrome/installer/linux/sysroot_scripts/install-debian.wheezy.sysroot.py --arch=arm
|
| +```
|
| +
|
| +### Building
|
| +
|
| +To build for ARM, using the clang binary in the chrome tree, use the following settings:
|
| +
|
| +```
|
| +export GYP_CROSSCOMPILE=1
|
| +export GYP_DEFINES="target_arch=arm"
|
| +```
|
| +
|
| +There variables need to be set at gyp-time (when you run gyp\_chromium),
|
| +but are not needed at build-time (when you run make/ninja).
|
| +
|
| +## Testing
|
| +
|
| +### Automated Build and Testing
|
| +
|
| +Chromium's testing infrastructure for ARM/Linux is (to say the least)
|
| +in its infancy. There are currently two builders setup, one on the
|
| +FYI waterfall and one the the trybot waterfall:
|
| +
|
| +http://build.chromium.org/p/chromium.fyi/builders/Linux%20ARM%20Cross-Compile
|
| +http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_arm
|
| +
|
| +
|
| +These builders cross compile on x86-64 and then trigger testing
|
| +on real ARM hard bots:
|
| +
|
| +http://build.chromium.org/p/chromium.fyi/builders/Linux%20ARM%20Tests%20%28Panda%29/
|
| +http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_arm_tester
|
| +
|
| +Unfortunately, even those the builders are usually green, the testers
|
| +are not yet well maintained or monitored.
|
| +
|
| +There is compile-only trybot and fyi bot also:
|
| +
|
| +http://build.chromium.org/p/chromium.fyi/builders/Linux%20ARM
|
| +http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_arm_compile
|
| +
|
| +### 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.
|
|
|