at 24.05-pre 77 lines 2.0 kB view raw
1{ lib 2, stdenv 3, fetchFromGitHub 4, meson 5, ninja 6, pkg-config 7, utilmacros 8, python3 9, libGL 10, libX11 11, Carbon 12, OpenGL 13, x11Support ? !stdenv.isDarwin 14}: 15 16stdenv.mkDerivation rec { 17 pname = "libepoxy"; 18 version = "1.5.10"; 19 20 src = fetchFromGitHub { 21 owner = "anholt"; 22 repo = pname; 23 rev = version; 24 sha256 = "sha256-gZiyPOW2PeTMILcPiUTqPUGRNlMM5mI1z9563v4SgEs="; 25 }; 26 27 patches = [ ./libgl-path.patch ]; 28 29 postPatch = '' 30 patchShebangs src/*.py 31 '' 32 + lib.optionalString stdenv.isDarwin '' 33 substituteInPlace src/dispatch_common.h --replace "PLATFORM_HAS_GLX 0" "PLATFORM_HAS_GLX 1" 34 '' 35 # cgl_core and cgl_epoxy_api fail in darwin sandbox and on Hydra (because it's headless?) 36 + lib.optionalString stdenv.isDarwin '' 37 substituteInPlace test/meson.build \ 38 --replace "[ 'cgl_epoxy_api', [ 'cgl_epoxy_api.c' ] ]," "" 39 '' 40 + lib.optionalString (stdenv.isDarwin && stdenv.isx86_64) '' 41 substituteInPlace test/meson.build \ 42 --replace "[ 'cgl_core', [ 'cgl_core.c' ] ]," "" 43 ''; 44 45 outputs = [ "out" "dev" ]; 46 47 nativeBuildInputs = [ meson ninja pkg-config utilmacros python3 ]; 48 49 buildInputs = lib.optionals (x11Support && !stdenv.isDarwin) [ 50 libGL 51 ] ++ lib.optionals x11Support [ 52 libX11 53 ] ++ lib.optionals stdenv.isDarwin [ 54 Carbon 55 OpenGL 56 ]; 57 58 mesonFlags = [ 59 "-Degl=${if (x11Support && !stdenv.isDarwin) then "yes" else "no"}" 60 "-Dglx=${if x11Support then "yes" else "no"}" 61 "-Dtests=${lib.boolToString doCheck}" 62 "-Dx11=${lib.boolToString x11Support}" 63 ]; 64 65 env.NIX_CFLAGS_COMPILE = lib.optionalString (x11Support && !stdenv.isDarwin) ''-DLIBGL_PATH="${lib.getLib libGL}/lib"''; 66 67 doCheck = true; 68 69 meta = with lib; { 70 description = "A library for handling OpenGL function pointer management"; 71 homepage = "https://github.com/anholt/libepoxy"; 72 license = licenses.mit; 73 maintainers = with maintainers; [ goibhniu ]; 74 platforms = platforms.unix; 75 pkgConfigModules = [ "epoxy" ]; 76 }; 77}