summaryrefslogtreecommitdiffstats
path: root/PCbuild/build_pgo.bat
blob: 79ec2670b043653398e6a8bcd1c33cdc847fbff5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
@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