|
29 | 29 | rustc = fenixToolchain; |
30 | 30 | }; |
31 | 31 | manifest = (pkgs.lib.importTOML ./Cargo.toml).package; |
32 | | - androidSdk = android.sdk.${system} (sdkPkgs: |
33 | | - builtins.attrValues { |
34 | | - inherit (sdkPkgs) ndk-27-2-12479018 cmdline-tools-latest; |
35 | | - }); |
36 | | - androidNdkRoot = "${androidSdk}/share/android-sdk/ndk/27.2.12479018"; |
37 | 32 |
|
38 | 33 | rustSrc = nix-filter.lib { |
39 | 34 | root = ./.; |
|
106 | 101 | version = manifest.version; |
107 | 102 | }; |
108 | 103 |
|
109 | | - androidAttrs = { |
110 | | - armeabi-v7a = { |
111 | | - cc = "armv7a-linux-androideabi21-clang"; |
112 | | - rustTarget = "armv7-linux-androideabi"; |
113 | | - }; |
114 | | - arm64-v8a = { |
115 | | - cc = "aarch64-linux-android21-clang"; |
116 | | - rustTarget = "aarch64-linux-android"; |
117 | | - }; |
118 | | - x86 = { |
119 | | - cc = "i686-linux-android21-clang"; |
120 | | - rustTarget = "i686-linux-android"; |
121 | | - }; |
122 | | - x86_64 = { |
123 | | - cc = "x86_64-linux-android21-clang"; |
124 | | - rustTarget = "x86_64-linux-android"; |
125 | | - }; |
| 104 | + mkAndroidRustPackage = pkgs.callPackage ./nix/android-package.nix { |
| 105 | + inherit naersk fenixPkgs system rustSrc android; |
| 106 | + version = manifest.version; |
126 | 107 | }; |
127 | 108 |
|
128 | | - mkAndroidRustPackage = arch: packageName: |
129 | | - let |
130 | | - rustTarget = androidAttrs.${arch}.rustTarget; |
131 | | - toolchain = fenixPkgs.combine [ |
132 | | - fenixPkgs.stable.rustc |
133 | | - fenixPkgs.stable.cargo |
134 | | - fenixPkgs.targets.${rustTarget}.stable.rust-std |
135 | | - ]; |
136 | | - naersk-lib = pkgs.callPackage naersk { |
137 | | - cargo = toolchain; |
138 | | - rustc = toolchain; |
139 | | - }; |
140 | | - targetToolchain = "${androidNdkRoot}/toolchains/llvm/prebuilt/linux-x86_64"; |
141 | | - targetCcName = androidAttrs.${arch}.cc; |
142 | | - targetCc = "${targetToolchain}/bin/${targetCcName}"; |
143 | | - in |
144 | | - naersk-lib.buildPackage rec { |
145 | | - pname = packageName; |
146 | | - cargoBuildOptions = x: x ++ [ "--package" packageName ]; |
147 | | - version = manifest.version; |
148 | | - strictDeps = true; |
149 | | - src = rustSrc; |
150 | | - nativeBuildInputs = [ |
151 | | - pkgs.perl # Needed to build vendored OpenSSL. |
152 | | - ]; |
153 | | - auditable = false; # Avoid cargo-auditable failures. |
154 | | - doCheck = false; # Disable test as it requires network access. |
155 | | - |
156 | | - CARGO_BUILD_TARGET = rustTarget; |
157 | | - TARGET_CC = "${targetCc}"; |
158 | | - CARGO_BUILD_RUSTFLAGS = [ |
159 | | - "-C" |
160 | | - "linker=${TARGET_CC}" |
161 | | - ]; |
162 | | - |
163 | | - CC = "${targetCc}"; |
164 | | - LD = "${targetCc}"; |
165 | | - }; |
166 | | - |
167 | 109 | mkAndroidPackages = arch: |
168 | 110 | let |
169 | 111 | rpc-server = mkAndroidRustPackage arch "deltachat-rpc-server"; |
|
0 commit comments