Implement stubs.symbol_file and stubs.versions for cc_library_shared bp2build.
This CL turns the stubs.symbol_file and stubs.versions properties into stubs_symbol_file and stubs_version attributes on the cc_shared_library target. See associated build/bazel change on how these attributes are used to generate stub libraries. Bug: 207812332 Test: New tests Test: CI Change-Id: Ie23eafb9903a131d92ff4e251215e998cea0a763
This commit is contained in:
@@ -344,7 +344,7 @@ func getFinalCodenamesMap(config Config) map[string]int {
|
||||
|
||||
var apiLevelsMapKey = NewOnceKey("ApiLevelsMap")
|
||||
|
||||
func getApiLevelsMap(config Config) map[string]int {
|
||||
func GetApiLevelsMap(config Config) map[string]int {
|
||||
return config.Once(apiLevelsMapKey, func() interface{} {
|
||||
apiLevelsMap := map[string]int{
|
||||
"G": 9,
|
||||
@@ -374,7 +374,7 @@ func getApiLevelsMap(config Config) map[string]int {
|
||||
}
|
||||
|
||||
func (a *apiLevelsSingleton) GenerateBuildActions(ctx SingletonContext) {
|
||||
apiLevelsMap := getApiLevelsMap(ctx.Config())
|
||||
apiLevelsMap := GetApiLevelsMap(ctx.Config())
|
||||
apiLevelsJson := GetApiLevelsJson(ctx)
|
||||
createApiLevelsJson(ctx, apiLevelsJson, apiLevelsMap)
|
||||
}
|
||||
|
@@ -226,6 +226,7 @@ var (
|
||||
"packages/apps/WallpaperPicker":/* recursive = */ false,
|
||||
|
||||
"prebuilts/gcc":/* recursive = */ true,
|
||||
"prebuilts/build-tools":/* recursive = */ false,
|
||||
"prebuilts/sdk":/* recursive = */ false,
|
||||
"prebuilts/sdk/current/extras/app-toolkit":/* recursive = */ false,
|
||||
"prebuilts/sdk/current/support":/* recursive = */ false,
|
||||
|
@@ -1297,6 +1297,8 @@ func makeCcLibraryTargets(name string, attrs attrNameToString) []string {
|
||||
"additional_linker_inputs": true,
|
||||
"linkopts": true,
|
||||
"strip": true,
|
||||
"stubs_symbol_file": true,
|
||||
"stubs_versions": true,
|
||||
}
|
||||
sharedAttrs := attrNameToString{}
|
||||
staticAttrs := attrNameToString{}
|
||||
@@ -2390,3 +2392,32 @@ func TestCcLibraryStaticDisabledForSomeArch(t *testing.T) {
|
||||
}),
|
||||
}})
|
||||
}
|
||||
|
||||
func TestCcLibraryStubs(t *testing.T) {
|
||||
runCcLibraryTestCase(t, bp2buildTestCase{
|
||||
description: "cc_library stubs",
|
||||
moduleTypeUnderTest: "cc_library",
|
||||
moduleTypeUnderTestFactory: cc.LibraryFactory,
|
||||
dir: "foo/bar",
|
||||
filesystem: map[string]string{
|
||||
"foo/bar/Android.bp": `
|
||||
cc_library {
|
||||
name: "a",
|
||||
stubs: { symbol_file: "a.map.txt", versions: ["28", "29", "current"] },
|
||||
bazel_module: { bp2build_available: true },
|
||||
include_build_directory: false,
|
||||
}
|
||||
`,
|
||||
},
|
||||
blueprint: soongCcLibraryPreamble,
|
||||
expectedBazelTargets: makeCcLibraryTargets("a", attrNameToString{
|
||||
"stubs_symbol_file": `"a.map.txt"`,
|
||||
"stubs_versions": `[
|
||||
"28",
|
||||
"29",
|
||||
"current",
|
||||
]`,
|
||||
}),
|
||||
},
|
||||
)
|
||||
}
|
||||
|
@@ -464,3 +464,33 @@ func TestCcLibrarySharedUseVersionLib(t *testing.T) {
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestCcLibrarySharedStubs(t *testing.T) {
|
||||
runCcLibrarySharedTestCase(t, bp2buildTestCase{
|
||||
description: "cc_library_shared stubs",
|
||||
moduleTypeUnderTest: "cc_library_shared",
|
||||
moduleTypeUnderTestFactory: cc.LibrarySharedFactory,
|
||||
dir: "foo/bar",
|
||||
filesystem: map[string]string{
|
||||
"foo/bar/Android.bp": `
|
||||
cc_library_shared {
|
||||
name: "a",
|
||||
stubs: { symbol_file: "a.map.txt", versions: ["28", "29", "current"] },
|
||||
bazel_module: { bp2build_available: true },
|
||||
include_build_directory: false,
|
||||
}
|
||||
`,
|
||||
},
|
||||
blueprint: soongCcLibraryPreamble,
|
||||
expectedBazelTargets: []string{makeBazelTarget("cc_library_shared", "a", attrNameToString{
|
||||
"stubs_symbol_file": `"a.map.txt"`,
|
||||
"stubs_versions": `[
|
||||
"28",
|
||||
"29",
|
||||
"current",
|
||||
]`,
|
||||
}),
|
||||
},
|
||||
},
|
||||
)
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package bp2build
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
@@ -27,6 +28,13 @@ func CreateSoongInjectionFiles(cfg android.Config, metrics CodegenMetrics) []Baz
|
||||
|
||||
files = append(files, newFile("product_config", "soong_config_variables.bzl", cfg.Bp2buildSoongConfigDefinitions.String()))
|
||||
|
||||
apiLevelsContent, err := json.Marshal(android.GetApiLevelsMap(cfg))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
files = append(files, newFile("api_levels", GeneratedBuildFileName, `exports_files(["api_levels.json"])`))
|
||||
files = append(files, newFile("api_levels", "api_levels.json", string(apiLevelsContent)))
|
||||
|
||||
return files
|
||||
}
|
||||
|
||||
|
@@ -102,6 +102,14 @@ func TestCreateBazelFiles_Bp2Build_CreatesDefaultFiles(t *testing.T) {
|
||||
dir: "product_config",
|
||||
basename: "soong_config_variables.bzl",
|
||||
},
|
||||
{
|
||||
dir: "api_levels",
|
||||
basename: GeneratedBuildFileName,
|
||||
},
|
||||
{
|
||||
dir: "api_levels",
|
||||
basename: "api_levels.json",
|
||||
},
|
||||
}
|
||||
|
||||
if len(files) != len(expectedFilePaths) {
|
||||
|
@@ -280,6 +280,9 @@ type compilerAttributes struct {
|
||||
includes BazelIncludes
|
||||
|
||||
protoSrcs bazel.LabelListAttribute
|
||||
|
||||
stubsSymbolFile *string
|
||||
stubsVersions bazel.StringListAttribute
|
||||
}
|
||||
|
||||
type filterOutFn func(string) bool
|
||||
@@ -464,10 +467,11 @@ func includesFromLabelList(labelList bazel.LabelList) (relative, absolute []stri
|
||||
return relative, absolute
|
||||
}
|
||||
|
||||
// bp2BuildParseCompilerProps returns copts, srcs and hdrs and other attributes.
|
||||
// bp2BuildParseBaseProps returns all compiler, linker, library attributes of a cc module..
|
||||
func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module) baseAttributes {
|
||||
archVariantCompilerProps := module.GetArchVariantProperties(ctx, &BaseCompilerProperties{})
|
||||
archVariantLinkerProps := module.GetArchVariantProperties(ctx, &BaseLinkerProperties{})
|
||||
archVariantLibraryProperties := module.GetArchVariantProperties(ctx, &LibraryProperties{})
|
||||
|
||||
var implementationHdrs bazel.LabelListAttribute
|
||||
|
||||
@@ -484,6 +488,7 @@ func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module)
|
||||
}
|
||||
allAxesAndConfigs(archVariantCompilerProps)
|
||||
allAxesAndConfigs(archVariantLinkerProps)
|
||||
allAxesAndConfigs(archVariantLibraryProperties)
|
||||
|
||||
compilerAttrs := compilerAttributes{}
|
||||
linkerAttrs := linkerAttributes{}
|
||||
@@ -519,6 +524,13 @@ func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module)
|
||||
currIncludes := compilerAttrs.localIncludes.SelectValue(axis, config)
|
||||
currIncludes = android.FirstUniqueStrings(append(currIncludes, includes...))
|
||||
compilerAttrs.localIncludes.SetSelectValue(axis, config, currIncludes)
|
||||
|
||||
if libraryProps, ok := archVariantLibraryProperties[axis][config].(*LibraryProperties); ok {
|
||||
if axis == bazel.NoConfigAxis {
|
||||
compilerAttrs.stubsSymbolFile = libraryProps.Stubs.Symbol_file
|
||||
compilerAttrs.stubsVersions.SetSelectValue(axis, config, libraryProps.Stubs.Versions)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -381,6 +381,9 @@ func libraryBp2Build(ctx android.TopDownMutatorContext, m *Module) {
|
||||
None: linkerAttrs.stripNone,
|
||||
},
|
||||
Features: linkerAttrs.features,
|
||||
|
||||
Stubs_symbol_file: compilerAttrs.stubsSymbolFile,
|
||||
Stubs_versions: compilerAttrs.stubsVersions,
|
||||
}
|
||||
|
||||
staticProps := bazel.BazelTargetModuleProperties{
|
||||
@@ -2518,6 +2521,9 @@ func sharedOrStaticLibraryBp2Build(ctx android.TopDownMutatorContext, module *Mo
|
||||
},
|
||||
|
||||
Features: linkerAttrs.features,
|
||||
|
||||
Stubs_symbol_file: compilerAttrs.stubsSymbolFile,
|
||||
Stubs_versions: compilerAttrs.stubsVersions,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2591,4 +2597,7 @@ type bazelCcLibrarySharedAttributes struct {
|
||||
Asflags bazel.StringListAttribute
|
||||
|
||||
Features bazel.StringListAttribute
|
||||
|
||||
Stubs_symbol_file *string
|
||||
Stubs_versions bazel.StringListAttribute
|
||||
}
|
||||
|
Reference in New Issue
Block a user