From cf0d34bd1d2bb976e03eeae3b4fdbacf4899fdd4 Mon Sep 17 00:00:00 2001 From: Fenrir Date: Tue, 13 May 2025 15:48:15 -0700 Subject: [PATCH] Make more libctru types opaque This fixes an issue where Rust doesn't allow `#[repr(packed)]` structs to transitively contain `#[repr(align)]` structs due to differing behavior between gcc and msvc toolchains. --- ctru-sys/build.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ctru-sys/build.rs b/ctru-sys/build.rs index abf7ad00..8957ee0d 100644 --- a/ctru-sys/build.rs +++ b/ctru-sys/build.rs @@ -139,6 +139,11 @@ fn main() { .blocklist_type("(in_addr|wchar|socklen|suseconds|sa_family|time)_t") .blocklist_item("SOL_CONFIG") .opaque_type("MiiData") + .opaque_type("FriendInfo") + .opaque_type("DecryptedApproachContext") + .opaque_type("CFLStoreData") + .opaque_type("AccountInfo") + .opaque_type("ExistentServerAccountData") .derive_default(true) .wrap_static_fns(true) .wrap_static_fns_path(out_dir.join("libctru_statics_wrapper")) @@ -281,6 +286,11 @@ fn generate_layout_tests( test_generator // Opaque types: .blocklist_type("MiiData") + .blocklist_type("FriendInfo") + .blocklist_type("DecryptedApproachContext") + .blocklist_type("CFLStoreData") + .blocklist_type("AccountInfo") + .blocklist_type("ExistentServerAccountData") // Bitfields: .blocklist_field( "ExHeader_SystemInfoFlags",