1e441b9df9a68595d0dd7b8ed184aecb27c86054bColin Cross#!/bin/bash
2e441b9df9a68595d0dd7b8ed184aecb27c86054bColin Cross
387b17d1ff46ab86ab897c50435c423f28be4895fDan Willemsenset -e
487b17d1ff46ab86ab897c50435c423f28be4895fDan Willemsen
587b17d1ff46ab86ab897c50435c423f28be4895fDan Willemsen# Switch to the build directory
687b17d1ff46ab86ab897c50435c423f28be4895fDan Willemsencd $(dirname "${BASH_SOURCE[0]}")
7f7531f1a21aaa56ef53cb1714e954e487528109fColin Cross
8f7531f1a21aaa56ef53cb1714e954e487528109fColin Cross# The source directory path and operating system will get written to
9f7531f1a21aaa56ef53cb1714e954e487528109fColin Cross# .soong.bootstrap by the bootstrap script.
10f7531f1a21aaa56ef53cb1714e954e487528109fColin Cross
1187b17d1ff46ab86ab897c50435c423f28be4895fDan WillemsenBOOTSTRAP=".soong.bootstrap"
1224679676cad44947ea8752d1d193b0541d942a16Colin Crossif [ ! -f "${BOOTSTRAP}" ]; then
13f7531f1a21aaa56ef53cb1714e954e487528109fColin Cross    echo "Error: soong script must be located in a directory created by bootstrap.bash"
14f7531f1a21aaa56ef53cb1714e954e487528109fColin Cross    exit 1
15f7531f1a21aaa56ef53cb1714e954e487528109fColin Crossfi
16f7531f1a21aaa56ef53cb1714e954e487528109fColin Cross
1724679676cad44947ea8752d1d193b0541d942a16Colin Crosssource "${BOOTSTRAP}"
18e441b9df9a68595d0dd7b8ed184aecb27c86054bColin Cross
1987b17d1ff46ab86ab897c50435c423f28be4895fDan Willemsen# Now switch to the source directory so that all the relative paths from
2087b17d1ff46ab86ab897c50435c423f28be4895fDan Willemsen# $BOOTSTRAP are correct
2187b17d1ff46ab86ab897c50435c423f28be4895fDan Willemsencd ${SRCDIR_FROM_BUILDDIR}
22e441b9df9a68595d0dd7b8ed184aecb27c86054bColin Cross
2368f55102dadc880e2b57c669415771395ac0c3b0Colin Cross# Ninja can't depend on environment variables, so do a manual comparison
2468f55102dadc880e2b57c669415771395ac0c3b0Colin Cross# of the relevant environment variables from the last build using the
2568f55102dadc880e2b57c669415771395ac0c3b0Colin Cross# soong_env tool and trigger a build manifest regeneration if necessary
2624679676cad44947ea8752d1d193b0541d942a16Colin CrossENVFILE="${BUILDDIR}/.soong.environment"
2724679676cad44947ea8752d1d193b0541d942a16Colin CrossENVTOOL="${BUILDDIR}/.bootstrap/bin/soong_env"
2824679676cad44947ea8752d1d193b0541d942a16Colin Crossif [ -f "${ENVFILE}" ]; then
2924679676cad44947ea8752d1d193b0541d942a16Colin Cross    if [ -x "${ENVTOOL}" ]; then
3024679676cad44947ea8752d1d193b0541d942a16Colin Cross        if ! "${ENVTOOL}" "${ENVFILE}"; then
3168f55102dadc880e2b57c669415771395ac0c3b0Colin Cross            echo "forcing build manifest regeneration"
3224679676cad44947ea8752d1d193b0541d942a16Colin Cross            rm -f "${ENVFILE}"
3368f55102dadc880e2b57c669415771395ac0c3b0Colin Cross        fi
3468f55102dadc880e2b57c669415771395ac0c3b0Colin Cross    else
3568f55102dadc880e2b57c669415771395ac0c3b0Colin Cross        echo "Missing soong_env tool, forcing build manifest regeneration"
3624679676cad44947ea8752d1d193b0541d942a16Colin Cross        rm -f "${ENVFILE}"
3768f55102dadc880e2b57c669415771395ac0c3b0Colin Cross    fi
3868f55102dadc880e2b57c669415771395ac0c3b0Colin Crossfi
3968f55102dadc880e2b57c669415771395ac0c3b0Colin Cross
4079d2f256d4f2d6fe290e19174cf448662261e1d1Dan WillemsenBUILDDIR="${BUILDDIR}" NINJA="prebuilts/build-tools/${PREBUILTOS}/bin/ninja" build/blueprint/blueprint.bash "$@"
41