summaryrefslogtreecommitdiff
path: root/pkgs/development/compilers/flutter/engine/default.nix
blob: 0821bce822a5d2a0a93738f58961611add3089b2 (plain)
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
{
  callPackage,
  dartSdkVersion,
  flutterVersion,
  swiftshaderHash,
  swiftshaderRev,
  version,
  hashes,
  url,
  patches,
  runtimeModes,
  lib,
  stdenv,
  ...
}@args:
let
  mainRuntimeMode = args.mainRuntimeMode or builtins.elemAt runtimeModes 0;
  altRuntimeMode = args.altRuntimeMode or builtins.elemAt runtimeModes 1;

  runtimeModesBuilds = lib.genAttrs runtimeModes (
    runtimeMode:
    callPackage ./package.nix {
      inherit
        dartSdkVersion
        flutterVersion
        swiftshaderHash
        swiftshaderRev
        version
        hashes
        url
        patches
        runtimeMode
        ;
      isOptimized = args.isOptimized or runtimeMode != "debug";
    }
  );
in
stdenv.mkDerivation (
  {
    pname = "flutter-engine";
    inherit url runtimeModes altRuntimeMode;
    inherit (runtimeModesBuilds.${mainRuntimeMode}) version src meta;

    dontUnpack = true;
    dontBuild = true;

    installPhase = ''
      runHook preInstall

      mkdir --parents $out/out
    ''
    + lib.concatMapStrings (
      runtimeMode:
      let
        runtimeModeBuild = runtimeModesBuilds.${runtimeMode};
        runtimeModeOut = runtimeModeBuild.outName;
      in
      ''
        ln --symbolic --force ${runtimeModeBuild}/out/${runtimeModeOut} $out/out/${runtimeModeOut}
      ''
    ) runtimeModes
    + ''
      runHook postInstall
    '';

    passthru = {
      inherit (runtimeModesBuilds.${mainRuntimeMode})
        dartSdkVersion
        isOptimized
        runtimeMode
        outName
        dart
        swiftshader
        ;
    };
  }
  // runtimeModesBuilds
)