Clone this repo:
  1. c1e1a97 Stop hard coding gtest/gmock things. am: 581f4d4b27 am: d4eabd105d by Dan Albert · 1 year, 7 months ago master n-iot-preview-4 o-iot-preview-5 o-mr1-iot-preview-6 o-preview sdk-release android-n-iot-preview-4 android-n-mr2-preview-1 android-n-mr2-preview-2 android-o-iot-preview-5 android-o-mr1-iot-preview-6 android-o-preview-1 android-o-preview-2 android-o-preview-3 android-o-preview-4 android-wear-o-preview-3 android-wear-o-preview-4
  2. d541929 Stop hard coding gtest/gmock things. am: 581f4d4b27 am: d4eabd105d by Dan Albert · 1 year, 7 months ago
  3. d4eabd1 Stop hard coding gtest/gmock things. am: 581f4d4b27 by Dan Albert · 1 year, 7 months ago android-n-mr1-preview-1 android-n-mr1-preview-2
  4. 581f4d4 Stop hard coding gtest/gmock things. by Dan Albert · 1 year, 7 months ago
  5. 2c02e87 Merge remote-tracking branch \\\\'weave/master\\\\' into \\\\'weave/aosp-master\\\\' am: 7aaba04460 am: 50cf4188d8 am: 9454fc7df0 by Luis Hector Chavez · 1 year, 8 months ago


libWeave is the library with device side implementation of Weave protocol.


Sources are located in git repository at

Install Repo

Make sure you have a bin/ directory in your home directory and that it is included in your path:

mkdir ~/bin

Download the Repo tool and ensure that it is executable:

curl > ~/bin/repo
chmod a+x ~/bin/repo

Checkout code

mkdir ~/weave
cd ~/weave
repo init -u
repo sync

This checks out libweave and its dependencies into the ~/weave directory.

libweave Directory structure

include/Includes to be used by device code
src/Implementation sources
examples/Example of device code
Makefile, *.mk filesBuild files

Quick start on Debian/Ubuntu

Install prerequisites

sudo apt-get update
sudo apt-get install \
  autoconf \
  automake \
  binutils \
  cmake \
  g++ \
  hostapd \
  libavahi-client-dev \
  libcurl4-openssl-dev \
  libevent-dev \
  libexpat1-dev \
  libssl-dev \



  • autoconf
  • automake
  • binutils
  • libtool
  • libexpat1-dev

For tests

  • cmake
  • gtest (included; see third_party/googletest/googletest/)
  • gmock (included; see third_party/googletest/googlemock/)

For examples

  • cmake
  • hostapd
  • libavahi-client-dev
  • libcurl4-openssl-dev
  • libevhtp (included; see third_party/libevhtp/)
  • libevent-dev


From the libweave directory:

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/

Build examples

make all-examples

See the examples README for details.


libweave users

In order to cross-compile, all you need to configure is CC/CXX/AR.

make CC=your-cc CXX=your-cxx AR=your-ar

So if you have a toolchain in a path like /opt/vendor/bin/arm-linux-gcc, do:

make \
  CC=/opt/vendor/bin/arm-linux-gcc \
  CXX=/opt/vendor/bin/arm-linux-g++ \

libweave developers

Note: This is only for developers who are hacking on libweave itself.

The build supports transparently downloading & using a few cross-compilers. Just add cross-<arch> to the command line in addition to the target you want to actually build.

This will cross-compile for an armv7 (hard float) target:

make cross-arm all-libs

This will cross-compile for a mips (little endian) target:

make cross-mipsel all-libs


Run tests

make test
make export-test


make testall


The build supports using qemu to run non-native tests.

This will run armv7 tests through qemu:

make cross-arm testall

Making changes

The Android Developing site has a lot of good tips for working with git and repo in general. The tips below are meant as a quick cheat sheet rather than diving deep into relevant topics.

Configure git

Make sure to have correct user in local or global config e.g.:

git config --local "User Name"
git config --local

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.