misc/cgo/testcshared: add support for -target.

--- misc/cgo/testcshared/test.bash
+++ misc/cgo/testcshared/test.bash
@@ -14,9 +14,23 @@ if [ ! -f src/libgo/libgo.go ]; then
 	exit 1
 fi
 
-goos=$(go env GOOS)
-goarch=$(go env GOARCH)
-goroot=$(go env GOROOT)
+function target()
+	{
+	[[ -n "${target}" ]]
+	}
+
+function go_target()
+	{
+	if target; then
+		go_${target} "$@"
+	else
+		go "$@"
+	fi
+	}
+
+goos=$(go_target env GOOS)
+goarch=$(go_target env GOARCH)
+goroot=$(go_target env GOROOT)
 if [ ! -d "$goroot" ]; then
 	echo 'misc/cgo/testcshared/test.bash cannnot find GOROOT' 1>&2
 	echo '$GOROOT:' "$GOROOT" 1>&2
@@ -31,8 +45,10 @@ if [ "${goos}" == "darwin" ]; then
 	installdir=pkg/${goos}_${goarch}_testcshared
 fi
 
-# Temporary directory on the android device.
-androidpath=/data/local/tmp/testcshared-$$
+# Temporary directory on the android/chromeos device.
+if target; then
+	remotepath=$(target_tmpdir)/testcshared-$$
+fi
 
 function cleanup() {
 	rm -f libgo.$libext libgo2.$libext libgo4.$libext libgo5.$libext
@@ -40,37 +56,33 @@ function cleanup() {
 	rm -f testp testp2 testp3 testp4 testp5
 	rm -rf pkg "${goroot}/${installdir}"
 
-	if [ "$goos" == "android" ]; then
-		adb shell rm -rf "$androidpath"
+	if target; then
+		target_sh "${target}" "rm -rf $remotepath"
 	fi
 }
 trap cleanup EXIT
 
-if [ "$goos" == "android" ]; then
-	adb shell mkdir -p "$androidpath"
+if target; then
+	target_sh "${target}" "mkdir -p $remotepath"
 fi
 
 function run() {
-	case "$goos" in
-	"android")
+	if target; then
 		local args=$@
-		output=$(adb shell "cd ${androidpath}; $@")
-		output=$(echo $output|tr -d '\r')
+		output=$(target_sh "${target}" "cd ${remotepath}; $@")
 		case $output in
 			*PASS) echo "PASS";; 
 			*) echo "$output";;
 		esac
-		;;
-	*)
+	else
 		echo $(env $@)
-		;;
-	esac
+	fi
 }
 
 function binpush() {
 	bin=${1}
-	if [ "$goos" == "android" ]; then
-		adb push "$bin"  "${androidpath}/${bin}" 2>/dev/null
+	if target; then
+		target_cp "$bin" "${target}:${remotepath}/${bin}"
 	fi
 }
 
@@ -84,9 +96,9 @@ if [ "$goos" == "darwin" ]; then
 fi
 
 # Create the header files.
-GOPATH=$(pwd) go install -buildmode=c-shared $suffix libgo
+GOPATH=$(pwd) go_target install -buildmode=c-shared $suffix libgo
 
-GOPATH=$(pwd) go build -buildmode=c-shared $suffix -o libgo.$libext src/libgo/libgo.go
+GOPATH=$(pwd) go_target build -buildmode=c-shared $suffix -o libgo.$libext src/libgo/libgo.go
 binpush libgo.$libext
 
 if [ "$goos" == "linux" ] || [ "$goos" == "android" ] ; then
@@ -96,8 +108,8 @@ if [ "$goos" == "linux" ] || [ "$goos" == "android" ] ; then
     fi
 fi
 
-GOGCCFLAGS=$(go env GOGCCFLAGS)
-if [ "$goos" == "android" ]; then
+GOGCCFLAGS=$(go_target env GOGCCFLAGS)
+if target; then
 	GOGCCFLAGS="${GOGCCFLAGS} -pie"
 fi
 
@@ -105,7 +117,7 @@ status=0
 
 # test0: exported symbols in shared lib are accessible.
 # TODO(iant): using _shared here shouldn't really be necessary.
