Support filegroups for version_script and related properties

Bug: 71715793
Test: m checkbuild
Change-Id: Ibf78a5ec88e743f29504c91057d2cfced667c8b4
diff --git a/cc/binary.go b/cc/binary.go
index 206237a..630a68d 100644
--- a/cc/binary.go
+++ b/cc/binary.go
@@ -158,6 +158,9 @@
 		ctx.ModuleErrorf("statically linking libc to dynamic executable, please remove libc\n" +
 			"from static libs or set static_executable: true")
 	}
+
+	android.ExtractSourceDeps(ctx, binary.Properties.Version_script)
+
 	return deps
 }
 
@@ -277,7 +280,7 @@
 func (binary *binaryDecorator) link(ctx ModuleContext,
 	flags Flags, deps PathDeps, objs Objects) android.Path {
 
-	versionScript := android.OptionalPathForModuleSrc(ctx, binary.Properties.Version_script)
+	versionScript := ctx.ExpandOptionalSource(binary.Properties.Version_script, "version_script")
 	fileName := binary.getStem(ctx) + flags.Toolchain.ExecutableSuffix()
 	outputFile := android.PathForModuleOut(ctx, fileName)
 	ret := outputFile
diff --git a/cc/library.go b/cc/library.go
index 54c5476..f8e20e2 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -476,6 +476,13 @@
 		deps.SharedLibs = removeListFromList(deps.SharedLibs, library.baseLinker.Properties.Target.Vendor.Exclude_shared_libs)
 		deps.StaticLibs = removeListFromList(deps.StaticLibs, library.baseLinker.Properties.Target.Vendor.Exclude_static_libs)
 	}
+
+	android.ExtractSourceDeps(ctx, library.Properties.Version_script)
+	android.ExtractSourceDeps(ctx, library.Properties.Unexported_symbols_list)
+	android.ExtractSourceDeps(ctx, library.Properties.Force_symbols_not_weak_list)
+	android.ExtractSourceDeps(ctx, library.Properties.Force_symbols_weak_list)
+	android.ExtractSourceDeps(ctx, library.Properties.Target.Vendor.Version_script)
+
 	return deps
 }
 
@@ -507,12 +514,12 @@
 	var linkerDeps android.Paths
 	linkerDeps = append(linkerDeps, flags.LdFlagsDeps...)
 
-	versionScript := android.OptionalPathForModuleSrc(ctx, library.Properties.Version_script)
-	unexportedSymbols := android.OptionalPathForModuleSrc(ctx, library.Properties.Unexported_symbols_list)
-	forceNotWeakSymbols := android.OptionalPathForModuleSrc(ctx, library.Properties.Force_symbols_not_weak_list)
-	forceWeakSymbols := android.OptionalPathForModuleSrc(ctx, library.Properties.Force_symbols_weak_list)
+	versionScript := ctx.ExpandOptionalSource(library.Properties.Version_script, "version_script")
+	unexportedSymbols := ctx.ExpandOptionalSource(library.Properties.Unexported_symbols_list, "unexported_symbols_list")
+	forceNotWeakSymbols := ctx.ExpandOptionalSource(library.Properties.Force_symbols_not_weak_list, "force_symbols_not_weak_list")
+	forceWeakSymbols := ctx.ExpandOptionalSource(library.Properties.Force_symbols_weak_list, "force_symbols_weak_list")
 	if ctx.useVndk() && library.Properties.Target.Vendor.Version_script != nil {
-		versionScript = android.OptionalPathForModuleSrc(ctx, library.Properties.Target.Vendor.Version_script)
+		versionScript = ctx.ExpandOptionalSource(library.Properties.Target.Vendor.Version_script, "target.vendor.version_script")
 	}
 	if !ctx.Darwin() {
 		if versionScript.Valid() {