Add Android NDK toolchain in Ubuntu docker image
authorXavier Claessens <xavier.claessens@collabora.com>
Thu, 22 Nov 2018 18:45:10 +0000 (13:45 -0500)
committerXavier Claessens <xavier.claessens@collabora.com>
Thu, 22 Nov 2018 19:15:07 +0000 (14:15 -0500)
docker/build-base-images/Dockerfile-ubuntu
docker/build-base-images/android-create-toolchain.sh [new file with mode: 0755]
docker/build-base-images/android-download-ndk.sh [new file with mode: 0755]

index 0b9671a..d2dfd72 100644 (file)
@@ -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 (executable)
index 0000000..bf909b6
--- /dev/null
@@ -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 <http://www.gnu.org/licenses/>.
+#
+# Author: Xavier Claessens <xavier.claessens@collabora.com>
+#
+
+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 (executable)
index 0000000..0e07407
--- /dev/null
@@ -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 <http://www.gnu.org/licenses/>.
+#
+# Author: Xavier Claessens <xavier.claessens@collabora.com>
+#
+
+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