diff options
author | Alyssa Ross <hi@alyssa.is> | 2019-08-14 00:02:54 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2019-08-14 00:02:54 +0000 |
commit | f9abd30e11337cf07034f2cc8ad1691aa4a69386 (patch) | |
tree | c3b5c34b1c533f5c231dc6707e96795fb3a9a138 /nixpkgs/pkgs/development/libraries/mesa | |
parent | 44e04ea2730f8e3b863b81b0056babe233c244f6 (diff) | |
parent | 1036dc664169b32613ec11b58cc1740c7511a340 (diff) | |
download | nixlib-f9abd30e11337cf07034f2cc8ad1691aa4a69386.tar nixlib-f9abd30e11337cf07034f2cc8ad1691aa4a69386.tar.gz nixlib-f9abd30e11337cf07034f2cc8ad1691aa4a69386.tar.bz2 nixlib-f9abd30e11337cf07034f2cc8ad1691aa4a69386.tar.lz nixlib-f9abd30e11337cf07034f2cc8ad1691aa4a69386.tar.xz nixlib-f9abd30e11337cf07034f2cc8ad1691aa4a69386.tar.zst nixlib-f9abd30e11337cf07034f2cc8ad1691aa4a69386.zip |
Merge commit '1036dc664169b32613ec11b58cc1740c7511a340'
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/mesa')
5 files changed, 216 insertions, 337 deletions
diff --git a/nixpkgs/pkgs/development/libraries/mesa/default.nix b/nixpkgs/pkgs/development/libraries/mesa/default.nix index a35bdb5764bb..2c5e4a8e034e 100644 --- a/nixpkgs/pkgs/development/libraries/mesa/default.nix +++ b/nixpkgs/pkgs/development/libraries/mesa/default.nix @@ -1,13 +1,13 @@ -{ stdenv, fetchurl, lib -, pkgconfig, intltool, autoreconfHook -, file, expat, libdrm, xorg, wayland, wayland-protocols, openssl +{ stdenv, lib, fetchurl, fetchpatch +, pkgconfig, intltool, ninja, meson +, file, flex, bison, expat, libdrm, xorg, wayland, wayland-protocols, openssl , llvmPackages, libffi, libomxil-bellagio, libva-minimal -, libelf, libvdpau, python2, python2Packages +, libelf, libvdpau, python3Packages , libglvnd , enableRadv ? true -, galliumDrivers ? null -, driDrivers ? null -, vulkanDrivers ? null +, galliumDrivers ? ["auto"] +, driDrivers ? ["auto"] +, vulkanDrivers ? ["auto"] , eglPlatforms ? [ "x11" ] ++ lib.optionals stdenv.isLinux [ "wayland" "drm" ] , OpenGL, Xplugin , withValgrind ? stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32, valgrind-light @@ -27,49 +27,13 @@ with stdenv.lib; let - # platforms that have PCIe slots and thus can use most non-integrated GPUs - pciePlatform = !stdenv.hostPlatform.isAarch32 && !stdenv.hostPlatform.isAarch64; - defaultGalliumDrivers = optionals (elem "drm" eglPlatforms) ([ "virgl" ] - ++ lib.optionals pciePlatform [ "r300" "r600" "radeonsi" ] - ++ lib.optionals (pciePlatform || stdenv.hostPlatform.isAarch32 || stdenv.hostPlatform.isAarch64) [ "nouveau" ] - ++ lib.optionals stdenv.hostPlatform.isx86 [ "i915" "svga" ] - ++ lib.optionals (stdenv.hostPlatform.isAarch32 || stdenv.hostPlatform.isAarch64) [ "vc4" ] - ++ lib.optionals stdenv.hostPlatform.isAarch64 [ "freedreno" "etnaviv" "imx" ] - ); - defaultDriDrivers = optionals (elem "drm" eglPlatforms) ([ ] - ++ lib.optionals pciePlatform [ "radeon" "r200" ] - ++ lib.optionals (pciePlatform || stdenv.hostPlatform.isAarch32 || stdenv.hostPlatform.isAarch64) [ "nouveau" ] - ++ lib.optionals stdenv.hostPlatform.isx86 [ "i915" "i965" ]); - defaultVulkanDrivers = optionals stdenv.hostPlatform.isLinux ([ ] - ++ lib.optional stdenv.hostPlatform.isx86 "intel" - ++ lib.optional enableRadv "radeon"); -in - -let gallium_ = galliumDrivers; dri_ = driDrivers; vulkan_ = vulkanDrivers; in - -let - galliumDrivers = - (if gallium_ == null - then defaultGalliumDrivers - else gallium_) - ++ lib.optional stdenv.isLinux "swrast"; - driDrivers = - (if dri_ == null - then optionals (elem "drm" eglPlatforms) defaultDriDrivers - else dri_) ++ lib.optional stdenv.isLinux "swrast"; - vulkanDrivers = - if vulkan_ == null - then defaultVulkanDrivers - else vulkan_; -in - -let - version = "18.3.4"; + version = "19.1.1"; branch = head (splitString "." version); in -let self = stdenv.mkDerivation { - name = "mesa-${version}"; +stdenv.mkDerivation rec { + pname = "mesa"; + inherit version; src = fetchurl { urls = [ @@ -78,7 +42,7 @@ let self = stdenv.mkDerivation { "ftp://ftp.freedesktop.org/pub/mesa/older-versions/${branch}.x/${version}/mesa-${version}.tar.xz" "https://mesa.freedesktop.org/archive/mesa-${version}.tar.xz" ]; - sha256 = "01xv03ah4l5lcfx015n3fg1620dh4nbbv6gmhh6zhdsx6sj4sc9j"; + sha256 = "10amy5sdmpjbskr3xazgk0jyli8xpgi0y1nsmjr76hx8nhb4n4bj"; }; prePatch = "patchShebangs ."; @@ -87,60 +51,58 @@ let self = stdenv.mkDerivation { # revive ./dricore-gallium.patch when it gets ported (from Ubuntu), as it saved # ~35 MB in $drivers; watch https://launchpad.net/ubuntu/+source/mesa/+changelog patches = [ - ./symlink-drivers.patch ./missing-includes.patch # dev_t needs sys/stat.h, time_t needs time.h, etc.-- fixes build w/musl + ./opencl-install-dir.patch ./disk_cache-include-dri-driver-path-in-cache-key.patch - ]; + ] # do not prefix user provided dri-drivers-path + ++ lib.optional (lib.versionOlder version "19.0.0") (fetchpatch { + url = "https://gitlab.freedesktop.org/mesa/mesa/commit/f6556ec7d126b31da37c08d7cb657250505e01a0.patch"; + sha256 = "0z6phi8hbrbb32kkp1js7ggzviq7faz1ria36wi4jbc4in2392d9"; + }) + ++ lib.optionals (lib.versionOlder version "19.1.0") [ + # do not prefix user provided d3d-drivers-path + (fetchpatch { + url = "https://gitlab.freedesktop.org/mesa/mesa/commit/dcc48664197c7e44684ccfb970a4ae083974d145.patch"; + sha256 = "1nhs0xpx3hiy8zfb5gx1zd7j7xha6h0hr7yingm93130a5902lkb"; + }) + + # don't build libGLES*.so with GLVND + (fetchpatch { + url = "https://gitlab.freedesktop.org/mesa/mesa/commit/b01524fff05eef66e8cd24f1c5aacefed4209f03.patch"; + sha256 = "1pszr6acx2xw469zq89n156p3bf3xf84qpbjw5fr1sj642lbyh7c"; + }) + ]; - outputs = [ "out" "dev" "drivers" ] - ++ lib.optional (elem "swrast" galliumDrivers) "osmesa"; + outputs = [ "out" "dev" "drivers" "osmesa" ]; # TODO: Figure out how to enable opencl without having a runtime dependency on clang - configureFlags = [ - "--sysconfdir=${libglvnd.driverLink}/etc" - "--localstatedir=/var" - "--with-dri-driverdir=$(drivers)/lib/dri" - "--with-dri-searchpath=${libglvnd.driverLink}/lib/dri" - "--with-platforms=${concatStringsSep "," eglPlatforms}" - "--with-gallium-drivers=${concatStringsSep "," galliumDrivers}" - "--with-dri-drivers=${concatStringsSep "," driDrivers}" - "--with-vulkan-drivers=${concatStringsSep "," vulkanDrivers}" - "--enable-texture-float" - (enableFeature stdenv.isLinux "dri3") - (enableFeature stdenv.isLinux "nine") # Direct3D in Wine - (enableFeature stdenv.isLinux "libglvnd") - "--enable-dri" - "--enable-driglx-direct" - "--enable-gles1" - "--enable-gles2" - "--enable-glx" - # https://bugs.freedesktop.org/show_bug.cgi?id=35268 - (enableFeature (!stdenv.hostPlatform.isMusl) "glx-tls") - # used by wine - (enableFeature (elem "swrast" galliumDrivers) "gallium-osmesa") - "--enable-llvm" - (enableFeature stdenv.isLinux "egl") - (enableFeature stdenv.isLinux "xa") # used in vmware driver - (enableFeature stdenv.isLinux "gbm") - "--enable-xvmc" - "--enable-vdpau" - "--enable-shared-glapi" - "--enable-llvm-shared-libs" - (enableFeature stdenv.isLinux "omx-bellagio") - (enableFeature stdenv.isLinux "va") - "--disable-opencl" - ]; - - nativeBuildInputs = [ - autoreconfHook intltool pkgconfig file - python2 python2Packages.Mako + mesonFlags = [ + "--sysconfdir=/etc" + + # Don't build in debug mode + # https://gitlab.freedesktop.org/mesa/mesa/blob/master/docs/meson.html#L327 + "-Db_ndebug=true" + + "-Ddisk-cache-key=${placeholder "drivers"}" + "-Ddri-search-path=${libglvnd.driverLink}/lib/dri" + + "-Dplatforms=${concatStringsSep "," eglPlatforms}" + "-Ddri-drivers=${concatStringsSep "," driDrivers}" + "-Dgallium-drivers=${concatStringsSep "," galliumDrivers}" + "-Dvulkan-drivers=${concatStringsSep "," vulkanDrivers}" + + "-Ddri-drivers-path=${placeholder "drivers"}/lib/dri" + "-Dvdpau-libs-path=${placeholder "drivers"}/lib/vdpau" + "-Dxvmc-libs-path=${placeholder "drivers"}/lib" + "-Domx-libs-path=${placeholder "drivers"}/lib/bellagio" + "-Dva-libs-path=${placeholder "drivers"}/lib/dri" + "-Dd3d-drivers-path=${placeholder "drivers"}/lib/d3d" + ] ++ optionals stdenv.isLinux [ + "-Dglvnd=true" + "-Dosmesa=gallium" # used by wine + "-Dgallium-nine=true" # Direct3D in Wine ]; - propagatedBuildInputs = with xorg; [ - libXdamage libXxf86vm - ] ++ optional stdenv.isLinux libdrm - ++ optionals stdenv.isDarwin [ OpenGL Xplugin ]; - buildInputs = with xorg; [ expat llvmPackages.llvm libglvnd xorgproto libX11 libXext libxcb libXt libXfixes libxshmfence libXrandr @@ -150,50 +112,38 @@ let self = stdenv.mkDerivation { ++ lib.optionals stdenv.isLinux [ libomxil-bellagio libva-minimal ] ++ lib.optional withValgrind valgrind-light; + nativeBuildInputs = [ + pkgconfig meson ninja + intltool bison flex file + python3Packages.python python3Packages.Mako + ]; + + propagatedBuildInputs = with xorg; [ + libXdamage libXxf86vm + ] ++ optional stdenv.isLinux libdrm + ++ optionals stdenv.isDarwin [ OpenGL Xplugin ]; + enableParallelBuilding = true; doCheck = false; - installFlags = [ - "sysconfdir=\${drivers}/etc" - "localstatedir=\${TMPDIR}" - "vendorjsondir=\${out}/share/glvnd/egl_vendor.d" - ]; - - # TODO: probably not all .la files are completely fixed, but it shouldn't matter; postInstall = '' # Some installs don't have any drivers so this directory is never created. - mkdir -p $drivers - '' + optionalString (galliumDrivers != []) '' + mkdir -p $drivers $osmesa + '' + optionalString stdenv.isLinux '' + mkdir -p $drivers/lib + # move gallium-related stuff to $drivers, so $out doesn't depend on LLVM - mv -t "$drivers/lib/" \ - $out/lib/libXvMC* \ - $out/lib/d3d \ - $out/lib/vdpau \ - $out/lib/bellagio \ + mv -t $drivers/lib \ $out/lib/libxatracker* \ $out/lib/libvulkan_* # Move other drivers to a separate output - mv $out/lib/dri/* $drivers/lib/dri # */ - rmdir "$out/lib/dri" mv $out/lib/lib*_mesa* $drivers/lib # move libOSMesa to $osmesa, as it's relatively big - mkdir -p {$osmesa,$drivers}/lib/ + mkdir -p $osmesa/lib mv -t $osmesa/lib/ $out/lib/libOSMesa* - # now fix references in .la files - sed "/^libdir=/s,$out,$osmesa," -i $osmesa/lib/libOSMesa*.la - - # set the default search path for DRI drivers; used e.g. by X server - substituteInPlace "$dev/lib/pkgconfig/dri.pc" --replace '$(drivers)' "${libglvnd.driverLink}" - - # remove GLES libraries; they are provided by libglvnd - rm $out/lib/lib{GLESv1_CM,GLESv2}.* - - # remove pkgconfig files for GL/GLES/EGL; they are provided by libGL. - rm $dev/lib/pkgconfig/{gl,egl,glesv1_cm,glesv2}.pc - # move vendor files mv $out/share/ $drivers/ @@ -202,11 +152,6 @@ let self = stdenv.mkDerivation { substituteInPlace "$js" --replace '"libEGL_' '"'"$drivers/lib/libEGL_" done - # Update search path used by pkg-config - for pc in $dev/lib/pkgconfig/{d3d,dri,xatracker}.pc; do - substituteInPlace "$pc" --replace $out $drivers - done - '' + optionalString (vulkanDrivers != []) '' # Update search path used by Vulkan (it's pointing to $out but # drivers are in $drivers) for js in $drivers/share/vulkan/icd.d/*.json; do @@ -217,7 +162,18 @@ let self = stdenv.mkDerivation { # TODO: # check $out doesn't depend on llvm: builder failures are ignored # for some reason grep -qv '${llvmPackages.llvm}' -R "$out"; - postFixup = optionalString (galliumDrivers != []) '' + postFixup = optionalString stdenv.isLinux '' + # set the default search path for DRI drivers; used e.g. by X server + substituteInPlace "$dev/lib/pkgconfig/dri.pc" --replace "$drivers" "${libglvnd.driverLink}" + + # remove pkgconfig files for GL/EGL; they are provided by libGL. + rm $dev/lib/pkgconfig/{gl,egl}.pc + + # Update search path used by pkg-config + for pc in $dev/lib/pkgconfig/{d3d,dri,xatracker}.pc; do + substituteInPlace "$pc" --replace $out $drivers + done + # add RPATH so the drivers can find the moved libgallium and libdricore9 # moved here to avoid problems with stripping patchelfed files for lib in $drivers/lib/*.so* $drivers/lib/*/*.so*; do @@ -227,81 +183,11 @@ let self = stdenv.mkDerivation { done ''; + NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-fno-common"; + passthru = { - inherit libdrm version; + inherit libdrm; inherit (libglvnd) driverLink; - - # Use stub libraries from libglvnd and headers from Mesa. - stubs = stdenv.mkDerivation { - name = "libGL-${libglvnd.version}"; - outputs = [ "out" "dev" ]; - - # On macOS, libglvnd is not supported, so we just use what mesa - # build. We need to also include OpenGL.framework, and some - # extra tricks to go along with. We add mesa’s libGLX to support - # the X extensions to OpenGL. - buildCommand = if stdenv.hostPlatform.isDarwin then '' - mkdir -p $out/nix-support $dev - echo ${OpenGL} >> $out/nix-support/propagated-build-inputs - ln -s ${self.out}/lib $out/lib - - mkdir -p $dev/lib/pkgconfig $dev/nix-support - echo "$out" > $dev/nix-support/propagated-build-inputs - ln -s ${self.dev}/include $dev/include - - cat <<EOF >$dev/lib/pkgconfig/gl.pc - Name: gl - Description: gl library - Version: ${self.version} - Libs: -L${self.out}/lib -lGL - Cflags: -I${self.dev}/include - EOF - - cat <<EOF >$dev/lib/pkgconfig/glesv1_cm.pc - Name: glesv1_cm - Description: glesv1_cm library - Version: ${self.version} - Libs: -L${self.out}/lib -lGLESv1_CM - Cflags: -I${self.dev}/include - EOF - - cat <<EOF >$dev/lib/pkgconfig/glesv2.pc - Name: glesv2 - Description: glesv2 library - Version: ${self.version} - Libs: -L${self.out}/lib -lGLESv2 - Cflags: -I${self.dev}/include - EOF - '' - - # Otherwise, setup gl stubs to use libglvnd. - else '' - mkdir -p $out/nix-support - ln -s ${libglvnd.out}/lib $out/lib - - mkdir -p $dev/{,lib/pkgconfig,nix-support} - echo "$out" > $dev/nix-support/propagated-build-inputs - ln -s ${self.dev}/include $dev/include - - genPkgConfig() { - local name="$1" - local lib="$2" - - cat <<EOF >$dev/lib/pkgconfig/$name.pc - Name: $name - Description: $lib library - Version: ${self.version} - Libs: -L${libglvnd.out}/lib -l$lib - Cflags: -I${self.dev}/include - EOF - } - - genPkgConfig gl GL - genPkgConfig egl EGL - genPkgConfig glesv1_cm GLESv1_CM - genPkgConfig glesv2 GLESv2 - ''; - }; }; meta = with stdenv.lib; { @@ -311,5 +197,4 @@ let self = stdenv.mkDerivation { platforms = platforms.mesaPlatforms; maintainers = with maintainers; [ vcunat ]; }; -}; -in self +} diff --git a/nixpkgs/pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch b/nixpkgs/pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch index 37813db89347..1e280b64ee5f 100644 --- a/nixpkgs/pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch +++ b/nixpkgs/pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch @@ -6,29 +6,30 @@ Subject: [PATCH] disk_cache: include dri driver path in cache key This fixes invalid cache hits on NixOS where all shared library timestamps in /nix/store are zero. --- - src/util/Makefile.am | 3 +++ + meson_options.txt | 6 ++++++ src/util/disk_cache.c | 3 +++ - 2 files changed, 6 insertions(+) + src/util/meson.build | 7 ++++++- + 3 files changed, 15 insertions(+), 1 deletion(-) -diff --git a/src/util/Makefile.am b/src/util/Makefile.am -index bafb57439a..a22e2e41eb 100644 ---- a/src/util/Makefile.am -+++ b/src/util/Makefile.am -@@ -35,6 +35,9 @@ noinst_LTLIBRARIES = \ - libmesautil.la \ - libxmlconfig.la - -+AM_CFLAGS = \ -+ -DDISK_CACHE_KEY=\"$(drivers)\" -+ - AM_CPPFLAGS = \ - $(PTHREAD_CFLAGS) \ - -I$(top_srcdir)/include +diff --git a/meson_options.txt b/meson_options.txt +index a723b5406cf..65a8954291f 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -330,3 +330,9 @@ option( + value : true, + description : 'Enable direct rendering in GLX and EGL for DRI', + ) ++option( ++ 'disk-cache-key', ++ type : 'string', ++ value : '', ++ description : 'Mesa cache key.' ++) diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c -index 368ec41792..071220b2ba 100644 +index 0aa2646a9bb..bd784d38e21 100644 --- a/src/util/disk_cache.c +++ b/src/util/disk_cache.c -@@ -388,8 +388,10 @@ disk_cache_create(const char *gpu_name, const char *driver_id, +@@ -389,8 +389,10 @@ disk_cache_create(const char *gpu_name, const char *driver_id, /* Create driver id keys */ size_t id_size = strlen(driver_id) + 1; @@ -39,7 +40,7 @@ index 368ec41792..071220b2ba 100644 cache->driver_keys_blob_size += gpu_name_size; /* We sometimes store entire structs that contains a pointers in the cache, -@@ -410,6 +412,7 @@ disk_cache_create(const char *gpu_name, const char *driver_id, +@@ -411,6 +413,7 @@ disk_cache_create(const char *gpu_name, const char *driver_id, uint8_t *drv_key_blob = cache->driver_keys_blob; DRV_KEY_CPY(drv_key_blob, &cache_version, cv_size) DRV_KEY_CPY(drv_key_blob, driver_id, id_size) @@ -47,6 +48,24 @@ index 368ec41792..071220b2ba 100644 DRV_KEY_CPY(drv_key_blob, gpu_name, gpu_name_size) DRV_KEY_CPY(drv_key_blob, &ptr_size, ptr_size_size) DRV_KEY_CPY(drv_key_blob, &driver_flags, driver_flags_size) +diff --git a/src/util/meson.build b/src/util/meson.build +index 397c2228129..77013563e5d 100644 +--- a/src/util/meson.build ++++ b/src/util/meson.build +@@ -120,7 +120,12 @@ libmesa_util = static_library( + [files_mesa_util, format_srgb], + include_directories : inc_common, + dependencies : [dep_zlib, dep_clock, dep_thread, dep_atomic, dep_m], +- c_args : [c_msvc_compat_args, c_vis_args], ++ c_args : [ ++ c_msvc_compat_args, c_vis_args, ++ '-DDISK_CACHE_KEY="@0@"'.format( ++ get_option('disk-cache-key') ++ ), ++ ], + build_by_default : false + ) + -- -2.19.1 +2.19.2 diff --git a/nixpkgs/pkgs/development/libraries/mesa/opencl-install-dir.patch b/nixpkgs/pkgs/development/libraries/mesa/opencl-install-dir.patch new file mode 100644 index 000000000000..fe85d2c90bb2 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/mesa/opencl-install-dir.patch @@ -0,0 +1,12 @@ +diff --git a/src/gallium/targets/opencl/meson.build b/src/gallium/targets/opencl/meson.build +index 317ad8dab4a..5567308caf0 100644 +--- a/src/gallium/targets/opencl/meson.build ++++ b/src/gallium/targets/opencl/meson.build +@@ -68,6 +68,6 @@ if with_opencl_icd + input : 'mesa.icd.in', + output : 'mesa.icd', + install : true, +- install_dir : join_paths(get_option('sysconfdir'), 'OpenCL', 'vendors'), ++ install_dir : join_paths(get_option('prefix'), 'etc', 'OpenCL', 'vendors'), + ) + endif diff --git a/nixpkgs/pkgs/development/libraries/mesa/stubs.nix b/nixpkgs/pkgs/development/libraries/mesa/stubs.nix new file mode 100644 index 000000000000..5cb6ac3d4d13 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/mesa/stubs.nix @@ -0,0 +1,75 @@ +{ stdenv +, libglvnd, mesa +, OpenGL }: + +stdenv.mkDerivation { + inherit (libglvnd) version; + pname = "libGL"; + outputs = [ "out" "dev" ]; + + # On macOS, libglvnd is not supported, so we just use what mesa + # build. We need to also include OpenGL.framework, and some + # extra tricks to go along with. We add mesa’s libGLX to support + # the X extensions to OpenGL. + buildCommand = if stdenv.hostPlatform.isDarwin then '' + mkdir -p $out/nix-support $dev + echo ${OpenGL} >> $out/nix-support/propagated-build-inputs + ln -s ${mesa.out}/lib $out/lib + + mkdir -p $dev/lib/pkgconfig $dev/nix-support + echo "$out" > $dev/nix-support/propagated-build-inputs + ln -s ${mesa.dev}/include $dev/include + + cat <<EOF >$dev/lib/pkgconfig/gl.pc + Name: gl + Description: gl library + Version: ${mesa.version} + Libs: -L${mesa.out}/lib -lGL + Cflags: -I${mesa.dev}/include + EOF + + cat <<EOF >$dev/lib/pkgconfig/glesv1_cm.pc + Name: glesv1_cm + Description: glesv1_cm library + Version: ${mesa.version} + Libs: -L${mesa.out}/lib -lGLESv1_CM + Cflags: -I${mesa.dev}/include + EOF + + cat <<EOF >$dev/lib/pkgconfig/glesv2.pc + Name: glesv2 + Description: glesv2 library + Version: ${mesa.version} + Libs: -L${mesa.out}/lib -lGLESv2 + Cflags: -I${mesa.dev}/include + EOF + '' + + # Otherwise, setup gl stubs to use libglvnd. + else '' + mkdir -p $out/nix-support + ln -s ${libglvnd.out}/lib $out/lib + + mkdir -p $dev/{,lib/pkgconfig,nix-support} + echo "$out" > $dev/nix-support/propagated-build-inputs + ln -s ${mesa.dev}/include $dev/include + + genPkgConfig() { + local name="$1" + local lib="$2" + + cat <<EOF >$dev/lib/pkgconfig/$name.pc + Name: $name + Description: $lib library + Version: ${mesa.version} + Libs: -L${libglvnd.out}/lib -l$lib + Cflags: -I${mesa.dev}/include + EOF + } + + genPkgConfig gl GL + genPkgConfig egl EGL + genPkgConfig glesv1_cm GLESv1_CM + genPkgConfig glesv2 GLESv2 + ''; +} diff --git a/nixpkgs/pkgs/development/libraries/mesa/symlink-drivers.patch b/nixpkgs/pkgs/development/libraries/mesa/symlink-drivers.patch deleted file mode 100644 index af2ec9fdb096..000000000000 --- a/nixpkgs/pkgs/development/libraries/mesa/symlink-drivers.patch +++ /dev/null @@ -1,112 +0,0 @@ -diff -ru -x '*~' mesa-12.0.3-orig/src/gallium/targets/dri/Makefile.am mesa-12.0.3/src/gallium/targets/dri/Makefile.am ---- mesa-12.0.3-orig/src/gallium/targets/dri/Makefile.am 2016-09-08 18:57:48.000000000 +0200 -+++ mesa-12.0.3/src/gallium/targets/dri/Makefile.am 2016-09-22 14:42:19.173575498 +0200 -@@ -134,14 +134,13 @@ - done; - endif - --# hardlink each megadriver instance, but don't actually have --# gallium_dri.so in the set of final installed files. -+# symlink each megadriver instance. - install-data-hook: - for i in $(TARGET_DRIVERS); do \ -- ln -f $(DESTDIR)$(dridir)/gallium_dri.so \ -+ ln -srf $(DESTDIR)$(dridir)/gallium_dri.so \ - $(DESTDIR)$(dridir)/$${i}_dri.so; \ - done; \ -- $(RM) $(DESTDIR)$(dridir)/gallium_dri.*; \ -+ $(RM) $(DESTDIR)$(dridir)/gallium_dri.la \ - $(RM) -d $(DESTDIR)$(dridir) &>/dev/null || true - - uninstall-hook: - for i in $(TARGET_DRIVERS); do \ -diff -ru -x '*~' mesa-12.0.3-orig/src/gallium/targets/va/Makefile.am mesa-12.0.3/src/gallium/targets/va/Makefile.am ---- mesa-12.0.3-orig/src/gallium/targets/va/Makefile.am 2016-09-08 18:57:48.000000000 +0200 -+++ mesa-12.0.3/src/gallium/targets/va/Makefile.am 2016-09-22 14:45:39.635963339 +0200 -@@ -71,10 +71,10 @@ - # gallium_drv_video.so in the set of final installed files. - install-data-hook: - for i in $(TARGET_DRIVERS); do \ -- ln -f $(DESTDIR)$(vadir)/gallium_drv_video.so \ -+ ln -srf $(DESTDIR)$(vadir)/gallium_drv_video.so \ - $(DESTDIR)$(vadir)/$${i}_drv_video.so; \ - done; \ -- $(RM) $(DESTDIR)$(vadir)/gallium_drv_video.* -+ $(RM) $(DESTDIR)$(vadir)/gallium_drv_video.la - - uninstall-hook: - for i in $(TARGET_DRIVERS); do \ -diff -ru -x '*~' mesa-12.0.3-orig/src/gallium/targets/vdpau/Makefile.am mesa-12.0.3/src/gallium/targets/vdpau/Makefile.am ---- mesa-12.0.3-orig/src/gallium/targets/vdpau/Makefile.am 2016-05-24 21:19:37.000000000 +0200 -+++ mesa-12.0.3/src/gallium/targets/vdpau/Makefile.am 2016-09-22 14:42:19.173575498 +0200 -@@ -103,15 +103,14 @@ - done; - endif - --# hardlink each megadriver instance, but don't actually have --# libvdpau_gallium.so in the set of final installed files. -+# symlink each megadriver instance. - install-data-hook: - $(AM_V_GEN)dest_dir=$(DESTDIR)/$(vdpaudir); \ - for i in $(TARGET_DRIVERS); do \ - j=libvdpau_gallium.$(LIB_EXT); \ - k=libvdpau_$${i}.$(LIB_EXT); \ - l=$${k}.$(VDPAU_MAJOR).$(VDPAU_MINOR).0; \ -- ln -f $${dest_dir}/$${j}.$(VDPAU_MAJOR).$(VDPAU_MINOR).0 \ -+ ln -srf $${dest_dir}/$${j}.$(VDPAU_MAJOR).$(VDPAU_MINOR).0 \ - $${dest_dir}/$${l}; \ - ln -sf $${l} \ - $${dest_dir}/$${k}.$(VDPAU_MAJOR).$(VDPAU_MINOR); \ -@@ -120,7 +119,7 @@ - ln -sf $${l} \ - $${dest_dir}/$${k}; \ - done; \ -- $(RM) $${dest_dir}/libvdpau_gallium.*; \ -+ $(RM) $${dest_dir}/libvdpau_gallium.la \ - $(RM) -d $${dest_dir} &>/dev/null || true - - uninstall-hook: - for i in $(TARGET_DRIVERS); do \ -diff -ru -x '*~' mesa-12.0.3-orig/src/gallium/targets/xvmc/Makefile.am mesa-12.0.3/src/gallium/targets/xvmc/Makefile.am ---- mesa-12.0.3-orig/src/gallium/targets/xvmc/Makefile.am 2016-05-24 21:19:37.000000000 +0200 -+++ mesa-12.0.3/src/gallium/targets/xvmc/Makefile.am 2016-09-22 14:54:22.291014543 +0200 -@@ -73,7 +73,7 @@ - j=libXvMCgallium.$(LIB_EXT); \ - k=libXvMC$${i}.$(LIB_EXT); \ - l=$${k}.$(XVMC_MAJOR).$(XVMC_MINOR).0; \ -- ln -f $${dest_dir}/$${j}.$(XVMC_MAJOR).$(XVMC_MINOR).0 \ -+ ln -srf $${dest_dir}/$${j}.$(XVMC_MAJOR).$(XVMC_MINOR).0 \ - $${dest_dir}/$${l}; \ - ln -sf $${l} \ - $${dest_dir}/$${k}.$(XVMC_MAJOR).$(XVMC_MINOR); \ -@@ -82,7 +82,7 @@ - ln -sf $${l} \ - $${dest_dir}/$${k}; \ - done; \ -- $(RM) $${dest_dir}/libXvMCgallium.*; \ -+ $(RM) $${dest_dir}/libXvMCgallium.la \ - $(RM) -d $${dest_dir} &>/dev/null || true - - uninstall-hook: - for i in $(TARGET_DRIVERS); do \ -diff -ru -x '*~' mesa-12.0.3-orig/src/mesa/drivers/dri/Makefile.am mesa-12.0.3/src/mesa/drivers/dri/Makefile.am ---- mesa-12.0.3-orig/src/mesa/drivers/dri/Makefile.am 2016-09-08 18:57:48.000000000 +0200 -+++ mesa-12.0.3/src/mesa/drivers/dri/Makefile.am 2016-09-22 14:42:19.173575498 +0200 -@@ -94,14 +94,13 @@ - done; - endif - --# hardlink each megadriver instance, but don't actually have --# mesa_dri_drivers.so in the set of final installed files. -+# symink each megadriver instance. - install-data-hook: - for i in $(MEGADRIVERS); do \ -- ln -f $(DESTDIR)$(dridir)/mesa_dri_drivers.so \ -+ ln -srf $(DESTDIR)$(dridir)/mesa_dri_drivers.so \ - $(DESTDIR)$(dridir)/$$i; \ - done; -- $(RM) $(DESTDIR)$(dridir)/mesa_dri_drivers.* -+ $(RM) $(DESTDIR)$(dridir)/mesa_dri_drivers.la - - uninstall-hook: - for i in $(MEGADRIVERS); do \ |