diff --git a/Cargo.lock b/Cargo.lock index ae55ebb2..c72f68f5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -474,7 +474,7 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "ledger_device_sdk" -version = "1.15.0" +version = "1.15.1" dependencies = [ "const-zero", "include_gif", @@ -489,7 +489,7 @@ dependencies = [ [[package]] name = "ledger_secure_sdk_sys" -version = "1.4.4" +version = "1.4.5" dependencies = [ "bindgen", "cc", diff --git a/ledger_device_sdk/Cargo.toml b/ledger_device_sdk/Cargo.toml index 23d488b6..d512961f 100644 --- a/ledger_device_sdk/Cargo.toml +++ b/ledger_device_sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ledger_device_sdk" -version = "1.15.0" +version = "1.15.1" authors = ["yhql", "yogh333", "agrojean-ledger", "kingofpayne"] edition = "2021" license.workspace = true @@ -21,7 +21,7 @@ rand_core = { version = "0.6.3", default_features = false } zeroize = { version = "1.6.0", default_features = false } numtoa = "0.2.4" const-zero = "0.1.1" -ledger_secure_sdk_sys = { path = "../ledger_secure_sdk_sys", version = "1.4.4" } +ledger_secure_sdk_sys = { path = "../ledger_secure_sdk_sys", version = "1.4.5" } [features] speculos = [] diff --git a/ledger_secure_sdk_sys/Cargo.toml b/ledger_secure_sdk_sys/Cargo.toml index d6a93f15..46c34a14 100644 --- a/ledger_secure_sdk_sys/Cargo.toml +++ b/ledger_secure_sdk_sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ledger_secure_sdk_sys" -version = "1.4.4" +version = "1.4.5" authors = ["yhql", "agrojean-ledger"] edition = "2021" license.workspace = true diff --git a/ledger_secure_sdk_sys/build.rs b/ledger_secure_sdk_sys/build.rs index 87c7388b..3d906771 100644 --- a/ledger_secure_sdk_sys/build.rs +++ b/ledger_secure_sdk_sys/build.rs @@ -290,7 +290,7 @@ fn header2define(headername: &str) -> Vec<(String, Option)> { struct SDKBuilder { bolos_sdk: PathBuf, api_level: u32, - gcc_toolchain: String, + gcc_toolchain: PathBuf, device: Device, cxdefines: Vec, } @@ -300,7 +300,7 @@ impl SDKBuilder { SDKBuilder { bolos_sdk: PathBuf::new(), api_level: 0, - gcc_toolchain: "".to_string(), + gcc_toolchain: PathBuf::new(), device: Device::NanoS, cxdefines: Vec::new(), } @@ -319,11 +319,11 @@ impl SDKBuilder { .trim(); let gcc_toolchain = if sysroot.is_empty() { - String::from("/usr/include/") + String::from("/usr") } else { - format!("{sysroot}/include") + format!("{sysroot}") }; - self.gcc_toolchain = gcc_toolchain; + self.gcc_toolchain = PathBuf::from(gcc_toolchain); } pub fn device(&mut self) { @@ -413,7 +413,7 @@ impl SDKBuilder { .files(str2path(&self.bolos_sdk, &SDK_USB_FILES)); command = command - .include(&self.gcc_toolchain) + .include(self.gcc_toolchain.join("include")) .include(self.bolos_sdk.join("include")) .include(self.bolos_sdk.join("lib_cxng/include")) .include(self.bolos_sdk.join("lib_stusb")) @@ -461,14 +461,20 @@ impl SDKBuilder { } command.compile("ledger-secure-sdk"); + + /* Link with libc for unresolved symbols */ + let gcc_tc = self.gcc_toolchain.display().to_string(); + println!("cargo:rustc-link-lib=c"); + println!("cargo:rustc-link-search={gcc_tc}/lib"); } fn generate_bindings(&self) { let bsdk = self.bolos_sdk.display().to_string(); + let gcc_tc = self.gcc_toolchain.display().to_string(); let args = [ "--target=thumbv6m-none-eabi".to_string(), // exact target is irrelevant for bindings "-fshort-enums".to_string(), - format!("-I{}", self.gcc_toolchain), + format!("-I{gcc_tc}/include"), format!("-I{bsdk}/include"), format!("-I{bsdk}/lib_cxng/include/"), 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) { .file(bolos_sdk.join("lib_ux_sync/src/ux_sync.c")) .file(bolos_sdk.join("lib_bagl/src/bagl_fonts.c")) .file(bolos_sdk.join("src/os_printf.c")) + .file(bolos_sdk.join("qrcode/src/qrcodegen.c")) .files( glob(bolos_sdk.join("lib_nbgl/src/*.c").to_str().unwrap()) .unwrap() diff --git a/ledger_secure_sdk_sys/sdk_flex.h b/ledger_secure_sdk_sys/sdk_flex.h index 1e609459..5c81bdc6 100644 --- a/ledger_secure_sdk_sys/sdk_flex.h +++ b/ledger_secure_sdk_sys/sdk_flex.h @@ -1,6 +1,7 @@ #define ST33K1M5 #define HAVE_DISPLAY_FAST_MODE #define HAVE_SPRINTF +#define NBGL_QRCODE #define HAVE_SE_EINK_DISPLAY #define SCREEN_SIZE_WALLET #define HAVE_NBGL diff --git a/ledger_secure_sdk_sys/sdk_stax.h b/ledger_secure_sdk_sys/sdk_stax.h index cf13c6f3..3f052ce5 100644 --- a/ledger_secure_sdk_sys/sdk_stax.h +++ b/ledger_secure_sdk_sys/sdk_stax.h @@ -1,5 +1,6 @@ #define ST33K1M5 #define HAVE_SPRINTF +#define NBGL_QRCODE #define HAVE_SE_EINK_DISPLAY #define SCREEN_SIZE_WALLET #define HAVE_NBGL