diff options
Diffstat (limited to 'soong/clangprebuilts.go')
-rw-r--r-- | soong/clangprebuilts.go | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/soong/clangprebuilts.go b/soong/clangprebuilts.go index a802c239..86af1c73 100644 --- a/soong/clangprebuilts.go +++ b/soong/clangprebuilts.go @@ -72,6 +72,11 @@ func getClangResourceDir(ctx android.LoadHookContext) string { return path.Join(clangDir, "lib64", "clang", releaseVersion, "lib", "linux") } +func getSymbolFilePath(ctx android.LoadHookContext) string { + libDir := getClangResourceDir(ctx) + return path.Join(libDir, strings.TrimSuffix(ctx.ModuleName(), ".llndk")+".map.txt") +} + func trimVersionNumbers(ver string, retain int) string { sep := "." versions := strings.Split(ver, sep) @@ -182,7 +187,11 @@ func llvmPrebuiltLibraryStatic(ctx android.LoadHookContext) { ctx.AppendProperties(p) } -func libClangRtPrebuiltLibraryShared(ctx android.LoadHookContext) { +type prebuiltLibrarySharedProps struct { + Has_stubs *bool +} + +func libClangRtPrebuiltLibraryShared(ctx android.LoadHookContext, in *prebuiltLibrarySharedProps) { if ctx.AConfig().IsEnvTrue("FORCE_BUILD_SANITIZER_SHARED_OBJECTS") { return } @@ -202,6 +211,10 @@ func libClangRtPrebuiltLibraryShared(ctx android.LoadHookContext) { } Pack_relocations *bool Stl *string + Stubs struct { + Symbol_file *string + Versions []string + } } p := &props{} @@ -217,6 +230,12 @@ func libClangRtPrebuiltLibraryShared(ctx android.LoadHookContext) { disable := false p.Pack_relocations = &disable p.Stl = proptools.StringPtr("none") + + if proptools.Bool(in.Has_stubs) { + p.Stubs.Versions = []string{"10000"} + p.Stubs.Symbol_file = proptools.StringPtr(getSymbolFilePath(ctx)) + } + ctx.AppendProperties(p) } @@ -224,11 +243,11 @@ func libClangRtPrebuiltLibraryStatic(ctx android.LoadHookContext) { libDir := getClangResourceDir(ctx) type props struct { - Srcs []string + Srcs []string System_shared_libs []string - No_libcrt *bool - No_libgcc *bool - Stl *string + No_libcrt *bool + No_libgcc *bool + Stl *string } name := strings.TrimPrefix(ctx.ModuleName(), "prebuilt_") @@ -247,15 +266,12 @@ func libClangRtPrebuiltLibraryStatic(ctx android.LoadHookContext) { } func libClangRtLLndkLibrary(ctx android.LoadHookContext) { - libDir := getClangResourceDir(ctx) - type props struct { Symbol_file *string } p := &props{} - symbol_file := string(path.Join(libDir, strings.TrimSuffix(ctx.ModuleName(), ".llndk")+".map.txt")) - p.Symbol_file = proptools.StringPtr(symbol_file) + p.Symbol_file = proptools.StringPtr(getSymbolFilePath(ctx)) ctx.AppendProperties(p) } @@ -293,7 +309,11 @@ func llvmHostPrebuiltLibrarySharedFactory() android.Module { func libClangRtPrebuiltLibrarySharedFactory() android.Module { module, _ := cc.NewPrebuiltSharedLibrary(android.HostAndDeviceSupported) - android.AddLoadHook(module, libClangRtPrebuiltLibraryShared) + props := &prebuiltLibrarySharedProps{} + module.AddProperties(props) + android.AddLoadHook(module, func(ctx android.LoadHookContext) { + libClangRtPrebuiltLibraryShared(ctx, props) + }) return module.Init() } |