From c5da1dda4a5d29ecac63ce17da95a1fe2581d266 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Mon, 7 Mar 2022 23:25:41 +0000 Subject: [PATCH] build: use ccache in make-v8.sh on ppc64le and s390x If `ccache` is available, use it during V8 builds on ppc64le and s390x. Only create the `gcc` and `g++` shims if necessary. PR-URL: https://github.com/nodejs/node/pull/42204 Reviewed-By: Rich Trott Reviewed-By: James M Snell --- tools/make-v8.sh | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/tools/make-v8.sh b/tools/make-v8.sh index 978b9f00860a65..62cabc70a6eac7 100755 --- a/tools/make-v8.sh +++ b/tools/make-v8.sh @@ -9,7 +9,7 @@ cd deps/v8 || exit find . -type d -name .git -print0 | xargs -0 rm -rf ../../tools/v8/fetch_deps.py . -ARCH="`arch`" +ARCH=$(arch) if [ "$ARCH" = "s390x" ] || [ "$ARCH" = "ppc64le" ]; then TARGET_ARCH=$ARCH if [ "$ARCH" = "ppc64le" ]; then @@ -18,22 +18,34 @@ if [ "$ARCH" = "s390x" ] || [ "$ARCH" = "ppc64le" ]; then # set paths manually for now to use locally installed gn export BUILD_TOOLS=/home/iojs/build-tools export LD_LIBRARY_PATH="$BUILD_TOOLS:$LD_LIBRARY_PATH" - # Avoid linking to ccache symbolic links as ccache decides which - # binary to run based on the name of the link (we always name them gcc/g++). - # shellcheck disable=SC2154 - CC_PATH=`command -v "$CC" gcc | grep -v ccache | head -n 1` - # shellcheck disable=SC2154 - CXX_PATH=`command -v "$CXX" g++ | grep -v ccache | head -n 1` rm -f "$BUILD_TOOLS/g++" rm -f "$BUILD_TOOLS/gcc" - ln -s "$CXX_PATH" "$BUILD_TOOLS/g++" - ln -s "$CC_PATH" "$BUILD_TOOLS/gcc" + # V8's build config looks for binaries called `gcc` and `g++` if not using + # clang. Ensure that `gcc` and `g++` point to the compilers we want to + # invoke, creating symbolic links placed at the front of PATH, if needed. + # Avoid linking to ccache symbolic links as ccache decides which binary + # to run based on the name of the link (i.e. `gcc`/`g++` in our case). + # shellcheck disable=SC2154 + if [ "$CC" != "" ] && [ "$CC" != "gcc" ]; then + CC_PATH=$(command -v "$CC" gcc | grep -v ccache | head -n 1) + ln -s "$CC_PATH" "$BUILD_TOOLS/gcc" + fi + # shellcheck disable=SC2154 + if [ "$CXX" != "" ] && [ "$CXX" != "g++" ]; then + CXX_PATH=$(command -v "$CXX" g++ | grep -v ccache | head -n 1) + ln -s "$CXX_PATH" "$BUILD_TOOLS/g++" + fi export PATH="$BUILD_TOOLS:$PATH" + # Propagate ccache to gn. + case "$CXX" in + *ccache*) CC_WRAPPER="cc_wrapper=\"ccache\"" ;; + *) ;; + esac g++ --version gcc --version export PKG_CONFIG_PATH=$BUILD_TOOLS/pkg-config - gn gen -v "out.gn/$BUILD_ARCH_TYPE" --args="is_component_build=false is_debug=false use_goma=false goma_dir=\"None\" use_custom_libcxx=false v8_target_cpu=\"$TARGET_ARCH\" target_cpu=\"$TARGET_ARCH\" v8_enable_backtrace=true" + gn gen -v "out.gn/$BUILD_ARCH_TYPE" --args="is_component_build=false is_debug=false use_goma=false goma_dir=\"None\" use_custom_libcxx=false v8_target_cpu=\"$TARGET_ARCH\" target_cpu=\"$TARGET_ARCH\" v8_enable_backtrace=true $CC_WRAPPER" ninja -v -C "out.gn/$BUILD_ARCH_TYPE" d8 cctest inspector-test else DEPOT_TOOLS_DIR="$(cd _depot_tools && pwd)"