<?xml version="1.0" encoding="utf-8"?>
<Project InitialTargets="UNDUPOBJ" DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="DebugFast|Win32">
      <Configuration>DebugFast</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="DebugFast|x64">
      <Configuration>DebugFast</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Debug|Win32">
      <Configuration>Debug</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Debug|x64">
      <Configuration>Debug</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="ReleaseLTCG|Win32">
      <Configuration>ReleaseLTCG</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="ReleaseLTCG|x64">
      <Configuration>ReleaseLTCG</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>
  <ItemGroup>
    <ClCompile Include="bus.cpp" />
    <ClCompile Include="component.cpp" />
    <ClCompile Include="cpu.cpp" />
    <ClCompile Include="cpu_8086\cpu.cpp" />
    <ClCompile Include="cpu_8086\debugger_interface.cpp" />
    <ClCompile Include="cpu_8086\decoder.cpp" />
    <ClCompile Include="cpu_x86\cached_interpreter_backend.cpp" />
    <ClCompile Include="cpu_x86\code_cache_backend.cpp" />
    <ClCompile Include="cpu_x86\code_cache_types.cpp" />
    <ClCompile Include="cpu_x86\cpu_x86.cpp" />
    <ClCompile Include="cpu_x86\debugger_interface.cpp" />
    <ClCompile Include="cpu_x86\interpreter.cpp">
      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">/d2SSAOptimizer- %(AdditionalOptions)</AdditionalOptions>
      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='ReleaseLTCG|x64'">/d2SSAOptimizer- %(AdditionalOptions)</AdditionalOptions>
    </ClCompile>
    <ClCompile Include="cpu_x86\decoder.cpp" />
    <ClCompile Include="cpu_x86\interpreter_backend.cpp" />
    <ClCompile Include="cpu_x86\cycles.cpp" />
    <ClCompile Include="cpu_x86\recompiler_backend.cpp" />
    <ClCompile Include="cpu_x86\recompiler_code_generator.cpp" />
    <ClCompile Include="cpu_x86\recompiler_code_generator_generic.cpp" />
    <ClCompile Include="cpu_x86\recompiler_code_generator_x64.cpp" />
    <ClCompile Include="cpu_x86\recompiler_register_cache.cpp" />
    <ClCompile Include="cpu_x86\recompiler_thunks.cpp" />
    <ClCompile Include="dma_controller.cpp" />
    <ClCompile Include="hw\adlib.cpp" />
    <ClCompile Include="hw\ata_device.cpp" />
    <ClCompile Include="hw\bochs_vga.cpp" />
    <ClCompile Include="hw\cdrom.cpp" />
    <ClCompile Include="hw\et4000.cpp" />
    <ClCompile Include="hw\floppy.cpp" />
    <ClCompile Include="hw\i82437fx.cpp" />
    <ClCompile Include="hw\ata_cdrom.cpp" />
    <ClCompile Include="hw\ata_hdd.cpp" />
    <ClCompile Include="hw\pci_bus.cpp" />
    <ClCompile Include="hw\pci_device.cpp" />
    <ClCompile Include="hw\pci_ide.cpp" />
    <ClCompile Include="hw\vga_base.cpp" />
    <ClCompile Include="hw\voodoo.cpp" />
    <ClCompile Include="hw\xt_ide.cpp" />
    <ClCompile Include="hw\ymf262.cpp" />
    <ClCompile Include="hw\keyboard_scancodes.cpp" />
    <ClCompile Include="hw\soundblaster.cpp" />
    <ClCompile Include="hw\xt_ppi.cpp" />
    <ClCompile Include="interrupt_controller.cpp" />
    <ClCompile Include="systems\ami386.cpp" />
    <ClCompile Include="systems\ali1429.cpp" />
    <ClCompile Include="systems\i430fx.cpp" />
    <ClCompile Include="systems\pcipc.cpp" />
    <ClCompile Include="thirdparty\dosbox\dbopl.cpp" />
    <ClCompile Include="host_interface.cpp" />
    <ClCompile Include="hw\cga.cpp" />
    <ClCompile Include="hw\ds12887.cpp" />
    <ClCompile Include="hw\fdc.cpp" />
    <ClCompile Include="hw\hdc.cpp" />
    <ClCompile Include="hw\i8042_ps2.cpp" />
    <ClCompile Include="hw\i8237_dma.cpp" />
    <ClCompile Include="hw\i8253_pit.cpp" />
    <ClCompile Include="hw\i8259_pic.cpp" />
    <ClCompile Include="hw\pcspeaker.cpp" />
    <ClCompile Include="hw\serial.cpp" />
    <ClCompile Include="hw\serial_mouse.cpp" />
    <ClCompile Include="hw\vga.cpp" />
    <ClCompile Include="mmio.cpp" />
    <ClCompile Include="system.cpp" />
    <ClCompile Include="systems\bochs.cpp" />
    <ClCompile Include="systems\ibmat.cpp" />
    <ClCompile Include="systems\isapc.cpp" />
    <ClCompile Include="systems\ibmxt.cpp" />
    <ClCompile Include="thirdparty\mame\osdcore.cpp" />
    <ClCompile Include="thirdparty\mame\osdsync.cpp" />
    <ClCompile Include="thirdparty\mame\polylgcy.cpp" />
    <ClCompile Include="thirdparty\mame\rgbgen.cpp" />
    <ClCompile Include="thirdparty\mame\rgbsse.cpp" />
    <ClCompile Include="thirdparty\mame\voodoo.cpp" />
    <ClCompile Include="timing_event.cpp" />
    <ClCompile Include="types.cpp" />
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="bus.h" />
    <ClInclude Include="component.h" />
    <ClInclude Include="cpu.h" />
    <ClInclude Include="cpu_8086\cpu.h" />
    <ClInclude Include="cpu_8086\debugger_interface.h" />
    <ClInclude Include="cpu_8086\decoder.h" />
    <ClInclude Include="cpu_8086\instruction.h" />
    <ClInclude Include="cpu_8086\types.h" />
    <ClInclude Include="cpu_x86\backend.h" />
    <ClInclude Include="cpu_x86\cached_interpreter_backend.h" />
    <ClInclude Include="cpu_x86\code_cache_backend.h" />
    <ClInclude Include="cpu_x86\code_cache_types.h" />
    <ClInclude Include="cpu_x86\cpu_x86.h" />
    <ClInclude Include="cpu_x86\debugger_interface.h" />
    <ClInclude Include="cpu_x86\decoder.h" />
    <ClInclude Include="cpu_x86\interpreter.h" />
    <ClInclude Include="cpu_x86\interpreter_backend.h" />
    <ClInclude Include="cpu_x86\interpreter.inl" />
    <ClInclude Include="cpu_x86\cycles.h" />
    <ClInclude Include="cpu_x86\recompiler_backend.h" />
    <ClInclude Include="cpu_x86\recompiler_code_generator.h" />
    <ClInclude Include="cpu_x86\recompiler_register_cache.h" />
    <ClInclude Include="cpu_x86\recompiler_thunks.h" />
    <ClInclude Include="cpu_x86\recompiler_types.h" />
    <ClInclude Include="cpu_x86\types.h" />
    <ClInclude Include="debugger_interface.h" />
    <ClInclude Include="dma_controller.h" />
    <ClInclude Include="hw\adlib.h" />
    <ClInclude Include="hw\bochs_vga.h" />
    <ClInclude Include="hw\cdrom.h" />
    <ClInclude Include="hw\et4000.h" />
    <ClInclude Include="hw\floppy.h" />
    <ClInclude Include="hw\i82437fx.h" />
    <ClInclude Include="hw\ata_device.h" />
    <ClInclude Include="hw\ata_cdrom.h" />
    <ClInclude Include="hw\ata_hdd.h" />
    <ClInclude Include="hw\pci_bus.h" />
    <ClInclude Include="hw\pci_device.h" />
    <ClInclude Include="hw\pci_ide.h" />
    <ClInclude Include="hw\vga_base.h" />
    <ClInclude Include="hw\vga_base.inl" />
    <ClInclude Include="hw\voodoo.h" />
    <ClInclude Include="hw\xt_ide.h" />
    <ClInclude Include="hw\ymf262.h" />
    <ClInclude Include="hw\keyboard_scancodes.h" />
    <ClInclude Include="hw\soundblaster.h" />
    <ClInclude Include="hw\xt_ppi.h" />
    <ClInclude Include="systems\ami386.h" />
    <ClInclude Include="systems\ali1429.h" />
    <ClInclude Include="systems\i430fx.h" />
    <ClInclude Include="systems\pcipc.h" />
    <ClCompile Include="system_config_parser.cpp" />
    <ClInclude Include="thirdparty\dosbox\dbopl.h" />
    <ClInclude Include="host_interface.h" />
    <ClInclude Include="hw\cga.h" />
    <ClInclude Include="hw\ds12887.h" />
    <ClInclude Include="hw\fdc.h" />
    <ClInclude Include="hw\hdc.h" />
    <ClInclude Include="hw\i8042_ps2.h" />
    <ClInclude Include="hw\i8237_dma.h" />
    <ClInclude Include="hw\i8253_pit.h" />
    <ClInclude Include="hw\i8259_pic.h" />
    <ClInclude Include="hw\pcspeaker.h" />
    <ClInclude Include="hw\serial.h" />
    <ClInclude Include="hw\serial_mouse.h" />
    <ClInclude Include="hw\vga.h" />
    <ClInclude Include="interrupt_controller.h" />
    <ClInclude Include="mmio.h" />
    <ClInclude Include="save_state_version.h" />
    <ClInclude Include="scancodes.h" />
    <ClInclude Include="system.h" />
    <ClInclude Include="systems\bochs.h" />
    <ClInclude Include="systems\ibmat.h" />
    <ClInclude Include="systems\isapc.h" />
    <ClInclude Include="systems\ibmxt.h" />
    <ClInclude Include="thirdparty\mame\osdcomm.h" />
    <ClInclude Include="thirdparty\mame\osdcore.h" />
    <ClInclude Include="thirdparty\mame\osdsync.h" />
    <ClInclude Include="thirdparty\mame\rectangle.h" />
    <ClInclude Include="thirdparty\mame\palette.h" />
    <ClInclude Include="thirdparty\mame\polylgcy.h" />
    <ClInclude Include="thirdparty\mame\rgbgen.h" />
    <ClInclude Include="thirdparty\mame\rgbsse.h" />
    <ClInclude Include="thirdparty\mame\rgbutil.h" />
    <ClInclude Include="thirdparty\mame\vooddefs.h" />
    <ClInclude Include="thirdparty\mame\voodoo.h" />
    <ClInclude Include="thirdparty\mame\voodoo_rast.hxx" />
    <ClInclude Include="timing_event.h" />
    <ClInclude Include="types.h" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\dep\inih\inih.vcxproj">
      <Project>{57487a0d-65f4-47c6-be2a-708e516948d7}</Project>
    </ProjectReference>
    <ProjectReference Include="..\..\dep\libsamplerate\libsamplerate.vcxproj">
      <Project>{2f2a2b7b-60b3-478c-921e-3633b3c45c3f}</Project>
    </ProjectReference>
    <ProjectReference Include="..\..\dep\softfloat\softfloat.vcxproj">
      <Project>{c7e25e10-4660-4e1d-b249-a05e64a32fd0}</Project>
    </ProjectReference>
    <ProjectReference Include="..\..\dep\xxhash\xxhash.vcxproj">
      <Project>{09553c96-9f39-49bf-8ae6-7acbd07c410c}</Project>
    </ProjectReference>
    <ProjectReference Include="..\..\dep\YBaseLib\Source\YBaseLib.vcxproj">
      <Project>{b56ce698-7300-4fa5-9609-942f1d05c5a2}</Project>
    </ProjectReference>
    <ProjectReference Include="..\common\common.vcxproj">
      <Project>{ee054e08-3799-4a59-a422-18259c105ffd}</Project>
    </ProjectReference>
  </ItemGroup>
  <ItemGroup>
    <None Include="bus.inl" />
    <ClCompile Include="cpu_8086\instructions.cpp" />
    <None Include="cpu_8086\decoder_tables.inl" />
    <None Include="cpu_8086\instructions_dispatch.inl" />
    <None Include="cpu_x86\decoder.inl" />
    <None Include="cpu_x86\decoder_tables.inl" />
    <None Include="cpu_x86\interpreter_dispatch.inl" />
    <None Include="cpu_x86\interpreter_x87.inl" />
    <None Include="hw\cga_font.inl" />
    <None Include="hw\cga_palette.inl" />
    <None Include="hw\soundblaster_adpcm.inl" />
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <ProjectGuid>{476D56B2-D87F-405C-BB64-5B3B813F58B3}</ProjectGuid>
    <Keyword>Win32Proj</Keyword>
    <RootNamespace>pce</RootNamespace>
    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
    <ConfigurationType>StaticLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v142</PlatformToolset>
    <CharacterSet>NotSet</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
    <ConfigurationType>StaticLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v142</PlatformToolset>
    <CharacterSet>NotSet</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'" Label="Configuration">
    <ConfigurationType>StaticLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v142</PlatformToolset>
    <CharacterSet>NotSet</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'" Label="Configuration">
    <ConfigurationType>StaticLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>v142</PlatformToolset>
    <CharacterSet>NotSet</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
    <ConfigurationType>StaticLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v142</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>NotSet</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTCG|Win32'" Label="Configuration">
    <ConfigurationType>StaticLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v142</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>NotSet</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
    <ConfigurationType>StaticLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v142</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>NotSet</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTCG|x64'" Label="Configuration">
    <ConfigurationType>StaticLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>v142</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>NotSet</CharacterSet>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  <ImportGroup Label="ExtensionSettings" />
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'" Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'" Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTCG|Win32'" Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTCG|x64'" Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LinkIncremental>true</LinkIncremental>
    <OutDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
    <IntDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</IntDir>
    <TargetName>$(ProjectName)-$(Platform)-$(Configuration)</TargetName>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <IntDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</IntDir>
    <TargetName>$(ProjectName)-$(Platform)-$(Configuration)</TargetName>
    <LinkIncremental>true</LinkIncremental>
    <OutDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">
    <LinkIncremental>true</LinkIncremental>
    <OutDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
    <IntDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</IntDir>
    <TargetName>$(ProjectName)-$(Platform)-$(Configuration)</TargetName>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">
    <IntDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</IntDir>
    <TargetName>$(ProjectName)-$(Platform)-$(Configuration)</TargetName>
    <LinkIncremental>true</LinkIncremental>
    <OutDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <LinkIncremental>false</LinkIncremental>
    <OutDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
    <IntDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</IntDir>
    <TargetName>$(ProjectName)-$(Platform)-$(Configuration)</TargetName>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTCG|Win32'">
    <LinkIncremental>false</LinkIncremental>
    <OutDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
    <IntDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</IntDir>
    <TargetName>$(ProjectName)-$(Platform)-$(Configuration)</TargetName>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <IntDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</IntDir>
    <TargetName>$(ProjectName)-$(Platform)-$(Configuration)</TargetName>
    <LinkIncremental>false</LinkIncremental>
    <OutDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTCG|x64'">
    <IntDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</IntDir>
    <TargetName>$(ProjectName)-$(Platform)-$(Configuration)</TargetName>
    <LinkIncremental>false</LinkIncremental>
    <OutDir>$(SolutionDir)build\$(ProjectName)-$(Platform)-$(Configuration)\</OutDir>
  </PropertyGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <ClCompile>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <WarningLevel>Level4</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>ENABLE_VOODOO=1;_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <SDLCheck>true</SDLCheck>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
      <AdditionalIncludeDirectories>$(SolutionDir)dep\msvc\include;$(SolutionDir)dep\YBaseLib\Include;$(SolutionDir)dep\xbyak\xbyak;$(SolutionDir)dep\softfloat\include;$(SolutionDir)dep\xxhash\include;$(SolutionDir)dep\inih\cpp;$(SolutionDir)src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <MultiProcessorCompilation>true</MultiProcessorCompilation>
      <MinimalRebuild>false</MinimalRebuild>
      <LanguageStandard>stdcpp17</LanguageStandard>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <AdditionalDependencies>SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(SolutionDir)dep\lib32-debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <ClCompile>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <WarningLevel>Level4</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>ENABLE_VOODOO=1;_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <SDLCheck>true</SDLCheck>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
      <AdditionalIncludeDirectories>$(SolutionDir)dep\msvc\include;$(SolutionDir)dep\YBaseLib\Include;$(SolutionDir)dep\xbyak\xbyak;$(SolutionDir)dep\softfloat\include;$(SolutionDir)dep\xxhash\include;$(SolutionDir)dep\inih\cpp;$(SolutionDir)src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <MultiProcessorCompilation>true</MultiProcessorCompilation>
      <MinimalRebuild>false</MinimalRebuild>
      <LanguageStandard>stdcpp17</LanguageStandard>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <AdditionalDependencies>SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(SolutionDir)dep\lib64-debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|Win32'">
    <ClCompile>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <WarningLevel>Level4</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>ENABLE_VOODOO=1;_ITERATOR_DEBUG_LEVEL=1;_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUGFAST;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <SDLCheck>true</SDLCheck>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
      <AdditionalIncludeDirectories>$(SolutionDir)dep\msvc\include;$(SolutionDir)dep\YBaseLib\Include;$(SolutionDir)dep\xbyak\xbyak;$(SolutionDir)dep\softfloat\include;$(SolutionDir)dep\xxhash\include;$(SolutionDir)dep\inih\cpp;$(SolutionDir)src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
      <MultiProcessorCompilation>true</MultiProcessorCompilation>
      <MinimalRebuild>false</MinimalRebuild>
      <LanguageStandard>stdcpp17</LanguageStandard>
      <SupportJustMyCode>false</SupportJustMyCode>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <AdditionalDependencies>SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(SolutionDir)dep\lib32-debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugFast|x64'">
    <ClCompile>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <WarningLevel>Level4</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>ENABLE_VOODOO=1;_ITERATOR_DEBUG_LEVEL=1;_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUGFAST;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <SDLCheck>true</SDLCheck>
      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
      <AdditionalIncludeDirectories>$(SolutionDir)dep\msvc\include;$(SolutionDir)dep\YBaseLib\Include;$(SolutionDir)dep\xbyak\xbyak;$(SolutionDir)dep\softfloat\include;$(SolutionDir)dep\xxhash\include;$(SolutionDir)dep\inih\cpp;$(SolutionDir)src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
      <MultiProcessorCompilation>true</MultiProcessorCompilation>
      <MinimalRebuild>false</MinimalRebuild>
      <LanguageStandard>stdcpp17</LanguageStandard>
      <SupportJustMyCode>false</SupportJustMyCode>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <AdditionalDependencies>SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(SolutionDir)dep\lib64-debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <ClCompile>
      <WarningLevel>Level4</WarningLevel>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <Optimization>MaxSpeed</Optimization>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>ENABLE_VOODOO=1;_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>$(SolutionDir)dep\msvc\include;$(SolutionDir)dep\YBaseLib\Include;$(SolutionDir)dep\xbyak\xbyak;$(SolutionDir)dep\softfloat\include;$(SolutionDir)dep\xxhash\include;$(SolutionDir)dep\inih\cpp;$(SolutionDir)src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <MultiProcessorCompilation>true</MultiProcessorCompilation>
      <WholeProgramOptimization>false</WholeProgramOptimization>
      <LanguageStandard>stdcpp17</LanguageStandard>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
      <AdditionalDependencies>SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(SolutionDir)dep\lib32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTCG|Win32'">
    <ClCompile>
      <WarningLevel>Level4</WarningLevel>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <Optimization>MaxSpeed</Optimization>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>ENABLE_VOODOO=1;_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>$(SolutionDir)dep\msvc\include;$(SolutionDir)dep\YBaseLib\Include;$(SolutionDir)dep\xbyak\xbyak;$(SolutionDir)dep\softfloat\include;$(SolutionDir)dep\xxhash\include;$(SolutionDir)dep\inih\cpp;$(SolutionDir)src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <MultiProcessorCompilation>true</MultiProcessorCompilation>
      <WholeProgramOptimization>true</WholeProgramOptimization>
      <LanguageStandard>stdcpp17</LanguageStandard>
      <OmitFramePointers>true</OmitFramePointers>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
      <AdditionalDependencies>SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(SolutionDir)dep\lib32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <ClCompile>
      <WarningLevel>Level4</WarningLevel>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <Optimization>MaxSpeed</Optimization>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>ENABLE_VOODOO=1;_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>$(SolutionDir)dep\msvc\include;$(SolutionDir)dep\YBaseLib\Include;$(SolutionDir)dep\xbyak\xbyak;$(SolutionDir)dep\softfloat\include;$(SolutionDir)dep\xxhash\include;$(SolutionDir)dep\inih\cpp;$(SolutionDir)src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <MultiProcessorCompilation>true</MultiProcessorCompilation>
      <WholeProgramOptimization>false</WholeProgramOptimization>
      <LanguageStandard>stdcpp17</LanguageStandard>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
      <AdditionalDependencies>SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(SolutionDir)dep\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTCG|x64'">
    <ClCompile>
      <WarningLevel>Level4</WarningLevel>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <Optimization>MaxSpeed</Optimization>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>ENABLE_VOODOO=1;_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>$(SolutionDir)dep\msvc\include;$(SolutionDir)dep\YBaseLib\Include;$(SolutionDir)dep\xbyak\xbyak;$(SolutionDir)dep\softfloat\include;$(SolutionDir)dep\xxhash\include;$(SolutionDir)dep\inih\cpp;$(SolutionDir)src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
      <MultiProcessorCompilation>true</MultiProcessorCompilation>
      <WholeProgramOptimization>true</WholeProgramOptimization>
      <LanguageStandard>stdcpp17</LanguageStandard>
      <OmitFramePointers>true</OmitFramePointers>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
      <AdditionalDependencies>SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(SolutionDir)dep\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets" />
  <!-- ================ UNDUPOBJ ================ -->
  <!-- relevant topics -->
  <!-- https://stackoverflow.com/questions/3729515/visual-studio-2010-2008-cant-handle-source-files-with-identical-names-in-diff/26935613 -->
  <!-- https://stackoverflow.com/questions/7033855/msvc10-mp-builds-not-multicore-across-folders-in-a-project -->
  <!-- https://stackoverflow.com/questions/18304911/how-can-one-modify-an-itemdefinitiongroup-from-an-msbuild-target -->
  <!-- other maybe related info -->
  <!-- https://stackoverflow.com/questions/841913/modify-msbuild-itemgroup-metadata -->
  <UsingTask TaskName="UNDUPOBJ_TASK" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
      <OutputDir ParameterType="System.String" Required="true" />
      <ItemList ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
      <OutputItemList ParameterType="Microsoft.Build.Framework.ITaskItem[]" Output="true" />
    </ParameterGroup>
    <Task>
      <Code><![CDATA[
            //general outline: for each item (in ClCompile) assign it to a subdirectory of $(IntDir) by allocating subdirectories 0,1,2, etc., as needed to prevent duplicate filenames from clobbering each other
            //this minimizes the number of batches that need to be run, since each subdirectory will necessarily be in a distinct batch due to /Fo specifying that output subdirectory

            var assignmentMap = new Dictionary<string,int>();
            HashSet<string> neededDirectories = new HashSet<string>();
            foreach( var item in ItemList )
            {
              //solve bug e.g. Checkbox.cpp vs CheckBox.cpp
              var filename = item.GetMetadata("Filename").ToUpperInvariant(); 

              //assign reused filenames to increasing numbers
              //assign previously unused filenames to 0
              int assignment = 0;
              if(assignmentMap.TryGetValue(filename, out assignment))
                assignmentMap[filename] = ++assignment;
              else
                assignmentMap[filename] = 0;

              var thisFileOutdir = Path.Combine(OutputDir,assignment.ToString()) + "/"; //take care it ends in / so /Fo knows it's a directory and not a filename
              item.SetMetadata( "ObjectFileName", thisFileOutdir );
            }

            foreach(var needed in neededDirectories)
              System.IO.Directory.CreateDirectory(needed);

            OutputItemList = ItemList;
            ItemList = new Microsoft.Build.Framework.ITaskItem[0];

        ]]></Code>
    </Task>
  </UsingTask>
  <Target Name="UNDUPOBJ">
    <!-- see stackoverflow topics for discussion on why we need to do some loopy copying stuff here -->
    <ItemGroup>
      <ClCompileCopy Include="@(ClCompile)" />
      <ClCompile Remove="@(ClCompile)" />
    </ItemGroup>
    <UNDUPOBJ_TASK OutputDir="$(IntDir)" ItemList="@(ClCompileCopy)" OutputItemList="@(ClCompile)">
      <Output ItemName="ClCompile" TaskParameter="OutputItemList" />
    </UNDUPOBJ_TASK>
  </Target>
  <!-- ================ UNDUPOBJ ================ -->
  <PropertyGroup Label="Globals">
    <IgnoreWarnCompileDuplicatedFilename>true</IgnoreWarnCompileDuplicatedFilename>
  </PropertyGroup>
</Project>