summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2025-07-16 22:01:53 +0200
committerAlbin <albin@mullvad.net>2025-07-16 22:19:35 +0200
commitdb4404c1f4103b22ae62fd922e96fafd7394c709 (patch)
tree3315371a8c102ddb492532941daab626486a22d8 /android
parent4558fafa22a0d9705dcb981bdebb789d543d045a (diff)
downloadmullvadvpn-db4404c1f4103b22ae62fd922e96fafd7394c709.tar.xz
mullvadvpn-db4404c1f4103b22ae62fd922e96fafd7394c709.zip
Adapt devshell env vars for macOS
Diffstat (limited to 'android')
-rw-r--r--android/nix/env-vars.nix180
1 files changed, 102 insertions, 78 deletions
diff --git a/android/nix/env-vars.nix b/android/nix/env-vars.nix
index e9f5d6aa62..173db93af3 100644
--- a/android/nix/env-vars.nix
+++ b/android/nix/env-vars.nix
@@ -4,81 +4,105 @@
buildToolsVersion,
ndkVersion,
minSdkVersion,
-}: [
- {
- 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/linux-x86_64/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";
- }
-]
+}: 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";
+ }
+ ]