Revert "Simplify arch target handling"

This reverts commit 6713fb26cbcadf525cd75e47d7d0cbc23d282b3e.

Change-Id: Ic473cea2563b0b37dc08b0bc5d3a0ac8c4b6afe6
diff --git a/cc/toolchain.go b/cc/toolchain.go
index 87657ef..efb7953 100644
--- a/cc/toolchain.go
+++ b/cc/toolchain.go
@@ -22,13 +22,23 @@
 
 type toolchainFactory func(arch android.Arch) Toolchain
 
-var toolchainFactories = make(map[android.OsType]map[android.ArchType]toolchainFactory)
+var toolchainFactories = map[android.HostOrDevice]map[android.HostType]map[android.ArchType]toolchainFactory{
+	android.Host: map[android.HostType]map[android.ArchType]toolchainFactory{
+		android.Linux:   make(map[android.ArchType]toolchainFactory),
+		android.Darwin:  make(map[android.ArchType]toolchainFactory),
+		android.Windows: make(map[android.ArchType]toolchainFactory),
+	},
+	android.Device: map[android.HostType]map[android.ArchType]toolchainFactory{
+		android.NoHostType: make(map[android.ArchType]toolchainFactory),
+	},
+}
 
-func registerToolchainFactory(os android.OsType, arch android.ArchType, factory toolchainFactory) {
-	if toolchainFactories[os] == nil {
-		toolchainFactories[os] = make(map[android.ArchType]toolchainFactory)
-	}
-	toolchainFactories[os][arch] = factory
+func registerDeviceToolchainFactory(arch android.ArchType, factory toolchainFactory) {
+	toolchainFactories[android.Device][android.NoHostType][arch] = factory
+}
+
+func registerHostToolchainFactory(ht android.HostType, arch android.ArchType, factory toolchainFactory) {
+	toolchainFactories[android.Host][ht][arch] = factory
 }
 
 type Toolchain interface {