diff options
author | Eric Mellino <erme@microsoft.com> | 2017-03-21 22:41:05 +0300 |
---|---|---|
committer | Eric Mellino <erme@microsoft.com> | 2017-03-24 21:52:40 +0300 |
commit | 33c665c2ccbd87bdad7ead85fd4e70561502214a (patch) | |
tree | 139aecf9099acc2e6f6aff48e4eaa896323b53e4 /Tools-Override | |
parent | 1dd2219b1ba4705ee8291bc0c48cc7222285e7fb (diff) |
Move contents of binplace.targets
* The targets themselves are now located in FrameworkTargeting.targets.
This will let us easily merge them back into buildtools, where the
common logic should live
* The specific properties used in corefx are now in dir.targets.
Diffstat (limited to 'Tools-Override')
-rw-r--r-- | Tools-Override/FrameworkTargeting.targets | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/Tools-Override/FrameworkTargeting.targets b/Tools-Override/FrameworkTargeting.targets index 71a8b0867a..a835bbe570 100644 --- a/Tools-Override/FrameworkTargeting.targets +++ b/Tools-Override/FrameworkTargeting.targets @@ -215,4 +215,114 @@ </ItemGroup> </Target> + <!-- Binplacing targets --> + <Target Name="BinPlace" + DependsOnTargets="GetBinPlaceDirs;BinPlaceFiles;BinPlaceProps" + AfterTargets="CopyFilesToOutputDirectory" + Condition="'$(BinPlaceRef)' == 'true' OR '$(BinPlaceRuntime)' == 'true'" /> + + <Target Name="BinPlaceFiles" + Condition="'@(BinPlaceDir)' != ''" + DependsOnTargets="GetBinPlaceItems" > + + <Message Importance="low" Text="BinPlaceDir: @(BinPlaceDir)" /> + + <Copy SourceFiles="@(BinPlaceItem)" + DestinationFolder="%(BinPlaceDir.Identity)" + SkipUnchangedFiles="true" + OverwriteReadOnlyFiles="true" + Retries="$(CopyRetryCount)" + RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" + UseHardlinksIfPossible="$(BinPlaceUseHardlinksIfPossible)"> + <Output TaskParameter="DestinationFiles" ItemName="FileWrites" /> + </Copy> + </Target> + + <UsingTask TaskName="SaveItems" AssemblyFile="$(CoreFxToolsTaskDir)CoreFx.Tools.dll"/> + <Target Name="BinPlaceProps" + Condition="'@(PackageFileDir)' != ''" + DependsOnTargets="GetBinPlaceItems" > + <PropertyGroup> + <_propsFilename>$(TargetName)</_propsFilename> + <_propsFilename Condition="'$(_propsFilename)' == ''">$(MSBuildProjectName)</_propsFilename> + <_projectDirLength>$(ProjectDir.Length)</_projectDirLength> + </PropertyGroup> + + <ItemGroup> + <_itemsToSave Include="@(BinPlaceItem)"> + <!-- intentionally empty: to be set by pkgproj --> + <TargetPath></TargetPath> + </_itemsToSave> + + <!-- Include source files. --> + <_itemsToSave Condition="'@(Compile)' != ''" Include="@(Compile->'%(FullPath)')"> + <TargetPath>src</TargetPath> + <TargetPath Condition="$([System.String]::Copy('%(FullPath)').StartsWith('$(ProjectDir)'))">src/$([System.String]::Copy('%(FullPath)').Substring($(_projectDirLength)).Replace('\', '/'))</TargetPath> + <IsSourceCodeFile>true</IsSourceCodeFile> + </_itemsToSave> + </ItemGroup> + + <Message Importance="low" Text="PackageFileDir: @(PackageFileDir)" /> + + <SaveItems ItemName="FileToPackage" + Items="@(_itemsToSave)" + Files="@(PackageFileDir->'%(Identity)\$(_propsFilename).props')" /> + </Target> + + <Target Name="GetBinPlaceItems" DependsOnTargets="GetCopyToOutputDirectoryItems"> + <ItemGroup> + <BinPlaceItem Condition="Exists('$(TargetPath)')" Include="$(TargetPath)" /> + <BinPlaceItem Condition="Exists('$(TargetDir)$(TargetName).pdb')" Include="$(TargetDir)$(TargetName).pdb" /> + <BinPlaceItem Condition="'$(BinPlaceReferenceCopyLocalPaths)' != 'false'" Include="@(ReferenceCopyLocalPaths)" /> + <BinPlaceItem Condition="'$(BinPlaceCopyToOutputDirectoryItems)' != 'false'" Include="@(AllItemsFullPathWithTargetPath)" /> + </ItemGroup> + </Target> + + <Target Name="GetBinPlaceDirs" DependsOnTargets="GetBuildConfigurations"> + <!-- find which, if any, build configuration of this project is best + for each binplace configuration --> + <FindBestConfigurations Properties="@(Property)" + PropertyValues="@(PropertyValue)" + SupportedConfigurations="$(_AllBuildConfigurations)" + Configurations="@(BinPlaceConfiguration)"> + <Output TaskParameter="BestConfigurations" ItemName="_bestBinlaceConfigurations" /> + </FindBestConfigurations> + + <ItemGroup> + <_currentBinPlaceConfigurations Include="@(_bestBinlaceConfigurations)" Condition="'%(Identity)' == '$(Configuration)' OR '%(Identity)-$(ConfigurationGroup)' == '$(Configuration)'" /> + + <BinPlaceDir Condition="'$(BinPlaceRuntime)' == 'true'" Include="%(_currentBinPlaceConfigurations.RuntimePath)" /> + <BinPlaceDir Condition="'$(BinPlaceRef)' == 'true'" Include="%(_currentBinPlaceConfigurations.RefPath)" /> + + <PackageFileDir Condition="'$(BinPlaceRuntime)' == 'true'" Include="%(_currentBinPlaceConfigurations.PackageFileRuntimePath)" /> + <PackageFileDir Condition="'$(BinPlaceRef)' == 'true'" Include="%(_currentBinPlaceConfigurations.PackageFileRefPath)" /> + </ItemGroup> + </Target> + + <ItemGroup> + <AdditionalCleanDirectories Include="$(BinDir)netcoreapp" /> + </ItemGroup> + + <!-- Incremental clean only cleans paths under Intermediate or OutDir, handle additional paths --> + <Target Name="_CleanGetCurrentAdditionalFileWrites" BeforeTargets="_CleanGetCurrentAndPriorFileWrites"> + <!-- find files under paths we care about and add them to _CleanCurrentFileWrites to ensure they are written to the file list --> + <FindUnderPath Path="%(AdditionalCleanDirectories.Identity)" Files="@(FileWrites)" UpdateToAbsolutePaths="true"> + <Output TaskParameter="InPath" ItemName="_CleanCurrentFileWrites" /> + </FindUnderPath> + </Target> + + <Target Name="IncrementalCleanAdditionalDirectories" BeforeTargets="IncrementalClean"> + <ItemGroup> + <_CleanOrphanAdditionalFileWrites Include="@(_CleanPriorFileWrites)" Exclude="@(_CleanCurrentFileWrites)" /> + </ItemGroup> + <FindUnderPath Path="%(AdditionalCleanDirectories.Identity)" Files="@(_CleanOrphanAdditionalFileWrites)"> + <Output TaskParameter="InPath" ItemName="_CleanOrphanFileWritesInAdditionalDirectories" /> + </FindUnderPath> + + <!-- Delete the orphaned files. IncrementalClean will remove these from the file list --> + <Delete Files="@(_CleanOrphanFileWritesInAdditionalDirectories)" TreatErrorsAsWarnings="true"> + <Output TaskParameter="DeletedFiles" ItemName="_CleanOrphanFilesDeleted" /> + </Delete> + </Target> + </Project> |