﻿<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="DownloadOpenJPEG">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - DownloadOpenJPEG" />
        <WebDownload
            Condition="!Exists('$(MSBuildProjectDirectory)\_archives\$(OPENJPEG_SRC_ZIP)')"
            FileUri="$(OPENJPEG_URL)/$(OPENJPEG_SRC_ZIP)"
            FileName="$(MSBuildProjectDirectory)\_archives\$(OPENJPEG_SRC_ZIP)"
            UseDefaultCredentials="True" />
    </Target>
    <Target Name="ExtractOpenJPEG">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ExtractOpenJPEG" />
        <Unzip
            Condition="!Exists('$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)')"
            ZipFileName="$(MSBuildProjectDirectory)\_archives\$(OPENJPEG_SRC_ZIP)"
            TargetDirectory="$(MSBuildProjectDirectory)" />
    </Target>
    <Target Name="PatchOpenJPEG">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - PatchOpenJPEG" />
        <Exec
            Condition="!Exists('$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\openjpeg_patched')"
            Command="&quot;$(PATCH_EXE)&quot; -p1 -i &quot;$(MSBuildProjectDirectory)\patches\$(OPENJPEG_PATCH_FILE)&quot;"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\openjpeg_patched" />
    </Target>
    <Target Name="ConfigureOpenJPEG_X86">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ConfigureOpenJPEG_X86" />
        <MakeDir
            Condition="!Exists('$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32')"
            Directories="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32" />
        <PropertyGroup>
            <ExecCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x86
            "$(CMAKE_EXE)" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -G "$(CMakeGenerator)" ..
            ]]></ExecCommand>
        </PropertyGroup>
        <Exec
            Command="$(ExecCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32" />
    </Target>
    <Target Name="ConfigureOpenJPEG_X64">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ConfigureOpenJPEG_X64" />
        <MakeDir
            Condition="!Exists('$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64')"
            Directories="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64" />
        <PropertyGroup>
            <ExecCommand><![CDATA[
            call $(MSBuildProjectDirectory)\SetVCVars.bat $(VSVer) x64
            "$(CMAKE_EXE)" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -G "$(CMakeGenerator)" -A x64 ..
            ]]></ExecCommand>
        </PropertyGroup>
        <Exec
            Command="$(ExecCommand)"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64" />
    </Target>
    <Target Name="ConfigureOpenJPEG">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ConfigureOpenJPEG" />
        <CallTarget
            Targets="ConfigureOpenJPEG_X86;ConfigureOpenJPEG_X64" />
    </Target>
    <Target Name="BuildOpenJPEG_X86">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildOpenJPEG_X86" />
        <Exec
            Command="&quot;$(CMAKE_EXE)&quot; --build . --config Debug"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32" />
        <Exec
            Command="&quot;$(CMAKE_EXE)&quot; --build . --config Release"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32" />
    </Target>
    <Target Name="BuildOpenJPEG_X64">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildOpenJPEG_X64" />
        <Exec
            Command="&quot;$(CMAKE_EXE)&quot; --build . --config Debug"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64" />
        <Exec
            Command="&quot;$(CMAKE_EXE)&quot; --build . --config Release"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64" />
    </Target>
    <Target Name="BuildOpenJPEG">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildOpenJPEG" />
        <CallTarget
            Targets="ConfigureOpenJPEG_X86;ConfigureOpenJPEG_X64;BuildOpenJPEG_X86;BuildOpenJPEG_X64" />
    </Target>
    <Target Name="CopyOpenJPEG">
        <ItemGroup>
            <OPENJPEG_BIN_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64\bin\Debug\*.exe" />
            <OPENJPEG_BIN_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64\bin\Debug\*.pdb" />
            <OPENJPEG_BIN_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64\bin\Debug\openjp2.dll" />
            <OPENJPEG_BIN_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64\bin\Release\*.exe" />
            <OPENJPEG_BIN_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64\bin\Release\*.pdb" />
            <OPENJPEG_BIN_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64\bin\Release\openjp2.dll" />
            <OPENJPEG_BIN_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32\bin\Debug\*.exe" />
            <OPENJPEG_BIN_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32\bin\Debug\*.pdb" />
            <OPENJPEG_BIN_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32\bin\Debug\openjp2.dll" />
            <OPENJPEG_BIN_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32\bin\Release\*.exe" />
            <OPENJPEG_BIN_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32\bin\Release\*.pdb" />
            <OPENJPEG_BIN_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32\bin\Release\openjp2.dll" />
            <OPENJPEG_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\AUTHORS.md" />
            <OPENJPEG_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\CHANGELOG.md" />
            <OPENJPEG_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\doc\man\**\*.*" />
            <OPENJPEG_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\LICENSE" />
            <OPENJPEG_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\NEWS.md" />
            <OPENJPEG_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\THANKS.md" />
            <OPENJPEG_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32\src\lib\openjp2\opj_config.h" />
            <OPENJPEG_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\src\lib\openjp2\openjpeg.h" />
            <OPENJPEG_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\src\lib\openjp2\opj_stdint.h" />
            <OPENJPEG_LIB_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64\bin\Debug\openjp2.lib" />
            <OPENJPEG_LIB_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build64\bin\Release\openjp2.lib" />
            <OPENJPEG_LIB_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32\bin\Debug\openjp2.lib" />
            <OPENJPEG_LIB_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)\build32\bin\Release\openjp2.lib" />
        </ItemGroup>
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CopyOpenJPEG" />
        <MakeDir
            Condition="!Exists('$(COMMON_SDKS)\docs\OpenJPEG')"
            Directories="$(COMMON_SDKS)\docs\OpenJPEG" />
        <MakeDir
            Condition="!Exists('$(COMMON_SDKS)\include\openjpeg-2.1')"
            Directories="$(COMMON_SDKS)\include\openjpeg-2.1" />
        <Copy
            SourceFiles="@(OPENJPEG_BIN_X64_DEBUG_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x64\Debug"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENJPEG_BIN_X64_RELEASE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x64\Release"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENJPEG_BIN_X86_DEBUG_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x86\Debug"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENJPEG_BIN_X86_RELEASE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x86\Release"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENJPEG_DOCS_FILES)"
            DestinationFolder="$(COMMON_SDKS)\docs\OpenJPEG\%(RecursiveDir)"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENJPEG_INCLUDE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\include\openjpeg-2.1"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENJPEG_LIB_X64_DEBUG_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x64\Debug"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENJPEG_LIB_X64_RELEASE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x64\Release"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENJPEG_LIB_X86_DEBUG_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x86\Debug"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENJPEG_LIB_X86_RELEASE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x86\Release"
            SkipUnchangedFiles="true" />
    </Target>
    <Target Name="CleanOpenJPEG">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CleanOpenJPEG" />
        <RemoveDir
            Condition="Exists('$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)')"
            Directories="$(MSBuildProjectDirectory)\$(OPENJPEG_DIR)" />
    </Target>
    <Target Name="OpenJPEG">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - OpenJPEG" />
        <CallTarget
            Condition="!Exists('$(MSBuildProjectDirectory)\build_state\OpenJPEG_build_successful')"
            Targets="DownloadOpenJPEG;ExtractOpenJPEG;PatchOpenJPEG;BuildOpenJPEG;CopyOpenJPEG" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\build_state\OpenJPEG_build_successful" />
    </Target>
</Project>
