summaryrefslogtreecommitdiff
path: root/Mkfiles/vc15/vsyasm.targets
blob: 5206c8bc85d0d9dfaa52fb6994cef83d2a0fa2cb (plain)
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
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <ItemGroup>
    <PropertyPageSchema
      Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
    <AvailableItemName
      Include="YASM">
      <Targets>_YASM</Targets>
    </AvailableItemName>
  </ItemGroup>

  <PropertyGroup>
    <ComputeLinkInputsTargets>
      $(ComputeLinkInputsTargets);
      ComputeYASMOutput;
    </ComputeLinkInputsTargets>
    <ComputeLibInputsTargets>
      $(ComputeLibInputsTargets);
      ComputeYASMOutput;
    </ComputeLibInputsTargets>
  </PropertyGroup>

  <UsingTask
    TaskName="YASM"
    TaskFactory="XamlTaskFactory"
    AssemblyName="Microsoft.Build.Tasks.v4.0">
    <Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
  </UsingTask>

  <Target Name="_WriteYASMTlogs"
          Condition="'@(YASM)' != '' and '@(SelectedFiles)' == ''">

    <ItemGroup>
      <_YASMReadTlog 
        Include="^%(YASM.FullPath);%(YASM.AdditionalDependencies)"
        Condition="'%(YASM.ExcludedFromBuild)' != 'true' and '%(YASM.ObjectFile)' != ''"/>
      <_YASMWriteTlog
        Include="^%(YASM.FullPath);'$(MSBuildProjectDirectory)%(YASM.ObjectFile)'"
        Condition="'%(YASM.ExcludedFromBuild)' != 'true' and '%(YASM.ObjectFile)' != ''"/>
    </ItemGroup>

    <WriteLinesToFile
      Condition="'@(_YASMReadTlog)' != ''"
      File="$(TLogLocation)YASM.read.1u.tlog"
      Lines="@(_YASMReadTlog->MetaData('Identity')->ToUpperInvariant());"
      Overwrite="true"
      Encoding="Unicode"/>

    <WriteLinesToFile
      Condition="'@(_YASMWriteTlog)' != ''"
      File="$(TLogLocation)YASM.write.1u.tlog"
      Lines="@(_YASMWriteTlog->MetaData('Identity')->ToUpperInvariant());"
      Overwrite="true"
      Encoding="Unicode"/>

    <ItemGroup>
      <_YASMReadTlog Remove="@(_YASMReadTlog)" />
      <_YASMWriteTlog Remove="@(_YASMWriteTlog)" />
    </ItemGroup>

  </Target>
 
  <Target
    Name="_YASM"
    BeforeTargets="$(YASMBeforeTargets)"
    AfterTargets="$(YASMAfterTargets)"
    Condition="'@(YASM)' != ''"
    Inputs="%(YASM.Identity);%(YASM.AdditionalDependencies);$(MSBuildProjectFile)"
    Outputs="%(YASM.ObjectFile)"
    DependsOnTargets="PrepareForBuild;_WriteYasmTlogs;_SelectedFiles;$(YASMDependsOn);">

    <ItemGroup Condition="'@(SelectedFiles)' != ''">
      <YASM Remove="@(YASM)" Condition="'%(Identity)' != '@(SelectedFiles)'" />
    </ItemGroup>

    <Message
      Importance="High"
      Text="%(YASM.ExecutionDescription)" />

    <YASM
      Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true'"
      CommandLineTemplate="%(YASM.CommandLineTemplate)"
      Debug="%(YASM.Debug)"
      PreIncludeFile="%(YASM.PreIncludeFile)"
      IncludePaths="%(YASM.IncludePaths)"
      Defines="%(YASM.Defines)"
      UnDefines="%(YASM.UnDefines)"
      ObjectFile="%(YASM.ObjectFile)"
      ListFile="%(YASM.ListFile)"
      MapFile="%(YASM.MapFile)"
      ErrorFile="%(YASM.ErrorFile)"
      SymbolPrefix="%(YASM.SymbolPrefix)"
      SymbolSuffix="%(YASM.SymbolSuffix)"
      PreProc="%(YASM.PreProc)"
      Parser="%(YASM.Parser)"
      AdditionalOptions="%(YASM.AdditionalOptions)"
      Inputs="%(YASM.Identity)" />
  </Target>
  
  <Target
    Name="ComputeYASMOutput"
    Condition="'@(YASM)' != ''">
    <ItemGroup>
      <Link Include="@(YASM->Metadata('ObjectFile')->Distinct()->ClearMetadata())" Condition="'%(YASM.ExcludedFromBuild)' != 'true'"/>
      <Lib Include="@(YASM->Metadata('ObjectFile')->Distinct()->ClearMetadata())" Condition="'%(YASM.ExcludedFromBuild)' != 'true'"/>
    </ItemGroup>
  </Target>

</Project>