|  | 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. |