Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensure we update the response files when the targets are run. #445

Merged
merged 5 commits into from
Dec 18, 2019
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions nuget/Microsoft.Windows.CppWinRT.props
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ Copyright (C) Microsoft Corporation. All rights reserved.
<!--Set compiler and linker options for projects requiring C++/WinRT. -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<PropertyGroup>
<!-- Only do this for MSBuild versions below 16.0
as it is since done automatically, see https://github.com/microsoft/msbuild/pull/3605-->
<MSBuildAllProjects Condition="'$(MSBuildToolsVersion)' &lt;= '15'">$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
jlaanstra marked this conversation as resolved.
Show resolved Hide resolved
</PropertyGroup>

<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
<CanReferenceWinRT>true</CanReferenceWinRT>
Expand Down
79 changes: 37 additions & 42 deletions nuget/Microsoft.Windows.CppWinRT.targets
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ Copyright (C) Microsoft Corporation. All rights reserved.
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<PropertyGroup>
<!-- Only do this for MSBuild versions below 16.0
as it is since done automatically, see https://github.com/microsoft/msbuild/pull/3605-->
<MSBuildAllProjects Condition="'$(MSBuildToolsVersion)' &lt;= '15'">$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>

<PropertyGroup>
<CppWinRTVerbosity Condition="'$(CppWinRTVerbosity)' == ''">normal</CppWinRTVerbosity>
<CppWinRTCommandVerbosity Condition="'$(CppWinRTVerbosity)' == 'high'">-verbose</CppWinRTCommandVerbosity>
Expand Down Expand Up @@ -88,6 +94,13 @@ Copyright (C) Microsoft Corporation. All rights reserved.
<IncludeCopyWinMDArtifactsOutputGroup>false</IncludeCopyWinMDArtifactsOutputGroup>
</PropertyGroup>

<ItemDefinitionGroup>
<Midl Condition="'$(CppWinRTModernIDL)' != 'false'">
<AdditionalMetadataDirectories Condition="'%(AdditionalMetadataDirectories)' == '' And '$(WindowsSDK_MetadataFoundationPath)' != ''">$(WindowsSDK_MetadataFoundationPath);%(AdditionalMetadataDirectories)</AdditionalMetadataDirectories>
jlaanstra marked this conversation as resolved.
Show resolved Hide resolved
<AdditionalMetadataDirectories Condition="'%(AdditionalMetadataDirectories)' == '' And '$(WindowsSDK_MetadataFoundationPath)' == ''">$(WindowsSDK_MetadataPath);%(AdditionalMetadataDirectories)</AdditionalMetadataDirectories>
</Midl>
</ItemDefinitionGroup>

<Target Name="CppWinRTVerifyKitVersion" Condition="'$(CppWinRTOverrideSDKReferences)' != 'true'">
<PropertyGroup>
<_CppWinRT_RS4OrGreater>false</_CppWinRT_RS4OrGreater>
Expand Down Expand Up @@ -121,19 +134,19 @@ Copyright (C) Microsoft Corporation. All rights reserved.
<!-- Target used only to evaluate CppWinRTGenerateWindowsMetadata if it doesn't already have a value -->
<Target Name="CppWinRTComputeGenerateWindowsMetadata"
DependsOnTargets="CppWinRTComputeXamlGeneratedMidlInputs;GetCppWinRTProjectWinMDReferences;$(CppWinRTComputeGenerateWindowsMetadataDependsOn)">

<PropertyGroup>
<!-- For static libraries, only idl causes a winmd to be generated.
For exe/dll, static libraries that produce a WinMD will be merged,
so they also cause a WinMD to be generated-->
<CppWinRTGenerateWindowsMetadata Condition="'$(ConfigurationType)' != 'StaticLibrary' AND '@(CppWinRTStaticProjectWinMDReferences)@(Midl)'!= ''">true</CppWinRTGenerateWindowsMetadata>
<CppWinRTGenerateWindowsMetadata Condition="'$(ConfigurationType)' == 'StaticLibrary' AND '@(Midl)'!= ''">true</CppWinRTGenerateWindowsMetadata>

<!-- At this point we checked all cases where we do generate a WinMD.
The remaining option is no WinMD. -->
<CppWinRTGenerateWindowsMetadata Condition="'$(CppWinRTGenerateWindowsMetadata)'== ''">false</CppWinRTGenerateWindowsMetadata>
</PropertyGroup>

