#!/bin/bash JPEG_TAG=master OPENH264_TAG=master OPENSSL_TAG=master WITH_JPEG=0 WITH_OPENH264=0 WITH_OPENSSL=0 SRC_DIR=$(dirname "${BASH_SOURCE[0]}") SRC_DIR=$(realpath "$SRC_DIR") BUILD_SRC=$(pwd) BUILD_DST=$(pwd) CMAKE_BUILD_TYPE=Debug BUILD_DEPS=0 SCRIPT_PATH=$(dirname "${BASH_SOURCE[0]}") source $SCRIPT_PATH/android-build-common.sh source $SCRIPT_PATH/android-build.conf # Parse arguments. REMAINING="" while [[ $# > 0 ]] do key="$1" case $key in --freerdp-src) SRC_DIR="$2" shift ;; --jpeg) WITH_JPEG=1 shift ;; --openh264) WITH_OPENH264=1 shift ;; --openh264-ndk) shift ANDROID_NDK_OPENH264=$1 shift ;; --openssl) WITH_OPENSSL=1 shift ;; --debug) CMAKE_BUILD_TYPE=Debug shift ;; --release) CMAKE_BUILD_TYPE=Release shift ;; --relWithDebug) CMAKE_BUILD_TYPE=RelWithDebug shift ;; --build-deps) BUILD_DEPS=1 shift ;; *) REMAINING="$REMAINING $key" shift ;; esac done common_parse_arguments $REMAINING # clean up top if [ -d $BUILD_SRC ]; then common_clean $BUILD_SRC fi if [ -d $BUILD_DST ]; then common_run mkdir -p $BUILD_DST fi # Prepare the environment common_run mkdir -p $BUILD_SRC CMAKE_CMD_ARGS="-DANDROID_NDK=$ANDROID_NDK \ -DANDROID_NATIVE_API_LEVEL=android-${NDK_TARGET} \ -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE \ -DFREERDP_EXTERNAL_PATH=$BUILD_DST \ -DCMAKE_MAKE_PROGRAM=make" BASE=$(pwd) for ARCH in $BUILD_ARCH do # build dependencies. if [ $WITH_JPEG -ne 0 ]; then if [ $BUILD_DEPS -ne 0 ]; then common_run bash $SCRIPT_PATH/android-build-jpeg.sh \ --src $BUILD_SRC/jpeg --dst $BUILD_DST \ --ndk $ANDROID_NDK \ --arch $ARCH \ --target $NDK_TARGET \ --tag $JPEG_TAG fi CMAKE_CMD_ARGS="$CMAKE_CMD_ARGS -DWITH_JPEG=ON" else CMAKE_CMD_ARGS="$CMAKE_CMD_ARGS -DWITH_JPEG=OFF" fi if [ $WITH_OPENH264 -ne 0 ]; then if [ -z "$ANDROID_NDK_OPENH264" ] then echo echo "Warning: Missing openh264-ndk, using $ANDROID_NDK" >&2 echo ANDROID_NDK_OPENH264=$ANDROID_NDK fi if [ $BUILD_DEPS -ne 0 ]; then common_run bash $SCRIPT_PATH/android-build-openh264.sh \ --src $BUILD_SRC/openh264 --dst $BUILD_DST \ --sdk "$ANDROID_SDK" \ --ndk "$ANDROID_NDK_OPENH264" \ --arch $ARCH \ --target $NDK_TARGET \ --tag $OPENH264_TAG fi CMAKE_CMD_ARGS="$CMAKE_CMD_ARGS -DWITH_OPENH264=ON" else CMAKE_CMD_ARGS="$CMAKE_CMD_ARGS -DWITH_OPENH264=OFF" fi if [ $WITH_OPENSSL -ne 0 ]; then if [ $BUILD_DEPS -ne 0 ]; then common_run bash $SCRIPT_PATH/android-build-openssl.sh \ --src $BUILD_SRC/openssl --dst $BUILD_DST \ --sdk "$ANDROID_SDK" \ --ndk $ANDROID_NDK \ --arch $ARCH \ --target $NDK_TARGET \ --tag $OPENSSL_TAG fi fi # Build and install the library. if [ $DEPS_ONLY -eq 0 ]; then common_run cd $BASE common_run mkdir -p $BUILD_SRC/freerdp-build/$ARCH common_run cd $BUILD_SRC/freerdp-build/$ARCH common_run export ANDROID_NDK=$ANDROID_NDK common_run $CMAKE_PROGRAM $CMAKE_CMD_ARGS \ -DANDROID_ABI=$ARCH \ -DCMAKE_INSTALL_PREFIX=$BUILD_DST/$ARCH \ -DCMAKE_INSTALL_LIBDIR=. \ $SRC_DIR echo $(pwd) common_run cmake --build . --target install fi done echo "Successfully build library for architectures $BUILD_ARCH"