Add source collision test, rust_bindgen doc.
Bug: 159064919 Test: Soong tests pass (and fail if error is modified). Change-Id: Id4f76e53e11e46ae495f9613a2699c598e7daea4
This commit is contained in:
parent
8481186d56
commit
10735d90d6
|
@ -27,6 +27,7 @@ bootstrap_go_package {
|
|||
testSrcs: [
|
||||
"binary_test.go",
|
||||
"bindgen_test.go",
|
||||
"builder_test.go",
|
||||
"clippy_test.go",
|
||||
"compiler_test.go",
|
||||
"coverage_test.go",
|
||||
|
|
|
@ -147,6 +147,9 @@ func (b *bindgenDecorator) sourceProviderProps() []interface{} {
|
|||
&b.Properties)
|
||||
}
|
||||
|
||||
// rust_bindgen generates Rust FFI bindings to C libraries using bindgen given a wrapper header as the primary input.
|
||||
// Bindgen has a number of flags to control the generated source, and additional flags can be passed to clang to ensure
|
||||
// the header and generated source is appropriately handled.
|
||||
func RustBindgenFactory() android.Module {
|
||||
module, _ := NewRustBindgen(android.HostAndDeviceSupported)
|
||||
return module.Init()
|
||||
|
|
|
@ -219,15 +219,16 @@ func transformSrctoCrate(ctx ModuleContext, main android.Path, deps PathDeps, fl
|
|||
}
|
||||
|
||||
if len(deps.SrcDeps) > 0 {
|
||||
moduleGenDir := android.PathForModuleOut(ctx, "out/")
|
||||
genSubDir := "out/"
|
||||
moduleGenDir := android.PathForModuleOut(ctx, genSubDir)
|
||||
var outputs android.WritablePaths
|
||||
|
||||
for _, genSrc := range deps.SrcDeps {
|
||||
if android.SuffixInList(outputs.Strings(), "out/"+genSrc.Base()) {
|
||||
if android.SuffixInList(outputs.Strings(), genSubDir+genSrc.Base()) {
|
||||
ctx.PropertyErrorf("srcs",
|
||||
"multiple source providers generate the same filename output: "+genSrc.Base())
|
||||
}
|
||||
outputs = append(outputs, android.PathForModuleOut(ctx, "out/"+genSrc.Base()))
|
||||
outputs = append(outputs, android.PathForModuleOut(ctx, genSubDir+genSrc.Base()))
|
||||
}
|
||||
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
// Copyright 2020 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package rust
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestSourceProviderCollision(t *testing.T) {
|
||||
testRustError(t, "multiple source providers generate the same filename output: bindings.rs", `
|
||||
rust_binary {
|
||||
name: "source_collider",
|
||||
srcs: [
|
||||
"foo.rs",
|
||||
":libbindings1",
|
||||
":libbindings2",
|
||||
],
|
||||
}
|
||||
rust_bindgen {
|
||||
name: "libbindings1",
|
||||
stem: "bindings",
|
||||
wrapper_src: "src/any.h",
|
||||
}
|
||||
rust_bindgen {
|
||||
name: "libbindings2",
|
||||
stem: "bindings",
|
||||
wrapper_src: "src/any.h",
|
||||
}
|
||||
`)
|
||||
}
|
Loading…
Reference in New Issue