.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.1.1-0.20210319172145-bda8f5cee399 / cmd / toolstash / buildall
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.1-0.20210319172145-bda8f5cee399/cmd/toolstash/buildall b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.1-0.20210319172145-bda8f5cee399/cmd/toolstash/buildall
new file mode 100644 (file)
index 0000000..0c6492c
--- /dev/null
@@ -0,0 +1,68 @@
+#!/bin/bash
+
+# Usage: buildall [-e] [-nocmp] [-work]
+#
+# Builds everything (std) for every GOOS/GOARCH combination but installs nothing.
+#
+# By default, runs the builds with -toolexec 'toolstash -cmp', to test that the
+# toolchain is producing bit identical output to a previous known good toolchain.
+#
+# Options:
+#      -e: stop at first failure
+#      -nocmp: turn off toolstash -cmp; just check that ordinary builds succeed
+#      -work: pass -work to go command
+
+sete=false
+if [ "$1" = "-e" ]; then
+       sete=true
+       shift
+fi
+
+cmp=true
+if [ "$1" = "-nocmp" ]; then
+       cmp=false
+       shift
+fi
+
+work=""
+if [ "$1" = "-work" ]; then
+       work="-work"
+       shift
+fi
+
+cd $(go env GOROOT)/src
+go install cmd/compile cmd/link cmd/asm || exit 1
+pattern="$1"
+if [ "$pattern" = "" ]; then
+       pattern=.
+fi
+
+targets="$(go tool dist list; echo linux/386/softfloat)"
+targets="$(echo "$targets" | tr '/' '-' | sort | egrep "$pattern" | egrep -v 'android-arm|darwin-arm')"
+
+# put linux first in the target list to get all the architectures up front.
+targets="$(echo "$targets" | egrep 'linux') $(echo "$targets" | egrep -v 'linux')"
+
+if [ "$sete" = true ]; then
+       set -e
+fi
+for target in $targets
+do
+       echo $target
+       export GOOS=$(echo $target | sed 's/-.*//')
+       export GOARCH=$(echo $target | sed 's/.*-//')
+       unset GO386
+       if [ "$GOARCH" = "softfloat" ]; then
+               export GOARCH=386
+               export GO386=softfloat
+       fi
+       if $cmp; then
+               if [ "$GOOS" = "android" ]; then
+                       go build $work -a -toolexec 'toolstash -cmp' std
+               else
+                       go build $work -a -toolexec 'toolstash -cmp' std cmd
+               fi
+       else
+               go build $work -a std
+       fi
+done