mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	 3b159b45ff
			
		
	
	
		3b159b45ff
		
			
		
	
	
	
	
		
			
			A single place with all listed required xcode versions makes it easier to manage XCode on bots.
		
			
				
	
	
		
			131 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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[@]}"
 |