<?xml version="1.0" encoding="utf-8"?>
<!--
  <copyright file="lux.targets" company="Outercurve Foundation">
    Copyright (c) 2004, Outercurve Foundation.
    This software is released under Microsoft Reciprocal License (MS-RL).
    The license and further copyright text can be found in the file
    LICENSE.TXT at the root directory of the distribution.
  </copyright>
-->
<Project
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
  ToolsVersion="3.5">

  <UsingTask TaskName="GenerateTestConsumer" AssemblyFile="$(LuxTasksPath)" />
  <UsingTask TaskName="Nit" AssemblyFile="$(LuxTasksPath)" />
  
  <PropertyGroup>
    <BuildTestPackageDependsOn>Compile;_ScanForUnitTests;_GenerateTestConsumer;Link</BuildTestPackageDependsOn>
    <TestDependsOn>$(BuildTestPackageDependsOn)</TestDependsOn>
  </PropertyGroup>

  <ItemGroup>
    <GeneratedTestConsumer Include="$(OutputName)_test.wxs" />
  </ItemGroup>

  <Target
    Name="_ScanForUnitTests">

    <!--
    So the Link target can do proper up-to-date checking, we need to give it the right list of 
    .wixobj inputs, which we get by scanning for unit tests and not generating a test consumer.
    -->
    
    <GenerateTestConsumer
      InputFiles="@(CompileObjOutput);@(WixObject);@(WixLibProjects);@(_ResolvedWixLibraryPaths)"
      Extensions="@(_ResolvedWixExtensionPaths)">
        <Output TaskParameter="InputFragments" ItemName="FilesThatAreFragments" />
    </GenerateTestConsumer>
    
    <ItemGroup>
      <CompileObjOutput
        Remove="@(CompileObjOutput)" />
      <CompileObjOutput
        Include="
          @(GeneratedTestConsumer -> '$(IntermediateOutputPath)%(Filename)$(IntermediateExt)');
          @(FilesThatAreFragments);
        " />
    </ItemGroup>

    <PropertyGroup>
      <TargetName>$(OutputName)_test</TargetName>
      <SuppressIces>ICE71;$(SuppressIces)</SuppressIces>
      <SuppressValidation>true</SuppressValidation>
    </PropertyGroup>

  </Target>

  <Target
    Name="_GenerateTestConsumer"
    Inputs="@(Compile);
            @(Content);
            @(_ResolvedWixExtensionPaths);
            @(_ResolvedProjectReferencePaths);
            $(MSBuildAllProjects)"
    Outputs="@(GeneratedTestConsumer -> '$(IntermediateOutputPath)%(Filename)$(IntermediateExt)')">

    <GenerateTestConsumer
      InputFiles="@(CompileObjOutput);@(WixObject);@(WixLibProjects);@(_ResolvedWixLibraryPaths)"
      Extensions="@(_ResolvedWixExtensionPaths)"
      OutputFile="@(GeneratedTestConsumer)">
        <Output TaskParameter="InputFragments" ItemName="FilesThatAreFragments" />
    </GenerateTestConsumer>

    <Candle
      SourceFiles="@(GeneratedTestConsumer)"
      AdditionalOptions="$(CompilerAdditionalOptions)"
      DefineConstants="$(DefineConstants);$(SolutionDefineConstants);$(ProjectDefineConstants);$(ProjectReferenceDefineConstants)"
      ExtensionDirectory="$(WixExtDir)"
      Extensions="@(_ResolvedWixExtensionPaths)"
      FipsCompliant="$(FipsCompliant)"
      IncludeSearchPaths="$(IncludeSearchPaths)"
      InstallerPlatform="$(InstallerPlatform)"
      NoLogo="$(CompilerNoLogo)"
      OutputFile="$(IntermediateOutputPath)"
      Pedantic="$(Pedantic)"
      ReferencePaths="$(ReferencePaths)"
      RunAsSeparateProcess="$(RunWixToolsOutOfProc)"
      ShowSourceTrace="$(ShowSourceTrace)"
      SuppressAllWarnings="$(CompilerSuppressAllWarnings)"
      SuppressSchemaValidation="$(CompilerSuppressSchemaValidation)"
      SuppressSpecificWarnings="$(CompilerSuppressSpecificWarnings)"
      ToolPath="$(WixToolPath)"
      TreatWarningsAsErrors="$(CompilerTreatWarningsAsErrors)"
      TreatSpecificWarningsAsErrors="$(CompilerTreatSpecificWarningsAsErrors)"
      VerboseOutput="$(CompilerVerboseOutput)" />
  </Target>

  <Target
    Name="BuildTestPackage"
    Inputs="@(CompileObjOutput);
      @(WixObject);
      @(_ResolvedProjectReferencePaths);
      @(_ResolvedWixLibraryPaths);
      @(_ResolvedWixExtensionPaths);
      $(MSBuildAllProjects)"
    Outputs="$(TargetPath)"
    DependsOnTargets="$(BuildTestPackageDependsOn)" />

  <Target
    Name="Test"
    DependsOnTargets="$(BuildTestPackageDependsOn)">

    <Nit 
      TestPackages="$(TargetPath)" 
      ToolPath="$(WixToolPath)" />
  </Target>
</Project>
