Skip to content

Commit 944818d

Browse files
authored
Merge pull request #182 from LedgerHQ/enable-qrcode
Enable QR code library in C SDK bindings.
2 parents 37c5852 + e4601d7 commit 944818d

File tree

6 files changed

+21
-12
lines changed

6 files changed

+21
-12
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ledger_device_sdk/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ledger_device_sdk"
3-
version = "1.15.0"
3+
version = "1.15.1"
44
authors = ["yhql", "yogh333", "agrojean-ledger", "kingofpayne"]
55
edition = "2021"
66
license.workspace = true
@@ -21,7 +21,7 @@ rand_core = { version = "0.6.3", default_features = false }
2121
zeroize = { version = "1.6.0", default_features = false }
2222
numtoa = "0.2.4"
2323
const-zero = "0.1.1"
24-
ledger_secure_sdk_sys = { path = "../ledger_secure_sdk_sys", version = "1.4.4" }
24+
ledger_secure_sdk_sys = { path = "../ledger_secure_sdk_sys", version = "1.4.5" }
2525

2626
[features]
2727
speculos = []

ledger_secure_sdk_sys/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ledger_secure_sdk_sys"
3-
version = "1.4.4"
3+
version = "1.4.5"
44
authors = ["yhql", "agrojean-ledger"]
55
edition = "2021"
66
license.workspace = true

ledger_secure_sdk_sys/build.rs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ fn header2define(headername: &str) -> Vec<(String, Option<String>)> {
290290
struct SDKBuilder {
291291
bolos_sdk: PathBuf,
292292
api_level: u32,
293-
gcc_toolchain: String,
293+
gcc_toolchain: PathBuf,
294294
device: Device,
295295
cxdefines: Vec<String>,
296296
}
@@ -300,7 +300,7 @@ impl SDKBuilder {
300300
SDKBuilder {
301301
bolos_sdk: PathBuf::new(),
302302
api_level: 0,
303-
gcc_toolchain: "".to_string(),
303+
gcc_toolchain: PathBuf::new(),
304304
device: Device::NanoS,
305305
cxdefines: Vec::new(),
306306
}
@@ -319,11 +319,11 @@ impl SDKBuilder {
319319
.trim();
320320

321321
let gcc_toolchain = if sysroot.is_empty() {
322-
String::from("/usr/include/")
322+
String::from("/usr")
323323
} else {
324-
format!("{sysroot}/include")
324+
format!("{sysroot}")
325325
};
326-
self.gcc_toolchain = gcc_toolchain;
326+
self.gcc_toolchain = PathBuf::from(gcc_toolchain);
327327
}
328328

329329
pub fn device(&mut self) {
@@ -413,7 +413,7 @@ impl SDKBuilder {
413413
.files(str2path(&self.bolos_sdk, &SDK_USB_FILES));
414414

415415
command = command
416-
.include(&self.gcc_toolchain)
416+
.include(self.gcc_toolchain.join("include"))
417417
.include(self.bolos_sdk.join("include"))
418418
.include(self.bolos_sdk.join("lib_cxng/include"))
419419
.include(self.bolos_sdk.join("lib_stusb"))
@@ -461,14 +461,20 @@ impl SDKBuilder {
461461
}
462462

463463
command.compile("ledger-secure-sdk");
464+
465+
/* Link with libc for unresolved symbols */
466+
let gcc_tc = self.gcc_toolchain.display().to_string();
467+
println!("cargo:rustc-link-lib=c");
468+
println!("cargo:rustc-link-search={gcc_tc}/lib");
464469
}
465470

466471
fn generate_bindings(&self) {
467472
let bsdk = self.bolos_sdk.display().to_string();
473+
let gcc_tc = self.gcc_toolchain.display().to_string();
468474
let args = [
469475
"--target=thumbv6m-none-eabi".to_string(), // exact target is irrelevant for bindings
470476
"-fshort-enums".to_string(),
471-
format!("-I{}", self.gcc_toolchain),
477+
format!("-I{gcc_tc}/include"),
472478
format!("-I{bsdk}/include"),
473479
format!("-I{bsdk}/lib_cxng/include/"),
474480
format!("-I{bsdk}/lib_stusb/STM32_USB_Device_Library/Core/Inc/"),
@@ -724,6 +730,7 @@ fn configure_lib_nbgl(command: &mut cc::Build, bolos_sdk: &Path) {
724730
.file(bolos_sdk.join("lib_ux_sync/src/ux_sync.c"))
725731
.file(bolos_sdk.join("lib_bagl/src/bagl_fonts.c"))
726732
.file(bolos_sdk.join("src/os_printf.c"))
733+
.file(bolos_sdk.join("qrcode/src/qrcodegen.c"))
727734
.files(
728735
glob(bolos_sdk.join("lib_nbgl/src/*.c").to_str().unwrap())
729736
.unwrap()

ledger_secure_sdk_sys/sdk_flex.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#define ST33K1M5
22
#define HAVE_DISPLAY_FAST_MODE
33
#define HAVE_SPRINTF
4+
#define NBGL_QRCODE
45
#define HAVE_SE_EINK_DISPLAY
56
#define SCREEN_SIZE_WALLET
67
#define HAVE_NBGL

ledger_secure_sdk_sys/sdk_stax.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#define ST33K1M5
22
#define HAVE_SPRINTF
3+
#define NBGL_QRCODE
34
#define HAVE_SE_EINK_DISPLAY
45
#define SCREEN_SIZE_WALLET
56
#define HAVE_NBGL

0 commit comments

Comments
 (0)