Add version_script property
Add version_script property to cc_library to pass a file to
the linker with --version-script.
Change-Id: Ieefb04e15c8dfa72c2eb63b4349f8860222662b2
diff --git a/cc/builder.go b/cc/builder.go
index ab0e40c..e35cebb 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -277,7 +277,7 @@
// Generate a rule for compiling multiple .o files, plus static libraries, whole static libraries,
// and shared libraires, to a shared library (.so) or dynamic executable
func TransformObjToDynamicBinary(ctx common.AndroidModuleContext,
- objFiles, sharedLibs, staticLibs, lateStaticLibs, wholeStaticLibs []string,
+ objFiles, sharedLibs, staticLibs, lateStaticLibs, wholeStaticLibs, deps []string,
crtBegin, crtEnd string, groupLate bool, flags builderFlags, outputFile string) {
var ldCmd string
@@ -323,7 +323,7 @@
libFlagsList = append(libFlagsList, "-Wl,--end-group")
}
- deps := []string{ldCmd}
+ deps = append(deps, ldCmd)
deps = append(deps, sharedLibs...)
deps = append(deps, staticLibs...)
deps = append(deps, lateStaticLibs...)
diff --git a/cc/cc.go b/cc/cc.go
index 2cc4ffb..4b78479 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -947,6 +947,9 @@
Static_libs []string `android:"arch_variant"`
Shared_libs []string `android:"arch_variant"`
} `android:"arch_variant"`
+
+ // local file name to pass to the linker as --version_script
+ Version_script string `android:"arch_variant"`
}
type CCLibrary struct {
@@ -1128,8 +1131,16 @@
outputFile := filepath.Join(common.ModuleOutDir(ctx), ctx.ModuleName()+sharedLibraryExtension)
+ var linkerDeps []string
+
+ if c.LibraryProperties.Version_script != "" {
+ versionScript := filepath.Join(common.ModuleSrcDir(ctx), c.LibraryProperties.Version_script)
+ sharedFlags.LdFlags = append(sharedFlags.LdFlags, "-Wl,--version-script,"+versionScript)
+ linkerDeps = append(linkerDeps, versionScript)
+ }
+
TransformObjToDynamicBinary(ctx, objFiles, deps.SharedLibs, deps.StaticLibs,
- deps.LateStaticLibs, deps.WholeStaticLibs, deps.CrtBegin, deps.CrtEnd, false,
+ deps.LateStaticLibs, deps.WholeStaticLibs, linkerDeps, deps.CrtBegin, deps.CrtEnd, false,
ccFlagsToBuilderFlags(flags), outputFile)
c.out = outputFile
@@ -1398,8 +1409,10 @@
ccFlagsToBuilderFlags(flags), afterPrefixSymbols)
}
+ var linkerDeps []string
+
TransformObjToDynamicBinary(ctx, objFiles, deps.SharedLibs, deps.StaticLibs,
- deps.LateStaticLibs, deps.WholeStaticLibs, deps.CrtBegin, deps.CrtEnd, true,
+ deps.LateStaticLibs, deps.WholeStaticLibs, linkerDeps, deps.CrtBegin, deps.CrtEnd, true,
ccFlagsToBuilderFlags(flags), outputFile)
}