# - resurrect static if it's useful
#
# Conditional build:
+%bcond_without egl # build egl
+%bcond_without gallium # don't build gallium
+%bcond_with gallium_intel # gallium i915 driver (but doesn't work with AIGLX)
+%bcond_with gallium_radeon # gallium radeon driver
+%bcond_without gallium_nouveau # gallium nouveau driver
%bcond_without motif # build static libGLw without Motif interface
%bcond_with multigl # package libGL in a way allowing concurrent install with nvidia/fglrx drivers
-%bcond_with static
+%bcond_without osmesa # don't build osmesa
+%bcond_with static # static libraries
#
# minimal supported xserver version
%define xserver_ver 1.5.0
# (until they start to be somehow versioned themselves)
%define glapi_ver 7.1.0
#
+%define libdrm_ver 2.4.23
+%define dri2proto_ver 2.1
+%define glproto_ver 1.4.11
+#
Summary: Free OpenGL implementation
Summary(pl.UTF-8): Wolnodostępna implementacja standardu OpenGL
Name: Mesa
-Version: 7.4.1
+Version: 7.10.1
Release: 1%{?with_multigl:.mgl}
License: MIT (core), SGI (GLU,libGLw) and others - see license.html file
Group: X11/Libraries
-Source0: http://dl.sourceforge.net/mesa3d/%{name}Lib-%{version}.tar.bz2
-# Source0-md5: 423260578b653818ba66c2fcbde6d7ad
-Source1: http://dl.sourceforge.net/mesa3d/%{name}Demos-%{version}.tar.bz2
-# Source1-md5: 1e169fb6abc2b45613f1c98a82dfe690
-Source2: http://www.archlinux.org/~jgc/gl-manpages-1.0.1.tar.bz2
-# Source2-md5: 6ae05158e678f4594343f32c2ca50515
+Source0: ftp://ftp.freedesktop.org/pub/mesa/%{version}/%{name}Lib-%{version}.tar.bz2
+# Source0-md5: efe8da4d80c2a5d32a800770b8ce5dfa
Patch0: %{name}-realclean.patch
+Patch1: %{name}-selinux.patch
+Patch2: %{name}-git.patch
+Patch3: %{name}-nouveau-updates.patch
+Patch4: %{name}-nouveau-revert.patch
+Patch5: %{name}-nouveau-classic-libdrm.patch
URL: http://www.mesa3d.org/
+BuildRequires: autoconf >= 2.59
+BuildRequires: automake
BuildRequires: expat-devel
-BuildRequires: libdrm-devel >= 2.4.5
+BuildRequires: libdrm-devel >= %{libdrm_ver}
BuildRequires: libselinux-devel
-BuildRequires: libstdc++-devel
+BuildRequires: libstdc++-devel >= 5:3.3.0
+BuildRequires: libtalloc-devel >= 2:2.0.1
BuildRequires: libtool >= 2:1.4d
%{?with_motif:BuildRequires: motif-devel}
+BuildRequires: pixman-devel
+BuildRequires: pkgconfig
+BuildRequires: python
+BuildRequires: python-modules
BuildRequires: rpmbuild(macros) >= 1.470
BuildRequires: sed >= 4.0
BuildRequires: xorg-lib-libXdamage-devel
+BuildRequires: xorg-lib-libXext-devel >= 1.0.5
BuildRequires: xorg-lib-libXt-devel
BuildRequires: xorg-lib-libXxf86vm-devel
-BuildRequires: xorg-proto-dri2proto-devel >= 1.99.3
-BuildRequires: xorg-proto-glproto-devel
-BuildRequires: xorg-proto-printproto-devel
+BuildRequires: xorg-proto-dri2proto-devel >= %{dri2proto_ver}
+BuildRequires: xorg-proto-glproto-devel >= %{glproto_ver}
BuildRequires: xorg-util-makedepend
+BuildRequires: xorg-xserver-server-devel
+%if %{with egl}
+BuildRequires: libxcb-devel
+BuildRequires: udev-devel >= 150
+%endif
+%if %{with gallium}
+BuildRequires: xorg-proto-xextproto-devel >= 7.0.99.1
+BuildRequires: xorg-xserver-server-devel >= 1.6.0
+%endif
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+%if %{without gallium}
+%undefine with_gallium_intel
+%undefine with_gallium_radeon
+%endif
+
%description
Mesa is a 3-D graphics library with an API which is very similar to
that of OpenGL(R). To the extent that Mesa utilizes the OpenGL command
OpenGL od SGI i nie twierdzi, że Mesa jest kompatybilnym zamiennikiem
OpenGL ani powiązana z SGI.
+%package libEGL
+Summary: Mesa implementation of EGL Native Platform Graphics Interface library
+Summary(pl.UTF-8): Implementacja Mesa biblioteki interfejsu EGL
+License: MIT
+Group: Libraries
+Requires: OpenGL >= 1.2
+Requires: udev-libs >= 150
+Provides: EGL = 1.4
+
+%description libEGL
+This package contains shared libEGL - Mesa implementation of EGL
+Native Platform Graphics Interface as specified by Khronos Group:
+<http://www.khronos.org/egl/>.
+
+%description libEGL -l pl.UTF-8
+Ten pakiet zawiera bibliotekę współdzieloną libEGL - implementację
+Mesa standardu EGL Native Platform Graphics Interface (interfejsu
+graficznego platformy natywnej) wg specyfikacji Khronos Group:
+<http://www.khronos.org/egl/>.
+
+%package libEGL-devel
+Summary: Header files for Mesa implementation of EGL library
+Summary(pl.UTF-8): Pliki nagłówkowe implementacji Mesa biblioteki EGL
+License: MIT
+Group: Development/Libraries
+Requires: %{name}-libEGL = %{version}-%{release}
+Requires: OpenGL-devel >= 1.2
+Requires: libstdc++-devel
+Provides: EGL-devel = 1.4
+
+%description libEGL-devel
+Header files for Mesa implementation of EGL library.
+
+%description libEGL-devel -l pl.UTF-8
+Pliki nagłówkowe implementacji Mesa biblioteki EGL.
+
+%package libEGL-static
+Summary: Static Mesa libEGL library
+Summary(pl.UTF-8): Statyczna biblioteka Mesa libEGL
+License: MIT
+Group: Development/Libraries
+Requires: %{name}-libEGL-devel = %{version}-%{release}
+Provides: EGL-static = 1.4
+
+%description libEGL-static
+Static Mesa libEGL library.
+
+%description libEGL-static -l pl.UTF-8
+Statyczna biblioteka Mesa libEGL.
+
%package libGL
Summary: Free Mesa3D implementation of libGL OpenGL library
Summary(pl.UTF-8): Wolnodostępna implementacja Mesa3D biblioteki libGL ze standardu OpenGL
License: MIT
Group: X11/Libraries
-Requires: libdrm >= 2.4.5
+Requires: libdrm >= %{libdrm_ver}
Provides: OpenGL = 2.1
# reports version 1.3, but supports glXGetProcAddress() from 1.4
Provides: OpenGL-GLX = 1.4
Group: X11/Development/Libraries
# loose dependency on libGL to use with other libGL binaries
Requires: OpenGL >= 1.5
+Requires: libdrm-devel >= %{libdrm_ver}
Requires: xorg-lib-libX11-devel
-Provides: OpenGL-devel = 2.1
+Requires: xorg-lib-libXdamage-devel
+Requires: xorg-lib-libXext-devel
+Requires: xorg-lib-libXxf86vm-devel
+Requires: xorg-proto-dri2proto-devel >= %{dri2proto_ver}
+Requires: xorg-proto-glproto-devel >= %{glproto_ver}
+Suggests: OpenGL-doc-man
Provides: OpenGL-GLX-devel = 1.4
+Provides: OpenGL-devel = 2.1
Obsoletes: Mesa-devel
Obsoletes: X11-OpenGL-devel < 1:7.0.0
Obsoletes: X11-OpenGL-devel-base < 1:7.0.0
%description libGLw
SGI OpenGL Xt widgets library.
-%description libGLU -l pl.UTF-8
+%description libGLw -l pl.UTF-8
Biblioteka SGI widgetów Xt dla OpenGL-a.
%package libGLw-devel
%description utils -l pl.UTF-8
Programy narzędziowe OpenGL z projektu Mesa3D: glxgears i glxinfo.
-%package demos
-Summary: Mesa Demos source code
-Summary(pl.UTF-8): Kod źródłowy programów demonstrujących dla bibliotek Mesa
-License: various (MIT, SGI, GPL - see copyright notes in sources)
-Group: Development/Libraries
-Requires: OpenGL-devel
-
-%description demos
-Demonstration programs for the Mesa libraries in source code form.
-
-%description demos -l pl.UTF-8
-Kod źródłowy programów demonstracyjnych dla bibliotek Mesa.
-
%package dri-driver-ati-mach64
Summary: X.org DRI driver for ATI Mach64 card family
Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart ATI Mach64
%description dri-driver-ati-radeon-R300 -l pl.UTF-8
Sterownik X.org DRI dla rodziny kart ATI R300.
+%package dri-driver-ati-radeon-R600
+Summary: X.org DRI driver for ATI R600 card family
+Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart ATI R600
+License: MIT
+Group: X11/Libraries
+Requires: radeon-ucode
+Requires: xorg-driver-video-ati
+Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
+Requires: xorg-xserver-server >= %{xserver_ver}
+
+%description dri-driver-ati-radeon-R600
+X.org DRI driver for ATI R600 card family.
+
+%description dri-driver-ati-radeon-R600 -l pl.UTF-8
+Sterownik X.org DRI dla rodziny kart ATI R600.
+
%package dri-driver-ati-rage128
Summary: X.org DRI driver for ATI Rage128 card family
Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart ATI Rage128
%description dri-driver-matrox -l pl.UTF-8
Sterowniki X.org DRI dla rodziny kart Matrox G.
-%package dri-driver-s3virge
-Summary: X.org DRI driver for S3 Virge card family
-Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart S3 Virge
+%package dri-driver-nouveau
+Summary: X.org DRI driver for NVIDIA card family
+Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart NVIDIA
License: MIT
Group: X11/Libraries
-Requires: xorg-driver-video-s3virge
+Requires: xorg-driver-video-nouveau
Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
Requires: xorg-xserver-server >= %{xserver_ver}
-%description dri-driver-s3virge
-X.org DRI driver for S3 Virge card family.
+%description dri-driver-nouveau
+X.org DRI drivers for NVIDIA card family.
-%description dri-driver-s3virge -l pl.UTF-8
-Sterownik X.org DRI dla rodziny kart S3 Virge.
+%description dri-driver-nouveau -l pl.UTF-8
+Sterowniki X.org DRI dla rodziny kart NVIDIA.
%package dri-driver-savage
Summary: X.org DRI driver for S3 Savage card family
Sterownik X.org DRI dla rodziny kart 3DFX Voodoo. (Voodoo 3,4,5,
Banshee i Velocity 100/200).
-%package dri-driver-trident
-Summary: X.org DRI driver for Trident card family
-Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart Trident
-License: MIT
-Group: X11/Libraries
-Requires: xorg-driver-video-trident
-Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
-Requires: xorg-xserver-server >= %{xserver_ver}
-
-%description dri-driver-trident
-X.org DRI drivers for Trident card family.
-
-%description dri-driver-trident -l pl.UTF-8
-Sterowniki X.org DRI dla rodziny kart Trident.
-
%package dri-driver-via-unichrome
Summary: X.org DRI driver for VIA Unichrome card family
Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart VIA Unichrome
%description dri-driver-via-unichrome -l pl.UTF-8
Sterownik X.org DRI dla rodziny kart VIA Unichrome.
+%package dri-driver-vmwgfx
+Summary: X.org DRI driver for VMware
+Summary(pl.UTF-8): Sterownik X.org DRI dla VMware
+License: MIT
+Group: X11/Libraries
+Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
+Requires: xorg-xserver-server >= %{xserver_ver}
+
+%description dri-driver-vmwgfx
+X.org DRI driver for VMWare.
+
+%description dri-driver-vmwgfx -l pl.UTF-8
+Sterownik X.org DRI dla VMware.
+
%prep
-%setup -q -b1 -a2
+%setup -q
%patch0 -p0
-
-# fix demos
-find progs -type f|xargs sed -i -e "s,\.\./images/,%{_examplesdir}/%{name}-%{version}/images/,g"
+%patch1 -p1
+#patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
%build
-dri_drivers="i810 i915 i965 mach64 mga r128 r200 r300 radeon savage s3v trident \
+%{__aclocal}
+%{__autoconf}
+
+dri_drivers="i810 i965 mach64 mga r128 \
+%if %{without gallium_radeon}
+r200 r300 r600 radeon \
+%endif
+savage \
+%if %{without gallium_intel}
+i915 \
+%endif
%ifarch sparc sparcv9 sparc64
ffb \
%endif
common_flags="\
--enable-shared \
--enable-selinux \
- --enable-pic"
+ --enable-pic \
+ --enable-glx-tls \
+ --disable-glut \
+ --disable-os-mesa \
+ --%{?with_egl:en}%{!?with_egl:dis}able-egl"
-# osmesa variants
-%configure $common_flags \
+osmesa_common_flags="\
--with-driver=osmesa \
--disable-asm \
+ --disable-glu"
+
+%if %{with osmesa}
+# osmesa variants
+%configure $common_flags $osmesa_common_flags \
--with-osmesa-bits=8
-%{__make} \
- SRC_DIRS=mesa
+%{__make}
mv %{_lib} osmesa8
%{__make} clean
-%configure $common_flags \
- --with-driver=osmesa \
- --disable-asm \
+%configure $common_flags $osmesa_common_flags \
--with-osmesa-bits=16
-%{__make} \
- SRC_DIRS=mesa
+%{__make}
mv %{_lib} osmesa16
%{__make} clean
-%configure $common_flags \
- --with-driver=osmesa \
- --disable-asm \
+%configure $common_flags $osmesa_common_flags \
--with-osmesa-bits=32
-%{__make} \
- SRC_DIRS=mesa
+%{__make}
mv %{_lib} osmesa32
%{__make} clean
+%endif
%configure $common_flags \
- --enable-glu \
- --enable-glw \
- --disable-glut \
+%if %{with gallium}
+ --enable-gallium \
+ --%{?with_gallium_intel:en}%{!?with_gallium_intel:dis}able-gallium-intel \
+ --%{?with_gallium_radeon:en}%{!?with_gallium_radeon:dis}able-gallium-radeon \
+ --enable-gallium-svga \
+ %{?with_gallium_nouveau:--enable-gallium-nouveau} \
+ --with-state-trackers=dri,glx \
+%else
+ --disable-gallium \
+%endif
--with-driver=dri \
--with-dri-drivers=${dri_drivers} \
--with-dri-driverdir=%{_libdir}/xorg/modules/dri
%{__make}
-%{__make} -C progs/xdemos glxgears glxinfo
-%{__make} -C progs/demos
-
-cd gl-manpages-*
-%configure
-%{__make}
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_bindir},%{_examplesdir}/%{name}-%{version}}
+install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
# libs without drivers
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
-cd gl-manpages-*
-%{__make} install \
- DESTDIR=$RPM_BUILD_ROOT
-cd ..
-
-install osmesa*/* $RPM_BUILD_ROOT%{_libdir}
-
-install progs/xdemos/{glxgears,glxinfo} $RPM_BUILD_ROOT%{_bindir}
-# work on copy to keep -bi --short-circuit working
-rm -rf progs-clean
-install -d progs-clean
-for l in demos glsl osdemos redbook samples xdemos ; do
- cp -a progs/$l progs-clean/$l
- %{__make} -C progs-clean/$l clean
- cp -Rf progs-clean/$l $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/$l
-done
-rm -rf progs-clean
-for l in util images ; do
- cp -Rf progs/$l $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/$l
-done
+%if %{with osmesa}
+install osmesa*/*OSMesa* $RPM_BUILD_ROOT%{_libdir}
+%endif
+
rm -rf $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/*/{.deps,CVS,Makefile.{BeOS*,win,cygnus,DJ,dja}}
# strip out undesirable headers
olddir=$(pwd)
-cd $RPM_BUILD_ROOT%{_includedir}/GL
-rm [a-fh-np-wyz]*.h gg*.h glf*.h
+cd $RPM_BUILD_ROOT%{_includedir}/GL
+rm [a-fh-np-wyz]*.h glf*.h
+cd $RPM_BUILD_ROOT%{_libdir}
cd $olddir
%if %{with multigl}
%clean
rm -rf $RPM_BUILD_ROOT
+%post libEGL -p /sbin/ldconfig
+%postun libEGL -p /sbin/ldconfig
+
%post libGL -p /sbin/ldconfig
%postun libGL -p /sbin/ldconfig
%post libGLw -p /sbin/ldconfig
%postun libGLw -p /sbin/ldconfig
+%if %{with egl}
+%files libEGL
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libEGL.so.*.*
+%attr(755,root,root) %ghost %{_libdir}/libEGL.so.1
+%dir %{_libdir}/egl
+%attr(755,root,root) %{_libdir}/egl/egl_dri2.so
+%attr(755,root,root) %{_libdir}/egl/egl_glx.so
+
+%files libEGL-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libEGL.so
+%dir %{_includedir}/EGL
+%{_includedir}/EGL/egl.h
+%{_includedir}/EGL/eglext.h
+%{_includedir}/EGL/eglplatform.h
+%dir %{_includedir}/KHR
+%{_includedir}/KHR/khrplatform.h
+%{_pkgconfigdir}/egl.pc
+
+%if %{with static}
+%files libEGL-static
+%defattr(644,root,root,755)
+%{_libdir}/libEGL.a
+%endif
+%endif
+
%files libGL
%defattr(644,root,root,755)
%doc docs/{*.html,README.{3DFX,GGI,MITS,QUAKE,THREADS},RELNOTES*}
%{_includedir}/GL/internal/dri_interface.h
%{_pkgconfigdir}/dri.pc
%{_pkgconfigdir}/gl.pc
-%{_datadir}/man/man3/gl[^uX]*.3gl*
-%{_datadir}/man/man3/glX*.3gl*
%if %{with static}
%files libGL-static
%{_includedir}/GL/glu.h
%{_includedir}/GL/glu_mangle.h
%{_pkgconfigdir}/glu.pc
-%{_datadir}/man/man3/glu*.3gl*
%if %{with static}
%files libGLU-static
%{_libdir}/libGLw.a
%endif
+%if %{with osmesa}
%files libOSMesa
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libOSMesa*.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/libOSMesa*.so.[0-9]
+%attr(755,root,root) %ghost %{_libdir}/libOSMesa*.so.7
%files libOSMesa-devel
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%{_libdir}/libOSMesa*.a
%endif
-
-%files utils
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/glxgears
-%attr(755,root,root) %{_bindir}/glxinfo
+%endif
%files dri-driver-ati-mach64
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/xorg/modules/dri/r300_dri.so
+%files dri-driver-ati-radeon-R600
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/xorg/modules/dri/r600_dri.so
+
%files dri-driver-ati-rage128
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/xorg/modules/dri/r128_dri.so
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/xorg/modules/dri/mga_dri.so
-%files dri-driver-s3virge
+%if %{with gallium}
+%if %{with gallium_nouveau}
+%files dri-driver-nouveau
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/xorg/modules/dri/s3v_dri.so
+#%attr(755,root,root) %{_libdir}/xorg/modules/drivers/modesetting_drv.so
+%attr(755,root,root) %{_libdir}/xorg/modules/dri/nouveau_dri.so
+%endif
+%endif
%files dri-driver-savage
%defattr(644,root,root,755)
%files dri-driver-swrast
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/xorg/modules/dri/swrast_dri.so
+%attr(755,root,root) %{_libdir}/xorg/modules/dri/swrastg_dri.so
%files dri-driver-tdfx
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/xorg/modules/dri/tdfx_dri.so
-%files dri-driver-trident
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/xorg/modules/dri/trident_dri.so
-
%files dri-driver-via-unichrome
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/xorg/modules/dri/unichrome_dri.so
-%files demos
+%if %{with gallium}
+%files dri-driver-vmwgfx
%defattr(644,root,root,755)
-%{_examplesdir}/%{name}-%{version}
+%attr(755,root,root) %{_libdir}/xorg/modules/dri/vmwgfx_dri.so
+%endif