From a1726fee5841b776fcdaeda2e0ad628ce037a3c6 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Thu, 22 Nov 2018 13:45:10 -0500 Subject: [PATCH] Add Android NDK toolchain in Ubuntu docker image --- docker/build-base-images/Dockerfile-ubuntu | 10 +++- .../android-create-toolchain.sh | 49 +++++++++++++++++++ .../build-base-images/android-download-ndk.sh | 31 ++++++++++++ 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100755 docker/build-base-images/android-create-toolchain.sh create mode 100755 docker/build-base-images/android-download-ndk.sh diff --git a/docker/build-base-images/Dockerfile-ubuntu b/docker/build-base-images/Dockerfile-ubuntu index 0b9671a56f..d2dfd72003 100644 --- a/docker/build-base-images/Dockerfile-ubuntu +++ b/docker/build-base-images/Dockerfile-ubuntu @@ -22,7 +22,8 @@ RUN \ git \ xvfb \ python3-pip \ - wget + wget \ + unzip RUN pip3 install meson @@ -31,6 +32,13 @@ ENV GST_BUILD_PATH="/gst-build/" # Configure git for various usage RUN git config --global user.email "gst-build@gstreamer.net" && git config --global user.name "Gstbuild Runner" +# Setup Android toolchain +COPY android-download-ndk.sh . +COPY android-create-toolchain.sh . +RUN ./android-download-ndk.sh +RUN ./android-create-toolchain.sh arm64 28 +RUN rm -rf /android-ndk + # get gst-build and make all subprojects available RUN git clone git://anongit.freedesktop.org/gstreamer/gst-build $GST_BUILD_PATH && \ cd $GST_BUILD_PATH && \ diff --git a/docker/build-base-images/android-create-toolchain.sh b/docker/build-base-images/android-create-toolchain.sh new file mode 100755 index 0000000000..bf909b64e5 --- /dev/null +++ b/docker/build-base-images/android-create-toolchain.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# +# Copyright 2018 Collabora ltd. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . +# +# Author: Xavier Claessens +# + +set -e + +arch=$1 +api=$2 +toolchain_path=/android-toolchain-$arch-$api + +# Create standalone toolchains +/android-ndk/build/tools/make_standalone_toolchain.py --arch $arch --api $api --install-dir $toolchain_path + +# Create a cross file that can be passed to meson +cat > android_${arch}_${api}.txt <<- EOM +[host_machine] +system = 'android' +cpu_family = 'aarch64' +cpu = '${arch}' +endian = 'little' + +[properties] +c_args = ['--sysroot', '${toolchain_path}/sysroot'] +cpp_args = ['--sysroot', '${toolchain_path}/sysroot'] + +[binaries] +c = '${toolchain_path}/bin/aarch64-linux-android-clang' +cpp = '${toolchain_path}/bin/aarch64-linux-android-clang++' +ar = '${toolchain_path}/bin/aarch64-linux-android-ar' +strip = '${toolchain_path}/bin/aarch64-linux-android-strip' +pkgconfig = 'false' +EOM diff --git a/docker/build-base-images/android-download-ndk.sh b/docker/build-base-images/android-download-ndk.sh new file mode 100755 index 0000000000..0e07407422 --- /dev/null +++ b/docker/build-base-images/android-download-ndk.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# +# Copyright 2018 Collabora ltd. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . +# +# Author: Xavier Claessens +# + +set -e + +# Download Android NDK +ANDROID_NDK_VERSION="r18b" +ANDROID_NDK_SHA512="a35ab95ece52819194a3874fd210abe5c25905212c4aafe5d75c465c14739a46340d1ff0944ad93ffbbc9c0d86107119399d4f60ec6c5f080758008e75c19617" +wget --quiet https://dl.google.com/android/repository/android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip +echo "$ANDROID_NDK_SHA512 android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip" | sha512sum -c +unzip android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip +rm android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip +mv android-ndk-$ANDROID_NDK_VERSION /android-ndk