Merge "Add CcUnstrippedInfo provider and use it in mixed builds"
This commit is contained in:
13
cc/binary.go
13
cc/binary.go
@@ -577,25 +577,20 @@ var _ BazelHandler = (*ccBinaryBazelHandler)(nil)
|
||||
|
||||
func (handler *ccBinaryBazelHandler) QueueBazelCall(ctx android.BaseModuleContext, label string) {
|
||||
bazelCtx := ctx.Config().BazelContext
|
||||
bazelCtx.QueueBazelRequest(label, cquery.GetOutputFiles, android.GetConfigKey(ctx))
|
||||
bazelCtx.QueueBazelRequest(label, cquery.GetCcUnstrippedInfo, android.GetConfigKey(ctx))
|
||||
}
|
||||
|
||||
func (handler *ccBinaryBazelHandler) ProcessBazelQueryResponse(ctx android.ModuleContext, label string) {
|
||||
bazelCtx := ctx.Config().BazelContext
|
||||
filePaths, err := bazelCtx.GetOutputFiles(label, android.GetConfigKey(ctx))
|
||||
info, err := bazelCtx.GetCcUnstrippedInfo(label, android.GetConfigKey(ctx))
|
||||
if err != nil {
|
||||
ctx.ModuleErrorf(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if len(filePaths) != 1 {
|
||||
ctx.ModuleErrorf("expected exactly one output file for '%s', but got %s", label, filePaths)
|
||||
return
|
||||
}
|
||||
outputFilePath := android.PathForBazelOut(ctx, filePaths[0])
|
||||
outputFilePath := android.PathForBazelOut(ctx, info.OutputFile)
|
||||
handler.module.outputFile = android.OptionalPathForPath(outputFilePath)
|
||||
// TODO(b/220164721): We need to decide if we should return the stripped as the unstripped.
|
||||
handler.module.linker.(*binaryDecorator).unstrippedOutputFile = outputFilePath
|
||||
handler.module.linker.(*binaryDecorator).unstrippedOutputFile = android.PathForBazelOut(ctx, info.UnstrippedOutput)
|
||||
}
|
||||
|
||||
func binaryBp2buildAttrs(ctx android.TopDownMutatorContext, m *Module) binaryAttributes {
|
||||
|
@@ -15,6 +15,7 @@
|
||||
package cc
|
||||
|
||||
import (
|
||||
"android/soong/bazel/cquery"
|
||||
"testing"
|
||||
|
||||
"android/soong/android"
|
||||
@@ -30,8 +31,11 @@ cc_binary {
|
||||
config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
|
||||
config.BazelContext = android.MockBazelContext{
|
||||
OutputBaseDir: "outputbase",
|
||||
LabelToOutputFiles: map[string][]string{
|
||||
"//foo/bar:bar": []string{"foo"},
|
||||
LabelToCcBinary: map[string]cquery.CcUnstrippedInfo{
|
||||
"//foo/bar:bar": cquery.CcUnstrippedInfo{
|
||||
OutputFile: "foo",
|
||||
UnstrippedOutput: "foo.unstripped",
|
||||
},
|
||||
},
|
||||
}
|
||||
ctx := testCcWithConfig(t, config)
|
||||
@@ -46,7 +50,7 @@ cc_binary {
|
||||
android.AssertDeepEquals(t, "output files", expectedOutputFiles, outputFiles.Strings())
|
||||
|
||||
unStrippedFilePath := binMod.(*Module).UnstrippedOutputFile()
|
||||
expectedUnStrippedFile := "outputbase/execroot/__main__/foo"
|
||||
expectedUnStrippedFile := "outputbase/execroot/__main__/foo.unstripped"
|
||||
android.AssertStringEquals(t, "Unstripped output file", expectedUnStrippedFile, unStrippedFilePath.String())
|
||||
}
|
||||
|
||||
|
@@ -885,7 +885,7 @@ func (handler *ccLibraryBazelHandler) generateSharedBazelBuildActions(ctx androi
|
||||
outputFilePath := android.PathForBazelOut(ctx, rootDynamicLibraries[0])
|
||||
handler.module.outputFile = android.OptionalPathForPath(outputFilePath)
|
||||
|
||||
handler.module.linker.(*libraryDecorator).unstrippedOutputFile = outputFilePath
|
||||
handler.module.linker.(*libraryDecorator).unstrippedOutputFile = android.PathForBazelOut(ctx, ccInfo.UnstrippedOutput)
|
||||
|
||||
var tocFile android.OptionalPath
|
||||
if len(ccInfo.TocFile) > 0 {
|
||||
|
@@ -259,6 +259,7 @@ cc_library {
|
||||
SystemIncludes: []string{"system_include"},
|
||||
Headers: []string{"foo.h"},
|
||||
RootDynamicLibraries: []string{"foo.so"},
|
||||
UnstrippedOutput: "foo_unstripped.so",
|
||||
},
|
||||
"//foo/bar:bar_bp2build_cc_library_static": cquery.CcInfo{
|
||||
CcObjectFiles: []string{"foo.o"},
|
||||
@@ -294,6 +295,7 @@ cc_library {
|
||||
expectedOutputFiles = []string{"outputbase/execroot/__main__/foo.so"}
|
||||
android.AssertDeepEquals(t, "output files", expectedOutputFiles, outputFiles.Strings())
|
||||
|
||||
android.AssertStringEquals(t, "unstripped shared library", "outputbase/execroot/__main__/foo_unstripped.so", sharedFoo.(*Module).linker.unstrippedOutputFilePath().String())
|
||||
flagExporter = ctx.ModuleProvider(sharedFoo, FlagExporterInfoProvider).(FlagExporterInfo)
|
||||
android.AssertPathsRelativeToTopEquals(t, "exported include dirs", []string{"outputbase/execroot/__main__/include"}, flagExporter.IncludeDirs)
|
||||
android.AssertPathsRelativeToTopEquals(t, "exported system include dirs", []string{"outputbase/execroot/__main__/system_include"}, flagExporter.SystemIncludeDirs)
|
||||
|
Reference in New Issue
Block a user