diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index 40e2b8fcefb..5403f73405c 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -47,7 +47,7 @@ rec { armv7a-android-prebuilt = { config = "armv7a-unknown-linux-androideabi"; sdkVer = "29"; - ndkVer = "18b"; + ndkVer = "21"; platform = platforms.armv7a-android; useAndroidPrebuilt = true; }; @@ -55,7 +55,7 @@ rec { aarch64-android-prebuilt = { config = "aarch64-unknown-linux-android"; sdkVer = "29"; - ndkVer = "18b"; + ndkVer = "21"; platform = platforms.aarch64-multiplatform; useAndroidPrebuilt = true; }; diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index fff57dd7c48..30d3db1866c 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -61,6 +61,12 @@ let then import ../expand-response-params { inherit (buildPackages) stdenv; } else ""; + useGccForLibs = isClang + && libcxx == null + && !(stdenv.targetPlatform.useLLVM or false) + && !(stdenv.targetPlatform.useAndroidPrebuilt or false) + && gccForLibs != null; + # older compilers (for example bootstrap's GCC 5) fail with -march=too-modern-cpu isGccArchSupported = arch: if isGNU then @@ -272,7 +278,7 @@ stdenv.mkDerivation { ## ## GCC libs for non-GCC support ## - + optionalString (isClang && libcxx == null && !(stdenv.targetPlatform.useLLVM or false) && gccForLibs != null) '' + + optionalString useGccForLibs '' echo "-B${gccForLibs}/lib/gcc/${targetPlatform.config}/${gccForLibs.version}" >> $out/nix-support/cc-cflags echo "-L${gccForLibs}/lib/gcc/${targetPlatform.config}/${gccForLibs.version}" >> $out/nix-support/cc-ldflags @@ -316,11 +322,11 @@ stdenv.mkDerivation { # We have a libc++ directly, we have one via "smuggled" GCC, or we have one # bundled with the C compiler because it is GCC - + optionalString (libcxx != null || (isClang && !(stdenv.targetPlatform.useLLVM or false) && gccForLibs.langCC or false) || (isGNU && cc.langCC or false)) '' + + optionalString (libcxx != null || (useGccForLibs && gccForLibs.langCC or false) || (isGNU && cc.langCC or false)) '' touch "$out/nix-support/libcxx-cxxflags" touch "$out/nix-support/libcxx-ldflags" '' - + optionalString (libcxx == null && (isClang && !(stdenv.targetPlatform.useLLVM or false) && gccForLibs.langCC or false)) '' + + optionalString (libcxx == null && (useGccForLibs && gccForLibs.langCC or false)) '' for dir in ${gccForLibs}/include/c++/*; do echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags done diff --git a/pkgs/development/androidndk-pkgs/androidndk-pkgs.nix b/pkgs/development/androidndk-pkgs/androidndk-pkgs.nix index 04420370ff1..995789b8c1b 100644 --- a/pkgs/development/androidndk-pkgs/androidndk-pkgs.nix +++ b/pkgs/development/androidndk-pkgs/androidndk-pkgs.nix @@ -53,7 +53,9 @@ in rec { # Misc tools - binaries = runCommand "ndk-gcc-binutils" { + binaries = runCommand "ndk-toolchain-binutils" { + pname = "ndk-toolchain-binutils"; + inherit (androidndk) version; isClang = true; # clang based cc, but bintools ld nativeBuildInputs = [ makeWrapper ]; propagatedBuildInputs = [ androidndk ]; diff --git a/pkgs/development/mobile/androidenv/compose-android-packages.nix b/pkgs/development/mobile/androidenv/compose-android-packages.nix index 1786aebae83..794de227664 100644 --- a/pkgs/development/mobile/androidenv/compose-android-packages.nix +++ b/pkgs/development/mobile/androidenv/compose-android-packages.nix @@ -1,4 +1,4 @@ -{requireFile, autoPatchelfHook, pkgs, pkgs_i686, licenseAccepted ? false}: +{requireFile, autoPatchelfHook, pkgs, pkgsHostHost, pkgs_i686, licenseAccepted ? false}: { toolsVersion ? "25.2.5" , platformToolsVersion ? "29.0.6" @@ -144,7 +144,7 @@ rec { ) cmakeVersions; ndk-bundle = import ./ndk-bundle { - inherit deployAndroidPackage os autoPatchelfHook makeWrapper pkgs lib platform-tools; + inherit deployAndroidPackage os autoPatchelfHook makeWrapper pkgs pkgsHostHost lib platform-tools; package = packages.ndk-bundle.${ndkVersion}; }; diff --git a/pkgs/development/mobile/androidenv/default.nix b/pkgs/development/mobile/androidenv/default.nix index 0228cd83924..a13b98cf945 100644 --- a/pkgs/development/mobile/androidenv/default.nix +++ b/pkgs/development/mobile/androidenv/default.nix @@ -1,4 +1,4 @@ -{ config, pkgs ? import {} +{ config, pkgs ? import {}, pkgsHostHost ? pkgs.pkgsHostHost , pkgs_i686 ? import { system = "i686-linux"; } , licenseAccepted ? config.android_sdk.accept_license or false }: @@ -6,7 +6,7 @@ rec { composeAndroidPackages = import ./compose-android-packages.nix { inherit (pkgs) requireFile autoPatchelfHook; - inherit pkgs pkgs_i686 licenseAccepted; + inherit pkgs pkgsHostHost pkgs_i686 licenseAccepted; }; buildApp = import ./build-app.nix { diff --git a/pkgs/development/mobile/androidenv/deploy-androidpackage.nix b/pkgs/development/mobile/androidenv/deploy-androidpackage.nix index 839a14f7033..4f9db98c006 100644 --- a/pkgs/development/mobile/androidenv/deploy-androidpackage.nix +++ b/pkgs/development/mobile/androidenv/deploy-androidpackage.nix @@ -5,7 +5,8 @@ let extraParams = removeAttrs args [ "package" "os" "buildInputs" "patchInstructions" ]; in stdenv.mkDerivation ({ - name = package.name + "-" + package.revision; + pname = package.name; + version = package.revision; src = if os != null && builtins.hasAttr os package.archives then package.archives.${os} else package.archives.all; buildInputs = [ unzip ] ++ buildInputs; preferLocalBuild = true; diff --git a/pkgs/development/mobile/androidenv/ndk-bundle/default.nix b/pkgs/development/mobile/androidenv/ndk-bundle/default.nix index 6bdb7181590..ca305e0398d 100644 --- a/pkgs/development/mobile/androidenv/ndk-bundle/default.nix +++ b/pkgs/development/mobile/androidenv/ndk-bundle/default.nix @@ -1,7 +1,11 @@ -{deployAndroidPackage, lib, package, os, autoPatchelfHook, makeWrapper, pkgs, platform-tools}: +{ lib, pkgs, pkgsHostHost, makeWrapper, autoPatchelfHook +, deployAndroidPackage, package, os, platform-tools +}: let - runtime_paths = lib.makeBinPath [ pkgs.coreutils pkgs.file pkgs.findutils pkgs.gawk pkgs.gnugrep pkgs.gnused pkgs.jdk pkgs.python3 pkgs.which ] + ":${platform-tools}/platform-tools"; + runtime_paths = lib.makeBinPath (with pkgsHostHost; [ + coreutils file findutils gawk gnugrep gnused jdk python3 which + ]) + ":${platform-tools}/platform-tools"; in deployAndroidPackage { inherit package os;