Skip to content

Commit e75e51b

Browse files
jlaanstrakennykerr
authored andcommitted
Ensure we update the response files when the targets are run. (#445)
1 parent 62ec4d4 commit e75e51b

File tree

2 files changed

+43
-42
lines changed

2 files changed

+43
-42
lines changed

nuget/Microsoft.Windows.CppWinRT.props

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ Copyright (C) Microsoft Corporation. All rights reserved.
66
<!--Set compiler and linker options for projects requiring C++/WinRT. -->
77
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
88

9+
<PropertyGroup>
10+
<!-- Only do this for MSBuild versions below 16.0
11+
as it is since done automatically, see https://github.com/microsoft/msbuild/pull/3605-->
12+
<MSBuildAllProjects Condition="'$(MSBuildToolsVersion)' &lt;= '15'">$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
13+
</PropertyGroup>
14+
915
<PropertyGroup>
1016
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
1117
<CanReferenceWinRT>true</CanReferenceWinRT>

nuget/Microsoft.Windows.CppWinRT.targets

Lines changed: 37 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ Copyright (C) Microsoft Corporation. All rights reserved.
55
-->
66
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
77

8+
<PropertyGroup>
9+
<!-- Only do this for MSBuild versions below 16.0
10+
as it is since done automatically, see https://github.com/microsoft/msbuild/pull/3605-->
11+
<MSBuildAllProjects Condition="'$(MSBuildToolsVersion)' &lt;= '15'">$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
12+
</PropertyGroup>
13+
814
<PropertyGroup>
915
<CppWinRTVerbosity Condition="'$(CppWinRTVerbosity)' == ''">normal</CppWinRTVerbosity>
1016
<CppWinRTCommandVerbosity Condition="'$(CppWinRTVerbosity)' == 'high'">-verbose</CppWinRTCommandVerbosity>
@@ -88,6 +94,13 @@ Copyright (C) Microsoft Corporation. All rights reserved.
8894
<IncludeCopyWinMDArtifactsOutputGroup>false</IncludeCopyWinMDArtifactsOutputGroup>
8995
</PropertyGroup>
9096

97+
<ItemDefinitionGroup>
98+
<Midl Condition="'$(CppWinRTModernIDL)' != 'false'">
99+
<AdditionalMetadataDirectories Condition="'%(AdditionalMetadataDirectories)' == '' And '$(WindowsSDK_MetadataFoundationPath)' != ''">$(WindowsSDK_MetadataFoundationPath);%(AdditionalMetadataDirectories)</AdditionalMetadataDirectories>
100+
<AdditionalMetadataDirectories Condition="'%(AdditionalMetadataDirectories)' == '' And '$(WindowsSDK_MetadataFoundationPath)' == ''">$(WindowsSDK_MetadataPath);%(AdditionalMetadataDirectories)</AdditionalMetadataDirectories>
101+
</Midl>
102+
</ItemDefinitionGroup>
103+
91104
<Target Name="CppWinRTVerifyKitVersion" Condition="'$(CppWinRTOverrideSDKReferences)' != 'true'">
92105
<PropertyGroup>
93106
<_CppWinRT_RS4OrGreater>false</_CppWinRT_RS4OrGreater>
@@ -121,19 +134,19 @@ Copyright (C) Microsoft Corporation. All rights reserved.
121134
<!-- Target used only to evaluate CppWinRTGenerateWindowsMetadata if it doesn't already have a value -->
122135
<Target Name="CppWinRTComputeGenerateWindowsMetadata"
123136
DependsOnTargets="CppWinRTComputeXamlGeneratedMidlInputs;GetCppWinRTProjectWinMDReferences;$(CppWinRTComputeGenerateWindowsMetadataDependsOn)">
124-
137+
125138
<PropertyGroup>
126139
<!-- For static libraries, only idl causes a winmd to be generated.
127140
For exe/dll, static libraries that produce a WinMD will be merged,
128141
so they also cause a WinMD to be generated-->
129142
<CppWinRTGenerateWindowsMetadata Condition="'$(ConfigurationType)' != 'StaticLibrary' AND '@(CppWinRTStaticProjectWinMDReferences)@(Midl)'!= ''">true</CppWinRTGenerateWindowsMetadata>
130143
<CppWinRTGenerateWindowsMetadata Condition="'$(ConfigurationType)' == 'StaticLibrary' AND '@(Midl)'!= ''">true</CppWinRTGenerateWindowsMetadata>
131-
144+
132145
<!-- At this point we checked all cases where we do generate a WinMD.
133146
The remaining option is no WinMD. -->
134147
<CppWinRTGenerateWindowsMetadata Condition="'$(CppWinRTGenerateWindowsMetadata)'== ''">false</CppWinRTGenerateWindowsMetadata>
135148
</PropertyGroup>
136-
149+
137150
</Target>
138151

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

162175
<!-- Condition is modified to only do this if CppWinRTGenerateWindowsMetadata is not true. -->
163-
<WinMDFullPath Condition="'%(Link.GenerateWindowsMetadata)' == 'true' AND '$(CppWinRTGenerateWindowsMetadata)' != 'true'"
176+
<WinMDFullPath Condition="'%(Link.GenerateWindowsMetadata)' == 'true' AND '$(CppWinRTGenerateWindowsMetadata)' != 'true'"
164177
Include="@(Link->Metadata('WindowsMetadataFile')->FullPath()->Distinct()->ClearMetadata())">
165178
<TargetPath>$([System.IO.Path]::GetFileName('%(Link.WindowsMetadataFile)'))</TargetPath>
166179
<Primary>true</Primary>
@@ -172,7 +185,7 @@ Copyright (C) Microsoft Corporation. All rights reserved.
172185
<WinMDFile>true</WinMDFile>
173186
<ProjectType>$(ConfigurationType)</ProjectType>
174187
</WinMDFullPath>
175-
188+
176189
<Link Remove="@(Link)" Condition="'%(Link.DeleteSoon)' == 'true'" />
177190
</ItemGroup>
178191

@@ -395,8 +408,11 @@ $(XamlMetaDataProviderPch)
395408

396409
<!--Insert Midl /references to Platform WinMDs, library reference WinMDs, and direct reference WinMDs-->
397410
<Target Name="CppWinRTSetMidlReferences"
398-
DependsOnTargets="GetCppWinRTPlatformWinMDReferences;GetCppWinRTDirectWinMDReferences;GetCppWinRTProjectWinMDReferences;$(CppWinRTSetMidlReferencesDependsOn)">
399-
<ItemGroup Condition="'$(CppWinRTModernIDL)' != 'false'">
411+
Condition="'$(CppWinRTModernIDL)' != 'false'"
412+
DependsOnTargets="GetCppWinRTPlatformWinMDReferences;GetCppWinRTDirectWinMDReferences;GetCppWinRTProjectWinMDReferences;$(CppWinRTSetMidlReferencesDependsOn)"
413+
Inputs="$(MSBuildAllProjects);@(CppWinRTDirectWinMDReferences);@(CppWinRTStaticProjectWinMDReferences);@(CppWinRTDynamicProjectWinMDReferences);@(CppWinRTPlatformWinMDReferences)"
414+
Outputs="$(IntDir)midlrt.rsp">
415+
<ItemGroup>
400416
<_MidlReferences Remove="@(_MidlReferences)"/>
401417
<_MidlReferences Include="@(CppWinRTDirectWinMDReferences)"/>
402418
<_MidlReferences Include="@(CppWinRTStaticProjectWinMDReferences)"/>
@@ -408,22 +424,13 @@ $(XamlMetaDataProviderPch)
408424
<AdditionalOptions>%(Midl.AdditionalOptions) %40"$(IntDir)midlrt.rsp"</AdditionalOptions>
409425
</Midl>
410426
</ItemGroup>
411-
<ItemGroup>
412-
<Midl Condition="'%(Midl.AdditionalMetadataDirectories)'==''">
413-
<AdditionalMetadataDirectories Condition="'$(WindowsSDK_MetadataFoundationPath)' != ''">%(Midl.AdditionalMetadataDirectories);$(WindowsSDK_MetadataFoundationPath);</AdditionalMetadataDirectories>
414-
<AdditionalMetadataDirectories Condition="'$(WindowsSDK_MetadataFoundationPath)' == ''">%(Midl.AdditionalMetadataDirectories);$(WindowsSDK_MetadataPath);</AdditionalMetadataDirectories>
415-
</Midl>
416-
</ItemGroup>
417427
<PropertyGroup>
418428
<_MidlrtParameters>@(_MidlReferencesDistinct->'/reference &quot;%(WinMDPath)&quot;','&#x0d;&#x0a;')</_MidlrtParameters>
419429
</PropertyGroup>
420-
<WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
430+
<!-- Always write the midlrt.rsp file when the target runs, because the file is used as the output of this target. -->
431+
<WriteLinesToFile
421432
File="$(IntDir)midlrt.rsp" Lines="$(_MidlrtParameters)"
422433
ContinueOnError="true" Overwrite="true" />
423-
<WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
424-
File="$(IntDir)midlrt.rsp" Lines="$(_MidlrtParameters)"
425-
ContinueOnError="true" Overwrite="true"
426-
WriteOnlyWhenDifferent="true" />
427434
<Message Text="CppWinRTMidlReferences: @(_MidlReferences->'%(WinMDPath)')" Importance="$(CppWinRTVerbosity)"/>
428435
</Target>
429436

@@ -433,7 +440,7 @@ $(XamlMetaDataProviderPch)
433440
<!--Merge project-generated WinMDs and project-referenced static library WinMDs into project WinMD-->
434441
<Target Name="CppWinRTMergeProjectWinMDInputs"
435442
DependsOnTargets="Midl;GetCppWinRTMdMergeInputs;$(CppWinRTMergeProjectWinMDInputsDependsOn)"
436-
Inputs="@(CppWinRTMdMergeInputs)"
443+
Inputs="$(MSBuildAllProjects);@(CppWinRTMdMergeInputs)"
437444
Outputs="@(_MdMergedOutput);$(IntDir)mdmerge.rsp">
438445
<PropertyGroup>
439446
<!--Note: CppWinRTNamespaceMergeDepth supersedes CppWinRTMergeDepth-->
@@ -449,13 +456,10 @@ $(XamlMetaDataProviderPch)
449456
<_MdMergeParameters>$(_MdMergeParameters) @(CppWinRTMdMergeInputs->'-i &quot;%(Identity)&quot;', '&#x0d;&#x0a;')</_MdMergeParameters>
450457
<_MdMergeParameters>$(_MdMergeParameters) -o &quot;$(CppWinRTMergedDir.TrimEnd('\'))&quot; -partial $(_MdMergeDepth)</_MdMergeParameters>
451458
</PropertyGroup>
452-
<WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
459+
<!-- Always write the mdmerge.rsp file when the target runs, because the file is used as the output of this target. -->
460+
<WriteLinesToFile
453461
File="$(IntDir)mdmerge.rsp" Lines="$(_MdMergeParameters)"
454462
ContinueOnError="true" Overwrite="true" />
455-
<WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
456-
File="$(IntDir)mdmerge.rsp" Lines="$(_MdMergeParameters)"
457-
ContinueOnError="true" Overwrite="true"
458-
WriteOnlyWhenDifferent="true" />
459463
<MakeDir Directories="$(CppWinRTUnmergedDir);$(CppWinRTMergedDir)" />
460464
<Message Text="$(_MdMergeCommand)" Importance="$(CppWinRTVerbosity)"/>
461465
<Exec Command="$(_MdMergeCommand)" />
@@ -484,7 +488,7 @@ $(XamlMetaDataProviderPch)
484488
<Target Name="CppWinRTMakePlatformProjection"
485489
Condition="'$(CppWinRTEnablePlatformProjection)' == 'true' AND '$(CppWinRTOverrideSDKReferences)' != 'true'"
486490
DependsOnTargets="GetCppWinRTPlatformWinMDInputs;$(CppWinRTMakePlatformProjectionDependsOn)"
487-
Inputs="@(CppWinRTPlatformWinMDInputs)"
491+
Inputs="$(MSBuildAllProjects);@(CppWinRTPlatformWinMDInputs)"
488492
Outputs="$(IntDir)cppwinrt_plat.rsp">
489493
<PropertyGroup>
490494
<CppWinRTCommand>$(CppWinRTPath)cppwinrt %40"$(IntDir)cppwinrt_plat.rsp"</CppWinRTCommand>
@@ -498,13 +502,10 @@ $(XamlMetaDataProviderPch)
498502
<_CppwinrtParameters>$(_CppwinrtParameters) @(_CppwinrtInputs->'-in &quot;%(WinMDPath)&quot;', '&#x0d;&#x0a;')</_CppwinrtParameters>
499503
<_CppwinrtParameters>$(_CppwinrtParameters) -out &quot;$(GeneratedFilesDir).&quot;</_CppwinrtParameters>
500504
</PropertyGroup>
501-
<WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
505+
<!-- Always write the cppwinrt_plat.rsp file when the target runs, because the file is used as the output of this target. -->
506+
<WriteLinesToFile
502507
File="$(IntDir)cppwinrt_plat.rsp" Lines="$(_CppwinrtParameters)"
503508
ContinueOnError="true" Overwrite="true" />
504-
<WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
505-
File="$(IntDir)cppwinrt_plat.rsp" Lines="$(_CppwinrtParameters)"
506-
ContinueOnError="true" Overwrite="true"
507-
WriteOnlyWhenDifferent="true" />
508509
<Message Text="$(CppWinRTCommand)" Importance="$(CppWinRTVerbosity)"/>
509510
<Exec Command="$(CppWinRTCommand)" />
510511
</Target>
@@ -514,7 +515,7 @@ $(XamlMetaDataProviderPch)
514515
<Target Name="CppWinRTMakeReferenceProjection"
515516
Condition="'@(CppWinRTDirectWinMDReferences)@(CppWinRTDynamicProjectWinMDReferences)' != '' AND '$(CppWinRTEnableReferenceProjection)' == 'true'"
516517
DependsOnTargets="$(CppWinRTMakeReferenceProjectionDependsOn)"
517-
Inputs="@(CppWinRTDirectWinMDReferences);@(CppWinRTDynamicProjectWinMDReferences);@(CppWinRTPlatformWinMDReferences)"
518+
Inputs="$(MSBuildAllProjects);@(CppWinRTDirectWinMDReferences);@(CppWinRTDynamicProjectWinMDReferences);@(CppWinRTPlatformWinMDReferences)"
518519
Outputs="$(IntDir)cppwinrt_ref.rsp">
519520
<PropertyGroup>
520521
<CppWinRTCommand>$(CppWinRTPath)cppwinrt %40"$(IntDir)cppwinrt_ref.rsp"</CppWinRTCommand>
@@ -532,13 +533,10 @@ $(XamlMetaDataProviderPch)
532533
<_CppwinrtParameters>$(_CppwinrtParameters) @(_CppwinrtRefRefs->'-ref &quot;%(WinMDPath)&quot;', '&#x0d;&#x0a;')</_CppwinrtParameters>
533534
<_CppwinrtParameters>$(_CppwinrtParameters) -out &quot;$(GeneratedFilesDir).&quot;</_CppwinrtParameters>
534535
</PropertyGroup>
535-
<WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
536+
<!-- Always write the cppwinrt_ref.rsp file when the target runs, because the file is used as the output of this target. -->
537+
<WriteLinesToFile
536538
File="$(IntDir)cppwinrt_ref.rsp" Lines="$(_CppwinrtParameters)"
537539
ContinueOnError="true" Overwrite="true" />
538-
<WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
539-
File="$(IntDir)cppwinrt_ref.rsp" Lines="$(_CppwinrtParameters)"
540-
ContinueOnError="true" Overwrite="true"
541-
WriteOnlyWhenDifferent="true" />
542540
<Message Text="$(CppWinRTCommand)" Importance="$(CppWinRTVerbosity)"/>
543541
<Exec Command="$(CppWinRTCommand)" />
544542
</Target>
@@ -548,7 +546,7 @@ $(XamlMetaDataProviderPch)
548546
<Target Name="CppWinRTMakeComponentProjection"
549547
Condition="'$(CppWinRTEnableComponentProjection)' == 'true'"
550548
DependsOnTargets="GetCppWinRTMdMergeInputs;$(CppWinRTMakeComponentProjectionDependsOn)"
551-
Inputs="@(CppWinRTMdMergeInputs);@(CppWinRTStaticProjectWinMDReferences)"
549+
Inputs="$(MSBuildAllProjects);@(CppWinRTMdMergeInputs);@(CppWinRTStaticProjectWinMDReferences)"
552550
Outputs="$(IntDir)cppwinrt_comp.rsp">
553551
<PropertyGroup>
554552
<_PCH>@(ClCompile->Metadata('PrecompiledHeaderFile')->Distinct())</_PCH>
@@ -590,13 +588,10 @@ $(XamlMetaDataProviderPch)
590588
<_CppwinrtParameters>$(_CppwinrtParameters) @(_CppwinrtCompRefs->'-ref &quot;%(WinMDPath)&quot;', '&#x0d;&#x0a;')</_CppwinrtParameters>
591589
<_CppwinrtParameters>$(_CppwinrtParameters) -out &quot;$(GeneratedFilesDir).&quot;</_CppwinrtParameters>
592590
</PropertyGroup>
593-
<WriteLinesToFile Condition="!$(CppWinRTWriteOnlyWhenDifferent)"
591+
<!-- Always write the cppwinrt_comp.rsp file when the target runs, because the file is used as the output of this target. -->
592+
<WriteLinesToFile
594593
File="$(IntDir)cppwinrt_comp.rsp" Lines="$(_CppwinrtParameters)"
595594
ContinueOnError="true" Overwrite="true" />
596-
<WriteLinesToFile Condition="$(CppWinRTWriteOnlyWhenDifferent)"
597-
File="$(IntDir)cppwinrt_comp.rsp" Lines="$(_CppwinrtParameters)"
598-
ContinueOnError="true" Overwrite="true"
599-
WriteOnlyWhenDifferent="true" />
600595
<Message Text="$(CppWinRTCommand)" Importance="$(CppWinRTVerbosity)" Condition="'@(_CppwinrtCompInputs)' != ''"/>
601596
<Exec Command="$(CppWinRTCommand)" Condition="'@(_CppwinrtCompInputs)' != ''"/>
602597
</Target>

0 commit comments

Comments
 (0)