<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <SdkDebugLayoutOutputDirectory>$(LayoutDirectory)/$(ArtifactNameSdkDebug)</SdkDebugLayoutOutputDirectory>
    <CombinedHostHostFxrFrameworkSdkOutputDirectory>$(LayoutDirectory)/$(ArtifactNameCombinedHostHostFxrFrameworkSdk)</CombinedHostHostFxrFrameworkSdkOutputDirectory>
    <CombinedFrameworkSdkOutputDirectory>$(LayoutDirectory)/$(ArtifactNameCombinedFrameworkSdk)</CombinedFrameworkSdkOutputDirectory>
  </PropertyGroup>

  <Target DependsOnTargets="Init" Name="SetupLayoutInputsOutputs" >
    <!-- Set up Items with Layout Input Files -->
    <ItemGroup>
      <SdkLayoutInput Include="$(OutputDirectory)/sdk/**/*" />
      <SdkDebugLayoutInput Include="$(SymbolsDirectory)/sdk/**/*" />
      <CombinedHostHostFxrFrameworkSdkInput Include="$(OutputDirectory)/**/*" />
      <CombinedFrameworkSdkInput Include="$(OutputDirectory)/shared/**/*" />
      <CombinedFrameworkSdkInput Include="$(OutputDirectory)/sdk/**/*" />
    </ItemGroup>

    <MakeRelative
      Path1="$(OutputDirectory)/"
      Path2="%(SdkLayoutInput.Identity)" >
      <Output TaskParameter="RelativePath" ItemName="SdkRelativeOutputFiles" />
    </MakeRelative>
    <MakeRelative
      Path1="$(SymbolsDirectory)"
      Path2="%(SdkDebugLayoutInput.Identity)" >
      <Output TaskParameter="RelativePath" ItemName="SdkDebugRelativeOutputFiles" />
    </MakeRelative>
    <MakeRelative
      Path1="$(OutputDirectory)/"
      Path2="%(CombinedHostHostFxrFrameworkSdkInput.Identity)" >
      <Output TaskParameter="RelativePath" ItemName="CombinedHostHostFxrFrameworkSdkRelativeOutputFiles" />
    </MakeRelative>
    <MakeRelative
      Path1="$(OutputDirectory)/"
      Path2="%(CombinedFrameworkSdkInput.Identity)" >
      <Output TaskParameter="RelativePath" ItemName="CombinedFrameworkSdkOutputFiles" />
    </MakeRelative>

    <!-- Set up Items Defining Layouts for easy change -->
    <ItemGroup>
      <LayoutDefinition Include="Sdk">
        <InputFiles>@(SdkLayoutInput)</InputFiles>
        <OutputFiles>@(SdkRelativeOutputFiles -> '$(SdkLayoutOutputDirectory)/%(Identity)')</OutputFiles>
        <NameWithVersion>$(ArtifactNameWithVersionSdk)</NameWithVersion>
        <Name>$(ArtifactNameSdk)</Name>
      </LayoutDefinition>

      <LayoutDefinition Include="Debug">
        <InputFiles>@(SdkDebugLayoutInput)</InputFiles>
        <OutputFiles>@(SdkDebugRelativeOutputFiles -> '$(SdkDebugLayoutOutputDirectory)/%(Identity)')</OutputFiles>
        <NameWithVersion>$(ArtifactNameWithVersionSdkDebug)</NameWithVersion>
        <Name>$(ArtifactNameSdkDebug)</Name>
      </LayoutDefinition>

      <LayoutDefinition Include="CombinedHostHostFxrFrameworkSdk">
        <InputFiles>@(CombinedHostHostFxrFrameworkSdkInput)</InputFiles>
        <OutputFiles>@(CombinedHostHostFxrFrameworkSdkRelativeOutputFiles -> '$(CombinedHostHostFxrFrameworkSdkOutputDirectory)/%(Identity)')</OutputFiles>
        <NameWithVersion>$(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)</NameWithVersion>
        <Name>$(ArtifactNameCombinedHostHostFxrFrameworkSdk)</Name>
      </LayoutDefinition>

      <LayoutDefinition Include="CombinedFrameworkSdk">
        <InputFiles>@(CombinedFrameworkSdkInput)</InputFiles>
        <OutputFiles>@(CombinedFrameworkSdkOutputFiles -> '$(CombinedFrameworkSdkOutputDirectory)/%(Identity)')</OutputFiles>
        <NameWithVersion>$(ArtifactNameWithVersionCombinedFrameworkSdk)</NameWithVersion>
        <Name>$(ArtifactNameCombinedFrameworkSdk)</Name>
      </LayoutDefinition>

    </ItemGroup>
  </Target>

  <Target Name="Layout"
          DependsOnTargets="Init;SetupLayoutInputsOutputs"
          Inputs="@(LayoutDefinition -> '%(InputFiles)')"
          Outputs="@(LayoutDefinition -> '%(OutputFiles)')" >

    <!-- Copy Files to layout directories based on defintiions -->
    <Copy SourceFiles="%(LayoutDefinition.InputFiles)"
          DestinationFiles="%(LayoutDefinition.OutputFiles)"
          SkipUnchangedFiles="true" />
  </Target>

</Project>
