playwright/browser_patches/chromium/build.sh
Andrey Lushnikov 3b159b45ff
chore: consolidate xcode versions across operating systems and builds (#13708)
A single place with all listed required xcode versions makes it
easier to manage XCode on bots.
2022-04-25 06:35:26 -07:00

131 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
set -e
set +x
trap "cd $(pwd -P)" EXIT
cd "$(dirname "$0")"
SCRIPT_FOLDER=$(pwd -P)
source "${SCRIPT_FOLDER}/../utils.sh"
USAGE=$(cat<<EOF
usage: $(basename "$0") [--arm64] [--symbols] [--full] [--goma] <custom targets to compile>
--arm64 cross-compile for arm64
--symbols compile with symbols
--full install build dependencies
--goma use goma when compiling. Make sure to pre-start goma client beforehand with './goma.sh start'.
On Linux & MacOS, it is possible to specify custom compilation targets:
./build.sh --goma blink_tests
EOF
)
source "${SCRIPT_FOLDER}/../utils.sh"
if [[ $1 == "--help" || $1 == "-h" ]]; then
echo "$USAGE"
exit 0
fi
args=("$@")
IS_ARM64=""
IS_SYMBOLS_BUILD=""
IS_FULL=""
USE_GOMA=""
for ((i="${#args[@]}"-1; i >= 0; --i)); do
case ${args[i]} in
--arm64) IS_ARM64="1"; unset args[i]; ;;
--symbols) IS_SYMBOLS_BUILD="1"; unset args[i]; ;;
--full) IS_FULL="1"; unset args[i]; ;;
--goma) USE_GOMA="1"; unset args[i]; ;;
esac
done
compile_chromium() {
if [[ -z "${CR_CHECKOUT_PATH}" ]]; then
CR_CHECKOUT_PATH="$HOME/chromium"
fi
if [[ ! -d "${CR_CHECKOUT_PATH}/src" ]]; then
echo "ERROR: CR_CHECKOUT_PATH does not have src/ subfolder; is this a chromium checkout?"
exit 1
fi
source "${SCRIPT_FOLDER}/ensure_depot_tools.sh"
if is_mac; then
selectXcodeVersionOrDie $(node "${SCRIPT_FOLDER}/../get_xcode_version.js" chromium)
fi
cd "${CR_CHECKOUT_PATH}/src"
# Prepare build folder.
mkdir -p "./out/Default"
echo "is_debug = false" > ./out/Default/args.gn
echo "dcheck_always_on = false" >> ./out/Default/args.gn
if [[ -n "${IS_SYMBOLS_BUILD}" ]]; then
echo "symbol_level = 1" >> ./out/Default/args.gn
else
echo "symbol_level = 0" >> ./out/Default/args.gn
fi
if [[ -n "${IS_ARM64}" ]]; then
echo 'target_cpu = "arm64"' >> ./out/Default/args.gn
fi
if [[ ! -z "$USE_GOMA" ]]; then
"${SCRIPT_FOLDER}/goma.sh" args >> ./out/Default/args.gn
fi
echo 'enable_nacl = false' >> ./out/Default/args.gn
echo "===== args.gn ====="
cat ./out/Default/args.gn
echo "===== ======= ====="
if [[ -n "$IS_FULL" ]]; then
if is_linux; then
./build/install-build-deps.sh
if [[ -n "$IS_ARM64" ]]; then
# Install sysroot image, see https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/linux/chromium_arm.md
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm64
fi
fi
fi
TARGETS="${args[@]}"
if is_win; then
if [[ -n "$TARGETS" ]]; then
echo "ERROR: cannot compile custom targets on windows yet."
echo "Requested to compile chromium targets - ${TARGETS}"
exit 1
fi
if [[ -z "$USE_GOMA" ]]; then
/c/Windows/System32/cmd.exe "/c $(cygpath -w "${SCRIPT_FOLDER}"/buildwin.bat)"
else
/c/Windows/System32/cmd.exe "/c $(cygpath -w "${SCRIPT_FOLDER}"/buildwingoma.bat)"
fi
else
if [[ -z "$TARGETS" ]]; then
if is_linux; then
TARGETS="chrome chrome_sandbox clear_key_cdm"
else
TARGETS="chrome"
fi
fi
echo
echo ">> Compiling Targets: $TARGETS"
echo
gn gen out/Default
if [[ -z "$USE_GOMA" ]]; then
autoninja -C out/Default $TARGETS
else
ninja -j 200 -C out/Default $TARGETS
fi
fi
}
compile_chromium "${args[@]}"