Creates different Docker images containing Mesa built with different
tools (autotools, meson, scons, etc).

The build is done in 3 levels: the first level creates a base image
with all the requirements to build Mesa.

The second level (based of the first one), builds different images with
different versions of LLVM. As Gallium drivers heavily relies on LLVM,
this will help to test the build with different LLVM versions.

Finally, the latest level creates different images versions of Mesa.
The main differences is the tool to build them: autotools, meson, scons,
building Gallium drivers with different LLVM versions, and so on.

As the purpose is just to test that everything can be built correctly,
all the images are discarded, except one (the autotools), which is
stored in the registry. Thus, anyone can just pull it locally and test
against their local system.

In order to build the images, Rocker is used. This is a tool that
extends the Dockerfiles with new features that are quite interested
here. The main features we use is the support for templating, and the
support for mounting external directories during the image building.
This help to use tools like ccache to improve the build speed.

Signed-off-by: Juan A. Suarez Romero <jasua...@igalia.com>
---
 .gitlab-ci.yml            | 177 +++++++++++++++++++++++++++++++++
 gitlab-ci/Rockerfile.base | 199 ++++++++++++++++++++++++++++++++++++++
 gitlab-ci/Rockerfile.llvm |  57 +++++++++++
 gitlab-ci/Rockerfile.mesa | 145 +++++++++++++++++++++++++++
 4 files changed, 578 insertions(+)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 gitlab-ci/Rockerfile.base
 create mode 100644 gitlab-ci/Rockerfile.llvm
 create mode 100644 gitlab-ci/Rockerfile.mesa

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 00000000000..5cee333dd45
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,177 @@
+image: docker:latest
+
+services:
+  - docker:dind
+
+stages:
+  - base
+  - llvm
+  - mesa
+
+variables:
+  DOCKER_IMAGE: $CI_REGISTRY_IMAGE
+  CCACHE_DIR: $CI_PROJECT_DIR/../ccache
+  LLVM: "6.0"
+
+cache:
+  paths:
+    - ccache/
+  key: "$CI_JOB_STAGE"
+
+before_script:
+  - mkdir -p ccache
+  - rm -fr ../ccache
+  - mv ccache ../
+  - export MAKEFLAGS=-j$(nproc)
+  - apk --no-cache add libc6-compat
+  - wget 
https://github.com/grammarly/rocker/releases/download/1.3.1/rocker-1.3.1-linux_amd64.tar.gz
+  - tar xvf rocker-1.3.1-linux_amd64.tar.gz
+  - rm rocker-1.3.1-linux_amd64.tar.gz
+  - mv rocker ..
+  - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
+
+after_script:
+  - mv ../ccache ./
+
+.build_llvm: &build_llvm
+  stage: llvm
+  cache: {}
+  script:
+    - ../rocker build -f gitlab-ci/Rockerfile.llvm --var LLVM=$LLVM
+    - docker push $CI_REGISTRY_IMAGE:llvm-$LLVM
+
+.build_mesa: &build_mesa
+  stage: mesa
+  script:
+    - ../rocker build -f gitlab-ci/Rockerfile.mesa --var BUILD=$BUILD --var 
LLVM=$LLVM --var TAG=$CI_COMMIT_REF_SLUG .
+
+base:
+  stage: base
+  script:
+    - DOCKERFILE_SHA256=$(cat gitlab-ci/Rockerfile.base | sha256sum | cut 
-c-64)
+    - IMAGE_DOCKERFILE_SHA256=$(./gitlab-ci/inspect-remote-image.sh 
gitlab-ci-token $CI_BUILD_TOKEN $CI_PROJECT_PATH "base" 
".config.Labels[\"dockerfile.sha256\"]" || echo -n "<notfound>")
+    - if [ "$DOCKERFILE_SHA256" != "$IMAGE_DOCKERFILE_SHA256" ] ; then 
FORCE_BUILD=true ; fi
+    - if [ "$FORCE_BUILD" ] ; then ../rocker build -f 
gitlab-ci/Rockerfile.base --var DOCKERFILE_SHA256=$DOCKERFILE_SHA256 ; fi
+    - if [ "$FORCE_BUILD" ] ; then docker push $CI_REGISTRY_IMAGE:base ; fi
+
+llvm:3.3:
+  variables:
+    LLVM: "3.3"
+  <<: *build_llvm
+
+llvm:3.6:
+  variables:
+    LLVM: "3.6"
+  <<: *build_llvm
+
+llvm:3.8:
+  variables:
+    LLVM: "3.8"
+  <<: *build_llvm
+
+llvm:3.9:
+  variables:
+    LLVM: "3.9"
+  <<: *build_llvm
+
+llvm:4.0:
+  variables:
+    LLVM: "4.0"
+  <<: *build_llvm
+
+llvm:5.0:
+  variables:
+    LLVM: "5.0"
+  <<: *build_llvm
+
+llvm:6.0:
+  variables:
+    LLVM: "6.0"
+  <<: *build_llvm
+
+meson:
+  variables:
+    BUILD: "meson"
+  <<: *build_mesa
+
+autotools:
+  variables:
+    BUILD: "autotools"
+  after_script:
+    - mv ../ccache ./
+    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
+  <<: *build_mesa
+
+distcheck:
+  variables:
+    BUILD: "distcheck"
+  artifacts:
+    name: "release"
+    paths:
+      - release-output/
+    expire_in: 1 week
+  <<: *build_mesa
+
+gallium:llvm:3.3:
+  variables:
+    BUILD: "gallium"
+    LLVM: "3.3"
+  <<: *build_mesa
+
+gallium:llvm:3.6:
+  variables:
+    BUILD: "gallium"
+    LLVM: "3.6"
+  <<: *build_mesa
+
+gallium:llvm:3.8:
+  variables:
+    BUILD: "gallium"
+    LLVM: "3.8"
+  <<: *build_mesa
+
+gallium:llvm:3.9:
+  variables:
+    BUILD: "gallium"
+    LLVM: "3.9"
+  <<: *build_mesa
+
+gallium:llvm:4.0:
+  variables:
+    BUILD: "gallium"
+    LLVM: "4.0"
+  <<: *build_mesa
+
+gallium:llvm:5.0:
+  variables:
+    BUILD: "gallium"
+    LLVM: "5.0"
+  <<: *build_mesa
+
+gallium:llvm:6.0:
+  variables:
+    BUILD: "gallium"
+    LLVM: "6.0"
+  <<: *build_mesa
+
+gallium:nollvm:
+  variables:
+    BUILD: "gallium"
+    LLVM: "0.0"
+  <<: *build_mesa
+
+scons:
+  variables:
+    BUILD: "scons"
+  <<: *build_mesa
+
+scons:nollvm:
+  variables:
+    BUILD: "scons"
+    LLVM: "0.0"
+  <<: *build_mesa
+
+windows:
+  variables:
+    BUILD: "windows"
+  <<: *build_mesa
diff --git a/gitlab-ci/Rockerfile.base b/gitlab-ci/Rockerfile.base
new file mode 100644
index 00000000000..a0cb5e5290d
--- /dev/null
+++ b/gitlab-ci/Rockerfile.base
@@ -0,0 +1,199 @@
+#
+# Base image for building Mesa.
+#
+# ~~~
+#  rocker build -f Rockerfile.base [--attach] [--pull]
+# ~~~
+#
+# Environment variables that are used in the build:
+#  - DOCKER_IMAGE: name of the final image to be tagged (default: mesa:base)
+#  - MAKEFLAGS: flags to pass to make (e.g., "-j8")
+#  - CCACHE_DIR: ccache directory (e.g, ~/.ccache)
+#
+
+{{ $image := (or .Env.DOCKER_IMAGE "mesa") }}
+
+FROM ubuntu:xenial
+
+LABEL maintainer "Juan A. Suarez Romero <jasua...@igalia.com>"
+
+ENV LC_ALL=C.UTF-8
+
+RUN apt-get update                                                             
        \
