diff options
Diffstat (limited to 'build.cmd')
-rw-r--r-- | build.cmd | 89 |
1 files changed, 67 insertions, 22 deletions
@@ -1,6 +1,7 @@ -@if not defined __echo @echo off +@if not defined _echo @echo off setlocal EnableDelayedExpansion EnableExtensions +echo Starting Build at %TIME% set __ThisScriptFull="%~f0" set __VSToolsRoot=%VS140COMNTOOLS% :: Note that the msbuild project files (specifically, dir.proj) will use the following variables, if set: @@ -51,6 +52,7 @@ set __BuildTypeDebug=0 set __BuildTypeChecked=0 set __BuildTypeRelease=0 set __BuildJit32="-DBUILD_JIT32=0" +set __BuildStandaloneGC="-DFEATURE_STANDALONE_GC=0" set __PgoInstrument=0 @@ -107,6 +109,12 @@ if /i "%1" == "usenmakemakefiles" (set __NMakeMakefiles=1&set __ConfigureOnly= if /i "%1" == "buildjit32" (set __BuildJit32="-DBUILD_JIT32=1"&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "pgoinstrument" (set __PgoInstrument=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "toolset_dir" (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) +if /i "%1" == "compatjitcrossgen" (set __CompatJitCrossgen=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) +if /i "%1" == "legacyjitcrossgen" (set __LegacyJitCrossgen=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) +if /i "%1" == "buildstandalonegc" (set __BuildStandaloneGC="-DFEATURE_STANDALONE_GC=1"&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) + +@REM The following can be deleted once the CI system that passes it is updated to not pass it. +if /i "%1" == "altjitcrossgen" (set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if [!processedArgs!]==[] ( call set __UnprocessedBuildArgs=!__args! @@ -170,13 +178,18 @@ if not exist "%__BinDir%" md "%__BinDir%" if not exist "%__IntermediatesDir%" md "%__IntermediatesDir%" if not exist "%__LogsDir%" md "%__LogsDir%" +REM It is convinient to have your Nuget search path include the location where the build +REM will plass packages. However nuget used during the build will fail if that directory +REM does not exist. Avoid this in at least one case by agressively creating the directory. +if not exist "%__BinDir%\.nuget\pkg" md "%__BinDir%\.nuget\pkg" + echo %__MsgPrefix%Commencing CoreCLR Repo build :: Set the remaining variables based upon the determined build configuration echo %__MsgPrefix%Checking prerequisites :: Eval the output from probe-win1.ps1 -for /f "delims=" %%a in ('powershell -NoProfile -ExecutionPolicy RemoteSigned "& ""%__SourceDir%\pal\tools\probe-win.ps1"""') do %%a +for /f "delims=" %%a in ('powershell -NoProfile -ExecutionPolicy ByPass "& ""%__SourceDir%\pal\tools\probe-win.ps1"""') do %%a REM ========================================================================================= REM === @@ -191,15 +204,6 @@ call "%__VSToolsRoot%\VsDevCmd.bat" REM ========================================================================================= REM === -REM === Restore optimization profile data -REM === -REM ========================================================================================= - -echo %__MsgPrefix%Restoring the OptimizationData Package -@call %__ProjectDir%\run.cmd sync -optdata - -REM ========================================================================================= -REM === REM === Build the CLR VM REM === REM ========================================================================================= @@ -224,25 +228,32 @@ if %__BuildNative% EQU 1 ( :: Set the environment for the native build set __VCBuildArch=x86_amd64 if /i "%__BuildArch%" == "x86" ( set __VCBuildArch=x86 ) - if /i "%__BuildArch%" == "arm" (set __VCBuildArch=x86_arm) + if /i "%__BuildArch%" == "arm" ( + set __VCBuildArch=x86_arm + + REM Make CMake pick the highest installed version in the 10.0.* range + set ___SDKVersion="-DCMAKE_SYSTEM_VERSION=10.0" + ) + echo %__MsgPrefix%Using environment: "%__VSToolsRoot%\..\..\VC\vcvarsall.bat" !__VCBuildArch! call "%__VSToolsRoot%\..\..\VC\vcvarsall.bat" !__VCBuildArch! - @if defined __echo @echo on + @if defined _echo @echo on if not defined VSINSTALLDIR ( echo %__MsgPrefix%Error: VSINSTALLDIR variable not defined. exit /b 1 ) if not exist "!VSINSTALLDIR!DIA SDK" goto NoDIA + :GenVSSolution if defined __SkipConfigure goto SkipConfigure echo %__MsgPrefix%Regenerating the Visual Studio solution pushd "%__IntermediatesDir%" - set __ExtraCmakeArgs="-DCLR_CMAKE_TARGET_OS=%__BuildOs%" "-DCLR_CMAKE_PACKAGES_DIR=%__PackagesDir%" "-DCLR_CMAKE_PGO_INSTRUMENT=%__PgoInstrument%" - call "%__SourceDir%\pal\tools\gen-buildsys-win.bat" "%__ProjectDir%" %__VSVersion% %__BuildArch% %__BuildJit32% !__ExtraCmakeArgs! - @if defined __echo @echo on + set __ExtraCmakeArgs=!___SDKVersion! "-DCLR_CMAKE_TARGET_OS=%__BuildOs%" "-DCLR_CMAKE_PACKAGES_DIR=%__PackagesDir%" "-DCLR_CMAKE_PGO_INSTRUMENT=%__PgoInstrument%" + call "%__SourceDir%\pal\tools\gen-buildsys-win.bat" "%__ProjectDir%" %__VSVersion% %__BuildArch% %__BuildJit32% %__BuildStandaloneGC% !__ExtraCmakeArgs! + @if defined _echo @echo on popd :SkipConfigure if defined __ConfigureOnly goto SkipNativeBuild @@ -286,7 +297,7 @@ if /i "%__DoCrossArchBuild%"=="1" ( set __VCBuildArch=x86_amd64 if /i "%__CrossArch%" == "x86" ( set __VCBuildArch=x86 ) @call "%__VSToolsRoot%\..\..\VC\vcvarsall.bat" !__VCBuildArch! - @if defined __echo @echo on + @if defined _echo @echo on if not exist "%__CrossCompIntermediatesDir%" md "%__CrossCompIntermediatesDir%" if defined __SkipConfigure goto SkipConfigureCrossBuild @@ -296,7 +307,7 @@ if /i "%__DoCrossArchBuild%"=="1" ( set "__CMakeBinDir=!__CMakeBinDir:\=/!" set __ExtraCmakeArgs="-DCLR_CROSS_COMPONENTS_BUILD=1" "-DCLR_CMAKE_TARGET_ARCH=%__BuildArch%" "-DCLR_CMAKE_TARGET_OS=%__BuildOs%" "-DCLR_CMAKE_PACKAGES_DIR=%__PackagesDir%" "-DCLR_CMAKE_PGO_INSTRUMENT=%__PgoInstrument%" call "%__SourceDir%\pal\tools\gen-buildsys-win.bat" "%__ProjectDir%" %__VSVersion% %__CrossArch% !__ExtraCmakeArgs! - @if defined __echo @echo on + @if defined _echo @echo on popd :SkipConfigureCrossBuild if not exist "%__CrossCompIntermediatesDir%\install.vcxproj" ( @@ -357,13 +368,32 @@ if %__BuildCoreLib% EQU 1 ( ) ) +REM Need diasymreader.dll on your path for /CreatePdb +set PATH=%PATH%;%WinDir%\Microsoft.Net\Framework64\V4.0.30319;%WinDir%\Microsoft.Net\Framework\V4.0.30319 + if %__BuildNativeCoreLib% EQU 1 ( echo %__MsgPrefix%Generating native image of System.Private.CoreLib for %__BuildOS%.%__BuildArch%.%__BuildType% - + + if "%__CompatJitCrossgen%"=="1" ( + set COMPlus_UseWindowsX86CoreLegacyJit=1 + ) + + if "%__LegacyJitCrossgen%"=="1" ( + set COMPlus_AltJit=* + set COMPlus_AltJitNgen=* + set COMPlus_AltJitName=legacyjit.dll + ) + echo "%__CrossgenExe%" /Platform_Assemblies_Paths "%__BinDir%" /out "%__BinDir%\System.Private.CoreLib.ni.dll" "%__BinDir%\System.Private.CoreLib.dll" "%__CrossgenExe%" /Platform_Assemblies_Paths "%__BinDir%" /out "%__BinDir%\System.Private.CoreLib.ni.dll" "%__BinDir%\System.Private.CoreLib.dll" > "%__CrossGenCoreLibLog%" 2>&1 if NOT !errorlevel! == 0 ( - echo %__MsgPrefix%Error: CrossGen System.Private.CoreLib build failed. Refer to the build log file for details: + echo %__MsgPrefix%Error: CrossGen System.Private.CoreLib build failed. Refer to %__CrossGenCoreLibLog% + echo %__CrossGenCoreLibLog% + exit /b 1 + ) + "%__CrossgenExe%" /Platform_Assemblies_Paths "%__BinDir%" /CreatePdb "%__BinDir%\PDB" "%__BinDir%\System.Private.CoreLib.ni.dll" >> "%__CrossGenCoreLibLog%" 2>&1 + if NOT !errorlevel! == 0 ( + echo %__MsgPrefix%Error: CrossGen /CreatePdb System.Private.CoreLib build failed. Refer to %__CrossGenCoreLibLog% echo %__CrossGenCoreLibLog% exit /b 1 ) @@ -372,8 +402,21 @@ if %__BuildNativeCoreLib% EQU 1 ( set "__CrossGenCoreLibLog=%__LogsDir%\CrossgenMSCoreLib_%__BuildOS%__%__BuildArch%__%__BuildType%.log" set "__CrossgenExe=%__CrossComponentBinDir%\crossgen.exe" + "!__CrossgenExe!" /Platform_Assemblies_Paths "%__BinDir%" /out "%__BinDir%\mscorlib.ni.dll" "%__BinDir%\mscorlib.dll" > "!__CrossGenCoreLibLog!" 2>&1 - if NOT !errorlevel! == 0 ( + set err=!errorlevel! + + if "%__CompatJitCrossgen%"=="1" ( + set COMPlus_UseWindowsX86CoreLegacyJit= + ) + + if "%__LegacyJitCrossgen%"=="1" ( + set COMPlus_AltJit= + set COMPlus_AltJitNgen= + set COMPlus_AltJitName= + ) + + if NOT !err! == 0 ( echo %__MsgPrefix%Error: CrossGen mscorlib facade build failed. Refer to the build log file for details: echo !__CrossGenCoreLibLog! exit /b 1 @@ -381,6 +424,8 @@ if %__BuildNativeCoreLib% EQU 1 ( ) if %__BuildPackages% EQU 1 ( + echo %__MsgPrefix%Building Packages for %__BuildOS%.%__BuildArch%.%__BuildType% + set __MsbuildLog=/flp:Verbosity=normal;LogFile="%__LogsDir%\Nuget_%__BuildOS%__%__BuildArch%__%__BuildType%.log" set __MsbuildWrn=/flp1:WarningsOnly;LogFile="%__LogsDir%\Nuget_%__BuildOS%__%__BuildArch%__%__BuildType%.wrn" set __MsbuildErr=/flp2:ErrorsOnly;LogFile="%__LogsDir%\Nuget_%__BuildOS%__%__BuildArch%__%__BuildType%.err" @@ -427,7 +472,7 @@ REM === All builds complete! REM === REM ========================================================================================= -echo %__MsgPrefix%Repo successfully built. +echo %__MsgPrefix%Repo successfully built. Finished at %TIME% echo %__MsgPrefix%Product binaries are available at !__BinDir! if %__BuildTests% EQU 1 ( echo %__MsgPrefix%Test binaries are available at !__TestBinDir! |