/ src / Ryujinx / Ryujinx.csproj
Ryujinx.csproj
  1  <Project Sdk="Microsoft.NET.Sdk">
  2    <PropertyGroup>
  3      <TargetFramework>net8.0</TargetFramework>
  4      <RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
  5      <OutputType>Exe</OutputType>
  6      <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  7      <Version>1.0.0-dirty</Version>
  8      <DefineConstants Condition=" '$(ExtraDefineConstants)' != '' ">$(DefineConstants);$(ExtraDefineConstants)</DefineConstants>
  9      <SigningCertificate Condition=" '$(SigningCertificate)' == '' ">-</SigningCertificate>
 10      <ApplicationIcon>Ryujinx.ico</ApplicationIcon>
 11      <TieredPGO>true</TieredPGO>
 12      <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
 13      <ApplicationManifest>app.manifest</ApplicationManifest>
 14    </PropertyGroup>
 15  
 16    <Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$([MSBuild]::IsOSPlatform('OSX'))">
 17      <Exec Command="codesign --entitlements '$(ProjectDir)..\..\distribution\macos\entitlements.xml' -f --deep -s $(SigningCertificate) '$(TargetDir)$(TargetName)'" />
 18    </Target>
 19  
 20    <PropertyGroup Condition="'$(RuntimeIdentifier)' != ''">
 21      <PublishSingleFile>true</PublishSingleFile>
 22      <TrimmerSingleWarn>false</TrimmerSingleWarn>
 23      <PublishTrimmed>true</PublishTrimmed>
 24      <TrimMode>partial</TrimMode>
 25    </PropertyGroup>
 26  
 27    <!--
 28      FluentAvalonia, used in the Avalonia UI, requires a workaround for the json serializer used internally when using .NET 8+ System.Text.Json.
 29      See:
 30        https://github.com/amwx/FluentAvalonia/issues/481
 31        https://devblogs.microsoft.com/dotnet/system-text-json-in-dotnet-8/
 32    -->
 33    <PropertyGroup>
 34      <JsonSerializerIsReflectionEnabledByDefault>true</JsonSerializerIsReflectionEnabledByDefault>
 35    </PropertyGroup>
 36  
 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="DynamicData" />
 46      <PackageReference Include="FluentAvaloniaUI" />
 47  
 48      <PackageReference Include="OpenTK.Core" />
 49      <PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'linux-arm64' AND '$(RuntimeIdentifier)' != 'osx-x64' AND '$(RuntimeIdentifier)' != 'osx-arm64'" />
 50      <PackageReference Include="Ryujinx.Graphics.Nvdec.Dependencies" />
 51      <PackageReference Include="Ryujinx.Graphics.Vulkan.Dependencies.MoltenVK" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'linux-arm64' AND '$(RuntimeIdentifier)' != 'win-x64'" />
 52      <PackageReference Include="Silk.NET.Vulkan" />
 53      <PackageReference Include="Silk.NET.Vulkan.Extensions.EXT" />
 54      <PackageReference Include="Silk.NET.Vulkan.Extensions.KHR" />
 55      <PackageReference Include="SPB" />
 56      <PackageReference Include="SharpZipLib" />
 57    </ItemGroup>
 58  
 59    <ItemGroup>
 60      <ProjectReference Include="..\Ryujinx.Audio.Backends.SDL2\Ryujinx.Audio.Backends.SDL2.csproj" />
 61      <ProjectReference Include="..\Ryujinx.Graphics.Vulkan\Ryujinx.Graphics.Vulkan.csproj" />
 62      <ProjectReference Include="..\Ryujinx.Input\Ryujinx.Input.csproj" />
 63      <ProjectReference Include="..\Ryujinx.Input.SDL2\Ryujinx.Input.SDL2.csproj" />
 64      <ProjectReference Include="..\Ryujinx.Audio.Backends.OpenAL\Ryujinx.Audio.Backends.OpenAL.csproj" />
 65      <ProjectReference Include="..\Ryujinx.Audio.Backends.SoundIo\Ryujinx.Audio.Backends.SoundIo.csproj" />
 66      <ProjectReference Include="..\Ryujinx.Common\Ryujinx.Common.csproj" />
 67      <ProjectReference Include="..\Ryujinx.HLE\Ryujinx.HLE.csproj" />
 68      <ProjectReference Include="..\ARMeilleure\ARMeilleure.csproj" />
 69      <ProjectReference Include="..\Ryujinx.Graphics.OpenGL\Ryujinx.Graphics.OpenGL.csproj" />
 70      <ProjectReference Include="..\Ryujinx.Graphics.Gpu\Ryujinx.Graphics.Gpu.csproj" />
 71      <ProjectReference Include="..\Ryujinx.UI.Common\Ryujinx.UI.Common.csproj" />
 72      <ProjectReference Include="..\Ryujinx.UI.LocaleGenerator\Ryujinx.UI.LocaleGenerator.csproj"
 73                        OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
 74    </ItemGroup>
 75  
 76    <ItemGroup>
 77      <Content Include="..\..\distribution\windows\alsoft.ini" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'linux-arm64' AND '$(RuntimeIdentifier)' != 'osx-x64'">
 78        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
 79        <TargetPath>alsoft.ini</TargetPath>
 80      </Content>
 81      <Content Include="..\..\distribution\legal\THIRDPARTY.md">
 82        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
 83        <TargetPath>THIRDPARTY.md</TargetPath>
 84      </Content>
 85      <Content Include="..\..\LICENSE.txt">
 86        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
 87        <TargetPath>LICENSE.txt</TargetPath>
 88      </Content>
 89    </ItemGroup>
 90  
 91    <ItemGroup Condition="'$(RuntimeIdentifier)' == 'linux-x64' OR '$(RuntimeIdentifier)' == 'linux-arm64' OR ('$(RuntimeIdentifier)' == '' AND $([MSBuild]::IsOSPlatform('Linux')))">
 92      <Content Include="..\..\distribution\linux\Ryujinx.sh">
 93        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
 94      </Content>
 95      <Content Include="..\..\distribution\linux\mime\Ryujinx.xml">
 96        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
 97        <TargetPath>mime\Ryujinx.xml</TargetPath>
 98      </Content>
 99    </ItemGroup>
