diff --git a/cc/library.go b/cc/library.go index 14ceb2899..ad1822d40 100644 --- a/cc/library.go +++ b/cc/library.go @@ -395,6 +395,25 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext, sharedLibs := deps.SharedLibs sharedLibs = append(sharedLibs, deps.LateSharedLibs...) + // TODO(danalbert): Clean this up when soong supports prebuilts. + if strings.HasPrefix(ctx.selectedStl(), "ndk_libc++") { + libDir := getNdkStlLibDir(ctx, flags.Toolchain, "libc++") + + if strings.HasSuffix(ctx.selectedStl(), "_shared") { + deps.StaticLibs = append(deps.StaticLibs, + libDir.Join(ctx, "libandroid_support.a")) + } else { + deps.StaticLibs = append(deps.StaticLibs, + libDir.Join(ctx, "libc++abi.a"), + libDir.Join(ctx, "libandroid_support.a")) + } + + if ctx.Arch().ArchType == android.Arm { + deps.StaticLibs = append(deps.StaticLibs, + libDir.Join(ctx, "libunwind.a")) + } + } + TransformObjToDynamicBinary(ctx, objFiles, sharedLibs, deps.StaticLibs, deps.LateStaticLibs, deps.WholeStaticLibs, linkerDeps, deps.CrtBegin, deps.CrtEnd, false, builderFlags, outputFile)