2020-11-13 20:31:39 +03:00
<?xml version="1.0" encoding="utf-8"?>
<Project>
<!-- This target is used to compute the inputs and outputs for incrementally running the Yarn up to date check.-->
<Target
Name="EnsureJavaScriptCodeUpToDateInputAndOutputs"
>
<ItemGroup>
<_EnsureJavaScriptCodeUpToDateInputFiles Include="$(MSBuildThisFileDirectory)yarn.lock" />
<_EnsureJavaScriptCodeUpToDateInputFiles Include="$(MSBuildThisFileDirectory)\**\package.json" Exclude="$(MSBuildThisFileDirectory)\node_modules\**" />
2021-11-07 22:27:08 +03:00
<_EnsureJavaScriptCodeUpToDateOutputFiles Include="@(_EnsureJavaScriptCodeUpToDateInputFiles->'$(IntDir)\JsUpToDateCheck\%(RecursiveDir)%(Filename)%(Extension).dummy')" />
2020-11-13 20:31:39 +03:00
</ItemGroup>
</Target>
2021-12-04 10:19:47 +03:00
<!--
This target checks if Yarn install needs to run or not.
2021-01-15 02:04:03 +03:00
This is a common cause of failed builds for developers not used to running it after syncing...
2021-11-02 20:45:52 +03:00
This check does not run during design time build and in our CI validation runs (detected via AGENT_NAME).
2021-01-15 02:04:03 +03:00
-->
2020-11-13 20:31:39 +03:00
<Target
Name="EnsureJavaScriptCodeUpToDate"
BeforeTargets="BeforeBuild"
DependsOnTargets="EnsureJavaScriptCodeUpToDateInputAndOutputs"
Inputs="@(_EnsureJavaScriptCodeUpToDateInputFiles)"
Outputs="@(_EnsureJavaScriptCodeUpToDateOutputFiles)"
2021-11-02 20:45:52 +03:00
Condition="'$(DesignTimeBuild)'=='' AND '$(AGENT_NAME)' == ''"
2020-11-13 20:31:39 +03:00
>
<Message Text="Checking if yarn is 'up to date' by running a 'dry-run' version of `yarn install` and checking the exit code" />
2021-12-04 10:19:47 +03:00
<Exec
2020-11-13 20:31:39 +03:00
ContinueOnError="True"
2021-11-07 22:27:08 +03:00
Command="yarn install --offline --cache-folder $(IntDir)\JsUpToDateCheck\Cache"
2020-11-13 20:31:39 +03:00
WorkingDirectory="$(MSBuildThisFileDirectory)"
>
<Output TaskParameter="ExitCode" ItemName="_YarnExitCode"/>
</Exec>
<!-- Fail the build if yarn needs to install packages. -->
2021-12-04 10:19:47 +03:00
<Error
2020-11-13 20:31:39 +03:00
Condition="'%(_YarnExitCode.Identity)' != '0'"
2021-12-04 10:19:47 +03:00
Text="Yarn packages are out of date. Please run `yarn install && yarn build` in the root of the repo to ensure the generated files are up to date"
2020-11-13 20:31:39 +03:00
/>
2021-12-04 10:19:47 +03:00
<!--
Copy the yarn.lock file to prevent this task from running over and over again, and only rerun the check with yarn.lock or any package.json changes.
2020-11-13 20:31:39 +03:00
This will likely miss a few corner cases with local changes to package.json but should catch the most important case after syncing
-->
<Copy
Condition="'%(_YarnExitCode.Identity)' == '0'"
SourceFiles="@(_EnsureJavaScriptCodeUpToDateInputFiles)"
DestinationFiles="@(_EnsureJavaScriptCodeUpToDateOutputFiles)"
2020-12-22 11:05:57 +03:00
SkipUnchangedFiles="true"
Retries="5"
RetryDelayMilliseconds="100" />
2020-11-13 20:31:39 +03:00
<!-- We have to touch the outputs to ensure up to date incrementaility works-->
<Touch Files="@(_EnsureJavaScriptCodeUpToDateOutputFiles)" />
</Target>
2021-12-04 10:19:47 +03:00
<!-- For build debugging purposes. -->
<Target Name="Vars">
2022-01-05 01:46:03 +03:00
<ItemGroup>
<_VarsGeneral Include="
ApplicationType;
Configuration;
Platform;
PlatformTarget;
PlatformName;
DefaultPlatformToolset;
PlatformToolset;
2022-01-21 11:21:00 +03:00
SolutionPath;
2022-01-05 01:46:03 +03:00
SolutionDir;
IntDir;
OutDir;
TargetDir;
TargetPath;
TLogLocation;
LastBuildUnsuccessful;
LastBuildState;
GeneratedFilesDir;
TargetFrameworkMoniker;
MSBuildExtensionsPath;
MSBuildExtensionsPath32;
MSBuildExtensionsPath64;
VCTargetsPath;
UserRootDir;
ProjectHome;
" />
<_VarsCustom Include="
RootDir;
RootIntDir;
RootOutDir;
BaseIntDir;
BaseOutDir;
ReactNativeDir;
ReactNativeWindowsDir;
FollyDir;
YogaDir;
WinVer;
" />
<_VarsWinRT Include="
UnmergedWinmdDirectory;
MergedWinmdDirectory;
" />
<_VarsJSEngine Include="
PkgReactNative_Hermes_Windows;
EnableHermesInspectorInReleaseFlavor;
UseHermes;
HermesVersion;
HermesPackage;
HermesArch;
UseFabric;
UseV8;
V8Package;
V8Version;
V8AppPlatform;
" />
<_VarsNuGet Include="
AssetTargetFallback;
IncludeFrameworkReferencesFromNuGet;
NuGetPackageRoot;
NuGetPackagesDirectory;
NuGetRuntimeIdentifier;
ProjectLockFile;
IntermediateOutputPath;
NuGetTargetMoniker;
TargetFramework;
TargetFrameworks;
TargetFrameworkIdentifier;
BaseNuGetRuntimeIdentifier;
TargetPlatformIdentifier;
MSBuildProjectExtensionsPath;
RestoreProjectStyle;
RestoreUseStaticGraphEvaluation;
" />
<_VarsWinUI Include="
UseWinUI3;
WinUI3Version;
WinUI2xVersion;
WinUIPackageName;
WinUIPackageVersion;
IsWinUIAlpha;
" />
</ItemGroup>
2021-12-04 10:19:47 +03:00
<Message Text="General" />
2022-01-05 01:46:03 +03:00
<Message Text="=> @(_VarsGeneral->PadRight(24)) [$(%(_VarsGeneral.Identity))]" />
<Message Text="%0A" />
<Message Text="Custom" />
<Message Text="=> @(_VarsCustom->PadRight(24)) [$(%(_VarsCustom.Identity))]" />
2021-12-04 10:19:47 +03:00
<Message Text="%0A" />
<Message Text="Microsoft.CppBuild.targets/MakeDirsForCl" />
2022-01-05 01:46:03 +03:00
<Message Text="=> PrecompiledHeaderOutputFile [@(CLCompile->Metadata('PrecompiledHeaderOutputFile')->DirectoryName()->Distinct())]" />
<Message Text="=> AssemblerListingLocation [@(CLCompile->Metadata('AssemblerListingLocation')->DirectoryName()->Distinct())]" />
<Message Text="=> ObjectFileName [@(CLCompile->Metadata('ObjectFileName')->DirectoryName()->Distinct())]" />
<Message Text="=> ProgramDataBaseFileName [@(CLCompile->Metadata('ProgramDataBaseFileName')->DirectoryName()->Distinct())]" />
<Message Text="=> XMLDocumentationFileName [@(CLCompile->Metadata('XMLDocumentationFileName')->DirectoryName()->Distinct())]" />
<Message Text="=> BrowseInformationFile [@(CLCompile->Metadata('BrowseInformationFile')->DirectoryName()->Distinct())]" />
<Message Text="=> PreprocessOutputPath [@(CLCompile->Metadata('PreprocessOutputPath')->DirectoryName()->Distinct())]" />
<Message Text="=> PreprocessorDefinitions [@(CLCompile->Metadata('PreprocessorDefinitions')->Distinct())]" />
<Message Text="=> ClDirsToMake [@(ClDirsToMake)]" />
2021-12-04 10:19:47 +03:00
<Message Text="%0A" />
2022-01-05 01:46:03 +03:00
<Message Text="WinRT" />
<Message Text="=> @(_VarsWinRT->PadRight(24)) [$(%(_VarsWinRT.Identity))]" />
2021-12-04 10:19:47 +03:00
<Message Text="%0A" />
<Message Text="JS Engine" />
2022-01-05 01:46:03 +03:00
<Message Text="=> @(_VarsJSEngine->PadRight(40)) [$(%(_VarsJSEngine.Identity))]" />
2021-12-04 10:19:47 +03:00
<Message Text="%0A" />
<Message Text="NuGet" />
2022-01-05 01:46:03 +03:00
<Message Text="=> @(_VarsNuGet->PadRight(40)) [$(%(_VarsNuGet.Identity))]" />
2021-12-04 10:19:47 +03:00
<Message Text="%0A" />
<Message Text="WinUI" />
2022-01-05 01:46:03 +03:00
<Message Text="=> @(_VarsWinUI->PadRight(40)) [$(%(_VarsWinUI.Identity))]" />
2021-12-04 10:19:47 +03:00
</Target>
2020-11-13 20:31:39 +03:00
2021-12-28 03:27:30 +03:00
</Project>