tools/setup-build: Into the 'active' symlink directory

Previously we'd generate the build files into the symlink target directory.
CMake gets grumpy if the cache is invalidated, and you're building in the 'active' directory, which does not match the directory path it remembered.

Also: Enable ccache if found on PATH

Change-Id: I7e0dc93516b2c59d6bf346fc943acea3d0021087
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/88311
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
This commit is contained in:
Ben Clayton 2022-04-29 20:18:45 +00:00
parent 665c07ac6a
commit 446166c81b
1 changed files with 12 additions and 7 deletions

View File

@ -32,9 +32,10 @@ function show_usage() {
function generate() { function generate() {
CMD=$1 CMD=$1
pushd "$ROOT_DIR" > /dev/null pushd "$ROOT_DIR" > /dev/null
${CMD} mkdir -p "out/$BUILD_DIR"
rm -fr "out/active" || true rm -fr "out/active" || true
ln -s "$BUILD_DIR" "out/active" ln -s "$BUILD_DIR" "out/active"
${CMD}
popd > /dev/null popd > /dev/null
} }
@ -42,10 +43,10 @@ case $BUILD_SYSTEM in
"gn") "gn")
case $BUILD_TYPE in case $BUILD_TYPE in
"debug") "debug")
generate "gn gen out/${BUILD_DIR} --args=is_debug=true" generate "gn gen out/active --args=is_debug=true"
;; ;;
"release") "release")
generate "gn gen out/${BUILD_DIR}" generate "gn gen out/active"
;; ;;
*) *)
echo "invalid build type '${BUILD_TYPE}'" echo "invalid build type '${BUILD_TYPE}'"
@ -54,12 +55,16 @@ case $BUILD_SYSTEM in
esac esac
;; ;;
"cmake") "cmake")
CMAKE_FLAGS=""
if [[ -x $(command -v ccache) ]]; then
CMAKE_FLAGS+="-DCMAKE_CXX_COMPILER_LAUNCHER=ccache"
fi
case $BUILD_TYPE in case $BUILD_TYPE in
"debug") "debug")
generate "cmake -S . -B out/$BUILD_DIR -GNinja -DCMAKE_BUILD_TYPE=Debug" generate "cmake -S . -B out/active -GNinja -DCMAKE_BUILD_TYPE=Debug ${CMAKE_FLAGS}"
;; ;;
"release") "release")
generate "cmake -S . -B out/$BUILD_DIR -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo" generate "cmake -S . -B out/active -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo ${CMAKE_FLAGS}"
;; ;;
*) *)
echo "invalid build type '${BUILD_TYPE}'" echo "invalid build type '${BUILD_TYPE}'"