From 0121da2af1220a059732f00606d778339caf3e6b Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Tue, 4 Jun 2019 00:21:45 -0400 Subject: [PATCH 1/2] mesa: fix stubs on darwin Adds a special case for isDarwin --- pkgs/development/libraries/mesa/default.nix | 47 ++++++++++++++++++--- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index b1520de4fd6..c18de60aad1 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 <$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 <$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 <$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 ''; }; }; From 894644c8e8f4e810a6adf450273c3bfb8f223cfa Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Tue, 4 Jun 2019 22:23:05 -0400 Subject: [PATCH 2/2] mesa-glu: add macOS frameworks - glu needs ApplicationServices --- pkgs/development/libraries/mesa-glu/default.nix | 5 +++-- pkgs/top-level/all-packages.nix | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/mesa-glu/default.nix b/pkgs/development/libraries/mesa-glu/default.nix index cb238a6a5ae..94622b8a8f9 100644 --- a/pkgs/development/libraries/mesa-glu/default.nix +++ b/pkgs/development/libraries/mesa-glu/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, libGL }: +{ stdenv, fetchurl, pkgconfig, libGL, ApplicationServices }: stdenv.mkDerivation rec { name = "glu-${version}"; @@ -13,7 +13,8 @@ stdenv.mkDerivation rec { ''; nativeBuildInputs = [ pkgconfig ]; - propagatedBuildInputs = [ libGL ]; + propagatedBuildInputs = [ libGL ] + ++ stdenv.lib.optional stdenv.isDarwin ApplicationServices; outputs = [ "out" "dev" ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a714e34371b..7cfea7dacc9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12209,7 +12209,9 @@ in }; mesa = mesa_noglu; - mesa_glu = callPackage ../development/libraries/mesa-glu { }; + mesa_glu = callPackage ../development/libraries/mesa-glu { + inherit (darwin.apple_sdk.frameworks) ApplicationServices; + }; # NOTE: 2018-07-12: legacy alias: # gcsecurity bussiness is done: https://www.theregister.co.uk/2018/02/08/bruce_perens_grsecurity_anti_slapp/