summaryrefslogtreecommitdiffhomepage
path: root/android/nix/env-vars.nix
blob: 173db93af3e54032fb62caa4da1264b6b389d859 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
{
  pkgs,
  android-sdk,
  buildToolsVersion,
  ndkVersion,
  minSdkVersion,
}: let
  hostPlatform =
    # For linux the NDK support is limited to x86_64.
    if pkgs.stdenv.isLinux && pkgs.stdenv.isx86_64
    then "linux-x86_64"
    # For macOS the x86_64 NDK is used for both intel and arm (via rosetta).
    else if pkgs.stdenv.isDarwin
    then "darwin-x86_64"
    else throw "Unsupported OS/architecture combination: ${pkgs.stdenv.hostPlatform.system}";
in
  [
    {
      name = "JAVA_HOME";
      value = "${pkgs.jdk17}";
    }
    {
      name = "PROTOC_GEN_GRPC_JAVA_PLUGIN";
      prefix = "${pkgs.protoc-gen-grpc-java}/bin/protoc-gen-grpc-java";
    }
    {
      name = "GRADLE_OPTS";
      value = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${android-sdk}/share/android-sdk/build-tools/${buildToolsVersion}/aapt2";
    }
    {
      name = "ANDROID_HOME";
      value = "${android-sdk}/share/android-sdk";
    }
    {
      name = "ANDROID_SDK_ROOT";
      value = "${android-sdk}/share/android-sdk";
    }
    {
      name = "ANDROID_NDK_ROOT";
      value = "${android-sdk}/share/android-sdk/ndk/${ndkVersion}";
    }
    {
      name = "NDK_TOOLCHAIN_DIR";
      value = "${android-sdk}/share/android-sdk/ndk/${ndkVersion}/toolchains/llvm/prebuilt/${hostPlatform}/bin";
    }
    {
      name = "AR_aarch64_linux_android";
      value = "$NDK_TOOLCHAIN_DIR/llvm-ar";
    }
    {
      name = "CC_aarch64_linux_android";
      value = "$NDK_TOOLCHAIN_DIR/aarch64-linux-android${minSdkVersion}-clang";
    }
    {
      name = "CARGO_TARGET_aarch64_LINUX_ANDROID_LINKER";
      value = "$NDK_TOOLCHAIN_DIR/aarch64-linux-android${minSdkVersion}-clang";
    }
    {
      name = "AR_armv7_linux_androideabi";
      value = "$NDK_TOOLCHAIN_DIR/llvm-ar";
    }
    {
      name = "CC_armv7_linux_androideabi";
      value = "$NDK_TOOLCHAIN_DIR/armv7-linux-androideabi${minSdkVersion}-clang";
    }
    {
      name = "CARGO_TARGET_armv7_LINUX_ANDROID_LINKER";
      value = "$NDK_TOOLCHAIN_DIR/armv7-linux-androideabi${minSdkVersion}-clang";
    }
    {
      name = "AR_x86_64_linux_android";
      value = "$NDK_TOOLCHAIN_DIR/llvm-ar";
    }
    {
      name = "CC_x86_64_linux_android";
      value = "$NDK_TOOLCHAIN_DIR/x86_64-linux-android${minSdkVersion}-clang";
    }
    {
      name = "CARGO_TARGET_x86_64_LINUX_ANDROID_LINKER";
      value = "$NDK_TOOLCHAIN_DIR/x86_64-linux-android${minSdkVersion}-clang";
    }
    {
      name = "AR_i686_linux_android";
      value = "$NDK_TOOLCHAIN_DIR/llvm-ar";
    }
    {
      name = "CC_i686_linux_android";
      value = "$NDK_TOOLCHAIN_DIR/i686-linux-android${minSdkVersion}-clang";
    }
    {
      name = "CARGO_TARGET_i686_LINUX_ANDROID_LINKER";
      value = "$NDK_TOOLCHAIN_DIR/i686-linux-android${minSdkVersion}-clang";
    }
  ]
  ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
    {
      name = "LIBRARY_PATH";
      value = "${pkgs.libiconv}/lib";
    }
    {
      name = "CPATH";
      value = "${pkgs.libiconv}/include";
    }
    {
      name = "RUSTFLAGS";
      value = "-L${pkgs.libiconv}/lib";
    }
  ]