﻿<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="DownloadSQLite">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - DownloadSQLite" />
        <WebDownload
            Condition="!Exists('$(MSBuildProjectDirectory)\_archives\$(SQLITE_SRC_ZIP)')"
            FileUri="$(SQLITE_URL)/$(SQLITE_SRC_ZIP)?r=release"
            FileName="$(MSBuildProjectDirectory)\_archives\$(SQLITE_SRC_ZIP)"
            UseDefaultCredentials="True" />    
    </Target>
    <Target Name="ExtractSQLite">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ExtractSQLite" />
        <Unzip
            Condition="!Exists('$(MSBuildProjectDirectory)\$(SQLITE_DIR)')"
            ZipFileName="$(MSBuildProjectDirectory)\_archives\$(SQLITE_SRC_ZIP)"
            TargetDirectory="$(MSBuildProjectDirectory)" />
    </Target>
    <Target Name="PatchSQLite">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - PatchSQLite" />
        <FileUpdate
            Condition="!Exists('$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite_patched')"
            Files="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\Makefile.msc"
            Regex="\$\x28LTLIBOPTS\x29 \$\x28LTLIBPATHS\x29"
            ReplacementText="%24(LTLIBOPTS) %24(LTLIBPATHS) %24(TCLLIBPATHS)" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite_patched" />
    </Target>
    <Target Name="BuildSQLite_X86">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildSQLite_X86" />
        <PropertyGroup>
            <BuildCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x86
            "$(NMAKE_EXE)" /nologo /f Makefile.msc all USE_CRT_DLL=1 USE_ICU=1 TCLSH_CMD=tclsh86t LIBTCL=tcl86t.lib LIBTCLSTUB=tclstub86.lib TCLINCDIR=C:\ActiveTcl86\include TCLLIBDIR=C:\ActiveTcl86\lib ICUINCDIR="$(COMMON_SDKS)\include" ICULIBDIR="$(COMMON_SDKS)\lib\x86" PLATFORM=x86
            ]]></BuildCommand>
            <CleanCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x86
            "$(NMAKE_EXE)" /nologo /f Makefile.msc clean
            ]]></CleanCommand>
        </PropertyGroup>
        <MakeDir
            Condition="!Exists('$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86')"
            Directories="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86" />
        <Exec
            Command="$(BuildCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(SQLITE_DIR)" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\libsqlite3.lib"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\libtclsqlite3.lib"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite3.def"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite3.dll"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite3.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite3.h"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite3.lib"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86"
            SkipUnchangedFiles="true" />
        <Exec
            Command="$(CleanCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(SQLITE_DIR)" />
    </Target>
    <Target Name="BuildSQLite_X64">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildSQLite_X64" />
        <MakeDir
            Condition="!Exists('$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64')"
            Directories="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64" />
        <PropertyGroup>
            <BuildCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x64
            "$(NMAKE_EXE)" /nologo /f Makefile.msc all USE_CRT_DLL=1 USE_ICU=1 TCLSH_CMD=tclsh86t LIBTCL=tcl86t.lib LIBTCLSTUB=tclstub86.lib TCLINCDIR=C:\ActiveTcl\include TCLLIBDIR=C:\ActiveTcl\lib ICUINCDIR="$(COMMON_SDKS)\include" ICULIBDIR="$(COMMON_SDKS)\lib\x64" PLATFORM=x64
            ]]></BuildCommand>
            <CleanCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x64
            "$(NMAKE_EXE)" /nologo /f Makefile.msc clean
            ]]></CleanCommand>
        </PropertyGroup>
        <Exec
            Command="$(BuildCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(SQLITE_DIR)" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\libsqlite3.lib"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\libtclsqlite3.lib"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite3.def"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite3.dll"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite3.exe"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite3.h"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite3.lib"
            DestinationFolder="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64"
            SkipUnchangedFiles="true" />
        <Exec
            Command="$(CleanCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(SQLITE_DIR)" />
    </Target>
    <Target Name="BuildSQLite"> 
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildSQLite" />
       <CallTarget
            Targets="BuildSQLite_X86;BuildSQLite_X64" />
    </Target>
    <Target Name="CopySQLite">
        <ItemGroup>
           <SQLITE_BIN_X64_FILES
                Include="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64\*.def" />
            <SQLITE_BIN_X64_FILES
                Include="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64\*.dll" />
            <SQLITE_BIN_X64_FILES
                Include="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64\*.exe" />
            <SQLITE_BIN_X86_FILES
                Include="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86\*.def" />
            <SQLITE_BIN_X86_FILES
                Include="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86\*.dll" />
            <SQLITE_BIN_X86_FILES
                Include="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86\*.exe" />
            <SQLITE_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite3.1" />
            <SQLITE_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\ext\icu\sqliteicu.h" />
            <SQLITE_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\src\sqlite3ext.h" />
            <SQLITE_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64\sqlite3.h" />
            <SQLITE_LIB_X64_FILES
                Include="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x64\*.lib" />
            <SQLITE_LIB_X86_FILES
                Include="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\x86\*.lib" />
        </ItemGroup>
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CopySQLite" />
        <MakeDir
            Condition="!Exists('$(COMMON_SDKS)\docs\SQLite')"
            Directories="$(COMMON_SDKS)\docs\SQLite" />
        <Copy
            SourceFiles="@(SQLITE_BIN_X64_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(SQLITE_BIN_X86_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x86"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(SQLITE_DOCS_FILES)"
            DestinationFolder="$(COMMON_SDKS)\docs\SQLite"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(SQLITE_INCLUDE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\include"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(SQLITE_LIB_X64_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x64"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(SQLITE_LIB_X86_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x86"
            SkipUnchangedFiles="true" />
    </Target>
    <Target Name="CleanSQLite">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CleanSQLite" />
        <RemoveDir
            Condition="Exists('$(MSBuildProjectDirectory)\$(SQLITE_DIR)')"
            Directories="$(MSBuildProjectDirectory)\$(SQLITE_DIR)" />
    </Target>
    <Target Name="SQLite">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - SQLite" />
        <CallTarget
            Condition="!Exists('$(MSBuildProjectDirectory)\build_state\SQLite_build_successful')"
            Targets="DownloadSQLite;ExtractSQLite;PatchSQLite;BuildSQLite;CopySQLite" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\build_state\SQLite_build_successful" />
    </Target>
</Project>
