From c564d2d5a46af4c213e424ee5a7ad7ff9cb2ba3a Mon Sep 17 00:00:00 2001 From: Ivan Lozano Date: Tue, 4 Aug 2020 15:43:37 -0400 Subject: Add support for custom bindgen binaries. In some cases customized logic is required to generate the expected bindgen bindings. This adds support for rust_bindgen modules to define a HostTool module to use instead of bindgen. Bug: 161816141 Test: New Soong tests pass. Test: Local test case shows custom_binary module being used for bindgen generation. Change-Id: Id52aec4f25c38206d7e585d8e662be7836aa1d4b --- rust/bindgen_test.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'rust/bindgen_test.go') diff --git a/rust/bindgen_test.go b/rust/bindgen_test.go index c42834843..0b529ca5a 100644 --- a/rust/bindgen_test.go +++ b/rust/bindgen_test.go @@ -55,3 +55,29 @@ func TestRustBindgen(t *testing.T) { t.Errorf("missing static_libs exported includes in rust_bindgen rule: cflags %#v", libbindgen.Args["cflags"]) } } + +func TestRustBindgenCustomBindgen(t *testing.T) { + ctx := testRust(t, ` + rust_bindgen { + name: "libbindgen", + wrapper_src: "src/any.h", + crate_name: "bindgen", + stem: "libbindgen", + source_stem: "bindings", + custom_bindgen: "my_bindgen" + } + rust_binary_host { + name: "my_bindgen", + srcs: ["foo.rs"], + } + `) + + libbindgen := ctx.ModuleForTests("libbindgen", "android_arm64_armv8-a").Output("bindings.rs") + + // The rule description should contain the custom binary name rather than bindgen, so checking the description + // should be sufficient. + if !strings.Contains(libbindgen.Description, "my_bindgen") { + t.Errorf("Custom bindgen binary %s not used for libbindgen: rule description %#v", "my_bindgen", + libbindgen.Description) + } +} -- cgit v1.2.3-59-g8ed1b