From 3c45b0c00a375c7b5b768cb5a6e6ddea2c88c67f Mon Sep 17 00:00:00 2001 From: Edmund Wu Date: Wed, 12 Jun 2019 17:18:19 -0400 Subject: mesa: extract stubs --- pkgs/development/libraries/mesa/default.nix | 83 +++-------------------------- pkgs/development/libraries/mesa/stubs.nix | 75 ++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 77 deletions(-) create mode 100644 pkgs/development/libraries/mesa/stubs.nix (limited to 'pkgs/development/libraries/mesa') diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index a35bdb5764b..2c9a22f709a 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -68,8 +68,9 @@ let branch = head (splitString "." version); in -let self = stdenv.mkDerivation { - name = "mesa-${version}"; +stdenv.mkDerivation rec { + pname = "mesa"; + inherit version; src = fetchurl { urls = [ @@ -228,80 +229,8 @@ let self = stdenv.mkDerivation { ''; 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 <$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 - - 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 <$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 +240,5 @@ let self = stdenv.mkDerivation { platforms = platforms.mesaPlatforms; maintainers = with maintainers; [ vcunat ]; }; -}; -in self +} + diff --git a/pkgs/development/libraries/mesa/stubs.nix b/pkgs/development/libraries/mesa/stubs.nix new file mode 100644 index 00000000000..5cb6ac3d4d1 --- /dev/null +++ b/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 <$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 <$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 <$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 <$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 + ''; +} -- cgit 1.4.1