<?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="..\ucrt\ucrt*.wixproj" Condition="$(Platform) != 'ARM64'" />
        <Package Include="..\freethreaded\freethreaded*.wixproj" Condition="$(IncludeFreethreaded) == 'true'" />
    </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>
