export CGO_ENABLED=1
unset GOBIN
-# Do the build first, so we can build go_android_exec and cleaner.
+# Do the build first, so we can build the 'cleaner' binary.
# Also lets us fail early before the (slow) adb push if the build is broken.
. ./make.bash --no-banner
export GOROOT=$(dirname $(pwd))
export PATH=$GOROOT/bin:$PATH
-GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH go build \
- -o ../bin/go_android_${GOARCH}_exec \
- ../misc/android/go_android_exec.go
export pkgdir=$(dirname $(go list -f '{{.Target}}' runtime))
if [ "$pkgdir" = "" ]; then
// Remove go_bootstrap now that we're done.
xremove(pathf("%s/go_bootstrap", tooldir))
+ // Build the exec wrapper if necessary.
+ if wrapperPath := wrapperPathFor(goos, goarch); wrapperPath != "" {
+ oldcc := os.Getenv("CC")
+ os.Setenv("GOOS", gohostos)
+ os.Setenv("GOARCH", gohostarch)
+ os.Setenv("CC", compilerEnvLookup(defaultcc, gohostos, gohostarch))
+ goCmd(cmdGo, "build", "-o", pathf("%s/go_%s_%s_exec%s", gobin, goos, goarch, exe), wrapperPath)
+ // Restore environment.
+ // TODO(elias.naur): support environment variables in goCmd?
+ os.Setenv("GOOS", goos)
+ os.Setenv("GOARCH", goarch)
+ os.Setenv("CC", oldcc)
+ }
+
// Print trailing banner unless instructed otherwise.
if !noBanner {
banner()
}
}
+func wrapperPathFor(goos, goarch string) string {
+ switch {
+ case goos == "android":
+ return pathf("%s/misc/android/go_android_exec.go", goroot)
+ case goos == "darwin" && (goarch == "arm" || goarch == "arm64"):
+ return pathf("%s/misc/ios/go_darwin_arm_exec.go", goroot)
+ }
+ return ""
+}
+
func goInstall(goBinary string, args ...string) {
- installCmd := []string{goBinary, "install", "-gcflags=all=" + gogcflags, "-ldflags=all=" + goldflags}
+ goCmd(goBinary, "install", args...)
+}
+
+func goCmd(goBinary string, cmd string, args ...string) {
+ installCmd := []string{goBinary, cmd, "-gcflags=all=" + gogcflags, "-ldflags=all=" + goldflags}
if vflag > 0 {
installCmd = append(installCmd, "-v")
}
export CGO_ENABLED=1
export CC_FOR_TARGET=$GOROOT/misc/ios/clangwrap.sh
-# Run the build for the host bootstrap, so we can build go_darwin_arm_exec.
+# Run the build for the host bootstrap, so we can build detect.go.
# Also lets us fail early before the (slow) ios-deploy if the build is broken.
./make.bash
-GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH go build \
- -o ../bin/go_darwin_${GOARCH}_exec \
- ../misc/ios/go_darwin_arm_exec.go
-
if [ "$GOIOS_DEV_ID" = "" ]; then
echo "detecting iOS development identity"
eval $(GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH go run ../misc/ios/detect.go)