Stop using GCC in toolchain_library
Instead, hardcode the ~dozen paths into build/soong/Android.bp, which
will unblock removing more GCC support.
Bug: 114286031
Test: m
Change-Id: I2508432e00b1469141f01e667f3c6a2fe30cd805
diff --git a/cc/builder.go b/cc/builder.go
index 58196f4..d1bc23f 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -127,17 +127,6 @@
Command: "rm -f $out && touch $out",
})
- _ = pctx.SourcePathVariable("copyGccLibPath", "build/soong/scripts/copygcclib.sh")
-
- copyGccLib = pctx.AndroidStaticRule("copyGccLib",
- blueprint.RuleParams{
- Depfile: "${out}.d",
- Deps: blueprint.DepsGCC,
- Command: "$copyGccLibPath $out $ccCmd $cFlags -print-file-name=${libName}",
- CommandDeps: []string{"$copyGccLibPath", "$ccCmd"},
- },
- "ccCmd", "cFlags", "libName")
-
_ = pctx.SourcePathVariable("tocPath", "build/soong/scripts/toc.sh")
toc = pctx.AndroidStaticRule("toc",
@@ -880,21 +869,6 @@
return android.OptionalPath{}
}
-func CopyGccLib(ctx android.ModuleContext, libName string,
- flags builderFlags, outputFile android.WritablePath) {
-
- ctx.Build(pctx, android.BuildParams{
- Rule: copyGccLib,
- Description: "copy gcc library " + libName,
- Output: outputFile,
- Args: map[string]string{
- "ccCmd": gccCmd(flags.toolchain, "gcc"),
- "cFlags": flags.globalFlags,
- "libName": libName,
- },
- })
-}
-
func gccCmd(toolchain config.Toolchain, cmd string) string {
return filepath.Join(toolchain.GccRoot(), "bin", toolchain.GccTriple()+"-"+cmd)
}
diff --git a/cc/cc_test.go b/cc/cc_test.go
index 3d5dfb1..01beb66 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -76,18 +76,21 @@
name: "libatomic",
vendor_available: true,
recovery_available: true,
+ src: "",
}
toolchain_library {
name: "libcompiler_rt-extras",
vendor_available: true,
recovery_available: true,
+ src: "",
}
toolchain_library {
name: "libgcc",
vendor_available: true,
recovery_available: true,
+ src: "",
}
cc_library {
diff --git a/cc/toolchain_library.go b/cc/toolchain_library.go
index 2b117b3..20b0f85 100644
--- a/cc/toolchain_library.go
+++ b/cc/toolchain_library.go
@@ -26,8 +26,15 @@
android.RegisterModuleType("toolchain_library", toolchainLibraryFactory)
}
+type toolchainLibraryProperties struct {
+ // the prebuilt toolchain library, as a path from the top of the source tree
+ Src *string `android:"arch_variant"`
+}
+
type toolchainLibraryDecorator struct {
*libraryDecorator
+
+ Properties toolchainLibraryProperties
}
func (*toolchainLibraryDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps {
@@ -35,6 +42,12 @@
return deps
}
+func (library *toolchainLibraryDecorator) linkerProps() []interface{} {
+ var props []interface{}
+ props = append(props, library.libraryDecorator.linkerProps()...)
+ return append(props, &library.Properties)
+}
+
func toolchainLibraryFactory() android.Module {
module, library := NewLibrary(android.HostAndDeviceSupported)
library.BuildOnlyStatic()
@@ -58,16 +71,10 @@
func (library *toolchainLibraryDecorator) link(ctx ModuleContext,
flags Flags, deps PathDeps, objs Objects) android.Path {
- libName := ctx.ModuleName() + staticLibraryExtension
- outputFile := android.PathForModuleOut(ctx, libName)
-
- if flags.Clang {
- ctx.ModuleErrorf("toolchain_library must use GCC, not Clang")
+ if library.Properties.Src == nil {
+ ctx.PropertyErrorf("src", "No library source specified")
+ return android.PathForSource(ctx, "")
}
- CopyGccLib(ctx, libName, flagsToBuilderFlags(flags), outputFile)
-
- ctx.CheckbuildFile(outputFile)
-
- return outputFile
+ return android.PathForSource(ctx, *library.Properties.Src)
}