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/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 ''; }; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f392be17b0b..747ece02d4a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12220,7 +12220,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/