﻿<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="DownloadBZip2">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - DownloadBZip2" />
        <WebDownload
            Condition="!Exists('$(MSBuildProjectDirectory)\_archives\$(BZIP2_SRC_TAR_GZ)')"
            FileUri="$(BZIP2_URL)$(BZIP2_SRC_TAR_GZ)"
            FileName="$(MSBuildProjectDirectory)\_archives\$(BZIP2_SRC_TAR_GZ)"
            UseDefaultCredentials="True" />
    </Target>
    <Target Name="ExtractBZip2">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ExtractBZip2" />
        <ExtractWith7za
            Condition="!Exists('$(MSBuildProjectDirectory)\$(BZIP2_DIR)')"
            FileToExtract="$(MSBuildProjectDirectory)\_archives\$(BZIP2_SRC_TAR_GZ)" />
    </Target>
    <Target Name="PatchBZip2">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - PatchBZip2" />
        <Exec
            Condition="!Exists('$(MSBuildProjectDirectory)\$(BZIP2_DIR)\bzip2_patched')"
            Command="&quot;$(PATCH_EXE)&quot; -p1 -i &quot;$(MSBuildProjectDirectory)\patches\$(BZIP2_PATCH_FILE)&quot;"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(BZIP2_DIR)" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\bzip2_patched" />
    </Target>
    <Target Name="BuildBZip2_X86">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildBZip2_X86" />
        <MakeDir
            Condition="!Exists('$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x86')"
            Directories="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x86" />
        <PropertyGroup>
            <BuildCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x86
            "$(NMAKE_EXE)" -nologo -f makefile.msc all
            ]]></BuildCommand>
            <CleanCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x86
            "$(NMAKE_EXE)" -nologo -f makefile.msc clean
            ]]></CleanCommand>
        </PropertyGroup>
        <Exec
            Command="$(BuildCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(BZIP2_DIR)" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\libbz2.lib"
            DestinationFolder="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\bzip2.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\bzip2recover.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x86"
            SkipUnchangedFiles="true" />
        <Exec
            Command="$(CleanCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(BZIP2_DIR)" />
    </Target>
    <Target Name="BuildBZip2_X64">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildBZip2_X64" />
        <MakeDir
            Condition="!Exists('$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x64')"
            Directories="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x64" />
        <PropertyGroup>
            <BuildCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x64
            "$(NMAKE_EXE)" -nologo -f makefile.msc all
            ]]></BuildCommand>
            <CleanCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x64
            "$(NMAKE_EXE)" -nologo -f makefile.msc clean
            ]]></CleanCommand>
        </PropertyGroup>
        <Exec
            Command="$(BuildCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(BZIP2_DIR)" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\libbz2.lib"
            DestinationFolder="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\bzip2.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\bzip2recover.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x64"
            SkipUnchangedFiles="true" />
        <Exec
            Command="$(CleanCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(BZIP2_DIR)" />
    </Target>
    <Target Name="BuildBZip2">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildBZip2" />
        <CallTarget
            Targets="BuildBZip2_X86;BuildBZip2_X64" />
    </Target>
    <Target Name="CopyBZip2">
        <ItemGroup>
            <BZIP2_BIN_X64_FILES
                Include="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x64\*.exe" />
            <BZIP2_BIN_X86_FILES
                Include="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x86\*.exe" />
            <BZIP2_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\bzip2.txt" />
            <BZIP2_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\LICENSE" />
            <BZIP2_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\manual.html" />
            <BZIP2_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\manual.pdf" />
            <BZIP2_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\manual.ps" />
            <BZIP2_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\bzlib.h" />
            <BZIP2_LIB_X64_FILES
                Include="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x64\*.lib" />
            <BZIP2_LIB_X86_FILES
                Include="$(MSBuildProjectDirectory)\$(BZIP2_DIR)\x86\*.lib" />
        </ItemGroup>
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CopyBZip2" />
        <MakeDir
            Condition="!Exists('$(COMMON_SDKS)\docs\BZip2')"
            Directories="$(COMMON_SDKS)\docs\BZip2" />
        <Copy
            SourceFiles="@(BZIP2_BIN_X64_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(BZIP2_BIN_X86_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(BZIP2_DOCS_FILES)"
            DestinationFolder="$(COMMON_SDKS)\docs\BZip2\%(RecursiveDir)"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(BZIP2_INCLUDE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\include"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(BZIP2_LIB_X64_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(BZIP2_LIB_X86_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x86"
            SkipUnchangedFiles="true" />
    </Target>
    <Target Name="CleanBZip2">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CleanBZip2" />
        <RemoveDir
            Condition="Exists('$(MSBuildProjectDirectory)\$(BZIP2_DIR)')"
            Directories="$(MSBuildProjectDirectory)\$(BZIP2_DIR)" />
    </Target>
    <Target Name="BZip2">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BZip2" />
        <CallTarget
            Condition="!Exists('$(MSBuildProjectDirectory)\build_state\BZip2_build_successful')"
            Targets="DownloadBZip2;ExtractBZip2;PatchBZip2;BuildBZip2;CopyBZip2" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\build_state\BZip2_build_successful" />
    </Target>
</Project>
