| Overview | 
 | -------- | 
 | libWeave is the library with device side implementation of Weave | 
 | protocol. | 
 |  | 
 | Sources | 
 | ------- | 
 | Sources are located in git repository at | 
 | https://weave.googlesource.com/weave/libweave/ | 
 |  | 
 |  | 
 | Install Repo | 
 | ------- | 
 | 1. Make sure you have a bin/ directory in your home directory | 
 | and that it is included in your path: | 
 |  | 
 |     mkdir ~/bin | 
 |     PATH=~/bin:$PATH | 
 |  | 
 | 2. Download the Repo tool and ensure that it is executable: | 
 |  | 
 |     curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo | 
 |     chmod a+x ~/bin/repo | 
 |  | 
 | Checkout code | 
 | ------- | 
 |     repo init -u https://weave.googlesource.com/weave/manifest | 
 |     repo sync | 
 |  | 
 | Directory structure | 
 | ------------------- | 
 | Includes to be used by device code: | 
 |   include/ | 
 |  | 
 | Implementation sources: | 
 |   src/ | 
 |  | 
 | Example of device code: | 
 |   examples/ | 
 |  | 
 | Dependencies: | 
 |   third_party/ | 
 |  | 
 | Build files: | 
 |   libweave_standalone.gyp | 
 |   libweave_common.gypi | 
 |  | 
 | Quick start on Debian/Ubuntu | 
 | ---------------------------- | 
 |  | 
 | Install prerequisites: | 
 |  | 
 |   examples/prerequisites.sh | 
 |  | 
 | Build library, tests, run tests, build example: | 
 |  | 
 |   examples/build.sh | 
 |  | 
 | Execute example (check examples/daemon/README for details): | 
 |  | 
 |   sudo out/Debug/weave_daemon | 
 |  | 
 |  | 
 | Prerequisites | 
 | ------------- | 
 | Common: | 
 |  | 
 |   autoconf | 
 |   automake | 
 |   binutils | 
 |   libtool | 
 |   gyp | 
 |   libexpat1-dev | 
 |  | 
 | For tests: | 
 |  | 
 |   gtest | 
 |   gmock | 
 |  | 
 | For examples: | 
 |  | 
 |   hostapd | 
 |   libavahi-client-dev | 
 |   libcurl4-openssl-dev | 
 |   libevent 2.1.x-alpha | 
 |  | 
 |  | 
 | Compiling | 
 | --------- | 
 | Everywhere below Debug can be replaced with Release. | 
 |  | 
 | Generate build files: | 
 |  | 
 |   gyp -I libweave_common.gypi --toplevel-dir=. --depth=. \ | 
 |       -f make libweave_standalone.gyp | 
 |  | 
 | Build library with tests: | 
 |  | 
 |   make | 
 |  | 
 | Build library only: | 
 |  | 
 |   make libweave | 
 |  | 
 | Testing | 
 | ------- | 
 | Run unittests tests: | 
 |  | 
 |   out/Debug/libweave_testrunner | 
 |   out/Debug/libweave_exports_testrunner | 
 |  | 
 | Making changes | 
 | -------------- | 
 | Make sure to have correct user in local or global config e.g.: | 
 |  | 
 |   git config --local user.name "John Doe" | 
 |   git config --local user.email johndoe@example.com | 
 |  | 
 | Start local branch | 
 |  | 
 |   repo start <branch name> . | 
 |  | 
 | Edit code and commit locally e.g.: | 
 |  | 
 |   git commit -a -v | 
 |  | 
 | Upload CL: | 
 |  | 
 |   repo upload . | 
 |  | 
 | Go to the url from the output of "repo upload" and add reviewers. |