derat | 8171050 | 2017-02-22 17:57:55 | [diff] [blame] | 1 | # Chrome OS Build Instructions (Chromium OS on Linux) |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 2 | |
stevenjb | 89ee24b | 2016-04-19 19:26:42 | [diff] [blame] | 3 | Chromium on Chromium OS is built from a mix of code sourced from Chromium |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 4 | on Linux and Chromium on Windows. Much of the user interface code is |
stevenjb | 89ee24b | 2016-04-19 19:26:42 | [diff] [blame] | 5 | shared with Chromium on Windows. |
| 6 | |
| 7 | If you make changes to Chromium on Windows, they may affect Chromium |
| 8 | on Chromium OS. Fortunately to test the effects of your changes you |
| 9 | don't need to build all of Chromium OS, you can just build Chromium for |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 10 | Chromium OS directly on Linux. |
| 11 | |
| 12 | First, follow the [normal Linux build |
| 13 | instructions](https://chromium.googlesource.com/chromium/src/+/master/docs/linux_build_instructions.md) |
| 14 | as usual to get a Chromium checkout. |
| 15 | |
stevenjb | ec7b4e3c | 2016-04-18 22:52:02 | [diff] [blame] | 16 | ## Building and running Chromium with Chromium OS UI on your local machine |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 17 | |
| 18 | If you plan to test the Chromium build on your dev machine and not a |
stevenjb | ec7b4e3c | 2016-04-18 22:52:02 | [diff] [blame] | 19 | Chromium OS device, run the following in your chromium checkout: |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 20 | |
stevenjb | ec7b4e3c | 2016-04-18 22:52:02 | [diff] [blame] | 21 | $ gn gen out/Default --args='target_os="chromeos"' |
| 22 | $ ninja -C out/Default |
| 23 | |
| 24 | NOTE: You may wish to replace 'Default' with something like 'Cros' if |
| 25 | you switch back and forth between Linux and Chromium OS builds, or 'Debug' |
| 26 | if you want to differentiate between Debug and Release builds (see below) |
| 27 | or DebugCros or whatever you like. |
| 28 | |
| 29 | Now, when you build, you will build with Chromium OS features turned on. |
| 30 | |
| 31 | See [GN Build Configuration](https://www.chromium.org/developers/gn-build-configuration) |
| 32 | for more information about configuring your build. |
| 33 | |
Matt Giuca | d8cebe4 | 2018-01-09 04:37:46 | [diff] [blame^] | 34 | Some additional options you may wish to set by passing in `--args` to `gn gen` |
| 35 | or running `gn args out/Default`: |
stevenjb | 89ee24b | 2016-04-19 19:26:42 | [diff] [blame] | 36 | |
stevenjb | ec7b4e3c | 2016-04-18 22:52:02 | [diff] [blame] | 37 | is_component_build = true |
| 38 | use_goma = true |
| 39 | is_debug = false # Release build |
| 40 | dcheck_always_on = true # Enable DCHECK (with is_debug = false) |
| 41 | is_official_build = true |
| 42 | is_chrome_branded = true |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 43 | |
stevenjb | ec7b4e3c | 2016-04-18 22:52:02 | [diff] [blame] | 44 | ## Notes |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 45 | |
| 46 | When you build Chromium OS Chromium, you'll be using the TOOLKIT\_VIEWS |
| 47 | front-end just like Windows, so the files you'll probably want are in |
| 48 | src/ui/views and src/chrome/browser/ui/views. |
| 49 | |
stevenjb | ec7b4e3c | 2016-04-18 22:52:02 | [diff] [blame] | 50 | When target_os = "chromeos", then toolkit\_views need not (and should not) |
| 51 | be specified. |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 52 | |
| 53 | The Chromium OS build requires a functioning GL so if you plan on |
| 54 | testing it through Chromium Remote Desktop you might face drawing |
| 55 | problems (e.g. Aura window not painting anything). Possible remedies: |
| 56 | |
Matt Giuca | d8cebe4 | 2018-01-09 04:37:46 | [diff] [blame^] | 57 | * `--ui-enable-software-compositing --ui-disable-threaded-compositing` |
| 58 | * `--use-gl=osmesa`, but it's ultra slow, and you'll have to build osmesa |
| 59 | yourself. |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 60 | * ... or just don't use Remote Desktop. :) |
| 61 | |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 62 | To more closely match the UI used on devices, you can install fonts used |
| 63 | by Chrome OS, such as Roboto, on your Linux distro. |
| 64 | |
| 65 | To specify a logged in user: |
| 66 | |
| 67 | * For first run, add the following options to the command line: |
Matt Giuca | d8cebe4 | 2018-01-09 04:37:46 | [diff] [blame^] | 68 | `--user-data-dir=/tmp/chrome --login-manager` |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 69 | * Go through the out-of-the-box UX and sign in as |
Matt Giuca | d8cebe4 | 2018-01-09 04:37:46 | [diff] [blame^] | 70 | **username@gmail.com**. |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 71 | * For subsequent runs, add the following to the command line: |
Matt Giuca | d8cebe4 | 2018-01-09 04:37:46 | [diff] [blame^] | 72 | `--user-data-dir=/tmp/chrome [email protected]` |
| 73 | * To run in guest mode instantly, you can run add the arguments: |
| 74 | `--user-data-dir=/tmp/chrome --bwsi --incognito --login-user='$guest' |
| 75 | --login-profile=user` |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 76 | |
| 77 | Signing in as a specific user is useful for debugging features like sync |
| 78 | that require a logged in user. |
| 79 | |
stevenjb | 89ee24b | 2016-04-19 19:26:42 | [diff] [blame] | 80 | ## Compile Chromium for a Chromium OS device using the Chromium OS SDK |
tfarina | 5b37337 | 2016-03-27 08:06:21 | [diff] [blame] | 81 | |
stevenjb | ec7b4e3c | 2016-04-18 22:52:02 | [diff] [blame] | 82 | See [Building Chromium for a Chromium OS device](https://www.chromium.org/chromium-os/how-tos-and-troubleshooting/building-chromium-browser) |
stevenjb | 89ee24b | 2016-04-19 19:26:42 | [diff] [blame] | 83 | for information about building and testing chromium for Chromium OS. |