Add Android NDK toolchain in Ubuntu docker image

This commit is contained in:
Xavier Claessens 2018-11-22 13:45:10 -05:00
parent 68a71431b8
commit a1726fee58
3 changed files with 89 additions and 1 deletions

View 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 && \

View file

@ -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

View file

@ -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