Cómo compilar OpenWeave

La principal cadena de herramientas admitida para compilar OpenWeave es GNU Autotools.

Requisitos del sistema

Todas las plataformas de SO principales admiten la compilación y la compilación cruzada de OpenWeave. Las cadenas de herramientas enumeradas fueron probadas oficialmente por Nest.

Linux

Requisitos: Ubuntu 14.04 (Trusty) es compatible oficialmente, pero debería funcionar cualquier sistema basado en Linux.
Vinculaciones de C/C++, Java y Python
Cadenas de herramientas gcc 4.6.3
Destinos i386-unknown-linux-gnu
x86_64-unknown-linux-gnu
Vinculaciones de C/C++ y Java
Cadenas de herramientas gcc 4.6
Destinos arm-unknown-linux-android
armv7-unknown-linux-android
i386-unknown-linux-android

Mac OS X

Requisitos: XQuartz para clonar un subárbol de directorios con vínculos simbólicos.
Vinculaciones de C/C++ y Cocoa
Destinos armv7-apple-darwin-ios
armv7s-apple-darwin-ios
i386-apple-darwin-ios
Vinculaciones de C/C++ y Python
Cadenas de herramientas LLVM/clang 3.5 (6.0)
Destinos i386-apple-darwin-macosx
x86_64-apple-darwin-macosx

Windows

Requisitos: Cygwin para la compatibilidad con la línea de comandos de Linux.
Vinculaciones de C/C++
Cadenas de herramientas gcc 4.8.3
Destinos i686-pc-cygwin

Embedded

Vinculaciones de C/C++
Cadenas de herramientas gcc 4.4.1
LLVM/clang 3.1
LLVM/clang 3.3
Destinos arm*-unknown-linux*
arm*-unknown-freertos-lwip

Requisitos previos

Además de una cadena de herramientas compatible, te recomendamos instalar los siguientes paquetes y herramientas antes de compilar OpenWeave.

Paquetes

Linux:

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

Linux y Mac OS X:

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

GNU Autotools

OpenWeave depende de GNU Autotools para su sistema de compilación. Debe estar disponible una versión de GNU Autotools para compilar OpenWeave con éxito. Para usar la versión de herramientas automáticas proporcionada por el sistema en Linux, haz lo siguiente:

sudo apt-get install libtool autoconf automake

En el caso de los sistemas en los que las herramientas automáticas de GNU no están disponibles o instalables con facilidad (por ejemplo, Mac OS) o en sistemas en los que la versión proporcionada por el sistema no proporciona una generación de compilaciones sólida y lista para usar, Nest Labs creó un framework de sistema de compilación listo para usar basado en GNU Autotools personalizado. El sistema fija el conjunto de programas utilizados en la generación de compilaciones en una buena versión conocida. Fijar las herramientas en una versión particular también garantiza una deserción relativamente baja en el resultado de las herramientas automáticas, lo que genera una experiencia predecible de desarrollador y asistencia. Se recomienda la compilación de Nest Labs de GNU Autotools para usar con OpenWeave.

Para compilar herramientas automáticas de GNU de Nest Labs:

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

Alegre

Para ejecutar las secuencias de comandos de prueba incluidas en OpenWeave o usar Weave en topologías simuladas, instala Happy en tu máquina Linux. Para obtener más información, consulta Configuración feliz.

Aplicación independiente

Usa la aplicación independiente de OpenWeave predeterminada para un host de desarrollo de servidor o computadora de escritorio.

  1. Clona el repositorio de OpenWeave:
    git clone https://github.com/openweave/openweave-core.git
  2. Compila la aplicación independiente de OpenWeave:
    cd openweave-core
    make -f Makefile-Standalone

Usa la marca help con Makefile-Standalone a fin de saber qué interruptores de compilación están disponibles para la personalización de compilaciones.

make -f Makefile-Standalone help

Por ejemplo, para habilitar el registro y el código de depuración de Weave, haz lo siguiente:

make -f Makefile-Standalone DEBUG=1

Vinculación de proyectos

  1. Clona el repositorio de OpenWeave:
    git clone https://github.com/openweave/openweave-core.git
  2. Configura el entorno de compilación para las herramientas automáticas de GNU:
    cd openweave-core
    ./bootstrap
    ./configure
  3. Compila OpenWeave:
    make all
  4. Almacena en etapa intermedia el resultado en una ubicación separada para la vinculación del proyecto:
    mkdir <openweave-output>
    make DESTDIR=<openweave-output> install

Después de la etapa de pruebas, usa los directorios de <openweave-output> para la vinculación de proyectos:

  • /usr/local/include: Encabezados públicos
  • /usr/local/lib: Bibliotecas

iOS y Android

Si deseas compilar bibliotecas para el vínculo de proyectos de iOS y Android, usa el objeto Makefiles específico de la plataforma:

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

Usa la marca help con Makefile-<platform> a fin de saber qué interruptores de compilación están disponibles para la personalización de compilaciones. Por ejemplo:

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

Configuración

Antes de configurar OpenWeave con varias secuencias de comandos y encabezados, usa las herramientas automáticas para iniciar los archivos de compilación relevantes:

./bootstrap

Este paso se debe realizar una vez, después de confirmar la compra y, luego, en los cambios a configure.ac o Makefile.am. No es necesario repetirlo cuando simplemente se cambian las configuraciones o los objetivos de compilación.

Secuencias de comandos

Usa la marca --help con la secuencia de comandos de configuración incluida para obtener más información sobre las opciones configurables.

./configure --help

Por ejemplo, para configurar OpenWeave sin la compatibilidad con BlueZ:

./configure --without-bluez

Encabezados

El Makefiles incluido usa dos archivos de encabezado que definen constantes en el momento de la compilación:

También se pueden proporcionar encabezados de configuración específicos del proyecto. Coloca estos archivos en el directorio de tu proyecto; no los coloques en el repositorio de OpenWeave. Usa la opción de configuración adecuada para especificar la ubicación de cada archivo durante la configuración:

Archivo de encabezado Opción de configuración
InetProjectConfig.h --with-weave-inet-project-includes=<directory>
WeaveProjectConfig.h --with-weave-project-includes=<directory>

Por ejemplo, para configurar OpenWeave a fin de usar un archivo WeaveProjectConfig.h específico del proyecto ubicado en ~/my-project/headers:

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