about summary refs log tree commit diff
path: root/pkgs/development/compilers/flutter/engine/default.nix
blob: cea41933e43439fd5a2df9ee1f8713a555deaed7 (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
{
  callPackage,
  dartSdkVersion,
  flutterVersion,
  version,
  hashes,
  url,
  patches,
  runtimeModes,
  isOptimized ? true,
  lib,
  stdenv,
}:
let
  mainRuntimeMode = builtins.elemAt runtimeModes 0;
  altRuntimeMode = builtins.elemAt runtimeModes 1;

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

    dontUnpack = true;
    dontBuild = true;

    installPhase =
      ''
        mkdir -p $out/out

        for dir in $(find $src/src -mindepth 1 -maxdepth 1); do
          ln -sf $dir $out/$(basename $dir)
        done

      ''
      + lib.concatMapStrings (
        runtimeMode:
        let
          runtimeModeBuild = runtimeModesBuilds.${runtimeMode};
          runtimeModeOut = "host_${runtimeMode}${
            lib.optionalString (!runtimeModeBuild.isOptimized) "_unopt"
          }";
        in
        ''
          ln -sf ${runtimeModeBuild}/out/${runtimeModeOut} $out/out/${runtimeModeOut}
        ''
      ) runtimeModes;
  }
  // runtimeModesBuilds
)