--- /dev/null
+#!/bin/bash
+
+#
+# Build libwebsockets static library for Android
+#
+# requires debian package xutils-dev for makedepend (openssl make depend)
+#
+
+# This is based on http://stackoverflow.com/questions/11929773/compiling-the-latest-openssl-for-android/
+# via https://github.com/warmcat/libwebsockets/pull/502
+
+# path to NDK
+export NDK=/opt/Android/SDK/ndk-bundle
+
+set -e
+
+# Download packages libz, openssl and libwebsockets
+
+[ ! -f zlib-1.2.8.tar.gz ] && {
+wget http://prdownloads.sourceforge.net/libpng/zlib-1.2.8.tar.gz
+}
+
+[ ! -f openssl-1.0.2g.tar.gz ] && {
+wget https://openssl.org/source/openssl-1.0.2g.tar.gz
+}
+
+[ ! -f libwebsockets.tar.gz ] && {
+git clone https://github.com/warmcat/libwebsockets.git
+tar caf libwebsockets.tar.gz libwebsockets
+}
+
+# Clean then Unzip
+
+[ -d zlib-1.2.8 ] && rm -fr zlib-1.2.8
+[ -d openssl-1.0.2g ] && rm -fr openssl-1.0.2g
+[ -d libwebsockets ] && rm -fr libwebsockets
+[ -d android-toolchain-arm ] && rm -fr android-toolchain-arm
+tar xf zlib-1.2.8.tar.gz
+tar xf openssl-1.0.2g.tar.gz
+tar xf libwebsockets.tar.gz
+
+# create a local android toolchain
+$NDK/build/tools/make-standalone-toolchain.sh \
+ --platform=android-9 \
+ --toolchain=arm-linux-androideabi-4.9 \
+ --install-dir=`pwd`/android-toolchain-arm
+
+# setup environment to use the gcc/ld from the android toolchain
+export TOOLCHAIN_PATH=`pwd`/android-toolchain-arm/bin
+export TOOL=arm-linux-androideabi
+export NDK_TOOLCHAIN_BASENAME=${TOOLCHAIN_PATH}/${TOOL}
+export CC=$NDK_TOOLCHAIN_BASENAME-gcc
+export CXX=$NDK_TOOLCHAIN_BASENAME-g++
+export LINK=${CXX}
+export LD=$NDK_TOOLCHAIN_BASENAME-ld
+export AR=$NDK_TOOLCHAIN_BASENAME-ar
+export RANLIB=$NDK_TOOLCHAIN_BASENAME-ranlib
+export STRIP=$NDK_TOOLCHAIN_BASENAME-strip
+
+# setup buildflags
+export ARCH_FLAGS="-mthumb"
+export ARCH_LINK=
+export CPPFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
+export CXXFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions "
+export CFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
+export LDFLAGS=" ${ARCH_LINK} "
+
+# configure and build zlib
+[ ! -f ./android-toolchain-arm/lib/libz.a ] && {
+cd zlib-1.2.8
+PATH=$TOOLCHAIN_PATH:$PATH ./configure --static --prefix=$TOOLCHAIN_PATH/..
+PATH=$TOOLCHAIN_PATH:$PATH make
+PATH=$TOOLCHAIN_PATH:$PATH make install
+cd ..
+}
+
+# configure and build openssl
+[ ! -f ./android-toolchain-arm/lib/libssl.a ] && {
+PREFIX=$TOOLCHAIN_PATH/..
+cd openssl-1.0.2g
+./Configure android --prefix=${PREFIX} no-shared no-idea no-mdc2 no-rc5 no-zlib no-zlib-dynamic enable-tlsext no-ssl2 no-ssl3 enable-ec enable-ecdh enable-ecp
+PATH=$TOOLCHAIN_PATH:$PATH make depend
+PATH=$TOOLCHAIN_PATH:$PATH make
+PATH=$TOOLCHAIN_PATH:$PATH make install_sw
+cd ..
+}
+
+# configure and build libwebsockets
+[ ! -f ./android-toolchain-arm/lib/libwebsockets.a ] && {
+cd libwebsockets
+[ ! -d build ] && mkdir build
+cd build
+PATH=$TOOLCHAIN_PATH:$PATH cmake \
+ -DCMAKE_C_COMPILER=$CC \
+ -DCMAKE_AR=$AR \
+ -DCMAKE_RANLIB=$RANLIB \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=$TOOLCHAIN_PATH/.. \
+ -DLWS_WITH_SHARED=OFF \
+ -DLWS_WITH_STATIC=ON \
+ -DLWS_WITHOUT_DAEMONIZE=ON \
+ -DLWS_WITHOUT_TESTAPPS=ON \
+ -DLWS_IPV6=OFF \
+ -DLWS_USE_BUNDLED_ZLIB=OFF \
+ -DLWS_WITH_SSL=ON \
+ -DLWS_WITH_HTTP2=ON \
+ -DLWS_OPENSSL_LIBRARIES="$TOOLCHAIN_PATH/../lib/libssl.a;$TOOLCHAIN_PATH/../lib/libcrypto.a" \
+ -DLWS_OPENSSL_INCLUDE_DIRS=$TOOLCHAIN_PATH/../include \
+ -DCMAKE_BUILD_TYPE=Debug \
+ ..
+PATH=$TOOLCHAIN_PATH:$PATH make
+PATH=$TOOLCHAIN_PATH:$PATH make install
+cd ../..
+}