diff options
-rwxr-xr-x | build.sh | 83 | ||||
-rw-r--r-- | dir.props | 12 | ||||
-rw-r--r-- | src/.nuget/packages.Unix.config | 7 | ||||
-rw-r--r-- | src/.nuget/packages.Windows_NT.config | 4 | ||||
-rw-r--r-- | src/mscorlib/GenerateSplitStringResources.targets | 11 | ||||
-rw-r--r-- | src/mscorlib/Tools/BclRewriter/BclRewriter.targets | 2 | ||||
-rw-r--r-- | src/mscorlib/Tools/PostProcessingTools.targets | 4 | ||||
-rw-r--r-- | src/mscorlib/Tools/Versioning/GenerateVersionInfo.targets | 15 | ||||
-rw-r--r-- | src/mscorlib/mscorlib.csproj | 10 | ||||
-rw-r--r-- | src/mscorlib/src/mscorlib.txt | 6 |
10 files changed, 115 insertions, 39 deletions
@@ -2,7 +2,7 @@ usage() { - echo "Usage: $0 [BuildArch] [BuildType] [clean] [verbose] [cross] [clangx.y]" + echo "Usage: $0 [BuildArch] [BuildType] [clean] [verbose] [cross] [clangx.y] [skipmscorlib]" echo "BuildArch can be: x64, ARM" echo "BuildType can be: Debug, Release" echo "clean - optional argument to force a clean build." @@ -10,6 +10,7 @@ usage() echo "clangx.y - optional argument to build using clang version x.y." echo "cross - optional argument to signify cross compilation," echo " - will use ROOTFS_DIR environment variable if set." + echo "skipmscorlib - do not build mscorlib.dll even if mono is installed." exit 1 } @@ -17,7 +18,7 @@ usage() setup_dirs() { echo Setting up directories for build - + mkdir -p "$__RootBinDir" mkdir -p "$__BinDir" mkdir -p "$__LogsDir" @@ -31,10 +32,10 @@ clean() echo Cleaning previous output for the selected configuration rm -rf "$__BinDir" rm -rf "$__IntermediatesDir" - + rm -rf "$__TestWorkingDir" rm -rf "$__TestIntermediatesDir" - + rm -rf "$__LogsDir/*_$__BuildOS__$__BuildArch__$__BuildType.*" } @@ -43,28 +44,28 @@ clean() check_prereqs() { echo "Checking pre-requisites..." - + # Check presence of CMake on the path hash cmake 2>/dev/null || { echo >&2 "Please install cmake before running this script"; exit 1; } - + # Check for clang hash clang-$__ClangMajorVersion.$__ClangMinorVersion 2>/dev/null || hash clang$__ClangMajorVersion$__ClangMinorVersion 2>/dev/null || hash clang 2>/dev/null || { echo >&2 "Please install clang before running this script"; exit 1; } - + } build_coreclr() { # All set to commence the build - + echo "Commencing build of native components for $__BuildOS.$__BuildArch.$__BuildType" cd "$__IntermediatesDir" - + # Regenerate the CMake solution echo "Invoking cmake with arguments: \"$__ProjectRoot\" $__CMakeArgs" "$__ProjectRoot/src/pal/tools/gen-buildsys-clang.sh" "$__ProjectRoot" $__ClangMajorVersion $__ClangMinorVersion $__BuildArch $__CMakeArgs - + # Check that the makefiles were created. - + if [ ! -f "$__IntermediatesDir/Makefile" ]; then echo "Failed to generate native component build project!" exit 1 @@ -78,9 +79,9 @@ build_coreclr() else NumProc=$(($(getconf _NPROCESSORS_ONLN)+1)) fi - + # Build CoreCLR - + echo "Executing make install -j $NumProc $__UnprocessedBuildArgs" make install -j $NumProc $__UnprocessedBuildArgs @@ -90,6 +91,52 @@ build_coreclr() fi } +build_mscorlib() +{ + hash mono 2> /dev/null || { echo >&2 "Skipping mscorlib.dll build since Mono is not installed."; return; } + + if [ $__SkipMSCorLib == 1 ]; then + echo "Skipping mscorlib.dll build." + return + fi + + echo "Commencing build of mscorlib components for $__BuildOS.$__BuildArch.$__BuildType" + + # Pull NuGet.exe down if we don't have it already + if [ ! -e "$__NuGetPath" ]; then + hash curl 2>/dev/null || hash wget 2>/dev/null || { echo >&2 echo "cURL or wget is required to build mscorlib." ; exit 1; } + + echo "Restoring NuGet.exe..." + + # curl has HTTPS CA trust-issues less often than wget, so lets try that first. + which curl > /dev/null 2> /dev/null + if [ $? -ne 0 ]; then + mkdir -p $__PackagesDir + wget -q -O $__NuGetPath https://api.nuget.org/downloads/nuget.exe + else + curl -sSL --create-dirs -o $__NuGetPath https://api.nuget.org/downloads/nuget.exe + fi + + if [ $? -ne 0 ]; then + echo "Failed to restore NuGet.exe." + exit 1 + fi + fi + + # Grab the MSBuild package if we don't have it already + if [ ! -e "$__MSBuildPath" ]; then + echo "Restoring MSBuild..." + mono "$__NuGetPath" install $__MSBuildPackageId -Version $__MSBuildPackageVersion -source "https://www.myget.org/F/dotnet-buildtools/" -OutputDirectory "$__PackagesDir" + if [ $? -ne 0 ]; then + echo "Failed to restore MSBuild." + exit 1 + fi + fi + + # Invoke MSBuild + mono "$__MSBuildPath" /nologo "$__ProjectRoot/build.proj" /verbosity:minimal "/fileloggerparameters:Verbosity=normal;LogFile=$__LogsDir/MSCorLib_$__BuildOS__$__BuildArch__$__BuildType.log" /t:Build /p:OSGroup=$__BuildOS /p:BuildOS=$__BuildOS /p:UseRoslynCompiler=true /p:BuildNugetPackage=false +} + echo "Commencing CoreCLR Repo build" # Argument types supported by this script: @@ -142,11 +189,16 @@ __RootBinDir="$__ProjectDir/bin" __LogsDir="$__RootBinDir/Logs" __UnprocessedBuildArgs= __MSBCleanBuildArgs= +__SkipMSCorLib=false __CleanBuild=false __VerboseBuild=false __CrossBuild=false __ClangMajorVersion=3 __ClangMinorVersion=5 +__MSBuildPackageId="Microsoft.Build.Mono.Debug" +__MSBuildPackageVersion="14.1.0.0-prerelease" +__MSBuildPath="$__PackagesDir/$__MSBuildPackageId.$__MSBuildPackageVersion/lib/MSBuild.exe" +__NuGetPath="$__PackagesDir/NuGet.exe" for i in "$@" do @@ -197,6 +249,7 @@ for i in "$@" __ClangMinorVersion=7 ;; skipmscorlib) + __SkipMSCorLib=1 ;; *) __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i" @@ -245,6 +298,10 @@ check_prereqs build_coreclr +# Build mscolrib. + +build_mscorlib + # Build complete echo "Repo successfully built." @@ -10,7 +10,7 @@ <!-- Build Tools Versions --> <PropertyGroup> <BuildToolsVersion>1.0.25-prerelease-00056</BuildToolsVersion> - <BuildToolsCoreCLRVersion>1.0.2-prerelease</BuildToolsCoreCLRVersion> + <BuildToolsCoreCLRVersion>1.0.3-prerelease</BuildToolsCoreCLRVersion> <DnxVersion Condition="'$(OsEnvironment)'!='Unix'">1.0.0-beta5-12101</DnxVersion> <DnxVersion Condition="'$(OsEnvironment)'=='Unix'">1.0.0-beta5-12101</DnxVersion> <DnxPackageName Condition="'$(DnxPackageName)' == '' and '$(OsEnvironment)'!='Unix'">dnx-coreclr-win-x86.$(DnxVersion)</DnxPackageName> @@ -112,6 +112,14 @@ <NuSpecs Condition="'$(Configuration)'=='Debug'" Include="$(PackagesBinDir)\Microsoft.DotNet.CoreCLR.Debug.Development.nuspec" /> </ItemGroup> + <!-- + Set up Roslyn predefines + --> + <PropertyGroup> + <RoslynPackageDir>$(PackagesDir)/$(RoslynPackageName).$(RoslynVersion)/</RoslynPackageDir> + <RoslynPropsFile>$(RoslynPackageDir)build/Microsoft.Net.ToolsetCompilers.props</RoslynPropsFile> + </PropertyGroup> + <!-- Setup common target properties that we use to conditionally include sources --> <PropertyGroup> <TargetsFreeBSD Condition="'$(BuildOS)' == 'FreeBSD'">true</TargetsFreeBSD> @@ -121,4 +129,4 @@ <TargetsUnix Condition="'$(TargetsFreeBSD)' == 'true' or '$(TargetsLinux)' == 'true' or '$(TargetsOSX)' == 'true'">true</TargetsUnix> </PropertyGroup> -</Project>
\ No newline at end of file +</Project> diff --git a/src/.nuget/packages.Unix.config b/src/.nuget/packages.Unix.config index b7a7e0b415..0f758ef11f 100644 --- a/src/.nuget/packages.Unix.config +++ b/src/.nuget/packages.Unix.config @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="Microsoft.DotNet.BuildTools.CoreCLR" version="1.0.2-prerelease" /> <package id="Microsoft.DotNet.BuildTools" version="1.0.25-prerelease-00056" /> - <package id="dnx-coreclr-win-x86" version="1.0.0-beta5-12101" /> -</packages>
\ No newline at end of file + <package id="Microsoft.DotNet.BuildTools.CoreCLR" version="1.0.3-prerelease" /> + <package id="dnx-mono" version="1.0.0-beta5-12101" /> + <package id="Microsoft.Net.ToolsetCompilers" version="1.0.0-rc3-20150510-01" /> +</packages> diff --git a/src/.nuget/packages.Windows_NT.config b/src/.nuget/packages.Windows_NT.config index 872e60dd1b..6379b7954b 100644 --- a/src/.nuget/packages.Windows_NT.config +++ b/src/.nuget/packages.Windows_NT.config @@ -2,5 +2,5 @@ <packages> <package id="Microsoft.DotNet.BuildTools" version="1.0.25-prerelease-00056" /> <package id="dnx-coreclr-win-x86" version="1.0.0-beta5-12101" /> - <package id="Microsoft.DotNet.BuildTools.CoreCLR" version="1.0.2-prerelease" /> -</packages>
\ No newline at end of file + <package id="Microsoft.DotNet.BuildTools.CoreCLR" version="1.0.3-prerelease" /> +</packages> diff --git a/src/mscorlib/GenerateSplitStringResources.targets b/src/mscorlib/GenerateSplitStringResources.targets index dd00efd80c..4b69ba6ead 100644 --- a/src/mscorlib/GenerateSplitStringResources.targets +++ b/src/mscorlib/GenerateSplitStringResources.targets @@ -1,6 +1,7 @@ <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> - <ResGenCommand Condition="'$(ResGenCommand)'==''">$(SDK40ToolsPath)ResGen.exe</ResGenCommand> + <ResGenCommand Condition="'$(ResGenCommand)'=='' and '$(OsEnvironment)'=='Windows_NT'">$(SDK40ToolsPath)ResGen.exe</ResGenCommand> + <ResGenCommand Condition="'$(ResGenCommand)'=='' and '$(OsEnvironment)'=='Unix'">resgen</ResGenCommand> <PrepareResourcesDependsOn>GenerateSplitStringResources;$(PrepareResourcesDependsOn)</PrepareResourcesDependsOn> </PropertyGroup> @@ -8,12 +9,14 @@ Inputs="$(MSBuildThisFileFullPath);$(MSBuildProjectFile);$(BclSourcesRoot)\mscorlib.txt" Outputs="@(SplitTextStringResource->'$(IntermediateOutputPath)%(Filename).resources')"> - <ItemGroup> + <ItemGroup Condition="'$(OsEnvironment)'=='Windows_NT'"> <Internal_ResGenDefines Remove="" /> + <Internal_ResGenDefines Include="INCLUDE_DEBUG" /> + <Internal_ResGenDefines Include="INCLUDE_RUNTIME" /> <Internal_ResGenDefines Include="%(SplitTextStringResource.ResGenDefines)" /> </ItemGroup> - <Exec Command=""$(ResGenCommand)" "%(SplitTextStringResource.Identity)" "$(IntermediateOutputPath)%(SplitTextStringResource.Filename).resources" /D:INCLUDE_DEBUG /D:INCLUDE_RUNTIME @(Internal_ResGenDefines->'/D:%(Identity)', ' ')" /> + <Exec Command=""$(ResGenCommand)" "%(SplitTextStringResource.Identity)" "$(IntermediateOutputPath)%(SplitTextStringResource.Filename).resources" @(Internal_ResGenDefines->'/D:%(Identity)', ' ')" /> <ItemGroup> <EmbeddedResource Include="@(SplitTextStringResource->'$(IntermediateOutputPath)%(Filename).resources')"> @@ -27,4 +30,4 @@ <Internal_ResGenDefines Remove="" /> </ItemGroup> </Target> -</Project>
\ No newline at end of file +</Project> diff --git a/src/mscorlib/Tools/BclRewriter/BclRewriter.targets b/src/mscorlib/Tools/BclRewriter/BclRewriter.targets index 837f14fd43..3588a7750b 100644 --- a/src/mscorlib/Tools/BclRewriter/BclRewriter.targets +++ b/src/mscorlib/Tools/BclRewriter/BclRewriter.targets @@ -24,7 +24,7 @@ <OSPlatform Condition="'$(TargetsWindows)' != 'true'">unix</OSPlatform> </PropertyGroup> - <Exec Command=""$(BclRewriterCommand)" "@(AnnotatedAssembly)" "/out:$(BclRewriterOutput)" "/include:$(BclRewriterModelFile)" /platform:$(OSPlatform) /architecture:$(Platform) /flavor:$(_BuildType) /define:$(DefineConstants) /keepTempFiles+" StandardOutputImportance="Normal" /> + <Exec Command=""$(BclRewriterCommand)" -in:"@(AnnotatedAssembly)" -out:"$(BclRewriterOutput)" -include:"$(BclRewriterModelFile)" -platform:$(OSPlatform) -architecture:$(Platform) -flavor:$(_BuildType) -define:"$(DefineConstants)" -keepTempFiles+" StandardOutputImportance="Normal" /> <!-- Update the location of the symbol file--> <PropertyGroup> diff --git a/src/mscorlib/Tools/PostProcessingTools.targets b/src/mscorlib/Tools/PostProcessingTools.targets index 78768ebaae..7231540ddf 100644 --- a/src/mscorlib/Tools/PostProcessingTools.targets +++ b/src/mscorlib/Tools/PostProcessingTools.targets @@ -19,7 +19,7 @@ <!-- Copy to the final output location --> <Copy Retries="3" SourceFiles="@(RewrittenAssembly)" DestinationFiles="$(FinalOutputPath)\%(RewrittenAssembly.FileName)%(RewrittenAssembly.Extension)"/> <Message Importance="High" Text="$(MSBuildProjectName) -> $(FinalOutputPath)\%(RewrittenAssembly.FileName)%(RewrittenAssembly.Extension)" /> - <Copy Retries="3" SourceFiles="$(CurrentAssemblyPdb)" DestinationFiles="$(FinalOutputPath)\$(TargetName).pdb"/> + <Copy Condition="Exists('$(CurrentAssemblyPdb)')" Retries="3" SourceFiles="$(CurrentAssemblyPdb)" DestinationFiles="$(FinalOutputPath)\$(TargetName).pdb"/> </Target> -</Project>
\ No newline at end of file +</Project> diff --git a/src/mscorlib/Tools/Versioning/GenerateVersionInfo.targets b/src/mscorlib/Tools/Versioning/GenerateVersionInfo.targets index 2a804b403c..00f5282c7c 100644 --- a/src/mscorlib/Tools/Versioning/GenerateVersionInfo.targets +++ b/src/mscorlib/Tools/Versioning/GenerateVersionInfo.targets @@ -68,6 +68,7 @@ </PropertyGroup> <Target Name="GenerateVersionHeader" + Condition="'$(GenerateNativeVersionInfo)'=='true'" Inputs="$(MSBuildProjectFile)" Outputs="$(NativeVersionHeaderFile)"> @@ -96,12 +97,18 @@ </Target> - <PropertyGroup> + <PropertyGroup Condition="'$(GenerateNativeVersionInfo)'=='true'"> <WindowsSdkDir Condition="'$(WindowsSdkDir)'==''">$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1@InstallationFolder)</WindowsSdkDir> <RCPath Condition="'$(RCPath)' == ''">$(WindowsSdkDir)bin\x86\rc.exe</RCPath> </PropertyGroup> - <Target Name="NativeResourceCompile" DependsOnTargets="GenerateVersionHeader" Inputs="$(MsBuildThisFileDirectory)NativeVersion.rc" Outputs="$(Win32Resource)"> - <Exec Command=""$(RCPath)" /nologo /x /i "$(IntermediateOutputPath.TrimEnd('\'))" /i "$(WindowsSdkDir)Include\$(WindowsSDKVersion)um" /i "$(WindowsSdkDir)Include\$(WindowsSDKVersion)shared" /D _UNICODE /D UNICODE /l"0x0409" /r /fo "$(Win32Resource)" "$(MsBuildThisFileDirectory)NativeVersion.rc"" /> + <Target Name="NativeResourceCompile" + Condition="'$(GenerateNativeVersionInfo)'=='true'" + DependsOnTargets="GenerateVersionHeader" + Inputs="$(MsBuildThisFileDirectory)NativeVersion.rc" + Outputs="$(Win32Resource)"> + + <Exec Command=""$(RCPath)" /nologo /x /i "$(IntermediateOutputPath.TrimEnd('\'))" /i "$(WindowsSdkDir)Include\$(WindowsSDKVersion)um" /i "$(WindowsSdkDir)Include\$(WindowsSDKVersion)\shared" /D _UNICODE /D UNICODE /l"0x0409" /r /fo "$(Win32Resource)" "$(MsBuildThisFileDirectory)NativeVersion.rc"" /> + </Target> -</Project>
\ No newline at end of file +</Project> diff --git a/src/mscorlib/mscorlib.csproj b/src/mscorlib/mscorlib.csproj index 559e6857ef..a41f7b079e 100644 --- a/src/mscorlib/mscorlib.csproj +++ b/src/mscorlib/mscorlib.csproj @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> @@ -29,7 +29,7 @@ <HighEntropyVA>true</HighEntropyVA> <ErrorReport>prompt</ErrorReport> <Optimize Condition="'$(Optimize)' == ''">true</Optimize> - <GenerateNativeVersionInfo>true</GenerateNativeVersionInfo> + <GenerateNativeVersionInfo Condition="'$(OsEnvironment)'=='Windows_NT'">true</GenerateNativeVersionInfo> <CLSCompliant>true</CLSCompliant> <WarningLevel>4</WarningLevel> <TreatWarningsAsErrors>false</TreatWarningsAsErrors> @@ -78,6 +78,12 @@ <DefineConstants>TRACE;$(DefineConstants)</DefineConstants> </PropertyGroup> + <!-- Roslyn does not support writing PDBs on Unix --> + <PropertyGroup Condition="'$(OsEnvironment)' == 'Unix'"> + <DebugSymbols>false</DebugSymbols> + <DebugType>none</DebugType> + </PropertyGroup> + <!-- Assembly attributes --> <PropertyGroup> <AssemblyName>mscorlib</AssemblyName> diff --git a/src/mscorlib/src/mscorlib.txt b/src/mscorlib/src/mscorlib.txt index 1a036b88c3..6a519b2dc5 100644 --- a/src/mscorlib/src/mscorlib.txt +++ b/src/mscorlib/src/mscorlib.txt @@ -68,12 +68,6 @@ PostconditionOnExceptionFailed = Postcondition failed after throwing an exceptio PostconditionOnExceptionFailed_Cnd = Postcondition failed after throwing an exception: {0} InvariantFailed = Invariant failed. InvariantFailed_Cnd = Invariant failed: {0} -#if PLATFORM_UNIX -StackTrace_Stack = Stack trace: \n{0} -#endif -#if !PLATFORM_UNIX -StackTrace_Stack = Stack trace: \r\n{0} -#endif // PLATFORM_UNIX MustUseCCRewrite = An assembly (probably "{1}") must be rewritten using the code contracts binary rewriter (CCRewrite) because it is calling Contract.{0} and the CONTRACTS_FULL symbol is defined. Remove any explicit definitions of the CONTRACTS_FULL symbol from your project and rebuild. CCRewrite can be downloaded from http://go.microsoft.com/fwlink/?LinkID=169180. \r\nAfter the rewriter is installed, it can be enabled in Visual Studio from the project's Properties page on the Code Contracts pane. Ensure that "Perform Runtime Contract Checking" is enabled, which will define CONTRACTS_FULL. ; Access Control |