Créer OpenWeave

La chaîne d'outils principale compatible pour la création d'OpenWeave est GNU Autotools.

Configuration système requise

Toutes les principales plates-formes d'OS permettent de compiler et d'effectuer une compilation croisée d'OpenWeave. Les chaînes d'outils répertoriées ont été officiellement testées par Nest.

Linux

Configuration requise:Ubuntu 14.04 (Trusty) est officiellement compatible, mais tout système Linux similaire devrait fonctionner.
C/C++, Java, liaisons Python
Chaînes d'outils gcc 4.6.3
Cibles i386-unknown-linux-gnu
x86_64-unknown-linux-gnu
C/C++, liaisons Java
Chaînes d'outils GCC 4.6
Cibles arm-unknown-linux-android
armv7-unknown-linux-android
i386-unknown-linux-android

Mac OS X

Conditions requises:XQuartz pour cloner une sous-arborescence d'un répertoire à un autre à l'aide de liens symboliques.
C/C++, liaisons Cocoa
Cibles armv7-apple-darwin-ios
armv7s-apple-darwin-ios
i386-apple-darwin-ios
C/C++, liaisons Python
Chaînes d'outils LLVM/clang 3.5 (6.0)
Cibles i386-pomme-darwin-macosx
x86_64-apple-darwin-macosx

Windows

Configuration requise : Cygwin pour la compatibilité avec les lignes de commande Linux.
Liaisons C/C++
Chaînes d'outils gcc 4.8.3
Cibles I686-PC-cygwin

Intégrée

Liaisons C/C++
Chaînes d'outils gcc 4.4.1
LLVM/clang 3.1
LLVM/clang 3.3
Cibles arm*-unknown-linux*
arm*-unknown-freertos-lwip

Prerequisites

En plus d'une chaîne d'outils compatible, nous vous recommandons d'installer les packages et outils suivants avant de créer OpenWeave.

Colis

Linux :

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

Linux et Mac OS X:

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

Outils automatiques GNU

OpenWeave dépend des outils GNU Autotools pour son système de compilation. Une version de GNU Autotools doit être disponible pour créer OpenWeave. Pour utiliser la version des outils automatiques fournie par le système sous Linux:

sudo apt-get install libtool autoconf automake

Pour les systèmes sur lesquels les outils automatiques GNU ne sont pas facilement accessibles ou installables (par exemple, Mac OS) ou pour les systèmes sur lesquels la version fournie par le système ne propose pas de génération d'applications robuste, Nest Labs a créé un framework système personnalisé de compilation, basé sur GNU Autotools. Le système épingle l'ensemble des programmes utilisés pour générer la compilation sur une version connue. L'épinglage des outils à une version particulière permet également de réduire les risques de perte d'utilisateurs dans la sortie des outils automatiques, ce qui entraîne une expérience prévisible avec les développeurs et les équipes d'assistance. La compilation de Nest Labs de GNU Autotools est recommandée pour l'utilisation d'OpenWeave.

Pour créer les outils automatiques GNU Nest Labs:

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

Sourire

Pour exécuter les scripts de test inclus dans OpenWeave ou pour utiliser Weave dans des simulations de topologie, installez Happy sur votre machine Linux. Pour en savoir plus, consultez la section Bonne configuration.

Application autonome

Utilisez l'application OpenWeave autonome par défaut pour un hôte de développement de serveur ou de bureau.

  1. Clonez le dépôt OpenWeave :
    git clone https://github.com/openweave/openweave-core.git
  2. Créez l'application OpenWeave autonome :
    cd openweave-core
    make -f Makefile-Standalone

Utilisez l'option help avec Makefile-Standalone pour découvrir les commutateurs disponibles pour la personnalisation de la compilation.

make -f Makefile-Standalone help

Par exemple, pour activer le journal et le code de débogage Weave:

make -f Makefile-Standalone DEBUG=1

Association de projets

  1. Clonez le dépôt OpenWeave :
    git clone https://github.com/openweave/openweave-core.git
  2. Configurez l'environnement de compilation pour les outils automatiques GNU :
    cd openweave-core
    ./bootstrap
    ./configure
  3. Créez OpenWeave :
    make all
  4. Placez le résultat dans un emplacement distinct pour l'association de projet :
    mkdir <openweave-output>
    make DESTDIR=<openweave-output> install

Après la préproduction, utilisez les répertoires sous <openweave-output> pour associer le projet:

  • /usr/local/include — en-têtes publics
  • /usr/local/lib : bibliothèques

Android et iOS

Pour créer des bibliothèques pour l'association de projets Android et iOS, utilisez le fichier Makefiles spécifique à la plate-forme:

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

Utilisez l'option help avec Makefile-<platform> pour découvrir les commutateurs disponibles pour la personnalisation de la compilation. Exemple :

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

Configuration

Avant de configurer OpenWeave avec différents scripts et en-têtes, utilisez les outils automatiques pour amorcer les fichiers de compilation appropriés:

./bootstrap

Cette étape doit être effectuée une fois, après le règlement d'un arbre, puis sur toute modification apportée à configure.ac ou Makefile.am. Il n'est pas nécessaire de le répéter lorsque vous modifiez simplement les configurations ou les cibles de compilation.

Scripts

Utilisez l'option --help avec le script de configuration inclus pour en savoir plus sur les options configurables.

./configure --help

Par exemple, pour configurer OpenWeave sans prise en charge BlueZ:

./configure --without-bluez

En-têtes

La Makefiles incluse utilise deux fichiers d'en-tête qui définissent des constantes au moment de la compilation:

Vous pouvez également fournir des en-têtes de configuration spécifiques au projet. Placez ces fichiers dans votre répertoire de projet et ne les placez pas dans le dépôt OpenWeave. Utilisez l'option de configuration appropriée pour spécifier l'emplacement de chaque fichier pendant la configuration:

Fichier d'en-tête Option de configuration
InetProjectConfig.h --with-weave-inet-project-includes=<directory>
WeaveProjectConfig.h --with-weave-project-includes=<directory>

Par exemple, pour configurer OpenWeave afin d'utiliser un fichier WeaveProjectConfig.h spécifique à un projet et situé dans ~/my-project/headers :

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