anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / development / libraries / silgraphite / graphite2.nix
blobd2a4206e7dc1a4ca639be0f317c916550b14750e
1 { lib
2 , stdenv
3 , llvmPackages
4 , fetchurl
5 , pkg-config
6 , freetype
7 , cmake
8 , static ? stdenv.hostPlatform.isStatic
9 , testers
12 stdenv.mkDerivation (finalAttrs: {
13   version = "1.3.14";
14   pname = "graphite2";
16   src = fetchurl {
17     url = with finalAttrs; "https://github.com/silnrsi/graphite/releases/download/${version}/${pname}-${version}.tgz";
18     sha256 = "1790ajyhk0ax8xxamnrk176gc9gvhadzy78qia4rd8jzm89ir7gr";
19   };
21   outputs = [ "out" "dev" ];
23   nativeBuildInputs = [ pkg-config cmake ];
24   buildInputs = [ freetype ]
25     ++ lib.optional (stdenv.targetPlatform.useLLVM or false)
26       (llvmPackages.compiler-rt.override {
27         doFakeLibgcc = true;
28       });
30   patches = lib.optionals stdenv.hostPlatform.isDarwin [ ./macosx.patch ];
31   postPatch = ''
32     # disable broken 'nametabletest' test, fails on gcc-13:
33     #   https://github.com/silnrsi/graphite/pull/74
34     substituteInPlace tests/CMakeLists.txt \
35       --replace 'add_subdirectory(nametabletest)' '#add_subdirectory(nametabletest)'
37     # support cross-compilation by using target readelf binary:
38     substituteInPlace Graphite.cmake \
39       --replace 'readelf' "${stdenv.cc.targetPrefix}readelf"
40   '';
42   cmakeFlags = lib.optionals static [
43     "-DBUILD_SHARED_LIBS=OFF"
44   ];
46   # Remove a test that fails to statically link (undefined reference to png and
47   # freetype symbols)
48   postConfigure = lib.optionalString static ''
49     sed -e '/freetype freetype.c/d' -i ../tests/examples/CMakeLists.txt
50   '';
52   doCheck = true;
54   passthru.tests = {
55     pkg-config = testers.hasPkgConfigModules {
56       package = finalAttrs.finalPackage;
57     };
58   };
60   meta = with lib; {
61     description = "Advanced font engine";
62     homepage = "https://graphite.sil.org/";
63     license = licenses.lgpl21;
64     maintainers = [ maintainers.raskin ];
65     pkgConfigModules = [ "graphite2" ];
66     mainProgram = "gr2fonttest";
67     platforms = platforms.unix ++ platforms.windows;
68   };