# (cg) Cheater... %define Werror_cflags %nil # (aco) Needed for the dri drivers %define _disable_ld_no_undefined 1 # https://cgit.freedesktop.org/mesa/mesa/commit/?h=13.0&id=3bb0415ab96f74183f7aa58c1a543448653ccb3e %define git 0 %define git_branch 19.1 %define opengl_ver 4.5 # define version, RC & release %define main_version 19.1.2 #define relc 1 %define rel 1 %define release %mkrel %{?relc:0.rc%{relc}.}%{rel} %if %{git} %if %{?relc:1}%{!?relc:0} %define release %mkrel 1~rc%{relc}.1.git%{git}.%{rel} %else %define release 1.git%{git}.%{rel} %endif %endif %define makedepend %{_bindir}/gccmakedep %define clname mesaopencl %define d3dname d3d %define eglname mesaegl %define glname mesagl %define glwname mesaglw %define glesv1name mesaglesv1 %define glesv2name mesaglesv2 %define glapiname glapi %define gbmname gbm %define xaname xatracker %define vulkanname mesavulkan %define clmajor 1 %define d3dmajor 1 %define eglmajor 1 %define glmajor 1 %define glwmajor 1 %define glesv1major 1 %define glesv2major 2 %define glapimajor 0 %define gbmmajor 1 %define waylandeglmajor 1 %define osmesamajor 8 %define xamajor 2 %define libclname %mklibname %{clname} %{clmajor} %define libd3dname %mklibname %{d3dname} %{d3dmajor} %define libeglname %mklibname %{eglname} %{eglmajor} %define libglname %mklibname %{glname} %{glmajor} %define libglwname %mklibname %{glwname} %{glwmajor} %define libglesv1name %mklibname %{glesv1name}_ %{glesv1major} %define libglesv2name %mklibname %{glesv2name}_ %{glesv2major} %define libglapiname %mklibname %{glapiname} %{glapimajor} %define libgbmname %mklibname %{gbmname} %{gbmmajor} %define libwaylandeglname %mklibname %{waylandeglname} %{waylandeglmajor} %define libosmesaname %mklibname osmesa %{osmesamajor} %define libxaname %mklibname %{xaname} %{xamajor} %define dridrivers %mklibname dri-drivers %define vulkandrivers %mklibname %{vulkanname}-drivers %define vulkandevel %mklibname %{vulkanname} -d %define libcldevel %mklibname mesaopencl -d %define khrdevel %mklibname mesakhr -d %define osmesadevel %mklibname osmesa -d # Architecture-independent Virtual provides: %define libd3dname_virt lib%{d3dname} %define libeglname_virt lib%{eglname} %define libglname_virt lib%{glname} %define libglwname_virt lib%{glwname} %define libglesv1name_virt lib%{glesv1name} %define libglesv2name_virt lib%{glesv2name} %define libglapiname_virt lib%{glapiname} %define libgbmname_virt lib%{gbmname} %define libwaylandeglname_virt lib%{waylandeglname} %define libxaname_virt lib%{xaname} %define mesasrcdir %{_prefix}/src/Mesa/ %define with_valgrind 1 %define with_vaapi 1 %global with_hardware 1 %global with_vdpau 1 %global with_vaapi 1 %global with_nine 1 %global with_omx 1 %global with_opencl 1 %global base_drivers nouveau,r100,r200 %ifarch %{ix86} x86_64 %global platform_drivers ,i915,i965 %global with_iris 1 %global with_vmware 1 %global with_xa 1 %global vulkan_drivers intel,amd %else %global vulkan_drivers amd %endif %ifarch %{arm} aarch64 %global with_etnaviv 1 %global with_freedreno 1 %global with_kmsro 1 %global with_tegra 1 %global with_vc4 1 %global with_xa 1 %endif %ifnarch %{arm} %global with_radeonsi 1 %endif %global dri_drivers %{?base_drivers}%{?platform_drivers} Name: mesa Version: %{main_version} Release: %{release} Summary: OpenGL %{opengl_ver} compatible 3D graphics library Group: System/Libraries # temp force new gcc BuildRequires: gcc >= 5.4.0-2 BuildRequires: pkgconfig(xfixes) >= 4.0.3 BuildRequires: pkgconfig(xshmfence) BuildRequires: pkgconfig(xt) >= 1.0.5 BuildRequires: pkgconfig(xmu) >= 1.0.3 BuildRequires: pkgconfig(x11) >= 1.3.3 BuildRequires: pkgconfig(xdamage) >= 1.1.1 BuildRequires: pkgconfig(expat) >= 2.0.1 BuildRequires: gccmakedep BuildRequires: x11-proto-devel >= 7.3 BuildRequires: pkgconfig(libdrm) >= 2.4.91 BuildRequires: pkgconfig(xcb-dri3) BuildRequires: pkgconfig(xcb-present) >= 1.11 BuildRequires: pkgconfig(xext) >= 1.1.1 BuildRequires: pkgconfig(xxf86vm) >= 1.1.0 BuildRequires: pkgconfig(xi) >= 1.3 BuildRequires: pkgconfig(xrandr) %if 0%{?with_omx} BuildRequires: pkgconfig(libomxil-bellagio) %endif %if 0%{?with_opencl} BuildRequires: clang-devel BuildRequires: pkgconfig(libclc) %endif BuildRequires: pkgconfig(talloc) BuildRequires: python2-libxml2 BuildRequires: python2-mako BuildRequires: python3-libxml2 BuildRequires: python3-mako BuildRequires: makedepend BuildRequires: bison BuildRequires: flex BuildRequires: meson BuildRequires: pkgconfig(libelf) BuildRequires: llvm-devel >= 8.0 BuildRequires: pkgconfig(libudev) %if 0%{?with_valgrind} BuildRequires: pkgconfig(valgrind) %endif %if 0%{?with_vaapi} BuildRequires: pkgconfig(libva) %endif BuildRequires: pkgconfig(vdpau) BuildRequires: pkgconfig(wayland-client) BuildRequires: pkgconfig(wayland-server) BuildRequires: pkgconfig(wayland-protocols) BuildRequires: libgcrypt-devel BuildRequires: pkgconfig(wayland-protocols) >= 1.8 BuildRequires: lm_sensors-devel URL: https://www.mesa3d.org %if %{git} #Source0: %{name}-%{git}.tar.bz2 # (blino) snapshot of 13.0 branch Source0: %{name}-%{git_branch}-%{git}.tar.xz %else Source0: https://mesa.freedesktop.org/archive/mesa-%{main_version}%{?relc:-rc%{relc}}.tar.xz %endif Source3: make-git-snapshot.sh # mesa staging/19.1 branch from 1 # mesa master branch from 200 # mesa pending fixes from 300 #------------------------------------------------------------------------------ # package mesa License: MIT Requires: %{libglname} = %{version}-%{release} Recommends: %{vulkandrivers} = %{version}-%{release} Provides: hackMesa = %{version} Obsoletes: hackMesa <= %{version} Provides: Mesa = %{version} Obsoletes: Mesa < %{version} %package -n %{libglname} Summary: Files for Mesa (GL and GLX libs) Group: System/Libraries Provides: %{libglname_virt} = %{version}-%{release} Requires: %{dridrivers} >= %{version}-%{release} %package -n %{dridrivers} Summary: Mesa DRI drivers Group: System/Libraries # do not require exact release to avoid conflicts when having # x86_64 dri drivers from tainted and i586 dri drivers from core Requires: mesa = %{version} %if 0%{?with_omx} %package omx-drivers Summary: Mesa-based OMX drivers %endif %package -n %{libd3dname} Summary: Mesa Direct3D9 state tracker Group: System/Libraries Provides: %{libd3dname_virt} = %{version}-%{release} %package -n %{libd3dname}-devel Summary: Development files for Mesa Direct3D9 state tracker Group: Development/C Requires: %{libd3dname} = %{version}-%{release} Provides: lib%{d3dname}-devel Provides: %{d3dname}-devel Provides: libd3d-devel %package -n %{libglname}-devel Summary: Development files for Mesa (OpenGL compatible 3D lib) Group: Development/C Requires: %{libglname} = %{version}-%{release} Requires: %{khrdevel} = %{version}-%{release} Provides: lib%{glname}-devel = %{version}-%{release} Provides: %{glname}-devel = %{version}-%{release} Provides: GL-devel Provides: libMesaGL-devel = %{version}-%{release} Provides: MesaGL-devel = %{version}-%{release} Provides: libgl-devel %package -n %{libeglname} Summary: Files for Mesa (EGL libs) Group: System/Libraries Provides: %{libeglname_virt} = %{version}-%{release} %package -n %{libeglname}-devel Summary: Development files for Mesa (EGL libs) Group: Development/C Requires: %{libeglname} = %{version}-%{release} Requires: %{khrdevel} = %{version}-%{release} Provides: EGL-devel Provides: lib%{eglname}-devel Provides: %{eglname}-devel Provides: libegl-devel %package -n %{khrdevel} Summary: Mesa Khronos development headers Group: Development/C Provides: mesakhr-devel = %{version}-%{release} %package -n %{libosmesaname} Summary: Mesa offscreen rendering library Group: System/Libraries %package -n %{osmesadevel} Summary: Development files for libosmesa Group: Development/C Requires: %{libosmesaname} = %{version}-%{release} Provides: osmesa-devel = %{version}-%{release} %package -n %{libglapiname} Summary: Files for mesa (glapi libs) Group: System/Libraries Provides: %{libglapiname_virt} = %{version}-%{release} %package -n %{libglapiname}-devel Summary: Development files for glapi libs Group: Development/C Requires: %{libglapiname_virt} = %{version}-%{release} Provides: lib%{glapiname}-devel Provides: %{libglapiname}-devel %if 0%{?with_opencl} %package -n %libclname Summary: Mesa OpenCL runtime library #Requires: libclc%{?_isa} #Requires: %{name}-libgbm%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} %package -n %libcldevel Summary: Mesa OpenCL development package Requires: %libclname%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} %endif %package -n %{libglesv1name} Summary: Files for Mesa (glesv1 libs) Group: System/Libraries Provides: %{libglesv1name_virt} = %{version}-%{release} %package -n %{libglesv1name}-devel Summary: Development files for glesv1 libs Group: Development/C Requires: %{libglesv1name} = %{version}-%{release} Requires: %{khrdevel} = %{version}-%{release} Provides: lib%{glesv1name}-devel Provides: %{glesv1name}-devel Provides: libglesv1-devel %package -n %{libglesv2name} Summary: Files for Mesa (glesv2 libs) Group: System/Libraries Provides: %{libglesv2name_virt} = %{version}-%{release} %package -n %{libglesv2name}-devel Summary: Development files for glesv2 libs Group: Development/C Requires: %{libglesv2name} = %{version}-%{release} Requires: %{khrdevel} = %{version}-%{release} Provides: lib%{glesv2name}-devel Provides: %{glesv2name}-devel Provides: libglesv2-devel %package -n %{libgbmname} Summary: Files for Mesa (gbm libs) Group: System/Libraries Provides: %{libgbmname_virt} = %{version}-%{release} %package -n %{libgbmname}-devel Summary: Development files for Mesa (gbm libs) Group: Development/C Requires: %{libgbmname} = %{version}-%{release} Provides: lib%{gbmname}-devel Provides: %{gbmname}-devel %package -n %{_lib}vdpau-driver-nouveau Summary: VDPAU plugin for nouveau driver Group: System/Libraries # temporary: %rename vdpau-driver-nouveau %package -n %{_lib}vdpau-driver-r300 Summary: VDPAU plugin for r300 driver Group: System/Libraries # temporary: %rename vdpau-driver-r300 %package -n %{_lib}vdpau-driver-r600 Summary: VDPAU plugin for r600 driver Group: System/Libraries # temporary: %rename vdpau-driver-r600 %package -n %{_lib}vdpau-driver-radeonsi Summary: VDPAU plugin for radeonsi driver Group: System/Libraries # temporary: %rename vdpau-driver-radeonsi %package -n %{libxaname} Summary: Files for Mesa XA state tracker Group: System/Libraries Provides: %{libxaname_virt} = %{version}-%{release} %package -n %{libxaname}-devel Summary: Development files for XA libs Group: Development/C Requires: %{libxaname_virt} = %{version}-%{release} Provides: lib%{xaname}-devel Provides: %{libxaname}-devel %package -n %{vulkandrivers} Summary: Mesa Vulkan driver for Intel and Radeon GPUs Group: System/Libraries %ifarch %{ix86} x86_64 Obsoletes: %{_lib}vulkan_intel < 18.3.0-4 Provides: %{_lib}vulkan_intel = %{version}-%{release} %endif Obsoletes: %{_lib}vulkan_radeon < 18.3.0-4 Provides: %{_lib}vulkan_radeon = %{version}-%{release} %package -n %{vulkandevel} Summary: Mesa's Vulkan development files for Intel and Radeon drivers Group: Development/C Requires: %{vulkandrivers} = %{version}-%{release} Obsoletes: %{_lib}vulkan-devel < 0:18.3.0-4 Provides: %{vulkanname}-devel = %{version}-%{release} %package common-devel Summary: Meta package for mesa devel Group: Development/C Provides: Mesa-common-devel = %{version}-%{release} Provides: hackMesa-common-devel = %{version} Obsoletes: Mesa-common-devel < %{version} Obsoletes: hackMesa-common-devel < %{version} Requires: %{libglname}-devel = %{version} Requires: mesaglu-devel Requires: freeglut-devel Requires: %{libeglname}-devel = %{version} Requires: %{libglesv1name}-devel = %{version} Requires: %{libglesv2name}-devel = %{version} #------------------------------------------------------------------------------ %description Mesa is an OpenGL %{opengl_ver} compatible 3D graphics library. %description common-devel Mesa common metapackage devel %description -n %{libeglname} Mesa is an OpenGL %{opengl_ver} compatible 3D graphics library. EGL parts. %description -n %{libeglname}-devel Mesa is an OpenGL %{opengl_ver} compatible 3D graphics library. EGL development parts. %description -n %{libglname} Mesa is an OpenGL %{opengl_ver} compatible 3D graphics library. GL and GLX parts. %description -n %{dridrivers} Mesa is an OpenGL %{opengl_ver} compatible 3D graphics library. DRI drivers. %if 0%{?with_omx} %description omx-drivers Mesa-based OMX drivers %endif %description -n %{libglname}-devel Mesa is an OpenGL %{opengl_ver} compatible 3D graphics library. This package contains the headers needed to compile Mesa programs. %description -n %{libglesv1name} OpenGL ES is a low-level, lightweight API for advanced embedded graphics using well-defined subset profiles of OpenGL. This package provides the OpenGL ES library version 1. %description -n %{khrdevel} Mesa Khronos development headers. %description -n %{libosmesaname} Mesa offscreen rendering libraries for rendering OpenGL into application-allocated blocks of memory. %description -n %{osmesadevel} This package contains the headers needed to compile programs against the Mesa offscreen rendering library. %description -n %{libglapiname} This packages provides the glapi shared library used by gallium. %description -n %{libglapiname}-devel This package contains the headers needed to compile programes against glapi shared library. %if 0%{?with_opencl} %description -n %libclname Mesa OpenCL runtime library %description -n %libcldevel Mesa OpenCL development package %endif %description -n %{libglesv1name}-devel This package contains the headers needed to compile OpenGL ES 1 programs. %description -n %{libd3dname} Mesa Direct3D9 state tracker. %description -n %{libd3dname}-devel Mesa Direct3D9 state tracker development package. %description -n %{libglesv2name} OpenGL ES is a low-level, lightweight API for advanced embedded graphics using well-defined subset profiles of OpenGL. This package provides the OpenGL ES library version 2. %description -n %{libglesv2name}-devel This package contains the headers needed to compile OpenGL ES 2 programs. %description -n %{libgbmname} Mesa is an OpenGL %{opengl_ver} compatible 3D graphics library. GBM (Graphics Buffer Manager) parts. %description -n %{libgbmname}-devel Mesa is an OpenGL %{opengl_ver} compatible 3D graphics library. GBM (Graphics Buffer Manager) development parts. %description -n %{libxaname} This packages provides the xa shared library used by gallium. %description -n %{libxaname}-devel This package contains the headers needed to compile programes against xa shared library. %description -n %{_lib}vdpau-driver-nouveau This packages provides a VPDAU plugin to enable video acceleration with the nouveau driver. %description -n %{_lib}vdpau-driver-r300 This packages provides a VPDAU plugin to enable video acceleration with the r300 driver. %description -n %{_lib}vdpau-driver-r600 This packages provides a VPDAU plugin to enable video acceleration with the r600 driver. %description -n %{_lib}vdpau-driver-radeonsi This packages provides a VPDAU plugin to enable video acceleration with the radeonsi driver. %description -n %{vulkandrivers} This package contains the Vulkan parts for Mesa's Intel and Radeon drivers. %description -n %{vulkandevel} This package contains the development files for Mesa's Vulkan implementation. #------------------------------------------------------------------------------ %prep %autosetup -n %{name}-%{version}%{?relc:-rc%{relc}} -p1 %build %meson -Dcpp_std=gnu++11 \ -Dplatforms=x11,wayland,drm,surfaceless \ -Ddri3=true \ -Ddri-drivers=%{?dri_drivers} \ %if 0%{?with_hardware} -Dgallium-drivers=swrast,virgl,r300,nouveau%{?with_iris:,iris}%{?with_vmware:,svga}%{?with_radeonsi:,radeonsi,r600}%{?with_freedreno:,freedreno}%{?with_etnaviv:,etnaviv}%{?with_tegra:,tegra}%{?with_vc4:,vc4}%{?with_kmsro:,kmsro} \ %else -Dgallium-drivers=swrast,virgl \ %endif -Dgallium-vdpau=%{?with_vdpau:true}%{!?with_vdpau:false} \ -Dgallium-xvmc=false \ -Dgallium-omx=%{?with_omx:bellagio}%{!?with_omx:disabled} \ -Dgallium-va=%{?with_vaapi:true}%{!?with_vaapi:false} \ -Dgallium-xa=%{?with_xa:true}%{!?with_xa:false} \ -Dgallium-nine=%{?with_nine:true}%{!?with_nine:false} \ -Dgallium-opencl=%{?with_opencl:icd}%{!?with_opencl:disabled} \ -Dvulkan-drivers=%{?vulkan_drivers} \ -Dshared-glapi=true \ -Dgles1=true \ -Dgles2=true \ -Dopengl=true \ -Dgbm=true \ -Dglx=dri \ -Degl=true \ -Dasm=%{?with_asm:true}%{!?with_asm:false} \ -Dllvm=true \ -Dshared-llvm=true \ -Dvalgrind=%{?with_valgrind:true}%{!?with_valgrind:false} \ -Dbuild-tests=false \ -Dselinux=false \ -Dosmesa=gallium \ -Dgallium-extra-hud=true \ -Dlmsensors=true \ %{nil} %meson_build %install %meson_install # FIXME: strip will likely break the hardlink # (blino) hardlink libGL files in %{_libdir}/mesa # to prevent proprietary driver installers from removing them mkdir -p $RPM_BUILD_ROOT%{_libdir}/mesa pushd $RPM_BUILD_ROOT%{_libdir}/mesa for l in ../libGL.so.*; do cp -a $l .; done popd %ifarch %{x86_64} mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/dri %endif # libvdpau opens the versioned name, don't bother including the unversioned rm -f %{buildroot}%{_libdir}/vdpau/*.so # strip out useless headers rm -f %{buildroot}%{_includedir}/GL/w*.h # remove .la files find %{buildroot} -name '*.la' -delete %ifnarch %{ix86} x86_64 # To have something to package for mesavulkan-devel on arm/aarch64 for now mkdir %{buildroot}%{_includedir}/vulkan %endif #------------------------------------------------------------------------------ %files /usr/share/drirc.d/ %files -n %{dridrivers} %dir %{_libdir}/dri %{_libdir}/dri/*_dri.so %{_libdir}/dri/*_drv*.so %if 0%{?with_hardware} %dir %{_libdir}/gallium-pipe %{_libdir}/gallium-pipe/*.so %endif %if 0%{?with_omx} %files omx-drivers %{_libdir}/bellagio/libomx_mesa.so %endif %if 0%{?with_opencl} %files -n %libclname %{_libdir}/libMesaOpenCL.so.* %{_sysconfdir}/OpenCL/vendors/mesa.icd %files -n %libcldevel %{_libdir}/libMesaOpenCL.so %endif %files -n %{libglname} %{_libdir}/libGL.so.* %dir %{_libdir}/mesa %{_libdir}/mesa/libGL.so.%{glmajor}{,.*} %files -n %{libeglname} %{_libdir}/libEGL.so.%{eglmajor}{,.*} %files -n %{libosmesaname} %{_libdir}/libOSMesa.so.%{osmesamajor}{,.*} %files -n %{libglapiname} %{_libdir}/libglapi.so.%{glapimajor}{,.*} %files -n %{libglesv1name} %{_libdir}/libGLESv1_CM.so.%{glesv1major}{,.*} %files -n %{libd3dname} %{_libdir}/d3d/*.so.* %files -n %{libglesv2name} %{_libdir}/libGLESv2.so.%{glesv2major}{,.*} %files -n %{libgbmname} %{_libdir}/libgbm.so.%{gbmmajor} %{_libdir}/libgbm.so.%{gbmmajor}.* %files -n %{libxaname} %{_libdir}/libxatracker.so.%{xamajor}{,.*} %files -n %{libglname}-devel %dir %{_includedir}/GL %{_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 %{_includedir}/GL/glcorearb.h %dir %{_includedir}/GL/internal %{_includedir}/GL/internal/dri_interface.h %{_libdir}/pkgconfig/dri.pc %{_libdir}/libGL.so %{_libdir}/pkgconfig/gl.pc %files common-devel %files -n %{libeglname}-devel %{_includedir}/EGL %{_libdir}/libEGL.so %{_libdir}/pkgconfig/egl.pc %files -n %{khrdevel} %{_includedir}/KHR %files -n %{osmesadevel} %dir %{_includedir}/GL %{_includedir}/GL/osmesa.h %{_libdir}/libOSMesa.so %{_libdir}/pkgconfig/osmesa.pc %files -n %{libglapiname}-devel %{_libdir}/libglapi.so %files -n %{libglesv1name}-devel %{_includedir}/GLES %{_libdir}/libGLESv1_CM.so %{_libdir}/pkgconfig/glesv1_cm.pc %files -n %{libglesv2name}-devel %{_includedir}/GLES2 %{_includedir}/GLES3 %{_libdir}/libGLESv2.so %{_libdir}/pkgconfig/glesv2.pc %files -n %{libd3dname}-devel %{_includedir}/d3dadapter %{_libdir}/d3d/*.so %{_libdir}/pkgconfig/d3d.pc %files -n %{libgbmname}-devel %{_libdir}/libgbm.so %{_includedir}/gbm.h %{_libdir}/pkgconfig/gbm.pc %files -n %{libxaname}-devel %{_libdir}/libxatracker.so %{_includedir}/xa_tracker.h %{_includedir}/xa_composite.h %{_includedir}/xa_context.h %{_libdir}/pkgconfig/xatracker.pc %files -n %{_lib}vdpau-driver-nouveau %{_libdir}/vdpau/libvdpau_nouveau.so.* %files -n %{_lib}vdpau-driver-r300 %{_libdir}/vdpau/libvdpau_r300.so.* %if 0%{?with_radeonsi} %files -n %{_lib}vdpau-driver-r600 %{_libdir}/vdpau/libvdpau_r600.so.* %files -n %{_lib}vdpau-driver-radeonsi %{_libdir}/vdpau/libvdpau_radeonsi.so.* %endif %files -n %{vulkandrivers} %dir %{_datadir}/vulkan %dir %{_datadir}/vulkan/icd.d %ifarch %{ix86} x86_64 %{_datadir}/vulkan/icd.d/intel_icd*.json %{_libdir}/libvulkan_intel.so %endif %{_datadir}/vulkan/icd.d/radeon_icd*.json %{_libdir}/libvulkan_radeon.so %files -n %{vulkandevel} %dir %{_includedir}/vulkan %ifarch %{ix86} x86_64 %{_includedir}/vulkan/vulkan_intel.h %endif