%if 0%{?rhel} %define with_private_llvm 1 %else %define with_private_llvm 0 %define with_wayland 1 %endif # f17 support wayland 0.85, llvm 3.0 means no radeonsi %if 0%{?fedora} < 18 %define min_wayland_version 0.85 %else %define min_wayland_version 1.0 %define with_radeonsi 1 %endif %ifarch %{arm} %define with_freedreno 1 %endif # S390 doesn't have video cards, but we need swrast for xserver's GLX # llvm (and thus llvmpipe) doesn't actually work on ppc32 or s390 %ifnarch s390 ppc %define with_llvm 1 %endif %ifarch s390 s390x %define with_hardware 0 %ifarch s390 %define base_drivers swrast %endif %else %define with_hardware 1 %define base_drivers nouveau,radeon,r200 %ifarch %{ix86} x86_64 %define platform_drivers ,i915,i965 %define with_vmware 1 %endif %ifarch ppc %define platform_drivers ,swrast %endif %endif %define dri_drivers --with-dri-drivers=%{?base_drivers}%{?platform_drivers} %define _default_patch_fuzz 2 %define gitdate 20130514 #% define snapshot Summary: Mesa graphics libraries Name: mesa Version: 9.2 Release: 0.2.%{gitdate}%{?dist} License: MIT Group: System Environment/Libraries URL: http://www.mesa3d.org # Source0: MesaLib-%{version}.tar.xz Source0: %{name}-%{gitdate}.tar.xz Source1: sanitize-tarball.sh Source2: make-release-tarball.sh Source3: make-git-snapshot.sh # src/gallium/auxiliary/postprocess/pp_mlaa* have an ... interestingly worded license. # Source4 contains email correspondence clarifying the license terms. # Fedora opts to ignore the optional part of clause 2 and treat that code as 2 clause BSD. Source4: Mesa-MLAA-License-Clarification-Email.txt Patch1: nv50-fix-build.patch Patch9: mesa-8.0-llvmpipe-shmget.patch Patch12: mesa-8.0.1-fix-16bpp.patch Patch15: mesa-9.2-hardware-float.patch Patch16: mesa-9.2-no-useless-vdpau.patch # http://lists.freedesktop.org/archives/mesa-dev/2013-May/039265.html Patch17: 0001-st-mesa-handle-texture_from_pixmap-and-other-surface.patch Patch18: mesa-9.2-llvmpipe-on-big-endian.patch BuildRequires: pkgconfig autoconf automake libtool %if %{with_hardware} BuildRequires: kernel-headers BuildRequires: xorg-x11-server-devel %endif BuildRequires: libdrm-devel >= 2.4.42 BuildRequires: libXxf86vm-devel BuildRequires: expat-devel BuildRequires: xorg-x11-proto-devel BuildRequires: makedepend BuildRequires: libselinux-devel BuildRequires: libXext-devel BuildRequires: libXfixes-devel BuildRequires: libXdamage-devel BuildRequires: libXi-devel BuildRequires: libXmu-devel BuildRequires: elfutils BuildRequires: python BuildRequires: gettext %if 0%{?with_private_llvm} BuildRequires: mesa-private-llvm-devel %else BuildRequires: llvm-devel >= 3.0 %endif BuildRequires: elfutils-libelf-devel BuildRequires: libxml2-python BuildRequires: libudev-devel BuildRequires: bison flex %if !0%{?rhel} BuildRequires: pkgconfig(wayland-client) >= %{min_wayland_version} BuildRequires: pkgconfig(wayland-server) >= %{min_wayland_version} %endif BuildRequires: mesa-libGL-devel BuildRequires: libvdpau-devel BuildRequires: zlib-devel %description Mesa %package libGL Summary: Mesa libGL runtime libraries and DRI drivers Group: System Environment/Libraries Provides: libGL %description libGL Mesa libGL runtime library. %package libEGL Summary: Mesa libEGL runtime libraries Group: System Environment/Libraries %description libEGL Mesa libEGL runtime libraries %package libGLES Summary: Mesa libGLES runtime libraries Group: System Environment/Libraries %description libGLES Mesa GLES runtime libraries %package filesystem Summary: Mesa driver filesystem Group: User Interface/X Hardware Support Provides: mesa-dri-filesystem = %{version}-%{release} Obsoletes: mesa-dri-filesystem < %{version}-%{release} %description filesystem Mesa driver filesystem %package dri-drivers Summary: Mesa-based DRI drivers Group: User Interface/X Hardware Support Requires: mesa-filesystem%{?_isa} Obsoletes: mesa-dri-drivers-dri1 < 7.12 Obsoletes: mesa-dri-llvmcore <= 7.12 %description dri-drivers Mesa-based DRI drivers. %package vdpau-drivers Summary: Mesa-based DRI drivers Group: User Interface/X Hardware Support Requires: mesa-filesystem%{?_isa} %description vdpau-drivers Mesa-based VDPAU drivers. %package -n khrplatform-devel Summary: Khronos platform development package Group: Development/Libraries BuildArch: noarch %description -n khrplatform-devel Khronos platform development package %package libGL-devel Summary: Mesa libGL development package Group: Development/Libraries Requires: mesa-libGL = %{version}-%{release} Requires: gl-manpages Provides: libGL-devel %description libGL-devel Mesa libGL development package %package libEGL-devel Summary: Mesa libEGL development package Group: Development/Libraries Requires: mesa-libEGL = %{version}-%{release} Requires: khrplatform-devel >= %{version}-%{release} %description libEGL-devel Mesa libEGL development package %package libGLES-devel Summary: Mesa libGLES development package Group: Development/Libraries Requires: mesa-libGLES = %{version}-%{release} Requires: khrplatform-devel >= %{version}-%{release} %description libGLES-devel Mesa libGLES development package %package libOSMesa Summary: Mesa offscreen rendering libraries Group: System Environment/Libraries Provides: libOSMesa %description libOSMesa Mesa offscreen rendering libraries %package libOSMesa-devel Summary: Mesa offscreen rendering development package Group: Development/Libraries Requires: mesa-libOSMesa = %{version}-%{release} %description libOSMesa-devel Mesa offscreen rendering development package %package libgbm Summary: Mesa gbm library Group: System Environment/Libraries Provides: libgbm %description libgbm Mesa gbm runtime library. %package libgbm-devel Summary: Mesa libgbm development package Group: Development/Libraries Requires: mesa-libgbm%{?_isa} = %{version}-%{release} Provides: libgbm-devel %description libgbm-devel Mesa libgbm development package %if !0%{?rhel} %package libwayland-egl Summary: Mesa libwayland-egl library Group: System Environment/Libraries Provides: libwayland-egl %description libwayland-egl Mesa libwayland-egl runtime library. %package libwayland-egl-devel Summary: Mesa libwayland-egl development package Group: Development/Libraries Requires: mesa-libwayland-egl%{?_isa} = %{version}-%{release} Provides: libwayland-egl-devel %description libwayland-egl-devel Mesa libwayland-egl development package %endif %if 0%{?with_vmware} %package libxatracker Summary: Mesa XA state tracker for vmware Group: System Environment/Libraries Provides: libxatracker %description libxatracker Mesa XA state tracker for vmware %package libxatracker-devel Summary: Mesa XA state tracker development package Group: Development/Libraries Requires: mesa-libxatracker%{?_isa} = %{version}-%{release} Provides: libxatracker-devel %description libxatracker-devel Mesa XA state tracker development package %endif %package libglapi Summary: Mesa shared glapi Group: System Environment/Libraries %description libglapi Mesa shared glapi %prep #setup -q -n Mesa-%{version}%{?snapshot} %setup -q -n mesa-%{gitdate} grep -q ^/ src/gallium/auxiliary/vl/vl_decoder.c && exit 1 %patch1 -p1 -b .nv50rtti # this fastpath is: # - broken with swrast classic # - broken on 24bpp # - not a huge win anyway # - ABI-broken wrt upstream # - eventually obsoleted by vgem # # dear ajax: fix this one way or the other #patch9 -p1 -b .shmget #patch12 -p1 -b .16bpp %patch15 -p1 -b .hwfloat %patch16 -p1 -b .vdpau %patch17 -p1 -b .tfp %patch18 -p1 -b .be %if 0%{with_private_llvm} sed -i 's/llvm-config/mesa-private-llvm-config-%{__isa_bits}/g' configure.ac sed -i 's/`$LLVM_CONFIG --version`/&-mesa/' configure.ac %endif # need to use libdrm_nouveau2 on F17 %if !0%{?rhel} %if 0%{?fedora} < 18 sed -i 's/\/&2/' configure.ac %endif %endif cp %{SOURCE4} docs/ %build autoreconf --install export CFLAGS="$RPM_OPT_FLAGS" # C++ note: we never say "catch" in the source. we do say "typeid" once, # in an assert, which is patched out above. LLVM doesn't use RTTI or throw. # # We do say 'catch' in the clover and d3d1x state trackers, but we're not # building those yet. export CXXFLAGS="$RPM_OPT_FLAGS -fno-rtti -fno-exceptions" %ifarch %{ix86} # i do not have words for how much the assembly dispatch code infuriates me %define asm_flags --disable-asm %endif %configure \ %{?asm_flags} \ --enable-selinux \ --enable-osmesa \ --with-dri-driverdir=%{_libdir}/dri \ --enable-egl \ --disable-gles1 \ --enable-gles2 \ --disable-gallium-egl \ --disable-xvmc \ --enable-vdpau \ --with-egl-platforms=x11,drm%{?with_wayland:,wayland} \ --enable-shared-glapi \ --enable-gbm \ --disable-opencl \ --enable-glx-tls \ --enable-texture-float=hardware \ %{?with_llvm:--enable-gallium-llvm} \ %{?with_llvm:--with-llvm-shared-libs} \ --enable-dri \ %if %{with_hardware} %{?with_vmware:--enable-xa} \ --with-gallium-drivers=%{?with_vmware:svga,}%{?with_radeonsi:radeonsi,}%{?with_llvm:swrast,}%{?with_freedreno:freedreno,}r300,r600,nouveau \ %else --with-gallium-drivers=%{?with_llvm:swrast} \ %endif %{?dri_drivers} make %{?_smp_mflags} MKDEP=/bin/true %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT %if 0%{?rhel} # remove pre-DX9 drivers rm -f $RPM_BUILD_ROOT%{_libdir}/dri/{radeon,r200,nouveau_vieux}_dri.* %endif # libvdpau opens the versioned name, don't bother including the unversioned rm -f $RPM_BUILD_ROOT%{_libdir}/vdpau/*.so # strip out useless headers rm -f $RPM_BUILD_ROOT%{_includedir}/GL/w*.h # remove .la files find $RPM_BUILD_ROOT -name \*.la | xargs rm -f # this keeps breaking, check it early. note that the exit from eu-ftr is odd. pushd $RPM_BUILD_ROOT%{_libdir} for i in libOSMesa*.so libGL.so ; do eu-findtextrel $i && exit 1 done popd %clean rm -rf $RPM_BUILD_ROOT %check %post libGL -p /sbin/ldconfig %postun libGL -p /sbin/ldconfig %post libOSMesa -p /sbin/ldconfig %postun libOSMesa -p /sbin/ldconfig %post libEGL -p /sbin/ldconfig %postun libEGL -p /sbin/ldconfig %post libGLES -p /sbin/ldconfig %postun libGLES -p /sbin/ldconfig %post libglapi -p /sbin/ldconfig %postun libglapi -p /sbin/ldconfig %post libgbm -p /sbin/ldconfig %postun libgbm -p /sbin/ldconfig %if !0%{?rhel} %post libwayland-egl -p /sbin/ldconfig %postun libwayland-egl -p /sbin/ldconfig %endif %if 0%{?with_vmware} %post libxatracker -p /sbin/ldconfig %postun libxatracker -p /sbin/ldconfig %endif %files libGL %defattr(-,root,root,-) %doc docs/COPYING %{_libdir}/libGL.so.1 %{_libdir}/libGL.so.1.* %files libEGL %defattr(-,root,root,-) %doc docs/COPYING %{_libdir}/libEGL.so.1 %{_libdir}/libEGL.so.1.* %files libGLES %defattr(-,root,root,-) %doc docs/COPYING %{_libdir}/libGLESv2.so.2 %{_libdir}/libGLESv2.so.2.* %files filesystem %defattr(-,root,root,-) %doc docs/COPYING docs/Mesa-MLAA-License-Clarification-Email.txt %dir %{_libdir}/dri %if %{with_hardware} %dir %{_libdir}/vdpau %endif %files libglapi %{_libdir}/libglapi.so.0 %{_libdir}/libglapi.so.0.* %files dri-drivers %defattr(-,root,root,-) %if %{with_hardware} %config(noreplace) %{_sysconfdir}/drirc %if !0%{?rhel} %{_libdir}/dri/radeon_dri.so %{_libdir}/dri/r200_dri.so %{_libdir}/dri/nouveau_vieux_dri.so %endif %{_libdir}/dri/r300_dri.so %{_libdir}/dri/r600_dri.so %if 0%{?with_radeonsi} %{_libdir}/dri/radeonsi_dri.so %endif %ifarch %{ix86} x86_64 %{_libdir}/dri/i915_dri.so %{_libdir}/dri/i965_dri.so %endif %if 0%{?with_freedreno} %{_libdir}/dri/freedreno_dri.so %endif %{_libdir}/dri/nouveau_dri.so %if 0%{?with_vmware} %{_libdir}/dri/vmwgfx_dri.so %endif %else %exclude %{_sysconfdir}/drirc %endif %{_libdir}/libdricore*.so* %{_libdir}/dri/swrast_dri.so %if %{with_hardware} %files vdpau-drivers %defattr(-,root,root,-) %{_libdir}/vdpau/libvdpau_nouveau.so.1* %{_libdir}/vdpau/libvdpau_r600.so.1* %{_libdir}/vdpau/libvdpau_radeonsi.so.1* %endif %files -n khrplatform-devel %defattr(-,root,root,-) %{_includedir}/KHR %files libGL-devel %defattr(-,root,root,-) %{_includedir}/GL/gl.h %{_includedir}/GL/gl_mangle.h %{_includedir}/GL/glext.h %{_includedir}/GL/glx.h %{_includedir}/GL/glx_mangle.h %{_includedir}/GL/glxext.h %dir %{_includedir}/GL/internal %{_includedir}/GL/internal/dri_interface.h %{_libdir}/pkgconfig/dri.pc %{_libdir}/libGL.so %{_libdir}/libglapi.so %{_libdir}/pkgconfig/gl.pc %files libEGL-devel %defattr(-,root,root,-) %dir %{_includedir}/EGL %{_includedir}/EGL/eglext.h %{_includedir}/EGL/egl.h %{_includedir}/EGL/eglmesaext.h %{_includedir}/EGL/eglplatform.h %dir %{_includedir}/KHR %{_includedir}/KHR/khrplatform.h %{_libdir}/pkgconfig/egl.pc %{_libdir}/libEGL.so %files libGLES-devel %defattr(-,root,root,-) %dir %{_includedir}/GLES2 %{_includedir}/GLES2/gl2platform.h %{_includedir}/GLES2/gl2.h %{_includedir}/GLES2/gl2ext.h %{_includedir}/GLES3/gl3platform.h %{_includedir}/GLES3/gl3.h %{_includedir}/GLES3/gl3ext.h %{_libdir}/pkgconfig/glesv2.pc %{_libdir}/libGLESv2.so %files libOSMesa %defattr(-,root,root,-) %doc docs/COPYING %{_libdir}/libOSMesa.so.8* %files libOSMesa-devel %defattr(-,root,root,-) %dir %{_includedir}/GL %{_includedir}/GL/osmesa.h %{_libdir}/libOSMesa.so %{_libdir}/pkgconfig/osmesa.pc %files libgbm %defattr(-,root,root,-) %doc docs/COPYING %{_libdir}/libgbm.so.1 %{_libdir}/libgbm.so.1.* %files libgbm-devel %defattr(-,root,root,-) %{_libdir}/libgbm.so %{_includedir}/gbm.h %{_libdir}/pkgconfig/gbm.pc %if !0%{?rhel} %files libwayland-egl %defattr(-,root,root,-) %doc docs/COPYING %{_libdir}/libwayland-egl.so.1 %{_libdir}/libwayland-egl.so.1.* %files libwayland-egl-devel %defattr(-,root,root,-) %{_libdir}/libwayland-egl.so %{_libdir}/pkgconfig/wayland-egl.pc %endif %if 0%{?with_vmware} %files libxatracker %defattr(-,root,root,-) %doc docs/COPYING %if %{with_hardware} %{_libdir}/libxatracker.so.1 %{_libdir}/libxatracker.so.1.* %endif %files libxatracker-devel %defattr(-,root,root,-) %if %{with_hardware} %{_libdir}/libxatracker.so %{_includedir}/xa_tracker.h %{_includedir}/xa_composite.h %{_includedir}/xa_context.h %{_libdir}/pkgconfig/xatracker.pc %endif %endif %changelog * Wed May 15 2013 Adam Jackson 9.2-0.2.20130514 - Fix filesystem for with_hardware == 0 * Tue May 14 2013 Adam Jackson 9.2-0.1.20130514 - Today's git snap - Revert to swrast on ppc32 and s390 since llvm doesn't actually work - Build freedreno on arm - Drop snb hang workaround (upstream 1dfea559) - Rename filesystem package * Wed May 08 2013 Adam Jackson 9.2-0.1.20130508 - Switch to Mesa master (pre 9.2) - Fix llvmpipe on big-endian and enable llvmpipe everywhere - Build vdpau drivers for r600/radeonsi/nouveau - Enable hardware floating-point texture support - Drop GLESv1, nothing's using it, let's not start * Sat Apr 27 2013 Dave Airlie 9.1.1-1 - rebase to Mesa 9.1.1 + fixes from git * Thu Apr 11 2013 Dave Airlie 9.1-6 - enable glx tls for glamor to work properly * Thu Apr 04 2013 Adam Jackson 9.1-5 - Enable llvmpipe even on non-SSE2 machines (#909473) * Tue Mar 26 2013 Adam Jackson 9.1-4 - Fix build with private LLVM * Tue Mar 19 2013 Adam Jackson 9.1-3 - mesa-9.1-53-gd0ccb5b.patch: Sync with today's git * Tue Mar 19 2013 Dave Airlie 9.1-2 - add SNB hang workaround from chromium * Fri Mar 08 2013 Adam Jackson 9.1-1 - Mesa 9.1 * Wed Feb 27 2013 Dan Horák - 9.1-0.4 - /etc/drirc is always created, so exclude it on platforms without hw drivers * Tue Feb 26 2013 Adam Jackson 9.1-0.3 - Fix s390*'s swrast to be classic not softpipe * Tue Feb 19 2013 Jens Petersen - 9.1-0.2 - build against llvm-3.2 - turn on radeonsi * Wed Feb 13 2013 Dave Airlie 9.1-0.1 - snapshot mesa 9.1 branch * Tue Jan 15 2013 Tom Callaway 9.0.1-4 - clarify license on pp_mlaa* files * Thu Dec 20 2012 Adam Jackson 9.0.1-3 - mesa-9.0.1-22-gd0a9ab2.patch: Sync with git - Build with -fno-rtti -fno-exceptions, modest size and speed win - mesa-9.0.1-less-cxx-please.patch: Remove the only use of typeid() so the above works. * Wed Dec 05 2012 Adam Jackson 9.0.1-2 - Allow linking against a private version of LLVM libs for RHEL7 - Build with -j again * Mon Dec 03 2012 Adam Jackson 9.0.1-1 - Mesa 9.0.1 * Wed Nov 07 2012 Dave Airlie 9.0-5 - mesa-9.0-19-g895a587.patch: sync with 9.0 branch with git - drop wayland patch its in git now. * Thu Nov 01 2012 Adam Jackson 9.0-4 - mesa-9.0-18-g5fe5aa8: sync with 9.0 branch in git - Portability fixes for F17: old wayland, old llvm. * Sat Oct 27 2012 Dan Horák 9.0-3 - gallium drivers must be set explicitely for s390(x) otherwise also r300, r600 and vmwgfx are built * Fri Oct 19 2012 Adam Jackson 9.0-2 - Rebuild for wayland 0.99 * Wed Oct 10 2012 Adam Jackson 9.0-1 - Mesa 9.0 - mesa-9.0-12-gd56ee24.patch: sync with 9.0 branch in git * Wed Oct 10 2012 Adam Jackson 9.0-0.4 - Switch to external gl-manpages and libGLU - Drop ShmGetImage fastpath for a bit * Mon Oct 01 2012 Dan Horák 9.0-0.3 - explicit BR: libGL-devel is required on s390(x), it's probbaly brought in indirectly on x86 - gallium drivers must be set explicitely for s390(x) otherwise also r300, r600 and vmwgfx are built * Mon Sep 24 2012 Adam Jackson 9.0-0.2 - Switch to swrast classic instead of softpipe for non-llvm arches - Re-disable llvm on ppc until it can draw pixels * Mon Sep 24 2012 Dave Airlie 9.0-0.1 - rebase to latest upstream 9.0 pre-release branch - add back glu from new upstream (split for f18 later) * Fri Sep 14 2012 Dave Airlie 8.1-0.21 - why fix one yylex when you can fix two * Fri Sep 14 2012 Dave Airlie 8.1-0.20 - fix yylex collision reported on irc by hughsie * Mon Aug 27 2012 Adam Jackson 8.1-0.19 - Today's git snap - Revert dependency on libkms - Patch from Mageia to fix some undefined symbols * Fri Aug 17 2012 Dave Airlie 8.1-0.18 - parallel make seems broken - on 16 way machine internally. * Thu Aug 16 2012 Dave Airlie 8.1-0.17 - upstream snapshot * Wed Jul 25 2012 Peter Robinson 8.1-0.16 - Enable LLVM on ARM * Wed Jul 25 2012 Peter Robinson 8.1-0.15 - Fix building on platforms with HW and without LLVM * Tue Jul 24 2012 Adam Jackson 8.1-0.14 - Re-enable llvm on ppc, being worked on - Don't BuildReq on wayland things in RHEL * Mon Jul 23 2012 Adam Jackson 8.1-0.13 - Build radeonsi (#842194) * Fri Jul 20 2012 Fedora Release Engineering - 8.1-0.12 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild * Tue Jul 17 2012 Dave Airlie 8.1-0.11 - upstream snapshot: fixes build issues * Tue Jul 17 2012 Dave Airlie 8.1-0.10 - snapshot mesa: add some build hackarounds * Sat Jul 14 2012 Ville Skyttä - 8.1-0.9 - Call ldconfig at -libglapi and -libxatracker post(un)install time. - Drop redundant ldconfig dependencies, let rpm auto-add them. * Wed Jun 13 2012 Dave Airlie 8.1-0.8 - enable shared llvm usage. * Thu Jun 07 2012 Adam Jackson 8.1-0.7 - Disable llvm on non-x86 (#829020) * Sun Jun 03 2012 Dave Airlie 8.1-0.6 - rebase to git master + build on top of llvm 3.1 * Thu May 17 2012 Adam Jackson 8.1-0.5 - mesa-8.0-llvmpipe-shmget.patch: Rediff for 8.1. * Thu May 10 2012 Karsten Hopp 8.1-0.4 - revert disabling of hardware drivers, disable only llvm on PPC* (#819060) * Tue May 01 2012 Adam Jackson 8.1-0.3 - More RHEL tweaking: no pre-DX7 drivers, no wayland. * Thu Apr 26 2012 Karsten Hopp 8.1-0.2 - move drirc into with_hardware section (Dave Airlie) - libdricore.so and libglsl.so get built and installed on non-hardware archs, include them in the file list * Thu Apr 26 2012 Adam Jackson 8.1-0.2 - Don't build vmware stuff on non-x86 (#815444) * Tue Apr 24 2012 Richard Hughes 8.0.3-0.1 - Rebuild with new git snapshot - Remove upstreamed patches