+  && apt-get --no-install-recommends -y install autoconf gcc g++ sudo cmake 
patch git  \
+    automake pkg-config libtool-bin bison flex python-pip 
libpthread-stubs0-dev wget   \
+    libxau-dev libx11-dev libxext-dev libxdamage-dev libx11-xcb-dev gettext 
xutils-dev \
+    zlib1g-dev scons libelf-dev libxvmc-dev libvdpau-dev libva-dev libclc-dev 
ccache   \
+    libpciaccess-dev libxxf86vm-dev python-setuptools python-wheel bzip2 make 
pciutils \
+    mesa-common-dev libexpat1-dev xz-utils libedit-dev libffi-dev 
libunwind-dev        \
+    libxml2-dev libomxil-bellagio-dev mesa-utils waffle-utils vulkan-utils 
python3-pip \
+    python3-setuptools libgtest-dev                                            
        \
+  && rm -fr /var/lib/apt/lists/*
+
+RUN pip install mako
+
+RUN pip3 install meson ninja
+
+RUN adduser --gecos "" local && passwd -d local && adduser local sudo
+
+USER local
+
+WORKDIR /home/local
+
+ENV LDFLAGS="-L/usr/local/lib $LDFLAGS"
+
+{{ if .Env.MAKEFLAGS }}
+ENV MAKEFLAGS={{ .Env.MAKEFLAGS }}
+{{ end }}
+
+{{ if .Env.CCACHE_DIR }}
+MOUNT {{ .Env.CCACHE_DIR }}:/home/local/.ccache:Z
+RUN sudo chown -R local:local /home/local/.ccache
+ENV PATH=/usr/lib/ccache:$PATH
+{{ end }}
+
+ATTACH [ "/bin/bash" ]
+
+RUN wget 
https://xorg.freedesktop.org/releases/individual/proto/glproto-1.4.14.tar.bz2  \
+  && tar -jxvf glproto-1.4.14.tar.bz2                                          
         \
+  && rm glproto-1.4.14.tar.bz2                                                 
         \
+  && cd glproto-1.4.14                                                         
         \
+  && ./configure                                                               
         \
+  && make                                                                      
         \
+  && sudo make install                                                         
         \
+  && sudo ldconfig                                                             
         \
+  && sudo rm -fr ../glproto-1.4.14
+
+RUN wget 
https://xorg.freedesktop.org/releases/individual/proto/dri2proto-2.8.tar.bz2   \
+  && tar -jxvf dri2proto-2.8.tar.bz2                                           
         \
+  && rm dri2proto-2.8.tar.bz2                                                  
         \
+  && cd dri2proto-2.8                                                          
         \
+  && ./configure                                                               
         \
+  && make                                                                      
         \
+  && sudo make install                                                         
         \
+  && sudo ldconfig                                                             
         \
+  && sudo rm -fr ../dri2proto-2.8
+
+RUN wget 
https://xorg.freedesktop.org/releases/individual/proto/dri3proto-1.0.tar.bz2   \
+  && tar -jxvf dri3proto-1.0.tar.bz2                                           
         \
+  && rm dri3proto-1.0.tar.bz2                                                  
         \
+  && cd dri3proto-1.0                                                          
         \
+  && ./configure                                                               
         \
+  && make                                                                      
         \
+  && sudo make install                                                         
         \
+  && sudo ldconfig                                                             
         \
+  && sudo rm -fr ../dri3proto-1.0
+
+RUN wget 
https://xorg.freedesktop.org/releases/individual/proto/presentproto-1.0.tar.bz2 
\
+  && tar -jxvf presentproto-1.0.tar.bz2                                        
          \
+  && rm presentproto-1.0.tar.bz2                                               
          \
+  && cd presentproto-1.0                                                       
          \
+  && ./configure                                                               
          \
+  && make                                                                      
          \
+  && sudo make install                                                         
          \
+  && sudo ldconfig                                                             
          \
+  && sudo rm -fr ../presentproto-1.0
+
+RUN wget https://xcb.freedesktop.org/dist/xcb-proto-1.13.tar.bz2               
          \
+  && tar -jxvf xcb-proto-1.13.tar.bz2                                          
          \
+  && rm xcb-proto-1.13.tar.bz2                                                 
          \
+  && cd xcb-proto-1.13                                                         
          \
+  && ./configure                                                               
          \
+  && make                                                                      
          \
+  && sudo make install                                                         
          \
+  && sudo ldconfig                                                             
          \
+  && sudo rm -fr ../xcb-proto-1.13
+
+RUN wget https://xcb.freedesktop.org/dist/libxcb-1.13.tar.bz2                  
          \
+  && tar -jxvf libxcb-1.13.tar.bz2                                             
          \
+  && rm libxcb-1.13.tar.bz2                                                    
          \
+  && cd libxcb-1.13                                                            
          \
+  && ./configure                                                               
          \
+  && make                                                                      
          \
+  && sudo make install                                                         
          \
+  && sudo ldconfig                                                             
          \
+  && sudo rm -fr ../libxcb-1.13
+
+RUN wget 
https://xorg.freedesktop.org//releases/individual/proto/renderproto-0.11.1.tar.bz2
 \
+  && tar -jxvf renderproto-0.11.1.tar.bz2                                      
             \
+  && rm renderproto-0.11.1.tar.bz2                                             
             \
+  && cd renderproto-0.11.1                                                     
             \
+  && ./configure                                                               
             \
+  && make                                                                      
             \
+  && sudo make install                                                         
             \
+  && sudo ldconfig                                                             
             \
+  && sudo rm -fr ../renderproto-0.11.1
+
+RUN wget 
https://xorg.freedesktop.org/releases/individual/lib/libXrender-0.9.10.tar.bz2 \
+  && tar -jxvf libXrender-0.9.10.tar.bz2                                       
         \
+  && rm libXrender-0.9.10.tar.bz2                                              
         \
+  && cd libXrender-0.9.10                                                      
         \
+  && ./configure                                                               
         \
+  && make                                                                      
         \
+  && sudo make install                                                         
         \
+  && sudo ldconfig                                                             
         \
+  && sudo rm -fr ../libXrender-0.9.10
+
+RUN wget 
https://xorg.freedesktop.org/releases/individual/proto/randrproto-1.3.0.tar.bz2 
\
+  && tar -jxvf randrproto-1.3.0.tar.bz2                                        
          \
+  && rm randrproto-1.3.0.tar.bz2                                               
          \
+  && cd randrproto-1.3.0                                                       
          \
+  && ./configure                                                               
          \
+  && make                                                                      
          \
+  && sudo make install                                                         
          \
+  && sudo ldconfig                                                             
          \
+  && sudo rm -fr ../randrproto-1.3.0
+
+RUN wget 
https://xorg.freedesktop.org/releases/individual/lib/libXrandr-1.3.0.tar.bz2   \
+  && tar -jxvf libXrandr-1.3.0.tar.bz2                                         
         \
+  && rm libXrandr-1.3.0.tar.bz2                                                
         \
+  && cd libXrandr-1.3.0                                                        
         \
+  && ./configure                                                               
         \
+  && make                                                                      
         \
+  && sudo make install                                                         
         \
+  && sudo ldconfig                                                             
         \
+  && sudo rm -fr ../libXrandr-1.3.0
+
+RUN wget 
https://xorg.freedesktop.org/releases/individual/lib/libxshmfence-1.1.tar.bz2  \
+  && tar -jxvf libxshmfence-1.1.tar.bz2                                        
         \
+  && rm libxshmfence-1.1.tar.bz2                                               
         \
+  && cd libxshmfence-1.1                                                       
         \
+  && ./configure                                                               
         \
+  && make                                                                      
         \
+  && sudo make install                                                         
         \
+  && sudo ldconfig                                                             
         \
+  && sudo rm -fr ../libxshmfence-1.1
+
+RUN wget 
https://people.freedesktop.org/~cbrill/libtxc_dxtn/libtxc_dxtn-1.0.1.tar.bz2   \
+  && tar -jxvf libtxc_dxtn-1.0.1.tar.bz2                                       
         \
+  && rm libtxc_dxtn-1.0.1.tar.bz2                                              
         \
+  && cd libtxc_dxtn-1.0.1                                                      
         \
+  && ./configure                                                               
         \
+  && make                                                                      
         \
+  && sudo make install                                                         
         \
+  && sudo ldconfig                                                             
         \
+  && sudo rm -fr ../libtxc_dxtn-1.0.1
+
+RUN wget https://wayland.freedesktop.org/releases/wayland-1.15.0.tar.xz        
         \
+  && tar -Jxvf wayland-1.15.0.tar.xz                                           
         \
+  && rm wayland-1.15.0.tar.xz                                                  
         \
+  && cd wayland-1.15.0                                                         
         \
+  && ./configure --disable-documentation                                       
         \
+  && make                                                                      
         \
+  && sudo make install                                                         
         \
+  && sudo ldconfig                                                             
         \
+  && sudo rm -fr ../wayland-1.15.0
+
+RUN wget https://wayland.freedesktop.org/releases/wayland-protocols-1.8.tar.xz 
         \
+  && tar -Jxvf wayland-protocols-1.8.tar.xz                                    
         \
+  && rm wayland-protocols-1.8.tar.xz                                           
         \
+  && cd wayland-protocols-1.8                                                  
         \
+  && ./configure                                                               
         \
+  && make                                                                      
         \
+  && sudo make install                                                         
         \
+  && sudo ldconfig                                                             
         \
+  && sudo rm -fr ../wayland-protocols-1.8
+
+USER root
+
+TAG {{ $image }}:base
diff --git a/gitlab-ci/Rockerfile.llvm b/gitlab-ci/Rockerfile.llvm
new file mode 100644
index 00000000000..ed75f4f0f02
--- /dev/null
+++ b/gitlab-ci/Rockerfile.llvm
@@ -0,0 +1,57 @@
+#
+# This builds the base image for building Mesa.
+#
+# ~~~
+#  rocker build -f Rockerfile.llvm [--pull]     \
+#    --var LLVM=3.3             # 3.3, 3.6, 3.8, 3.9, 4.0, 5.0, 6.0
+# ~~~
+#
+# Environment variables that are used in the build:
+#  - DOCKER_IMAGE: name of the final image to be tagged (default: mesa:$LLVM)
+#
+# NOTE: LLVM 3.3 package has been created with checkinstall using Base image
+#
+# ~~~
+#  wget https://releases.llvm.org/3.3/llvm-3.3.src.tar.gz                      
         \
+#    && tar xzpf llvm-3.3.src.tar.gz                                           
         \
+#    && cd llvm-3.3.src                                                        
         \
+#    && mkdir build                                                            
         \
+#    && cd build                                                               
         \
+#    && ../configure --enable-optimized --enable-shared 
--prefix=/usr/lib/llvm-3.3      \
+#    && make                                                                   
         \
+#    && echo "LLVM Toolchain 3.3" > description-pak                            
         \
+#    && checkinstall -D -y --pkgname=llvm-3.3 --pkgversion=3.3 
--pkgrelease=+checkinstall1 --maintainer=jasua...@igalia.com --provides=llvm
+#  ~~~
+#
+
+{{ $image := (or .Env.DOCKER_IMAGE "mesa") }}
+{{ $distro := "xenial" }}
+
+FROM {{ $image }}:base
+
+LABEL maintainer "Juan A. Suarez Romero <jasua...@igalia.com>"
+
+{{ if ge .LLVM "3.9" }}
+RUN apt-get update                                                            \
+  && apt-get --no-install-recommends -y install gnupg                         \
+  && wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -    \
+  && echo "deb http://apt.llvm.org/{{ $distro }}/ llvm-toolchain-{{ $distro 
}}-{{ .LLVM }} main" >> /etc/apt/sources.list       \
+  && rm -fr /var/lib/apt/lists/*
+{{ end }}
+
+
+{{ if eq .LLVM "3.3" }}
+RUN wget 
https://people.igalia.com/jasuarez/packages/llvm-3.3_3.3-+checkinstall1_amd64.deb
      \
+  && dpkg -i llvm-3.3_3.3-+checkinstall1_amd64.deb                             
                 \
+  && rm llvm-3.3_3.3-+checkinstall1_amd64.deb
+ENV LD_LIBRARY_PATH=/usr/lib/llvm-{{ .LLVM }}/lib:$LD_LIBRARY_PATH
+
+{{ else }}
+
+RUN apt-get update                                                            \
+  && apt-get --no-install-recommends -y install libclang-{{ .LLVM }}-dev      \
+    llvm-{{ .LLVM }}-dev                                                      \
+  && rm -fr /var/lib/apt/lists/*
+{{ end }}
+
+TAG {{ $image }}:llvm-{{ .LLVM }}
diff --git a/gitlab-ci/Rockerfile.mesa b/gitlab-ci/Rockerfile.mesa
new file mode 100644
index 00000000000..7b52e3e3a74
--- /dev/null
+++ b/gitlab-ci/Rockerfile.mesa
@@ -0,0 +1,145 @@
+#
+# This builds and installs Mesa.
+#
+# ~~~
+#  rocker build -f Rockerfile.mesa [--attach] [--pull]                         
         \
+#    --var BUILD=autotools      # meson, scons, autotools, windows, distcheck, 
gallium  \
+#    [--var DEBUG=true]         # build with debug options (true, false)       
         \
+#    [--var LLVM=3.3]           # 3.3, 3.6, 3.8, 3.9, 4.0, ...                 
         \
+#    [--var TAG=master]         # master, staging-18.0, staging-18.1, ...      
         \
+# ~~~
+#
+# Environment variables that are used in the build:
+#  - DOCKER_IMAGE: name of the final image to be tagged (default: mesa[:$TAG])
+#  - MAKEFLAGS: flags to pass to make (e.g., "-j8")
+#  - CCACHE_DIR: ccache directory (e.g., ~/.ccache)
+#
+
+{{ $image := (or .Env.DOCKER_IMAGE "mesa") }}
+{{ $llvm_version := (or .LLVM "0.0") }}
+{{ $debug_build := (or .DEBUG "true") }}
+
+{{ if eq .BUILD "windows"}}
+FROM {{ $image }}:base
+{{ else if eq $llvm_version "0.0" }}
+FROM {{ $image }}:base
+{{ else }}
+FROM {{ $image }}:llvm-{{ .LLVM }}
+{{ end }}
+
+LABEL maintainer "Juan A. Suarez Romero <jasua...@igalia.com>"
+
+{{ if eq .BUILD "windows" }}
+RUN apt-get update                                              \
+  && apt-get -y --no-install-recommends install mingw-w64       \
+  && rm -fr /var/lib/apt/lists/*
+{{ end }}
+
+USER local
+
+ENV PATH=/home/local/.bin/:/usr/lib/llvm-{{ $llvm_version }}/bin:$PATH
+
+ADD . /home/local/mesa
+RUN sudo chown -R local:local /home/local/mesa
+
+{{ if .Env.MAKEFLAGS }}
+ENV MAKEFLAGS={{ .Env.MAKEFLAGS }}
+ENV SCONSFLAGS={{ .Env.MAKEFLAGS }}
+{{ end }}
+
+{{ if .Env.CCACHE_DIR }}
+MOUNT {{ .Env.CCACHE_DIR }}:/home/local/.ccache:Z
+RUN sudo chown -R local:local /home/local/.ccache
+ENV PATH=/usr/lib/ccache:$PATH
+ENV USE_CCACHE=1
+{{ end }}
+
+WORKDIR /home/local/mesa
+
+RUN if [ -d .git ] ; then git show --stat > /home/local/mesa-head.txt ; else 
echo "FROM TARBALL" > /home/local/mesa-head.txt ; fi
+
+ATTACH [ "/bin/bash" ]
+
+RUN export DRM_VERSION=`cat /home/local/mesa/configure.ac | egrep 
^LIBDRM.*REQUIRED| cut -f2 -d= | sort -nr | head -n 1` \
+  && wget https://dri.freedesktop.org/libdrm/libdrm-$DRM_VERSION.tar.bz2       
                                          \
+  && tar -jxvf libdrm-$DRM_VERSION.tar.bz2                                     
                                          \
+  && rm libdrm-$DRM_VERSION.tar.bz2                                            
                                          \
+  && cd libdrm-$DRM_VERSION                                                    
                                          \
+  && ./configure --enable-freedreno --enable-vc4 
--enable-etnaviv-experimental-api --enable-tegra-experimental-api       \
+  && make                                                                      
                                          \
+  && sudo make install                                                         
                                          \
+  && sudo ldconfig                                                             
                                          \
+  && sudo rm -fr ../libdrm-$DRM_VERSION                                        
                                          \
+  && unset DRM_VERSION
+
+
+{{ if eq .BUILD "scons" }}
+{{ if eq $llvm_version "0.0" }}
+RUN scons llvm=0               \
+  && scons llvm=0 check        \
+  && sudo rm -fr /home/local/mesa
+{{ else }}
+RUN scons llvm=1               \
+  && scons llvm=1 check        \
+  && sudo rm -fr /home/local/mesa
+{{ end }}
+
+{{ else if eq .BUILD "windows" }}
+
+RUN scons platform=windows toolchain=crossmingw \
+  && sudo rm -fr /home/local/mesa
+
+{{ else if eq .BUILD "distcheck" }}
+
+MOUNT .:/context
+RUN ./autogen.sh                                                \
+  && make distcheck                                             \
+  && __version=`cat VERSION`                                    \
+  && mkdir -p /context/release-output                           \
+  && mv /home/local/mesa-head.txt /context/release-output       \
+  && mv mesa-$__version.tar.xz /context/release-output          \
+  && sudo rm -fr /home/local/mesa
+
+{{ else if eq .BUILD "autotools" "gallium" }}
+
+RUN export LLVM={{ $llvm_version }}.0\
+  && eval `cat configure.ac | egrep ^LLVM_REQUIRED`                            
                                         \
+  && if dpkg --compare-versions $LLVM ge $LLVM_REQUIRED_GALLIUM ; then 
GALLIUM_DRIVERS=i915,etnaviv,freedreno,imx,nouveau,pl111,r300,svga,swrast,tegra,v3d,vc4,virgl
 ; fi \
+  && if dpkg --compare-versions $LLVM ge $LLVM_REQUIRED_R600 ; then 
GALLIUM_DRIVERS=$GALLIUM_DRIVERS,r600 ; fi          \
+  && if dpkg --compare-versions $LLVM ge $LLVM_REQUIRED_RADEONSI ; then 
GALLIUM_DRIVERS=$GALLIUM_DRIVERS,radeonsi ; fi  \
+  && if dpkg --compare-versions $LLVM ge $LLVM_REQUIRED_SWR ; then 
GALLIUM_DRIVERS=$GALLIUM_DRIVERS,swr ; fi            \
+  && DRI_DRIVERS=i915,i965,nouveau,r200,radeon,swrast                          
                                         \
+  && VULKAN_DRIVERS=intel                                                      
                                         \
+  && if dpkg --compare-versions $LLVM ge $LLVM_REQUIRED_RADV ; then 
VULKAN_DRIVERS=$VULKAN_DRIVERS,radeon ; fi          \
+  && ./autogen.sh                                                              
                                         \
+    --with-gallium-drivers=$GALLIUM_DRIVERS                                    
                                         \
+    {{ if eq .BUILD "gallium" }} --with-dri-drivers=""                         
                                         \
+    {{ else }} --with-dri-drivers=$DRI_DRIVERS                                 
                                         \
+    --with-vulkan-drivers=$VULKAN_DRIVERS                                      
                                         \
+    --with-egl-platforms=x11,drm,wayland {{ end }}                             
                                         \
+    {{ if ne $llvm_version "0.0" }} --enable-llvm --enable-llvm-shared-libs {{ 
end }}                                   \
+    {{ if ne $debug_build "false" }} --enable-debug {{ end }}                  
                                         \
+    --enable-glx-tls --enable-gbm --enable-egl                                 
                                         \
+  && make                                                                      
                                         \
+  && make check                                                                
                                         \
+  && sudo make install                                                         
                                         \
+  && sudo ldconfig                                                             
                                         \
+  && sudo rm -fr /home/local/mesa
+
+{{ else if eq .BUILD "meson" }}
+
+RUN meson  _build                       \
+  && ninja -C _build                    \
+  && sudo ninja -C _build install       \
+  && sudo ldconfig                      \
+  && sudo rm -fr /home/local/mesa
+
+{{ end }}
+
+WORKDIR /home/local
+
+USER root
+
+{{ if .TAG }}
+TAG {{ $image }}:{{ .TAG }}
+{{ end }}
-- 
2.17.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to