diff options
author | 2024-11-01 16:57:47 +0000 | |
---|---|---|
committer | 2024-11-01 16:57:47 +0000 | |
commit | b6d77bf6b7efd9850aa5587a805a173e143ee5cf (patch) | |
tree | fdbab4ce0df22cae03a1145e377d75958ab16789 /fsgen/filesystem_creator.go | |
parent | afd8aacf5850899cf7ae5bf8d7b88135d6e5fc6a (diff) | |
parent | 8fe68dcfd71efa99aebf7f5ef2f3b19d78621a24 (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.go | 25 |
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 |