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_headers_test.go",
|
||||||
"library_stub_test.go",
|
"library_stub_test.go",
|
||||||
"library_test.go",
|
"library_test.go",
|
||||||
|
"ndk_test.go",
|
||||||
"object_test.go",
|
"object_test.go",
|
||||||
"prebuilt_test.go",
|
"prebuilt_test.go",
|
||||||
"proto_test.go",
|
"proto_test.go",
|
||||||
"sanitize_test.go",
|
"sanitize_test.go",
|
||||||
|
"sdk_test.go",
|
||||||
"test_data_test.go",
|
"test_data_test.go",
|
||||||
"tidy_test.go",
|
"tidy_test.go",
|
||||||
"vendor_public_library_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)
|
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()),
|
actx.AddFarVariationDependencies(append(ctx.Target().Variations(), c.ImageVariation()),
|
||||||
depTag, lib)
|
depTag, lib)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -84,11 +84,13 @@ var (
|
||||||
//
|
//
|
||||||
// Example:
|
// Example:
|
||||||
//
|
//
|
||||||
// ndk_library {
|
// ndk_library {
|
||||||
// name: "libfoo",
|
//
|
||||||
// symbol_file: "libfoo.map.txt",
|
// name: "libfoo",
|
||||||
// first_version: "9",
|
// symbol_file: "libfoo.map.txt",
|
||||||
// }
|
// first_version: "9",
|
||||||
|
//
|
||||||
|
// }
|
||||||
type libraryProperties struct {
|
type libraryProperties struct {
|
||||||
// Relative path to the symbol map.
|
// Relative path to the symbol map.
|
||||||
// An example file can be seen here: TODO(danalbert): Make an example.
|
// 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
|
// where it is enabled pending a fix for http://b/190554910 (no debug info
|
||||||
// for asm implemented symbols).
|
// for asm implemented symbols).
|
||||||
Allow_untyped_symbols *bool
|
Allow_untyped_symbols *bool
|
||||||
|
|
||||||
|
// Headers presented by this library to the Public API Surface
|
||||||
|
Export_header_libs []string
|
||||||
}
|
}
|
||||||
|
|
||||||
type stubDecorator struct {
|
type stubDecorator struct {
|
||||||
|
@ -483,8 +488,11 @@ func (c *stubDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) O
|
||||||
return objs
|
return objs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add a dependency on the header modules of this ndk_library
|
||||||
func (linker *stubDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps {
|
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 {
|
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_static_stl", NdkPrebuiltStaticStlFactory)
|
||||||
ctx.RegisterModuleType("ndk_prebuilt_object", NdkPrebuiltObjectFactory)
|
ctx.RegisterModuleType("ndk_prebuilt_object", NdkPrebuiltObjectFactory)
|
||||||
ctx.RegisterModuleType("ndk_library", NdkLibraryFactory)
|
ctx.RegisterModuleType("ndk_library", NdkLibraryFactory)
|
||||||
|
ctx.RegisterModuleType("ndk_headers", ndkHeadersFactory)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GatherRequiredDepsForTest(oses ...android.OsType) string {
|
func GatherRequiredDepsForTest(oses ...android.OsType) string {
|
||||||
|
|
Loading…
Reference in a new issue