summary refs log tree commit diff
path: root/pkgs/development/mobile
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2018-02-27 18:36:48 -0500
committerJohn Ericson <John.Ericson@Obsidian.Systems>2018-05-12 15:16:16 -0400
commit6f40d18d4432858199e14d2323b4f8503ee47a7e (patch)
tree1e97563bc0a0e88ab05822d9500088f757eb2b5c /pkgs/development/mobile
parente3f6c6d18d8ffbb4f9462adbf6648500b9514bbb (diff)
downloadnixlib-6f40d18d4432858199e14d2323b4f8503ee47a7e.tar
nixlib-6f40d18d4432858199e14d2323b4f8503ee47a7e.tar.gz
nixlib-6f40d18d4432858199e14d2323b4f8503ee47a7e.tar.bz2
nixlib-6f40d18d4432858199e14d2323b4f8503ee47a7e.tar.lz
nixlib-6f40d18d4432858199e14d2323b4f8503ee47a7e.tar.xz
nixlib-6f40d18d4432858199e14d2323b4f8503ee47a7e.tar.zst
nixlib-6f40d18d4432858199e14d2323b4f8503ee47a7e.zip
prebuilt android cc: Edit wrapper to pass the right -m flags for armv7a
(cherry picked from commit 827ef0914089e1a2bba140b49e1311eff28cc156)
Diffstat (limited to 'pkgs/development/mobile')
-rw-r--r--pkgs/development/mobile/androidenv/androidndk-pkgs.nix33
1 files changed, 29 insertions, 4 deletions
diff --git a/pkgs/development/mobile/androidenv/androidndk-pkgs.nix b/pkgs/development/mobile/androidenv/androidndk-pkgs.nix
index 19fc0dc812d8..1413e35e904a 100644
--- a/pkgs/development/mobile/androidenv/androidndk-pkgs.nix
+++ b/pkgs/development/mobile/androidenv/androidndk-pkgs.nix
@@ -15,7 +15,12 @@ let
     "x86_64-unknown-linux-gnu" = {
       double = "linux-x86_64";
     };
-    "arm-unknown-linux-androideabi" = {
+    "armv5tel-unknown-linux-androideabi" = {
+      arch = "arm";
+      triple = "arm-linux-androideabi";
+      gccVer = "4.8";
+    };
+    "armv7a-unknown-linux-androideabi" = {
       arch = "arm";
       triple = "arm-linux-androideabi";
       gccVer = "4.8";
@@ -59,9 +64,29 @@ rec {
     cc = binaries;
     bintools = binutils;
     libc = targetAndroidndkPkgs.libraries;
-    extraBuildCommands =
+    extraBuildCommands = lib.optionalString targetPlatform.isAarch32 (let
+        p = targetPlatform.platform.gcc or {};
+        float = p.float or (targetPlatform.parsed.abi.float or null);
+        flags = lib.concatLists [
+          (lib.optional (p ? arch) "-march=${p.arch}")
+          (lib.optional (p ? cpu) "-mcpu=${p.cpu}")
+          (lib.optional (p ? abi) "-mabi=${p.abi}")
+          (lib.optional (p ? fpu) "-mfpu=${p.fpu}")
+          (lib.optional (float != null) "-mfloat=${float}")
+          (lib.optional (p ? float-abi) "-mfloat-abi=${p.float-abi}")
+          (lib.optional (p ? mode) "-mmode=${p.mode}")
+        ];
+      in ''
+        sed -E -i \
+          $out/bin/${targetPlatform.config}-cc \
+          $out/bin/${targetPlatform.config}-c++ \
+          $out/bin/${targetPlatform.config}-gcc \
+          $out/bin/${targetPlatform.config}-g++ \
+          -e '130i    extraBefore+=(-Wl,--fix-cortex-a8)' \
+          -e 's|^(extraBefore=)\(\)$|\1(${builtins.toString flags})|'
+      '')
       # GCC 4.9 is the first relase with "-fstack-protector"
-      lib.optionalString (lib.versionOlder targetInfo.gccVer "4.9") ''
+      + lib.optionalString (lib.versionOlder targetInfo.gccVer "4.9") ''
         sed -E \
         -i $out/nix-support/add-hardening.sh \
         -e 's|(-fstack-protector)-strong|\1|g'
@@ -76,7 +101,7 @@ rec {
   libraries = {
     name = "bionic-prebuilt";
     type = "derivation";
-    outPath = "${buildAndroidndk}/libexec/${buildAndroidndk.name}/platforms/android-21/arch-${hostInfo.arch}/usr/";
+    outPath = "${buildAndroidndk}/libexec/${buildAndroidndk.name}/platforms/android-${hostPlatform.sdkVer}/arch-${hostInfo.arch}/usr/";
     drvPath = throw "fake derivation, build ${buildAndroidndk} to use";
   };
 }