5ebc6a1ceb
* Eliminate CleanPublishOutput * Decompose Crossgen Task * WiP * TarGzFileExtractToDirectory * FixModeFlags --> CHMod Also various eliminations of dead code * Tasks cleanup Move all tasks to .tasks file. There is little value in keepint them in each source file as they are already being used assumptively by files that happen to get executed later. Also eliminating uses of <Exec> for DotNet invocations * Move to BuildTools implementation of TarGzCreateFromDirectory * Eliminate Command.cs and helpers * Remove dead code * Revert TarGz from BuildTools Latest build tools package has not picked up the task, though it is checked in. * Disable ChMod on Windows * Windows bug fix * PR Feedback * Finish changing Chmod caps
233 lines
No EOL
10 KiB
XML
233 lines
No EOL
10 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<Import Project="compile/Microsoft.DotNet.Cli.LzmaArchive.targets" />
|
|
<Import Project="crossgen/Microsoft.DotNet.Cli.Crossgen.targets" />
|
|
|
|
<ItemGroup>
|
|
<PublishOutputExtensions Include="$(ExeExtension);.dll;.pdb;.deps.json;.runtimeconfig.json" />
|
|
</ItemGroup>
|
|
|
|
<Target Name="Compile" DependsOnTargets="Prepare;
|
|
SetupStage;
|
|
CompileStage;
|
|
BuildProjectsForNuGetPackages;
|
|
GenerateNuGetPackagesArchive" />
|
|
|
|
<Target Name="SetupStage"
|
|
DependsOnTargets="Prepare">
|
|
<PropertyGroup>
|
|
<SrcDirectory>$(RepoRoot)/src</SrcDirectory>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<CompileStageInputs Include="$(SrcDirectory)/**/*.cs" Exclude="$(SrcDirectory)/**/obj/**/*.cs" />
|
|
<CompileStageInputs Include="$(SrcDirectory)/**/project.json;$(SrcDirectory)/**/project.lock.json" />
|
|
|
|
<Stage Include="Stage1">
|
|
<Inputs>@(CompileStageInputs)</Inputs>
|
|
<StageDirectory>$(Stage1Directory)</StageDirectory>
|
|
<StageSymbolsDirectory>$(Stage1SymbolsDirectory)</StageSymbolsDirectory>
|
|
<DotnetDir>$(Stage0Directory)</DotnetDir>
|
|
</Stage>
|
|
<Stage Include="Stage2">
|
|
<Inputs>@(CompileStageInputs)</Inputs>
|
|
<StageDirectory>$(Stage2Directory)</StageDirectory>
|
|
<StageSymbolsDirectory>$(Stage2SymbolsDirectory)</StageSymbolsDirectory>
|
|
<DotnetDir>$(Stage1Directory)</DotnetDir>
|
|
</Stage>
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="CompileStage"
|
|
DependsOnTargets="SetupStage;
|
|
InitCrossgenProps;"
|
|
Inputs="%(Stage.Inputs)"
|
|
Outputs="%(StageDirectory)/sdk/$(SdkVersion)/dotnet.dll">
|
|
<PropertyGroup>
|
|
<DynamicLibPrefix Condition=" '$(OSName)' == 'win' "></DynamicLibPrefix>
|
|
<DynamicLibPrefix Condition=" '$(OSName)' != 'win' ">lib</DynamicLibPrefix>
|
|
|
|
<DynamicLibSuffix Condition=" '$(OSName)' == 'win' ">.dll</DynamicLibSuffix>
|
|
<DynamicLibSuffix Condition=" '$(OSName)' == 'osx' ">.dylib</DynamicLibSuffix>
|
|
<DynamicLibSuffix Condition=" '$(DynamicLibSuffix)' == '' ">.so</DynamicLibSuffix>
|
|
|
|
<DotnetHostBaseName>dotnet$(ExeExtension)</DotnetHostBaseName>
|
|
<DotnetHostFxrBaseName>$(DynamicLibPrefix)hostfxr$(DynamicLibSuffix)</DotnetHostFxrBaseName>
|
|
<HostPolicyBaseName>$(DynamicLibPrefix)hostpolicy$(DynamicLibSuffix)</HostPolicyBaseName>
|
|
|
|
<StageDirectory>%(Stage.StageDirectory)</StageDirectory>
|
|
<StageSymbolsDirectory>%(Stage.StageSymbolsDirectory)</StageSymbolsDirectory>
|
|
<SdkOutputDirectory>$(StageDirectory)/sdk/$(SdkVersion)</SdkOutputDirectory>
|
|
<BinaryToCorehostifyRelDir>runtimes/any/native</BinaryToCorehostifyRelDir>
|
|
<BinaryToCorehostifyOutDir>$(SdkOutputDirectory)/$(BinaryToCorehostifyRelDir)</BinaryToCorehostifyOutDir>
|
|
<MSBuildTargetsDirectory>$(SdkOutputDirectory)/runtimes/any/native</MSBuildTargetsDirectory>
|
|
|
|
<SharedFrameworkNameVersionPath>$(StageDirectory)/shared/$(SharedFrameworkName)/$(SharedFrameworkVersion)</SharedFrameworkNameVersionPath>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<BinObj Remove="*" />
|
|
<BinObj Include="$(SrcDirectory)/**/bin/**/*" />
|
|
<BinObj Include="$(SrcDirectory)/**/obj/**/*" />
|
|
|
|
<FilesToRemoveFromStageDirectory Remove="*" />
|
|
<FilesToRemoveFromStageDirectory Include="$(StageDirectory)/**/*" />
|
|
|
|
<SharedFramework Remove="*" />
|
|
<SharedFramework Include="$(SharedFrameworkPublishDirectory)/**/*" />
|
|
|
|
<BinariesToRemove Remove="*" />
|
|
<BinariesToRemove Include="csc" />
|
|
<BinariesToRemove Include="vbc" />
|
|
</ItemGroup>
|
|
|
|
<Delete Files="@(BinObj)" />
|
|
|
|
<Delete Files="@(FilesToRemoveFromStageDirectory)" />
|
|
<RemoveDir Directories="$(StageDirectory)" />
|
|
<MakeDir Directories="$(StageDirectory)"/>
|
|
|
|
<!-- CopySharedFramework -->
|
|
<Copy SourceFiles="@(SharedFramework)"
|
|
DestinationFiles="@(SharedFramework->'$(StageDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" />
|
|
|
|
<!-- Publish DotNet -->
|
|
<DotNetPublish ToolPath="%(Stage.DotnetDir)"
|
|
NativeSubdirectory="True"
|
|
Output="$(SdkOutputDirectory)"
|
|
Configuration="$(Configuration)"
|
|
VersionSuffix="$(CommitCount)"
|
|
ProjectPath="$(SrcDirectory)/dotnet" />
|
|
|
|
<!-- Corehostify Binaries -->
|
|
<ItemGroup Condition=" '$(OSName)' != 'win' ">
|
|
<SdkOutputChmodTargets Remove="*" />
|
|
<SdkOutputChmodTargets Include="$(SdkOutputDirectory)/**/*.exe;
|
|
$(SdkOutputDirectory)/**/*.dll" >
|
|
<!-- Managed assemblies do not need execute -->
|
|
<Mode>u=rw,g=r,o=r</Mode>
|
|
</SdkOutputChmodTargets>
|
|
|
|
<SdkOutputChmodTargets Include="$(SdkOutputDirectory)/**/*.dylib;
|
|
$(SdkOutputDirectory)/**/*.so" >
|
|
<!-- Generally, dylibs and sos have 'x' -->
|
|
<Mode>u=rwx,g=rx,o=rx</Mode>
|
|
</SdkOutputChmodTargets>
|
|
|
|
<SdkOutputChmodTargets Include="$(SdkOutputDirectory)/**/*"
|
|
Exclude="$(SdkOutputDirectory)/**/*.*" >
|
|
<!-- Executables need x -->
|
|
<Mode>u=rwx,g=rx,o=rx</Mode>
|
|
</SdkOutputChmodTargets>
|
|
</ItemGroup>
|
|
|
|
<Chmod Condition=" '$(OSName)' != 'win' "
|
|
File="%(SdkOutputChModTargets.FullPath)"
|
|
Mode="%(SdkOutputChModTargets.Mode)" />
|
|
|
|
<DotNetPublish ToolPath="%(Stage.DotnetDir)"
|
|
Output="$(SdkOutputDirectory)"
|
|
Framework="netcoreapp1.0"
|
|
ProjectPath="$(SrcDirectory)/compilers" />
|
|
|
|
<Copy SourceFiles="$(BinaryToCorehostifyOutDir)/csc.exe"
|
|
DestinationFiles="$(SdkOutputDirectory)/csc.dll" />
|
|
|
|
<Move SourceFiles="$(BinaryToCorehostifyOutDir)/csc.exe"
|
|
DestinationFiles="$(SdkOutputDirectory)/csc.exe" />
|
|
|
|
<Copy SourceFiles="$(SdkOutputDirectory)/compilers.deps.json"
|
|
DestinationFiles="$(SdkOutputDirectory)/csc.deps.json" />
|
|
|
|
<Copy SourceFiles="$(SdkOutputDirectory)/compilers.runtimeconfig.json"
|
|
DestinationFiles="$(SdkOutputDirectory)/csc.runtimeconfig.json" />
|
|
|
|
<ChangeEntryPointLibraryName
|
|
DepsFile="$(SdkOutputDirectory)/csc.deps.json"
|
|
NewName="csc.deps.json" />
|
|
|
|
<RemoveAssetFromDepsPackages DepsFile="$(SdkOutputDirectory)/csc.deps.json"
|
|
SectionName="runtimeTargets"
|
|
AssetPath="$(BinaryToCorehostifyRelDir)/%(BinariesToRemove.Identity).exe" />
|
|
<RemoveAssetFromDepsPackages DepsFile="$(SdkOutputDirectory)/dotnet.deps.json"
|
|
SectionName="runtimeTargets"
|
|
AssetPath="$(BinaryToCorehostifyRelDir)/%(BinariesToRemove.Identity).exe" />
|
|
|
|
<!-- cleanup compilers project output we don't need -->
|
|
<Delete Files="$(SdkOutputDirectory)/compilers%(PublishOutputExtensions.Identity)" />
|
|
|
|
<!-- Copy Host to SDK Directory -->
|
|
<Copy SourceFiles="$(SharedFrameworkNameVersionPath)/$(DotnetHostBaseName)"
|
|
DestinationFiles="$(SdkOutputDirectory)/corehost$(ExeExtension)" />
|
|
|
|
<Copy SourceFiles="$(SharedFrameworkNameVersionPath)/$(DotnetHostFxrBaseName)"
|
|
DestinationFiles="$(SdkOutputDirectory)/$(DotnetHostFxrBaseName)" />
|
|
|
|
<Copy SourceFiles="$(SharedFrameworkNameVersionPath)/$(HostPolicyBaseName)"
|
|
DestinationFiles="$(SdkOutputDirectory)/$(HostPolicyBaseName)" />
|
|
|
|
<!-- Crossgen the Shared Framework -->
|
|
<ItemGroup>
|
|
<SdkFiles Remove="*" />
|
|
<SdkFiles Include="$(SdkOutputDirectory)/**/*" />
|
|
<SdkFilesWithPEMarker Remove="*" />
|
|
</ItemGroup>
|
|
|
|
<AddMetadataIsPE Items="@(SdkFiles)">
|
|
<Output TaskParameter="ResultItems" ItemName="SdkFilesWithPEMarker" />
|
|
</AddMetadataIsPE>
|
|
|
|
<ItemGroup>
|
|
<CrossgenTargets Remove="*" />
|
|
<CrossgenTargets Include="%(SdkFilesWithPEMarker.FullPath)" Condition=" '%(SdkFilesWithPEMarker.IsPE)' == 'True' " />
|
|
|
|
<CompileStageSdkDirectories Remove="*" />
|
|
</ItemGroup>
|
|
|
|
<RemoveDuplicates Inputs="@(SdkFiles->'%(RootDir)%(Directory)')">
|
|
<Output TaskParameter="Filtered" ItemName="CompileStageSdkDirectories" />
|
|
</RemoveDuplicates>
|
|
|
|
<Crossgen Condition=" '$(DISABLE_CROSSGEN)' != '1' "
|
|
SourceAssembly="%(CrossgenTargets.FullPath)"
|
|
DestinationPath="%(CrossgenTargets.FullPath)"
|
|
JITPath="$(LibCLRJitPath)"
|
|
CrossgenPath="$(CrossgenPath)"
|
|
ReadyToRun="True"
|
|
PlatformAssemblyPaths="@(PlatformAssemblies);
|
|
$(SharedFrameworkNameVersionPath);
|
|
@(CompileStageSdkDirectories)" />
|
|
|
|
<!-- Generate .version file -->
|
|
<WriteLinesToFile File="$(SdkOutputDirectory)/.version"
|
|
Lines="$(CommitHash);$(SdkVersion)"
|
|
Overwrite="true" />
|
|
|
|
<ItemGroup>
|
|
<MSBuildTargetsToCopy Include="$(MSBuildTargetsDirectory)/**/*.targets" />
|
|
<MSBuildTargetsToCopy Include="$(MSBuildTargetsDirectory)/**/*.Targets" />
|
|
<MSBuildTargetsToCopy Include="$(MSBuildTargetsDirectory)/**/*.props" />
|
|
<MSBuildTargetsToCopy Include="$(MSBuildTargetsDirectory)/**/*.overridetasks" />
|
|
<MSBuildTargetsToCopy Include="$(MSBuildTargetsDirectory)/**/*.tasks" />
|
|
</ItemGroup>
|
|
|
|
<Copy SourceFiles="@(MSBuildTargetsToCopy)"
|
|
DestinationFiles="@(MSBuildTargetsToCopy->'$(SdkOutputDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" />
|
|
|
|
<ItemGroup>
|
|
<FilesToClean Include="$(StageDirectory)/sdk/**/vbc.exe" />
|
|
</ItemGroup>
|
|
|
|
<Delete Files="@(FilesToClean)" />
|
|
|
|
<ItemGroup>
|
|
<FilesToCopy Include="$(StageDirectory)/**/*" />
|
|
<PdbsToClean Include="$(StageDirectory)/sdk/**/*.pdb" />
|
|
</ItemGroup>
|
|
|
|
<Copy SourceFiles="@(FilesToCopy)"
|
|
DestinationFiles="@(FilesToCopy->'$(StageSymbolsDirectory)\%(RecursiveDir)%(Filename)%(Extension)')" />
|
|
|
|
<Delete Files="@(PdbsToClean)" />
|
|
</Target>
|
|
</Project> |