summaryrefslogtreecommitdiff
path: root/fsgen/filesystem_creator.go
diff options
context:
space:
mode:
author Spandan Das <spandandas@google.com> 2024-11-01 16:57:47 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2024-11-01 16:57:47 +0000
commitb6d77bf6b7efd9850aa5587a805a173e143ee5cf (patch)
treefdbab4ce0df22cae03a1145e377d75958ab16789 /fsgen/filesystem_creator.go
parentafd8aacf5850899cf7ae5bf8d7b88135d6e5fc6a (diff)
parent8fe68dcfd71efa99aebf7f5ef2f3b19d78621a24 (diff)
Merge changes from topic "linker_config_product_soong" into main
* changes: Create linker_config_srcs for autogenerated product partition Dedupe logic to generate linker.config.pb
Diffstat (limited to 'fsgen/filesystem_creator.go')
-rw-r--r--fsgen/filesystem_creator.go25
1 files changed, 18 insertions, 7 deletions
diff --git a/fsgen/filesystem_creator.go b/fsgen/filesystem_creator.go
index e470e91ca..bf5dfd92c 100644
--- a/fsgen/filesystem_creator.go
+++ b/fsgen/filesystem_creator.go
@@ -474,8 +474,8 @@ func (f *filesystemCreator) createPartition(ctx android.LoadHookContext, partiti
return false
}
- if partitionType == "vendor" {
- fsProps.Linker_config_srcs = f.createLinkerConfigSourceFilegroups(ctx)
+ if partitionType == "vendor" || partitionType == "product" {
+ fsProps.Linker_config_srcs = f.createLinkerConfigSourceFilegroups(ctx, partitionType)
}
var module android.Module
@@ -509,18 +509,29 @@ func (f *filesystemCreator) createPartition(ctx android.LoadHookContext, partiti
return true
}
-// createLinkerConfigSourceFilegroups creates filegroup modules to generate linker.config.pb for _vendor_
-// It creates a filegroup for each file in PRODUCT_VENDOR_LINKER_CONFIG_FRAGMENTS.
+// createLinkerConfigSourceFilegroups creates filegroup modules to generate linker.config.pb for the following partitions
+// 1. vendor: Using PRODUCT_VENDOR_LINKER_CONFIG_FRAGMENTS (space separated file list)
+// 1. product: Using PRODUCT_PRODUCT_LINKER_CONFIG_FRAGMENTS (space separated file list)
+// It creates a filegroup for each file in the fragment list
// The filegroup modules are then added to `linker_config_srcs` of the autogenerated vendor `android_filesystem`.
-func (f *filesystemCreator) createLinkerConfigSourceFilegroups(ctx android.LoadHookContext) []string {
+func (f *filesystemCreator) createLinkerConfigSourceFilegroups(ctx android.LoadHookContext, partitionType string) []string {
ret := []string{}
partitionVars := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse
- if linkerConfigSrcs := android.FirstUniqueStrings(partitionVars.VendorLinkerConfigSrcs); len(linkerConfigSrcs) > 0 {
+ var linkerConfigSrcs []string
+ if partitionType == "vendor" {
+ linkerConfigSrcs = android.FirstUniqueStrings(partitionVars.VendorLinkerConfigSrcs)
+ } else if partitionType == "product" {
+ linkerConfigSrcs = android.FirstUniqueStrings(partitionVars.ProductLinkerConfigSrcs)
+ } else {
+ ctx.ModuleErrorf("linker.config.pb is only supported for vendor and product partitions. For system partition, use `android_system_image`")
+ }
+
+ if len(linkerConfigSrcs) > 0 {
// Create a filegroup, and add `:<filegroup_name>` to ret.
for index, linkerConfigSrc := range linkerConfigSrcs {
dir := filepath.Dir(linkerConfigSrc)
base := filepath.Base(linkerConfigSrc)
- fgName := generatedModuleName(ctx.Config(), "vendor-linker-config-src"+strconv.Itoa(index))
+ fgName := generatedModuleName(ctx.Config(), fmt.Sprintf("%s-linker-config-src%s", partitionType, strconv.Itoa(index)))
srcs := []string{base}
fgProps := &struct {
Name *string