﻿<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="DownloadZLib">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - DownloadZLib" />
        <WebDownload
            Condition="!Exists('$(MSBuildProjectDirectory)\_archives\$(ZLIB_SRC_TAR_GZ)')"
            FileUri="$(ZLIB_URL)/$(ZLIB_SRC_TAR_GZ)"
            FileName="$(MSBuildProjectDirectory)\_archives\$(ZLIB_SRC_TAR_GZ)"
            UseDefaultCredentials="True" />
    </Target>
    <Target Name="ExtractZLib">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ExtractZLib" />
        <ExtractWith7za
            Condition="!Exists('$(MSBuildProjectDirectory)\$(ZLIB_DIR)')"
            FileToExtract="$(MSBuildProjectDirectory)\_archives\$(ZLIB_SRC_TAR_GZ)" />
    </Target>
    <Target Name="PatchZLib">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - PatchZLib" />
        <Exec
            Condition="!Exists('$(MSBuildProjectDirectory)\$(ZLIB_DIR)\zlib_patched')"
            Command="&quot;$(PATCH_EXE)&quot; -p1 -i &quot;$(MSBuildProjectDirectory)\patches\$(ZLIB_PATCH_FILE)&quot;"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(ZLIB_DIR)" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\zlib_patched" />
    </Target>
    <Target Name="BuildZLib">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildZLib" />
        <MSBuild
            Projects="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\zlibvc.sln"
            Properties="Configuration=Release;Platform=Win32;VcpkgEnabled=false" />
        <MSBuild
            Projects="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\zlibvc.sln"
            Properties="Configuration=Release;Platform=x64;VcpkgEnabled=false" />
        <MSBuild
            Projects="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\zlibvc.sln"
            Properties="Configuration=Debug;Platform=Win32;VcpkgEnabled=false" />
        <MSBuild
            Projects="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\zlibvc.sln"
            Properties="Configuration=Debug;Platform=x64;VcpkgEnabled=false" />
    </Target>
    <Target Name="CopyZLib">
        <ItemGroup>
            <ZLIB_BIN_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Debug\miniunz.exe" />
            <ZLIB_BIN_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Debug\miniunz.pdb" />
            <ZLIB_BIN_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Debug\minizip.exe" />
            <ZLIB_BIN_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Debug\minizip.pdb" />
            <ZLIB_BIN_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Debug\zdll.dll" />
            <ZLIB_BIN_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Debug\zdll.pdb" />
            <ZLIB_BIN_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Release\miniunz.exe" />
            <ZLIB_BIN_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Release\miniunz.pdb" />
            <ZLIB_BIN_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Release\minizip.exe" />
            <ZLIB_BIN_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Release\minizip.pdb" />
            <ZLIB_BIN_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Release\zdll.dll" />
            <ZLIB_BIN_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Release\zdll.pdb" />
            <ZLIB_BIN_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Debug\miniunz.exe" />
            <ZLIB_BIN_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Debug\miniunz.pdb" />
            <ZLIB_BIN_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Debug\minizip.exe" />
            <ZLIB_BIN_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Debug\minizip.pdb" />
            <ZLIB_BIN_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Debug\zdll.dll" />
            <ZLIB_BIN_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Debug\zdll.pdb" />
            <ZLIB_BIN_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Release\miniunz.exe" />
            <ZLIB_BIN_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Release\miniunz.pdb" />
            <ZLIB_BIN_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Release\minizip.exe" />
            <ZLIB_BIN_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Release\minizip.pdb" />
            <ZLIB_BIN_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Release\zdll.dll" />
            <ZLIB_BIN_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Release\zdll.pdb" />
            <ZLIB_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\doc\**\*.*" />
            <ZLIB_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\FAQ" />
            <ZLIB_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\zlib.3.pdf" />
            <ZLIB_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\zconf.h" />
            <ZLIB_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\zlib.h" />
            <ZLIB_LIB_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Debug\zlib.lib" />
            <ZLIB_LIB_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Debug\zlib.pdb" />
            <ZLIB_LIB_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Debug\zdll.lib" />
            <ZLIB_LIB_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Release\zlib.lib" />
            <ZLIB_LIB_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Release\zlib.pdb" />
            <ZLIB_LIB_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x64\Release\zdll.lib" />
            <ZLIB_LIB_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Debug\zlib.lib" />
            <ZLIB_LIB_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Debug\zlib.pdb" />
            <ZLIB_LIB_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Debug\zdll.lib" />
            <ZLIB_LIB_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Release\zlib.lib" />
            <ZLIB_LIB_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Release\zlib.pdb" />
            <ZLIB_LIB_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(ZLIB_DIR)\contrib\vstudio\vc12+\build\x86\Release\zdll.lib" />
        </ItemGroup>
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CopyZLib" />
        <MakeDir
            Condition="!Exists('$(COMMON_SDKS)\docs\zlib')"
            Directories="$(COMMON_SDKS)\docs\zlib" />
        <Copy
            SourceFiles="@(ZLIB_BIN_X64_DEBUG_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x64\Debug"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(ZLIB_BIN_X64_RELEASE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x64\Release"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(ZLIB_BIN_X86_DEBUG_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x86\Debug"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(ZLIB_BIN_X86_RELEASE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x86\Release"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(ZLIB_DOCS_FILES)"
            DestinationFolder="$(COMMON_SDKS)\docs\zlib\%(RecursiveDir)"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(ZLIB_INCLUDE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\include"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(ZLIB_LIB_X64_DEBUG_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x64\Debug"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(ZLIB_LIB_X64_RELEASE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x64\Release"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(ZLIB_LIB_X86_DEBUG_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x86\Debug"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(ZLIB_LIB_X86_RELEASE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x86\Release"
            SkipUnchangedFiles="true" />
    </Target>
    <Target Name="CleanZLib">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CleanZLib" />
        <RemoveDir
            Condition="Exists('$(MSBuildProjectDirectory)\$(ZLIB_DIR)')"
            Directories="$(MSBuildProjectDirectory)\$(ZLIB_DIR)" />
    </Target>
    <Target Name="ZLib">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ZLib" />
        <CallTarget
            Condition="!Exists('$(MSBuildProjectDirectory)\build_state\ZLib_build_successful')"
            Targets="DownloadZLib;ExtractZLib;PatchZLib;BuildZLib;CopyZLib" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\build_state\ZLib_build_successful" />
    </Target>
</Project>
