diff options
Diffstat (limited to 'pkgs/development/libraries/glew/default.nix')
-rw-r--r-- | pkgs/development/libraries/glew/default.nix | 71 |
1 files changed, 34 insertions, 37 deletions
diff --git a/pkgs/development/libraries/glew/default.nix b/pkgs/development/libraries/glew/default.nix index ae32bbe95223b..7e281892a1fd1 100644 --- a/pkgs/development/libraries/glew/default.nix +++ b/pkgs/development/libraries/glew/default.nix @@ -1,9 +1,8 @@ -{ lib, stdenv, fetchurl, libGLU, xlibsWrapper, libXmu, libXi +{ lib, stdenv, fetchurl, fetchpatch, cmake, libGLU, xlibsWrapper, libXmu, libXi , OpenGL +, enableEGL ? false }: -with lib; - stdenv.mkDerivation rec { pname = "glew"; version = "2.2.0"; @@ -13,48 +12,46 @@ stdenv.mkDerivation rec { sha256 = "1qak8f7g1iswgswrgkzc7idk7jmqgwrs58fhg2ai007v7j4q5z6l"; }; - outputs = [ "bin" "out" "dev" "doc" ]; - - buildInputs = optionals (!stdenv.isDarwin) [ xlibsWrapper libXmu libXi ]; - propagatedBuildInputs = if stdenv.isDarwin then [ OpenGL ] else [ libGLU ]; # GL/glew.h includes GL/glu.h + outputs = [ "bin" "out" "dev" ]; - patchPhase = '' - sed -i 's|lib64|lib|' config/Makefile.linux - substituteInPlace config/Makefile.darwin --replace /usr/local "$out" - ${optionalString (stdenv.hostPlatform != stdenv.buildPlatform) '' - sed -i -e 's/\(INSTALL.*\)-s/\1/' Makefile - ''} - ''; + patches = [ + # https://github.com/nigels-com/glew/pull/342 + (fetchpatch { + url = "https://github.com/nigels-com/glew/commit/966e53fa153175864e151ec8a8e11f688c3e752d.diff"; + sha256 = "sha256-xsSwdAbdWZA4KVoQhaLlkYvO711i3QlHGtv6v1Omkhw="; + }) + ]; - buildFlags = [ "all" ]; - installFlags = [ "install.all" ]; + nativeBuildInputs = [ cmake ]; + buildInputs = lib.optionals (!stdenv.isDarwin) [ xlibsWrapper libXmu libXi ]; + propagatedBuildInputs = if stdenv.isDarwin then [ OpenGL ] else [ libGLU ]; # GL/glew.h includes GL/glu.h - preInstall = '' - makeFlagsArray+=(GLEW_DEST=$out BINDIR=$bin/bin INCDIR=$dev/include/GL) - ''; + cmakeDir = "cmake"; + cmakeFlags = [ + "-DBUILD_SHARED_LIBS=ON" + ] ++ lib.optional enableEGL "-DGLEW_EGL=ON"; postInstall = '' - mkdir -pv $out/share/doc/glew - mkdir -p $out/lib/pkgconfig - cp glew*.pc $out/lib/pkgconfig - cp -r README.md LICENSE.txt doc $out/share/doc/glew - rm $out/lib/*.a + moveToOutput lib/cmake "''${!outputDev}" + moveToOutput lib/pkgconfig "''${!outputDev}" + + cat >> "''${!outputDev}"/lib/cmake/glew/glew-config.cmake <<EOF + # nixpkg's workaround for a cmake bug + # https://discourse.cmake.org/t/the-findglew-cmake-module-does-not-set-glew-libraries-in-some-cases/989/3 + set(GLEW_VERSION "$version") + set(GLEW_LIBRARIES GLEW::glew\''${_glew_target_postfix}) + get_target_property(GLEW_INCLUDE_DIRS GLEW::glew\''${_glew_target_postfix} INTERFACE_INCLUDE_DIRECTORIES) + EOF ''; - makeFlags = [ - "SYSTEM=${if stdenv.hostPlatform.isMinGW then "mingw" else stdenv.hostPlatform.parsed.kernel.name}" - "CC=${stdenv.cc.targetPrefix}cc" - "LD=${stdenv.cc.targetPrefix}cc" - "AR=${stdenv.cc.targetPrefix}ar" - ]; - - enableParallelBuilding = true; - meta = with lib; { - description = "An OpenGL extension loading library for C(++)"; + description = "An OpenGL extension loading library for C/C++"; homepage = "http://glew.sourceforge.net/"; - license = licenses.free; # different files under different licenses - #["BSD" "GLX" "SGI-B" "GPL2"] - platforms = platforms.mesaPlatforms; + license = with licenses; [ /* modified bsd */ free mit gpl2Only ]; # For full details, see https://github.com/nigels-com/glew#copyright-and-licensing + platforms = with platforms; + if enableEGL then + subtractLists darwin mesaPlatforms + else + mesaPlatforms; }; } |