Revert "Merge remote-tracking branch 'weave/master' into 'weave/aosp-master'"

This reverts commit 43625e411feabd7df36a8768ba8c4eca58a22e4d.

This needs to happen in a staged fashion to avoid build breakages :/

Change-Id: Ie5474629bd301d7af27ee6167988b0381ac73271
Reviewed-on: https://weave-review.googlesource.com/3700
Reviewed-by: Luis Hector Chavez <lhchavez@google.com>
38 files changed
tree: e66b0fb458a71a808fdb7bf880c6b1ed1882bcbe
  1. .clang-format
  2. .gitignore
  3. AUTHORS
  4. Android.mk
  5. CONTRIBUTORS
  6. LICENSE
  7. Makefile
  8. README.md
  9. VERSION
  10. cross.mk
  11. examples/
  12. file_lists.mk
  13. include/
  14. libweave-test.pc.in
  15. libweave.pc.in
  16. src/
  17. tests.mk
  18. tests_schema/
  19. third_party/
README.md

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

mkdir ~/weave
cd ~/weave
repo init -u https://weave.googlesource.com/weave/manifest
repo sync

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

libweave Directory structure

PathDescription
include/Includes to be used by device code
src/Implementation sources
examples/Example of device code
third_party/Dependencies
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 \
  libtool

Prerequisites

Common

  • 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

Compiling

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/libweave.so

Build examples

make all-examples

See the examples README for details.

Cross-compiling

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++ \
  AR=/opt/vendor/bin/arm-linux-ar

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

Testing

Run tests

make test
make export-test

or

make testall

Cross-testing

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