From d5eecccd2fb51d1c049ce079ae5fd93ef3f6e22d Mon Sep 17 00:00:00 2001 From: Manish Godse <61718172+mangod9@users.noreply.github.com> Date: Thu, 24 Sep 2020 01:39:47 -0700 Subject: [PATCH 1/5] Fix to get builds working for paths with whitespaces Currently builds clr+libs Validated only of windows mono is still failing. --- src/coreclr/build-runtime.cmd | 42 +++++++++---------- src/coreclr/crossgen-corelib.cmd | 2 +- .../targets/Microsoft.NET.Sdk.IL.targets | 2 +- src/libraries/Native/build-native.cmd | 2 +- ...tem.Runtime.CompilerServices.Unsafe.ilproj | 3 +- 5 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/coreclr/build-runtime.cmd b/src/coreclr/build-runtime.cmd index b867df932902ba..d7fbc1f1275b94 100644 --- a/src/coreclr/build-runtime.cmd +++ b/src/coreclr/build-runtime.cmd @@ -10,7 +10,7 @@ echo %__MsgPrefix%Starting Build at %TIME% set __ThisScriptFull="%~f0" set __ThisScriptDir="%~dp0" -call "%__ThisScriptDir%"\setup_vs_tools.cmd +call %__ThisScriptDir%\setup_vs_tools.cmd if NOT '%ERRORLEVEL%' == '0' goto ExitWithError if defined VS160COMNTOOLS ( @@ -301,8 +301,8 @@ if not exist "%__IntermediatesDir%" md "%__IntermediatesDir%" if not exist "%__LogsDir%" md "%__LogsDir%" if not exist "%__MsbuildDebugLogsDir%" md "%__MsbuildDebugLogsDir%" -if not exist "%__RootBinDir%\Directory.Build.props" copy %__ProjectDir%\EmptyProps.props %__RootBinDir%\Directory.Build.props -if not exist "%__RootBinDir%\Directory.Build.targets" copy %__ProjectDir%\EmptyProps.props %__RootBinDir%\Directory.Build.targets +if not exist "%__RootBinDir%\Directory.Build.props" copy "%__ProjectDir%\EmptyProps.props" "%__RootBinDir%\Directory.Build.props" +if not exist "%__RootBinDir%\Directory.Build.targets" copy "%__ProjectDir%\EmptyProps.props" "%__RootBinDir%\Directory.Build.targets" REM Set up the directory for MSBuild debug logs. set MSBUILDDEBUGPATH=%__MsbuildDebugLogsDir% @@ -343,9 +343,9 @@ REM ============================================================================ if %__SkipGenerateVersion% EQU 0 ( echo %__MsgPrefix%Generating native version headers - set "__BinLog=%__LogsDir%\GenerateVersionHeaders_%__TargetOS%__%__BuildArch%__%__BuildType%.binlog" + set "__BinLog=\"%__LogsDir%\GenerateVersionHeaders_%__TargetOS%__%__BuildArch%__%__BuildType%.binlog\"" powershell -NoProfile -ExecutionPolicy ByPass -NoLogo -File "%__RepoRootDir%\eng\common\msbuild.ps1" /clp:nosummary %__ArcadeScriptArgs%^ - %__RepoRootDir%\eng\empty.csproj /t:GenerateRuntimeVersionFile /restore^ + "%__RepoRootDir%\eng\empty.csproj" /t:GenerateRuntimeVersionFile /restore^ /p:NativeVersionFile="%__RootBinDir%\obj\coreclr\_version.h"^ /p:RuntimeVersionFile="%__RootBinDir%\obj\coreclr\runtime_version.h"^ %__CommonMSBuildArgs% %__UnprocessedBuildArgs% /bl:!__BinLog! @@ -365,9 +365,9 @@ REM ============================================================================ set OptDataProjectFilePath=%__ProjectDir%\src\.nuget\optdata\optdata.csproj if %__RestoreOptData% EQU 1 ( echo %__MsgPrefix%Restoring the OptimizationData Package - set "__BinLog=%__LogsDir%\OptRestore_%__TargetOS%__%__BuildArch%__%__BuildType%.binlog" + set "__BinLog=\"%__LogsDir%\OptRestore_%__TargetOS%__%__BuildArch%__%__BuildType%.binlog\"" powershell -NoProfile -ExecutionPolicy ByPass -NoLogo -File "%__RepoRootDir%\eng\common\msbuild.ps1" /clp:nosummary %__ArcadeScriptArgs%^ - %OptDataProjectFilePath% /t:Restore^ + "%OptDataProjectFilePath%" /t:Restore^ %__CommonMSBuildArgs% %__UnprocessedBuildArgs%^ /nodereuse:false /bl:!__BinLog! if not !errorlevel! == 0 ( @@ -378,8 +378,8 @@ if %__RestoreOptData% EQU 1 ( ) set __PgoOptDataPath= if %__PgoOptimize% EQU 1 ( - set PgoDataPackagePathOutputFile="%__IntermediatesDir%\optdatapath.txt" - set "__BinLog=%__LogsDir%\PgoVersionRead_%__TargetOS%__%__BuildArch%__%__BuildType%.binlog" + set PgoDataPackagePathOutputFile=%__IntermediatesDir%\optdatapath.txt + set "__BinLog=\"%__LogsDir%\PgoVersionRead_%__TargetOS%__%__BuildArch%__%__BuildType%.binlog\"" 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%^ @@ -460,7 +460,7 @@ if %__BuildCrossArchNative% EQU 1 ( if /i "%__CrossArch2%" == "x86" ( set __VCBuildArch=x86 ) if /i "%__CrossArch2%" == "x64" ( set __VCBuildArch=x86_amd64 ) - set __CMakeBinDir=%__CrossComponent2BinDir% + set __CMakeBinDir="%__CrossComponent2BinDir%" set "__CMakeBinDir=!__CMakeBinDir:\=/!" set __ExtraCmakeArgs=%__CMakeClrBuildSubsetArgs% "-DCLR_CROSS_COMPONENTS_BUILD=1" "-DCLR_CMAKE_TARGET_ARCH=%__BuildArch%" "-DCLR_CMAKE_TARGET_OS=%__TargetOS%" "-DCLR_CMAKE_PGO_INSTRUMENT=0" "-DCLR_CMAKE_OPTDATA_PATH=%__PgoOptDataPath%" "-DCLR_CMAKE_PGO_OPTIMIZE=0" "-DCMAKE_SYSTEM_VERSION=10.0" "-DCLR_ENG_NATIVE_DIR=%__RepoRootDir%/eng/native" "-DCLR_REPO_ROOT_DIR=%__RepoRootDir%" %__CMakeArgs% call "%__SourceDir%\pal\tools\gen-buildsys.cmd" "%__ProjectDir%" "%__CrossComp2IntermediatesDir%" %__VSVersion% %__CrossArch2% !__ExtraCmakeArgs! @@ -491,10 +491,10 @@ if %__BuildCrossArchNative% EQU 1 ( if defined __ConfigureOnly goto SkipCrossCompBuild set __BuildLogRootName=Cross - set "__BuildLog=%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.log" - set "__BuildWrn=%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.wrn" - set "__BuildErr=%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.err" - set "__BinLog=%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.binlog" + set "__BuildLog="%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.log"" + set "__BuildWrn="%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.wrn"" + set "__BuildErr="%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.err"" + set "__BinLog="%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.binlog"" set "__MsbuildLog=/flp:Verbosity=normal;LogFile=!__BuildLog!" set "__MsbuildWrn=/flp1:WarningsOnly;LogFile=!__BuildWrn!" set "__MsbuildErr=/flp2:ErrorsOnly;LogFile=!__BuildErr!" @@ -502,7 +502,7 @@ if %__BuildCrossArchNative% EQU 1 ( set "__Logging=!__MsbuildLog! !__MsbuildWrn! !__MsbuildErr! !__MsbuildBinLog! !__ConsoleLoggingParameters!" REM We pass the /m flag directly to MSBuild so that we can get both MSBuild and CL parallelism, which is fastest for our builds. - "%CMakePath%" --build %__CrossCompIntermediatesDir% --target install --config %__BuildType% -- /nologo /m !__Logging! + "%CMakePath%" --build "%__CrossCompIntermediatesDir%" --target install --config %__BuildType% -- /nologo /m !__Logging! if not !errorlevel! == 0 ( set __exitCode=!errorlevel! @@ -526,7 +526,7 @@ if %__BuildCrossArchNative% EQU 1 ( set "__Logging=!__MsbuildLog! !__MsbuildWrn! !__MsbuildErr! !__MsbuildBinLog! !__ConsoleLoggingParameters!" REM We pass the /m flag directly to MSBuild so that we can get both MSBuild and CL parallelism, which is fastest for our builds. - "%CMakePath%" --build %__CrossComp2IntermediatesDir% --target install --config %__BuildType% -- /nologo /m !__Logging! + "%CMakePath%" --build "%__CrossComp2IntermediatesDir%" --target install --config %__BuildType% -- /nologo /m !__Logging! if not !errorlevel! == 0 ( set __exitCode=!errorlevel! @@ -599,10 +599,10 @@ if %__BuildNative% EQU 1 ( if defined __ConfigureOnly goto SkipNativeBuild set __BuildLogRootName=CoreCLR - set "__BuildLog=%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.log" - set "__BuildWrn=%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.wrn" - set "__BuildErr=%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.err" - set "__BinLog=%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.binlog" + set "__BuildLog="%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.log"" + set "__BuildWrn="%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.wrn"" + set "__BuildErr="%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.err"" + set "__BinLog="%__LogsDir%\!__BuildLogRootName!_%__TargetOS%__%__BuildArch%__%__BuildType%.binlog"" set "__MsbuildLog=/flp:Verbosity=normal;LogFile=!__BuildLog!" set "__MsbuildWrn=/flp1:WarningsOnly;LogFile=!__BuildWrn!" set "__MsbuildErr=/flp2:ErrorsOnly;LogFile=!__BuildErr!" @@ -610,7 +610,7 @@ if %__BuildNative% EQU 1 ( set "__Logging=!__MsbuildLog! !__MsbuildWrn! !__MsbuildErr! !__MsbuildBinLog! !__ConsoleLoggingParameters!" REM We pass the /m flag directly to MSBuild so that we can get both MSBuild and CL parallelism, which is fastest for our builds. - "%CMakePath%" --build %__IntermediatesDir% --target install --config %__BuildType% -- /nologo /m !__Logging! + "%CMakePath%" --build "%__IntermediatesDir%" --target install --config %__BuildType% -- /nologo /m !__Logging! if not !errorlevel! == 0 ( set __exitCode=!errorlevel! diff --git a/src/coreclr/crossgen-corelib.cmd b/src/coreclr/crossgen-corelib.cmd index 64957d7757e874..c153745ea91c36 100644 --- a/src/coreclr/crossgen-corelib.cmd +++ b/src/coreclr/crossgen-corelib.cmd @@ -8,7 +8,7 @@ set "__MsgPrefix=CROSSGEN-CORELIB: " echo %__MsgPrefix%Starting Build at %TIME% set __ThisScriptFull="%~f0" -set __ThisScriptDir="%~dp0" +set __ThisScriptDir=%~dp0 :: Note that the msbuild project files (specifically, dir.proj) will use the following variables, if set: :: __BuildArch -- default: x64 diff --git a/src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets b/src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets index 3389fc5814984c..e2836779f99635 100644 --- a/src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets +++ b/src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets @@ -132,7 +132,7 @@ Copyright (c) .NET Foundation. All rights reserved. <_IlasmSwitches Condition="'$(DebugType)' == 'Impl'">$(_IlasmSwitches) -DEBUG=IMPL <_IlasmSwitches Condition="'$(DebugType)' == 'PdbOnly'">$(_IlasmSwitches) -DEBUG=OPT <_IlasmSwitches Condition="'$(Optimize)' == 'True'">$(_IlasmSwitches) -OPTIMIZE - <_IlasmSwitches Condition="'$(IlasmResourceFile)' != ''">$(_IlasmSwitches) -RESOURCES=$(IlasmResourceFile) + <_IlasmSwitches Condition="'$(IlasmResourceFile)' != ''">$(_IlasmSwitches) -RESOURCES="$(IlasmResourceFile)" diff --git a/src/libraries/Native/build-native.cmd b/src/libraries/Native/build-native.cmd index cefe549e0c1464..39357ebbbd0005 100644 --- a/src/libraries/Native/build-native.cmd +++ b/src/libraries/Native/build-native.cmd @@ -128,7 +128,7 @@ exit /b 1 :GenVSSolution :: generate version file powershell -NoProfile -ExecutionPolicy ByPass -NoLogo -File "%__repoRoot%\eng\common\msbuild.ps1" /clp:nosummary %__ArcadeScriptArgs%^ - %__repoRoot%\eng\empty.csproj /p:NativeVersionFile="%__artifactsDir%\obj\_version.h"^ + "%__repoRoot%\eng\empty.csproj" /p:NativeVersionFile="%__artifactsDir%\obj\_version.h"^ /t:GenerateNativeVersionFile /restore :: Regenerate the VS solution diff --git a/src/libraries/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.ilproj b/src/libraries/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.ilproj index 07e9ef8eac8f2a..dbfb6fb94c1a60 100644 --- a/src/libraries/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.ilproj +++ b/src/libraries/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.ilproj @@ -33,7 +33,8 @@ Outputs="'$(VersionFilePath)"> $([MSBuild]::NormalizeDirectory('$(IntermediateOutputPath)', 'version')) - $(IlasmFlags) -INCLUDE=$(IncludePath) + $(IncludePath.TrimEnd('\')) + $(IlasmFlags) -INCLUDE="$(IncludePathTrimmed)" $([MSBuild]::NormalizePath('$(IncludePath)', 'version.h')) <_AssemblyVersion>$(AssemblyVersion.Replace('.', ':')) <_coreAssemblyName Condition="'%(ReferencePath.FileName)' == '$(CoreAssembly)'">%(ReferencePath.FusionName) From 603d953f8f6ad3afb850a6ecf73ba50639c8197d Mon Sep 17 00:00:00 2001 From: Manish Godse <61718172+mangod9@users.noreply.github.com> Date: Fri, 25 Sep 2020 15:37:11 -0700 Subject: [PATCH 2/5] fix midl to not emit full path in generated headers --- src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt | 2 +- src/coreclr/src/inc/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt b/src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt index 98cc178b8a3005..a38e6a6be3a5a8 100644 --- a/src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt +++ b/src/coreclr/src/ToolBox/SOS/DacTableGen/CMakeLists.txt @@ -11,7 +11,7 @@ FIND_PROGRAM(TLBIMP tlbimp.exe) FIND_PROGRAM(MIDL midl.exe) add_custom_command( OUTPUT "${DIALib}" - COMMAND ${MIDL} /I "${DIASDK_DIR}/include" "${DIASDK_DIR}/idl/dia2.idl" /tlb "${CMAKE_CURRENT_BINARY_DIR}/dia2.tlb" + COMMAND ${MIDL} /no_stamp /I "${DIASDK_DIR}/include" "${DIASDK_DIR}/idl/dia2.idl" /tlb "${CMAKE_CURRENT_BINARY_DIR}/dia2.tlb" COMMAND ${TLBIMP} dia2.tlb /out:"${DIALib}" ) add_custom_target(gen_dialib DEPENDS "${DIALib}") diff --git a/src/coreclr/src/inc/CMakeLists.txt b/src/coreclr/src/inc/CMakeLists.txt index 4f75d3a882d4c1..456cdf90965345 100644 --- a/src/coreclr/src/inc/CMakeLists.txt +++ b/src/coreclr/src/inc/CMakeLists.txt @@ -29,7 +29,7 @@ if(CLR_CMAKE_HOST_WIN32) set(OUT_NAME ${CMAKE_CURRENT_BINARY_DIR}/idls_out/${IDLNAME}_i.c) list(APPEND CORGUIDS_SOURCES ${OUT_NAME}) add_custom_command(OUTPUT ${OUT_NAME} - COMMAND ${MIDL} ${MIDL_INCLUDE_DIRECTORIES} /h ${CMAKE_CURRENT_BINARY_DIR}/idls_out/${IDLNAME}.h ${MIDL_DEFINITIONS} /out ${CMAKE_CURRENT_BINARY_DIR}/idls_out ${CMAKE_CURRENT_SOURCE_DIR}/${GENERATE_IDL} + COMMAND ${MIDL} ${MIDL_INCLUDE_DIRECTORIES} /no_stamp /h ${CMAKE_CURRENT_BINARY_DIR}/idls_out/${IDLNAME}.h ${MIDL_DEFINITIONS} /out ${CMAKE_CURRENT_BINARY_DIR}/idls_out ${CMAKE_CURRENT_SOURCE_DIR}/${GENERATE_IDL} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${GENERATE_IDL} COMMENT "Compiling ${GENERATE_IDL}") endforeach(GENERATE_IDL) From 48310fc3586deae3bcbad6aa496872c285b66d66 Mon Sep 17 00:00:00 2001 From: Manish Godse <61718172+mangod9@users.noreply.github.com> Date: Sat, 26 Sep 2020 14:18:37 -0700 Subject: [PATCH 3/5] avoid full filenames in python source generator --- src/coreclr/src/scripts/genEventPipe.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/coreclr/src/scripts/genEventPipe.py b/src/coreclr/src/scripts/genEventPipe.py index 86d0dfea4a8863..d8c6cdca24fe1f 100644 --- a/src/coreclr/src/scripts/genEventPipe.py +++ b/src/coreclr/src/scripts/genEventPipe.py @@ -392,10 +392,10 @@ def generateEventPipeImplFiles( eventpipeImpl.write(stdprolog_cpp) header = """ -#include "{root:s}/vm/common.h" -#include "{root:s}/vm/eventpipeprovider.h" -#include "{root:s}/vm/eventpipeevent.h" -#include "{root:s}/vm/eventpipe.h" +#include +#include +#include +#include #if defined(TARGET_UNIX) #define wcslen PAL_wcslen From ad826139f482dbc0038546fb853988d6cbb4a466 Mon Sep 17 00:00:00 2001 From: Manish Godse <61718172+mangod9@users.noreply.github.com> Date: Sat, 26 Sep 2020 21:21:10 -0700 Subject: [PATCH 4/5] Fix ilasm target to support folders with spaces. --- .../Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets b/src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets index e2836779f99635..c9d2388ef47f28 100644 --- a/src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets +++ b/src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets @@ -135,7 +135,7 @@ Copyright (c) .NET Foundation. All rights reserved. <_IlasmSwitches Condition="'$(IlasmResourceFile)' != ''">$(_IlasmSwitches) -RESOURCES="$(IlasmResourceFile)" - + From 886453b249366a789c5f2f46c412f555c0dc9038 Mon Sep 17 00:00:00 2001 From: Manish Godse <61718172+mangod9@users.noreply.github.com> Date: Sat, 26 Sep 2020 22:00:31 -0700 Subject: [PATCH 5/5] update targets for ILDASM --- .../Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets b/src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets index c9d2388ef47f28..4cbdc29d8219e6 100644 --- a/src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets +++ b/src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets @@ -79,7 +79,7 @@ Copyright (c) .NET Foundation. All rights reserved. <_ilResourceReference>%(ILResourceReference.FullPath) - <_IldasmCommand>$(_IldasmDir)ildasm + <_IldasmCommand>"$(_IldasmDir)ildasm" <_IldasmCommand>$(_IldasmCommand) "$(_ilResourceReference)" <_IldasmCommand>$(_IldasmCommand) /OUT="$(IntermediateOutputPath)/$(MSBuildProjectName).ref.il"