For Developers‎ > ‎How-Tos‎ > ‎

Get the Code: Checkout, Build, & Run Chromium

Prerequisites

Chromium supports building on Windows, Mac and Linux host systems. Linux is required for building Android, and a Mac is required for building iOS.

Platform-specific requirements

This page documents common checkout and build instructions. There are platform-specific pages with additional information and requirements:

Set up your environment

Check out and install the depot_tools package. This contains the custom tools necessary to check out and build.

Create a chromium directory for the checkout and change to it (you can call this whatever you like and put it wherever you like, as long as the full path has no spaces):

mkdir chromium
cd chromium


Check out the source code

Use the "fetch" tool that came with depot_tools:

fetch chromium    # [--no-history]
cd src    # All other commands are executed from the src/ directory.

Use --no-history if you don't need repo history and want a faster checkout. Expect a checkout to take at least 30 minutes on fast connections, and many hours on slower connections.

Post-sync hooks

Some platform-specific pages (linked above) may have extra instructions. In particular, on Ubuntu Linux run:

./build/install-build-deps.sh

Optional: install API keys which allow your build to use certain Google services. This isn't necessary for most development and testing purposes.

Run hooks to fetch everything needed for your build setup.

gclient runhooks

Update the checkout

To sync to newer versions of the code (not necessary the first time), run the following in your src/ directory:

git rebase-update
gclient sync

The first command updates the primary Chromium source repository and rebases your local development branches on top of tip-of-tree. The second command updates all of the dependencies specified in the DEPS file. See also "More help managing your checkout" below.



Setting up the build

GN build (Linux, CrOS, Android, Mac, and optionally Windows)

GN is our new build system. The build configurations for GN are stored in BUILD.gn files. To create a GN build directory:

gn gen out/Default

You only have to do this once, it will regenerate automatically when you build if the build files changed.

You can replace out/Default with another name inside the out directory, but avoid out/Debug and out/Release to avoid collisions with GYP.

To specify build parameters for GN builds, including release and component builds, see GN build configuration. The default will be a debug static library build matching the current host operating system and CPU.

For more info on GN, run gn help on the command line or read the quick start guide.

GYP build (iOS, optionally Windows and Mac)

GYP (Generate-Your-Project) is our older build system. The build configurations for GYP are stored in *.gyp and *.gypi files.

Generating the build files

Build files will be automatically generated when you run hooks. If you've changed (or updated and have changes to) any build files, you'll need to re-generate the build files by running the hooks again:

gclient runhooks

GYP creates directories named out/Debug and out/Release for the build.

Specifying build parameters

You can specify custom build parameters that affect the target or speed of your build. For more info, see GYP build parameters.



Building

Build Chromium (the "chrome" target) with the command:

ninja -C out/Default chrome

List all GN targets by running  gn ls out/Default  from the command line. To compile one, pass to Ninja the GN label with no preceding "//" (so for //ui/display:display_unittests use ninja -C out/Default ui/display:display_unittests).



Running

You can run chrome with (substituting "Default" with your build directory):

  • Linux/ChromeOS: out/Default/chrome
  • Windows: out\Default\chrome.exe
  • Mac: out/Default/Chromium.app/Contents/MacOS/Chromium
  • Android
  • iOS

Running tests

Run the test targets listed above in the same manner. You can specify only a certain set of tests to run using --gtest_filter, e.g.

out/Default/unit_tests --gtest_filter="PushClientTest.*"

You can find out more about GoogleTest on the GoogleTest wiki page



Quick start to submit a patch

See contributing code for a more in-depth guide.

git checkout -b my_patch
...write, compile, test...
git commit -a
git cl upload

The git cl upload command will upload your code review to codereview.chromium.org for review.

  • Add reviewers and submit your code for review by clicking on "Publish+Mail Comments" (you can leave the mail message empty).
  • If you have try bot access, you can click "CQ dry run" which will compile and run the tests.
  • Once your patch has been reviewed and marked LGTM ("Looks Good To Me") by an authorized reviewer, click the "Commit" checkbox below the patch to submit to the commit queue.

More help managing your checkout



Getting help

  • Ensure your checkout has been properly updated (git rebase-update).
  • Check you're on a stable, unmodified branch from master (git map-branches).
  • Check you have no uncommitted changes (git status).
  • Join the #chromium IRC channel on irc.freenode.net (see the IRC page for more).
  • Join the chromium-dev Google Group, and other technical discussion groups. These are not support channels for Chrome itself but forums for developers.
  • If you think there is an infrastructure problem that affects many developers, file a new bug with the label 'Infra'. It will be looked at by our infrastructure team.
  • If you work at Google, check out the Googler-specific Chrome documentation.