Loading cc/binary.go +1 −1 Original line number Diff line number Diff line Loading @@ -384,7 +384,7 @@ func (binary *binaryDecorator) link(ctx ModuleContext, TransformObjToDynamicBinary(ctx, objs.objFiles, sharedLibs, deps.StaticLibs, deps.LateStaticLibs, deps.WholeStaticLibs, linkerDeps, deps.CrtBegin, deps.CrtEnd, true, builderFlags, outputFile) builderFlags, outputFile, nil) objs.coverageFiles = append(objs.coverageFiles, deps.StaticLibObjs.coverageFiles...) objs.coverageFiles = append(objs.coverageFiles, deps.WholeStaticLibObjs.coverageFiles...) Loading cc/builder.go +13 −7 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import ( "strings" "github.com/google/blueprint" "github.com/google/blueprint/pathtools" "android/soong/android" "android/soong/cc/config" Loading Loading @@ -597,7 +598,7 @@ func transformDarwinObjToStaticLib(ctx android.ModuleContext, objFiles android.P // and shared libraries, to a shared library (.so) or dynamic executable func TransformObjToDynamicBinary(ctx android.ModuleContext, objFiles, sharedLibs, staticLibs, lateStaticLibs, wholeStaticLibs, deps android.Paths, crtBegin, crtEnd android.OptionalPath, groupLate bool, flags builderFlags, outputFile android.WritablePath) { crtBegin, crtEnd android.OptionalPath, groupLate bool, flags builderFlags, outputFile android.WritablePath, implicitOutputs android.WritablePaths) { ldCmd := "${config.ClangBin}/clang++" Loading Loading @@ -634,7 +635,11 @@ func TransformObjToDynamicBinary(ctx android.ModuleContext, } for _, lib := range sharedLibs { libFlagsList = append(libFlagsList, lib.String()) libFile := lib.String() if ctx.Windows() { libFile = pathtools.ReplaceExtension(libFile, "a") } libFlagsList = append(libFlagsList, libFile) } deps = append(deps, staticLibs...) Loading @@ -648,6 +653,7 @@ func TransformObjToDynamicBinary(ctx android.ModuleContext, Rule: ld, Description: "link " + outputFile.Base(), Output: outputFile, ImplicitOutputs: implicitOutputs, Inputs: objFiles, Implicits: deps, Args: map[string]string{ Loading cc/library.go +13 −4 Original line number Diff line number Diff line Loading @@ -347,9 +347,10 @@ func (library *libraryDecorator) linkerFlags(ctx ModuleContext, flags Flags) Fla ) } } else { f = append(f, "-shared", "-Wl,-soname,"+libName+flags.Toolchain.ShlibSuffix()) f = append(f, "-shared") if !ctx.Windows() { f = append(f, "-Wl,-soname,"+libName+flags.Toolchain.ShlibSuffix()) } } flags.LdFlags = append(f, flags.LdFlags...) Loading Loading @@ -673,6 +674,14 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext, outputFile := android.PathForModuleOut(ctx, fileName) ret := outputFile var implicitOutputs android.WritablePaths if ctx.Windows() { importLibraryPath := android.PathForModuleOut(ctx, pathtools.ReplaceExtension(fileName, "a")) flags.LdFlags = append(flags.LdFlags, "-Wl,--out-implib="+importLibraryPath.String()) implicitOutputs = append(implicitOutputs, importLibraryPath) } builderFlags := flagsToBuilderFlags(flags) // Optimize out relinking against shared libraries whose interface hasn't changed by Loading Loading @@ -724,7 +733,7 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext, TransformObjToDynamicBinary(ctx, objs.objFiles, sharedLibs, deps.StaticLibs, deps.LateStaticLibs, deps.WholeStaticLibs, linkerDeps, deps.CrtBegin, deps.CrtEnd, false, builderFlags, outputFile) linkerDeps, deps.CrtBegin, deps.CrtEnd, false, builderFlags, outputFile, implicitOutputs) objs.coverageFiles = append(objs.coverageFiles, deps.StaticLibObjs.coverageFiles...) objs.coverageFiles = append(objs.coverageFiles, deps.WholeStaticLibObjs.coverageFiles...) Loading cc/linker.go +2 −6 Original line number Diff line number Diff line Loading @@ -290,10 +290,6 @@ func (linker *baseLinker) useClangLld(ctx ModuleContext) bool { if ctx.Darwin() { return false } // http://b/110800681 - lld cannot link Android's Windows modules yet. if ctx.Windows() { return false } if linker.Properties.Use_clang_lld != nil { return Bool(linker.Properties.Use_clang_lld) } Loading Loading @@ -347,7 +343,7 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags { // darwin defaults to treating undefined symbols as errors flags.LdFlags = append(flags.LdFlags, "-Wl,-undefined,dynamic_lookup") } } else if !ctx.Darwin() { } else if !ctx.Darwin() && !ctx.Windows() { flags.LdFlags = append(flags.LdFlags, "-Wl,--no-undefined") } Loading Loading @@ -384,7 +380,7 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags { flags.LdFlags = append(flags.LdFlags, proptools.NinjaAndShellEscapeList(linker.Properties.Ldflags)...) if ctx.Host() { if ctx.Host() && !ctx.Windows() { rpath_prefix := `\$$ORIGIN/` if ctx.Darwin() { rpath_prefix = "@loader_path/" Loading Loading
cc/binary.go +1 −1 Original line number Diff line number Diff line Loading @@ -384,7 +384,7 @@ func (binary *binaryDecorator) link(ctx ModuleContext, TransformObjToDynamicBinary(ctx, objs.objFiles, sharedLibs, deps.StaticLibs, deps.LateStaticLibs, deps.WholeStaticLibs, linkerDeps, deps.CrtBegin, deps.CrtEnd, true, builderFlags, outputFile) builderFlags, outputFile, nil) objs.coverageFiles = append(objs.coverageFiles, deps.StaticLibObjs.coverageFiles...) objs.coverageFiles = append(objs.coverageFiles, deps.WholeStaticLibObjs.coverageFiles...) Loading
cc/builder.go +13 −7 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import ( "strings" "github.com/google/blueprint" "github.com/google/blueprint/pathtools" "android/soong/android" "android/soong/cc/config" Loading Loading @@ -597,7 +598,7 @@ func transformDarwinObjToStaticLib(ctx android.ModuleContext, objFiles android.P // and shared libraries, to a shared library (.so) or dynamic executable func TransformObjToDynamicBinary(ctx android.ModuleContext, objFiles, sharedLibs, staticLibs, lateStaticLibs, wholeStaticLibs, deps android.Paths, crtBegin, crtEnd android.OptionalPath, groupLate bool, flags builderFlags, outputFile android.WritablePath) { crtBegin, crtEnd android.OptionalPath, groupLate bool, flags builderFlags, outputFile android.WritablePath, implicitOutputs android.WritablePaths) { ldCmd := "${config.ClangBin}/clang++" Loading Loading @@ -634,7 +635,11 @@ func TransformObjToDynamicBinary(ctx android.ModuleContext, } for _, lib := range sharedLibs { libFlagsList = append(libFlagsList, lib.String()) libFile := lib.String() if ctx.Windows() { libFile = pathtools.ReplaceExtension(libFile, "a") } libFlagsList = append(libFlagsList, libFile) } deps = append(deps, staticLibs...) Loading @@ -648,6 +653,7 @@ func TransformObjToDynamicBinary(ctx android.ModuleContext, Rule: ld, Description: "link " + outputFile.Base(), Output: outputFile, ImplicitOutputs: implicitOutputs, Inputs: objFiles, Implicits: deps, Args: map[string]string{ Loading
cc/library.go +13 −4 Original line number Diff line number Diff line Loading @@ -347,9 +347,10 @@ func (library *libraryDecorator) linkerFlags(ctx ModuleContext, flags Flags) Fla ) } } else { f = append(f, "-shared", "-Wl,-soname,"+libName+flags.Toolchain.ShlibSuffix()) f = append(f, "-shared") if !ctx.Windows() { f = append(f, "-Wl,-soname,"+libName+flags.Toolchain.ShlibSuffix()) } } flags.LdFlags = append(f, flags.LdFlags...) Loading Loading @@ -673,6 +674,14 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext, outputFile := android.PathForModuleOut(ctx, fileName) ret := outputFile var implicitOutputs android.WritablePaths if ctx.Windows() { importLibraryPath := android.PathForModuleOut(ctx, pathtools.ReplaceExtension(fileName, "a")) flags.LdFlags = append(flags.LdFlags, "-Wl,--out-implib="+importLibraryPath.String()) implicitOutputs = append(implicitOutputs, importLibraryPath) } builderFlags := flagsToBuilderFlags(flags) // Optimize out relinking against shared libraries whose interface hasn't changed by Loading Loading @@ -724,7 +733,7 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext, TransformObjToDynamicBinary(ctx, objs.objFiles, sharedLibs, deps.StaticLibs, deps.LateStaticLibs, deps.WholeStaticLibs, linkerDeps, deps.CrtBegin, deps.CrtEnd, false, builderFlags, outputFile) linkerDeps, deps.CrtBegin, deps.CrtEnd, false, builderFlags, outputFile, implicitOutputs) objs.coverageFiles = append(objs.coverageFiles, deps.StaticLibObjs.coverageFiles...) objs.coverageFiles = append(objs.coverageFiles, deps.WholeStaticLibObjs.coverageFiles...) Loading
cc/linker.go +2 −6 Original line number Diff line number Diff line Loading @@ -290,10 +290,6 @@ func (linker *baseLinker) useClangLld(ctx ModuleContext) bool { if ctx.Darwin() { return false } // http://b/110800681 - lld cannot link Android's Windows modules yet. if ctx.Windows() { return false } if linker.Properties.Use_clang_lld != nil { return Bool(linker.Properties.Use_clang_lld) } Loading Loading @@ -347,7 +343,7 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags { // darwin defaults to treating undefined symbols as errors flags.LdFlags = append(flags.LdFlags, "-Wl,-undefined,dynamic_lookup") } } else if !ctx.Darwin() { } else if !ctx.Darwin() && !ctx.Windows() { flags.LdFlags = append(flags.LdFlags, "-Wl,--no-undefined") } Loading Loading @@ -384,7 +380,7 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags { flags.LdFlags = append(flags.LdFlags, proptools.NinjaAndShellEscapeList(linker.Properties.Ldflags)...) if ctx.Host() { if ctx.Host() && !ctx.Windows() { rpath_prefix := `\$$ORIGIN/` if ctx.Darwin() { rpath_prefix = "@loader_path/" Loading