Add a property in ndk_library for header contributions
The new property will be used to determine the header file contributions of ndk_library(s) to the Public API surface. This should be a no-op for regular Soong builds. This will be used by a future bp2build converter to populate the BUILD files for Multi-tree `cc_api_contribution` targets (Also noticed that sdk_test.go was never added to testSrcs, which this CL should fix) Test: go test ./cc Test: TH Change-Id: Ieea093e4aac68e341c6414b6cafe02c441643cdf
This commit is contained in:
parent
f9f9ed7cf1
commit
73bcafcbb0
5 changed files with 77 additions and 7 deletions
|
@ -99,10 +99,12 @@ bootstrap_go_package {
|
|||
"library_headers_test.go",
|
||||
"library_stub_test.go",
|
||||
"library_test.go",
|
||||
"ndk_test.go",
|
||||
"object_test.go",
|
||||
"prebuilt_test.go",
|
||||
"proto_test.go",
|
||||
"sanitize_test.go",
|
||||
"sdk_test.go",
|
||||
"test_data_test.go",
|
||||
"tidy_test.go",
|
||||
"vendor_public_library_test.go",
|
||||
|
|
5
cc/cc.go
5
cc/cc.go
|
@ -2350,7 +2350,10 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) {
|
|||
|
||||
lib = GetReplaceModuleName(lib, GetSnapshot(c, &snapshotInfo, actx).HeaderLibs)
|
||||
|
||||
if c.IsStubs() {
|
||||
if c.isNDKStubLibrary() {
|
||||
// ndk_headers do not have any variations
|
||||
actx.AddFarVariationDependencies([]blueprint.Variation{}, depTag, lib)
|
||||
} else if c.IsStubs() {
|
||||
actx.AddFarVariationDependencies(append(ctx.Target().Variations(), c.ImageVariation()),
|
||||
depTag, lib)
|
||||
} else {
|
||||
|
|
|
@ -84,11 +84,13 @@ var (
|
|||
//
|
||||
// Example:
|
||||
//
|
||||
// ndk_library {
|
||||
// name: "libfoo",
|
||||
// symbol_file: "libfoo.map.txt",
|
||||
// first_version: "9",
|
||||
// }
|
||||
// ndk_library {
|
||||
//
|
||||
// name: "libfoo",
|
||||
// symbol_file: "libfoo.map.txt",
|
||||
// first_version: "9",
|
||||
//
|
||||
// }
|
||||
type libraryProperties struct {
|
||||
// Relative path to the symbol map.
|
||||
// An example file can be seen here: TODO(danalbert): Make an example.
|
||||
|
@ -109,6 +111,9 @@ type libraryProperties struct {
|
|||
// where it is enabled pending a fix for http://b/190554910 (no debug info
|
||||
// for asm implemented symbols).
|
||||
Allow_untyped_symbols *bool
|
||||
|
||||
// Headers presented by this library to the Public API Surface
|
||||
Export_header_libs []string
|
||||
}
|
||||
|
||||
type stubDecorator struct {
|
||||
|
@ -483,8 +488,11 @@ func (c *stubDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) O
|
|||
return objs
|
||||
}
|
||||
|
||||
// Add a dependency on the header modules of this ndk_library
|
||||
func (linker *stubDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps {
|
||||
return Deps{}
|
||||
return Deps{
|
||||
HeaderLibs: linker.properties.Export_header_libs,
|
||||
}
|
||||
}
|
||||
|
||||
func (linker *stubDecorator) Name(name string) string {
|
||||
|
|
56
cc/ndk_test.go
Normal file
56
cc/ndk_test.go
Normal file
|
@ -0,0 +1,56 @@
|
|||
// Copyright 2022 Google Inc. All rights reserved.
|
||||
//
|
||||
// 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 cc
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
|
||||
"android/soong/android"
|
||||
)
|
||||
|
||||
func TestNdkHeaderDependency(t *testing.T) {
|
||||
isDep := func(ctx *android.TestResult, from, toExpected android.Module) bool {
|
||||
foundDep := false
|
||||
ctx.VisitDirectDeps(from, func(toActual blueprint.Module) {
|
||||
if toExpected.Name() == toActual.Name() {
|
||||
foundDep = true
|
||||
}
|
||||
})
|
||||
return foundDep
|
||||
}
|
||||
bp := `
|
||||
ndk_library {
|
||||
name: "libfoo",
|
||||
first_version: "29",
|
||||
symbol_file: "libfoo.map.txt",
|
||||
export_header_libs: ["libfoo_headers"],
|
||||
}
|
||||
ndk_headers {
|
||||
name: "libfoo_headers",
|
||||
srcs: ["foo.h"],
|
||||
license: "NOTICE",
|
||||
}
|
||||
//This module is needed since Soong creates a dep edge on source
|
||||
cc_library {
|
||||
name: "libfoo",
|
||||
}
|
||||
`
|
||||
ctx := prepareForCcTest.RunTestWithBp(t, bp)
|
||||
libfoo := ctx.ModuleForTests("libfoo.ndk", "android_arm64_armv8-a_sdk_shared")
|
||||
libfoo_headers := ctx.ModuleForTests("libfoo_headers", "")
|
||||
android.AssertBoolEquals(t, "Could not find headers of ndk_library", true, isDep(ctx, libfoo.Module(), libfoo_headers.Module()))
|
||||
}
|
|
@ -41,6 +41,7 @@ func RegisterRequiredBuildComponentsForTest(ctx android.RegistrationContext) {
|
|||
ctx.RegisterModuleType("ndk_prebuilt_static_stl", NdkPrebuiltStaticStlFactory)
|
||||
ctx.RegisterModuleType("ndk_prebuilt_object", NdkPrebuiltObjectFactory)
|
||||
ctx.RegisterModuleType("ndk_library", NdkLibraryFactory)
|
||||
ctx.RegisterModuleType("ndk_headers", ndkHeadersFactory)
|
||||
}
|
||||
|
||||
func GatherRequiredDepsForTest(oses ...android.OsType) string {
|
||||
|
|
Loading…
Reference in a new issue