<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(VCTargetsPath)\Microsoft.CppCommon.targets" />

  <PropertyGroup>
    <!-- Set the path to clang-cl executable based on the value of the project-
         level setting.  This has to be done in the .targets file since values
         selected via the settings UI appear in the vcxproj (which is imported
         before the targets file but after the props file) and we need the path
         that the user may have overridden in the UI. -->
    <CLToolExe Condition="$(UseClangCl)">$(ClangClExecutable)</CLToolExe>
    <LinkToolExe Condition="$(UseLldLink)">$(LldLinkExecutable)</LinkToolExe>
    <LIBToolExe Condition="$(UseLlvmLib)">$(LlvmLibExecutable)</LIBToolExe>
  </PropertyGroup>

  <ItemGroup>
    <PropertyPageSchema Include="$(VCTargetsPath)$(LangID)\llvm-general.xml">
      <Context>Project</Context>
    </PropertyPageSchema>
  </ItemGroup>

  <!-- Take any clang-specific options that the user wants to pass and stick them onto the
       general purpose list of command line flags. -->
  <ItemDefinitionGroup Condition="$(UseClangCl)">
    <ClCompile>
      <AdditionalOptions>-m$(PlatformArchitecture) $(ClangClAdditionalOptions) %(AdditionalOptions)</AdditionalOptions>
    </ClCompile>
  </ItemDefinitionGroup>

  <ItemDefinitionGroup Condition="$(UseLldLink)">
    <Link>
      <AdditionalOptions>$(LldLinkAdditionalOptions) %(AdditionalOptions)</AdditionalOptions>
    </Link>
  </ItemDefinitionGroup>

  <!-- We hook up a target to run every time ClCompile is about to run, the
       purpose of which is to sanitize the command line before it gets passed to
       the compiler.  Some options we silently discard, other options we warn on
       and then discard, and other options we generate a hard error.

       We try to keep hard errors to a minimum and reserve it for cases where
       the option implies fundamentally different assumptions about the way code
       should be compiled.  This code would probably generate an error anyway,
       but at least this way we give the user a more useful message about what
       the actual problem is, rather than relying on some obscure compilation
       error.

       For any options that clang-cl discards, we would prefer to not even pass
       them in on the command line.  So if a user starts with a cl projects and
       changes the toolset to clang, they could have set options such as /Gm
       (minimal rebuild), /sdl (Security Checks), etc.  The ClCompile task would
       then notice this and pass these through to clang-cl.exe.  Clang would of
       course ignore them, but in some cases (such as /Gm), they would generate
       -Wunused-command-line-argument warnings, so it's better if we can just
       strip them from the command line entirely.  This also has the side
       benefit of making command lines shorter which is always nice when trying
       to look at the tool output.
      -->
  <Target Name="BeforeClCompile" BeforeTargets="ClCompile" Condition="$(UseClangCl)">
    <!-- Error if they're trying to compile this file as managed code. -->
    <Error Condition="('%(ClCompile.CompileAsManaged)' != 'false') AND ('%(ClCompile.CompileAsManaged)' != '')"
           File="@(ClCompile)(0,0)"
           Text="clang-cl does not support compiling managed code (/clr).  This file cannot be compiled."/>

    <!-- Error if WinRT is being used. -->
    <Error Condition="('%(ClCompile.CompileAsWinRT)' == 'true') OR ('%(ClCompile.WinRTNoStdLib)' == 'true')"
           File="@(ClCompile)(0,0)"
           Text="clang-cl does not support Windows Runtime Language Extensions (/ZW, /ZW:nostdlib).  This file cannot be compiled."/>

    <!-- Error if OpenMP language extensions are enabled. -->
    <Error Condition="'%(ClCompile.OpenMPSupport)' == 'true'"
           File="@(ClCompile)(0,0)"
           Text="clang-cl does not support OpenMP (/openmp).  This file cannot be compiled."/>

    <!-- Error if C++ Modules are enabled.  Clang has its own notion of modules that are not compatible. -->
    <Error Condition="'%(ClCompile.EnableModules)' == 'true'"
           File="@(ClCompile)(0,0)"
           Text="clang-cl does not support MSVC Modules (/experimental:module).  This file cannot be compiled."/>

    <ItemGroup>
      <ClCompile>
        <!-- Map /ZI and /Zi to /Z7.  Clang internally does this, so if we were
             to just pass the option through, clang would work.  The problem is
             that MSBuild would not.  MSBuild detects /ZI and /Zi and then
             assumes (rightly) that there will be a compiler-generated PDB (e.g.
             vc141.pdb).  Since clang-cl will not emit this, MSBuild will always
             think that the compiler-generated PDB needs to be re-generated from
             scratch and trigger a full build.  The way to avoid this is to
             always give MSBuild accurate information about how we plan to
             generate debug info (which is to always using /Z7 semantics).
             -->
        <DebugInformationFormat Condition="'%(ClCompile.DebugInformationFormat)' == 'ProgramDatabase'">OldStyle</DebugInformationFormat>
        <DebugInformationFormat Condition="'%(ClCompile.DebugInformationFormat)' == 'EditAndContinue'">OldStyle</DebugInformationFormat>

        <!-- Unset any options that we either silently ignore or warn about due to compatibility.
             Generally when an option is set to no value, that means "Don't pass an option to the
             compiler at all."
             -->
        <WholeProgramOptimization/>
        <EnableFiberSafeOptimizations/>
        <IgnoreStandardIncludePath/>
        <EnableParallelCodeGeneration/>
        <ForceConformanceInForLoopScope/>
        <TreatWChar_tAsBuiltInType/>
        <SDLCheck/>
        <GenerateXMLDocumentationFiles/>
        <BrowseInformation/>
        <EnablePREfast/>
        <MinimalRebuild/>
        <StringPooling/>
        <ExpandAttributedSource/>
        <EnforceTypeConversionRules/>
        <ErrorReporting/>
        <DisableLanguageExtensions/>
        <ProgramDataBaseFileName/>
        <DisableSpecificWarnings/>
        <TreatSpecificWarningsAsErrors/>
        <ForcedUsingFiles/>
        <PREfastLog/>
        <PREfastAdditionalOptions/>
        <PREfastAdditionalPlugins/>
        <MultiProcessorCompilation/>
        <UseFullPaths/>
        <RemoveUnreferencedCodeData/>

        <!-- We can't just unset BasicRuntimeChecks, as that will pass /RTCu to the compiler.
             We have to explicitly set it to 'Default' to avoid passing anything. -->
        <BasicRuntimeChecks>Default</BasicRuntimeChecks>
      </ClCompile>
    </ItemGroup>
  </Target>

</Project>
