123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- ECHO OFF
- REM Copyright (c) 2012 The Chromium Authors. All rights reserved.
- REM Use of this source code is governed by a BSD-style license that can be
- REM found in the LICENSE file.
- REM Copies an installer and symbols from a build directory on a network share
- REM into the directory \[out|build]\[Debug|Release] on the current drive.
- REM
- REM Usage:
- REM \\build.share\<path_to_checkout>\src\tools\win\copy-installer.bat
- REM
- REM By default, the script will copy the Debug build in the tree, falling back
- REM to the Release build if one is not found. Similarly, the ninja output
- REM directory is preferred over the devenv output directory. The x86 build is
- REM preferred over the x64 build. Specify any of "out|build", "Debug|Release"
- REM (case matters), or "x64" on the command line in any order to influence
- REM selection. The defaults for location and build type can also be overridden
- REM in a given build tree by creating a "copy-installer.cfg" file alongside the
- REM .gclient file that sets any of OUTPUT, BUILDTYPE, or ARCH variables.
- REM
- REM Install Robocopy for superior performance on Windows XP if desired (it is
- REM present by default on Vista+).
- SETLOCAL
- REM Get the path to the build tree's src directory.
- CALL :_canonicalize "%~dp0..\.."
- SET FROM=%RET%
- REM Read local configuration (set OUTPUT and BUILDTYPE there).
- IF EXIST "%FROM%\..\copy-installer.cfg" CALL "%FROM%\..\copy-installer.cfg"
- REM Read any of OUTPUT, BUILDTYPE, or ARCH from command line.
- FOR %%a IN (%1 %2) do (
- IF "%%a"=="out" SET OUTPUT=out
- IF "%%a"=="build" SET OUTPUT=build
- IF "%%a"=="Debug" SET BUILDTYPE=Debug
- IF "%%a"=="Release" SET BUILDTYPE=Release
- IF "%%a"=="x64" SET ARCH=_x64
- )
- CALL :_find_build
- IF "%OUTPUT%%BUILDTYPE%%ARCH%"=="" (
- ECHO No build found to copy.
- EXIT 1
- )
- SET FROM=%FROM%\%OUTPUT%\%BUILDTYPE%%ARCH%
- SET TO=\%OUTPUT%\%BUILDTYPE%%ARCH%
- SET TOCOPY=mini_installer.exe *.dll.pdb chrome.exe.pdb mini_installer.exe.pdb^
- setup.exe.pdb
- CALL :_copyfiles
- REM incremental_chrome_dll=1 puts chrome_dll.pdb into the "initial" dir.
- IF EXIST "%FROM%\initial" (
- SET FROM=%FROM%\initial
- SET TOCOPY=*.pdb
- CALL :_copyfiles
- )
- ECHO Ready to run/debug %TO%\mini_installer.exe.
- GOTO :EOF
- REM All labels henceforth are subroutines intended to be invoked by CALL.
- REM Canonicalize the first argument, returning it in RET.
- :_canonicalize
- SET RET=%~f1
- GOTO :EOF
- REM Search for a mini_installer.exe in the candidate build outputs.
- :_find_build
- IF "%OUTPUT%"=="" (
- SET OUTPUTS=out build
- ) ELSE (
- SET OUTPUTS=%OUTPUT%
- SET OUTPUT=
- )
- IF "%BUILDTYPE%"=="" (
- SET BUILDTYPES=Debug Release
- ) ELSE (
- SET BUILDTYPES=%BUILDTYPE%
- SET BUILDTYPE=
- )
- FOR %%o IN (%OUTPUTS%) DO (
- FOR %%f IN (%BUILDTYPES%) DO (
- IF EXIST "%FROM%\%%o\%%f\mini_installer.exe" (
- SET OUTPUT=%%o
- SET BUILDTYPE=%%f
- GOTO :EOF
- )
- IF EXIST "%FROM%\%%o\%%f_x64\mini_installer.exe" (
- SET OUTPUT=%%o
- SET BUILDTYPE=%%f
- SET ARCH=_x64
- GOTO :EOF
- )
- )
- )
- GOTO :EOF
- REM Branch to handle copying via robocopy (fast) or xcopy (slow).
- :_copyfiles
- robocopy /? 1> nul 2> nul
- IF NOT "%ERRORLEVEL%"=="9009" (
- robocopy "%FROM%" "%TO%" %TOCOPY% /MT /XX
- ) ELSE (
- IF NOT EXIST "%TO%" mkdir "%TO%"
- call :_xcopy_hack %TOCOPY%
- )
- GOTO :EOF
- REM We can't use a for..in..do loop since we have wildcards, so we make a call
- REM to this with the files to copy.
- :_xcopy_hack
- SHIFT
- IF "%0"=="" GOTO :EOF
- xcopy "%FROM%\%0" "%TO%" /d /y
- GOTO _xcopy_hack
|