Add dist support to Soong am: 569edc5f66
am: 6b30a47df4
Change-Id: Ic138b97024806fb900d1ce4553aced286e5a4853
This commit is contained in:
@@ -151,6 +151,7 @@ func (library *libraryDecorator) AndroidMk(ctx AndroidMkContext, ret *android.An
|
||||
ret.Class = "HEADER_LIBRARIES"
|
||||
}
|
||||
|
||||
ret.DistFile = library.distFile
|
||||
ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) {
|
||||
library.androidMkWriteExportedFlags(w)
|
||||
fmt.Fprintln(w, "LOCAL_ADDITIONAL_DEPENDENCIES := ")
|
||||
@@ -194,6 +195,7 @@ func (binary *binaryDecorator) AndroidMk(ctx AndroidMkContext, ret *android.Andr
|
||||
ctx.subAndroidMk(ret, binary.baseInstaller)
|
||||
|
||||
ret.Class = "EXECUTABLES"
|
||||
ret.DistFile = binary.distFile
|
||||
ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) {
|
||||
fmt.Fprintln(w, "LOCAL_SOONG_UNSTRIPPED_BINARY :=", binary.unstrippedOutputFile.String())
|
||||
if len(binary.symlinks) > 0 {
|
||||
|
24
cc/binary.go
24
cc/binary.go
@@ -88,6 +88,9 @@ type binaryDecorator struct {
|
||||
|
||||
// Output archive of gcno coverage information
|
||||
coverageOutputFile android.OptionalPath
|
||||
|
||||
// Location of the file that should be copied to dist dir when requested
|
||||
distFile android.OptionalPath
|
||||
}
|
||||
|
||||
var _ linker = (*binaryDecorator)(nil)
|
||||
@@ -330,10 +333,23 @@ func (binary *binaryDecorator) link(ctx ModuleContext,
|
||||
flagsToBuilderFlags(flags), afterPrefixSymbols)
|
||||
}
|
||||
|
||||
if Bool(binary.baseLinker.Properties.Use_version_lib) && ctx.Host() {
|
||||
versionedOutputFile := outputFile
|
||||
outputFile = android.PathForModuleOut(ctx, "unversioned", fileName)
|
||||
binary.injectVersionSymbol(ctx, outputFile, versionedOutputFile)
|
||||
if Bool(binary.baseLinker.Properties.Use_version_lib) {
|
||||
if ctx.Host() {
|
||||
versionedOutputFile := outputFile
|
||||
outputFile = android.PathForModuleOut(ctx, "unversioned", fileName)
|
||||
binary.injectVersionSymbol(ctx, outputFile, versionedOutputFile)
|
||||
} else {
|
||||
versionedOutputFile := android.PathForModuleOut(ctx, "versioned", fileName)
|
||||
binary.distFile = android.OptionalPathForPath(versionedOutputFile)
|
||||
|
||||
if binary.stripper.needsStrip(ctx) {
|
||||
out := android.PathForModuleOut(ctx, "versioned-stripped", fileName)
|
||||
binary.distFile = android.OptionalPathForPath(out)
|
||||
binary.stripper.strip(ctx, versionedOutputFile, out, builderFlags)
|
||||
}
|
||||
|
||||
binary.injectVersionSymbol(ctx, outputFile, versionedOutputFile)
|
||||
}
|
||||
}
|
||||
|
||||
if ctx.Os() == android.LinuxBionic && !binary.static() {
|
||||
|
@@ -23,9 +23,19 @@
|
||||
namespace android {
|
||||
namespace build {
|
||||
|
||||
#define PLACEHOLDER "SOONG BUILD NUMBER PLACEHOLDER"
|
||||
|
||||
extern "C" {
|
||||
char soong_build_number[128] = PLACEHOLDER;
|
||||
}
|
||||
|
||||
#ifdef __ANDROID__
|
||||
|
||||
std::string GetBuildNumber() {
|
||||
if (strcmp(PLACEHOLDER, soong_build_number) != 0) {
|
||||
return soong_build_number;
|
||||
}
|
||||
|
||||
const prop_info* pi = __system_property_find("ro.build.version.incremental");
|
||||
if (pi == nullptr) return "";
|
||||
|
||||
@@ -42,10 +52,6 @@ std::string GetBuildNumber() {
|
||||
|
||||
#else
|
||||
|
||||
extern "C" {
|
||||
char soong_build_number[128] = "SOONG BUILD NUMBER PLACEHOLDER";
|
||||
}
|
||||
|
||||
std::string GetBuildNumber() {
|
||||
return soong_build_number;
|
||||
}
|
||||
|
@@ -2,10 +2,53 @@ cc_defaults {
|
||||
name: "build_version_test_defaults",
|
||||
use_version_lib: true,
|
||||
host_supported: true,
|
||||
dist: {
|
||||
targets: ["test_build_version_test"],
|
||||
},
|
||||
target: {
|
||||
android_arm: {
|
||||
dist: {
|
||||
dir: "android/arm",
|
||||
},
|
||||
},
|
||||
android_arm64: {
|
||||
dist: {
|
||||
dir: "android/arm64",
|
||||
},
|
||||
},
|
||||
android_x86: {
|
||||
dist: {
|
||||
dir: "android/x86",
|
||||
},
|
||||
},
|
||||
android_x86_64: {
|
||||
dist: {
|
||||
dir: "android/x86_64",
|
||||
},
|
||||
},
|
||||
darwin: {
|
||||
dist: {
|
||||
dir: "host/",
|
||||
},
|
||||
},
|
||||
linux_glibc_x86: {
|
||||
dist: {
|
||||
dir: "host32/",
|
||||
},
|
||||
},
|
||||
linux_glibc_x86_64: {
|
||||
dist: {
|
||||
dir: "host/",
|
||||
},
|
||||
},
|
||||
windows: {
|
||||
enabled: true,
|
||||
},
|
||||
windows_x86_64: {
|
||||
dist: {
|
||||
dest: "win64/build_ver_test.exe",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -20,6 +63,11 @@ cc_test {
|
||||
not_windows: {
|
||||
shared_libs: ["libbuild_version_test"],
|
||||
},
|
||||
host: {
|
||||
dist: {
|
||||
suffix: "_host",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user