git \
xvfb \
python3-pip \
- wget
+ wget \
+ unzip
RUN pip3 install meson
# 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 && \
--- /dev/null
+#!/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
--- /dev/null
+#!/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