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}