about summary refs log tree commit diff
path: root/pkgs/development/libraries/mesa
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2019-06-04 00:21:45 -0400
committerMatthew Bauer <mjbauer95@gmail.com>2019-06-04 23:14:13 -0400
commit0121da2af1220a059732f00606d778339caf3e6b (patch)
tree26c01957c3625ce62755d21ca6a067ab89718d0c /pkgs/development/libraries/mesa
parentc4fc74b19cae7f30151be743f3e2dca43f33ca0f (diff)
downloadnixlib-0121da2af1220a059732f00606d778339caf3e6b.tar
nixlib-0121da2af1220a059732f00606d778339caf3e6b.tar.gz
nixlib-0121da2af1220a059732f00606d778339caf3e6b.tar.bz2
nixlib-0121da2af1220a059732f00606d778339caf3e6b.tar.lz
nixlib-0121da2af1220a059732f00606d778339caf3e6b.tar.xz
nixlib-0121da2af1220a059732f00606d778339caf3e6b.tar.zst
nixlib-0121da2af1220a059732f00606d778339caf3e6b.zip
mesa: fix stubs on darwin
Adds a special case for isDarwin
Diffstat (limited to 'pkgs/development/libraries/mesa')
-rw-r--r--pkgs/development/libraries/mesa/default.nix47
1 files changed, 42 insertions, 5 deletions
diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix
index b1520de4fd6c..c18de60aad18 100644
--- a/pkgs/development/libraries/mesa/default.nix
+++ b/pkgs/development/libraries/mesa/default.nix
@@ -111,7 +111,7 @@ let self = stdenv.mkDerivation {
     "--enable-texture-float"
     (enableFeature stdenv.isLinux "dri3")
     (enableFeature stdenv.isLinux "nine") # Direct3D in Wine
-    "--enable-libglvnd"
+    (enableFeature stdenv.isLinux "libglvnd")
     "--enable-dri"
     "--enable-driglx-direct"
     "--enable-gles1"
@@ -233,12 +233,51 @@ let self = stdenv.mkDerivation {
     inherit libdrm version;
     inherit (libglvnd) driverLink;
 
+    # Use stub libraries from libglvnd and headers from Mesa.
     stubs = stdenv.mkDerivation {
       name = "libGL-${libglvnd.version}";
       outputs = [ "out" "dev" ];
 
-      # Use stub libraries from libglvnd and headers from Mesa.
-      buildCommand = ''
+      # 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
 
@@ -263,8 +302,6 @@ let self = stdenv.mkDerivation {
         genPkgConfig egl EGL
         genPkgConfig glesv1_cm GLESv1_CM
         genPkgConfig glesv2 GLESv2
-      '' + lib.optionalString stdenv.isDarwin ''
-        echo ${OpenGL} > $out/nix-support/propagated-build-inputs
       '';
     };
   };