Ryujinx.csproj 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <Project Sdk="Microsoft.NET.Sdk">
  2. <PropertyGroup>
  3. <RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
  4. <OutputType>Exe</OutputType>
  5. <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  6. <Version>1.0.0-dirty</Version>
  7. <DefineConstants Condition=" '$(ExtraDefineConstants)' != '' ">$(DefineConstants);$(ExtraDefineConstants)</DefineConstants>
  8. <SigningCertificate Condition=" '$(SigningCertificate)' == '' ">-</SigningCertificate>
  9. <ApplicationIcon>Ryujinx.ico</ApplicationIcon>
  10. <TieredPGO>true</TieredPGO>
  11. <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
  12. <ApplicationManifest>app.manifest</ApplicationManifest>
  13. <DefaultItemExcludes>$(DefaultItemExcludes);._*</DefaultItemExcludes>
  14. </PropertyGroup>
  15. <Target Name="BuildValidationProj" BeforeTargets="BeforeBuild">
  16. <Message Text="Building Validation Project for $(TargetFramework)" Importance="high" Condition="'$(RuntimeIdentifier)' == ''" />
  17. <Exec WorkingDirectory="..\Ryujinx.BuildValidationTasks\" Command="dotnet build -c Debug /clp:NoSummary" />
  18. </Target>
  19. <Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$([MSBuild]::IsOSPlatform('OSX'))">
  20. <Exec Command="codesign --entitlements '$(ProjectDir)..\..\distribution\macos\entitlements.xml' -f -s $(SigningCertificate) '$(TargetDir)$(TargetName)'" />
  21. </Target>
  22. <PropertyGroup Condition="'$(RuntimeIdentifier)' != ''">
  23. <PublishSingleFile>true</PublishSingleFile>
  24. <TrimmerSingleWarn>false</TrimmerSingleWarn>
  25. <PublishTrimmed>true</PublishTrimmed>
  26. <TrimMode>partial</TrimMode>
  27. </PropertyGroup>
  28. <!--
  29. FluentAvalonia, used in the Avalonia UI, requires a workaround for the json serializer used internally when using .NET 8+ System.Text.Json.
  30. See:
  31. https://github.com/amwx/FluentAvalonia/issues/481
  32. https://devblogs.microsoft.com/dotnet/system-text-json-in-dotnet-8/
  33. -->
  34. <PropertyGroup>
  35. <JsonSerializerIsReflectionEnabledByDefault>true</JsonSerializerIsReflectionEnabledByDefault>
  36. </PropertyGroup>
  37. <ItemGroup>
  38. <PackageReference Include="Avalonia" />
  39. <PackageReference Include="Avalonia.Desktop" />
  40. <PackageReference Include="Avalonia.Diagnostics" Condition="'$(Configuration)'=='Debug'" />
  41. <PackageReference Include="Avalonia.Controls.DataGrid" />
  42. <PackageReference Include="Avalonia.Markup.Xaml.Loader" />
  43. <PackageReference Include="Avalonia.Svg" />
  44. <PackageReference Include="Avalonia.Svg.Skia" />
  45. <PackageReference Include="CommandLineParser" />
  46. <PackageReference Include="CommunityToolkit.Mvvm" />
  47. <PackageReference Include="DiscordRichPresence" />
  48. <PackageReference Include="DynamicData" />
  49. <PackageReference Include="FluentAvaloniaUI" />
  50. <PackageReference Include="Projektanker.Icons.Avalonia" />
  51. <PackageReference Include="Projektanker.Icons.Avalonia.FontAwesome" />
  52. <PackageReference Include="Projektanker.Icons.Avalonia.MaterialDesign" />
  53. <PackageReference Include="OpenTK.Core" />
  54. <PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'linux-arm64' AND '$(RuntimeIdentifier)' != 'osx-x64' AND '$(RuntimeIdentifier)' != 'osx-arm64'" />
  55. <PackageReference Include="Ryujinx.Graphics.Nvdec.Dependencies" />
  56. <PackageReference Include="Ryujinx.Graphics.Vulkan.Dependencies.MoltenVK" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'linux-arm64' AND '$(RuntimeIdentifier)' != 'win-x64'" />
  57. <PackageReference Include="securifybv.ShellLink" />
  58. <PackageReference Include="Silk.NET.Vulkan" />
  59. <PackageReference Include="Silk.NET.Vulkan.Extensions.EXT" />
  60. <PackageReference Include="Silk.NET.Vulkan.Extensions.KHR" />
  61. <PackageReference Include="SPB" />
  62. <PackageReference Include="SharpZipLib" />
  63. </ItemGroup>
  64. <ItemGroup>
  65. <ProjectReference Include="..\Ryujinx.Audio.Backends.SDL2\Ryujinx.Audio.Backends.SDL2.csproj" />
  66. <ProjectReference Include="..\Ryujinx.Graphics.Vulkan\Ryujinx.Graphics.Vulkan.csproj" />
  67. <ProjectReference Include="..\Ryujinx.Graphics.OpenGL\Ryujinx.Graphics.OpenGL.csproj" />
  68. <ProjectReference Include="..\Ryujinx.Graphics.Metal\Ryujinx.Graphics.Metal.csproj" />
  69. <ProjectReference Include="..\Ryujinx.Input\Ryujinx.Input.csproj" />
  70. <ProjectReference Include="..\Ryujinx.Input.SDL2\Ryujinx.Input.SDL2.csproj" />
  71. <ProjectReference Include="..\Ryujinx.Audio.Backends.OpenAL\Ryujinx.Audio.Backends.OpenAL.csproj" />
  72. <ProjectReference Include="..\Ryujinx.Audio.Backends.SoundIo\Ryujinx.Audio.Backends.SoundIo.csproj" />
  73. <ProjectReference Include="..\Ryujinx.Common\Ryujinx.Common.csproj" />
  74. <ProjectReference Include="..\Ryujinx.HLE\Ryujinx.HLE.csproj" />
  75. <ProjectReference Include="..\ARMeilleure\ARMeilleure.csproj" />
  76. <ProjectReference Include="..\Ryujinx.Graphics.Gpu\Ryujinx.Graphics.Gpu.csproj" />
  77. <ProjectReference Include="..\Ryujinx.UI.LocaleGenerator\Ryujinx.UI.LocaleGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
  78. </ItemGroup>
  79. <ItemGroup>
  80. <Content Include="..\..\distribution\windows\alsoft.ini" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'linux-arm64' AND '$(RuntimeIdentifier)' != 'osx-x64'">
  81. <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  82. <TargetPath>alsoft.ini</TargetPath>
  83. </Content>
  84. <Content Include="..\..\distribution\legal\THIRDPARTY.md">
  85. <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  86. <TargetPath>THIRDPARTY.md</TargetPath>
  87. </Content>
  88. <Content Include="..\..\LICENSE.txt">
  89. <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  90. <TargetPath>LICENSE.txt</TargetPath>
  91. </Content>
  92. </ItemGroup>
  93. <ItemGroup Condition="'$(RuntimeIdentifier)' == 'linux-x64' OR '$(RuntimeIdentifier)' == 'linux-arm64' OR ('$(RuntimeIdentifier)' == '' AND $([MSBuild]::IsOSPlatform('Linux')))">
  94. <Content Include="..\..\distribution\linux\Ryujinx.sh">
  95. <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  96. </Content>
  97. <Content Include="..\..\distribution\linux\mime\Ryujinx.xml">
  98. <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  99. <TargetPath>mime\Ryujinx.xml</TargetPath>
  100. </Content>
  101. </ItemGroup>
  102. <ItemGroup>
  103. <AvaloniaResource Include="UI\**\*.xaml">
  104. <SubType>Designer</SubType>
  105. </AvaloniaResource>
  106. <AvaloniaResource Include="Assets\Fonts\SegoeFluentIcons.ttf" />
  107. <AvaloniaResource Include="Assets\Styles\Themes.xaml">
  108. <Generator>MSBuild:Compile</Generator>
  109. </AvaloniaResource>
  110. <AvaloniaResource Include="Assets\Styles\Styles.xaml" />
  111. </ItemGroup>
  112. <ItemGroup>
  113. <None Remove="Assets\locales.json" />
  114. <None Remove="Assets\Styles\Styles.xaml" />
  115. <None Remove="Assets\Styles\Themes.xaml" />
  116. <None Remove="Assets\Icons\Controller_JoyConLeft.svg" />
  117. <None Remove="Assets\Icons\Controller_JoyConPair.svg" />
  118. <None Remove="Assets\Icons\Controller_JoyConRight.svg" />
  119. <None Remove="Assets\Icons\Controller_ProCon.svg" />
  120. </ItemGroup>
  121. <ItemGroup>
  122. <EmbeddedResource Include="..\..\distribution\linux\shortcut-template.desktop">
  123. <Link>Assets\ShortcutFiles\shortcut-template.desktop</Link>
  124. </EmbeddedResource>
  125. <EmbeddedResource Include="..\..\distribution\macos\shortcut-launch-script.sh">
  126. <Link>Assets\ShortcutFiles\shortcut-launch-script.sh</Link>
  127. </EmbeddedResource>
  128. <EmbeddedResource Include="..\..\distribution\macos\shortcut-template.plist">
  129. <Link>Assets\ShortcutFiles\shortcut-template.plist</Link>
  130. </EmbeddedResource>
  131. <EmbeddedResource Include="Assets\locales.json" />
  132. <EmbeddedResource Include="Assets\Styles\Styles.xaml" />
  133. <EmbeddedResource Include="Assets\Icons\Controller_JoyConLeft.svg" />
  134. <EmbeddedResource Include="Assets\Icons\Controller_JoyConPair.svg" />
  135. <EmbeddedResource Include="Assets\Icons\Controller_JoyConRight.svg" />
  136. <EmbeddedResource Include="Assets\Icons\Controller_ProCon.svg" />
  137. <EmbeddedResource Include="Assets\UIImages\Icon_NCA.png" />
  138. <EmbeddedResource Include="Assets\UIImages\Icon_NRO.png" />
  139. <EmbeddedResource Include="Assets\UIImages\Icon_NSO.png" />
  140. <EmbeddedResource Include="Assets\UIImages\Icon_NSP.png" />
  141. <EmbeddedResource Include="Assets\UIImages\Icon_XCI.png" />
  142. <EmbeddedResource Include="Assets\UIImages\Logo_Amiibo.png" />
  143. <EmbeddedResource Include="Assets\UIImages\Logo_Discord_Dark.png" />
  144. <EmbeddedResource Include="Assets\UIImages\Logo_Discord_Light.png" />
  145. <EmbeddedResource Include="Assets\UIImages\Logo_GitHub_Dark.png" />
  146. <EmbeddedResource Include="Assets\UIImages\Logo_GitHub_Light.png" />
  147. <EmbeddedResource Include="Assets\UIImages\Logo_Ryujinx.png" />
  148. <EmbeddedResource Include="Assets\UIImages\Logo_Ryujinx_AntiAlias.png" />
  149. <EmbeddedResource Include="Headless\Ryujinx.bmp" LogicalName="HeadlessLogo" />
  150. </ItemGroup>
  151. <ItemGroup>
  152. <AdditionalFiles Include="Assets\locales.json" />
  153. </ItemGroup>
  154. </Project>