This repository has been archived by the owner on Jan 23, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5k
/
shims.proj
120 lines (98 loc) · 5.38 KB
/
shims.proj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<PropertyGroup>
<BuildConfigurations>
netcoreapp
</BuildConfigurations>
</PropertyGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
<PropertyGroup>
<NetCoreAppRefPath>$(RefPath)</NetCoreAppRefPath>
</PropertyGroup>
<Target Name="GetGenFacadesInputs">
<ItemGroup>
<GenFacadesContracts Include="$(NetFxRefPath)*.dll" />
<GenFacadesContracts Include="$(NetStandardRefPath)netstandard.dll" />
<GenFacadesSeeds Include="$(NetCoreAppRefPath)*.dll" Exclude="$(NetCoreAppRefPath)System.Private.CoreLib.dll" />
</ItemGroup>
</Target>
<PropertyGroup>
<GenFacadesInputPath>$(IntermediateOutputPath)PreGenFacades/</GenFacadesInputPath>
<GenFacadesOutputPath>$(IntermediateOutputPath)facades/</GenFacadesOutputPath>
<GenFacadesResponseFile>$(GenFacadesInputPath)genfacades.rsp</GenFacadesResponseFile>
<GenFacadesSemaphoreFile>$(GenFacadesInputPath)genfacades.sempahore</GenFacadesSemaphoreFile>
</PropertyGroup>
<!-- Generate Facades -->
<Target Name="RunGenFacades"
DependsOnTargets="GetGenFacadesInputs"
Inputs="@(GenFacadesContracts);@(GenFacadeSeeds)"
Outputs="$(GenFacadesSemaphoreFile)">
<PropertyGroup>
<!--<GenFacadesArgs>$(GenFacadesArgs) -contracts:"@(GenFacadesContracts, ',')"</GenFacadesArgs>-->
<GenFacadesArgs>$(GenFacadesArgs) -seeds:"@(GenFacadesSeeds, ',')"</GenFacadesArgs>
<GenFacadesArgs>$(GenFacadesArgs) -facadePath:"$(GenFacadesOutputPath)"</GenFacadesArgs>
<GenFacadesArgs>$(GenFacadesArgs) -producePdb:false</GenFacadesArgs>
<!-- TODO: We should remove this flag once we have all the types for netstandard -->
<GenFacadesArgs>$(GenFacadesArgs) -ignoreMissingTypes</GenFacadesArgs>
</PropertyGroup>
<MakeDir Directories="$(GenFacadesInputPath)" />
<WriteLinesToFile File="$(GenFacadesResponseFile)" Lines="$(GenFacadesArgs)" Overwrite="true" />
<PropertyGroup>
<GenFacadesCmd>$(ToolHostCmd) "$(ToolsDir)GenFacades.exe"</GenFacadesCmd>
</PropertyGroup>
<Exec Command="$(GenFacadesCmd) -contracts:"$(NetFxRefPath)" @"$(GenFacadesResponseFile)"" WorkingDirectory="$(ToolRuntimePath)" />
<Exec Command="$(GenFacadesCmd) -contracts:$(NetStandardRefPath)netstandard.dll @"$(GenFacadesResponseFile)"" WorkingDirectory="$(ToolRuntimePath)" />
<!-- Copy the facades to the package ref and lib folders to be included in the packages -->
<!-- TODO: replace with BinPlacing targets -->
<ItemGroup>
<PackageOutputPaths Include="$(BinDir)$(TargetGroup)/pkg/ref" />
<PackageOutputPaths Include="$(BinDir)$(TargetGroup)/pkg/lib" />
<PackageOutputPaths Include="$(BuildConfigurationRefPath)" />
<PackageOutputPaths Include="$(RuntimePath)" />
<ProducedFacades Include="$(GenFacadesOutputPath)*.dll" />
<FileWrites Include="@(ProducedFacades)" />
</ItemGroup>
<Copy SourceFiles="@(ProducedFacades)" DestinationFolder="%(PackageOutputPaths.Identity)" >
<Output TaskParameter="DestinationFiles" ItemName="FileWrites" />
</Copy>
<Touch Files="$(GenFacadesSemaphoreFile)" AlwaysCreate="true" />
</Target>
<PropertyGroup>
<ApiCompatResponseFile>$(IntermediateOutputPath)/apicompat.rsp</ApiCompatResponseFile>
<ApiCompatBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.netfx461.txt</ApiCompatBaselineFile>
<ApiCompatNSBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.netstandard20.txt</ApiCompatNSBaselineFile>
</PropertyGroup>
<!-- Run ApiCompat -->
<Target Name="RunApiCompat"
Inputs="$(ApiCompatResponseFile);@(GenFacadesContracts)"
Outputs="$(ApiCompatBaselineFile);$(ApiCompatNSBaselineFile)"
>
<PropertyGroup>
<ApiCompatArgs>$(ApiCompatArgs) -implDirs:"$(NetCoreAppRefPath),$(GenFacadesOutputPath)"</ApiCompatArgs>
<ApiCompatExitCode>0</ApiCompatExitCode>
<ApiCompatCmd>$(ToolHostCmd) "$(ToolsDir)ApiCompat.exe"</ApiCompatCmd>
</PropertyGroup>
<MakeDir Directories="$(IntermediateOutputPath)" />
<WriteLinesToFile File="$(ApiCompatResponseFile)" Lines="$(ApiCompatArgs)" Overwrite="true" />
<Exec Command="$(ApiCompatCmd) "$(NetFxRefPath)" @"$(ApiCompatResponseFile)" > $(ApiCompatBaselineFile)"
CustomErrorRegularExpression="^[a-zA-Z]+ :"
StandardOutputImportance="Low"
IgnoreExitCode="true"
>
<Output TaskParameter="ExitCode" PropertyName="ApiCompatExitCode" />
</Exec>
<Exec Command="$(ApiCompatCmd) "$(NetStandardRefPath)" @"$(ApiCompatResponseFile)" > $(ApiCompatNSBaselineFile)"
CustomErrorRegularExpression="^[a-zA-Z]+ :"
StandardOutputImportance="Low"
IgnoreExitCode="true"
>
<Output TaskParameter="ExitCode" PropertyName="ApiCompatExitCode" />
</Exec>
</Target>
<Target Name="Build" DependsOnTargets="RunGenFacades;RunApiCompat" />
<Target Name="Clean">
<RemoveDir Directories="$(IntermediateOutputPath);$(GenFacadesOutputPath)" />
</Target>
<Target Name="Rebuild" DependsOnTargets="Clean;Build" />
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
</Project>