* Only try to resolve PGO package path when PGOOptimize is enabled.
* Don't resolve PGO files unless we're optimizing with PGO.
* Only get the PgoDataPackagePath whne PGOOptimize is enabled.
goto ExitWithCode
)
)
+set __PgoOptDataPath=
+if %__PgoOptimize% EQU 1 (
+ set PgoDataPackagePathOutputFile="%__IntermediatesDir%\optdatapath.txt"
-set PgoDataPackagePathOutputFile="%__IntermediatesDir%\optdatapath.txt"
+ REM Parse the optdata package versions out of msbuild so that we can pass them on to CMake
+ powershell -NoProfile -ExecutionPolicy ByPass -NoLogo -File "%__RepoRootDir%\eng\common\msbuild.ps1" /clp:nosummary %__ArcadeScriptArgs%^
+ "%OptDataProjectFilePath%" /t:DumpPgoDataPackagePath %__CommonMSBuildArgs% /p:PgoDataPackagePathOutputFile="!PgoDataPackagePathOutputFile!"
-REM Parse the optdata package versions out of msbuild so that we can pass them on to CMake
-powershell -NoProfile -ExecutionPolicy ByPass -NoLogo -File "%__RepoRootDir%\eng\common\msbuild.ps1" /clp:nosummary %__ArcadeScriptArgs%^
- "%OptDataProjectFilePath%" /t:DumpPgoDataPackagePath %__CommonMSBuildArgs% /p:PgoDataPackagePathOutputFile="!PgoDataPackagePathOutputFile!"
+ if not !errorlevel! == 0 (
+ echo %__ErrMsgPrefix%Failed to get PGO data package path.
+ set __exitCode=!errorlevel!
+ goto ExitWithCode
+ )
+ if not exist "!PgoDataPackagePathOutputFile!" (
+ echo %__ErrMsgPrefix%Failed to get PGO data package path.
+ goto ExitWithError
+ )
- if not !errorlevel! == 0 (
- echo %__ErrMsgPrefix%Failed to get PGO data package path.
- set __exitCode=!errorlevel!
- goto ExitWithCode
+ set /p __PgoOptDataPath=<"!PgoDataPackagePathOutputFile!"
)
-if not exist "!PgoDataPackagePathOutputFile!" (
- echo %__ErrMsgPrefix%Failed to get PGO data package path.
- goto ExitWithError
-)
-
-set /p __PgoOptDataPath=<"!PgoDataPackagePathOutputFile!"
REM =========================================================================================
REM ===
fi
fi
- if [[ "$__IsMSBuildOnNETCoreSupported" == 1 ]]; then
+ if [[ "$__PgoOptimize" == 1 && "$__IsMSBuildOnNETCoreSupported" == 1 ]]; then
# Parse the optdata package versions out of msbuild so that we can pass them on to CMake
local PgoDataPackagePathOutputFile="${__IntermediatesDir}/optdatapath.txt"
# Adds Profile Guided Optimization (PGO) flags to the current target
function(add_pgo TargetName)
- if(CLR_CMAKE_HOST_WIN32)
- set(ProfileFileName "${TargetName}.pgd")
- else(CLR_CMAKE_HOST_WIN32)
- set(ProfileFileName "${TargetName}.profdata")
- endif(CLR_CMAKE_HOST_WIN32)
-
- file(TO_NATIVE_PATH
- "${CLR_CMAKE_OPTDATA_PATH}/data/${ProfileFileName}"
- ProfilePath
- )
-
if(CLR_CMAKE_PGO_INSTRUMENT)
if(CLR_CMAKE_HOST_WIN32)
set_property(TARGET ${TargetName} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " /LTCG /GENPROFILE")
endif(UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELEASE OR UPPERCASE_CMAKE_BUILD_TYPE STREQUAL RELWITHDEBINFO)
endif(CLR_CMAKE_HOST_WIN32)
elseif(CLR_CMAKE_PGO_OPTIMIZE)
+ if(CLR_CMAKE_HOST_WIN32)
+ set(ProfileFileName "${TargetName}.pgd")
+ else(CLR_CMAKE_HOST_WIN32)
+ set(ProfileFileName "${TargetName}.profdata")
+ endif(CLR_CMAKE_HOST_WIN32)
+
+ file(TO_NATIVE_PATH
+ "${CLR_CMAKE_OPTDATA_PATH}/data/${ProfileFileName}"
+ ProfilePath
+ )
+
# If we don't have profile data availble, gracefully fall back to a non-PGO opt build
if(NOT EXISTS ${ProfilePath})
message("PGO data file NOT found: ${ProfilePath}")