From 9e93d3d6e1cb19c486a9f50c4530aa5f607fe56d Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Wed, 8 Mar 2023 05:47:29 +0000 Subject: [PATCH] Create aliases for stubs in build/bazel/api_surfaces - Create the alias under the module-libapi directory. This is the api_surface that cc_stubs_suite maps to. - Create the alias only for "current" (atleast for now) - Create one alias for the stub shared lib, and another for its headers Test: b build @api_surfaces//... (with aosp/2475091) Change-Id: Ib004c2c34256f971e74d75317fa5fbbe7273720e --- android/config.go | 11 +++++++++++ cc/library.go | 15 +++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/android/config.go b/android/config.go index b37d5c827..07151f9de 100644 --- a/android/config.go +++ b/android/config.go @@ -1837,3 +1837,14 @@ func (c *config) LogMixedBuild(ctx BaseModuleContext, useBazel bool) { c.mixedBuildDisabledModules[moduleName] = struct{}{} } } + +// ApiSurfaces directory returns the source path inside the api_surfaces repo +// (relative to workspace root). +func (c *config) ApiSurfacesDir(s ApiSurface, version string) string { + return filepath.Join( + "build", + "bazel", + "api_surfaces", + s.String(), + version) +} diff --git a/cc/library.go b/cc/library.go index e73af8179..27f06230b 100644 --- a/cc/library.go +++ b/cc/library.go @@ -464,6 +464,21 @@ func createStubsBazelTargetIfNeeded(ctx android.TopDownMutatorContext, m *Module ctx.CreateBazelTargetModule(stubSuitesProps, android.CommonAttributes{Name: m.Name() + "_stub_libs"}, stubSuitesAttrs) + + // Add alias for the stub shared_library in @api_surfaces repository + currentModuleLibApiDir := ctx.Config().ApiSurfacesDir(android.ModuleLibApi, "current") + actualLabelInMainWorkspace := bazel.Label{ + Label: fmt.Sprintf("@//%s:%s_stub_libs_current", ctx.ModuleDir(), m.Name()), + } + ctx.CreateBazelTargetAliasInDir(currentModuleLibApiDir, m.Name(), actualLabelInMainWorkspace) + + // Add alias for headers exported by the stub library + headerLabelInMainWorkspace := bazel.Label{ + // This label is generated from cc_stub_suite macro + Label: fmt.Sprintf("@//%s:%s_stub_libs_%s_headers", ctx.ModuleDir(), m.Name(), android.ModuleLibApi.String()), + } + headerAlias := m.Name() + "_headers" + ctx.CreateBazelTargetAliasInDir(currentModuleLibApiDir, headerAlias, headerLabelInMainWorkspace) } }