Add fully qualified names of lincese modules as dependencies
This allows auto-generated modules to depend on the license modules that
are within a namespace. Note that the license dependency is
automatically done even if the module does not specify the licenses
property.
Test: m nothing --no-skip-soong-tests
Bug: 375053752
Change-Id: I331e4fae5c54b33723cd97266f646dbbd9d438fb
diff --git a/android/licenses.go b/android/licenses.go
index 949d678..53d0555 100644
--- a/android/licenses.go
+++ b/android/licenses.go
@@ -15,7 +15,10 @@
package android
import (
+ "fmt"
+ "path/filepath"
"reflect"
+ "strings"
"sync"
"github.com/google/blueprint"
@@ -155,7 +158,25 @@
}
licenses := getLicenses(ctx, m)
- ctx.AddVariationDependencies(nil, licensesTag, licenses...)
+
+ var fullyQualifiedLicenseNames []string
+ for _, license := range licenses {
+ fullyQualifiedLicenseName := license
+ if !strings.HasPrefix(license, "//") {
+ licenseModuleDir := ctx.OtherModuleDir(m)
+ for licenseModuleDir != "." && !ctx.OtherModuleExists(fmt.Sprintf("//%s:%s", licenseModuleDir, license)) {
+ licenseModuleDir = filepath.Dir(licenseModuleDir)
+ }
+ if licenseModuleDir == "." {
+ fullyQualifiedLicenseName = license
+ } else {
+ fullyQualifiedLicenseName = fmt.Sprintf("//%s:%s", licenseModuleDir, license)
+ }
+ }
+ fullyQualifiedLicenseNames = append(fullyQualifiedLicenseNames, fullyQualifiedLicenseName)
+ }
+
+ ctx.AddVariationDependencies(nil, licensesTag, fullyQualifiedLicenseNames...)
}
// Verifies the license and license_kind dependencies are each the correct kind of module.