summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 9b6be66aa00d4061d28c95b8eb81f6560d9b42f2 (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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# Maintainer: Xiao-Long Chen <chenxiaolong@cxl.epac.to>
# Original Maintainer: Jan de Groot <jgc@archlinux.org>
# Original Maintainer: Andreas Radke <andyrtr@archlinux.org>

# Based on Arch Linux commit: ffc5ea1b114b68ced90ad0dc0d236b2094d4be56

pkgbase=mesa-mir
pkgname=(opencl-mesa-mir libva-mesa-driver-mir mesa-vdpau-mir mesa-mir
         mesa-libgl-mir)
_ubuntu_rel=0ubuntu1
_ubuntu_ver=10.5.2
pkgver=10.5.7
pkgrel=1
arch=(i686 x86_64)
url="http://mesa3d.sourceforge.net"
makedepends=(python2-mako libxml2 libx11 glproto libdrm dri2proto dri3proto
             presentproto libxshmfence libxxf86vm libxdamage libvdpau libva
             wayland elfutils llvm systemd libomxil-bellagio libclc clang)
# Requires Mir, of course
makedepends+=(mir)
license=(custom)
source=("ftp://ftp.freedesktop.org/pub/mesa/${pkgver}/mesa-${pkgver}.tar.xz"{,.sig}
        "https://launchpad.net/ubuntu/+archive/primary/+files/mesa_${_ubuntu_ver:-${pkgver}}-${_ubuntu_rel}.diff.gz"
        LICENSE)
sha512sums=('0ccd9c3700d4c12a6625ad2a5ca46c721135fc3ef9650a6571f210f9f203d44c327e76604e3627edede2a561f88e2fabcf47a339bbd7c106a9c6408ed25a446c'
            'SKIP'
            '9a3580a29dfe01d2997631ea481e05bee8dc514a1853e90a4b79e88e9cd86062e4130c84f02b90ae0af21f82e135030498d1d7e97be59f90ec370a49a2ea41bd'
            '25da77914dded10c1f432ebcbf29941124138824ceecaf1367b3deedafaecabc082d463abcfa3d15abff59f177491472b505bcb5ba0c4a51bb6b93b4721a23c2')
validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D') # Emil Velikov <emil.l.velikov@gmail.com>

prepare() {
  cd ?esa-*

  # Apply Ubuntu's patches
  patch -p1 -i "../mesa_${_ubuntu_ver:-${pkgver}}-${_ubuntu_rel}.diff"

  for i in $(grep -v '#' debian/patches/series); do
    msg "Applying ${i}"
    patch -p1 -i "debian/patches/${i}"
  done
}

build() {
  cd ?esa-*

  autoreconf -vfi # our automake is far too new for their build system :)

  ./configure --prefix=/usr \
    --sysconfdir=/etc \
    --with-dri-driverdir=/usr/lib/xorg/modules/dri \
    --with-gallium-drivers=r300,r600,radeonsi,nouveau,svga,swrast \
    --with-dri-drivers=i915,i965,r200,radeon,nouveau,swrast \
    --with-egl-platforms=x11,drm,wayland,mir \
    --enable-llvm-shared-libs \
    --enable-egl \
    --enable-gbm \
    --enable-gallium-llvm \
    --enable-shared-glapi \
    --enable-glx \
    --enable-glx-tls \
    --enable-dri \
    --enable-osmesa \
    --enable-gles1 \
    --enable-gles2 \
    --enable-texture-float \
    --enable-xa \
    --enable-vdpau \
    --enable-omx \
    --enable-nine \
    --enable-opencl \
    --enable-opencl-icd \
    --with-clang-libdir=/usr/lib

  make

  # fake installation
  mkdir "${srcdir}"/fakeinstall
  make DESTDIR="${srcdir}"/fakeinstall install
}

replace_orig() {
    local pkg="${1}"
    provides+=("${pkg}=${pkgver}")
    conflicts+=(${pkg})
}

install_license() {
    local pkg="${1}"
    install -dm755 "${pkgdir}"/usr/share/licenses/${pkg}/
    install -m644 LICENSE "${pkgdir}"/usr/share/licenses/${pkg}/
}

package_opencl-mesa-mir() {
    pkgdesc="OpenCL support for AMD/ATI Radeon mesa drivers"
    depends=(expat libdrm elfutils libxfixes libxext libcl libclc clang)
    optdepends=('opencl-headers: headers necessary for OpenCL development')

    replace_orig opencl-mesa

    local etcdir="${pkgdir}"/etc
    local libdir="${pkgdir}"/usr/lib
  
    install -dm755 "${etcdir}"
    mv -v fakeinstall/etc/OpenCL "${etcdir}"
  
    install -dm755 "${libdir}"/gallium-pipe
    mv -v fakeinstall/usr/lib/lib*OpenCL* "${libdir}"
    mv -v fakeinstall/usr/lib/gallium-pipe/pipe_{r600,radeonsi}.so \
        "${libdir}"/gallium-pipe/

    install_license opencl-mesa-mir
}

package_libva-mesa-driver-mir() {
    pkgdesc="VA-API implementation for gallium"
    depends=(libdrm libx11 llvm-libs expat elfutils)

    replace_orig libva-mesa-driver

    local libdir="${pkgdir}"/usr/lib

    install -dm755 "${libdir}"
    mv -v fakeinstall/usr/lib/dri "${libdir}"

    install_license libva-mesa-driver-mir
}

package_mesa-vdpau-mir() {
    pkgdesc="Mesa VDPAU drivers"
    depends=(libdrm libx11 llvm-libs expat elfutils)

    replace_orig mesa-vdpau

    local libdir="${pkgdir}"/usr/lib

    install -dm755 "${libdir}"
    mv -v fakeinstall/usr/lib/vdpau "${libdir}"
           
    install_license mesa-vdpau-mir
}

package_mesa-mir() {
    pkgdesc="an open-source implementation of the OpenGL specification"
    depends=(libdrm wayland libxxf86vm libxdamage libxshmfence systemd elfutils
             libomxil-bellagio expat libtxc_dxtn llvm-libs)
    optdepends=('opengl-man-pages: for the OpenGL API man pages'
                'mesa-vdpau-mir: for accelerated video playback'
                'libva-mesa-driver-mir: for accelerated video playback')
    provides=(libglapi osmesa libgbm libgles libegl khrplatform-devel
              ati-dri intel-dri nouveau-dri svga-dri mesa-dri)
    conflicts=(libglapi osmesa libgbm libgles libegl khrplatform-devel
               ati-dri intel-dri nouveau-dri svga-dri mesa-dri)
    replaces=(libglapi osmesa libgbm libgles libegl khrplatform-devel
              ati-dri intel-dri nouveau-dri svga-dri mesa-dri)

    depends+=(mir)
    replace_orig mesa

    local etcdir="${pkgdir}"/etc
    local usrdir="${pkgdir}"/usr
    local libdir="${usrdir}"/lib
    local mesadir="${libdir}"/mesa

    install -dm755 "${etcdir}"
    mv -v fakeinstall/etc/drirc "${etcdir}"
  
    install -dm755 "${libdir}"/xorg/modules/dri
    # ati-dri, nouveau-dri, intel-dri, svga-dri, swrast
    mv -v fakeinstall/usr/lib/xorg/modules/dri/* \
        "${libdir}"/xorg/modules/dri
   
    mv -v fakeinstall/usr/lib/bellagio "${libdir}"
    mv -v fakeinstall/usr/lib/d3d      "${libdir}"
    mv -v fakeinstall/usr/lib/*.so*    "${libdir}"

    mv -v fakeinstall/usr/include "${usrdir}"
    mv -v fakeinstall/usr/lib/pkgconfig "${libdir}"
  
    install -dm755 "${mesadir}"
    # move libgl/EGL/glesv*.so to not conflict with blobs - may break .pc files ?
    mv -v "${libdir}"/libGL.so*    "${mesadir}"
    mv -v "${libdir}"/libEGL.so*   "${mesadir}"
    mv -v "${libdir}"/libGLES*.so* "${mesadir}"

    install_license mesa-mir
}

package_mesa-libgl-mir() {
    pkgdesc="Mesa 3-D graphics library"
    depends=(mesa-mir)
    provides=(libgl)
    replaces=(libgl)

    replace_orig mesa-libgl

    local libdir="${pkgdir}"/usr/lib
 
    # See FS#26284
    install -dm755 "${libdir}"/xorg/modules/extensions
    ln -s libglx.xorg "${libdir}"/xorg/modules/extensions/libglx.so

    ln -s /usr/lib/mesa/libGL.so.1.2.0 ${libdir}/libGL.so.1.2.0
    ln -s libGL.so.1.2.0               ${libdir}/libGL.so.1
    ln -s libGL.so.1.2.0               ${libdir}/libGL.so

    ln -s /usr/lib/mesa/libEGL.so.1.0.0 ${libdir}/libEGL.so.1.0.0
    ln -s libEGL.so.1.0.0               ${libdir}/libEGL.so.1
    ln -s libEGL.so.1.0.0               ${libdir}/libEGL.so

    ln -s /usr/lib/mesa/libGLESv1_CM.so.1.1.0 ${libdir}/libGLESv1_CM.so.1.1.0
    ln -s libGLESv1_CM.so.1.1.0               ${libdir}/libGLESv1_CM.so.1
    ln -s libGLESv1_CM.so.1.1.0               ${libdir}/libGLESv1_CM.so

    ln -s /usr/lib/mesa/libGLESv2.so.2.0.0 ${libdir}/libGLESv2.so.2.0.0
    ln -s libGLESv2.so.2.0.0               ${libdir}/libGLESv2.so.2
    ln -s libGLESv2.so.2.0.0               ${libdir}/libGLESv2.so

    install_license mesa-libgl-mir
}