Skip to content

Commit 0bf74b4

Browse files
Windows: add opt-in embedded Rivet build mode
1 parent 654b5db commit 0bf74b4

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

‎apps/windows/Taskly/Taskly.csproj‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@
2525
<Version>1.0.0</Version>
2626
<AssemblyName>Taskly</AssemblyName>
2727
<ApplicationIcon>Assets\taskly.ico</ApplicationIcon>
28+
<TasklyRepoRoot>$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..\..'))</TasklyRepoRoot>
29+
</PropertyGroup>
30+
31+
<PropertyGroup Condition="'$(UseRivetBackend)' == 'true'">
32+
<DefineConstants>$(DefineConstants);TASKLY_RIVET</DefineConstants>
33+
<RivetRoot Condition="'$(RivetRoot)' == ''">$(RIVET_ROOT)</RivetRoot>
34+
<TasklyGeneratedRivet Condition="'$(TasklyGeneratedRivet)' == ''">$(TasklyRepoRoot)\dotnet\GeneratedBackend.cs</TasklyGeneratedRivet>
35+
<TasklyRivetBundle Condition="'$(TasklyRivetBundle)' == ''">$(TasklyRepoRoot)\.rivet\dotnet\windows-x64</TasklyRivetBundle>
2836
</PropertyGroup>
2937

3038
<ItemGroup>
@@ -38,6 +46,14 @@
3846
<PackageReference Include="Velopack" Version="1.0.0" />
3947
</ItemGroup>
4048

49+
<ItemGroup Condition="'$(UseRivetBackend)' == 'true'">
50+
<ProjectReference Include="$(RivetRoot)\platform\dotnet\Rivet.Runtime\Rivet.Runtime.csproj" />
51+
<Compile Include="$(TasklyGeneratedRivet)" Link="Generated\GeneratedBackend.cs" />
52+
<RivetBootFile Include="$(TasklyRivetBundle)\runtime\**\*.*" />
53+
<RivetResourceFile Include="$(TasklyRivetBundle)\res\**\*.*" />
54+
<RivetNativeFile Include="$(TasklyRivetBundle)\*.dll" />
55+
</ItemGroup>
56+
4157
<ItemGroup>
4258
<Content Include="Strings\*.json">
4359
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
@@ -54,4 +70,24 @@
5470
</Content>
5571
</ItemGroup>
5672

73+
<Target Name="ValidateTasklyRivet" BeforeTargets="CoreCompile" Condition="'$(UseRivetBackend)' == 'true'">
74+
<Error Condition="'$(RivetRoot)' == '' Or !Exists('$(RivetRoot)\platform\dotnet\Rivet.Runtime\Rivet.Runtime.csproj')"
75+
Text="UseRivetBackend=true requires RivetRoot (or RIVET_ROOT) to point to the pinned Rivet checkout." />
76+
<Error Condition="!Exists('$(TasklyGeneratedRivet)')"
77+
Text="Taskly generated Rivet API is missing. Run 'raco rivet build-dotnet' from the Taskly repository first." />
78+
<Error Condition="!Exists('$(TasklyRivetBundle)\rivet_native.dll')"
79+
Text="Taskly embedded Rivet bundle is missing. Run 'raco rivet build-dotnet' from the Taskly repository first." />
80+
</Target>
81+
82+
<Target Name="CopyTasklyRivetRuntime" AfterTargets="Build" Condition="'$(UseRivetBackend)' == 'true'">
83+
<MakeDir Directories="$(OutDir)rivet\runtime;$(OutDir)rivet\res" />
84+
<Copy SourceFiles="@(RivetBootFile)"
85+
DestinationFiles="@(RivetBootFile->'$(OutDir)rivet\runtime\%(RecursiveDir)%(Filename)%(Extension)')" />
86+
<Copy SourceFiles="@(RivetResourceFile)"
87+
DestinationFiles="@(RivetResourceFile->'$(OutDir)rivet\res\%(RecursiveDir)%(Filename)%(Extension)')" />
88+
<!-- The native bridge and libracketcs dependency must be beside Taskly.exe
89+
so the Windows loader can resolve them before managed startup. -->
90+
<Copy SourceFiles="@(RivetNativeFile)" DestinationFolder="$(OutDir)" />
91+
</Target>
92+
5793
</Project>

0 commit comments

Comments
 (0)