blob: fc042b78e763f7ec40777721c8f8224fab73a0a0 [file] [log] [blame] [view]
# 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
Make sure you have a bin/ directory in your home directory
and that it is included in your path:
```
mkdir ~/bin
PATH=~/bin:$PATH
```
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
| Path | Description |
|--------------------------|------------------------------------|
| include/ | Includes to be used by device code |
| src/ | Implementation sources |
| examples/ | Example of device code |
| third_party/ | Dependencies |
| Makefile, \*.mk files | Build files |
# Quick start on Debian/Ubuntu
### Install prerequisites
```
sudo apt-get update
sudo apt-get install autoconf automake binutils g++ hostapd libavahi-client-dev libcurl4-openssl-dev libexpat1-dev libnl-3-dev libnl-route-3-dev libssl-dev libtool
```
# Prerequisites
### Common
- autoconf
- automake
- binutils
- libtool
- libexpat1-dev
### For tests
- gtest (included; see third_party/get_gtest.sh)
- gmock (included; see third_party/get_gtest.sh)
### For examples
- hostapd
- libavahi-client-dev
- libcurl4-openssl-dev
- libevent 2.1.x-alpha (included; see third_party/get_libevent.sh)
# Compiling
The `make --jobs/-j` flag is encouraged, to speed up build time. For example
```
make all -j
```
### Build library
```
make
```
or
```
make out/Debug/libweave.so
```
### Build examples
```
make all-examples
```
See [the examples README](/examples/daemon/README.md) for details.
# Testing
### Run tests
```
make test
make export-test
```
or
```
make testall
```
# Making changes
### Configure git
Make sure to have correct user in local or global config e.g.:
```
git config --local user.name "User Name"
git config --local user.email user.name@example.com
```
### Start local branch
```
repo start <branch name> .
```
### Edit code and commit locally e.g.
```
git commit -a -v
```
### Upload CL
```
repo upload .
```
### Request code review
Go to the url from the output of "repo upload" and add reviewers.