Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9bedfd0d authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Rename API surface provided to mainline modules"

parents 94f8a60f 627fc3e4
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -32,17 +32,18 @@ type ApiSurface int

// TODO(b/246656800): Reconcile with android.SdkKind
const (
	PublicApi ApiSurface = iota
	SystemApi
	VendorApi
	// API surface provided by platform and mainline modules to other mainline modules
	ModuleLibApi ApiSurface = iota
	PublicApi               // Aka NDK
	VendorApi               // Aka LLNDK
)

func (a ApiSurface) String() string {
	switch a {
	case ModuleLibApi:
		return "module-libapi"
	case PublicApi:
		return "publicapi"
	case SystemApi:
		return "systemapi"
	case VendorApi:
		return "vendorapi"
	default:
+8 −8
Original line number Diff line number Diff line
@@ -2825,7 +2825,7 @@ func TestCcApiContributionsWithHdrs(t *testing.T) {
	expectedBazelTargets := []string{
		MakeBazelTarget(
			"cc_api_library_headers",
			"libfoo.systemapi.headers",
			"libfoo.module-libapi.headers",
			AttrNameToString{
				"export_includes": `["dir1"]`,
			}),
@@ -2842,18 +2842,18 @@ func TestCcApiContributionsWithHdrs(t *testing.T) {
				"api":          `"libfoo.map.txt"`,
				"library_name": `"libfoo"`,
				"api_surfaces": `[
        "systemapi",
        "module-libapi",
        "vendorapi",
    ]`,
				"hdrs": `[
        ":libfoo.systemapi.headers",
        ":libfoo.module-libapi.headers",
        ":libfoo.vendorapi.headers",
    ]`,
			}),
	}
	RunApiBp2BuildTestCase(t, cc.RegisterLibraryBuildComponents, Bp2buildTestCase{
		Blueprint:            bp,
		Description:          "cc API contributions to systemapi and vendorapi",
		Description:          "cc API contributions to module-libapi and vendorapi",
		ExpectedBazelTargets: expectedBazelTargets,
	})
}
@@ -2872,8 +2872,8 @@ func TestCcApiSurfaceCombinations(t *testing.T) {
				stubs: {symbol_file: "a.map.txt"},
			}`,
			expectedApi:         `"a.map.txt"`,
			expectedApiSurfaces: `["systemapi"]`,
			description:         "Library that contributes to systemapi",
			expectedApiSurfaces: `["module-libapi"]`,
			description:         "Library that contributes to module-libapi",
		},
		{
			bp: `
@@ -2894,10 +2894,10 @@ func TestCcApiSurfaceCombinations(t *testing.T) {
			}`,
			expectedApi: `"a.map.txt"`,
			expectedApiSurfaces: `[
        "systemapi",
        "module-libapi",
        "vendorapi",
    ]`,
			description: "Library that contributes to systemapi and vendorapi",
			description: "Library that contributes to module-libapi and vendorapi",
		},
	}
	for _, testCase := range testCases {
+10 −9
Original line number Diff line number Diff line
@@ -475,10 +475,10 @@ func createStubsBazelTargetIfNeeded(ctx android.TopDownMutatorContext, m *Module
func apiContributionBp2Build(ctx android.TopDownMutatorContext, module *Module) {
	apiSurfaces := make([]string, 0)
	apiHeaders := make([]string, 0)
	// systemapi (non-null `stubs` property)
	// module-libapi for apexes (non-null `stubs` property)
	if module.HasStubsVariants() {
		apiSurfaces = append(apiSurfaces, android.SystemApi.String())
		apiIncludes := getSystemApiIncludes(ctx, module)
		apiSurfaces = append(apiSurfaces, android.ModuleLibApi.String())
		apiIncludes := getModuleLibApiIncludes(ctx, module)
		if !apiIncludes.isEmpty() {
			createApiHeaderTarget(ctx, apiIncludes)
			apiHeaders = append(apiHeaders, apiIncludes.name)
@@ -494,8 +494,8 @@ func apiContributionBp2Build(ctx android.TopDownMutatorContext, module *Module)
		}
	}
	// create a target only if this module contributes to an api surface
	// TODO: Currently this does not distinguish systemapi-only headers and vendrorapi-only headers
	// TODO: Update so that systemapi-only headers do not get exported to vendorapi (and vice-versa)
	// TODO: Currently this does not distinguish modulelibapi-only headers and vendrorapi-only headers
	// TODO: Update so that modulelibapi-only headers do not get exported to vendorapi (and vice-versa)
	if len(apiSurfaces) > 0 {
		props := bazel.BazelTargetModuleProperties{
			Rule_class:        "cc_api_contribution",
@@ -527,8 +527,8 @@ func apiLabelAttribute(ctx android.TopDownMutatorContext, module *Module) bazel.
	linker := module.linker.(*libraryDecorator)
	if llndkApi := linker.Properties.Llndk.Symbol_file; llndkApi != nil {
		apiFile = llndkApi
	} else if systemApi := linker.Properties.Stubs.Symbol_file; systemApi != nil {
		apiFile = systemApi
	} else if moduleLibApi := linker.Properties.Stubs.Symbol_file; moduleLibApi != nil {
		apiFile = moduleLibApi
	} else {
		ctx.ModuleErrorf("API surface library does not have any API file")
	}
@@ -566,7 +566,8 @@ func (includes *apiIncludes) addDep(name string) {
	includes.attrs.Deps.Append(lla)
}

func getSystemApiIncludes(ctx android.TopDownMutatorContext, c *Module) apiIncludes {
// includes provided to the module-lib API surface. This API surface is used by apexes.
func getModuleLibApiIncludes(ctx android.TopDownMutatorContext, c *Module) apiIncludes {
	flagProps := c.library.(*libraryDecorator).flagExporter.Properties
	linkProps := c.library.(*libraryDecorator).baseLinker.Properties
	includes := android.FirstUniqueStrings(flagProps.Export_include_dirs)
@@ -579,7 +580,7 @@ func getSystemApiIncludes(ctx android.TopDownMutatorContext, c *Module) apiInclu
	}

	return apiIncludes{
		name: c.Name() + ".systemapi.headers",
		name: c.Name() + ".module-libapi.headers",
		attrs: bazelCcApiLibraryHeadersAttributes{
			bazelCcLibraryHeadersAttributes: attrs,
		},
+2 −2
Original line number Diff line number Diff line
@@ -169,7 +169,7 @@ func apiLibraryHeadersBp2Build(ctx android.TopDownMutatorContext, module *Module
	// For API export, create a top-level arch-agnostic target and list the arch-specific targets as its deps

	// arch-agnostic includes
	apiIncludes := getSystemApiIncludes(ctx, module)
	apiIncludes := getModuleLibApiIncludes(ctx, module)
	// arch and os specific includes
	archApiIncludes, androidOsIncludes := archOsSpecificApiIncludes(ctx, module)
	for _, arch := range allArches { // sorted iteration
@@ -186,7 +186,7 @@ func apiLibraryHeadersBp2Build(ctx android.TopDownMutatorContext, module *Module
	}

	if !apiIncludes.isEmpty() {
		// override the name from <mod>.systemapi.headers --> <mod>.contribution
		// override the name from <mod>.module-libapi.headers --> <mod>.contribution
		apiIncludes.name = android.ApiContributionTargetName(module.Name())
		createApiHeaderTarget(ctx, apiIncludes)
	}