monado/.gitlab-ci/install-cross.sh
2020-04-28 16:52:23 -05:00

70 lines
1.9 KiB
Bash

#!/bin/bash
# Based on https://gitlab.freedesktop.org/mesa/mesa/-/blob/master/.gitlab-ci/container/x86_build.sh
set -e
set -o xtrace
export DEBIAN_FRONTEND=noninteractive
CROSS_ARCHITECTURES="i386"
for arch in $CROSS_ARCHITECTURES; do
dpkg --add-architecture $arch
done
apt-get update
for arch in $CROSS_ARCHITECTURES; do
# OpenCV and libuvc aren't on this list because
# they apparently can't be installed in both architectures at once
apt-get install -y --no-install-recommends --no-remove \
crossbuild-essential-${arch} \
libelf-dev:${arch} \
libavcodec-dev:${arch} \
libegl1-mesa-dev:${arch} \
libgl1-mesa-dev:${arch} \
libglvnd-dev:${arch} \
libhidapi-dev:${arch} \
libudev-dev:${arch} \
libusb-1.0-0-dev:${arch} \
libv4l-dev:${arch} \
libvulkan-dev:${arch} \
libwayland-dev:${arch} \
libx11-dev:${arch} \
libxcb-randr0-dev:${arch} \
libxrandr-dev:${arch} \
libxxf86vm-dev:${arch}
if [ "$arch" != "i386" ]; then
mkdir /var/cache/apt/archives/${arch}
apt-get install -y --no-remove \
libstdc++6:${arch}
fi
done
# for 64bit windows cross-builds
# apt-get install -y --no-remove \
# libz-mingw-w64-dev \
# mingw-w64 \
# wine \
# wine32 \
# wine64
apt-get autoremove -y --purge
apt-get clean
# Generate cross build files for Meson
for arch in $CROSS_ARCHITECTURES; do
cross_file="/cross_file-$arch.txt"
/usr/share/meson/debcrossgen --arch "$arch" -o "$cross_file"
if [ "$arch" = "i386" ]; then
# Work around a bug in debcrossgen that should be fixed in the next release
sed -i "s|cpu_family = 'i686'|cpu_family = 'x86'|g" "$cross_file"
fi
# Rely on qemu-user being configured in binfmt_misc on the host
sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
done