diff options
| -rw-r--r-- | android/module.go | 5 | ||||
| -rw-r--r-- | cc/vndk.go | 46 | 
2 files changed, 38 insertions, 13 deletions
diff --git a/android/module.go b/android/module.go index 76fe8dc45..ba474530d 100644 --- a/android/module.go +++ b/android/module.go @@ -550,6 +550,7 @@ type Module interface {  	ExportedToMake() bool  	InitRc() Paths  	VintfFragments() Paths +	EffectiveLicenseKinds() []string  	EffectiveLicenseFiles() Paths  	AddProperties(props ...interface{}) @@ -2024,6 +2025,10 @@ func (m *ModuleBase) ExportedToMake() bool {  	return m.commonProperties.NamespaceExportedToMake  } +func (m *ModuleBase) EffectiveLicenseKinds() []string { +	return m.commonProperties.Effective_license_kinds +} +  func (m *ModuleBase) EffectiveLicenseFiles() Paths {  	result := make(Paths, 0, len(m.commonProperties.Effective_license_text))  	for _, p := range m.commonProperties.Effective_license_text { diff --git a/cc/vndk.go b/cc/vndk.go index 3b7c87dea..be66cd79f 100644 --- a/cc/vndk.go +++ b/cc/vndk.go @@ -674,8 +674,12 @@ func (c *vndkSnapshotSingleton) GenerateBuildActions(ctx android.SingletonContex  	snapshotArchDir := filepath.Join(snapshotDir, ctx.DeviceConfig().DeviceArch())  	configsDir := filepath.Join(snapshotArchDir, "configs") +	noticeDir := filepath.Join(snapshotArchDir, "NOTICE_FILES")  	includeDir := filepath.Join(snapshotArchDir, "include") +	// set of notice files copied. +	noticeBuilt := make(map[string]bool) +  	// paths of VNDK modules for GPL license checking  	modulePaths := make(map[string]string) @@ -700,28 +704,36 @@ func (c *vndkSnapshotSingleton) GenerateBuildActions(ctx android.SingletonContex  		snapshotLibOut := filepath.Join(snapshotArchDir, targetArch, "shared", vndkType, libPath.Base())  		ret = append(ret, snapshot.CopyFileRule(pctx, ctx, libPath, snapshotLibOut)) +		// json struct to export snapshot information +		prop := struct { +			LicenseKinds        []string `json:",omitempty"` +			LicenseTexts        []string `json:",omitempty"` +			ExportedDirs        []string `json:",omitempty"` +			ExportedSystemDirs  []string `json:",omitempty"` +			ExportedFlags       []string `json:",omitempty"` +			RelativeInstallPath string   `json:",omitempty"` +		}{} + +		prop.LicenseKinds = m.EffectiveLicenseKinds() +		prop.LicenseTexts = m.EffectiveLicenseFiles().Strings() +  		if ctx.Config().VndkSnapshotBuildArtifacts() { -			prop := struct { -				ExportedDirs        []string `json:",omitempty"` -				ExportedSystemDirs  []string `json:",omitempty"` -				ExportedFlags       []string `json:",omitempty"` -				RelativeInstallPath string   `json:",omitempty"` -			}{}  			exportedInfo := ctx.ModuleProvider(m, FlagExporterInfoProvider).(FlagExporterInfo)  			prop.ExportedFlags = exportedInfo.Flags  			prop.ExportedDirs = exportedInfo.IncludeDirs.Strings()  			prop.ExportedSystemDirs = exportedInfo.SystemIncludeDirs.Strings()  			prop.RelativeInstallPath = m.RelativeInstallPath() +		} -			propOut := snapshotLibOut + ".json" +		propOut := snapshotLibOut + ".json" -			j, err := json.Marshal(prop) -			if err != nil { -				ctx.Errorf("json marshal to %q failed: %#v", propOut, err) -				return nil, false -			} -			ret = append(ret, snapshot.WriteStringToFileRule(ctx, string(j), propOut)) +		j, err := json.Marshal(prop) +		if err != nil { +			ctx.Errorf("json marshal to %q failed: %#v", propOut, err) +			return nil, false  		} +		ret = append(ret, snapshot.WriteStringToFileRule(ctx, string(j), propOut)) +  		return ret, true  	} @@ -761,6 +773,14 @@ func (c *vndkSnapshotSingleton) GenerateBuildActions(ctx android.SingletonContex  		moduleNames[stem] = ctx.ModuleName(m)  		modulePaths[stem] = ctx.ModuleDir(m) +		for _, notice := range m.EffectiveLicenseFiles() { +			if _, ok := noticeBuilt[notice.String()]; !ok { +				noticeBuilt[notice.String()] = true +				snapshotOutputs = append(snapshotOutputs, snapshot.CopyFileRule( +					pctx, ctx, notice, filepath.Join(noticeDir, notice.String()))) +			} +		} +  		if ctx.Config().VndkSnapshotBuildArtifacts() {  			headers = append(headers, m.SnapshotHeaders()...)  		}  |