﻿<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="DownloadFLTK">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - DownloadFLTK" />
        <WebDownload
            Condition="!Exists('$(MSBuildProjectDirectory)\_archives\$(FLTK_DOCS_HTML_TAR_GZ)')"
            FileUri="$(FLTK_URL)/$(FLTK_DOCS_HTML_TAR_GZ)"
            FileName="$(MSBuildProjectDirectory)\_archives\$(FLTK_DOCS_HTML_TAR_GZ)"
            UseDefaultCredentials="True" />
        <WebDownload
            Condition="!Exists('$(MSBuildProjectDirectory)\_archives\$(FLTK_DOCS_PDF_TAR_GZ)')"
            FileUri="$(FLTK_URL)/$(FLTK_DOCS_PDF_TAR_GZ)"
            FileName="$(MSBuildProjectDirectory)\_archives\$(FLTK_DOCS_PDF_TAR_GZ)"
            UseDefaultCredentials="True" />
        <WebDownload
            Condition="!Exists('$(MSBuildProjectDirectory)\_archives\$(FLTK_SRC_TAR_GZ)')"
            FileUri="$(FLTK_URL)/$(FLTK_SRC_TAR_GZ)"
            FileName="$(MSBuildProjectDirectory)\_archives\$(FLTK_SRC_TAR_GZ)"
            UseDefaultCredentials="True" />
    </Target>
    <Target Name="ExtractFLTK">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ExtractFLTK" />
        <ExtractWith7za
            FileToExtract="$(MSBuildProjectDirectory)\_archives\$(FLTK_DOCS_HTML_TAR_GZ)" />
        <ExtractWith7za
            FileToExtract="$(MSBuildProjectDirectory)\_archives\$(FLTK_DOCS_PDF_TAR_GZ)" />
        <ExtractWith7za
            FileToExtract="$(MSBuildProjectDirectory)\_archives\$(FLTK_SRC_TAR_GZ)" />
    </Target>
    <Target Name="PatchFLTK">
        <ItemGroup>
            <AbiVersion Include="$(MSBuildProjectDirectory)\$(FLTK_DIR)\abi-version.ide" />
        </ItemGroup>
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - PatchFLTK" />
        <Exec
            Condition="!Exists('$(MSBuildProjectDirectory)\$(FLTK_DIR)\fltk_patched')"
            Command="&quot;$(PATCH_EXE)&quot; -p1 -i &quot;$(MSBuildProjectDirectory)\patches\$(FLTK_PATCH_FILE)&quot;"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(FLTK_DIR)" />
        <WriteLinesToFile
            File="@(AbiVersion)" Lines="#define FL_ABI_VERSION $(FLTK_ABI_VERSION)"
            Overwrite="false" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\$(FLTK_DIR)\fltk_patched" />
    </Target>
    <Target Name="BuildFLTK">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildFLTK" />
        <MSBuild
            Projects="$(MSBuildProjectDirectory)\$(FLTK_DIR)\ide\VisualC201x\fltk.sln"
            Properties="Configuration=Release;Platform=Win32;VcpkgEnabled=false"/>
        <MSBuild
            Projects="$(MSBuildProjectDirectory)\$(FLTK_DIR)\ide\VisualC201x\fltk.sln"
            Properties="Configuration=Release;Platform=x64;VcpkgEnabled=false"/>
        <MSBuild
            Projects="$(MSBuildProjectDirectory)\$(FLTK_DIR)\ide\VisualC201x\fltk.sln"
            Properties="Configuration=Debug;Platform=Win32;VcpkgEnabled=false"/>
        <MSBuild
            Projects="$(MSBuildProjectDirectory)\$(FLTK_DIR)\ide\VisualC201x\fltk.sln"
            Properties="Configuration=Debug;Platform=x64;VcpkgEnabled=false"/>
    </Target>
    <Target Name="CopyFLTK">
        <ItemGroup>
            <FLTK_BIN_FILES
                Include="$(MSBuildProjectDirectory)\$(FLTK_DIR)\ide\VisualC201x\bin\**\*.*" />
            <FLTK_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(FLTK_DIR)\documentation\html\**\*.*" />
            <FLTK_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(FLTK_DIR)\FL\**\*.*" />
            <FLTK_LIB_FILES
                Include="$(MSBuildProjectDirectory)\$(FLTK_DIR)\ide\VisualC201x\lib\**\*.*" />
        </ItemGroup>
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CopyFLTK" />
        <MakeDir
            Condition="!Exists('$(COMMON_SDKS)\docs\FLTK')"
            Directories="$(COMMON_SDKS)\docs\FLTK" />
        <MakeDir
            Condition="!Exists('$(COMMON_SDKS)\include\FL')"
            Directories="$(COMMON_SDKS)\include\FL" />
        <Copy
            SourceFiles="@(FLTK_BIN_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\%(RecursiveDir)"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(FLTK_DOCS_FILES)"
            DestinationFolder="$(COMMON_SDKS)\docs\FLTK\%(RecursiveDir)"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(FLTK_INCLUDE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\include\FL\%(RecursiveDir)"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(FLTK_LIB_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\%(RecursiveDir)"
            SkipUnchangedFiles="true" />
    </Target>
    <Target Name="CleanFLTK">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CleanFLTK" />
        <RemoveDir
            Condition="Exists('$(MSBuildProjectDirectory)\$(FLTK_DIR)')"
            Directories="$(MSBuildProjectDirectory)\$(FLTK_DIR)" />
    </Target>
    <Target Name="FLTK">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - FLTK" />
        <CallTarget
            Condition="!Exists('$(MSBuildProjectDirectory)\build_state\FLTK_build_successful')"
            Targets="DownloadFLTK;ExtractFLTK;PatchFLTK;BuildFLTK;CopyFLTK" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\build_state\FLTK_build_successful" />
    </Target>
</Project>