</Target>

<Target Name="ComputeGetResolvedWinMD"
Expand All @@ -160,7 +173,7 @@ Copyright (C) Microsoft Corporation. All rights reserved.
</Link>

<!-- Condition is modified to only do this if CppWinRTGenerateWindowsMetadata is not true. -->
<WinMDFullPath Condition="'%(Link.GenerateWindowsMetadata)' == 'true' AND '$(CppWinRTGenerateWindowsMetadata)' != 'true'"
<WinMDFullPath Condition="'%(Link.GenerateWindowsMetadata)' == 'true' AND '$(CppWinRTGenerateWindowsMetadata)' != 'true'"
Include="@(Link->Metadata('WindowsMetadataFile')->FullPath()->Distinct()->ClearMetadata())">
<TargetPath>$([System.IO.Path]::GetFileName('%(Link.WindowsMetadataFile)'))</TargetPath>
<Primary>true</Primary>
Expand All @@ -172,7 +185,7 @@ Copyright (C) Microsoft Corporation. All rights reserved.
<WinMDFile>true</WinMDFile>
<ProjectType>$(ConfigurationType)</ProjectType>
</WinMDFullPath>

<Link Remove="@(Link)" Condition="'%(Link.DeleteSoon)' == 'true'" />
</ItemGroup>

Expand Down Expand Up @@ -395,8 +408,11 @@ $(XamlMetaDataProviderPch)

<!--Insert Midl /references to Platform WinMDs, library reference WinMDs, and direct reference WinMDs-->
<Target Name="CppWinRTSetMidlReferences"
DependsOnTargets="GetCppWinRTPlatformWinMDReferences;GetCppWinRTDirectWinMDReferences;GetCppWinRTProjectWinMDReferences;$(CppWinRTSetMidlReferencesDependsOn)">
<ItemGroup Condition="'$(CppWinRTModernIDL)' != 'false'">
Condition="'$(CppWinRTModernIDL)' != 'false'"
DependsOnTargets="GetCppWinRTPlatformWinMDReferences;GetCppWinRTDirectWinMDReferences;GetCppWinRTProjectWinMDReferences;$(CppWinRTSetMidlReferencesDependsOn)"
Inputs="$(MSBuildAllProjects);@(CppWinRTDirectWinMDReferences);@(CppWinRTStaticProjectWinMDReferences);@(CppWinRTDynamicProjectWinMDReferences);@(CppWinRTPlatformWinMDReferences)"
Outputs="$(IntDir)midlrt.rsp">
<ItemGroup>
<_MidlReferences Remove="@(_MidlReferences)"/>
<_MidlReferences Include="@(CppWinRTDirectWinMDReferences)"/>
<_MidlReferences Include="@(CppWinRTStaticProjectWinMDReferences)"/>
Expand All @@ -408,22 +424,13 @@ $(XamlMetaDataProviderPch)
<AdditionalOptions>%(Midl.AdditionalOptions) %40"$(IntDir)midlrt.rsp"</AdditionalOptions>
</Midl>
</ItemGroup>
<ItemGroup>
<Midl Condition="'%(Midl.AdditionalMetadataDirectories)'==''">
<AdditionalMetadataDirectories Condition="'$(WindowsSDK_MetadataFoundationPath)' != ''">%(Midl.AdditionalMetadataDirectories);$(WindowsSDK_MetadataFoundationPath);</AdditionalMetadataDirectories>
<AdditionalMetadataDirectories Condition="'$(WindowsSDK_MetadataFoundationPath)' == ''">%(Midl.AdditionalMetadataDirectories);$(WindowsSDK_MetadataPath);</AdditionalMetadataDirectories>
</Midl>
</ItemGroup>
<PropertyGroup>
<_MidlrtParameters>@(_MidlReferencesDistinct->'/reference &quot;%(WinMDPath)&quot;','&#x0d;&#x0a;')</_MidlrtParameters>
</PropertyGroup>
<WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
<!-- Always write the midlrt.rsp file when the target runs, because the file is used as the output of this target. -->
<WriteLinesToFile
File="$(IntDir)midlrt.rsp" Lines="$(_MidlrtParameters)"
ContinueOnError="true" Overwrite="true" />
<WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
File="$(IntDir)midlrt.rsp" Lines="$(_MidlrtParameters)"
ContinueOnError="true" Overwrite="true"
WriteOnlyWhenDifferent="true" />
<Message Text="CppWinRTMidlReferences: @(_MidlReferences->'%(WinMDPath)')" Importance="$(CppWinRTVerbosity)"/>
</Target>

