summaryrefslogtreecommitdiff
path: root/pkgs/development/androidndk-pkgs/default.nix
blob: 7ae456976cd0b4230a5abbd3ec69cdfce6e6b511 (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
{
  lib,
  androidenv,
  buildPackages,
  pkgs,
  targetPackages,
  config,
}:

let
  makeNdkPkgs =
    ndkVersion: llvmPackages:
    let
      buildAndroidComposition = buildPackages.buildPackages.androidenv.composeAndroidPackages {
        includeNDK = true;
        inherit ndkVersion;
      };

      androidComposition = androidenv.composeAndroidPackages {
        includeNDK = true;
        inherit ndkVersion;
      };
      majorVersion = lib.versions.major ndkVersion;
    in
    import ./androidndk-pkgs.nix {
      inherit config lib;
      inherit (buildPackages)
        makeWrapper
        autoPatchelfHook
        ;
      inherit (pkgs)
        stdenv
        runCommand
        wrapBintoolsWith
        wrapCCWith
        ;

      # For hardeningUnsupportedFlagsByTargetPlatform
      inherit llvmPackages;

      # buildPackages.foo rather than buildPackages.buildPackages.foo would work,
      # but for splicing messing up on infinite recursion for the variants we
      # *dont't* use. Using this workaround, but also making a test to ensure
      # these two really are the same.
      buildAndroidndk = buildAndroidComposition.ndk-bundle;
      androidndk = androidComposition.ndk-bundle;
      targetAndroidndkPkgs =
        if targetPackages ? "androidndkPkgs_${majorVersion}" then
          targetPackages."androidndkPkgs_${majorVersion}"
        else
          throw "androidndkPkgs_${majorVersion}: no targetPackages, use `buildPackages.androidndkPkgs_${majorVersion}";
    };
in

lib.recurseIntoAttrs {
  "27" = makeNdkPkgs "27.0.12077973" pkgs.llvmPackages_18;
  "28" = makeNdkPkgs "28.0.13004108" pkgs.llvmPackages_19;
  "29" = makeNdkPkgs "29.0.14206865" pkgs.llvmPackages_21;
}