<?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>
  <UsingTask
    TaskName="YASM"
    TaskFactory="XamlTaskFactory"
    AssemblyName="Microsoft.Build.Tasks.v4.0">
    <Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
  </UsingTask>
  <Target
    Name="_YASM"
    BeforeTargets="$(YASMBeforeTargets)"
    AfterTargets="$(YASMAfterTargets)"
    Condition="'@(YASM)' != ''"
    DependsOnTargets="$(YASMDependsOn);ComputeYASMOutput"
    Outputs="@(YASM->'%(ObjectFileName)')"
    Inputs="@(YASM);%(YASM.AdditionalDependencies);$(MSBuildProjectFile)">
    <ItemGroup
      Condition="'@(SelectedFiles)' != ''">
      <YASM
        Remove="@(YASM)"
        Condition="'%(Identity)' != '@(SelectedFiles)'" />
    </ItemGroup>
    <ItemGroup>
      <YASM_tlog
        Include="%(YASM.ObjectFileName)"
        Condition="'%(YASM.ObjectFileName)' != '' and '%(YASM.ExcludedFromBuild)' != 'true'">
        <Source>@(YASM, '|')</Source>
      </YASM_tlog>
    </ItemGroup>
    <Message
      Importance="High"
      Text="%(YASM.ExecutionDescription)" />
    <WriteLinesToFile
      Condition="'@(YASM_tlog)' != '' and '%(YASM_tlog.ExcludedFromBuild)' != 'true'"
      File="$(IntDir)$(ProjectName).write.1.tlog"
      Lines="^%(YASM_tlog.Source);@(YASM_tlog->'%(Fullpath)')" />
    <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.ObjectFileName)"
      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)" />
  </Target>
  <PropertyGroup>
    <ComputeLinkInputsTargets>
            $(ComputeLinkInputsTargets);
            ComputeYASMOutput;
          </ComputeLinkInputsTargets>
    <ComputeLibInputsTargets>
            $(ComputeLibInputsTargets);
            ComputeYASMOutput;
          </ComputeLibInputsTargets>
  </PropertyGroup>
  <Target
    Name="ComputeYASMOutput"
    Condition="'@(YASM)' != ''">
    <ItemGroup>
      <YASMDirsToMake
        Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true' and !HasTrailingSlash('%(YASM.ObjectFile)')"
        Include="%(YASM.ObjectFile)" />
      <Link
        Include="%(YASMDirsToMake.Identity)"
        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
      <Lib
        Include="%(YASMDirsToMake.Identity)"
        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
      <ImpLib
        Include="%(YASMDirsToMake.Identity)"
        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
    </ItemGroup>
    <ItemGroup>
      <YASMDirsToMake
        Condition="'@(YASM)' != '' and '%(YASM.ExcludedFromBuild)' != 'true' and HasTrailingSlash('%(YASM.ObjectFile)')"
        Include="@(YASM->'%(ObjectFile)%(Filename).obj')" />
      <Link
        Include="%(YASMDirsToMake.Identity)"
        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
      <Lib
        Include="%(YASMDirsToMake.Identity)"
        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
      <ImpLib
        Include="%(YASMDirsToMake.Identity)"
        Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" />
    </ItemGroup>
    <MakeDir
      Directories="@(YASMDirsToMake->'%(RootDir)%(Directory)')" />
  </Target>
</Project>