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

Commit 1921fb24 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Rename API surface provided to mainline modules" am: 9bedfd0d

parents 1c405b4f 9bedfd0d
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)
	}