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
239301d8dfa1541887e1f35afde0b2cf4baa84ab25Dan Willemsen# Run the blueprint wrapper
249301d8dfa1541887e1f35afde0b2cf4baa84ab25Dan WillemsenBUILDDIR="${BUILDDIR}" SKIP_NINJA=true build/blueprint/blueprint.bash
25e441b9df9a68595d0dd7b8ed184aecb27c86054bColin Cross
2668f55102dadc880e2b57c669415771395ac0c3b0Colin Cross# Ninja can't depend on environment variables, so do a manual comparison
2768f55102dadc880e2b57c669415771395ac0c3b0Colin Cross# of the relevant environment variables from the last build using the
2868f55102dadc880e2b57c669415771395ac0c3b0Colin Cross# soong_env tool and trigger a build manifest regeneration if necessary
2924679676cad44947ea8752d1d193b0541d942a16Colin CrossENVFILE="${BUILDDIR}/.soong.environment"
3024679676cad44947ea8752d1d193b0541d942a16Colin CrossENVTOOL="${BUILDDIR}/.bootstrap/bin/soong_env"
3124679676cad44947ea8752d1d193b0541d942a16Colin Crossif [ -f "${ENVFILE}" ]; then
3224679676cad44947ea8752d1d193b0541d942a16Colin Cross    if [ -x "${ENVTOOL}" ]; then
3324679676cad44947ea8752d1d193b0541d942a16Colin Cross        if ! "${ENVTOOL}" "${ENVFILE}"; then
3468f55102dadc880e2b57c669415771395ac0c3b0Colin Cross            echo "forcing build manifest regeneration"
3524679676cad44947ea8752d1d193b0541d942a16Colin Cross            rm -f "${ENVFILE}"
3668f55102dadc880e2b57c669415771395ac0c3b0Colin Cross        fi
3768f55102dadc880e2b57c669415771395ac0c3b0Colin Cross    else
3868f55102dadc880e2b57c669415771395ac0c3b0Colin Cross        echo "Missing soong_env tool, forcing build manifest regeneration"
3924679676cad44947ea8752d1d193b0541d942a16Colin Cross        rm -f "${ENVFILE}"
4068f55102dadc880e2b57c669415771395ac0c3b0Colin Cross    fi
4168f55102dadc880e2b57c669415771395ac0c3b0Colin Crossfi
4268f55102dadc880e2b57c669415771395ac0c3b0Colin Cross
43e4d7adeff50f75fbf9262760c5c23680e113adabDan Willemsen"prebuilts/ninja/${PREBUILTOS}/ninja" -f "${BUILDDIR}/build.ninja" -w dupbuild=err "$@"
44