• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="utf-8"?>
2<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3  <ItemGroup>
4    <PropertyPageSchema
5      Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
6    <AvailableItemName
7      Include="NASM">
8      <Targets>_NASM</Targets>
9    </AvailableItemName>
10  </ItemGroup>
11  <UsingTask
12    TaskName="NASM"
13    TaskFactory="XamlTaskFactory"
14    AssemblyName="Microsoft.Build.Tasks.v4.0">
15    <Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
16  </UsingTask>
17  <Target
18    Name="_NASM"
19    BeforeTargets="$(NASMBeforeTargets)"
20    AfterTargets="$(NASMAfterTargets)"
21    Condition="'@(NASM)' != ''"
22    DependsOnTargets="$(NASMDependsOn);ComputeNASMOutput"
23    Outputs="@(NASM-&gt;Metadata('Outputs')-&gt;Distinct())"
24    Inputs="@(NASM);%(NASM.AdditionalDependencies);$(MSBuildProjectFile)">
25    <ItemGroup
26      Condition="'@(SelectedFiles)' != ''">
27      <NASM
28        Remove="@(NASM)"
29        Condition="'%(Identity)' != '@(SelectedFiles)'" />
30    </ItemGroup>
31    <ItemGroup>
32      <NASM_tlog
33        Include="%(NASM.Outputs)"
34        Condition="'%(NASM.Outputs)' != '' and '%(NASM.ExcludedFromBuild)' != 'true'">
35        <Source>@(NASM, '|')</Source>
36      </NASM_tlog>
37    </ItemGroup>
38    <Message
39      Importance="High"
40      Text="%(NASM.ExecutionDescription)" />
41    <WriteLinesToFile
42      Condition="'@(NASM_tlog)' != '' and '%(NASM_tlog.ExcludedFromBuild)' != 'true'"
43      File="$(IntDir)$(ProjectName).write.1.tlog"
44      Lines="^%(NASM_tlog.Source);@(NASM_tlog-&gt;'%(Fullpath)')" />
45    <NASM
46      Condition="'@(NASM)' != '' and '%(NASM.ExcludedFromBuild)' != 'true'"
47      CommandLineTemplate="%(NASM.CommandLineTemplate)"
48      OutFile="%(NASM.OutFile)"
49      BinFormat="%(NASM.BinFormat)"
50      IncludeDir="%(NASM.IncludeDir)"
51      Defines="%(NASM.Defines)"
52      AdditionalOptions="%(NASM.AdditionalOptions)"
53      Inputs="@(NASM)" />
54  </Target>
55  <PropertyGroup>
56    <ComputeLinkInputsTargets>
57            $(ComputeLinkInputsTargets);
58            ComputeNASMOutput;
59          </ComputeLinkInputsTargets>
60    <ComputeLibInputsTargets>
61            $(ComputeLibInputsTargets);
62            ComputeNASMOutput;
63          </ComputeLibInputsTargets>
64  </PropertyGroup>
65  <Target
66    Name="ComputeNASMOutput"
67    Condition="'@(NASM)' != ''">
68    <ItemGroup>
69      <NASMDirsToMake
70        Condition="'@(NASM)' != '' and '%(NASM.ExcludedFromBuild)' != 'true'"
71        Include="%(NASM.OutFile)" />
72      <Link
73        Include="%(NASMDirsToMake.Identity)"
74        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
75      <Lib
76        Include="%(NASMDirsToMake.Identity)"
77        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
78      <ImpLib
79        Include="%(NASMDirsToMake.Identity)"
80        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
81    </ItemGroup>
82    <MakeDir
83      Directories="@(NASMDirsToMake-&gt;'%(RootDir)%(Directory)')" />
84  </Target>
85</Project>