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.
