mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2024-12-27 10:10:17 +00:00
ci: Add 32-bit builds
This commit is contained in:
parent
f4701c5473
commit
5b0f5196d4
|
@ -10,7 +10,7 @@ variables:
|
|||
.monado.debian:buster:
|
||||
variables:
|
||||
FDO_DISTRIBUTION_VERSION: buster
|
||||
FDO_DISTRIBUTION_TAG: "2019-04-28.0"
|
||||
FDO_DISTRIBUTION_TAG: "2019-04-28.1"
|
||||
|
||||
# Variables for build and usage of Debian 10 (Buster) + Android NDK image
|
||||
.monado.debian:buster-ndk:
|
||||
|
@ -50,7 +50,7 @@ stages:
|
|||
# Each most-derived job has a script to set up stuff for it.
|
||||
FDO_DISTRIBUTION_EXEC: "bash .gitlab-ci/${CI_JOB_NAME}.sh"
|
||||
|
||||
# Debian Buster (x64)
|
||||
# Debian Buster (x64 + i386)
|
||||
debian:container_prep:
|
||||
stage: container_prep
|
||||
extends:
|
||||
|
@ -176,6 +176,24 @@ arch:meson:
|
|||
variables:
|
||||
MESON_ARGS: -Ddocs=disabled
|
||||
|
||||
# Cross-compiling
|
||||
debian:meson:32bit:
|
||||
extends:
|
||||
- .monado.debian:buster # local
|
||||
- .fdo.distribution-image@debian # from ci-templates
|
||||
- .monado.build-meson # local
|
||||
variables:
|
||||
MESON_ARGS: --prefix /usr --libdir /usr/lib/i386-linux-gnu --cross-file ../.gitlab-ci/i386-cross.txt
|
||||
|
||||
debian:cmake:32bit:
|
||||
extends:
|
||||
- .monado.debian:buster # local
|
||||
- .fdo.distribution-image@debian # from ci-templates
|
||||
- .monado.build-cmake # local
|
||||
variables:
|
||||
# OpenCV and local OpenHMD doesn't play nicely with us in multi-arch.
|
||||
CMAKE_ARGS: -DCMAKE_TOOLCHAIN_FILE=../.gitlab-ci/i386.cmake -DBUILD_WITH_OPENCV=off -DBUILD_WITH_OPENHMD=off
|
||||
|
||||
# Base of Android NDK builds.
|
||||
# Takes the last :-delimited part of the name as the ABI to build for,
|
||||
# so you don't need to do anything other than "extends" in the job
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
(
|
||||
cd $(dirname $0)
|
||||
bash ./install-cross.sh
|
||||
)
|
||||
(
|
||||
cd $(dirname $0)
|
||||
bash ./build-openxr-openhmd.sh
|
||||
|
|
17
.gitlab-ci/i386-cross.txt
Normal file
17
.gitlab-ci/i386-cross.txt
Normal file
|
@ -0,0 +1,17 @@
|
|||
[binaries]
|
||||
c = '/usr/bin/i686-linux-gnu-gcc'
|
||||
cpp = '/usr/bin/i686-linux-gnu-g++'
|
||||
ar = '/usr/bin/i686-linux-gnu-ar'
|
||||
strip = '/usr/bin/i686-linux-gnu-strip'
|
||||
objcopy = '/usr/bin/i686-linux-gnu-objcopy'
|
||||
ld= '/usr/bin/i686-linux-gnu-ld'
|
||||
pkgconfig = '/usr/bin/i686-linux-gnu-pkg-config'
|
||||
|
||||
[properties]
|
||||
needs_exe_wrapper = False
|
||||
|
||||
[host_machine]
|
||||
system = 'linux'
|
||||
cpu_family = 'x86'
|
||||
cpu = 'i386'
|
||||
endian = 'little'
|
37
.gitlab-ci/i386.cmake
Normal file
37
.gitlab-ci/i386.cmake
Normal file
|
@ -0,0 +1,37 @@
|
|||
# Toolchain file for 32-bit x86 linux build on 64-bit x86 linux
|
||||
# Developed for use with Debian and its derivatives
|
||||
#
|
||||
# Copyright 2019-2020 Collabora, Ltd.
|
||||
# SPDX-License-Identifier: BSL-1.0
|
||||
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
|
||||
set(TARGET i686-linux-gnu)
|
||||
set(PREFIX ${TARGET}-)
|
||||
set(SUFFIX) # required for
|
||||
set(CMAKE_C_COMPILER ${PREFIX}gcc${SUFFIX})
|
||||
set(CMAKE_CXX_COMPILER ${PREFIX}g++${SUFFIX})
|
||||
|
||||
set(CMAKE_C_COMPILER_AR ${PREFIX}gcc-ar${SUFFIX})
|
||||
set(CMAKE_CXX_COMPILER_AR ${PREFIX}gcc-ar${SUFFIX})
|
||||
set(CMAKE_C_COMPILER_RANLIB ${PREFIX}gcc-ranlib${SUFFIX})
|
||||
set(CMAKE_CXX_COMPILER_RANLIB ${PREFIX}gcc-ranlib${SUFFIX})
|
||||
set(CMAKE_NM ${PREFIX}gcc-nm${SUFFIX})
|
||||
set(CMAKE_OBJCOPY ${PREFIX}objcopy)
|
||||
set(CMAKE_OBJDUMP ${PREFIX}objdump)
|
||||
set(CMAKE_RANLIB ${PREFIX}ranlib)
|
||||
set(CMAKE_STRIP ${PREFIX}strip)
|
||||
|
||||
set(PKG_CONFIG_EXECUTABLE ${PREFIX}pkg-config)
|
||||
|
||||
if(NOT CMAKE_INSTALL_PREFIX)
|
||||
set(CMAKE_INSTALL_PREFIX /usr/${TARGET})
|
||||
endif()
|
||||
|
||||
set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/i386-linux-gnu;/usr/lib32;/usr/${TARGET}/lib)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH /usr/${TARGET})
|
||||
|
||||
# set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
# set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
69
.gitlab-ci/install-cross.sh
Normal file
69
.gitlab-ci/install-cross.sh
Normal file
|
@ -0,0 +1,69 @@
|
|||
#!/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
|
Loading…
Reference in a new issue