diff options
author | Anton Lapounov <antonl@microsoft.com> | 2021-04-22 02:34:42 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-22 02:34:42 +0300 |
commit | 01aaf1e1a9e0580fb922efe31535f160ea519900 (patch) | |
tree | c1dc6bbd8adf2de6e1f660aa1772da24bf7a0684 /src/coreclr/build-runtime.cmd | |
parent | fd2e5643646e2cba3d468b0632d4b5d6bb0a1e92 (diff) |
Improve arguments handling in build-runtime.cmd (#51639)
Diffstat (limited to 'src/coreclr/build-runtime.cmd')
-rw-r--r-- | src/coreclr/build-runtime.cmd | 112 |
1 files changed, 53 insertions, 59 deletions
diff --git a/src/coreclr/build-runtime.cmd b/src/coreclr/build-runtime.cmd index 1084c7e9704..731c255468e 100644 --- a/src/coreclr/build-runtime.cmd +++ b/src/coreclr/build-runtime.cmd @@ -57,9 +57,8 @@ REM __PassThroughArgs is a set of things that will be passed through to nested c REM when using "all". set __PassThroughArgs= -REM __UnprocessedBuildArgs are args that we pass to msbuild (e.g. /p:TargetArchitecture=x64) -set "__args= %*" -set processedArgs= +REM __UnprocessedBuildArgs are args that we pass to msbuild (e.g. /p:OfficialBuildId=value) +set "__remainingArgs=%*" set __UnprocessedBuildArgs= set __CommonMSBuildArgs= @@ -78,6 +77,7 @@ set __RequestedBuildComponents= :Arg_Loop if "%1" == "" goto ArgsDone +set "__remainingArgs=!__remainingArgs:*%1=!" if /i "%1" == "/?" goto Usage if /i "%1" == "-?" goto Usage @@ -87,29 +87,29 @@ if /i "%1" == "/help" goto Usage if /i "%1" == "-help" goto Usage if /i "%1" == "--help" goto Usage -if /i "%1" == "-all" (set __BuildAll=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-x64" (set __BuildArchX64=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-x86" (set __BuildArchX86=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-arm" (set __BuildArchArm=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-arm64" (set __BuildArchArm64=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) +if /i "%1" == "-all" (set __BuildAll=1&shift&goto Arg_Loop) +if /i "%1" == "-x64" (set __BuildArchX64=1&shift&goto Arg_Loop) +if /i "%1" == "-x86" (set __BuildArchX86=1&shift&goto Arg_Loop) +if /i "%1" == "-arm" (set __BuildArchArm=1&shift&goto Arg_Loop) +if /i "%1" == "-arm64" (set __BuildArchArm64=1&shift&goto Arg_Loop) -if /i "%1" == "-debug" (set __BuildTypeDebug=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-checked" (set __BuildTypeChecked=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-release" (set __BuildTypeRelease=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) +if /i "%1" == "-debug" (set __BuildTypeDebug=1&shift&goto Arg_Loop) +if /i "%1" == "-checked" (set __BuildTypeChecked=1&shift&goto Arg_Loop) +if /i "%1" == "-release" (set __BuildTypeRelease=1&shift&goto Arg_Loop) -if /i "%1" == "-ci" (set __ArcadeScriptArgs="-ci"&set __ErrMsgPrefix=##vso[task.logissue type=error]&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) +if /i "%1" == "-ci" (set __ArcadeScriptArgs="-ci"&set __ErrMsgPrefix=##vso[task.logissue type=error]&shift&goto Arg_Loop) REM TODO these are deprecated remove them eventually REM don't add more, use the - syntax instead -if /i "%1" == "all" (set __BuildAll=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "x64" (set __BuildArchX64=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "x86" (set __BuildArchX86=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "arm" (set __BuildArchArm=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "arm64" (set __BuildArchArm64=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) +if /i "%1" == "all" (set __BuildAll=1&shift&goto Arg_Loop) +if /i "%1" == "x64" (set __BuildArchX64=1&shift&goto Arg_Loop) +if /i "%1" == "x86" (set __BuildArchX86=1&shift&goto Arg_Loop) +if /i "%1" == "arm" (set __BuildArchArm=1&shift&goto Arg_Loop) +if /i "%1" == "arm64" (set __BuildArchArm64=1&shift&goto Arg_Loop) -if /i "%1" == "debug" (set __BuildTypeDebug=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "checked" (set __BuildTypeChecked=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "release" (set __BuildTypeRelease=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) +if /i "%1" == "debug" (set __BuildTypeDebug=1&shift&goto Arg_Loop) +if /i "%1" == "checked" (set __BuildTypeChecked=1&shift&goto Arg_Loop) +if /i "%1" == "release" (set __BuildTypeRelease=1&shift&goto Arg_Loop) REM Explicitly block -Rebuild. if /i "%1" == "Rebuild" ( @@ -125,51 +125,44 @@ if /i "%1" == "-Rebuild" ( REM All arguments after this point will be passed through directly to build.cmd on nested invocations REM using the "all" argument, and must be added to the __PassThroughArgs variable. if [!__PassThroughArgs!]==[] ( - set __PassThroughArgs=%1 + set "__PassThroughArgs=%1" ) else ( - set __PassThroughArgs=%__PassThroughArgs% %1 + set "__PassThroughArgs=%__PassThroughArgs% %1" ) -if /i "%1" == "-alpinedac" (set __BuildNative=0&set __BuildCrossArchNative=1&set __CrossArch=x64&set __CrossOS=1&set __TargetOS=alpine&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-linuxdac" (set __BuildNative=0&set __BuildCrossArchNative=1&set __CrossArch=x64&set __CrossOS=1&set __TargetOS=Linux&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) +if /i "%1" == "-alpinedac" (set __BuildNative=0&set __BuildCrossArchNative=1&set __CrossArch=x64&set __CrossOS=1&set __TargetOS=alpine&shift&goto Arg_Loop) +if /i "%1" == "-linuxdac" (set __BuildNative=0&set __BuildCrossArchNative=1&set __CrossArch=x64&set __CrossOS=1&set __TargetOS=Linux&shift&goto Arg_Loop) -if /i "%1" == "-cmakeargs" (set __CMakeArgs=%2 %__CMakeArgs%&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) -if /i "%1" == "-configureonly" (set __ConfigureOnly=1&set __BuildNative=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-skipconfigure" (set __SkipConfigure=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-skipnative" (set __BuildNative=0&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-skipcrossarchnative" (set __SkipCrossArchNative=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-skipgenerateversion" (set __SkipGenerateVersion=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-skiprestoreoptdata" (set __RestoreOptData=0&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) +if /i "%1" == "-cmakeargs" (set __CMakeArgs=%2 %__CMakeArgs%&set "__remainingArgs=!__remainingArgs:*%2=!"&shift&shift&goto Arg_Loop) +if /i "%1" == "-configureonly" (set __ConfigureOnly=1&set __BuildNative=1&shift&goto Arg_Loop) +if /i "%1" == "-skipconfigure" (set __SkipConfigure=1&shift&goto Arg_Loop) +if /i "%1" == "-skipnative" (set __BuildNative=0&shift&goto Arg_Loop) +if /i "%1" == "-skipcrossarchnative" (set __SkipCrossArchNative=1&shift&goto Arg_Loop) +if /i "%1" == "-skipgenerateversion" (set __SkipGenerateVersion=1&shift&goto Arg_Loop) +if /i "%1" == "-skiprestoreoptdata" (set __RestoreOptData=0&shift&goto Arg_Loop) REM -ninja is a no-op option since Ninja is now the default generator on Windows. -if /i "%1" == "-ninja" (set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-msbuild" (set __Ninja=0&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" == "-enforcepgo" (set __EnforcePgo=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-nopgooptimize" (set __PgoOptimize=0&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "-component" (set __RequestedBuildComponents=%__RequestedBuildComponents%-%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) +if /i "%1" == "-ninja" (shift&goto Arg_Loop) +if /i "%1" == "-msbuild" (set __Ninja=0&shift&goto Arg_Loop) +if /i "%1" == "-pgoinstrument" (set __PgoInstrument=1&shift&goto Arg_Loop) +if /i "%1" == "-enforcepgo" (set __EnforcePgo=1&shift&goto Arg_Loop) +if /i "%1" == "-nopgooptimize" (set __PgoOptimize=0&shift&goto Arg_Loop) +if /i "%1" == "-component" (set __RequestedBuildComponents=%__RequestedBuildComponents%-%2&set "__remainingArgs=!__remainingArgs:*%2=!"&shift&shift&goto Arg_Loop) REM TODO these are deprecated remove them eventually REM don't add more, use the - syntax instead -if /i "%1" == "configureonly" (set __ConfigureOnly=1&set __BuildNative=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "skipconfigure" (set __SkipConfigure=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "skipnative" (set __BuildNative=0&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "skipcrossarchnative" (set __SkipCrossArchNative=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "skipgenerateversion" (set __SkipGenerateVersion=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "skiprestoreoptdata" (set __RestoreOptData=0&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" == "nopgooptimize" (set __PgoOptimize=0&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -if /i "%1" == "enforcepgo" (set __EnforcePgo=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) -REM TODO remove this once it's no longer used in buildpipeline -if /i "%1" == "--" (set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) - -if [!processedArgs!]==[] ( - set __UnprocessedBuildArgs=%__args% -) else ( - set __UnprocessedBuildArgs=%__args% - for %%t in (!processedArgs!) do ( - set __UnprocessedBuildArgs=!__UnprocessedBuildArgs:*%%t=! - ) -) +if /i "%1" == "configureonly" (set __ConfigureOnly=1&set __BuildNative=1&shift&goto Arg_Loop) +if /i "%1" == "skipconfigure" (set __SkipConfigure=1&shift&goto Arg_Loop) +if /i "%1" == "skipnative" (set __BuildNative=0&shift&goto Arg_Loop) +if /i "%1" == "skipcrossarchnative" (set __SkipCrossArchNative=1&shift&goto Arg_Loop) +if /i "%1" == "skipgenerateversion" (set __SkipGenerateVersion=1&shift&goto Arg_Loop) +if /i "%1" == "skiprestoreoptdata" (set __RestoreOptData=0&shift&goto Arg_Loop) +if /i "%1" == "pgoinstrument" (set __PgoInstrument=1&shift&goto Arg_Loop) +if /i "%1" == "nopgooptimize" (set __PgoOptimize=0&shift&goto Arg_Loop) +if /i "%1" == "enforcepgo" (set __EnforcePgo=1&shift&goto Arg_Loop) + +REM Preserve the equal sign for MSBuild properties +if "!__remainingArgs:~0,1!" == "=" (set "__UnprocessedBuildArgs=!__UnprocessedBuildArgs! %1=%2"&set "__remainingArgs=!__remainingArgs:*%2=!"&shift&shift&goto Arg_Loop) +set "__UnprocessedBuildArgs=!__UnprocessedBuildArgs! %1"&shift&goto Arg_Loop :ArgsDone @@ -363,8 +356,9 @@ if %__PgoOptimize% EQU 1 ( 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!"^ - /bl:!__BinLog! + "%OptDataProjectFilePath%" /t:DumpPgoDataPackagePath^ + /p:PgoDataPackagePathOutputFile="!PgoDataPackagePathOutputFile!"^ + %__CommonMSBuildArgs% %__UnprocessedBuildArgs% /bl:!__BinLog! if not !errorlevel! == 0 ( set __exitCode=!errorlevel! |