Support cc_test_host

Support cc_test_host for gtest tests compiled for the host.

Change-Id: I632d2c211075ba9391d934609f1bf368459397e1
diff --git a/androidmk/cmd/androidmk/android.go b/androidmk/cmd/androidmk/android.go
index fa25a9f..7fd9919 100644
--- a/androidmk/cmd/androidmk/android.go
+++ b/androidmk/cmd/androidmk/android.go
@@ -13,6 +13,7 @@
 	build_executable          = "cc_binary"
 	build_host_executable     = "cc_binary_host"
 	build_native_test         = "cc_test"
+	build_host_native_test    = "cc_test_host"
 	build_prebuilt            = "prebuilt"
 )
 
@@ -105,6 +106,7 @@
 	globalScope.Set("BUILD_HOST_STATIC_LIBRARY", build_host_static_library)
 	globalScope.Set("BUILD_HOST_SHARED_LIBRARY", build_host_shared_library)
 	globalScope.Set("BUILD_NATIVE_TEST", build_native_test)
+	globalScope.Set("BUILD_HOST_NATIVE_TEST", build_host_native_test)
 	globalScope.Set("BUILD_EXECUTABLE", build_executable)
 	globalScope.Set("BUILD_PREBUILT", build_prebuilt)
 	globalScope.SetFunc("my-dir", mydir)
diff --git a/androidmk/cmd/androidmk/androidmk.go b/androidmk/cmd/androidmk/androidmk.go
index 1c3a68b..71e69ac 100644
--- a/androidmk/cmd/androidmk/androidmk.go
+++ b/androidmk/cmd/androidmk/androidmk.go
@@ -111,7 +111,8 @@
 				case build_shared_library, build_static_library,
 					build_executable, build_host_executable,
 					build_prebuilt, build_host_static_library,
-					build_host_shared_library, build_native_test:
+					build_host_shared_library, build_native_test,
+					build_host_native_test:
 
 					handleModuleConditionals(file, directive, cond)
 					makeModule(file, val)
diff --git a/cc/cc.go b/cc/cc.go
index 3dba93b..e209faa 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -1214,10 +1214,11 @@
 }
 
 func NewCCBinary(binary *CCBinary, module CCModuleType,
-	hod common.HostOrDeviceSupported) (blueprint.Module, []interface{}) {
+	hod common.HostOrDeviceSupported, props ...interface{}) (blueprint.Module, []interface{}) {
 
-	return newCCDynamic(&binary.ccLinked, module, hod, common.MultilibFirst,
-		&binary.BinaryProperties)
+	props = append(props, &binary.BinaryProperties)
+
+	return newCCDynamic(&binary.ccLinked, module, hod, common.MultilibFirst, props...)
 }
 
 func CCBinaryFactory() (blueprint.Module, []interface{}) {
@@ -1334,8 +1335,8 @@
 
 func CCTestFactory() (blueprint.Module, []interface{}) {
 	module := &ccTest{}
-	return newCCDynamic(&module.ccLinked, module, common.HostAndDeviceSupported,
-		common.MultilibFirst, &module.BinaryProperties, &module.testProperties)
+	return NewCCBinary(&module.CCBinary, module, common.HostAndDeviceSupported,
+		&module.testProperties)
 }
 
 func TestPerSrcMutator(mctx blueprint.EarlyMutatorContext) {
@@ -1409,6 +1410,16 @@
 }
 
 //
+// Host Tests
+//
+
+func CCTestHostFactory() (blueprint.Module, []interface{}) {
+	module := &ccTest{}
+	return NewCCBinary(&module.CCBinary, module, common.HostSupported,
+		&module.testProperties)
+}
+
+//
 // Device libraries shipped with gcc
 //
 
diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go
index c1f8243..23bcb56 100644
--- a/cmd/soong_build/main.go
+++ b/cmd/soong_build/main.go
@@ -54,6 +54,7 @@
 	ctx.RegisterModuleType("cc_library_host_static", cc.CCLibraryHostStaticFactory)
 	ctx.RegisterModuleType("cc_library_host_shared", cc.CCLibraryHostSharedFactory)
 	ctx.RegisterModuleType("cc_binary_host", cc.CCBinaryHostFactory)
+	ctx.RegisterModuleType("cc_test_host", cc.CCTestHostFactory)
 
 	ctx.RegisterModuleType("gensrcs", genrule.GenSrcsFactory)