Skip to content

Commit 7f2d3f7

Browse files
committed
refactor: update target structure for iOS and Android binaries
1 parent 695ef3a commit 7f2d3f7

File tree

3 files changed

+35
-35
lines changed

3 files changed

+35
-35
lines changed

crates/sherpa-rs-sys/build.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ lazy_static::lazy_static! {
2525
static ref RUST_CLANG_TARGET_MAP: HashMap<String, String> = {
2626
let mut m = HashMap::new();
2727
m.insert("aarch64-linux-android".to_string(), "armv8-linux-androideabi".to_string());
28-
m.insert("aarch64-apple-ios-sim".to_string(), "arm64-apple-ios-sim".to_string());
28+
m.insert("aarch64-apple-ios-sim".to_string(), "arm64-apple-ios-simulator".to_string());
2929
m
3030
};
3131
}
@@ -338,14 +338,15 @@ fn main() {
338338
debug_log!("Cache dir: {}", cache_dir.display());
339339

340340
let lib_dir = cache_dir.join(&dist.name);
341+
341342
// if is mobile then check if cache dir not empty
343+
// Sherpa uses special directory structure for mobile
342344
let cache_dir_empty = cache_dir
343345
.read_dir()
344346
.map(|mut entries| entries.next().is_none())
345347
.unwrap_or(true);
346-
// Check if cache directory exists
347-
// Sherpa uses special directory structure for mobile
348-
if (!lib_dir.exists() && !is_mobile) || (is_mobile && cache_dir_empty) {
348+
349+
if (is_mobile && cache_dir_empty) || (!is_mobile && !lib_dir.exists()) {
349350
let downloaded_file = fetch_file(&dist.url);
350351
let hash = sha256(&downloaded_file);
351352
// verify checksum

crates/sherpa-rs-sys/dist.json

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,27 +21,38 @@
2121
"android": {
2222
"archive": "sherpa-onnx-{tag}-android.tar.bz2",
2323
"is_dynamic": true,
24-
"arch": {
25-
"aarch64-linux-android": "arm64-v8a",
26-
"x86_64-linux-android": "x86_64",
27-
"armv7-linux-androideabi": "armeabi-v7a"
28-
},
29-
"libs": [
30-
"jniLibs/{arch}/libsherpa-onnx-c-api.so",
31-
"jniLibs/{arch}/libonnxruntime.so"
32-
]
24+
"targets": {
25+
"aarch64-linux-android": [
26+
"jniLibs/arm64-v8a/libsherpa-onnx-c-api.so",
27+
"jniLibs/arm64-v8a/libonnxruntime.so"
28+
],
29+
"x86_64-linux-android": [
30+
"jniLibs/x86_64/libsherpa-onnx-c-api.so",
31+
"jniLibs/x86_64/libonnxruntime.so"
32+
],
33+
"armv7-linux-androideabi": [
34+
"jniLibs/armeabi-v7a/libsherpa-onnx-c-api.so",
35+
"jniLibs/armeabi-v7a/libonnxruntime.so"
36+
]
37+
}
3338
},
3439
"ios": {
3540
"archive": "sherpa-onnx-{tag}-ios.tar.bz2",
3641
"is_dynamic": false,
37-
"arch": {
38-
"aarch64-apple-ios": "ios-arm64",
39-
"aarch64-apple-ios-sim": "ios-arm64-simulator"
40-
},
41-
"libs": [
42-
"build-ios/ios-onnxruntime/onnxruntime.xcframework/{arch}/libonnxruntime.a",
43-
"build-ios/sherpa-onnx.xcframework/{arch}/libsherpa-onnx.a"
44-
]
42+
"targets": {
43+
"aarch64-apple-ios": [
44+
"build-ios/ios-onnxruntime/1.17.1/onnxruntime.xcframework/ios-arm64/libonnxruntime.a",
45+
"build-ios/sherpa-onnx.xcframework/ios-arm64/libsherpa-onnx.a"
46+
],
47+
"aarch64-apple-ios-sim": [
48+
"build-ios/ios-onnxruntime/1.17.1/onnxruntime.xcframework/ios-arm64_x86_64-simulator/libonnxruntime.a",
49+
"build-ios/sherpa-onnx.xcframework/ios-arm64_x86_64-simulator/libsherpa-onnx.a"
50+
],
51+
"x86_64-apple-ios": [
52+
"build-ios/ios-onnxruntime/1.17.1/onnxruntime.xcframework/ios-arm64_x86_64-simulator/libonnxruntime.a",
53+
"build-ios/sherpa-onnx.xcframework/ios-arm64_x86_64-simulator/libsherpa-onnx.a"
54+
]
55+
}
4556
}
4657
}
4758
}

crates/sherpa-rs-sys/src/download_binaries.rs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -164,24 +164,12 @@ impl DistTable {
164164
let name = archive.replace(".tar.bz2", "");
165165
let name = name.replace(".tar.gz", "");
166166

167-
let mut libs: Option<Vec<String>> = target_dist.get("libs").map(|libs| {
168-
libs.as_array()
169-
.unwrap()
170-
.iter()
167+
let libs: Option<Vec<String>> = target_dist["targets"][target].as_array().map(|libs| {
168+
libs.iter()
171169
.map(|lib| lib.as_str().unwrap().to_string())
172170
.collect()
173171
});
174172

175-
// Replace {arch} in libs
176-
let dist_arch = target_dist["arch"][target].as_str().map(|s| s.to_string());
177-
if let Some(libs) = libs.as_mut() {
178-
if let Some(arch) = dist_arch {
179-
libs.iter_mut().for_each(|lib| {
180-
*lib = lib.replace("{arch}", &arch);
181-
});
182-
}
183-
}
184-
185173
let url = self.url.replace("{archive}", archive);
186174
let checksum = DIST_CHECKSUM.get(archive).unwrap();
187175

0 commit comments

Comments
 (0)