diff options
Diffstat (limited to 'pkgs/by-name/li/libepoxy/package.nix')
| -rw-r--r-- | pkgs/by-name/li/libepoxy/package.nix | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/pkgs/by-name/li/libepoxy/package.nix b/pkgs/by-name/li/libepoxy/package.nix new file mode 100644 index 000000000000..1a99df8bdf55 --- /dev/null +++ b/pkgs/by-name/li/libepoxy/package.nix @@ -0,0 +1,93 @@ +{ + lib, + stdenv, + fetchFromGitHub, + meson, + ninja, + pkg-config, + utilmacros, + python3, + libGL, + libX11, + x11Support ? !stdenv.hostPlatform.isDarwin, + testers, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "libepoxy"; + version = "1.5.10"; + + src = + with finalAttrs; + fetchFromGitHub { + owner = "anholt"; + repo = pname; + rev = version; + sha256 = "sha256-gZiyPOW2PeTMILcPiUTqPUGRNlMM5mI1z9563v4SgEs="; + }; + + patches = [ ./libgl-path.patch ]; + + postPatch = + '' + patchShebangs src/*.py + '' + + lib.optionalString stdenv.hostPlatform.isDarwin '' + substituteInPlace src/dispatch_common.h --replace-fail "PLATFORM_HAS_GLX 0" "PLATFORM_HAS_GLX 1" + '' + # cgl_core and cgl_epoxy_api fail in darwin sandbox and on Hydra (because it's headless?) + + lib.optionalString stdenv.hostPlatform.isDarwin '' + substituteInPlace test/meson.build \ + --replace-fail "[ 'cgl_core', [ 'cgl_core.c' ] ]," "" \ + --replace-fail "[ 'cgl_epoxy_api', [ 'cgl_epoxy_api.c' ] ]," "" + ''; + + outputs = [ + "out" + "dev" + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + utilmacros + python3 + ]; + + buildInputs = + lib.optionals (x11Support && !stdenv.hostPlatform.isDarwin) [ + libGL + ] + ++ lib.optionals x11Support [ + libX11 + ]; + + mesonFlags = [ + "-Degl=${if (x11Support && !stdenv.hostPlatform.isDarwin) then "yes" else "no"}" + "-Dglx=${if x11Support then "yes" else "no"}" + "-Dtests=${lib.boolToString finalAttrs.finalPackage.doCheck}" + "-Dx11=${lib.boolToString x11Support}" + ]; + + env.NIX_CFLAGS_COMPILE = lib.optionalString ( + x11Support && !stdenv.hostPlatform.isDarwin + ) ''-DLIBGL_PATH="${lib.getLib libGL}/lib"''; + + doCheck = true; + + passthru.tests = { + pkg-config = testers.hasPkgConfigModules { + package = finalAttrs.finalPackage; + }; + }; + + meta = with lib; { + description = "Library for handling OpenGL function pointer management"; + homepage = "https://github.com/anholt/libepoxy"; + license = licenses.mit; + maintainers = [ ]; + platforms = platforms.unix; + pkgConfigModules = [ "epoxy" ]; + }; +}) |
