1*333d2b36SAndroid Build Coastguard Worker// Copyright 2020 The Android Open Source Project 2*333d2b36SAndroid Build Coastguard Worker// 3*333d2b36SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*333d2b36SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*333d2b36SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*333d2b36SAndroid Build Coastguard Worker// 7*333d2b36SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*333d2b36SAndroid Build Coastguard Worker// 9*333d2b36SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*333d2b36SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*333d2b36SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*333d2b36SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*333d2b36SAndroid Build Coastguard Worker// limitations under the License. 14*333d2b36SAndroid Build Coastguard Worker 15*333d2b36SAndroid Build Coastguard Workerpackage rust 16*333d2b36SAndroid Build Coastguard Worker 17*333d2b36SAndroid Build Coastguard Workerimport ( 18*333d2b36SAndroid Build Coastguard Worker "strings" 19*333d2b36SAndroid Build Coastguard Worker "testing" 20*333d2b36SAndroid Build Coastguard Worker 21*333d2b36SAndroid Build Coastguard Worker "android/soong/android" 22*333d2b36SAndroid Build Coastguard Worker) 23*333d2b36SAndroid Build Coastguard Worker 24*333d2b36SAndroid Build Coastguard Workerfunc TestRustBindgen(t *testing.T) { 25*333d2b36SAndroid Build Coastguard Worker ctx := testRust(t, ` 26*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 27*333d2b36SAndroid Build Coastguard Worker name: "libbindgen", 28*333d2b36SAndroid Build Coastguard Worker defaults: ["cc_defaults_flags"], 29*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.h", 30*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen", 31*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen", 32*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 33*333d2b36SAndroid Build Coastguard Worker bindgen_flags: ["--bindgen-flag.*"], 34*333d2b36SAndroid Build Coastguard Worker cflags: ["--clang-flag()"], 35*333d2b36SAndroid Build Coastguard Worker shared_libs: ["libfoo_shared"], 36*333d2b36SAndroid Build Coastguard Worker } 37*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 38*333d2b36SAndroid Build Coastguard Worker name: "libbindgen_staticlib", 39*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.h", 40*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen_staticlib", 41*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen_staticlib", 42*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 43*333d2b36SAndroid Build Coastguard Worker static_libs: ["libfoo_static"], 44*333d2b36SAndroid Build Coastguard Worker } 45*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 46*333d2b36SAndroid Build Coastguard Worker name: "libbindgen_headerlib", 47*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.h", 48*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen_headerlib", 49*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen_headerlib", 50*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 51*333d2b36SAndroid Build Coastguard Worker header_libs: ["libfoo_header"], 52*333d2b36SAndroid Build Coastguard Worker } 53*333d2b36SAndroid Build Coastguard Worker cc_library_shared { 54*333d2b36SAndroid Build Coastguard Worker name: "libfoo_shared", 55*333d2b36SAndroid Build Coastguard Worker export_include_dirs: ["shared_include"], 56*333d2b36SAndroid Build Coastguard Worker } 57*333d2b36SAndroid Build Coastguard Worker cc_library_static { 58*333d2b36SAndroid Build Coastguard Worker name: "libfoo_static", 59*333d2b36SAndroid Build Coastguard Worker export_include_dirs: ["static_include"], 60*333d2b36SAndroid Build Coastguard Worker } 61*333d2b36SAndroid Build Coastguard Worker cc_library_headers { 62*333d2b36SAndroid Build Coastguard Worker name: "libfoo_header", 63*333d2b36SAndroid Build Coastguard Worker export_include_dirs: ["header_include"], 64*333d2b36SAndroid Build Coastguard Worker } 65*333d2b36SAndroid Build Coastguard Worker cc_defaults { 66*333d2b36SAndroid Build Coastguard Worker name: "cc_defaults_flags", 67*333d2b36SAndroid Build Coastguard Worker cflags: ["--default-flag"], 68*333d2b36SAndroid Build Coastguard Worker } 69*333d2b36SAndroid Build Coastguard Worker `) 70*333d2b36SAndroid Build Coastguard Worker libbindgen := ctx.ModuleForTests("libbindgen", "android_arm64_armv8-a_source").Output("bindings.rs") 71*333d2b36SAndroid Build Coastguard Worker libbindgenStatic := ctx.ModuleForTests("libbindgen_staticlib", "android_arm64_armv8-a_source").Output("bindings.rs") 72*333d2b36SAndroid Build Coastguard Worker libbindgenHeader := ctx.ModuleForTests("libbindgen_headerlib", "android_arm64_armv8-a_source").Output("bindings.rs") 73*333d2b36SAndroid Build Coastguard Worker libbindgenHeaderModule := ctx.ModuleForTests("libbindgen_headerlib", "android_arm64_armv8-a_source").Module().(*Module) 74*333d2b36SAndroid Build Coastguard Worker // Ensure that the flags are present and escaped 75*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgen.Args["flags"], "'--bindgen-flag.*'") { 76*333d2b36SAndroid Build Coastguard Worker t.Errorf("missing bindgen flags in rust_bindgen rule: flags %#v", libbindgen.Args["flags"]) 77*333d2b36SAndroid Build Coastguard Worker } 78*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgen.Args["cflags"], "'--clang-flag()'") { 79*333d2b36SAndroid Build Coastguard Worker t.Errorf("missing clang cflags in rust_bindgen rule: cflags %#v", libbindgen.Args["cflags"]) 80*333d2b36SAndroid Build Coastguard Worker } 81*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgen.Args["cflags"], "-Ishared_include") { 82*333d2b36SAndroid Build Coastguard Worker t.Errorf("missing shared_libs exported includes in rust_bindgen rule: cflags %#v", libbindgen.Args["cflags"]) 83*333d2b36SAndroid Build Coastguard Worker } 84*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgenStatic.Args["cflags"], "-Istatic_include") { 85*333d2b36SAndroid Build Coastguard Worker t.Errorf("missing static_libs exported includes in rust_bindgen rule: cflags %#v", libbindgenStatic.Args["cflags"]) 86*333d2b36SAndroid Build Coastguard Worker } 87*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgenHeader.Args["cflags"], "-Iheader_include") { 88*333d2b36SAndroid Build Coastguard Worker t.Errorf("missing header_libs exported includes in rust_bindgen rule: cflags %#v", libbindgenHeader.Args["cflags"]) 89*333d2b36SAndroid Build Coastguard Worker } 90*333d2b36SAndroid Build Coastguard Worker 91*333d2b36SAndroid Build Coastguard Worker if android.InList("libfoo_static", libbindgenHeaderModule.Properties.AndroidMkHeaderLibs) { 92*333d2b36SAndroid Build Coastguard Worker t.Errorf("Static library dependency should not be in HeaderLibs list") 93*333d2b36SAndroid Build Coastguard Worker } 94*333d2b36SAndroid Build Coastguard Worker 95*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgen.Args["cflags"], "--default-flag") { 96*333d2b36SAndroid Build Coastguard Worker t.Errorf("rust_bindgen missing cflags defined in cc_defaults: cflags %#v", libbindgen.Args["cflags"]) 97*333d2b36SAndroid Build Coastguard Worker } 98*333d2b36SAndroid Build Coastguard Worker} 99*333d2b36SAndroid Build Coastguard Worker 100*333d2b36SAndroid Build Coastguard Workerfunc TestRustBindgenCustomBindgen(t *testing.T) { 101*333d2b36SAndroid Build Coastguard Worker ctx := testRust(t, ` 102*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 103*333d2b36SAndroid Build Coastguard Worker name: "libbindgen", 104*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.h", 105*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen", 106*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen", 107*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 108*333d2b36SAndroid Build Coastguard Worker custom_bindgen: "my_bindgen" 109*333d2b36SAndroid Build Coastguard Worker } 110*333d2b36SAndroid Build Coastguard Worker rust_binary_host { 111*333d2b36SAndroid Build Coastguard Worker name: "my_bindgen", 112*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.rs"], 113*333d2b36SAndroid Build Coastguard Worker } 114*333d2b36SAndroid Build Coastguard Worker `) 115*333d2b36SAndroid Build Coastguard Worker 116*333d2b36SAndroid Build Coastguard Worker libbindgen := ctx.ModuleForTests("libbindgen", "android_arm64_armv8-a_source").Output("bindings.rs") 117*333d2b36SAndroid Build Coastguard Worker 118*333d2b36SAndroid Build Coastguard Worker // The rule description should contain the custom binary name rather than bindgen, so checking the description 119*333d2b36SAndroid Build Coastguard Worker // should be sufficient. 120*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgen.Description, "my_bindgen") { 121*333d2b36SAndroid Build Coastguard Worker t.Errorf("Custom bindgen binary %s not used for libbindgen: rule description %#v", "my_bindgen", 122*333d2b36SAndroid Build Coastguard Worker libbindgen.Description) 123*333d2b36SAndroid Build Coastguard Worker } 124*333d2b36SAndroid Build Coastguard Worker} 125*333d2b36SAndroid Build Coastguard Worker 126*333d2b36SAndroid Build Coastguard Workerfunc TestRustBindgenStdVersions(t *testing.T) { 127*333d2b36SAndroid Build Coastguard Worker testRustError(t, "c_std and cpp_std cannot both be defined at the same time.", ` 128*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 129*333d2b36SAndroid Build Coastguard Worker name: "libbindgen", 130*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.h", 131*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen", 132*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen", 133*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 134*333d2b36SAndroid Build Coastguard Worker c_std: "somevalue", 135*333d2b36SAndroid Build Coastguard Worker cpp_std: "somevalue", 136*333d2b36SAndroid Build Coastguard Worker } 137*333d2b36SAndroid Build Coastguard Worker `) 138*333d2b36SAndroid Build Coastguard Worker 139*333d2b36SAndroid Build Coastguard Worker ctx := testRust(t, ` 140*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 141*333d2b36SAndroid Build Coastguard Worker name: "libbindgen_cstd", 142*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.hpp", 143*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen", 144*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen", 145*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 146*333d2b36SAndroid Build Coastguard Worker c_std: "foo" 147*333d2b36SAndroid Build Coastguard Worker } 148*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 149*333d2b36SAndroid Build Coastguard Worker name: "libbindgen_cppstd", 150*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.h", 151*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen", 152*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen", 153*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 154*333d2b36SAndroid Build Coastguard Worker cpp_std: "foo" 155*333d2b36SAndroid Build Coastguard Worker } 156*333d2b36SAndroid Build Coastguard Worker `) 157*333d2b36SAndroid Build Coastguard Worker 158*333d2b36SAndroid Build Coastguard Worker libbindgen_cstd := ctx.ModuleForTests("libbindgen_cstd", "android_arm64_armv8-a_source").Output("bindings.rs") 159*333d2b36SAndroid Build Coastguard Worker libbindgen_cppstd := ctx.ModuleForTests("libbindgen_cppstd", "android_arm64_armv8-a_source").Output("bindings.rs") 160*333d2b36SAndroid Build Coastguard Worker 161*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgen_cstd.Args["cflags"], "-std=foo") { 162*333d2b36SAndroid Build Coastguard Worker t.Errorf("c_std value not passed in to rust_bindgen as a clang flag") 163*333d2b36SAndroid Build Coastguard Worker } 164*333d2b36SAndroid Build Coastguard Worker 165*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgen_cppstd.Args["cflags"], "-std=foo") { 166*333d2b36SAndroid Build Coastguard Worker t.Errorf("cpp_std value not passed in to rust_bindgen as a clang flag") 167*333d2b36SAndroid Build Coastguard Worker } 168*333d2b36SAndroid Build Coastguard Worker 169*333d2b36SAndroid Build Coastguard Worker // Make sure specifying cpp_std emits the '-x c++' flag 170*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgen_cppstd.Args["cflags"], "-x c++") { 171*333d2b36SAndroid Build Coastguard Worker t.Errorf("Setting cpp_std should cause the '-x c++' flag to be emitted") 172*333d2b36SAndroid Build Coastguard Worker } 173*333d2b36SAndroid Build Coastguard Worker 174*333d2b36SAndroid Build Coastguard Worker // Make sure specifying c_std omits the '-x c++' flag 175*333d2b36SAndroid Build Coastguard Worker if strings.Contains(libbindgen_cstd.Args["cflags"], "-x c++") { 176*333d2b36SAndroid Build Coastguard Worker t.Errorf("Setting c_std should not cause the '-x c++' flag to be emitted") 177*333d2b36SAndroid Build Coastguard Worker } 178*333d2b36SAndroid Build Coastguard Worker} 179*333d2b36SAndroid Build Coastguard Worker 180*333d2b36SAndroid Build Coastguard Workerfunc TestBindgenDisallowedFlags(t *testing.T) { 181*333d2b36SAndroid Build Coastguard Worker // Make sure passing '-x c++' to cflags generates an error 182*333d2b36SAndroid Build Coastguard Worker testRustError(t, "cflags: -x c\\+\\+ should not be specified in cflags.*", ` 183*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 184*333d2b36SAndroid Build Coastguard Worker name: "libbad_flag", 185*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.h", 186*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen", 187*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen", 188*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 189*333d2b36SAndroid Build Coastguard Worker cflags: ["-x c++"] 190*333d2b36SAndroid Build Coastguard Worker } 191*333d2b36SAndroid Build Coastguard Worker `) 192*333d2b36SAndroid Build Coastguard Worker 193*333d2b36SAndroid Build Coastguard Worker // Make sure passing '-std=' to cflags generates an error 194*333d2b36SAndroid Build Coastguard Worker testRustError(t, "cflags: -std should not be specified in cflags.*", ` 195*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 196*333d2b36SAndroid Build Coastguard Worker name: "libbad_flag", 197*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.h", 198*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen", 199*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen", 200*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 201*333d2b36SAndroid Build Coastguard Worker cflags: ["-std=foo"] 202*333d2b36SAndroid Build Coastguard Worker } 203*333d2b36SAndroid Build Coastguard Worker `) 204*333d2b36SAndroid Build Coastguard Worker} 205*333d2b36SAndroid Build Coastguard Worker 206*333d2b36SAndroid Build Coastguard Workerfunc TestBindgenFlagFile(t *testing.T) { 207*333d2b36SAndroid Build Coastguard Worker ctx := testRust(t, ` 208*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 209*333d2b36SAndroid Build Coastguard Worker name: "libbindgen", 210*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.h", 211*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen", 212*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen", 213*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 214*333d2b36SAndroid Build Coastguard Worker bindgen_flag_files: [ 215*333d2b36SAndroid Build Coastguard Worker "flag_file.txt", 216*333d2b36SAndroid Build Coastguard Worker ], 217*333d2b36SAndroid Build Coastguard Worker } 218*333d2b36SAndroid Build Coastguard Worker `) 219*333d2b36SAndroid Build Coastguard Worker libbindgen := ctx.ModuleForTests("libbindgen", "android_arm64_armv8-a_source").Output("bindings.rs") 220*333d2b36SAndroid Build Coastguard Worker 221*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgen.Args["flagfiles"], "/dev/null") { 222*333d2b36SAndroid Build Coastguard Worker t.Errorf("missing /dev/null in rust_bindgen rule: flags %#v", libbindgen.Args["flagfiles"]) 223*333d2b36SAndroid Build Coastguard Worker } 224*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgen.Args["flagfiles"], "flag_file.txt") { 225*333d2b36SAndroid Build Coastguard Worker t.Errorf("missing bindgen flags file in rust_bindgen rule: flags %#v", libbindgen.Args["flagfiles"]) 226*333d2b36SAndroid Build Coastguard Worker } 227*333d2b36SAndroid Build Coastguard Worker // TODO: The best we can do right now is check $flagfiles. Once bindgen.go switches to RuleBuilder, 228*333d2b36SAndroid Build Coastguard Worker // we may be able to check libbinder.RuleParams.Command to see if it contains $(cat /dev/null flag_file.txt) 229*333d2b36SAndroid Build Coastguard Worker} 230*333d2b36SAndroid Build Coastguard Worker 231*333d2b36SAndroid Build Coastguard Workerfunc TestBindgenHandleStaticInlining(t *testing.T) { 232*333d2b36SAndroid Build Coastguard Worker ctx := testRust(t, ` 233*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 234*333d2b36SAndroid Build Coastguard Worker name: "libbindgen", 235*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.h", 236*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen", 237*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen", 238*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 239*333d2b36SAndroid Build Coastguard Worker handle_static_inline: true, 240*333d2b36SAndroid Build Coastguard Worker static_inline_library: "libbindgen_staticfns" 241*333d2b36SAndroid Build Coastguard Worker } 242*333d2b36SAndroid Build Coastguard Worker 243*333d2b36SAndroid Build Coastguard Worker cc_library_static { 244*333d2b36SAndroid Build Coastguard Worker name: "libbindgen_staticfns", 245*333d2b36SAndroid Build Coastguard Worker srcs: [":libbindgen"], 246*333d2b36SAndroid Build Coastguard Worker include_dirs: ["src/"], 247*333d2b36SAndroid Build Coastguard Worker } 248*333d2b36SAndroid Build Coastguard Worker `) 249*333d2b36SAndroid Build Coastguard Worker libbindgen := ctx.ModuleForTests("libbindgen", "android_arm64_armv8-a_source").Output("bindings.rs") 250*333d2b36SAndroid Build Coastguard Worker // Make sure the flag to support `static inline` functions is present 251*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgen.Args["flags"], "--wrap-static-fns") { 252*333d2b36SAndroid Build Coastguard Worker t.Errorf("missing flag to handle static inlining in rust_bindgen rule: flags %#v", libbindgen.Args["flags"]) 253*333d2b36SAndroid Build Coastguard Worker } 254*333d2b36SAndroid Build Coastguard Worker 255*333d2b36SAndroid Build Coastguard Worker if !strings.Contains(libbindgen.Args["flags"], "--wrap-static-fns-path") { 256*333d2b36SAndroid Build Coastguard Worker t.Errorf("missing flag to define path for static inlining C source from bindgen (--wrap-static-fns-path): flags %#v", libbindgen.Args["flags"]) 257*333d2b36SAndroid Build Coastguard Worker } 258*333d2b36SAndroid Build Coastguard Worker 259*333d2b36SAndroid Build Coastguard Worker} 260*333d2b36SAndroid Build Coastguard Worker 261*333d2b36SAndroid Build Coastguard Workerfunc TestBindgenStaticInlineProperties(t *testing.T) { 262*333d2b36SAndroid Build Coastguard Worker // Make sure handle_static_inline without static_inline_library generates an error 263*333d2b36SAndroid Build Coastguard Worker testRustError(t, "requires declaring static_inline_library to the corresponding cc_library module that includes the generated C source from bindgen", ` 264*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 265*333d2b36SAndroid Build Coastguard Worker name: "libbindgen", 266*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.h", 267*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen", 268*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen", 269*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 270*333d2b36SAndroid Build Coastguard Worker handle_static_inline: true 271*333d2b36SAndroid Build Coastguard Worker } 272*333d2b36SAndroid Build Coastguard Worker `) 273*333d2b36SAndroid Build Coastguard Worker testRustError(t, "requires declaring handle_static_inline", ` 274*333d2b36SAndroid Build Coastguard Worker rust_bindgen { 275*333d2b36SAndroid Build Coastguard Worker name: "libbindgen", 276*333d2b36SAndroid Build Coastguard Worker wrapper_src: "src/any.h", 277*333d2b36SAndroid Build Coastguard Worker crate_name: "bindgen", 278*333d2b36SAndroid Build Coastguard Worker stem: "libbindgen", 279*333d2b36SAndroid Build Coastguard Worker source_stem: "bindings", 280*333d2b36SAndroid Build Coastguard Worker static_inline_library: "libbindgen_staticfns" 281*333d2b36SAndroid Build Coastguard Worker } 282*333d2b36SAndroid Build Coastguard Worker 283*333d2b36SAndroid Build Coastguard Worker cc_library_static { 284*333d2b36SAndroid Build Coastguard Worker name: "libbindgen_staticfns", 285*333d2b36SAndroid Build Coastguard Worker srcs: [":libbindgen"], 286*333d2b36SAndroid Build Coastguard Worker include_dirs: ["src/"], 287*333d2b36SAndroid Build Coastguard Worker } 288*333d2b36SAndroid Build Coastguard Worker `) 289*333d2b36SAndroid Build Coastguard Worker} 290