You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.7 KiB
117 lines
3.7 KiB
#!/bin/bash
|
|
|
|
#
|
|
# Build libwebsockets static library for Android
|
|
#
|
|
|
|
# path to NDK
|
|
export NDK=/opt/ndk_r17/android-ndk-r17-beta2-linux-x86_64/android-ndk-r17-beta2
|
|
export ANDROID_NDK=${NDK}
|
|
export TOOLCHAIN=${NDK}/toolchain
|
|
export CORSS_SYSROOT=${NDK}/sysroot
|
|
export SYSROOT=${NDK}/platforms/android-22/arch-arm
|
|
set -e
|
|
|
|
# Download packages libz, libuv, mbedtls and libwebsockets
|
|
#zlib-1.2.8
|
|
#libuv-1.x
|
|
#mbedtls-2.11.0
|
|
#libwebsockets-3.0.0
|
|
|
|
|
|
# create a local android toolchain
|
|
API=${3:-24}
|
|
|
|
$NDK/build/tools/make-standalone-toolchain.sh \
|
|
--toolchain=arm-linux-androideabi-4.9 \
|
|
--arch=arm \
|
|
--install-dir=`pwd`/android-toolchain-arm \
|
|
--platform=android-$API \
|
|
--stl=libc++ \
|
|
--force \
|
|
--verbose
|
|
|
|
# setup environment to use the gcc/ld from the android toolchain
|
|
export INSTALL_PATH=/opt/libwebsockets_android/android-toolchain-arm
|
|
export TOOLCHAIN_PATH=`pwd`/android-toolchain-arm
|
|
export TOOL=arm-linux-androideabi
|
|
export NDK_TOOLCHAIN_BASENAME=${TOOLCHAIN_PATH}/bin/${TOOL}
|
|
export PATH=`pwd`/android-toolchain-arm/bin:$PATH
|
|
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
|
|
export PLATFORM=android
|
|
export CFLAGS="D__ANDROID_API__=$API"
|
|
|
|
# configure and build libuv
|
|
[ ! -f ./android-toolchain-arm/lib/libuv.so ] && {
|
|
cd libuv
|
|
echo "=============================================>> build libuv"
|
|
|
|
PATH=$TOOLCHAIN_PATH:$PATH make clean
|
|
PATH=$TOOLCHAIN_PATH:$PATH make
|
|
PATH=$TOOLCHAIN_PATH:$PATH make install
|
|
echo "<<============================================= build libuv"
|
|
cd ..
|
|
}
|
|
|
|
# configure and build zlib
|
|
[ ! -f ./android-toolchain-arm/lib/libz.so ] && {
|
|
cd zlib-1.2.8
|
|
echo "=============================================>> build libz"
|
|
|
|
PATH=$TOOLCHAIN_PATH:$PATH make clean
|
|
PATH=$TOOLCHAIN_PATH:$PATH make
|
|
PATH=$TOOLCHAIN_PATH:$PATH make install
|
|
echo "<<============================================= build libz"
|
|
cd ..
|
|
}
|
|
|
|
# configure and build mbedtls
|
|
[ ! -f ./android-toolchain-arm/lib/libmbedtls.so ] && {
|
|
echo "=============================================>> build mbedtls"
|
|
PREFIX=$TOOLCHAIN_PATH
|
|
cd mbedtls-2.11.0
|
|
[ ! -d build ] && mkdir build
|
|
cd build
|
|
export CFLAGS="$CFLAGS -fomit-frame-pointer"
|
|
|
|
PATH=$TOOLCHAIN_PATH:$PATH cmake .. -DCMAKE_TOOLCHAIN_FILE=`pwd`/../cross-arm-android-gnueabi.cmake \
|
|
-DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_PATH} \
|
|
-DCMAKE_BUILD_TYPE=RELEASE -DUSE_SHARED_MBEDTLS_LIBRARY=On
|
|
|
|
PATH=$TOOLCHAIN_PATH:$PATH make clean
|
|
PATH=$TOOLCHAIN_PATH:$PATH make SHARED=1
|
|
PATH=$TOOLCHAIN_PATH:$PATH make install
|
|
echo "<<============================================= build mbedtls"
|
|
cd ../..
|
|
}
|
|
|
|
# configure and build libwebsockets
|
|
[ ! -f ./android-toolchain-arm/lib/libwebsockets.so ] && {
|
|
cd libwebsockets
|
|
[ ! -d build ] && mkdir build
|
|
cd build
|
|
echo "=============================================>> build libwebsockets"
|
|
|
|
PATH=$TOOLCHAIN_PATH:$PATH cmake .. -DCMAKE_TOOLCHAIN_FILE=`pwd`/../cross-arm-android-gnueabi.cmake \
|
|
-DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_PATH} \
|
|
-DLWS_WITH_LWSWS=1 \
|
|
-DLWS_WITH_MBEDTLS=1 \
|
|
-DLWS_WITHOUT_TESTAPPS=1 \
|
|
-DLWS_MBEDTLS_LIBRARIES="${INSTALL_PATH}/lib/libmbedcrypto.a;${INSTALL_PATH}/lib/libmbedtls.a;${INSTALL_PATH}/lib/libmbedx509.a" \
|
|
-DLWS_MBEDTLS_INCLUDE_DIRS=${INSTALL_PATH}/include \
|
|
-DLWS_LIBUV_LIBRARIES=${INSTALL_PATH}/lib/libuv.so \
|
|
-DLWS_LIBUV_INCLUDE_DIRS=${INSTALL_PATH}/include \
|
|
-DLWS_ZLIB_LIBRARIES=${INSTALL_PATH}/lib/libz.so \
|
|
-DLWS_ZLIB_INCLUDE_DIRS=${INSTALL_PATH}/include
|
|
PATH=$TOOLCHAIN_PATH:$PATH make
|
|
PATH=$TOOLCHAIN_PATH:$PATH make install
|
|
echo "<<============================================= build libwebsockets"
|
|
cd ../..
|
|
}
|