| # Chrome OS Build Instructions (Chromium OS on Linux) |
| |
| Chromium on Chromium OS is built from a mix of code sourced from Chromium |
| on Linux and Chromium on Windows. Much of the user interface code is |
| shared with Chromium on Windows. |
| |
| If you make changes to Chromium on Windows, they may affect Chromium |
| on Chromium OS. Fortunately to test the effects of your changes you |
| don't need to build all of Chromium OS, you can just build Chromium for |
| Chromium OS directly on Linux. |
| |
| First, follow the [normal Linux build |
| instructions](https://chromium.googlesource.com/chromium/src/+/master/docs/linux_build_instructions.md) |
| as usual to get a Chromium checkout. |
| |
| ## Building and running Chromium with Chromium OS UI on your local machine |
| |
| If you plan to test the Chromium build on your dev machine and not a |
| Chromium OS device, run the following in your chromium checkout: |
| |
| $ gn gen out/Default --args='target_os="chromeos"' |
| $ ninja -C out/Default |
| |
| NOTE: You may wish to replace 'Default' with something like 'Cros' if |
| you switch back and forth between Linux and Chromium OS builds, or 'Debug' |
| if you want to differentiate between Debug and Release builds (see below) |
| or DebugCros or whatever you like. |
| |
| Now, when you build, you will build with Chromium OS features turned on. |
| |
| See [GN Build Configuration](https://www.chromium.org/developers/gn-build-configuration) |
| for more information about configuring your build. |
| |
| If you have not already done so, be sure to set the following to prevent |
| 'gclient runhooks' from executing 'gyp_chromium': |
| |
| export GYP_CHROMIUM_NO_ACTION=1 |
| |
| Some additional options you may wish to set by passing in **--args** to |
| **gn gen** or running **gn args out/Default**: |
| |
| is_component_build = true |
| use_goma = true |
| is_debug = false # Release build |
| dcheck_always_on = true # Enable DCHECK (with is_debug = false) |
| is_official_build = true |
| is_chrome_branded = true |
| |
| ## Notes |
| |
| When you build Chromium OS Chromium, you'll be using the TOOLKIT\_VIEWS |
| front-end just like Windows, so the files you'll probably want are in |
| src/ui/views and src/chrome/browser/ui/views. |
| |
| When target_os = "chromeos", then toolkit\_views need not (and should not) |
| be specified. |
| |
| The Chromium OS build requires a functioning GL so if you plan on |
| testing it through Chromium Remote Desktop you might face drawing |
| problems (e.g. Aura window not painting anything). Possible remedies: |
| |
| * --ui-enable-software-compositing --ui-disable-threaded-compositing |
| * --use-gl=osmesa, but it's ultra slow, and you'll have to build |
| osmesa yourself. |
| * ... or just don't use Remote Desktop. :) |
| |
| To more closely match the UI used on devices, you can install fonts used |
| by Chrome OS, such as Roboto, on your Linux distro. |
| |
| To specify a logged in user: |
| |
| * For first run, add the following options to the command line: |
| **--user-data-dir=/tmp/chrome --login-manager** |
| * Go through the out-of-the-box UX and sign in as |
| **username@gmail.com** |
| * For subsequent runs, add the following to the command line: |
| **--user-data-dir=/tmp/chrome --login-user=username@gmail.com**. |
| * To run in guest mode instantly, you can run add the arguments |
| **--user-data-dir=/tmp/chrome --bwsi --incognito |
| --login-user='$guest' --login-profile=user** |
| |
| Signing in as a specific user is useful for debugging features like sync |
| that require a logged in user. |
| |
| ## Compile Chromium for a Chromium OS device using the Chromium OS SDK |
| |
| See [Building Chromium for a Chromium OS device](https://www.chromium.org/chromium-os/how-tos-and-troubleshooting/building-chromium-browser) |
| for information about building and testing chromium for Chromium OS. |