[xbuild] Add $(TargetFrameworkDirectory) for msbuild compatibility.
[mono.git] / mcs / tools / xbuild / xbuild / Microsoft.Silverlight.Common.targets
1 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2         <UsingTask TaskName="Moonlight.Build.Tasks.CreateTestPage" AssemblyFile="Moonlight.Build.Tasks.dll" />
3         <UsingTask TaskName="Moonlight.Build.Tasks.GenerateMoonlightManifest" AssemblyFile="Moonlight.Build.Tasks.dll"/>
4         <UsingTask TaskName="Moonlight.Build.Tasks.GenerateXap" AssemblyFile="Moonlight.Build.Tasks.dll" />
5         <UsingTask TaskName="Moonlight.Build.Tasks.GetMoonlightFrameworkPath" AssemblyFile="Moonlight.Build.Tasks.dll"/>
6         <UsingTask TaskName="Moonlight.Build.Tasks.Respack" AssemblyFile="Moonlight.Build.Tasks.dll" />
7         <UsingTask TaskName="Moonlight.Build.Tasks.XamlG" AssemblyFile="Moonlight.Build.Tasks.dll"/>
8
9         <PropertyGroup>
10                 <PrepareResourcesDependsOn>
11                         GenerateXamlG;
12                         Respack;
13                         $(PrepareResourcesDependsOn)
14                 </PrepareResourcesDependsOn>
15
16                 <PrepareForRunDependsOn>
17                         GenerateMoonlightManifest;
18                         GenerateXap;
19                         CreateTestPage;
20                         $(PrepareForRunDependsOn)
21                 </PrepareForRunDependsOn>
22
23                 <CscToolExe Condition="'$(CscToolExe)' == '' and '$(OS)' == 'Windows_NT'">smcs.bat</CscToolExe>
24                 <CscToolExe Condition="'$(CscToolExe)' == '' and '$(OS)' != 'Windows_NT'">smcs</CscToolExe>
25
26                 <XapFileName Condition="'$(XapFileName)' == ''">$(AssemblyName).xap</XapFileName>
27                 <TestPageFileName Condition="'$(TestPageFileName)' == ''">TestPage.html</TestPageFileName>
28                 <SilverlightVersion Condition="'$(SilverlightVersion)' == ''">@SILVERLIGHT_VERSION@</SilverlightVersion>
29                 <RuntimeVersion Condition="'$(RuntimeVersion)' == '' and '$(SilverlightVersion)' == '2.0'">2.0.31005.0</RuntimeVersion>
30                 <RuntimeVersion Condition="'$(RuntimeVersion)' == '' and '$(SilverlightVersion)' == '3.0'">3.0.40624.0</RuntimeVersion>
31
32                 <AssemblySearchPaths>
33                         {CandidateAssemblyFiles};
34                         $(ReferencePath);
35                         {HintPathFromItem};
36                         {TargetFrameworkDirectory};
37                         {RawFileName};
38                         $(OutDir)
39                 </AssemblySearchPaths>
40         </PropertyGroup>
41
42         <ItemGroup>
43                 <MoonlightManifestFile Include="$(OutDir)AppManifest.xaml">
44                         <TargetPath>AppManifest.xaml</TargetPath>
45                 </MoonlightManifestFile>
46         </ItemGroup>
47
48         <!-- Override 'GetFrameworkPaths' -->
49         <Target Name="GetFrameworkPaths">
50                 <GetMoonlightFrameworkPath
51                         SilverlightVersion="$(SilverlightVersion)">
52                         <Output TaskParameter="FrameworkPath" PropertyName="TargetFrameworkDirectory"/>
53                         <Output TaskParameter="FrameworkPath" ItemName="_FrameworkPath"/>
54                 </GetMoonlightFrameworkPath>
55
56                 <Error Text="Moonlight framework v$(SilverlightVersion) doesn't seem to be installed. Expected framework directory could not be found (@(_FrameworkPath)). To force a particular silverlight version, try: xbuild $(MSBuildProjectFile) /p:SilverlightVersion=2.0"
57                         Condition="!Exists('@(_FrameworkPath)')" />
58
59                 <CreateProperty Value="$(AssemblySearchPaths);@(_FrameworkPath->'%(Identity)-redist')"
60                                 Condition="Exists('@(_FrameworkPath->'%(Identity)-redist')')">
61                         <Output TaskParameter="Value" PropertyName="AssemblySearchPaths"/>
62                 </CreateProperty>
63         </Target>
64
65         <Target Name="Respack">
66                 <Respack
67                         Resources="@(Resource);@(Page);@(ApplicationDefinition)"
68                         OutputFile="$(IntermediateOutputPath)$(AssemblyName).g.resources">
69                         <Output TaskParameter="OutputFile" ItemName="FileWrites"/>
70                         <Output TaskParameter="OutputFile" ItemName="ManifestResourceWithNoCulture"/>
71                 </Respack>
72         </Target>
73
74         <Target Name="GenerateXamlG">
75                 <CreateItem Include="@(Compile)" Condition="'%(Compile.Extension)' == '.xaml' and '%(Compile.Generator)' == 'MSBuild:MarkupCompilePass1'">
76                         <Output TaskParameter="Include" ItemName="XamlFiles"/>
77                 </CreateItem>
78                 <CreateItem Include="@(ApplicationDefinition)" Condition="'%(Extension)' == '.xaml' and '%(Generator)' == 'MSBuild:MarkupCompilePass1'">
79                         <Output TaskParameter="Include" ItemName="XamlFiles"/>
80                 </CreateItem>
81                 <CreateItem Include="@(Page)" Condition="'%(Extension)' == '.xaml' and '%(Generator)' == 'MSBuild:MarkupCompilePass1'">
82                         <Output TaskParameter="Include" ItemName="XamlFiles"/>
83                 </CreateItem>
84
85                 <XamlG
86                         Sources="@(XamlFiles)"
87                         Language = "$(Language)"
88                         AssemblyName = "$(AssemblyName)"
89                         OutputFiles = "@(XamlFiles->'$(IntermediateOutputPath)%(Filename).g$(DefaultLanguageSourceExtension)')"
90                 >
91                         <Output TaskParameter="OutputFiles" ItemName="Compile"/>
92                         <Output TaskParameter="OutputFiles" ItemName="FileWrites"/>
93                 </XamlG>
94         </Target>
95
96         <Target Name="GenerateMoonlightManifest"
97                 Inputs="$(MSBuildAllProjects);$(SilverlightManifestTemplate)"
98                 Outputs="@(MoonlightManifestFile->'%(Identity)')">
99                 <GenerateMoonlightManifest
100                         ManifestFile="@(MoonlightManifestFile->'%(Identity)')"
101                         EntryPointAssembly="$(AssemblyName)$(TargetExt)"
102                         References="@(ReferenceCopyLocalPaths)"
103                         SilverlightManifestTemplate="$(SilverlightManifestTemplate)"
104                         SilverlightAppEntry="$(SilverlightAppEntry)"
105                         RuntimeVersion="$(RuntimeVersion)"
106
107                         Condition = "'$(GenerateSilverlightManifest)' == 'true'"
108                 >
109                         <Output TaskParameter="ManifestFile" ItemName="FileWrites"/>
110                 </GenerateMoonlightManifest>
111         </Target>
112
113         <PropertyGroup>
114                 <GenerateXapDependsOn>
115                         GenerateXamlG;
116                         GenerateMoonlightManifest;
117                         GetXapInputFiles
118                 </GenerateXapDependsOn>
119         </PropertyGroup>
120         <Target Name="GenerateXap" DependsOnTargets="$(GenerateXapDependsOn)" Condition="'$(XapOutputs)' == 'true'"
121                 Inputs="@(XapInputFiles)" Outputs="$(OutDir)$(XapFilename)">
122                 <!-- Looks for %(DestinationSubdirectory) in LocalCopyReferences -->
123                 <GenerateXap
124                         InputFiles="@(XapInputFiles)"
125                         LocalCopyReferences="@(ReferenceCopyLocalPaths)"
126                         XapFilename="$(OutDir)$(XapFilename)"
127                 >
128                         <Output TaskParameter="XapFilename" ItemName="FileWrites"/>
129                 </GenerateXap>
130         </Target>
131
132         <Target Name="CreateTestPage" Condition="'$(CreateTestPage)' == 'true' and '$(XapOutputs)' == 'true'">
133                 <CreateTestPage
134                         XapFileName="$(XapFileName)"
135                         Title="$(AssemblyName)"
136                         TestPageFilename="$(OutDir)$(TestPageFilename)">
137                         <Output TaskParameter="TestPageFilename" ItemName="FileWrites"/>
138                 </CreateTestPage>
139         </Target>
140
141         <Target Name="GetXapInputFiles">
142                 <CreateItem Include="@(IntermediateAssembly)" AdditionalMetadata="TargetPath=$(AssemblyName)$(TargetExt)">
143                         <Output TaskParameter="Include" ItemName="XapInputFiles"/>
144                 </CreateItem>
145
146                 <CreateItem Include="@(ContentWithTargetPath)">
147                         <Output TaskParameter="Include" ItemName="XapInputFiles"/>
148                 </CreateItem>
149
150                 <CreateItem Include="@(MoonlightManifestFile)" Condition="'$(GenerateSilverlightManifest)' == 'true'">
151                         <Output TaskParameter="Include" ItemName="XapInputFiles"/>
152                 </CreateItem>
153
154                 <CreateItem Include="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb" AdditionalMetadata="TargetPath=$(AssemblyName)$(TargetExt).mdb"
155                                 Condition="Exists('$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb')">
156                         <Output TaskParameter="Include" ItemName="XapInputFiles"/>
157                 </CreateItem>
158         </Target>
159 </Project>