100  
101    <ItemGroup>
102      <AvaloniaResource Include="UI\**\*.xaml">
103        <SubType>Designer</SubType>
104      </AvaloniaResource>
105      <AvaloniaResource Include="Assets\Fonts\SegoeFluentIcons.ttf" />
106      <AvaloniaResource Include="Assets\Styles\Themes.xaml">
107        <Generator>MSBuild:Compile</Generator>
108      </AvaloniaResource>
109      <AvaloniaResource Include="Assets\Styles\Styles.xaml" />
110    </ItemGroup>
111  
112    <ItemGroup>
113      <None Remove="Assets\Locales\ar_SA.json" />
114      <None Remove="Assets\Locales\el_GR.json" />
115      <None Remove="Assets\Locales\en_US.json" />
116      <None Remove="Assets\Locales\es_ES.json" />
117      <None Remove="Assets\Locales\fr_FR.json" />
118      <None Remove="Assets\Locales\he_IL.json" />
119      <None Remove="Assets\Locales\de_DE.json" />
120      <None Remove="Assets\Locales\it_IT.json" />
121      <None Remove="Assets\Locales\ja_JP.json" />
122      <None Remove="Assets\Locales\ko_KR.json" />
123      <None Remove="Assets\Locales\pl_PL.json" />
124      <None Remove="Assets\Locales\pt_BR.json" />
125      <None Remove="Assets\Locales\ru_RU.json" />
126      <None Remove="Assets\Locales\th_TH.json" />
127      <None Remove="Assets\Locales\tr_TR.json" />
128      <None Remove="Assets\Locales\uk_UA.json" />
129      <None Remove="Assets\Locales\zh_CN.json" />
130      <None Remove="Assets\Locales\zh_TW.json" />
131      <None Remove="Assets\Styles\Styles.xaml" />
132      <None Remove="Assets\Styles\Themes.xaml" />
133      <None Remove="Assets\Icons\Controller_JoyConLeft.svg" />
134      <None Remove="Assets\Icons\Controller_JoyConPair.svg" />
135      <None Remove="Assets\Icons\Controller_JoyConRight.svg" />
136      <None Remove="Assets\Icons\Controller_ProCon.svg" />
137    </ItemGroup>
138  
139    <ItemGroup>
140      <EmbeddedResource Include="Assets\Locales\ar_SA.json" />
141      <EmbeddedResource Include="Assets\Locales\el_GR.json" />
142      <EmbeddedResource Include="Assets\Locales\en_US.json" />
143      <EmbeddedResource Include="Assets\Locales\es_ES.json" />
144      <EmbeddedResource Include="Assets\Locales\fr_FR.json" />
145      <EmbeddedResource Include="Assets\Locales\he_IL.json" />
146      <EmbeddedResource Include="Assets\Locales\de_DE.json" />
147      <EmbeddedResource Include="Assets\Locales\it_IT.json" />
148      <EmbeddedResource Include="Assets\Locales\ja_JP.json" />
149      <EmbeddedResource Include="Assets\Locales\ko_KR.json" />
150      <EmbeddedResource Include="Assets\Locales\pl_PL.json" />
151      <EmbeddedResource Include="Assets\Locales\pt_BR.json" />
152      <EmbeddedResource Include="Assets\Locales\ru_RU.json" />
153      <EmbeddedResource Include="Assets\Locales\th_TH.json" />
154      <EmbeddedResource Include="Assets\Locales\tr_TR.json" />
155      <EmbeddedResource Include="Assets\Locales\uk_UA.json" />
156      <EmbeddedResource Include="Assets\Locales\zh_CN.json" />
157      <EmbeddedResource Include="Assets\Locales\zh_TW.json" />
158      <EmbeddedResource Include="Assets\Styles\Styles.xaml" />
159      <EmbeddedResource Include="Assets\Icons\Controller_JoyConLeft.svg" />
160      <EmbeddedResource Include="Assets\Icons\Controller_JoyConPair.svg" />
161      <EmbeddedResource Include="Assets\Icons\Controller_JoyConRight.svg" />
162      <EmbeddedResource Include="Assets\Icons\Controller_ProCon.svg" />
163    </ItemGroup>
164    <ItemGroup>
165      <AdditionalFiles Include="Assets\Locales\en_US.json" />
166    </ItemGroup>
167  </Project>