Criar o OpenWeave

O principal conjunto de ferramentas compatível para a criação do OpenWeave é o GNU Autotools.

Requisitos do sistema

Todas as principais plataformas de SO oferecem suporte à criação e compilação cruzada do OpenWeave. Os conjuntos de ferramentas listados foram testados oficialmente pelo Nest.

Linux

Requisitos: o Ubuntu 14.04 (Trusty) é oficialmente compatível, mas qualquer sistema semelhante baseado em Linux deve funcionar.
Vinculações C/C++, Java e Python
Conjuntos de ferramentas GCC 4.6.3
Destinos i386-unknown-linux-gnu
x86_64-unknown-linux-gnu
C/C++, vinculações Java
Conjuntos de ferramentas gcc 4,6
Destinos arm-unknown-linux-android
armv7-unknown-linux-android
i386-unknown-linux-android

Mac OS X

Requisitos: XQuartz para clonar uma subárvore de diretórios para outra com links simbólicos.
C/C++, vinculações de Cocoa
Destinos armv7-apple-darwin-ios
armv7s-apple-darwin-ios
i386-apple-darwin-ios
C/C++, vinculações Python
Conjuntos de ferramentas LLVM/clang 3.5 (6.0)
Destinos i386-apple-darwin-macosx
x86_64-apple-darwin-macosx

Windows

Requisitos: Cygwin para ter suporte à linha de comando do Linux.
Vinculações C/C++
Conjuntos de ferramentas GCC 4.8.3
Destinos i686-pc-cygwin

Embedded

Vinculações C/C++
Conjuntos de ferramentas gcc 4.4.1
LLVM/clang 3.1
LLVM/clang 3.3
Destinos arm*-unknown-linux*
arm*-unknown-freertos-lwip

Prerequisites

Além de um conjunto de ferramentas compatível, recomendamos a instalação dos pacotes e ferramentas a seguir antes da criação do OpenWeave.

Entrega de pacotes

Linux:

sudo apt-get install python-pip python-setuptools bridge-utils /
               libglib2.0-dev libdbus-1-dev libudev-dev /
               libical-dev libreadline-dev

Linux e Mac OS X:

pip install --user google-cloud googleapis-common-protos grpc protobuf pycryptodomex
sudo cpan -i Text::Template

Ferramentas Auto GNU

O OpenWeave depende do GNU Autotools para o sistema de compilação dele. Uma versão do GNU Autotools precisa estar disponível para criar o OpenWeave. Para usar a versão fornecida pelo sistema de ferramentas automáticas no Linux:

sudo apt-get install libtool autoconf automake

Para sistemas em que o GNU Autotools não está disponível ou não pode ser instalado (por exemplo, Mac OS) ou em sistemas em que a versão fornecida pelo sistema não fornece uma geração sólida de compilação pronta para uso, o Nest Labs criou um framework de sistema de compilação pronto para uso personalizado, baseado no GNU Autotools. O sistema fixa o conjunto de programas usados na geração do build em uma versão válida conhecida. Fixar as ferramentas em uma versão específica também garante um desligamento relativamente baixo na saída de ferramentas automáticas, levando a uma experiência previsível de suporte e desenvolvimento. A versão do Nest Labs do GNU Autotools é recomendada para uso com o OpenWeave.

Para criar ferramentas automáticas do Nest Labs GNU:

git clone https://github.com/openweave/openweave-core.git
cd openweave-core
make -C third_party/nlbuild-autotools/repo/ tools

Alegre

Para executar os scripts de teste incluídos no OpenWeave ou usar o Weave em topologias simuladas, instale o Happy na máquina Linux. Consulte Configuração feliz para mais informações.

App independente

Use o aplicativo padrão OpenWeave Standalone para um host de desenvolvimento de computador ou servidor.

  1. Clone o repositório do OpenWeave:
    git clone https://github.com/openweave/openweave-core.git
  2. Crie o aplicativo OpenWeave Standalone:
    cd openweave-core
    make -f Makefile-Standalone

Use a sinalização help com Makefile-Standalone para saber quais interruptores de compilação estão disponíveis para personalização de builds.

make -f Makefile-Standalone help

Por exemplo, para ativar a geração de registros e o código de depuração do Weave:

make -f Makefile-Standalone DEBUG=1

Vinculação de projetos

  1. Clone o repositório do OpenWeave:
    git clone https://github.com/openweave/openweave-core.git
  2. Configure o ambiente de build do GNU Autotools:
    cd openweave-core
    ./bootstrap
    ./configure
  3. Crie o OpenWeave:
    make all
  4. Prepare a saída para um local separado para a vinculação do projeto:
    mkdir <openweave-output>
    make DESTDIR=<openweave-output> install

Após o preparo, use os diretórios em <openweave-output> para vincular o projeto:

  • /usr/local/include: cabeçalhos públicos
  • /usr/local/lib: bibliotecas

Android e iOS

Para criar bibliotecas para vinculação de projetos para Android e iOS, use o Makefiles específico da plataforma:

make -f Makefile-Android
make -f Makefile-iOS

Use a sinalização help com Makefile-<platform> para saber quais interruptores de compilação estão disponíveis para personalização de builds. Exemplo:

make -f Makefile-Android help
make -f Makefile-iOS help

Configuração

Antes de configurar o OpenWeave com vários scripts e cabeçalhos, use as ferramentas automáticas para inicializar os arquivos de compilação relevantes:

./bootstrap

Essa etapa precisa ser realizada uma vez, após uma finalização da compra em árvore e, posteriormente, em todas as mudanças em configure.ac ou Makefile.am. Ele não precisa ser repetido ao simplesmente alterar as configurações ou os destinos do build.

Scripts

Use a sinalização --help com o script de configuração incluído para saber mais sobre as opções configuráveis.

./configure --help

Por exemplo, para configurar o OpenWeave sem o suporte da BlueZ:

./configure --without-bluez

Cabeçalhos

Os Makefiles incluídos usam dois arquivos principais que definem constantes no momento da compilação:

Também é possível fornecer cabeçalhos de configuração específicos do projeto. Coloque esses arquivos no diretório do projeto, não os coloque no repositório do OpenWeave. Use a opção de configuração apropriada para especificar a localização de cada arquivo durante a configuração:

Arquivo principal Opção de configuração
InetProjectConfig.h --with-weave-inet-project-includes=<directory>
WeaveProjectConfig.h --with-weave-project-includes=<directory>

Por exemplo, para configurar o OpenWeave para usar um arquivo WeaveProjectConfig.h específico do projeto localizado em ~/my-project/headers:

./configure --with-weave-project-includes=~/my-project/headers