util/crossgcc: Add bootstrap-only mode

buildgcc -B (--bootstrap-only) builds only a bootstrap compiler. That
useful if you want to package the cross compilers: first build the
bootstrap compiler, then all required cross compilers in a separate
directory (using the bootstrap compiler through an adjusted PATH).

Change-Id: I089b51d1b898d4cf530845ba51283997fd229451
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: https://review.coreboot.org/21683
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Patrick Georgi 2017-09-22 18:57:10 +02:00
parent d6735b0f14
commit 9681cdc1b4
1 changed files with 27 additions and 18 deletions

View File

@ -902,12 +902,12 @@ getopt - > /dev/null 2>/dev/null || gcc -o getopt getopt.c
getoptbrand="$(getopt -V | sed -e '1!d' -e 's,^\(......\).*,\1,')" getoptbrand="$(getopt -V | sed -e '1!d' -e 's,^\(......\).*,\1,')"
if [ "${getoptbrand}" = "getopt" ]; then if [ "${getoptbrand}" = "getopt" ]; then
# Detected GNU getopt that supports long options. # Detected GNU getopt that supports long options.
args=$(getopt -l version,help,clean,directory:,bootstrap,platform:,languages:,package:,jobs:,destdir:,savetemps,scripting,ccache,supported:,urls,nocolor -o Vhcd:bp:l:P:j:D:tSys:un -- "$@") args=$(getopt -l version,help,clean,directory:,bootstrap,bootstrap-only,platform:,languages:,package:,jobs:,destdir:,savetemps,scripting,ccache,supported:,urls,nocolor -o Vhcd:bBp:l:P:j:D:tSys:un -- "$@")
getopt_ret=$? getopt_ret=$?
eval set -- "$args" eval set -- "$args"
else else
# Detected non-GNU getopt # Detected non-GNU getopt
args=$(getopt Vhcd:bp:l:P:j:D:tSys:un $*) args=$(getopt Vhcd:bBp:l:P:j:D:tSys:un $*)
getopt_ret=$? getopt_ret=$?
set -- $args set -- $args
fi fi
@ -919,22 +919,23 @@ fi
while true ; do while true ; do
case "$1" in case "$1" in
-V|--version) shift; myversion; exit 0;; -V|--version) shift; myversion; exit 0;;
-h|--help) shift; myhelp; exit 0;; -h|--help) shift; myhelp; exit 0;;
-c|--clean) shift; clean=1;; -c|--clean) shift; clean=1;;
-t|--savetemps) shift; SAVETEMPS=1;; -t|--savetemps) shift; SAVETEMPS=1;;
-d|--directory) shift; TARGETDIR="$1"; shift;; -d|--directory) shift; TARGETDIR="$1"; shift;;
-b|--bootstrap) shift; BOOTSTRAP=1;; -b|--bootstrap) shift; BOOTSTRAP=1;;
-p|--platform) shift; TARGETARCH="$1"; shift;; -B|--bootstrap-only) shift; BOOTSTRAPONLY=1; BOOTSTRAP=1;;
-l|--languages) shift; LANGUAGES="$1"; shift;; -p|--platform) shift; TARGETARCH="$1"; shift;;
-D|--destdir) shift; DESTDIR="$1"; shift;; -l|--languages) shift; LANGUAGES="$1"; shift;;
-j|--jobs) shift; THREADS="$1"; JOBS="-j $1"; shift;; -D|--destdir) shift; DESTDIR="$1"; shift;;
-P|--package) shift; PACKAGE="$1"; shift;; -j|--jobs) shift; THREADS="$1"; JOBS="-j $1"; shift;;
-S|--scripting) shift; SKIPPYTHON=0;; -P|--package) shift; PACKAGE="$1"; shift;;
-y|--ccache) shift; USECCACHE=1;; -S|--scripting) shift; SKIPPYTHON=0;;
-s|--supported) shift; PRINTSUPPORTED="$1"; shift;; -y|--ccache) shift; USECCACHE=1;;
-u|--urls) shift; printf "%s\n" "$ALL_ARCHIVES"; exit 0;; -s|--supported) shift; PRINTSUPPORTED="$1"; shift;;
-n|--nocolor) shift; \ -u|--urls) shift; printf "%s\n" "$ALL_ARCHIVES"; exit 0;;
-n|--nocolor) shift; \
unset red RED green GREEN blue BLUE cyan CYAN NC;; unset red RED green GREEN blue BLUE cyan CYAN NC;;
--) shift; break;; --) shift; break;;
*) break;; *) break;;
@ -1215,6 +1216,14 @@ for P in $PACKAGES; do
done done
printf "Unpacked and patched ... ${green}ok${NC}\n" printf "Unpacked and patched ... ${green}ok${NC}\n"
if [ -n "$BOOTSTRAPONLY" ]; then
printf "Building bootstrap compiler only ... \n"
for pkg in GMP MPFR MPC LIBELF GCC; do
build_for_host $pkg
done
exit 0
fi
printf "Building packages ... \n" printf "Building packages ... \n"
for package in $PACKAGES; do for package in $PACKAGES; do
build $package build $package