Add dist support to Soong

When dist'ing a library or binary that has use_version_lib set, always
distribute the stamped version, even for the device.

Test: m test_build_version_test dist
Change-Id: I2995ec516b1d182ce18f099aeaa4d186ffbcf01f
This commit is contained in:
Dan Willemsen
2018-11-19 09:33:29 -08:00
parent bba551c1fa
commit 569edc5f66
7 changed files with 187 additions and 16 deletions

View File

@@ -267,6 +267,9 @@ type libraryDecorator struct {
// Location of the linked, unstripped library for shared libraries
unstrippedOutputFile android.Path
// Location of the file that should be copied to dist dir when requested
distFile android.OptionalPath
versionScriptPath android.ModuleGenPath
// Decorated interafaces
@@ -542,10 +545,16 @@ func (library *libraryDecorator) linkStatic(ctx ModuleContext,
outputFile := android.PathForModuleOut(ctx, fileName)
builderFlags := flagsToBuilderFlags(flags)
if Bool(library.baseLinker.Properties.Use_version_lib) && ctx.Host() {
versionedOutputFile := outputFile
outputFile = android.PathForModuleOut(ctx, "unversioned", fileName)
library.injectVersionSymbol(ctx, outputFile, versionedOutputFile)
if Bool(library.baseLinker.Properties.Use_version_lib) {
if ctx.Host() {
versionedOutputFile := outputFile
outputFile = android.PathForModuleOut(ctx, "unversioned", fileName)
library.injectVersionSymbol(ctx, outputFile, versionedOutputFile)
} else {
versionedOutputFile := android.PathForModuleOut(ctx, "versioned", fileName)
library.distFile = android.OptionalPathForPath(versionedOutputFile)
library.injectVersionSymbol(ctx, outputFile, versionedOutputFile)
}
}
TransformObjToStaticLib(ctx, library.objects.objFiles, builderFlags, outputFile, objs.tidyFiles)
@@ -619,10 +628,23 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext,
library.unstrippedOutputFile = outputFile
if Bool(library.baseLinker.Properties.Use_version_lib) && ctx.Host() {
versionedOutputFile := outputFile
outputFile = android.PathForModuleOut(ctx, "unversioned", fileName)
library.injectVersionSymbol(ctx, outputFile, versionedOutputFile)
if Bool(library.baseLinker.Properties.Use_version_lib) {
if ctx.Host() {
versionedOutputFile := outputFile
outputFile = android.PathForModuleOut(ctx, "unversioned", fileName)
library.injectVersionSymbol(ctx, outputFile, versionedOutputFile)
} else {
versionedOutputFile := android.PathForModuleOut(ctx, "versioned", fileName)
library.distFile = android.OptionalPathForPath(versionedOutputFile)
if library.stripper.needsStrip(ctx) {
out := android.PathForModuleOut(ctx, "versioned-stripped", fileName)
library.distFile = android.OptionalPathForPath(out)
library.stripper.strip(ctx, versionedOutputFile, out, builderFlags)
}
library.injectVersionSymbol(ctx, outputFile, versionedOutputFile)
}
}
sharedLibs := deps.SharedLibs