﻿<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>
    <LLVMInstallDir Condition="'$(LLVMInstallDir)' != ''">$(LLVMInstallDir)\</LLVMInstallDir>
    <ClangClExecutable>$(LLVMInstallDir)bin\clang-cl.exe</ClangClExecutable>
    <LldLinkExecutable>$(LLVMInstallDir)bin\lld-link.exe</LldLinkExecutable>
    <UseClangCl>true</UseClangCl>
    <UseLldLink>true</UseLldLink>
  </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>
    </ClCompile>
  </ItemDefinitionGroup>
</Project>
