Expose HostToolPath on the cc module to fix genrule.tool

Bug: 31742855
Test: Use `tool` in a genrule, ensure it runs properly.
Change-Id: Ib9ff35125edd66cdba8ede4f28aa6b753de0689b
diff --git a/cc/binary.go b/cc/binary.go
index 6ad71c6..8afce09 100644
--- a/cc/binary.go
+++ b/cc/binary.go
@@ -69,7 +69,7 @@
 
 	Properties BinaryLinkerProperties
 
-	hostToolPath android.OptionalPath
+	toolPath android.OptionalPath
 }
 
 var _ linker = (*binaryDecorator)(nil)
@@ -256,9 +256,6 @@
 	fileName := binary.getStem(ctx) + flags.Toolchain.ExecutableSuffix()
 	outputFile := android.PathForModuleOut(ctx, fileName)
 	ret := outputFile
-	if ctx.Os().Class == android.Host {
-		binary.hostToolPath = android.OptionalPathForPath(outputFile)
-	}
 
 	var linkerDeps android.Paths
 
@@ -291,6 +288,13 @@
 	return ret
 }
 
-func (binary *binaryDecorator) HostToolPath() android.OptionalPath {
-	return binary.hostToolPath
+func (binary *binaryDecorator) install(ctx ModuleContext, file android.Path) {
+	binary.baseInstaller.install(ctx, file)
+	if ctx.Os().Class == android.Host {
+		binary.toolPath = android.OptionalPathForPath(binary.baseInstaller.path)
+	}
+}
+
+func (binary *binaryDecorator) hostToolPath() android.OptionalPath {
+	return binary.toolPath
 }
diff --git a/cc/cc.go b/cc/cc.go
index 5b4dfc6..d04f843 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -181,6 +181,7 @@
 	installerProps() []interface{}
 	install(ctx ModuleContext, path android.Path)
 	inData() bool
+	hostToolPath() android.OptionalPath
 }
 
 type dependencyTag struct {
@@ -845,6 +846,13 @@
 	return c.installer.inData()
 }
 
+func (c *Module) HostToolPath() android.OptionalPath {
+	if c.installer == nil {
+		return android.OptionalPath{}
+	}
+	return c.installer.hostToolPath()
+}
+
 //
 // Defaults
 //
diff --git a/cc/installer.go b/cc/installer.go
index fa8fc32..8ce9541 100644
--- a/cc/installer.go
+++ b/cc/installer.go
@@ -80,3 +80,7 @@
 func (installer *baseInstaller) inData() bool {
 	return installer.location == InstallInData
 }
+
+func (installer *baseInstaller) hostToolPath() android.OptionalPath {
+	return android.OptionalPath{}
+}