diff options
author | Matthew Bauer <mjbauer95@gmail.com> | 2019-06-26 17:00:52 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-26 17:00:52 -0400 |
commit | 24fea40d9216342364700878211d0ae7c371626c (patch) | |
tree | 219b8c9c65b660bdb3bf261896bf9bdaa9d31a74 /pkgs | |
parent | 94e8afc254d7e4a419287513c4c2a2a833e8f511 (diff) | |
parent | 3c45b0c00a375c7b5b768cb5a6e6ddea2c88c67f (diff) | |
download | nixlib-24fea40d9216342364700878211d0ae7c371626c.tar nixlib-24fea40d9216342364700878211d0ae7c371626c.tar.gz nixlib-24fea40d9216342364700878211d0ae7c371626c.tar.bz2 nixlib-24fea40d9216342364700878211d0ae7c371626c.tar.lz nixlib-24fea40d9216342364700878211d0ae7c371626c.tar.xz nixlib-24fea40d9216342364700878211d0ae7c371626c.tar.zst nixlib-24fea40d9216342364700878211d0ae7c371626c.zip |
Merge pull request #56261 from eadwu/mesa/extract-stubs
mesa: extract stubs
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/development/libraries/mesa/default.nix | 83 | ||||
-rw-r--r-- | pkgs/development/libraries/mesa/stubs.nix | 75 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 4 |
3 files changed, 84 insertions, 78 deletions
diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index a35bdb5764bb..2c9a22f709ab 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 <<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 +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 000000000000..5cb6ac3d4d13 --- /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 <<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/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 81fd026df082..8fc073db1d35 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12277,7 +12277,9 @@ in # libGL.so/libEGL.so/... to link agains them. Android NDK provides # an OpenGL implementation, we can just use that. libGL = if stdenv.hostPlatform.useAndroidPrebuilt then stdenv - else mesa.stubs; + else callPackage ../development/libraries/mesa/stubs.nix { + inherit (darwin.apple_sdk.frameworks) OpenGL; + }; # Default libGLU libGLU = mesa_glu; |