-$(go env CC) ${GOGCCFLAGS} -I ${installdir} -o testp main0.c libgo.$libext
+$(go_target env CC) ${GOGCCFLAGS} -I ${installdir} -o testp main0.c libgo.$libext
 binpush testp
 
 output=$(run LD_LIBRARY_PATH=. ./testp)
@@ -115,7 +127,7 @@ if [ "$output" != "PASS" ]; then
 fi
 
 # test1: shared library can be dynamically loaded and exported symbols are accessible.
-$(go env CC) ${GOGCCFLAGS} -o testp main1.c -ldl
+$(go_target env CC) ${GOGCCFLAGS} -o testp main1.c -ldl
 binpush testp
 output=$(run ./testp ./libgo.$libext)
 if [ "$output" != "PASS" ]; then
@@ -124,13 +136,13 @@ if [ "$output" != "PASS" ]; then
 fi
 
 # test2: tests libgo2 which does not export any functions.
-GOPATH=$(pwd) go build -buildmode=c-shared $suffix -o libgo2.$libext libgo2
+GOPATH=$(pwd) go_target build -buildmode=c-shared $suffix -o libgo2.$libext libgo2
 binpush libgo2.$libext
 linkflags="-Wl,--no-as-needed"
 if [ "$goos" == "darwin" ]; then
 	linkflags=""
 fi
-$(go env CC) ${GOGCCFLAGS} -o testp2 main2.c $linkflags libgo2.$libext
+$(go_target env CC) ${GOGCCFLAGS} -o testp2 main2.c $linkflags libgo2.$libext
 binpush testp2
 output=$(run LD_LIBRARY_PATH=. ./testp2)
 if [ "$output" != "PASS" ]; then
@@ -138,9 +150,9 @@ if [ "$output" != "PASS" ]; then
 	status=1
 fi
 
-# test3: tests main.main is exported on android.
-if [ "$goos" == "android" ]; then
-	$(go env CC) ${GOGCCFLAGS} -o testp3 main3.c -ldl
+# test3: tests main.main is exported on android/chromeos.
+if target; then
+	$(go_target env CC) ${GOGCCFLAGS} -o testp3 main3.c -ldl
 	binpush testp3
 	output=$(run ./testp ./libgo.so)
 	if [ "$output" != "PASS" ]; then
@@ -150,14 +162,14 @@ if [ "$goos" == "android" ]; then
 fi
 
 # test4: tests signal handlers
-GOPATH=$(pwd) go build -buildmode=c-shared $suffix -o libgo4.$libext libgo4
+GOPATH=$(pwd) go_target build -buildmode=c-shared $suffix -o libgo4.$libext libgo4
 binpush libgo4.$libext
-$(go env CC) ${GOGCCFLAGS} -pthread -o testp4 main4.c -ldl
+$(go_target env CC) ${GOGCCFLAGS} -pthread -o testp4 main4.c -ldl
 binpush testp4
 output=$(run ./testp4 ./libgo4.$libext 2>&1)
 if test "$output" != "PASS"; then
     echo "FAIL test4 got ${output}"
-    if test "$goos" != "android"; then
+    if ! target; then
 	echo "re-running test4 in verbose mode"
 	./testp4 ./libgo4.$libext verbose
     fi
@@ -165,14 +177,14 @@ if test "$output" != "PASS"; then
 fi
 
 # test5: tests signal handlers with os/signal.Notify
-GOPATH=$(pwd) go build -buildmode=c-shared $suffix -o libgo5.$libext libgo5
+GOPATH=$(pwd) go_target build -buildmode=c-shared $suffix -o libgo5.$libext libgo5
 binpush libgo5.$libext
-$(go env CC) ${GOGCCFLAGS} -pthread -o testp5 main5.c -ldl
+$(go_target env CC) ${GOGCCFLAGS} -pthread -o testp5 main5.c -ldl
 binpush testp5
 output=$(run ./testp5 ./libgo5.$libext 2>&1)
 if test "$output" != "PASS"; then
     echo "FAIL test5 got ${output}"
-    if test "$goos" != "android"; then
+    if ! target; then
 	echo "re-running test5 in verbose mode"
 	./testp5 ./libgo5.$libext verbose
     fi
