167 lines
2.6 KiB
Markdown
167 lines
2.6 KiB
Markdown
# 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 \
|
|
libevent-dev \
|
|
libexpat1-dev \
|
|
libnl-3-dev \
|
|
libnl-route-3-dev \
|
|
libssl-dev \
|
|
libtool
|
|
```
|
|
|
|
# Prerequisites
|
|
|
|
### Common
|
|
|
|
- autoconf
|
|
- automake
|
|
- binutils
|
|
- libtool
|
|
- libexpat1-dev
|
|
|
|
### For tests
|
|
|
|
- cmake
|
|
- gtest (included; see third_party/get_gtest.sh)
|
|
- gmock (included; see third_party/get_gtest.sh)
|
|
|
|
### For examples
|
|
|
|
- cmake
|
|
- hostapd
|
|
- libavahi-client-dev
|
|
- libcurl4-openssl-dev
|
|
- libevhtp (included; see third_party/get_libevhtp.sh)
|
|
- libevent-dev
|
|
|
|
|
|
# Compiling
|
|
|
|
The `make --jobs/-j` flag is encouraged, to speed up build time. For example
|
|
|
|
```
|
|
make -j
|
|
```
|
|
|
|
which happens to be the same as
|
|
|
|
```
|
|
make all -j
|
|
````
|
|
|
|
### Build library
|
|
|
|
```
|
|
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.
|