buildgcc: Print out all missing tools then halt

Instead of printing out a single tool that needs to be installed
each time buildgcc is run, print out the entire list of tools
to be installed, then halt.

Change-Id: I7761760eef3c45ba371f882a4f987408945bb3e5
Signed-off-by: Martin Roth <martinroth@google.com>
Reviewed-on: https://review.coreboot.org/12856
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
diff --git a/util/crossgcc/buildgcc b/util/crossgcc/buildgcc
index 8e97439..c665412 100755
--- a/util/crossgcc/buildgcc
+++ b/util/crossgcc/buildgcc
@@ -92,6 +92,7 @@
 NC='\033[0m' # No Color
 
 UNAME=$(uname | grep -iq cygwin && echo Cygwin || uname)
+HALT_FOR_TOOLS=0
 
 normalize_dirs()
 {
@@ -106,6 +107,7 @@
 
 please_install()
 {
+	HALT_FOR_TOOLS=1
 	test -r /etc/os-release && . /etc/os-release
 	case "$ID_LIKE" in
 	debian) solution="sudo apt-get install $1" ;;
@@ -171,7 +173,7 @@
 		fi
 	fi
 
-	[ -z "$3" ] && please_install $1 $4 && exit 1
+	[ -z "$3" ] && please_install $1 $4
 	false
 }
 
@@ -651,6 +653,10 @@
 searchtool wget > /dev/null
 searchtool bzip2 "bzip2," > /dev/null
 
+if [ "$HALT_FOR_TOOLS" -ne 0 ]; then
+	exit 1
+fi
+
 # This initial cleanup is useful when updating the toolchain script.
 
 if [ "$clean" = "1" ]; then