﻿<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- The general order of executing an MSBuild file is roughly:
       1) vcxproj file
       2) ├─ Import Microsoft.Cpp.props
       3) │  └─ Import Toolset specific props (e.g. $(VCTargets)Platforms\Win32\PlatformToolsets\llvm\Toolset.props)
       4) │     └─ Import This File (LLVM.Cpp.Common.props)
       5) │─ Core logic of vcxproj (define files, override properties, etc)
       6) └─ Import Microsoft.Cpp.targets
       7)    │─ Import Toolset specific targets file (e.g. $(VCTargets)Platforms\Win32\PlatformToolsets\llvm\Toolset.targets)
       8)    └─ Run the compiler.
       The important thing is that we have hooks at 3, 4, and 7.  3 and 4 give
       us the ability to provide initial values for toolchain settings (where
       is the compiler, what values are considered "default" for a given
       setting, etc), 7 gives us the ability to act on anything that the user
       has overridden (such as warning or erroring on incompatible settings,
       mapping settings to other settings, etc).
       -->

  <PropertyGroup>
    <!-- This initializes the values in Properties > General > Output Directory.
       Builds will fail without this. -->
    <OutDirWasSpecified Condition=" '$(OutDir)'!='' AND '$(OutDirWasSpecified)'=='' ">true</OutDirWasSpecified>
    <OutDirWasSpecified Condition=" '$(OutDir)'=='' AND '$(OutDirWasSpecified)'=='' ">false</OutDirWasSpecified>

    <IntDir Condition="'$(IntDir)'=='' AND '$(IntermediateOutputPath)'!=''">$(IntermediateOutputPath)</IntDir>
    <IntDir Condition="'$(IntDir)'=='' AND '$(IntermediateOutputPath)'==''">$(Configuration)\</IntDir>
    <OutDir Condition="'$(OutDir)'=='' AND '$(SolutionDir)' != ''">$(SolutionDir)$(Configuration)\</OutDir>
    <OutDir Condition="'$(OutDir)'=='' AND '$(SolutionDir)' == ''">$(IntDir)</OutDir>
    <DebuggerFlavor Condition="'$(DebuggerFlavor)'==''">WindowsLocalDebugger</DebuggerFlavor>
  </PropertyGroup>

  <PropertyGroup>
    <!-- Short names for platform toolsets (added to project name in Solution Explorer) -->
    <_PlatformToolsetShortNameFor_llvm>LLVM</_PlatformToolsetShortNameFor_llvm>
    <_PlatformToolsetFriendlyNameFor_llvm>LLVM</_PlatformToolsetFriendlyNameFor_llvm>
  </PropertyGroup>

  <!-- Find an installed LLVM and set up our paths. -->
  <PropertyGroup>
    <LLVMInstallDir>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\LLVM@LLVM)</LLVMInstallDir>
    <LLVMInstallDir Condition="'$(LLVMInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\LLVM@LLVM)</LLVMInstallDir>
    <ClangClExecutable>$(LLVMInstallDir)bin\clang-cl.exe</ClangClExecutable>
  </PropertyGroup>

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.WindowsSDK.props" Condition="Exists('$(VCTargetsPath)\Microsoft.Cpp.WindowsSDK.props')"/>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Common.props" />

  <PropertyGroup>
    <!-- Set some paths (such as include paths) that are common to all platforms.  This is the same as what
         the default paths for cl will use.
         -->
    <IncludePath Condition="'$(IncludePath)' == ''">$(IncludePath);$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
    <LibraryWPath Condition="'$(LibraryWPath)' == ''">$(WindowsSDK_MetadataPath);</LibraryWPath>
    <SourcePath Condition="'$(SourcePath)' == ''">$(VC_SourcePath);</SourcePath>
  </PropertyGroup>


  <!-- Set values which are reflected in the property UI by default.  The user can override these
       by editing the vcxproj file (or making changes via the UI, which has the same effect).
       -->
  <ItemDefinitionGroup>
    <ClCompile>
      <!-- Set this to "Default" (which means not passing any /RTC option) so that any other value will
           be treated as having been overridden by the user.  This Serves as a hint to the user that
           Default is the value we support, and other values will generate a warning.  It also means
           that if the user simply creates a new project in MSVC (which uses /RTCu by default), then
           switches the toolset to Clang, we will still treat the value as default (which for us is to
           not pass the option).  Only if the user explicitly overrode this setting in a project to use
           /RTCu would we see the warning. -->
      <BasicRuntimeChecks>Default</BasicRuntimeChecks>

      <AdditionalOptions>-m$(PlatformArchitecture) %(AdditionalOptions)</AdditionalOptions>
    </ClCompile>
  </ItemDefinitionGroup>
</Project>
