@@ -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)' < = '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 " %(WinMDPath)" ','
 ')</_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 " %(Identity)" ', '
 ')</_MdMergeParameters >
450457 <_MdMergeParameters >$(_MdMergeParameters) -o " $(CppWinRTMergedDir.TrimEnd('\'))" -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 " %(WinMDPath)" ', '
 ')</_CppwinrtParameters >
499503 <_CppwinrtParameters >$(_CppwinrtParameters) -out " $(GeneratedFilesDir)." </_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 " %(WinMDPath)" ', '
 ')</_CppwinrtParameters >
533534 <_CppwinrtParameters >$(_CppwinrtParameters) -out " $(GeneratedFilesDir)." </_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 " %(WinMDPath)" ', '
 ')</_CppwinrtParameters >
591589 <_CppwinrtParameters >$(_CppwinrtParameters) -out " $(GeneratedFilesDir)." </_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