1{
2 lib,
3 androidenv,
4 buildPackages,
5 pkgs,
6 targetPackages,
7 config,
8}:
9
10let
11 makeNdkPkgs =
12 ndkVersion: llvmPackages:
13 let
14 buildAndroidComposition = buildPackages.buildPackages.androidenv.composeAndroidPackages {
15 includeNDK = true;
16 inherit ndkVersion;
17 };
18
19 androidComposition = androidenv.composeAndroidPackages {
20 includeNDK = true;
21 inherit ndkVersion;
22 };
23 majorVersion = lib.versions.major ndkVersion;
24 in
25 import ./androidndk-pkgs.nix {
26 inherit config lib;
27 inherit (buildPackages)
28 makeWrapper
29 autoPatchelfHook
30 ;
31 inherit (pkgs)
32 stdenv
33 runCommand
34 wrapBintoolsWith
35 wrapCCWith
36 ;
37
38 # For hardeningUnsupportedFlagsByTargetPlatform
39 inherit llvmPackages;
40
41 # buildPackages.foo rather than buildPackages.buildPackages.foo would work,
42 # but for splicing messing up on infinite recursion for the variants we
43 # *dont't* use. Using this workaround, but also making a test to ensure
44 # these two really are the same.
45 buildAndroidndk = buildAndroidComposition.ndk-bundle;
46 androidndk = androidComposition.ndk-bundle;
47 targetAndroidndkPkgs =
48 if targetPackages ? "androidndkPkgs_${majorVersion}" then
49 targetPackages."androidndkPkgs_${majorVersion}"
50 else
51 throw "androidndkPkgs_${majorVersion}: no targetPackages, use `buildPackages.androidndkPkgs_${majorVersion}";
52 };
53in
54
55lib.recurseIntoAttrs {
56 "27" = makeNdkPkgs "27.0.12077973" pkgs.llvmPackages_18;
57 "28" = makeNdkPkgs "28.0.13004108" pkgs.llvmPackages_19;
58}