<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" TreatAsLocalProperty="DownloadUrl">
    <PropertyGroup>
        <SchemaVersion>2.0</SchemaVersion>
        <OutputType>Bundle</OutputType>

        <BootstrapConfiguration Condition="'$(BootstrapConfiguration)' == ''">Release</BootstrapConfiguration>
        <LinkerSuppressSpecificWarnings>1132;1135;1140</LinkerSuppressSpecificWarnings>
        <OutputName Condition="$(BuildForRelease)">$(OutputName)-$(PythonVersion)</OutputName>
        <OutputName Condition="!$(BuildForRelease)">$(OutputName)-$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber).$(RevisionNumber)</OutputName>
        <OutputName Condition="$(Platform) == 'x64'">$(OutputName)-amd64</OutputName>
        <OutputName Condition="$(Platform) == 'ARM64'">$(OutputName)-arm64</OutputName>
        <OutputName Condition="'$(OutputSuffix)' != ''">$(OutputName)-$(OutputSuffix)</OutputName>
        <OutputName Condition="'$(Configuration)' == 'Debug'">$(OutputName)-d</OutputName>
        <TargetName>$(OutputName)</TargetName>

        <OutputPath>$(OutputPath)en-us\</OutputPath>
        <OutDir>$(OutputPath)</OutDir>

        <!-- See Tools/msi/buildrelease.bat for help on configuring the download URL -->
        <DownloadUrl Condition="'$(DownloadUrl)' == '' and '$(DownloadUrlBase)' != ''">$(DownloadUrlBase.TrimEnd(`/`))/{version}/{arch}{releasename}/{msi}</DownloadUrl>
        <DefineConstants Condition="'$(DownloadUrl)' != ''">$(DefineConstants);DownloadUrl=$(DownloadUrl.Replace(`{version}`, `$(MajorVersionNumber).$(MinorVersionNumber).$(MicroVersionNumber)`).Replace(`{arch}`, `$(ArchName)`).Replace(`{releasename}`, `$(ReleaseLevelName)`).Replace(`{msi}`, `{2}`))</DefineConstants>
        <DefineConstants Condition="'$(DownloadUrl)' == ''">$(DefineConstants);DownloadUrl={2}</DefineConstants>
    </PropertyGroup>

    <ItemGroup>
        <WixExtension Include="WixUtilExtension">
            <HintPath>WixUtilExtension</HintPath>
            <Name>WixUtilExtension</Name>
        </WixExtension>
        <WixExtension Include="WixDependencyExtension">
            <HintPath>WixDependencyExtension</HintPath>
            <Name>WixDependencyExtension</Name>
        </WixExtension>
        <WixExtension Include="WixBalExtension">
            <HintPath>WixBalExtension</HintPath>
            <Name>WixBalExtension</Name>
        </WixExtension>
    </ItemGroup>
    <ItemGroup>
        <Compile Include="bundle.wxs" />
        <Compile Include="packagegroups\*.wxs" />
    </ItemGroup>
    <ItemGroup>
        <Content Include="Default.thm" />
        <Content Include="SideBar.png" />
    </ItemGroup>
    <ItemGroup>
        <EmbeddedResource Include="bundle.wxl" />
        <WxlTemplate Include="*_en-US.wxl_template" />
    </ItemGroup>
    <ItemGroup>
        <LinkerBindInputPaths Include="$(OutputPath)">
            <BindName></BindName>
        </LinkerBindInputPaths>
    </ItemGroup>

    <ItemDefinitionGroup>
        <Package>
            <Properties>BuildForRelease=$(BuildForRelease)</Properties>
        </Package>
    </ItemDefinitionGroup>
    <ItemGroup>
        <Package Include="..\core\core*.wixproj" />
        <Package Include="..\dev\dev*.wixproj" />
        <Package Include="..\doc\doc*.wixproj" />
        <Package Include="..\exe\exe*.wixproj" />
        <Package Include="..\lib\lib*.wixproj" />
        <Package Include="..\path\path*.wixproj" />
        <Package Include="..\appendpath\appendpath*.wixproj" />
        <Package Include="..\pip\pip*.wixproj" />
        <Package Include="..\tcltk\tcltk*.wixproj" />
        <Package Include="..\test\test*.wixproj" />
        <Package Include="..\tools\tools*.wixproj" />
        <Package Include="..\ucrt\ucrt*.wixproj" Condition="$(Platform) != 'ARM64'" />
    </ItemGroup>

    <PropertyGroup>
        <BuildPackagesTargets>Build</BuildPackagesTargets>
    </PropertyGroup>

    <Target Name="_SetRebuildTarget" BeforeTargets="BeforeRebuild">
        <PropertyGroup>
            <BuildPackagesTargets>Rebuild</BuildPackagesTargets>
        </PropertyGroup>
    </Target>

    <Target Name="BuildPackages" BeforeTargets="BeforeBuild" Condition="'$(RebuildAll)' != 'false'">
        <MSBuild Projects="@(Package)" Targets="$(BuildPackagesTargets)" BuildInParallel="true" />
    </Target>

    <Target Name="BuildBootstrapApplication" BeforeTargets="BeforeBuild">
        <Message Text="Building bootstrap app" Importance="high" />

        <MSBuild Projects="bootstrap\pythonba.vcxproj"
                 Targets="Build;GetNativeTargetPath"
                 UseResultsCache="true"
                 Properties="Configuration=$(BootstrapConfiguration);Platform=Win32;BuildForPlatform=$(Platform)">
            <Output TaskParameter="TargetOutputs" PropertyName="BootstrapAppPath" />
        </MSBuild>

        <PropertyGroup>
            <DefineConstants>$(DefineConstants);BootstrapApp=$(BootstrapAppPath)</DefineConstants>
        </PropertyGroup>
    </Target>

    <Target Name="AddDefaultWxl" AfterTargets="PrepareForBuild" Condition="!Exists('Default.$(Platform).xsl')">
        <ItemGroup>
            <EmbeddedResource Include="Default.wxl" />
        </ItemGroup>
        <PropertyGroup>
            <DefineConstants>$(DefineConstants);DefaultWxl=Default.wxl</DefineConstants>
        </PropertyGroup>
    </Target>
    <Target Name="AddUpdatedDefaultWxl" AfterTargets="PrepareForBuild" Condition="Exists('Default.$(Platform).xsl')">
        <XslTransformation XmlInputPaths="Default.wxl"
                           OutputPaths="$(IntermediateOutputPath)Default.wxl"
                           XslInputPath="Default.$(Platform).xsl"
                           UseTrustedSettings="true" />
        <ItemGroup>
          <EmbeddedResource Include="$(IntermediateOutputPath)Default.wxl" />
        </ItemGroup>
        <PropertyGroup>
            <DefineConstants>$(DefineConstants);DefaultWxl=$(IntermediateOutputPath)Default.wxl</DefineConstants>
        </PropertyGroup>
    </Target>

    <Import Project="..\msi.targets" />
</Project>
