freedreno: add CI for envytools tools
[mesa.git] / .gitlab-ci / container / x86_build.sh
1 #!/bin/bash
2
3 set -e
4 set -o xtrace
5
6 export DEBIAN_FRONTEND=noninteractive
7
8 # Ephemeral packages (installed for this script and removed again at the end)
9 STABLE_EPHEMERAL=" \
10 autoconf \
11 automake \
12 autotools-dev \
13 bzip2 \
14 cmake \
15 gnupg \
16 libgbm-dev \
17 libtool \
18 make \
19 unzip \
20 wget \
21 "
22
23 # We need multiarch for Wine
24 dpkg --add-architecture i386
25 apt-get update
26
27 apt-get install -y --no-remove \
28 $STABLE_EPHEMERAL \
29 libarchive-dev \
30 liblua5.3-dev \
31 libxml2-dev \
32 wine-development \
33 wine32-development
34
35 apt-get install -y --no-remove -t buster-backports \
36 llvm-8-dev
37
38
39 . .gitlab-ci/container/container_pre_build.sh
40
41
42 # Debian's pkg-config wrapers for mingw are broken, and there's no sign that
43 # they're going to be fixed, so we'll just have to fix it ourselves
44 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930492
45 cat >/usr/local/bin/x86_64-w64-mingw32-pkg-config <<EOF
46 #!/bin/sh
47
48 PKG_CONFIG_LIBDIR=/usr/x86_64-w64-mingw32/lib/pkgconfig pkg-config \$@
49 EOF
50 chmod +x /usr/local/bin/x86_64-w64-mingw32-pkg-config
51
52
53 # dependencies where we want a specific version
54 export XORG_RELEASES=https://xorg.freedesktop.org/releases/individual
55 export XCB_RELEASES=https://xcb.freedesktop.org/dist
56 export WAYLAND_RELEASES=https://wayland.freedesktop.org/releases
57
58 export XORGMACROS_VERSION=util-macros-1.19.0
59 export LIBDRM_VERSION=libdrm-2.4.102
60 export XCBPROTO_VERSION=xcb-proto-1.13
61 export LIBXCB_VERSION=libxcb-1.13
62 export LIBWAYLAND_VERSION=wayland-1.15.0
63 export WAYLAND_PROTOCOLS_VERSION=wayland-protocols-1.12
64
65 wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2
66 tar -xvf $XORGMACROS_VERSION.tar.bz2 && rm $XORGMACROS_VERSION.tar.bz2
67 cd $XORGMACROS_VERSION; ./configure; make install; cd ..
68 rm -rf $XORGMACROS_VERSION
69
70 wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2
71 tar -xvf $XCBPROTO_VERSION.tar.bz2 && rm $XCBPROTO_VERSION.tar.bz2
72 cd $XCBPROTO_VERSION; ./configure; make install; cd ..
73 rm -rf $XCBPROTO_VERSION
74
75 wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2
76 tar -xvf $LIBXCB_VERSION.tar.bz2 && rm $LIBXCB_VERSION.tar.bz2
77 cd $LIBXCB_VERSION; ./configure; make install; cd ..
78 rm -rf $LIBXCB_VERSION
79
80 wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.xz
81 tar -xvf $LIBDRM_VERSION.tar.xz && rm $LIBDRM_VERSION.tar.xz
82 cd $LIBDRM_VERSION
83 meson build -D vc4=true -D freedreno=true -D etnaviv=true -D libdir=lib/x86_64-linux-gnu; ninja -C build install
84 cd ..
85 rm -rf $LIBDRM_VERSION
86
87 wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz
88 tar -xvf $LIBWAYLAND_VERSION.tar.xz && rm $LIBWAYLAND_VERSION.tar.xz
89 cd $LIBWAYLAND_VERSION; ./configure --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation; make install; cd ..
90 rm -rf $LIBWAYLAND_VERSION
91
92 wget $WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.tar.xz
93 tar -xvf $WAYLAND_PROTOCOLS_VERSION.tar.xz && rm $WAYLAND_PROTOCOLS_VERSION.tar.xz
94 cd $WAYLAND_PROTOCOLS_VERSION; ./configure; make install; cd ..
95 rm -rf $WAYLAND_PROTOCOLS_VERSION
96
97
98 # The version of libglvnd-dev in debian is too old
99 # Check this page to see when this local compilation can be dropped in favour of the package:
100 # https://packages.debian.org/libglvnd-dev
101 GLVND_VERSION=1.2.0
102 wget https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v$GLVND_VERSION/libglvnd-v$GLVND_VERSION.tar.gz
103 tar -xvf libglvnd-v$GLVND_VERSION.tar.gz && rm libglvnd-v$GLVND_VERSION.tar.gz
104 pushd libglvnd-v$GLVND_VERSION; ./autogen.sh; ./configure; make install; popd
105 rm -rf libglvnd-v$GLVND_VERSION
106
107
108 pushd /usr/local
109 git clone https://gitlab.freedesktop.org/mesa/shader-db.git --depth 1
110 rm -rf shader-db/.git
111 cd shader-db
112 make
113 popd
114
115
116 ############### Uninstall the build software
117
118 apt-get purge -y \
119 $STABLE_EPHEMERAL
120
121 . .gitlab-ci/container/container_post_build.sh