summaryrefslogtreecommitdiff
path: root/util/crossgcc
diff options
context:
space:
mode:
authorNico Huber <nico.huber@secunet.com>2016-01-26 16:09:31 +0100
committerNico Huber <nico.h@gmx.de>2016-07-05 11:52:40 +0200
commit11ea2b378bc000a4bf9ffd4fa59c27d299b6cbfc (patch)
treee04d06ff09c31111edde1317f95d51629356669f /util/crossgcc
parentb2213edc658cf71f7dc964cd8281924aedca916e (diff)
buildgcc: Make package build() function more versatile
Refactor build() to make things more flexible: Add a parameter that tells if we build a package for the host or for a target architecture. This is just passed to the build_$package() function and can be used later to take different steps in each case (e.g. for bootstrapping a host gcc). Move .success files into the destination directory. That way we can tell that a package has been built even if the package build directory has been removed. Change-Id: I52a7245714a040d11f6e1ac8bdbff8057bb7f0a1 Signed-off-by: Nico Huber <nico.huber@secunet.com> Reviewed-on: https://review.coreboot.org/13471 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'util/crossgcc')
-rwxr-xr-xutil/crossgcc/buildgcc50
1 files changed, 34 insertions, 16 deletions
diff --git a/util/crossgcc/buildgcc b/util/crossgcc/buildgcc
index 1e761daf5b..b650c62299 100755
--- a/util/crossgcc/buildgcc
+++ b/util/crossgcc/buildgcc
@@ -296,39 +296,57 @@ package_uses_targetarch()
fi
}
-build() {
+generic_build()
+{
package=$1
+ host_target=$2
+ builddir=$3
+ success=$4
fn_exists build_$package || return
version="$(eval echo \$$package"_VERSION")"
- package_uses_targetarch "$package" && \
- BUILDDIR=build-${TARGETARCH}-$package || \
- BUILDDIR=build-$package
- mkdir -p ${BUILDDIR}
+ mkdir -p "$builddir"
- is_package_enabled "$package" && \
- if [ -f ${BUILDDIR}/.success ]; then
+ if [ -f "$success" ]; then
printf "Skipping $package as it is already built\n"
else
printf "Building $package $version ... "
- DIR=$PWD
- cd ${BUILDDIR}
+ DIR="$PWD"
+ cd "$builddir"
rm -f .failed
- build_${package} > build.log 2>&1
- cd $DIR/${BUILDDIR}
- if [ ! -f .failed ]; then touch .success; fi
- cd ..
-
- if [ -r "${BUILDDIR}/.failed" ]; then
- printf "${RED}failed${NC}. Check ${BUILDDIR}/build.log.\n"
+ build_${package} $host_target > build.log 2>&1
+ cd "$DIR"
+ if [ ! -f "$builddir/.failed" ]; then
+ touch "$success";
+ else
+ printf "${RED}failed${NC}. Check $builddir/build.log.\n"
exit 1
fi
printf "${green}ok${NC}\n"
fi
}
+build_for_host()
+{
+ generic_build $1 host build-$1 "${TARGETDIR}/.$1.success"
+}
+
+build_for_target()
+{
+ generic_build $1 target build-${TARGETARCH}-$1 "${TARGETDIR}/.${TARGETARCH}-$1.success"
+}
+
+build()
+{
+ if package_uses_targetarch $1; then
+ build_for_target $1
+ else
+ build_for_host $1
+ fi
+}
+
cleanup()
{
if [ $SAVETEMPS -ne 0 ]; then