﻿<?xml version="1.0" encoding="utf-8"?>
<Project
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="UpdateOpenAL">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - UpdateOpenAL" />
        <Exec
            Condition="Exists('$(MSBuildProjectDirectory)\$(OPENAL_DIR)')"
            Command="&quot;$(GIT_EXE)&quot; pull"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(OPENAL_DIR)" />
        <Exec
            Condition="!Exists('$(MSBuildProjectDirectory)\$(OPENAL_DIR)')"
            Command="&quot;$(GIT_EXE)&quot; clone $(OPENAL_URL)"
            WorkingDirectory="$(MSBuildProjectDirectory)" />
        <WebDownload
            Condition="!Exists('$(MSBuildProjectDirectory)\$(OPENAL_DIR)\$(OPENAL_SPEC)')"
            FileUri="$(OPENAL_SPEC_URL)/$(OPENAL_SPEC)"
            FileName="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\$(OPENAL_SPEC)"
            UseDefaultCredentials="True" />
    </Target>
    <Target Name="ConfigureOpenAL_X86">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ConfigureOpenAL_X86" />
        <MakeDir
            Condition="!Exists('$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build32')"
            Directories="$(MSBuildProjectDirectory)\$(OPENAL_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)\$(OPENAL_DIR)\build32" />
    </Target>
    <Target Name="ConfigureOpenAL_X64">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ConfigureOpenAL_X64" />
        <MakeDir
            Condition="!Exists('$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build64')"
            Directories="$(MSBuildProjectDirectory)\$(OPENAL_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)\$(OPENAL_DIR)\build64" />
    </Target>
    <Target Name="ConfigureOpenAL">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - ConfigureOpenAL" />
        <CallTarget
            Targets="ConfigureOpenAL_X86;ConfigureOpenAL_X64" />
    </Target>
    <Target Name="BuildOpenAL_X86">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildOpenAL_X86" />
        <Exec
            Command="&quot;$(CMAKE_EXE)&quot; --build . --config Debug"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build32" />
        <Exec
            Command="&quot;$(CMAKE_EXE)&quot; --build . --config Release"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build32" />
    </Target>
    <Target Name="BuildOpenAL_X64">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildOpenAL_X64" />
        <Exec
            Command="&quot;$(CMAKE_EXE)&quot; --build . --config Debug"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build64" />
        <Exec
            Command="&quot;$(CMAKE_EXE)&quot; --build . --config Release"
            WorkingDirectory="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build64" />
    </Target>
    <Target Name="BuildOpenAL">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - BuildOpenAL" />
        <CallTarget
            Targets="ConfigureOpenAL_X86;BuildOpenAL_X86;ConfigureOpenAL_X64;BuildOpenAL_X64" />
    </Target>
    <Target Name="CopyOpenAL">
        <ItemGroup>
            <OPENAL_BIN_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build64\Debug\*.dll" />
            <OPENAL_BIN_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build64\Debug\*.exe" />
            <OPENAL_BIN_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build64\Release\*.dll" />
            <OPENAL_BIN_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build64\Release\*.exe" />
            <OPENAL_BIN_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build32\Debug\*.dll" />
            <OPENAL_BIN_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build32\Debug\*.exe" />
            <OPENAL_BIN_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build32\Release\*.dll" />
            <OPENAL_BIN_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build32\Release\*.exe" />
            <OPENAL_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\COPYING" />
            <OPENAL_DOCS_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\openal-1.1-specification.pdf" />
            <OPENAL_INCLUDE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\include\AL\**\*.*" />
            <OPENAL_LIB_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build64\Debug\*.lib" />
            <OPENAL_LIB_X64_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build64\Debug\OpenAL32.pdb" />
            <OPENAL_LIB_X64_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build64\Release\*.lib" />
            <OPENAL_LIB_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build32\Debug\*.lib" />
            <OPENAL_LIB_X86_DEBUG_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build32\Debug\OpenAL32.pdb" />
            <OPENAL_LIB_X86_RELEASE_FILES
                Include="$(MSBuildProjectDirectory)\$(OPENAL_DIR)\build32\Release\*.lib" />
        </ItemGroup>
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CopyOpenAL" />
        <MakeDir
            Condition="!Exists('$(COMMON_SDKS)\docs\OpenAL')"
            Directories="$(COMMON_SDKS)\docs\OpenAL" />
        <MakeDir
            Condition="!Exists('$(COMMON_SDKS)\include\AL')"
            Directories="$(COMMON_SDKS)\include\AL" />
        <Copy
            SourceFiles="@(OPENAL_BIN_X64_DEBUG_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x64\Debug"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENAL_BIN_X64_RELEASE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x64\Release"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENAL_BIN_X86_DEBUG_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x86\Debug"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENAL_BIN_X86_RELEASE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\bin\x86\Release"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENAL_DOCS_FILES)"
            DestinationFolder="$(COMMON_SDKS)\docs\OpenAL"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENAL_INCLUDE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\include\AL"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENAL_LIB_X64_DEBUG_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x64\Debug"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENAL_LIB_X64_RELEASE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x64\Release"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENAL_LIB_X86_DEBUG_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x86\Debug"
            SkipUnchangedFiles="true" />
        <Copy
            SourceFiles="@(OPENAL_LIB_X86_RELEASE_FILES)"
            DestinationFolder="$(COMMON_SDKS)\lib\x86\Release"
            SkipUnchangedFiles="true" />
    </Target>
    <Target Name="CleanOpenAL">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - CleanOpenAL" />
        <RemoveDir
            Condition="Exists('$(MSBuildProjectDirectory)\$(OPENAL_DIR)')"
            Directories="$(MSBuildProjectDirectory)\$(OPENAL_DIR)" />
    </Target>
    <Target Name="OpenAL">
        <SetConsoleTitle
            Title="$(CONSOLE_TITLE) - OpenAL" />
        <CallTarget
            Condition="!Exists('$(MSBuildProjectDirectory)\build_state\OpenAL_build_successful')"
            Targets="UpdateOpenAL;BuildOpenAL;CopyOpenAL" />
        <Touch
            AlwaysCreate='true'
            Files="$(MSBuildProjectDirectory)\build_state\OpenAL_build_successful" />
    </Target>
</Project>
