﻿<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="DownloadCairo">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - DownloadCairo" />
        <WebDownload
            Condition="!Exists('$(MSBuildProjectDirectory)\_archives\$(CAIRO_SRC_TAR_XZ)')"
            FileUri="$(CAIRO_URL)/$(CAIRO_SRC_TAR_XZ)"
            FileName="$(MSBuildProjectDirectory)\_archives\$(CAIRO_SRC_TAR_XZ)"
            UseDefaultCredentials="True" />
    </Target>
    <Target Name="ExtractCairo">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ExtractCairo" />
        <ExtractWith7za
            Condition="!Exists('$(MSBuildProjectDirectory)\$(CAIRO_DIR)')"
            FileToExtract="$(MSBuildProjectDirectory)\_archives\$(CAIRO_SRC_TAR_XZ)" />
    </Target>
    <Target Name="PatchCairo">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - PatchCairo" />
        <Exec
            Condition="!Exists('$(MSBuildProjectDirectory)\$(CAIRO_DIR)\cairo_patched')"
            Command="&quot;$(PATCH_EXE)&quot; -p1 -i &quot;$(MSBuildProjectDirectory)\patches\$(CAIRO_PATCH_FILE)&quot;"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(CAIRO_DIR)" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\cairo_patched" />
    </Target>
    <Target Name="BuildCairo">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildCairo" />
        <MSBuild
            Projects="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\src\cairo.vcxproj"
            Properties="Configuration=Release;Platform=Win32;VcpkgEnabled=false"/>
        <MSBuild
            Projects="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\src\cairo.vcxproj"
            Properties="Configuration=Release;Platform=x64;VcpkgEnabled=false"/>
        <MSBuild
            Projects="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\src\cairo.vcxproj"
            Properties="Configuration=Debug;Platform=Win32;VcpkgEnabled=false"/>
        <MSBuild
            Projects="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\src\cairo.vcxproj"
            Properties="Configuration=Debug;Platform=x64;VcpkgEnabled=false"/>
    </Target>
    <Target Name="CopyCairo">
        <ItemGroup>
            <CAIRO_BIN_FILES
                Include="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\src\bin\**\*.*" />
            <CAIRO_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\AUTHORS" />
            <CAIRO_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\BIBLIOGRAPHY" />
            <CAIRO_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\BUGS" />
            <CAIRO_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\CODING_STYLE" />
            <CAIRO_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\CODING_STYLE" />
            <CAIRO_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\COPYING" />
            <CAIRO_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\COPYING-LGPL-2.1" />
            <CAIRO_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\COPYING-MPL-1.1" />
            <CAIRO_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\doc\public\html\*.*" />
            <CAIRO_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\src\include\**\*.*" />
            <CAIRO_LIB_FILES
                Include="$(MSBuildProjectDirectory)\$(CAIRO_DIR)\src\lib\**\*.*" />
        </ItemGroup>
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CopyCairo" />
        <MakeDir
            Condition="!Exists('$(COMMON_SDKS)\docs\Cairo')"
            Directories="$(COMMON_SDKS)\docs\Cairo" />
        <Copy
            SourceFiles="@(CAIRO_BIN_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\%(RecursiveDir)"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(CAIRO_DOCS_FILES)"
            DestinationFolder="$(COMMON_SDKS)\docs\Cairo"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(CAIRO_INCLUDE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\include\%(RecursiveDir)"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(CAIRO_LIB_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\%(RecursiveDir)"
            SkipUnchangedFiles="true" />
    </Target>
    <Target Name="CleanCairo">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CleanCairo" />
        <RemoveDir
            Condition="Exists('$(MSBuildProjectDirectory)\$(CAIRO_DIR)')"
            Directories="$(MSBuildProjectDirectory)\$(CAIRO_DIR)" />
    </Target>
    <Target Name="Cairo">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - Cairo" />
        <CallTarget
            Condition="!Exists('$(MSBuildProjectDirectory)\build_state\Cairo_build_successful')"
            Targets="DownloadCairo;ExtractCairo;PatchCairo;BuildCairo;CopyCairo" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\build_state\Cairo_build_successful" />
    </Target>
</Project>
