1#!/bin/bash
2
3set -ex
4
5EPHEMERAL="\
6         rdfind \
7         unzip \
8         "
9
10apt-get install -y --no-remove $EPHEMERAL
11
12# Fetch the NDK and extract just the toolchain we want.
13ndk=android-ndk-r21d
14wget -O $ndk.zip https://dl.google.com/android/repository/$ndk-linux-x86_64.zip
15unzip -d / $ndk.zip "$ndk/toolchains/llvm/*"
16rm $ndk.zip
17# Since it was packed as a zip file, symlinks/hardlinks got turned into
18# duplicate files.  Turn them into hardlinks to save on container space.
19rdfind -makehardlinks true -makeresultsfile false /android-ndk-r21d/
20# Drop some large tools we won't use in this build.
21find /android-ndk-r21d/ -type f | egrep -i "clang-check|clang-tidy|lldb" | xargs rm -f
22
23sh .gitlab-ci/create-android-ndk-pc.sh /$ndk zlib.pc "" "-lz" "1.2.3"
24
25sh .gitlab-ci/create-android-cross-file.sh /$ndk x86_64-linux-android x86_64 x86_64
26sh .gitlab-ci/create-android-cross-file.sh /$ndk i686-linux-android x86 x86
27sh .gitlab-ci/create-android-cross-file.sh /$ndk aarch64-linux-android arm armv8
28sh .gitlab-ci/create-android-cross-file.sh /$ndk arm-linux-androideabi arm armv7hl armv7a-linux-androideabi
29
30# Not using build-libdrm.sh because we don't want its cleanup after building
31# each arch.  Fetch and extract now.
32export LIBDRM_VERSION=libdrm-2.4.102
33wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.xz
34tar -xf $LIBDRM_VERSION.tar.xz && rm $LIBDRM_VERSION.tar.xz
35
36for arch in \
37        x86_64-linux-android \
38        i686-linux-android \
39        aarch64-linux-android \
40        arm-linux-androideabi ; do
41
42    cd $LIBDRM_VERSION
43    rm -rf build-$arch
44    meson build-$arch \
45          --cross-file=/cross_file-$arch.txt \
46          --libdir=lib/$arch \
47          -Dlibkms=false \
48          -Dnouveau=false \
49          -Dvc4=false \
50          -Detnaviv=false \
51          -Dfreedreno=false \
52          -Dintel=false \
53          -Dcairo-tests=false
54    ninja -C build-$arch install
55    cd ..
56done
57
58rm -rf $LIBDRM_VERSION
59
60apt-get purge -y $EPHEMERAL
61