@echo off | |
rem A batch program to build PGO (Profile guided optimization) by first | |
rem building instrumented binaries, then running the testsuite, and | |
rem finally building the optimized code. | |
rem Note, after the first instrumented run, one can just keep on | |
rem building the PGUpdate configuration while developing. | |
setlocal | |
set platf=Win32 | |
set parallel=/m | |
set dir=%~dp0 | |
rem use the performance testsuite. This is quick and simple | |
set job1="%dir%..\tools\pybench\pybench.py" -n 1 -C 1 --with-gc | |
set path1="%dir%..\tools\pybench" | |
rem or the whole testsuite for more thorough testing | |
set job2="%dir%..\lib\test\regrtest.py" | |
set path2="%dir%..\lib" | |
set job=%job1% | |
set clrpath=%path1% | |
:CheckOpts | |
if "%1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts | |
if "%1"=="-2" (set job=%job2%) & (set clrpath=%path2%) & shift & goto CheckOpts | |
if "%1"=="-M" (set parallel=) & shift & goto CheckOpts | |
rem We cannot cross compile PGO builds, as the optimization needs to be run natively | |
set vs_platf=x86 | |
set PGO=%dir%win32-pgo | |
if "%platf%"=="x64" (set vs_platf=amd64) & (set PGO=%dir%amd64-pgo) | |
rem Setup the environment | |
call "%dir%env.bat" %vs_platf% | |
rem build the instrumented version | |
msbuild "%dir%pcbuild.proj" %parallel% /t:Build /p:Configuration=PGInstrument /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 | |
rem remove .pyc files, .pgc files and execute the job | |
"%PGO%\python.exe" "%dir%rmpyc.py" %clrpath% | |
del "%PGO%\*.pgc" | |
"%PGO%\python.exe" %job% | |
rem build optimized version | |
msbuild "%dir%pcbuild.proj" %parallel% /t:Build /p:Configuration=PGUpdate /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9 |