about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/editors/aseprite/skia.nix
blob: 71fa62157d8a1a31dcc827ba067720a985227809 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
{ stdenv, lib, fetchFromGitHub, fetchgit, python3, gn, ninja
, fontconfig, expat, icu58, libglvnd, libjpeg, libpng, libwebp, zlib
, mesa, libX11, harfbuzzFull
}:

let
  # skia-deps.nix is generated by: ./skia-make-deps.sh 'angle2|dng_sdk|piex|sfntly'
  depSrcs = import ./skia-deps.nix { inherit fetchgit; };
in
stdenv.mkDerivation {
  pname = "skia";
  version = "aseprite-m102";

  src = fetchFromGitHub {
    owner = "aseprite";
    repo = "skia";
    # latest commit from aseprite-m102 branch
    rev = "861e4743af6d9bf6077ae6dda7274e5a136ee4e2";
    hash = "sha256-IlZbalmHl549uDUfPG8hlzub8TLWhG0EsV6HVAPdsl0=";
  };

  nativeBuildInputs = [ python3 gn ninja ];

  buildInputs = [
    fontconfig expat icu58 libglvnd libjpeg libpng libwebp zlib
    mesa libX11 harfbuzzFull
  ];

  preConfigure = with depSrcs; ''
    mkdir -p third_party/externals
    ln -s ${angle2} third_party/externals/angle2
    ln -s ${dng_sdk} third_party/externals/dng_sdk
    ln -s ${piex} third_party/externals/piex
    ln -s ${sfntly} third_party/externals/sfntly
  '';

  configurePhase = ''
    runHook preConfigure
    gn gen out/Release --args="is_debug=false is_official_build=true extra_cflags=[\"-I${harfbuzzFull.dev}/include/harfbuzz\"]"
    runHook postConfigure
  '';

  buildPhase = ''
    runHook preBuild
    ninja -C out/Release skia modules
    runHook postBuild
  '';

  installPhase = ''
    mkdir -p $out

    # Glob will match all subdirs.
    shopt -s globstar

    # All these paths are used in some way when building aseprite.
    cp -r --parents -t $out/ \
      include/codec \
      include/config \
      include/core \
      include/effects \
      include/gpu \
      include/private \
      include/utils \
      include/third_party/skcms/*.h \
      out/Release/*.a \
      src/gpu/**/*.h \
      src/core/*.h \
      modules/skshaper/include/*.h \
      third_party/externals/angle2/include \
      third_party/skcms/**/*.h
  '';

  meta = with lib; {
    description = "Skia is a complete 2D graphic library for drawing Text, Geometries, and Images";
    homepage = "https://skia.org/";
    license = licenses.bsd3;
    maintainers = with maintainers; [ ];
    platforms = platforms.all;
  };
}