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