﻿<?xml version="1.0" encoding="utf-8"?>
<Project
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="DownloadPDCurses">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - DownloadPDCurses" />
        <WebDownload
            Condition="!Exists('$(MSBuildProjectDirectory)\_archives\$(PDCURSES_SRC_TAR_GZ)')"
            FileUri="$(PDCURSES_URL)/$(PDCURSES_SRC_TAR_GZ)/download"
            FileName="$(MSBuildProjectDirectory)\_archives\$(PDCURSES_SRC_TAR_GZ)"
            UseDefaultCredentials="True" />
    </Target>
    <Target Name="ExtractPDCurses">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ExtractPDCurses" />
        <ExtractWith7za
            Condition="!Exists('$(MSBuildProjectDirectory)\$(PDCURSES_DIR)')"
            FileToExtract="$(MSBuildProjectDirectory)\_archives\$(PDCURSES_SRC_TAR_GZ)" />
    </Target>
    <Target Name="PatchPDCurses">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - PatchPDCurses" />
        <Exec
            Condition="!Exists('$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\pdcurses_patched')"
            Command="&quot;$(PATCH_EXE)&quot; -p1 -i &quot;$(MSBuildProjectDirectory)\patches\$(PDCURSES_PATCH_FILE)&quot;"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\pdcurses_patched" />
    </Target>
    <Target Name="BuildPDCurses_X86">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildPDCurses_X86" />
        <MakeDir
            Condition="!Exists('$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86')"
            Directories="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86" />
        <PropertyGroup>
            <BuildCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x86
            "$(NMAKE_EXE)" -nologo -f Makefile.vc WIDE=Y DLL=Y UTF8=Y all demos
            ]]></BuildCommand>
            <CleanCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x86
            "$(NMAKE_EXE)" -nologo -f Makefile.vc WIDE=Y DLL=Y UTF8=Y clean
            ]]></CleanCommand>
        </PropertyGroup>
        <Exec
            Command="$(BuildCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\pdcurses.dll"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\pdcurses.lib"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\firework.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\ozdemo.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\ptest.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\rain.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\testcurs.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\tuidemo.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\worm.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\xmas.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86"
            SkipUnchangedFiles="true" />
        <Exec
            Command="$(CleanCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon" />
    </Target>
    <Target Name="BuildPDCurses_X64">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildPDCurses_X64" />
        <MakeDir
            Condition="!Exists('$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64')"
            Directories="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64" />
        <PropertyGroup>
            <BuildCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x64
            "$(NMAKE_EXE)" -nologo -f Makefile.vc WIDE=Y DLL=Y UTF8=Y all demos
            ]]></BuildCommand>
            <CleanCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x64
            "$(NMAKE_EXE)" -nologo -f Makefile.vc WIDE=Y DLL=Y UTF8=Y clean
            ]]></CleanCommand>
        </PropertyGroup>
        <Exec
            Command="$(BuildCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\pdcurses.dll"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\pdcurses.lib"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\firework.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\ozdemo.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\ptest.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\rain.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\testcurs.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\tuidemo.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\worm.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\xmas.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64"
            SkipUnchangedFiles="true" />
        <Exec
            Command="$(CleanCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon" />
    </Target>
    <Target Name="BuildPDCurses">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildPDCurses" />
        <CallTarget
            Targets="BuildPDCurses_X86;BuildPDCurses_X64" />
    </Target>
    <Target Name="CopyPDCurses">
        <ItemGroup>
            <PDCURSES_BIN_X64_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64\*.dll" />
            <PDCURSES_BIN_X64_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64\*.exe" />
            <PDCURSES_BIN_X86_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86\*.dll" />
            <PDCURSES_BIN_X86_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86\*.exe" />
            <PDCURSES_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\docs\*.css" />
            <PDCURSES_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\docs\*.html" />
            <PDCURSES_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\docs\*.ico" />
            <PDCURSES_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\docs\*.png" />
            <PDCURSES_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\man\HISTORY.md" />
            <PDCURSES_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\man\IMPLEMNT.md" />
            <PDCURSES_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\man\MANUAL.md" />
            <PDCURSES_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\man\USERS.md" />
            <PDCURSES_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\curses.h" />
            <PDCURSES_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\curspriv.h" />
            <PDCURSES_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\panel.h" />
            <PDCURSES_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\pdcwin.h" />
            <PDCURSES_LIB_X64_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x64\*.lib" />
            <PDCURSES_LIB_X86_FILES
                Include="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)\wincon\x86\*.lib" />
        </ItemGroup>
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CopyPDCurses" />
        <MakeDir
            Condition="!Exists('$(COMMON_SDKS)\docs\PDCurses')"
            Directories="$(COMMON_SDKS)\docs\PDCurses" />
        <Copy
            SourceFiles="@(PDCURSES_BIN_X64_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(PDCURSES_BIN_X86_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(PDCURSES_DOCS_FILES)"
            DestinationFolder="$(COMMON_SDKS)\docs\PDCurses\%(RecursiveDir)"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(PDCURSES_INCLUDE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\include"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(PDCURSES_LIB_X64_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(PDCURSES_LIB_X86_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x86"
            SkipUnchangedFiles="true" />
    </Target>
    <Target Name="CleanPDCurses">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CleanPDCurses" />
        <RemoveDir
            Condition="Exists('$(MSBuildProjectDirectory)\$(PDCURSES_DIR)')"
            Directories="$(MSBuildProjectDirectory)\$(PDCURSES_DIR)" />
    </Target>
    <Target Name="PDCurses">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - PDCurses" />
        <CallTarget
            Condition="!Exists('$(MSBuildProjectDirectory)\build_state\PDCurses_build_successful')"
            Targets="DownloadPDCurses;ExtractPDCurses;PatchPDCurses;BuildPDCurses;CopyPDCurses" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\build_state\PDCurses_build_successful" />
    </Target>
</Project>
