59 lines
1.6 KiB
Nix
59 lines
1.6 KiB
Nix
{
|
|
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;
|
|
}
|