manibuilder: Add Android cross-compilation targets

Change-Id: Ief71ef392f59197c95b5d01a63bc6998748bceb2
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.sourcearcade.org/c/flashprog/+/389
diff --git a/util/manibuilder/Dockerfile.cross b/util/manibuilder/Dockerfile.cross
new file mode 100644
index 0000000..b4bb496
--- /dev/null
+++ b/util/manibuilder/Dockerfile.cross
@@ -0,0 +1,49 @@
+FROM alvrme/alpine-android:android-35-jdk8
+
+RUN \
+	adduser -D mani mani && \
+	apk update && \
+	apk add build-base git ccache meson
+
+ENV NDK_VERSION=27.2.12479018
+RUN extras ndk -n ${NDK_VERSION}
+ENV PATH /opt/sdk/ndk/${NDK_VERSION}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}
+
+RUN bash <<EOF
+	set -e
+	ndk_bin="/opt/sdk/ndk/${NDK_VERSION}/toolchains/llvm/prebuilt/linux-x86_64/bin"
+	for trgt in {aarch64,i686,x86_64}-linux-android{23,35}-clang \
+		    armv7a-linux-androideabi{23,35}-clang
+	do
+		echo "[binaries]"			 >/opt/\${trgt}.txt
+		echo "c = '\${ndk_bin}/\${trgt}'"	>>/opt/\${trgt}.txt
+		echo "ar = '\${ndk_bin}/llvm-ar'"	>>/opt/\${trgt}.txt
+		echo "strip = '\${ndk_bin}/llvm-strip'"	>>/opt/\${trgt}.txt
+		echo ""					>>/opt/\${trgt}.txt
+		echo "[host_machine]"			>>/opt/\${trgt}.txt
+		echo "system = 'android'"		>>/opt/\${trgt}.txt
+		echo "cpu_family = '\${trgt%%-*}'"	>>/opt/\${trgt}.txt
+		echo "cpu = '\${trgt%%-*}'"		>>/opt/\${trgt}.txt
+		echo "endian = 'little'"		>>/opt/\${trgt}.txt
+	done
+EOF
+
+RUN mkdir -p -m 1777 /ccache
+
+USER mani
+
+ARG ORIGIN=https://review.sourcearcade.org/flashprog.git
+RUN \
+	cd && \
+	mkdir .ccache && chown mani:mani .ccache && \
+	git clone ${ORIGIN} flashprog
+
+ARG IDENT=mani
+ARG CCACHE_MAX=512M
+RUN \
+	ccache --set-config cache_dir=/ccache/${IDENT} && \
+	ccache --set-config max_size=${CCACHE_MAX}
+
+ENV DEVSHELL /bin/sh
+COPY mani-wrapper.sh /home/mani/
+ENTRYPOINT ["/bin/sh", "/home/mani/mani-wrapper.sh"]