Introduction

This page describes the structure of source code of the GCC-based Native Client toolchain. The sources are based on stable releases of external packages: Binutils, GCC, Newlib, GDB, GlibC plus a subset of linux kernel headers. The rest of the page addresses the structure of the source repositories, the ways to synchronize patches across them and the build script.

Prerequisites

We recommend hacking the toolchain on Linux. After each commit the toolchain tarballs are built on buildbots. On Windows the build is quite slow (up to 4 hours, compared to 10-40 min on Linux) mostly due to the poor performance of fork() on Cygwin.

Structure of the Git repositories

Branches

The branch vendor-src keeps the sources from the original tarball unchanged. From time to time the master branch should be rebased on top of newer revisions of the vendor-src branch. Once the master branch is rebased, the old branch should be kept from garbage collection so that old commits can be found by hashes (required to be able to reproduce old builds).

Code reviews

Follow the Git Cookbook for sending your commit for review. Recommendations: Method #1 is the easiest. Instead of "git cl" you can use git-cl from depot_tools. In the simplest case you may: