<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Development|Win32">
      <Configuration>Development</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Development|x64">
      <Configuration>Development</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|Win32">
      <Configuration>Release</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|x64">
      <Configuration>Release</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <ProjectGuid>{88C5DAC6-30A0-4CFD-AF51-540A977D1F3F}</ProjectGuid>
    <Keyword>Win32Proj</Keyword>
    <RootNamespace>renderdoc_vulkan</RootNamespace>
    <ProjectName>vulkan</ProjectName>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup Label="Configuration">
    <ConfigurationType>StaticLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <CharacterSet>Unicode</CharacterSet>
    <PlatformToolset>v140</PlatformToolset>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
    <WholeProgramOptimization>true</WholeProgramOptimization>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  <ImportGroup Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <PropertyGroup>
    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
    <ExecutablePath>$(ExecutablePath)</ExecutablePath>
    <IncludePath>$(SolutionDir)\breakpad;$(IncludePath)</IncludePath>
    <LibraryPath>$(LibraryPath)</LibraryPath>
    <ExcludePath>$(ExcludePath)</ExcludePath>
    <TargetName>driver_$(ProjectName)</TargetName>
  </PropertyGroup>
  <PropertyGroup>
    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\obj\$(ProjectName)\</IntDir>
  </PropertyGroup>
  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
    <ClCompile>
      <PreprocessorDefinitions>WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
    <ClCompile>
      <PreprocessorDefinitions>RELEASE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    </ClCompile>
  </ItemDefinitionGroup>
	<ItemDefinitionGroup>
    <ClCompile>
      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
      <RuntimeTypeInfo>false</RuntimeTypeInfo>
      <MultiProcessorCompilation>true</MultiProcessorCompilation>
      <MinimalRebuild>false</MinimalRebuild>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
      <AdditionalIncludeDirectories>$(SolutionDir)renderdoc\;$(SolutionDir)renderdoc\3rdparty\</AdditionalIncludeDirectories>
      <PreprocessorDefinitions>VK_USE_PLATFORM_WIN32_KHR;RENDERDOC_EXPORTS;RENDERDOC_PLATFORM_WIN32;WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <WarningLevel>Level4</WarningLevel>
      <TreatWarningAsError>true</TreatWarningAsError>
      <DisableSpecificWarnings>4100</DisableSpecificWarnings>
      <PrecompiledHeader>Use</PrecompiledHeader>
      <PrecompiledHeaderFile>precompiled.h</PrecompiledHeaderFile>
      <ForcedIncludeFiles>precompiled.h</ForcedIncludeFiles>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)'=='Development'">
    <ClCompile>
      <Optimization>Disabled</Optimization>
    </ClCompile>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
    <ClCompile>
      <Optimization>MaxSpeed</Optimization>
      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
    </ClCompile>
    <Link>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup>
    <ClCompile Include="precompiled.cpp">
      <PrecompiledHeader>Create</PrecompiledHeader>
    </ClCompile>
    <ClCompile Include="vk_apple.cpp">
      <ExcludedFromBuild>true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="vk_counters.cpp" />
    <ClCompile Include="vk_dispatchtables.cpp" />
    <ClCompile Include="vk_initstate.cpp" />
    <ClCompile Include="vk_memory.cpp" />
    <ClCompile Include="vk_state.cpp" />
    <ClCompile Include="vk_layer.cpp" />
    <ClCompile Include="vk_layer_android.cpp">
      <ExcludedFromBuild>true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="vk_common.cpp" />
    <ClCompile Include="vk_core.cpp" />
    <ClCompile Include="vk_debug.cpp" />
    <ClCompile Include="vk_info.cpp" />
    <ClCompile Include="vk_manager.cpp" />
    <ClCompile Include="vk_replay.cpp" />
    <ClCompile Include="vk_win32.cpp" />
    <ClCompile Include="vk_posix.cpp">
      <ExcludedFromBuild>true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="vk_linux.cpp">
      <ExcludedFromBuild>true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="vk_android.cpp">
      <ExcludedFromBuild>true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="vk_resources.cpp" />
    <ClCompile Include="wrappers\vk_cmd_funcs.cpp" />
    <ClCompile Include="wrappers\vk_dynamic_funcs.cpp" />
    <ClCompile Include="wrappers\vk_descriptor_funcs.cpp" />
    <ClCompile Include="wrappers\vk_device_funcs.cpp" />
    <ClCompile Include="wrappers\vk_draw_funcs.cpp" />
    <ClCompile Include="wrappers\vk_get_funcs.cpp" />
    <ClCompile Include="wrappers\vk_misc_funcs.cpp" />
    <ClCompile Include="wrappers\vk_queue_funcs.cpp" />
    <ClCompile Include="wrappers\vk_resource_funcs.cpp" />
    <ClCompile Include="wrappers\vk_shader_funcs.cpp" />
    <ClCompile Include="wrappers\vk_sync_funcs.cpp" />
    <ClCompile Include="wrappers\vk_wsi_funcs.cpp" />
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="official\vk_layer.h" />
    <ClInclude Include="official\vk_platform.h" />
    <ClInclude Include="official\vulkan.h" />
    <ClInclude Include="precompiled.h" />
    <ClInclude Include="vk_common.h" />
    <ClInclude Include="vk_core.h" />
    <ClInclude Include="vk_debug.h" />
    <ClInclude Include="vk_dispatchtables.h" />
    <ClInclude Include="vk_hookset_defs.h" />
    <ClInclude Include="vk_info.h" />
    <ClInclude Include="vk_manager.h" />
    <ClInclude Include="vk_replay.h" />
    <ClInclude Include="vk_resources.h" />
    <ClInclude Include="vk_state.h" />
  </ItemGroup>
  <ItemGroup>
    <None Include="renderdoc.json" />
  </ItemGroup>
  <Target Name="_jsonProcess" BeforeTargets="PrepareForBuild">
    <!-- Read the version.h -->
    <PropertyGroup>
      <VersionFile>$([System.IO.File]::ReadAllText('$(SolutionDir)renderdoc/api/replay/version.h').Trim())</VersionFile>
    </PropertyGroup>

    <!-- Extract the major and minor lines -->
    <PropertyGroup>
      <!-- Find the start of the line -->
      <MajorVersionStart>$(VersionFile.IndexOf('#define RENDERDOC_VERSION_MAJOR'))</MajorVersionStart>

      <!-- Take the rest of the file and split it by newline to get an array of lines,
           Take the first line and split it by space
           Take the third item. This is #define MAJOR foo
                                            0     1    2
      -->
      <MajorVersion>$(VersionFile.Substring($(MajorVersionStart)).Split('
')[0].Split(' ')[2])</MajorVersion>

      <MinorVersionStart>$(VersionFile.IndexOf('#define RENDERDOC_VERSION_MINOR'))</MinorVersionStart>
      <MinorVersion>$(VersionFile.Substring($(MinorVersionStart)).Split('
')[0].Split(' ')[2])</MinorVersion>
    </PropertyGroup>

    <Message Text="Processing layer JSON file for RenderDoc $(MajorVersion).$(MinorVersion)" Importance="High"/>

    <!-- Read the template json, replace the major/minor versions -->
    <PropertyGroup>
      <JSONContents>$([System.IO.File]::ReadAllText('$(ProjectDir)renderdoc.json').Replace('[MAJOR]', '$(MajorVersion)').Replace('[MINOR]', '$(MinorVersion)'))</JSONContents>
    </PropertyGroup>

    <!-- Write it out to the output directory -->
    <WriteLinesToFile File="$(OutDir)renderdoc.json" Lines="$(JSONContents)" Overwrite="true"/>
  </Target>
  <ItemGroup>
    <ProjectReference Include="..\shaders\spirv\renderdoc_spirv.vcxproj">
      <Project>{0aae0ad1-371b-4a36-9ed1-80e10e960605}</Project>
      <Private>false</Private>
      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
      <LinkLibraryDependencies>false</LinkLibraryDependencies>
      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>