diff --git a/.travis.yml b/.travis.yml
index 9f5ecb9..f8433a7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,37 +13,40 @@ env:
- TARGET=java
- TARGET=node4
- TARGET=node5
- - TARGET=python2 JSONPLAT=ON
- - TARGET=python3 JSONPLAT=ON
- - TARGET=java JSONPLAT=ON
- - TARGET=node4 JSONPLAT=ON
- - TARGET=node5 JSONPLAT=ON
- - TARGET=python2 BUILDARCH=MOCK
- - TARGET=python3 BUILDARCH=MOCK
- - TARGET=java BUILDARCH=MOCK
- - TARGET=node4 BUILDARCH=MOCK
- - TARGET=node5 BUILDARCH=MOCK
+ - TARGET=android
- TARGET=sonar-scan
+ - JSONPLAT=ON TARGET=python2
+ - JSONPLAT=ON TARGET=python3
+ - JSONPLAT=ON TARGET=java
+ - JSONPLAT=ON TARGET=node4
+ - JSONPLAT=ON TARGET=node5
+ - BUILDARCH=MOCK TARGET=python2
+ - BUILDARCH=MOCK TARGET=python3
+ - BUILDARCH=MOCK TARGET=java
+ - BUILDARCH=MOCK TARGET=node4
+ - BUILDARCH=MOCK TARGET=node5
matrix:
exclude:
- compiler: clang
env: TARGET=java
- compiler: clang
- env: TARGET=java JSONPLAT=ON
+ env: JSONPLAT=ON TARGET=java
- compiler: clang
- env: TARGET=java BUILDARCH=MOCK
+ env: BUILDARCH=MOCK TARGET=java
+ - compiler: gcc
+ env: TARGET=android
- compiler: clang
env: TARGET=sonar-scan
allow_failures:
- compiler: gcc
- env: TARGET=node4 JSONPLAT=ON
+ env: JSONPLAT=ON TARGET=node4
- compiler: clang
- env: TARGET=node4 JSONPLAT=ON
+ env: JSONPLAT=ON TARGET=node4
- compiler: gcc
- env: TARGET=node5 JSONPLAT=ON
+ env: JSONPLAT=ON TARGET=node5
- compiler: clang
- env: TARGET=node5 JSONPLAT=ON
+ env: JSONPLAT=ON TARGET=node5
services:
- docker
@@ -59,6 +62,8 @@ before_script:
- if [ "$CXX" == "g++" ]; then export CXX=g++-4.8; fi
- if [ "$CC" == "clang" ]; then export CC=clang-3.8; fi
- if [ "$CXX" == "clang++" ]; then export CXX=clang++-3.8; fi
+ - docker-compose build base
+ - if [ "$TARGET" == "android" ]; then docker-compose build java; fi
- docker-compose build ${TARGET}
script:
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index ce7dfa7..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,116 +0,0 @@
-FROM ubuntu:16.04
-
-ENV DEBIAN_FRONTEND noninteractive
-
-# Update apt-get
-RUN apt-get -y update && \
- # Install apt-utils
- apt-get -y --no-install-recommends install apt-utils && \
- # Main Build Dependencies
- apt-get -y --no-install-recommends install git build-essential cmake clang-3.8 g++-4.8 wget unzip libpcre3 libpcre3-dev \
- # Docs Build Dependencies
- python-sphinx doxygen graphviz \
- # Python Build Dependencies
- python python-dev python3 python3-dev \
- # Java Build Dependencies
- default-jre default-jdk \
- # Json Platform Build Dependencies
- pkg-config libjson0 libjson0-dev
-
-# Swig Build Dependencies
-RUN wget http://iotdk.intel.com/misc/tr/swig-3.0.10.tar.gz && \
- tar xf swig-3.0.10.tar.gz && cd swig-3.0.10 && \
- ./configure --prefix=/usr/ && make && make install && cd ..
-
-# Node.js Build Dependencies
-RUN wget -q -O - https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
-
-# Static code analysis scanner
-ENV SONAR_DIR /usr/sonar
-ENV SONAR_VER "3.0.3.778"
-WORKDIR $SONAR_DIR
-
-RUN wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_VER}-linux.zip && \
- wget https://sonarqube.com/static/cpp/build-wrapper-linux-x86.zip && \
- unzip sonar-scanner-cli-${SONAR_VER}-linux.zip && \
- unzip build-wrapper-linux-x86.zip && \
- rm sonar-scanner-cli-${SONAR_VER}-linux.zip build-wrapper-linux-x86.zip
-
-ENV PATH $SONAR_DIR/sonar-scanner-${SONAR_VER}-linux/bin:$SONAR_DIR/build-wrapper-linux-x86:$PATH
-
-# Set Workdir
-ARG MRAA_SRC_DIR
-WORKDIR $MRAA_SRC_DIR
-
-# Configure Build Arguments
-ARG BUILDARCH
-ARG BUILDDOC
-ARG BUILDSWIG
-ARG BUILDSWIGPYTHON
-ARG BUILDSWIGNODE
-ARG BUILDSWIGJAVA
-ARG USBPLAT=OFF
-ARG FIRMATA=OFF
-ARG ONEWIRE=OFF
-ARG JSONPLAT
-ARG IMRAA=OFF
-ARG FTDI4222=OFF
-ARG IPK=OFF
-ARG RPM=OFF
-ARG ENABLEEXAMPLES
-ARG INSTALLGPIOTOOL=OFF
-ARG INSTALLTOOLS=OFF
-ARG BUILDTESTS
-ARG CC
-ARG CXX
-ARG NODE_VERSION
-ARG USEPYTHON3TESTS
-
-# Configure Build Environment
-ENV NVM_DIR /root/.nvm
-ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
-ENV CC $CC
-ENV CXX $CXX
-RUN . $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm use $NODE_VERSION && \
- npm install -g node-gyp && node-gyp install
-
-# Copy sources
-COPY . .
-
-# Update Submodule
-RUN git submodule update --init --recursive
-
-# Fix line ending issue in src/doxy2swig.py and do it executable
-RUN tr -d "\r" < src/doxy2swig.py > src/_doxy2swig.py && \
- mv src/_doxy2swig.py src/doxy2swig.py && \
- chmod u+x src/doxy2swig.py
-
-# Change Workdir to build directory
-WORKDIR $MRAA_SRC_DIR/build
-
-# Run cmake
-RUN . $NVM_DIR/nvm.sh && cmake \
- -DSWIG_EXECUTABLE=/usr/bin/swig \
- -DSWIG_DIR:PATH=/usr/share/swig/3.0.10/ \
- -DBUILDARCH=$BUILDARCH \
- -DBUILDDOC=$BUILDDOC \
- -DBUILDSWIG=$BUILDSWIG \
- -DBUILDSWIGPYTHON=$BUILDSWIGPYTHON \
- -DBUILDSWIGNODE=$BUILDSWIGNODE \
- -DBUILDSWIGJAVA=$BUILDSWIGJAVA \
- -DUSBPLAT=$USBPLAT \
- -DFIRMATA=$FIRMATA \
- -DONEWIRE=$ONEWIRE \
- -DJSONPLAT=$JSONPLAT \
- -DIMRAA=$IMRAA \
- -DFTDI4222=$FTDI4222 \
- -DIPK=$IPK \
- -DRPM=$RPM \
- -DENABLEEXAMPLES=$ENABLEEXAMPLES \
- -DINSTALLGPIOTOOL=$INSTALLGPIOTOOL \
- -DINSTALLTOOLS=$INSTALLTOOLS \
- -DBUILDTESTS=$BUILDTESTS \
- -DUSEPYTHON3TESTS=$USEPYTHON3TESTS \
- ..
-
-CMD make
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 3122a88..716536c 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -2,41 +2,63 @@ version: '2.1'
services:
- main:
+ base:
+ image: mraa-base
build:
context: .
- dockerfile: Dockerfile
+ dockerfile: docker/Dockerfile.base
args:
- http_proxy
- https_proxy
- no_proxy
- - BUILDDOC=${BUILDDOC:-OFF}
- - BUILDSWIG=${BUILDSWIG:-OFF}
- - BUILDSWIGPYTHON=${BUILDSWIGPYTHON:-OFF}
- - BUILDSWIGJAVA=${BUILDSWIGJAVA:-OFF}
- - BUILDSWIGNODE=${BUILDSWIGNODE:-OFF}
- - USBPLAT=${USBPLAT:-OFF}
- - FIRMATA=${FIRMATA:-OFF}
- - ONEWIRE=${ONEWIRE:-OFF}
- - JSONPLAT=${JSONPLAT:-OFF}
- - IMRAA=${IMRAA:-OFF}
- - FTDI4222=${FTDI4222:-OFF}
- - IPK=${IPK:-OFF}
- - RPM=${RPM:-OFF}
- - ENABLEEXAMPLES=${ENABLEEXAMPLES:-ON}
- - INSTALLGPIOTOOL=${INSTALLGPIOTOOL:-OFF}
- - INSTALLTOOLS=${INSTALLTOOLS:-OFF}
- - BUILDTESTS=${BUILDTESTS:-ON}
- - CC=${CC:-clang-3.8}
- - CXX=${CXX:-clang++-3.8}
- - NODE_VERSION=${NODE_VERSION:-v4.4.7}
- - BUILDARCH=${BUILDARCH}
- - MRAA_SRC_DIR=${MRAA_SRC_DIR:-/usr/src/app}
environment:
- http_proxy
- https_proxy
- no_proxy
- - MRAA_SRC_DIR=/usr/src/app
+ - BUILDDOC=${BUILDDOC:-OFF}
+ - BUILDSWIG=${BUILDSWIG:-OFF}
+ - BUILDSWIGPYTHON=${BUILDSWIGPYTHON:-OFF}
+ - BUILDTESTS=${BUILDTESTS:-ON}
+ - USEPYTHON3TESTS=${USEPYTHON3TESTS:-OFF}
+ - BUILDSWIGJAVA=${BUILDSWIGJAVA:-OFF}
+ - BUILDSWIGNODE=${BUILDSWIGNODE:-OFF}
+ - USBPLAT=${USBPLAT:-OFF}
+ - FIRMATA=${FIRMATA:-OFF}
+ - ONEWIRE=${ONEWIRE:-ON}
+ - JSONPLAT=${JSONPLAT:-OFF}
+ - IMRAA=${IMRAA:-OFF}
+ - FTDI4222=${FTDI4222:-OFF}
+ - IPK=${IPK:-OFF}
+ - RPM=${RPM:-OFF}
+ - ENABLEEXAMPLES=${ENABLEEXAMPLES:-ON}
+ - INSTALLGPIOTOOL=${INSTALLGPIOTOOL:-OFF}
+ - INSTALLTOOLS=${INSTALLTOOLS:-ON}
+ - CC=${CC:-clang-3.8}
+ - CXX=${CXX:-clang++-3.8}
+ - BUILDARCH=${BUILDARCH}
+ volumes:
+ - .:${MRAA_SRC_DIR:-/usr/src/app}
+
+ doc:
+ extends: base
+ environment:
+ - BUILDDOC=ON
+ command: bash -c "./scripts/run-cmake.sh && make -Cbuild doc"
+
+ sonar-scan:
+ extends: base
+ image: mraa-sonar
+ build:
+ dockerfile: docker/Dockerfile.sonar
+ args:
+ - NODE_VERSION=v5.12.0
+ environment:
+ - BUILDSWIG=ON
+ - BUILDSWIGPYTHON=ON
+ - BUILDSWIGNODE=ON
+ - BUILDSWIGJAVA=ON
+ - ONEWIRE=ON
+ - JSONPLAT=ON
- SONAR_TOKEN
- SONAR_ORG
- SONAR_PROJ_KEY
@@ -45,62 +67,58 @@ services:
- TRAVIS_REPO_SLUG
- TRAVIS_PULL_REQUEST_SLUG
- GITHUB_TOKEN
-
- doc:
- extends: main
- build:
- args:
- - BUILDDOC=ON
- command: bash -c "make doc"
+ command: bash -c "./scripts/run-cmake.sh && cd build && ./../scripts/sonar-scan.sh"
python2:
- extends: main
+ extends: base
+ image: mraa-python
build:
- args:
- - BUILDSWIG=ON
- - BUILDSWIGPYTHON=ON
- command: bash -c "make _python2-mraa && ctest --output-on-failure"
+ dockerfile: docker/Dockerfile.python
+ environment:
+ - BUILDSWIG=ON
+ - BUILDSWIGPYTHON=ON
+ command: bash -c "./scripts/run-cmake.sh && cd build && make _python2-mraa && ctest --output-on-failure"
python3:
extends: python2
- build:
- args:
- - USEPYTHON3TESTS=ON
- command: bash -c "make _python3-mraa && ctest --output-on-failure"
+ environment:
+ - USEPYTHON3TESTS=ON
+ command: bash -c "./scripts/run-cmake.sh && cd build && make _python3-mraa && ctest --output-on-failure"
java:
- extends: main
+ extends: base
+ image: mraa-java
build:
- args:
- - BUILDSWIG=ON
- - BUILDSWIGJAVA=ON
- - CC=gcc-4.8
- - CXX=g++-4.8
- command: bash -c "make mraajava && ctest --output-on-failure"
+ dockerfile: docker/Dockerfile.java
+ environment:
+ - BUILDSWIG=ON
+ - BUILDSWIGJAVA=ON
+ command: bash -c "./scripts/run-cmake.sh && cd build && make mraajava && ctest --output-on-failure"
+
+ android:
+ extends: java
+ image: mraa-android
+ build:
+ dockerfile: docker/Dockerfile.android
+ environment:
+ - BUILDARCH=PERIPHERALMAN
+ command: bash -c "./scripts/build-android.sh"
node4:
- extends: main
+ extends: base
+ image: mraa-node4
build:
+ dockerfile: docker/Dockerfile.node
args:
- - BUILDSWIG=ON
- - BUILDSWIGNODE=ON
- - NODE_VERSION=v4.4.7
- command: bash -c "source /root/.nvm/nvm.sh && make npmpkg && cd .. && node-gyp configure && node-gyp build && npm test"
+ - NODE_VERSION=v4.4.7
+ environment:
+ - BUILDSWIG=ON
+ - BUILDSWIGNODE=ON
+ command: bash -c "./scripts/run-cmake.sh && make -Cbuild npmpkg && node-gyp configure && node-gyp build && npm test"
node5:
extends: node4
+ image: mraa-node5
build:
args:
- NODE_VERSION=v5.12.0
-
- sonar-scan:
- extends: main
- build:
- args:
- - BUILDSWIG=ON
- - BUILDSWIGPYTHON=ON
- - BUILDSWIGNODE=ON
- - BUILDSWIGJAVA=ON
- - ONEWIRE=ON
- - JSONPLAT=ON
- command: bash -c "$${MRAA_SRC_DIR}/sonar-scan.sh"
diff --git a/docker/Dockerfile.android b/docker/Dockerfile.android
new file mode 100644
index 0000000..579da2b
--- /dev/null
+++ b/docker/Dockerfile.android
@@ -0,0 +1,29 @@
+FROM mraa-java
+
+WORKDIR /opt
+
+# Install CMake 3.6.2
+RUN wget -q https://cmake.org/files/v3.6/cmake-3.6.2-Linux-x86_64.sh && \
+ mkdir /opt/cmake && \
+ sh /opt/cmake-3.6.2-Linux-x86_64.sh --prefix=/opt/cmake --skip-license && \
+ ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake && \
+ cmake --version && \
+ rm -fr /opt/cmake-3.6.2-Linux-x86_64.sh
+
+# Android NDK build Dependencies
+RUN wget -q https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip && \
+ unzip -qq android-ndk-r14b-linux-x86_64.zip && \
+ rm -fr android-ndk-r14b-linux-x86_64.zip
+ENV NDK_HOME /opt/android-ndk-r14b
+ENV NDK_MODULE_PATH /opt/android-ndk-r14b
+
+# Android Things library
+RUN wget -q https://github.com/androidthings/native-libandroidthings/archive/0.4.1-devpreview.tar.gz && \
+ tar xf 0.4.1-devpreview.tar.gz && \
+ rm -fr /opt/0.4.1-devpreview.tar.gz
+ENV ANDROIDTHINGS_NATIVE_LIB /opt/native-libandroidthings-0.4.1-devpreview
+
+# Set Workdir
+WORKDIR $MRAA_SRC_DIR
+
+CMD bash
diff --git a/docker/Dockerfile.base b/docker/Dockerfile.base
new file mode 100644
index 0000000..464f624
--- /dev/null
+++ b/docker/Dockerfile.base
@@ -0,0 +1,43 @@
+FROM ubuntu:16.04
+
+ENV DEBIAN_FRONTEND noninteractive
+
+# Update apt-get
+RUN apt-get -y update && \
+ # Install apt-utils
+ apt-get -y --no-install-recommends install apt-utils && \
+ # Main Build Dependencies
+ apt-get -y --no-install-recommends install git build-essential cmake clang-3.8 \
+ g++-4.8 wget ca-certificates libpcre3 libpcre3-dev python unzip \
+ # Docs Build Dependencies
+ python-sphinx doxygen graphviz \
+ # Json Platform Build Dependencies
+ pkg-config libjson0 libjson0-dev \
+ # Imraa Platform Build Dependencies
+ libudev-dev \
+ # Doc Build Dependencies
+ python-sphinx doxygen graphviz
+
+# Set library download folder to /opt
+WORKDIR /opt
+
+# Swig Build Dependencies
+ARG SWIG_VERSION=3.0.10
+RUN wget -q http://iotdk.intel.com/misc/tr/swig-$SWIG_VERSION.tar.gz && \
+ tar xf swig-$SWIG_VERSION.tar.gz && cd swig-$SWIG_VERSION && \
+ ./configure --prefix=/usr/ && make -j8 && make -j8 install && cd .. && \
+ rm -fr /opt/swig-$SWIG_VERSION.tar.gz
+
+# FTDI4222 Build Dependencies
+ARG FTDI4222_VERSION=linux-1.3.1.117
+RUN mkdir libft4222-$FTDI4222_VERSION && cd libft4222-$FTDI4222_VERSION && \
+ wget -q http://www.ftdichip.com/Support/SoftwareExamples/libft4222-$FTDI4222_VERSION.tgz && \
+ tar xf libft4222-$FTDI4222_VERSION.tgz && ./install4222.sh && \
+ rm -fr libft4222-$FTDI4222_VERSION.tgz
+
+# Set Workdir
+ARG MRAA_SRC_DIR=/usr/src/app
+ENV MRAA_SRC_DIR $MRAA_SRC_DIR
+WORKDIR $MRAA_SRC_DIR
+
+CMD bash
diff --git a/docker/Dockerfile.java b/docker/Dockerfile.java
new file mode 100644
index 0000000..a9c9fec
--- /dev/null
+++ b/docker/Dockerfile.java
@@ -0,0 +1,14 @@
+FROM mraa-base
+
+# Update apt-get
+RUN apt-get -y update && \
+ # Java Build Dependencies
+ apt-get -y --no-install-recommends install default-jre default-jdk
+
+# Set JAVA_HOME
+ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
+
+# Set Workdir
+WORKDIR $MRAA_SRC_DIR
+
+CMD bash
diff --git a/docker/Dockerfile.node b/docker/Dockerfile.node
new file mode 100644
index 0000000..ce4825b
--- /dev/null
+++ b/docker/Dockerfile.node
@@ -0,0 +1,16 @@
+FROM mraa-base
+
+WORKDIR /opt
+
+# Node.js Build Dependencies
+RUN wget -q -O - https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
+ENV NVM_DIR /root/.nvm
+ARG NODE_VERSION
+RUN . $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm use $NODE_VERSION && \
+ npm install -g node-gyp && node-gyp install
+ENV PATH $NVM_DIR/versions/node/$NODE_VERSION/bin:$PATH
+
+# Set Workdir
+WORKDIR $MRAA_SRC_DIR
+
+CMD bash
diff --git a/docker/Dockerfile.python b/docker/Dockerfile.python
new file mode 100644
index 0000000..e117c2c
--- /dev/null
+++ b/docker/Dockerfile.python
@@ -0,0 +1,13 @@
+FROM mraa-base
+
+# Update apt-get
+RUN apt-get -y update && \
+ # Python 2 Build Dependencies
+ apt-get -y --no-install-recommends install python python-dev \
+ # Python 3 Build Dependencies
+ python3 python3-dev
+
+# Set Workdir
+WORKDIR $MRAA_SRC_DIR
+
+CMD bash
diff --git a/docker/Dockerfile.sonar b/docker/Dockerfile.sonar
new file mode 100644
index 0000000..0ea3c7a
--- /dev/null
+++ b/docker/Dockerfile.sonar
@@ -0,0 +1,39 @@
+FROM mraa-base
+
+# Update apt-get
+RUN apt-get -y update && \
+ # Python 2 Build Dependencies
+ apt-get -y --no-install-recommends install python python-dev \
+ # Python 3 Build Dependencies
+ python3 python3-dev \
+ # Java Build Dependencies
+ default-jre default-jdk
+
+# Set JAVA_HOME
+ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
+
+WORKDIR /opt
+
+# Node.js Build Dependencies
+RUN wget -q -O - https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
+ENV NVM_DIR /root/.nvm
+ARG NODE_VERSION
+RUN . $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm use $NODE_VERSION && \
+ npm install -g node-gyp && node-gyp install
+ENV PATH $NVM_DIR/versions/node/$NODE_VERSION/bin:$PATH
+
+# Static Code Analysis Scanner
+ENV SONAR_DIR /opt/sonar
+ENV SONAR_VER "3.0.3.778"
+WORKDIR $SONAR_DIR
+RUN wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_VER}-linux.zip && \
+ wget https://sonarqube.com/static/cpp/build-wrapper-linux-x86.zip && \
+ unzip sonar-scanner-cli-${SONAR_VER}-linux.zip && \
+ unzip build-wrapper-linux-x86.zip && \
+ rm sonar-scanner-cli-${SONAR_VER}-linux.zip build-wrapper-linux-x86.zip
+ENV PATH $SONAR_DIR/sonar-scanner-${SONAR_VER}-linux/bin:$SONAR_DIR/build-wrapper-linux-x86:$PATH
+
+# Set Workdir
+WORKDIR $MRAA_SRC_DIR
+
+CMD bash
diff --git a/scripts/build-android.sh b/scripts/build-android.sh
new file mode 100755
index 0000000..6b74f84
--- /dev/null
+++ b/scripts/build-android.sh
@@ -0,0 +1,139 @@
+#!/usr/bin/env bash
+
+PKG_CONFIG_LIBDIR=$NDK_HOME/platforms/android-24/arch-x86/usr/lib
+PKG_CONFIG_SYSROOT_DIR=""
+
+# Run cmake
+cmake \
+ -DANDROID_COMPILER_FLAGS_CXX='-std=c++11' \
+ -DANDROID_PIE=1 \
+ -DANDROID_PLATFORM=android-24 \
+ -DANDROID_STL_FORCE_FEATURES=on \
+ -DANDROID_STL=c++_shared \
+ -DANDROID_TOOLCHAIN_NAME=x86-i686 \
+ -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
+ -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
+ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=BOTH \
+ -DCMAKE_FIND_ROOT_PATH=$NDK_HOME/platforms/android-24/arch-x86/ \
+ -DCMAKE_MODULE_PATH=$ANDROIDTHINGS_NATIVE_LIB \
+ -DCMAKE_TOOLCHAIN_FILE=$NDK_HOME/build/cmake/android.toolchain.cmake \
+ -DJAVA_AWT_INCLUDE_PATH=$JAVA_HOME/include \
+ -DJAVA_AWT_LIBRARY=$JAVA_HOME/jre/lib/amd64/libjawt.so \
+ -DJAVA_INCLUDE_PATH=$JAVA_HOME/include \
+ -DJAVA_INCLUDE_PATH2=$JAVA_HOME/include/linux \
+ -DJAVA_JVM_LIBRARY=$JAVA_HOME/jre/lib/amd64/server/libjvm.so \
+ -DBUILDARCH=$BUILDARCH \
+ -DBUILDDOC=$BUILDDOC \
+ -DBUILDSWIG=$BUILDSWIG \
+ -DBUILDSWIGPYTHON=$BUILDSWIGPYTHON \
+ -DBUILDSWIGNODE=$BUILDSWIGNODE \
+ -DBUILDSWIGJAVA=$BUILDSWIGJAVA \
+ -DUSBPLAT=$USBPLAT \
+ -DFIRMATA=$FIRMATA \
+ -DONEWIRE=$ONEWIRE \
+ -DJSONPLAT=$JSONPLAT \
+ -DIMRAA=$IMRAA \
+ -DFTDI4222=$FTDI4222 \
+ -DIPK=$IPK \
+ -DRPM=$RPM \
+ -DENABLEEXAMPLES=$ENABLEEXAMPLES \
+ -DINSTALLGPIOTOOL=$INSTALLGPIOTOOL \
+ -DINSTALLTOOLS=$INSTALLTOOLS \
+ -DBUILDTESTS=$BUILDTESTS \
+ -DUSEPYTHON3TESTS=$USEPYTHON3TESTS \
+ -H. \
+ -Bbuild
+
+make -Cbuild
+make -Cbuild install
+
+# Anotate the .java src from doxygen
+echo src/mraa.i > build/swig.i.list
+# TODO: install doxy port tool
+#doxyport \
+# build/swig.i.list \
+# -s api,api/mraa \
+# -d build/src/java \
+# --convert-protected-to-private \
+# -o mraa-java-files.txt \
+# -m examples/samples.mapping.txt
+
+# Copy the STL implementation into the build/src directory
+cp $NDK_HOME/sources/cxx-stl/llvm-libc++/libs/x86/libc++_shared.so build/src/
+
+
+# Template for res/values/values.xml in aar
+values_xml='XXX_LIBRARY'
+
+# Template for AndroidManifest.xml in aar
+AndroidManifest_xml='
+
+
+
+'
+
+# Package prefix
+JAVA_PKG_PREFIX_DOT="io.mraa.at"
+
+# Package prefix slash to dot
+JAVA_PKG_PREFIX_SLASH="${JAVA_PKG_PREFIX_DOT//\./\/}/upm"
+
+# Work in the MRAA build directory
+cd build
+
+# Get the MRAA version string from the .pom file
+VERSION=`ls src/java/*.pom | sed 's/\([^-]\+\)\-\([0-9]\+\.[0-9]\+\.[0-9]\+\)\.pom/\2/'`
+
+# Get the MRAA name string from the .pom file
+LIB_NAME=`ls src/java/*.pom | sed 's/^.*\/\([^-]\+\)\-\([0-9]\+\.[0-9]\+\.[0-9]\+\)\.pom/\1/'`
+
+# Get the MRAA description string from the .pom file
+LIB_DESCRIPTION=$(grep -oPm1 "(?<=)[^<]+" src/java/$LIB_NAME-$VERSION.pom)
+
+# Bundle upload directory
+PKG_BUNDLE_DIR=BUNDLE_DIR
+mkdir -p ${PKG_BUNDLE_DIR}
+
+# Create the aar directory structure
+AAR_DIRECTORY="$LIB_NAME-$VERSION"
+mkdir -p $AAR_DIRECTORY/jni/x86
+mkdir -p $AAR_DIRECTORY/res/values
+
+# Write out res/values/values.xml to the aar
+echo "${values_xml/XXX_LIBRARY/$LIB_NAME}" > $AAR_DIRECTORY/res/values/values.xml
+
+# Write out AndroidManifest.xml to the aar
+_tmp_manifest=${AndroidManifest_xml/XXX_PACKAGE/$JAVA_PKG_PREFIX_DOT}
+_tmp_manifest=${_tmp_manifest/XXX_LIBRARY/$LIB_NAME}
+echo "${_tmp_manifest/XXX_VERSION/$VERSION}" > $AAR_DIRECTORY/AndroidManifest.xml
+
+# Copy over the so's
+cp src/*.so $AAR_DIRECTORY/jni/x86
+cp src/java/*.so $AAR_DIRECTORY/jni/x86
+
+# Create javadoc jar
+javadoc src/java/*.java -d $LIB_NAME-javadoc
+jar cf $PKG_BUNDLE_DIR/$LIB_NAME-$VERSION-javadoc.jar $LIB_NAME-javadoc/*
+
+# Create sources jar file for upload
+jar cf $PKG_BUNDLE_DIR/$LIB_NAME-$VERSION-sources.jar src/java/*.java
+
+# HACK - mraa pom file groupId is io.mraa (AT is io.mraa.at)
+perl -p -i -e 's/(groupId>)(.*?)(<\/groupId)/\1io.mraa.at\3/' src/java/$LIB_NAME-$VERSION.pom
+
+# HACK - mraa pom file packaging is 'jar' (convert this to 'aar')
+perl -p -i -e 's/(packaging>)(.*?)(<\/packaging)/\1aar\3/' src/java/$LIB_NAME-$VERSION.pom
+
+# Copy pom file
+cp src/java/$LIB_NAME-$VERSION.pom $PKG_BUNDLE_DIR
+
+# Copy the java module jar to classes.jar
+cp src/java/$LIB_NAME.jar $AAR_DIRECTORY/classes.jar
+
+# Create the .aar
+pushd $AAR_DIRECTORY
+ jar cf ../$PKG_BUNDLE_DIR/$LIB_NAME-$VERSION.aar *
+popd
diff --git a/scripts/run-cmake.sh b/scripts/run-cmake.sh
new file mode 100755
index 0000000..01b8107
--- /dev/null
+++ b/scripts/run-cmake.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+
+# Run cmake
+cmake \
+ -DBUILDARCH=$BUILDARCH \
+ -DBUILDDOC=$BUILDDOC \
+ -DBUILDSWIG=$BUILDSWIG \
+ -DBUILDSWIGPYTHON=$BUILDSWIGPYTHON \
+ -DBUILDSWIGNODE=$BUILDSWIGNODE \
+ -DBUILDSWIGJAVA=$BUILDSWIGJAVA \
+ -DUSBPLAT=$USBPLAT \
+ -DFIRMATA=$FIRMATA \
+ -DONEWIRE=$ONEWIRE \
+ -DJSONPLAT=$JSONPLAT \
+ -DIMRAA=$IMRAA \
+ -DFTDI4222=$FTDI4222 \
+ -DIPK=$IPK \
+ -DRPM=$RPM \
+ -DENABLEEXAMPLES=$ENABLEEXAMPLES \
+ -DINSTALLGPIOTOOL=$INSTALLGPIOTOOL \
+ -DINSTALLTOOLS=$INSTALLTOOLS \
+ -DBUILDTESTS=$BUILDTESTS \
+ -DUSEPYTHON3TESTS=$USEPYTHON3TESTS \
+ -H. \
+ -Bbuild
+
diff --git a/sonar-scan.sh b/scripts/sonar-scan.sh
similarity index 100%
rename from sonar-scan.sh
rename to scripts/sonar-scan.sh