Expand All @@ -433,7 +440,7 @@ $(XamlMetaDataProviderPch)
<!--Merge project-generated WinMDs and project-referenced static library WinMDs into project WinMD-->
<Target Name="CppWinRTMergeProjectWinMDInputs"
DependsOnTargets="Midl;GetCppWinRTMdMergeInputs;$(CppWinRTMergeProjectWinMDInputsDependsOn)"
Inputs="@(CppWinRTMdMergeInputs)"
Inputs="$(MSBuildAllProjects);@(CppWinRTMdMergeInputs)"
Outputs="@(_MdMergedOutput);$(IntDir)mdmerge.rsp">
<PropertyGroup>
<!--Note: CppWinRTNamespaceMergeDepth supersedes CppWinRTMergeDepth-->
Expand All @@ -449,13 +456,10 @@ $(XamlMetaDataProviderPch)
<_MdMergeParameters>$(_MdMergeParameters) @(CppWinRTMdMergeInputs->'-i &quot;%(Identity)&quot;', '&#x0d;&#x0a;')</_MdMergeParameters>
<_MdMergeParameters>$(_MdMergeParameters) -o &quot;$(CppWinRTMergedDir.TrimEnd('\'))&quot; -partial $(_MdMergeDepth)</_MdMergeParameters>
</PropertyGroup>
<WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
<!-- Always write the mdmerge.rsp file when the target runs, because the file is used as the output of this target. -->
<WriteLinesToFile
File="$(IntDir)mdmerge.rsp" Lines="$(_MdMergeParameters)"
ContinueOnError="true" Overwrite="true" />
<WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
File="$(IntDir)mdmerge.rsp" Lines="$(_MdMergeParameters)"
ContinueOnError="true" Overwrite="true"
WriteOnlyWhenDifferent="true" />
<MakeDir Directories="$(CppWinRTUnmergedDir);$(CppWinRTMergedDir)" />
<Message Text="$(_MdMergeCommand)" Importance="$(CppWinRTVerbosity)"/>
<Exec Command="$(_MdMergeCommand)" />
Expand Down Expand Up @@ -484,7 +488,7 @@ $(XamlMetaDataProviderPch)
<Target Name="CppWinRTMakePlatformProjection"
Condition="'$(CppWinRTEnablePlatformProjection)' == 'true' AND '$(CppWinRTOverrideSDKReferences)' != 'true'"
DependsOnTargets="GetCppWinRTPlatformWinMDInputs;$(CppWinRTMakePlatformProjectionDependsOn)"
Inputs="@(CppWinRTPlatformWinMDInputs)"
Inputs="$(MSBuildAllProjects);@(CppWinRTPlatformWinMDInputs)"
Outputs="$(IntDir)cppwinrt_plat.rsp">
<PropertyGroup>
<CppWinRTCommand>$(CppWinRTPath)cppwinrt %40"$(IntDir)cppwinrt_plat.rsp"</CppWinRTCommand>
Expand All @@ -498,13 +502,10 @@ $(XamlMetaDataProviderPch)
<_CppwinrtParameters>$(_CppwinrtParameters) @(_CppwinrtInputs->'-in &quot;%(WinMDPath)&quot;', '&#x0d;&#x0a;')</_CppwinrtParameters>
<_CppwinrtParameters>$(_CppwinrtParameters) -out &quot;$(GeneratedFilesDir).&quot;</_CppwinrtParameters>
</PropertyGroup>
<WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
<!-- Always write the cppwinrt_plat.rsp file when the target runs, because the file is used as the output of this target. -->
<WriteLinesToFile
File="$(IntDir)cppwinrt_plat.rsp" Lines="$(_CppwinrtParameters)"
ContinueOnError="true" Overwrite="true" />
<WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
File="$(IntDir)cppwinrt_plat.rsp" Lines="$(_CppwinrtParameters)"
ContinueOnError="true" Overwrite="true"
WriteOnlyWhenDifferent="true" />
<Message Text="$(CppWinRTCommand)" Importance="$(CppWinRTVerbosity)"/>
<Exec Command="$(CppWinRTCommand)" />
</Target>
Expand All @@ -514,7 +515,7 @@ $(XamlMetaDataProviderPch)
<Target Name="CppWinRTMakeReferenceProjection"
Condition="'@(CppWinRTDirectWinMDReferences)@(CppWinRTDynamicProjectWinMDReferences)' != '' AND '$(CppWinRTEnableReferenceProjection)' == 'true'"
DependsOnTargets="$(CppWinRTMakeReferenceProjectionDependsOn)"
Inputs="@(CppWinRTDirectWinMDReferences);@(CppWinRTDynamicProjectWinMDReferences);@(CppWinRTPlatformWinMDReferences)"
Inputs="$(MSBuildAllProjects);@(CppWinRTDirectWinMDReferences);@(CppWinRTDynamicProjectWinMDReferences);@(CppWinRTPlatformWinMDReferences)"
Outputs="$(IntDir)cppwinrt_ref.rsp">
<PropertyGroup>
<CppWinRTCommand>$(CppWinRTPath)cppwinrt %40"$(IntDir)cppwinrt_ref.rsp"</CppWinRTCommand>
Expand All @@ -532,13 +533,10 @@ $(XamlMetaDataProviderPch)
<_CppwinrtParameters>$(_CppwinrtParameters) @(_CppwinrtRefRefs->'-ref &quot;%(WinMDPath)&quot;', '&#x0d;&#x0a;')</_CppwinrtParameters>
<_CppwinrtParameters>$(_CppwinrtParameters) -out &quot;$(GeneratedFilesDir).&quot;</_CppwinrtParameters>
</PropertyGroup>
<WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
<!-- Always write the cppwinrt_ref.rsp file when the target runs, because the file is used as the output of this target. -->
<WriteLinesToFile
File="$(IntDir)cppwinrt_ref.rsp" Lines="$(_CppwinrtParameters)"
ContinueOnError="true" Overwrite="true" />
<WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
File="$(IntDir)cppwinrt_ref.rsp" Lines="$(_CppwinrtParameters)"
ContinueOnError="true" Overwrite="true"
WriteOnlyWhenDifferent="true" />
<Message Text="$(CppWinRTCommand)" Importance="$(CppWinRTVerbosity)"/>
<Exec Command="$(CppWinRTCommand)" />
</Target>
Expand All @@ -548,7 +546,7 @@ $(XamlMetaDataProviderPch)
<Target Name="CppWinRTMakeComponentProjection"
Condition="'$(CppWinRTEnableComponentProjection)' == 'true'"
DependsOnTargets="GetCppWinRTMdMergeInputs;$(CppWinRTMakeComponentProjectionDependsOn)"
Inputs="@(CppWinRTMdMergeInputs);@(CppWinRTStaticProjectWinMDReferences)"
Inputs="$(MSBuildAllProjects);@(CppWinRTMdMergeInputs);@(CppWinRTStaticProjectWinMDReferences)"
Outputs="$(IntDir)cppwinrt_comp.rsp">
<PropertyGroup>
<_PCH>@(ClCompile->Metadata('PrecompiledHeaderFile')->Distinct())</_PCH>
Expand Down Expand Up @@ -590,13 +588,10 @@ $(XamlMetaDataProviderPch)
<_CppwinrtParameters>$(_CppwinrtParameters) @(_CppwinrtCompRefs->'-ref &quot;%(WinMDPath)&quot;', '&#x0d;&#x0a;')</_CppwinrtParameters>
<_CppwinrtParameters>$(_CppwinrtParameters) -out &quot;$(GeneratedFilesDir).&quot;</_CppwinrtParameters>
</PropertyGroup>
<WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
<!-- Always write the cppwinrt_comp.rsp file when the target runs, because the file is used as the output of this target. -->
<WriteLinesToFile
File="$(IntDir)cppwinrt_comp.rsp" Lines="$(_CppwinrtParameters)"
ContinueOnError="true" Overwrite="true" />
<WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
File="$(IntDir)cppwinrt_comp.rsp" Lines="$(_CppwinrtParameters)"
ContinueOnError="true" Overwrite="true"
WriteOnlyWhenDifferent="true" />
<Message Text="$(CppWinRTCommand)" Importance="$(CppWinRTVerbosity)" Condition="'@(_CppwinrtCompInputs)' != ''"/>
<Exec Command="$(CppWinRTCommand)" Condition="'@(_CppwinrtCompInputs)' != ''"/>
</Target>
Expand Down