summaryrefslogtreecommitdiffstats
path: root/.travis.yml
blob: 38f5571351108ce6443f4f049f836ace87194300 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
language: c

sudo: false
dist: trusty

cache:
  apt: true
  ccache: true

env:
  global:
    - XORG_RELEASES=http://xorg.freedesktop.org/releases/individual
    - XCB_RELEASES=http://xcb.freedesktop.org/dist
    - XORGMACROS_VERSION=util-macros-1.19.0
    - GLPROTO_VERSION=glproto-1.4.17
    - DRI2PROTO_VERSION=dri2proto-2.8
    - LIBPCIACCESS_VERSION=libpciaccess-0.13.4
    - LIBDRM_VERSION=libdrm-2.4.74
    - XCBPROTO_VERSION=xcb-proto-1.11
    - LIBXCB_VERSION=libxcb-1.11
    - LIBXSHMFENCE_VERSION=libxshmfence-1.2
    - LIBTXC_DXTN_VERSION=libtxc_dxtn-1.0.1
    - PKG_CONFIG_PATH=$HOME/prefix/lib/pkgconfig
    - LD_LIBRARY_PATH="$HOME/prefix/lib:$LD_LIBRARY_PATH"

matrix:
  include:
    - env:
        - LABEL="make"
        - BUILD=make
        - MAKEFLAGS=-j2
        - LLVM_VERSION=3.9
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
      addons:
        apt:
          sources:
            - llvm-toolchain-trusty-3.9
          packages:
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            # From sources above
            - llvm-3.9-dev
            # Common
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
    - env:
        - LABEL="scons"
        - BUILD=scons
        - SCONSFLAGS="-j4"
        # Explicitly disable.
        - SCONS_TARGET="llvm=0"
      addons:
        apt:
          packages:
            - scons
            # Common
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev
    - env:
        - LABEL="scons LLVM"
        - BUILD=scons
        - SCONSFLAGS="-j4"
        - SCONS_TARGET="llvm=1"
        - LLVM_VERSION=3.3
        - LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
      addons:
        apt:
          packages:
            - scons
            # LLVM packaging is broken and misses these dependencies
            - libedit-dev
            - llvm-3.3-dev
            # Common
            - x11proto-xf86vidmode-dev
            - libexpat1-dev
            - libx11-xcb-dev
            - libelf-dev

install:
  - pip install --user mako

  # Since libdrm gets updated in configure.ac regularly, try to pick up the
  # latest version from there.
  - for line in `grep "^LIBDRM.*_REQUIRED=" configure.ac`; do
      old_ver=`echo $LIBDRM_VERSION | sed 's/libdrm-//'`;
      new_ver=`echo $line | sed 's/.*REQUIRED=//'`;
      if `echo "$old_ver,$new_ver" | tr ',' '\n' | sort -Vc 2> /dev/null`; then
        export LIBDRM_VERSION="libdrm-$new_ver";
      fi;
    done

  # Install dependencies where we require specific versions (or where
  # disallowed by Travis CI's package whitelisting).

  - wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2
  - tar -jxvf $XORGMACROS_VERSION.tar.bz2
  - (cd $XORGMACROS_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget $XORG_RELEASES/proto/$GLPROTO_VERSION.tar.bz2
  - tar -jxvf $GLPROTO_VERSION.tar.bz2
  - (cd $GLPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget $XORG_RELEASES/proto/$DRI2PROTO_VERSION.tar.bz2
  - tar -jxvf $DRI2PROTO_VERSION.tar.bz2
  - (cd $DRI2PROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2
  - tar -jxvf $XCBPROTO_VERSION.tar.bz2
  - (cd $XCBPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2
  - tar -jxvf $LIBXCB_VERSION.tar.bz2
  - (cd $LIBXCB_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget $XORG_RELEASES/lib/$LIBPCIACCESS_VERSION.tar.bz2
  - tar -jxvf $LIBPCIACCESS_VERSION.tar.bz2
  - (cd $LIBPCIACCESS_VERSION && ./configure --prefix=$HOME/prefix && make install)

  - wget http://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
  - tar -jxvf $LIBDRM_VERSION.tar.bz2
  - (cd $LIBDRM_VERSION && ./configure --prefix=$HOME/prefix --enable-vc4 --enable-freedreno --enable-etnaviv-experimental-api && make install)

  - wget $XORG_RELEASES/lib/$LIBXSHMFENCE_VERSION.tar.bz2
  - tar -jxvf $LIBXSHMFENCE_VERSION.tar.bz2
  - (cd $LIBXSHMFENCE_VERSION && ./configure --prefix=$HOME/prefix && make install)

  # libtxc-dxtn uses the patented S3 Texture Compression
  # algorithm. Therefore, we don't want to use this library but it is
  # still possible through setting the USE_TXC_DXTN variable to yes in
  # the travis web UI.
  #
  # According to Wikipedia, the patent expires on October 2, 2017:
  # https://en.wikipedia.org/wiki/S3_Texture_Compression#Patent
  - if test "x$USE_TXC_DXTN" = xyes; then
      wget https://people.freedesktop.org/~cbrill/libtxc_dxtn/$LIBTXC_DXTN_VERSION.tar.bz2;
      tar -jxvf $LIBTXC_DXTN_VERSION.tar.bz2;
      (cd $LIBTXC_DXTN_VERSION && ./configure --prefix=$HOME/prefix && make install);
    fi

script:
  - if test "x$BUILD" = xmake; then
      ./autogen.sh --enable-debug
        --with-platforms=x11,drm
        --with-dri-drivers=i915,i965,radeon,r200,swrast,nouveau
        --with-gallium-drivers=i915,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,etnaviv,imx
        --with-vulkan-drivers=radeon
        --disable-llvm-shared-libs
        ;
      make && make check;
    fi

  - if test "x$BUILD" = xscons; then
      scons $SCONS_TARGET && scons $SCONS_TARGET check;
    fi