Fix missing NOTICE targets for static libs that aren't available to
platform. The NOTICE file generation depends on the NOTICE targets for all static library dependencies. If such a dependency didn't have //apex_available:platform it didn't get any AndroidMk entry and hence no NOTICE target via soong_cc_prebuilt.mk. If it was then depended upon by a binary or library that is accessible to platform, the NOTICE dependency failed. Normally such a dependency is invalid, but there are corner cases where binaries go neither into platform nor any APEX module, and they can legitimately have such dependencies (cf. b/152241137). With this CL requests to skip installation of such a static libraries are ignored so that they get AndroidMk entries, which will always have LOCAL_UNINSTALLABLE_MODULE set. Test: "m simpleperf_ndk" with https://r.android.com/1273016, which removes //apex_available:platform from libs that simpleperf_ndk depends on statically. Bug: 152241137 Bug: 149217815 Change-Id: If36e85dd16ade56d4ec1d6744811df5a15b6242c
This commit is contained in:
@@ -248,6 +248,10 @@ func (library *libraryDecorator) AndroidMkEntries(ctx AndroidMkContext, entries
|
||||
entries.SubName = "." + library.stubsVersion()
|
||||
}
|
||||
entries.ExtraEntries = append(entries.ExtraEntries, func(entries *android.AndroidMkEntries) {
|
||||
// Note library.skipInstall() has a special case to get here for static
|
||||
// libraries that otherwise would have skipped installation and hence not
|
||||
// have executed AndroidMkEntries at all. The reason is to ensure they get
|
||||
// a NOTICE file make target which other libraries might depend on.
|
||||
entries.SetBool("LOCAL_UNINSTALLABLE_MODULE", true)
|
||||
if library.buildStubs() {
|
||||
entries.SetBool("LOCAL_NO_NOTICE_FILE", true)
|
||||
|
Reference in New Issue
Block a user