Merge "Revert "Revert "Revert "Enable lld for windows""""

am: 46160c6423

Change-Id: Iafebab34bbcfa9a3d685b59b5b4fd2ca86c8ea44
This commit is contained in:
Josh Gao
2019-06-07 15:50:44 -07:00
committed by android-build-merger
4 changed files with 18 additions and 29 deletions

View File

@@ -384,7 +384,7 @@ func (binary *binaryDecorator) link(ctx ModuleContext,
TransformObjToDynamicBinary(ctx, objs.objFiles, sharedLibs, deps.StaticLibs, TransformObjToDynamicBinary(ctx, objs.objFiles, sharedLibs, deps.StaticLibs,
deps.LateStaticLibs, deps.WholeStaticLibs, linkerDeps, deps.CrtBegin, deps.CrtEnd, true, deps.LateStaticLibs, deps.WholeStaticLibs, linkerDeps, deps.CrtBegin, deps.CrtEnd, true,
builderFlags, outputFile, nil) builderFlags, outputFile)
objs.coverageFiles = append(objs.coverageFiles, deps.StaticLibObjs.coverageFiles...) objs.coverageFiles = append(objs.coverageFiles, deps.StaticLibObjs.coverageFiles...)
objs.coverageFiles = append(objs.coverageFiles, deps.WholeStaticLibObjs.coverageFiles...) objs.coverageFiles = append(objs.coverageFiles, deps.WholeStaticLibObjs.coverageFiles...)

View File

@@ -26,7 +26,6 @@ import (
"strings" "strings"
"github.com/google/blueprint" "github.com/google/blueprint"
"github.com/google/blueprint/pathtools"
"android/soong/android" "android/soong/android"
"android/soong/cc/config" "android/soong/cc/config"
@@ -612,7 +611,7 @@ func transformDarwinObjToStaticLib(ctx android.ModuleContext, objFiles android.P
// and shared libraries, to a shared library (.so) or dynamic executable // and shared libraries, to a shared library (.so) or dynamic executable
func TransformObjToDynamicBinary(ctx android.ModuleContext, func TransformObjToDynamicBinary(ctx android.ModuleContext,
objFiles, sharedLibs, staticLibs, lateStaticLibs, wholeStaticLibs, deps android.Paths, objFiles, sharedLibs, staticLibs, lateStaticLibs, wholeStaticLibs, deps android.Paths,
crtBegin, crtEnd android.OptionalPath, groupLate bool, flags builderFlags, outputFile android.WritablePath, implicitOutputs android.WritablePaths) { crtBegin, crtEnd android.OptionalPath, groupLate bool, flags builderFlags, outputFile android.WritablePath) {
ldCmd := "${config.ClangBin}/clang++" ldCmd := "${config.ClangBin}/clang++"
@@ -649,11 +648,7 @@ func TransformObjToDynamicBinary(ctx android.ModuleContext,
} }
for _, lib := range sharedLibs { for _, lib := range sharedLibs {
libFile := lib.String() libFlagsList = append(libFlagsList, lib.String())
if ctx.Windows() {
libFile = pathtools.ReplaceExtension(libFile, "lib")
}
libFlagsList = append(libFlagsList, libFile)
} }
deps = append(deps, staticLibs...) deps = append(deps, staticLibs...)
@@ -667,7 +662,6 @@ func TransformObjToDynamicBinary(ctx android.ModuleContext,
Rule: ld, Rule: ld,
Description: "link " + outputFile.Base(), Description: "link " + outputFile.Base(),
Output: outputFile, Output: outputFile,
ImplicitOutputs: implicitOutputs,
Inputs: objFiles, Inputs: objFiles,
Implicits: deps, Implicits: deps,
Args: map[string]string{ Args: map[string]string{

View File

@@ -360,10 +360,9 @@ func (library *libraryDecorator) linkerFlags(ctx ModuleContext, flags Flags) Fla
) )
} }
} else { } else {
f = append(f, "-shared") f = append(f,
if !ctx.Windows() { "-shared",
f = append(f, "-Wl,-soname,"+libName+flags.Toolchain.ShlibSuffix()) "-Wl,-soname,"+libName+flags.Toolchain.ShlibSuffix())
}
} }
flags.LdFlags = append(f, flags.LdFlags...) flags.LdFlags = append(f, flags.LdFlags...)
@@ -697,14 +696,6 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext,
outputFile := android.PathForModuleOut(ctx, fileName) outputFile := android.PathForModuleOut(ctx, fileName)
ret := outputFile ret := outputFile
var implicitOutputs android.WritablePaths
if ctx.Windows() {
importLibraryPath := android.PathForModuleOut(ctx, pathtools.ReplaceExtension(fileName, "lib"))
flags.LdFlags = append(flags.LdFlags, "-Wl,--out-implib="+importLibraryPath.String())
implicitOutputs = append(implicitOutputs, importLibraryPath)
}
builderFlags := flagsToBuilderFlags(flags) builderFlags := flagsToBuilderFlags(flags)
// Optimize out relinking against shared libraries whose interface hasn't changed by // Optimize out relinking against shared libraries whose interface hasn't changed by
@@ -756,7 +747,7 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext,
TransformObjToDynamicBinary(ctx, objs.objFiles, sharedLibs, TransformObjToDynamicBinary(ctx, objs.objFiles, sharedLibs,
deps.StaticLibs, deps.LateStaticLibs, deps.WholeStaticLibs, deps.StaticLibs, deps.LateStaticLibs, deps.WholeStaticLibs,
linkerDeps, deps.CrtBegin, deps.CrtEnd, false, builderFlags, outputFile, implicitOutputs) linkerDeps, deps.CrtBegin, deps.CrtEnd, false, builderFlags, outputFile)
objs.coverageFiles = append(objs.coverageFiles, deps.StaticLibObjs.coverageFiles...) objs.coverageFiles = append(objs.coverageFiles, deps.StaticLibObjs.coverageFiles...)
objs.coverageFiles = append(objs.coverageFiles, deps.WholeStaticLibObjs.coverageFiles...) objs.coverageFiles = append(objs.coverageFiles, deps.WholeStaticLibObjs.coverageFiles...)

View File

@@ -295,6 +295,10 @@ func (linker *baseLinker) useClangLld(ctx ModuleContext) bool {
if ctx.Darwin() { if ctx.Darwin() {
return false 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 { if linker.Properties.Use_clang_lld != nil {
return Bool(linker.Properties.Use_clang_lld) return Bool(linker.Properties.Use_clang_lld)
} }
@@ -348,7 +352,7 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags {
// darwin defaults to treating undefined symbols as errors // darwin defaults to treating undefined symbols as errors
flags.LdFlags = append(flags.LdFlags, "-Wl,-undefined,dynamic_lookup") flags.LdFlags = append(flags.LdFlags, "-Wl,-undefined,dynamic_lookup")
} }
} else if !ctx.Darwin() && !ctx.Windows() { } else if !ctx.Darwin() {
flags.LdFlags = append(flags.LdFlags, "-Wl,--no-undefined") flags.LdFlags = append(flags.LdFlags, "-Wl,--no-undefined")
} }
@@ -385,7 +389,7 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags {
flags.LdFlags = append(flags.LdFlags, proptools.NinjaAndShellEscapeList(linker.Properties.Ldflags)...) flags.LdFlags = append(flags.LdFlags, proptools.NinjaAndShellEscapeList(linker.Properties.Ldflags)...)
if ctx.Host() && !ctx.Windows() { if ctx.Host() {
rpath_prefix := `\$$ORIGIN/` rpath_prefix := `\$$ORIGIN/`
if ctx.Darwin() { if ctx.Darwin() {
rpath_prefix = "@loader_path/" rpath_prefix = "@loader_path/"