#
# TODO:
+# - check if gallium_intel note is still valid, switch the bcond if not
# - consider:
# - subpackage with non-dri libGL for use with X-servers with missing GLX extension?
# - resurrect static if it's useful (using plain xorg target? DRI doesn't support static)
# Conditional build:
%bcond_without gallium # gallium drivers
%bcond_with gallium_intel # gallium i915 driver (instead of plain dri; doesn't work with AIGLX)
-%bcond_without gallium_nouveau # gallium nouveau driver (instead of plain dri)
-%bcond_without dri_nouveau # nouveau DRI driver (any kind)
+%bcond_without gallium_nouveau # gallium nouveau driver
%bcond_without egl # EGL libraries
%bcond_without gbm # Graphics Buffer Manager
+%bcond_without opencl # OpenCL library
%bcond_without wayland # Wayland EGL
%bcond_without xa # XA state tracker (for vmwgfx xorg driver)
%bcond_with static_libs # static libraries [not supported for DRI, thus broken currently]
%define libdrm_ver 2.4.39
%define dri2proto_ver 2.6
%define glproto_ver 1.4.14
-#
+
%define snap 20120921
-#
Summary: Free OpenGL implementation
Summary(pl.UTF-8): Wolnodostępna implementacja standardu OpenGL
Name: Mesa
-Version: 9.0
-Release: 0.1
+Version: 9.0.3
+Release: 1
License: MIT (core) and others - see license.html file
Group: X11/Libraries
Source0: ftp://ftp.freedesktop.org/pub/mesa/%{version}/%{name}Lib-%{version}.tar.bz2
-# Source0-md5: 60e557ce407be3732711da484ab3db6c
-Patch0: %{name}-realclean.patch
-Patch1: %{name}-link.patch
-Patch2: %{name}-wayland.patch
+# Source0-md5: d7515cc5116c72ac63d735655bd63689
+Patch0: %{name}-link.patch
+Patch1: %{name}-llvm3.2-support.patch
URL: http://www.mesa3d.org/
BuildRequires: autoconf >= 2.60
BuildRequires: automake
+%{?with_opencl:BuildRequires: clang-devel >= 3.1}
BuildRequires: expat-devel
BuildRequires: gcc >= 5:3.3
+%{?with_opencl:BuildRequires: gcc >= 6:4.6}
BuildRequires: libdrm-devel >= %{libdrm_ver}
BuildRequires: libselinux-devel
BuildRequires: libstdc++-devel >= 5:3.3.0
BuildRequires: libtalloc-devel >= 2:2.0.1
BuildRequires: libtool >= 2:2.2
BuildRequires: libvdpau-devel >= 0.4.1
-BuildRequires: llvm-devel >= 2.9
+BuildRequires: libxcb-devel >= 1.9
+BuildRequires: llvm-devel >= 3.1
+%{?with_opencl:BuildRequires: llvm-libclc}
+BuildRequires: perl-base
BuildRequires: pixman-devel
BuildRequires: pkgconfig
BuildRequires: pkgconfig(talloc) >= 2.0.1
-BuildRequires: python
+BuildRequires: python >= 2
BuildRequires: python-libxml2
-BuildRequires: python-modules
+BuildRequires: python-modules >= 2
BuildRequires: rpmbuild(macros) >= 1.470
BuildRequires: sed >= 4.0
+%{?with_egl:BuildRequires: udev-devel >= 1:150}
# wayland-{client,server}
-%{?with_wayland:BuildRequires: wayland-devel}
+%{?with_wayland:BuildRequires: wayland-devel >= 1.0.0}
BuildRequires: xorg-lib-libXdamage-devel
BuildRequires: xorg-lib-libXext-devel >= 1.0.5
BuildRequires: xorg-lib-libXfixes-devel
BuildRequires: xorg-proto-glproto-devel >= %{glproto_ver}
BuildRequires: xorg-util-makedepend
BuildRequires: xorg-xserver-server-devel >= %{xserver_ver}
-%if %{with egl}
-BuildRequires: libxcb-devel
-BuildRequires: udev-devel >= 1:150
-%endif
%if %{with gallium}
BuildRequires: xorg-proto-xextproto-devel >= 7.0.99.1
BuildRequires: xorg-xserver-server-devel >= 1.6.0
%if %{without gallium}
%undefine with_gallium_intel
%undefine with_gallium_nouveau
+%undefine with_opencl
%undefine with_xa
%endif
-%if %{without dri_nouveau}
-%undefine with_gallium_nouveau
-%endif
-
%if %{without egl}
%undefine with_gbm
%undefine with_wayland
%endif
-# _glapi_tls_Dispatch is defined in libglapi, but it's some kind of symbol ldd -r doesn't notice(?)
-%define skip_post_check_so libGLESv1_CM.so.1.* libGLESv2.so.2.* libGL.so.1.* libXvMCnouveau.so.* libdricore.*.so.* libOSMesa.so.* libdricore.*so.*
+# libGLESv1_CM, libGLESv2, libGL, libOSMesa:
+# _glapi_tls_Dispatch is defined in libglapi, but it's some kind of symbol ldd -r doesn't notice(?)
+# libdricore: internal library, not linked with libglapi
+# libgbm: circular dependency with libEGL (wayland_buffer_is_drm symbol)
+%define skip_post_check_so libGLESv1_CM.so.1.* libGLESv2.so.2.* libGL.so.1.* libOSMesa.so.* libdricore.*.so.* libgbm.*.so.*
# llvm build broken
%define filterout_ld -Wl,--as-needed
# glx driver in libEGL dlopens libGL.so
Requires: OpenGL >= 1.2
Requires: libdrm >= %{libdrm_ver}
+Requires: libxcb >= 1.9
+%{?with_wayland:Requires: wayland >= 1.0.0}
%if %{with gallium}
# for egl_gallium.so
Requires: %{name}-libOpenVG = %{version}-%{release}
Group: X11/Libraries
Requires: %{name}-libglapi = %{version}-%{release}
Requires: libdrm >= %{libdrm_ver}
-Provides: OpenGL = 2.1
+Provides: OpenGL = 3.1
Provides: OpenGL-GLX = 1.4
Obsoletes: Mesa
Obsoletes: Mesa-dri
Requires: xorg-proto-glproto-devel >= %{glproto_ver}
Suggests: OpenGL-doc-man
Provides: OpenGL-GLX-devel = 1.4
-Provides: OpenGL-devel = 2.1
+Provides: OpenGL-devel = 3.1
Obsoletes: Mesa-devel
Obsoletes: X11-OpenGL-devel < 1:7.0.0
Obsoletes: X11-OpenGL-devel-base < 1:7.0.0
License: MIT
Group: X11/Development/Libraries
Requires: %{name}-libGL-devel = %{version}-%{release}
-Provides: OpenGL-static = 2.1
+Provides: OpenGL-static = 3.1
Obsoletes: Mesa-static
Obsoletes: X11-OpenGL-static < 1:7.0.0
Obsoletes: XFree86-OpenGL-static < 1:7.0.0
%description libOSMesa-static -l pl.UTF-8
Biblioteka statyczna OSMesa (renderująca bitmapy w pamięci).
+%package libOpenCL
+Summary: Mesa implementation of OpenCL (Compuing Language) API
+Summary(pl.UTF-8): Implementacja Mesa API OpenCL (języka obliczeń)
+License: MIT
+Group: Libraries
+Requires: libdrm >= %{libdrm_ver}
+Requires: llvm-libclc
+Requires: udev-libs >= 1:150
+Provides: OpenCL = 1.1
+
+%description libOpenCL
+This package contains Mesa implementation of OpenCL - standard for
+cross-platform, parallel programming of modern processors found in
+personal computers, servers and handheld/embedded devices. OpenCL
+specification can be found on Khronos Group site:
+<http://www.khronos.org/opencl/>. Mesa implements OpenCL 1.1.
+
+%description libOpenCL -l pl.UTF-8
+Ten pakiet zawiera implementację Mesa standardu OpenCL - standardu
+wieloplatformowego, równoległego programowania nowoczesnych
+procesorów, jakie znajdują się w komputerach osobistych, serwerach
+oraz urządzeniach przenośnych/wbudowanych. Specyfikację OpenCL można
+znaleźć na stronie Khronos Group: <http://www.khronos.org/opencl/>.
+Mesa zawiera implementację OpenCL w wersji 1.1.
+
+%package libOpenCL-devel
+Summary: Header files for Mesa OpenCL library
+Summary(pl.UTF-8): Pliki nagłówkowe biblioteki Mesa OpenCL
+License: MIT
+Group: Development/Libraries
+Requires: %{name}-libOpenCL = %{version}-%{release}
+Provides: OpenCL-devel = 1.1
+
+%description libOpenCL-devel
+Header files for Mesa OpenCL library.
+
+%description libOpenCL-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki Mesa OpenCL.
+
+%package opencl-driver-i915
+Summary: i915 driver for Mesa OpenCL implementation
+Summary(pl.UTF-8): Sterownik i915 dla implementacji Mesa OpenCL
+Group: Libraries
+Requires: %{name}-libOpenCL = %{version}-%{release}
+
+%description opencl-driver-i915
+i915 driver for Mesa OpenCL implementation. It supports Intel
+915/945/G33/Q33/Q35/Pineview chips.
+
+%description opencl-driver-i915 -l pl.UTF-8
+Sterownik i915 dla implementacji Mesa standardu OpenCL. Obsługuje
+układy Intela z serii 915/945/G33/Q33/Q35/Pineview.
+
+%package opencl-driver-nouveau
+Summary: nouveau driver for Mesa OpenCL implementation
+Summary(pl.UTF-8): Sterownik nouveau dla implementacji Mesa OpenCL
+Group: Libraries
+Requires: %{name}-libOpenCL = %{version}-%{release}
+
+%description opencl-driver-nouveau
+nouveau driver for Mesa OpenCL implementation. It supports NVidia
+adapters.
+
+%description opencl-driver-nouveau -l pl.UTF-8
+Sterownik nouveau dla implementacji Mesa standardu OpenCL. Obsługuje
+karty graficzne firmy NVidia.
+
+%package opencl-driver-r300
+Summary: r300 driver for Mesa OpenCL implementation
+Summary(pl.UTF-8): Sterownik r300 dla implementacji Mesa OpenCL
+Group: Libraries
+Requires: %{name}-libOpenCL = %{version}-%{release}
+
+%description opencl-driver-r300
+r300 driver for Mesa OpenCL implementation. It supports ATI Radeon
+adapters based on R300/R400/RS690/R500 chips.
+
+%description opencl-driver-r300 -l pl.UTF-8
+Sterownik r300 dla implementacji Mesa standardu OpenCL. Obsługuje
+karty graficzne ATI Radeon oparte na układach R300/R400/RS690/R500.
+
+%package opencl-driver-r600
+Summary: r600 driver for Mesa OpenCL implementation
+Summary(pl.UTF-8): Sterownik r600 dla implementacji Mesa OpenCL
+Group: Libraries
+Requires: %{name}-libOpenCL = %{version}-%{release}
+
+%description opencl-driver-r600
+r600 driver for Mesa OpenCL implementation. It supports ATI Radeon
+adapters based on R600/R700 chips.
+
+%description opencl-driver-r600 -l pl.UTF-8
+Sterownik r600 dla implementacji Mesa standardu OpenCL. Obsługuje
+karty graficzne ATI Radeon oparte na układach R600/R700.
+
+%package opencl-driver-radeonsi
+Summary: radeonsi driver for Mesa OpenCL implementation
+Summary(pl.UTF-8): Sterownik radeonsi dla implementacji Mesa OpenCL
+Group: Libraries
+Requires: %{name}-libOpenCL = %{version}-%{release}
+
+%description opencl-driver-radeonsi
+radeonsi driver for Mesa OpenCL implementation. It supports ATI Radeon
+adapters based on Southern Islands chips.
+
+%description opencl-driver-radeonsi -l pl.UTF-8
+Sterownik radeonsi dla implementacji Mesa standardu OpenCL. Obsługuje
+karty graficzne ATI Radeon oparte na układach Southern Islands.
+
+%package opencl-driver-swrast
+Summary: Software (swrast) driver for Mesa OpenCL implementation
+Summary(pl.UTF-8): Sterownik programowy (swrast) dla implementacji Mesa OpenCL
+Group: Libraries
+Requires: %{name}-libOpenCL = %{version}-%{release}
+
+%description opencl-driver-swrast
+Software (swrast) driver for Mesa OpenCL implementation.
+
+%description opencl-driver-swrast -l pl.UTF-8
+Sterownik programowy (swrast) dla implementacji Mesa standardu OpenCL.
+
+%package opencl-driver-vmwgfx
+Summary: vmwgfx driver for Mesa OpenCL implementation
+Summary(pl.UTF-8): Sterownik vmwgfx dla implementacji Mesa OpenCL
+Group: Libraries
+Requires: %{name}-libOpenCL = %{version}-%{release}
+
+%description opencl-driver-vmwgfx
+vmwgfx driver for Mesa OpenCL implementation. It supports VMware
+virtual video adapter.
+
+%description opencl-driver-vmwgfx -l pl.UTF-8
+Sterownik vmwgfx dla implementacji Mesa standardu OpenCL. Obsługuje
+wirtualną kartę graficzną VMware.
+
%package libOpenVG
Summary: Mesa implementation of OpenVG (Vector Graphics Accelleration) API
Summary(pl.UTF-8): Implementacja Mesa API OpenVG (akceleracji grafiki wektorowej)
Plik nagłówkowy biblioteki Mesa Graphics Buffer Manager (zarządcy
bufora graficznego).
-%package gbm-driver-swrast
-Summary: Software (swrast) driver for Mesa GBM framework
-Summary(pl.UTF-8): Sterownik programowy (swrast) dla szkieletu Mesa GBM
-Group: Libraries
-Requires: %{name}-libgbm = %{version}-%{release}
-
-%description gbm-driver-swrast
-Software (swrast) driver for Mesa Graphics Buffer Manager.
-
-%description gbm-driver-swrast -l pl.UTF-8
-Sterownik programowy (swrast) dla szkieletu Mesa Graphics Buffer
-Manager (zarządcy bufora graficznego).
-
%package gbm-driver-i915
Summary: i915 driver for Mesa GBM framework
Summary(pl.UTF-8): Sterownik i915 dla szkieletu Mesa GBM
(zarządcy bufora graficznego). Obsługuje karty graficzne ATI Radeon
oparte na układach Southern Islands.
+%package gbm-driver-swrast
+Summary: Software (swrast) driver for Mesa GBM framework
+Summary(pl.UTF-8): Sterownik programowy (swrast) dla szkieletu Mesa GBM
+Group: Libraries
+Requires: %{name}-libgbm = %{version}-%{release}
+
+%description gbm-driver-swrast
+Software (swrast) driver for Mesa Graphics Buffer Manager.
+
+%description gbm-driver-swrast -l pl.UTF-8
+Sterownik programowy (swrast) dla szkieletu Mesa Graphics Buffer
+Manager (zarządcy bufora graficznego).
+
%package gbm-driver-vmwgfx
Summary: vmwgfx driver for Mesa GBM framework
Summary(pl.UTF-8): Sterownik vmwgfx dla szkieletu Mesa GBM
Group: Development/Libraries
Requires: %{name}-libwayland-egl = %{version}-%{release}
Requires: libdrm-devel >= %{libdrm_ver}
-Requires: wayland-devel
%description libwayland-egl-devel
Development files for Wayland EGL platform library.
Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart ATI R100
License: MIT
Group: X11/Libraries
+Requires: %{name}-dri-core = %{version}-%{release}
Requires: xorg-driver-video-ati
Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
Requires: xorg-xserver-server >= %{xserver_ver}
Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart ATI R200
License: MIT
Group: X11/Libraries
+Requires: %{name}-dri-core = %{version}-%{release}
Requires: xorg-driver-video-ati
Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
Requires: xorg-xserver-server >= %{xserver_ver}
Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart Intel i915
License: MIT
Group: X11/Libraries
+%if %{without gallium_intel}
+Requires: %{name}-dri-core = %{version}-%{release}
+%endif
Requires: xorg-driver-video-intel
Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
Requires: xorg-xserver-server >= %{xserver_ver}
Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart Intel i965
License: MIT
Group: X11/Libraries
+Requires: %{name}-dri-core = %{version}-%{release}
Requires: xorg-driver-video-intel
Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
Requires: xorg-xserver-server >= %{xserver_ver}
Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart NVIDIA
License: MIT
Group: X11/Libraries
+Requires: %{name}-dri-core = %{version}-%{release}
Requires: xorg-driver-video-nouveau
Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
Requires: xorg-xserver-server >= %{xserver_ver}
Summary(pl.UTF-8): Sterownik X.org DRI obsługujący rysowanie programowe
License: MIT
Group: X11/Libraries
+Requires: %{name}-dri-core = %{version}-%{release}
Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
Requires: xorg-xserver-server >= %{xserver_ver}
%prep
%setup -q
-#%patch100 -p1
-#patch0 -p0
+%patch0 -p1
%patch1 -p1
-#patch2 -p1
%build
%{__libtoolize}
i915 \
%endif
i965
-%if %{with dri_nouveau} && %{without gallium_nouveau}
nouveau
-%endif
%ifarch sparc sparcv9 sparc64
ffb \
%endif
%endif
%if %{with gallium}
--enable-gallium-llvm \
- --with-llvm-shared-libs \ \
+ --with-llvm-shared-libs \
%{__enable egl gallium-egl} \
%{__enable gbm gallium-gbm} \
+ %{?with_opencl:--enable-opencl} \
%{?with_egl:--enable-openvg} \
--enable-vdpau \
%{?with_xa:--enable-xa} \
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
+# omitted by make install (as of 9.0)
+cp -pr include/CL $RPM_BUILD_ROOT%{_includedir}
# strip out undesirable headers
%{__rm} $RPM_BUILD_ROOT%{_includedir}/GL/{vms_x_fix,wglext,wmesa}.h
# dlopened by soname
%{__rm} $RPM_BUILD_ROOT%{_libdir}/libXvMC*.so
# not used externally
-%{__rm} $RPM_BUILD_ROOT%{_libdir}/libglapi.so
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/lib{dricore%{version},glapi}.so
+# dlopened
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/xorg/modules/dri/*.la
+# not defined by standards; and not needed, there is pkg-config support
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/lib*.la
# remove "OS ABI: Linux 2.4.20" tag, so private copies (nvidia or fglrx),
# set up via /etc/ld.so.conf.d/*.conf will be preferred over this
%post libOSMesa -p /sbin/ldconfig
%postun libOSMesa -p /sbin/ldconfig
+%post libOpenCL -p /sbin/ldconfig
+%postun libOpenCL -p /sbin/ldconfig
+
%post libOpenVG -p /sbin/ldconfig
%postun libOpenVG -p /sbin/ldconfig
%{_libdir}/libOSMesa.a
%endif
+%if %{with opencl}
+%files libOpenCL
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libOpenCL.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libOpenCL.so.1
+%dir %{_libdir}/opencl
+
+%files libOpenCL-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libOpenCL.so
+%{_includedir}/CL
+
+%if %{with gallium_intel}
+%files opencl-driver-i915
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/opencl/pipe_i915.so
+%endif
+
+%if %{with gallium_nouveau}
+%files opencl-driver-nouveau
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/opencl/pipe_nouveau.so
+%endif
+
+%files opencl-driver-r300
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/opencl/pipe_r300.so
+
+%files opencl-driver-r600
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/opencl/pipe_r600.so
+
+%files opencl-driver-radeonsi
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/opencl/pipe_radeonsi.so
+
+%files opencl-driver-swrast
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/opencl/pipe_swrast.so
+
+%files opencl-driver-vmwgfx
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/opencl/pipe_vmwgfx.so
+%endif
+
%if %{with egl} && %{with gallium}
%files libOpenVG
%defattr(644,root,root,755)
%endif
%if %{with gallium}
-%files gbm-driver-swrast
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/gbm/pipe_swrast.so
-
%if %{with gallium_intel}
%files gbm-driver-i915
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/gbm/pipe_radeonsi.so
+%files gbm-driver-swrast
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/gbm/pipe_swrast.so
+
%files gbm-driver-vmwgfx
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/gbm/pipe_vmwgfx.so
%files dri-core
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libdricore9.0.0.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdricore9.0.0.so.1
+%attr(755,root,root) %{_libdir}/libdricore%{version}.so.*.*
+%attr(755,root,root) %ghost %{_libdir}/libdricore%{version}.so.1
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/drirc
%files dri-driver-ati-radeon-R100
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/xorg/modules/dri/i965_dri.so
-%if %{with dri_nouveau}
%files dri-driver-nouveau
%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/xorg/modules/dri/nouveau_vieux_dri.so
+%if %{with gallium_nouveau}
%attr(755,root,root) %{_libdir}/xorg/modules/dri/nouveau_dri.so
%endif