feat(ffi): deployable Devolutions.IronRdp package (#465)

This commit is contained in:
Benoît Cortier
2024-06-12 10:01:15 -04:00
committed by GitHub
parent d92fa6c66e
commit 67dac77a58
7 changed files with 298 additions and 15 deletions
+11
View File
@@ -106,12 +106,23 @@ jobs:
echo "[target.i686-linux-android]" >> $CargoConfigFile
echo "linker=`"$AndroidToolchain/bin/i686-linux-android19-clang`"" >> $CargoConfigFile
echo "CC_i686-linux-android=$AndroidToolchain/bin/i686-linux-android19-clang" >> $Env:GITHUB_ENV
echo "AR_i686-linux-android=$AndroidToolchain/bin/llvm-ar" >> $Env:GITHUB_ENV
echo "[target.x86_64-linux-android]" >> $CargoConfigFile
echo "linker=`"$AndroidToolchain/bin/x86_64-linux-android21-clang`"" >> $CargoConfigFile
echo "CC_x86_64-linux-android=$AndroidToolchain/bin/x86_64-linux-android21-clang" >> $Env:GITHUB_ENV
echo "AR_x86_64-linux-android=$AndroidToolchain/bin/llvm-ar" >> $Env:GITHUB_ENV
echo "[target.armv7-linux-androideabi]" >> $CargoConfigFile
echo "linker=`"$AndroidToolchain/bin/armv7a-linux-androideabi21-clang`"" >> $CargoConfigFile
echo "CC_armv7-linux-androideabi=$AndroidToolchain/bin/armv7a-linux-androideabi21-clang" >> $Env:GITHUB_ENV
echo "AR_armv7-linux-androideabi=$AndroidToolchain/bin/llvm-ar" >> $Env:GITHUB_ENV
echo "[target.aarch64-linux-android]" >> $CargoConfigFile
echo "linker=`"$AndroidToolchain/bin/aarch64-linux-android21-clang`"" >> $CargoConfigFile
echo "CC_aarch64-linux-android=$AndroidToolchain/bin/aarch64-linux-android21-clang" >> $Env:GITHUB_ENV
echo "AR_aarch64-linux-android=$AndroidToolchain/bin/llvm-ar" >> $Env:GITHUB_ENV
- name: Setup build environment
shell: pwsh
@@ -0,0 +1,22 @@
<Project>
<PropertyGroup Condition="$(PackageId.EndsWith('iOS'))">
<TargetFrameworks>net8.0-ios</TargetFrameworks>
<SupportedOSPlatformVersion>12.1</SupportedOSPlatformVersion>
</PropertyGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_ios_framework)')">
<None Include="$(RuntimesPath)/ios-universal/native/*.framework/**">
<PackagePath>runtimes/ios/native/</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup Condition="!$(PackageId.EndsWith('iOS'))">
<Content Include="Devolutions.IronRdp.iOS.props" PackagePath="build/Devolutions.IronRdp.props" Pack="true" />
</ItemGroup>
<ItemGroup Condition="$(PackageId.EndsWith('iOS'))">
<Content Include="Devolutions.IronRdp.iOS.props" PackagePath="build/Devolutions.IronRdp.iOS.props" Pack="true" />
</ItemGroup>
</Project>
@@ -0,0 +1,108 @@
<Project>
<PropertyGroup>
<TargetFrameworks>net8.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_win_x64)')">
<Content Include="$(NativeLibPath_win_x64)">
<Link>%(Filename)%(Extension)</Link>
<PackagePath>runtimes/win-x64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_win_arm64)')">
<Content Include="$(NativeLibPath_win_arm64)">
<Link>%(Filename)%(Extension)</Link>
<PackagePath>runtimes/win-arm64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_osx_x64)')">
<Content Include="$(NativeLibPath_osx_x64)">
<Link>%(Filename)%(Extension)</Link>
<PackagePath>runtimes/osx-x64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_osx_arm64)')">
<Content Include="$(NativeLibPath_osx_arm64)">
<Link>%(Filename)%(Extension)</Link>
<PackagePath>runtimes/osx-arm64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_osx_universal)')">
<Content Include="$(NativeLibPath_osx_universal)">
<Link>%(Filename)%(Extension)</Link>
<PackagePath>runtimes/osx-universal/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_linux_x64)')">
<Content Include="$(NativeLibPath_linux_x64)">
<Link>%(Filename)%(Extension)</Link>
<PackagePath>runtimes/linux-x64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_linux_arm64)')">
<Content Include="$(NativeLibPath_linux_arm64)">
<Link>%(Filename)%(Extension)</Link>
<PackagePath>runtimes/linux-arm64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_android_arm64)')">
<Content Include="$(NativeLibPath_android_arm64)">
<Link>%(Filename)%(Extension)</Link>
<PackagePath>runtimes/android-arm64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_android_arm)')">
<Content Include="$(NativeLibPath_android_arm)">
<Link>%(Filename)%(Extension)</Link>
<PackagePath>runtimes/android-arm/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_android_x64)')">
<Content Include="$(NativeLibPath_android_x64)">
<Link>%(Filename)%(Extension)</Link>
<PackagePath>runtimes/android-x64/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_android_x86)')">
<Content Include="$(NativeLibPath_android_x86)">
<Link>%(Filename)%(Extension)</Link>
<PackagePath>runtimes/android-x86/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="Devolutions.IronRdp.targets" PackagePath="build/Devolutions.IronRdp.targets" Pack="true" />
</ItemGroup>
</Project>
@@ -1,28 +1,36 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<PackageId>Devolutions.IronRdp</PackageId>
<Company>Devolutions</Company>
<Description>Bindings to Rust IronRDP native library</Description>
<LangVersion>latest</LangVersion>
<Version>2024.5.22.0</Version>
<ImplicitUsings>enable</ImplicitUsings> <!-- FIXME: set to disable -->
<Nullable>enable</Nullable>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<SuppressDependenciesWhenPacking>false</SuppressDependenciesWhenPacking>
<PackageId>Devolutions.IronRdp</PackageId>
<Version>1.0.1</Version>
<Description>Dotnet bindings for the IronRDP project</Description>
</PropertyGroup>
<PropertyGroup>
<RuntimesPath>../../../dependencies/runtimes</RuntimesPath>
<NativeLibPath_win_x64>$(RuntimesPath)/win-x64/native/DevolutionsIronRdp.dll</NativeLibPath_win_x64>
<NativeLibPath_win_arm64>$(RuntimesPath)/win-arm64/native/DevolutionsIronRdp.dll</NativeLibPath_win_arm64>
<NativeLibPath_osx_x64>$(RuntimesPath)/osx-x64/native/libDevolutionsIronRdp.dylib</NativeLibPath_osx_x64>
<NativeLibPath_osx_arm64>$(RuntimesPath)/osx-arm64/native/libDevolutionsIronRdp.dylib</NativeLibPath_osx_arm64>
<NativeLibPath_osx_universal>$(RuntimesPath)/osx-universal/native/libDevolutionsIronRdp.dylib</NativeLibPath_osx_universal>
<NativeLibPath_linux_x64>$(RuntimesPath)/linux-x64/native/libDevolutionsIronRdp.so</NativeLibPath_linux_x64>
<NativeLibPath_linux_arm64>$(RuntimesPath)/linux-arm64/native/libDevolutionsIronRdp.so</NativeLibPath_linux_arm64>
<NativeLibPath_android_arm64>$(RuntimesPath)/android-arm64/native/libDevolutionsIronRdp.so</NativeLibPath_android_arm64>
<NativeLibPath_android_arm>$(RuntimesPath)/android-arm/native/libDevolutionsIronRdp.so</NativeLibPath_android_arm>
<NativeLibPath_android_x64>$(RuntimesPath)/android-x64/native/libDevolutionsIronRdp.so</NativeLibPath_android_x64>
<NativeLibPath_android_x86>$(RuntimesPath)/android-x86/native/libDevolutionsIronRdp.so</NativeLibPath_android_x86>
<NativeLibPath_ios_x64>$(RuntimesPath)/ios-x64/native/libDevolutionsIronRdp.dylib</NativeLibPath_ios_x64>
<NativeLibPath_ios_arm64>$(RuntimesPath)/ios-arm64/native/libDevolutionsIronRdp.dylib</NativeLibPath_ios_arm64>
<NativeLibPath_ios_universal>$(RuntimesPath)/ios-universal/native/libDevolutionsIronRdp.dylib</NativeLibPath_ios_universal>
<NativeLibPath_ios_framework>$(RuntimesPath)/ios-universal/native/libDevolutionsIronRdp.framework</NativeLibPath_ios_framework>
</PropertyGroup>
<ItemGroup Condition="Exists('$(NativeLibPath_win_x64)')">
<None Include="$(NativeLibPath_win_x64)" Link="runtimes/win-x64/native/%(Filename)%(Extension)"
CopyToOutputDirectory="PreserveNewest"
Pack="true" PackagePath="runtimes/win-x64/native/%(Filename)%(Extension)"
/>
</ItemGroup>
</Project>
<Import Condition="!$(PackageId.EndsWith('iOS'))" Project="Devolutions.IronRdp.Build.props "/>
<Import Project="Devolutions.IronRdp.Build.iOS.props "/>
</Project>
@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="(('$(Platform)' == 'iPhone')) or (('$(Platform)' == 'iPhoneSimulator'))">
<NativeReference Include="$(MSBuildThisFileDirectory)..\runtimes\ios\native\libDevolutionsIronRdp.framework">
<Kind>Framework</Kind>
</NativeReference>
</ItemGroup>
</Project>
@@ -0,0 +1,98 @@
<?xml version="1.0"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IsPowerShell Condition="$(DefineConstants.Contains('__POWERSHELL__'))">true</IsPowerShell>
<IsAndroid Condition="$(TargetFramework.ToUpper().Contains('ANDROID'))">true</IsAndroid>
<IsIOS Condition="'$(Platform)' == 'iPhone' or '$(Platform)' == 'iPhoneSimulator'">true</IsIOS>
</PropertyGroup>
<ItemGroup>
<!-- Windows or PowerShell -->
<Content Condition="$([MSBuild]::IsOSPlatform('Windows')) OR '$(IsPowerShell)' == 'true'" Include="$(MSBuildThisFileDirectory)\..\runtimes\win-x64\native\DevolutionsIronRdp.dll">
<Link>runtimes\win-x64\native\DevolutionsIronRdp.dll</Link>
<PublishState>Included</PublishState>
<Visible>False</Visible>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<IncludeInVsix>true</IncludeInVsix>
<Pack>false</Pack>
</Content>
<Content Condition="$([MSBuild]::IsOSPlatform('Windows')) OR '$(IsPowerShell)' == 'true'" Include="$(MSBuildThisFileDirectory)\..\runtimes\win-arm64\native\DevolutionsIronRdp.dll">
<Link>runtimes\win-arm64\native\DevolutionsIronRdp.dll</Link>
<PublishState>Included</PublishState>
<Visible>False</Visible>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<IncludeInVsix>true</IncludeInVsix>
<Pack>false</Pack>
</Content>
<!-- Linux or PowerShell -->
<Content Condition="$([MSBuild]::IsOSPlatform('Linux')) OR '$(IsPowerShell)' == 'true'" Include="$(MSBuildThisFileDirectory)\..\runtimes\linux-x64\native\libDevolutionsIronRdp.so">
<Link>runtimes\linux-x64\native\libDevolutionsIronRdp.so</Link>
<PublishState>Included</PublishState>
<Visible>False</Visible>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<IncludeInVsix>true</IncludeInVsix>
<Pack>false</Pack>
</Content>
<Content Condition="$([MSBuild]::IsOSPlatform('Linux')) OR '$(IsPowerShell)' == 'true'" Include="$(MSBuildThisFileDirectory)\..\runtimes\linux-arm64\native\libDevolutionsIronRdp.so">
<Link>runtimes\linux-arm64\native\libDevolutionsIronRdp.so</Link>
<PublishState>Included</PublishState>
<Visible>False</Visible>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<IncludeInVsix>true</IncludeInVsix>
<Pack>false</Pack>
</Content>
<!-- PowerShell -->
<Content Condition="'$(IsPowerShell)' == 'true'" Include="$(MSBuildThisFileDirectory)\..\runtimes\osx-x64\native\libDevolutionsIronRdp.dylib">
<Link>runtimes\osx-x64\native\libDevolutionsIronRdp.dylib</Link>
<PublishState>Included</PublishState>
<Visible>False</Visible>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<IncludeInVsix>true</IncludeInVsix>
<Pack>false</Pack>
</Content>
<Content Condition="'$(IsPowerShell)' == 'true'" Include="$(MSBuildThisFileDirectory)\..\runtimes\osx-arm64\native\libDevolutionsIronRdp.dylib">
<Link>runtimes\osx-arm64\native\libDevolutionsIronRdp.dylib</Link>
<PublishState>Included</PublishState>
<Visible>False</Visible>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<IncludeInVsix>true</IncludeInVsix>
<Pack>false</Pack>
</Content>
</ItemGroup>
<!-- Xamarin.Mac -->
<ItemGroup Condition="$([MSBuild]::IsOSPlatform('OSX')) AND '$(IsPowerShell)' != 'true' AND '$(IsIOS)' != 'true' AND '$(IsAndroid)' != 'true' AND !$(TargetFramework.Contains('net'))">
<NativeReference Include="$(MSBuildThisFileDirectory)\..\runtimes\osx-universal\native\libDevolutionsIronRdp.dylib">
<Kind>Dynamic</Kind>
<SmartLink>False</SmartLink>
</NativeReference>
</ItemGroup>
<!-- Xamarin.Android or net6.0-android -->
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('armeabi-v7a')) or $(RuntimeIdentifiers.Contains('android-arm'))">
<AndroidNativeLibrary Include="$(MSBuildThisFileDirectory)\..\runtimes\android-arm\native\libDevolutionsIronRdp.so">
<Link>%(Filename)%(Extension)</Link>
<Abi>armeabi-v7a</Abi>
</AndroidNativeLibrary>
</ItemGroup>
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('arm64-v8a')) or $(RuntimeIdentifiers.Contains('android-arm64'))">
<AndroidNativeLibrary Include="$(MSBuildThisFileDirectory)\..\runtimes\android-arm64\native\libDevolutionsIronRdp.so">
<Link>%(Filename)%(Extension)</Link>
<Abi>arm64-v8a</Abi>
</AndroidNativeLibrary>
</ItemGroup>
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('x86')) or $(RuntimeIdentifiers.Contains('android-x86'))">
<AndroidNativeLibrary Include="$(MSBuildThisFileDirectory)\..\runtimes\android-x86\native\libDevolutionsIronRdp.so">
<Link>%(Filename)%(Extension)</Link>
<Abi>x86</Abi>
</AndroidNativeLibrary>
</ItemGroup>
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('x86_64')) or $(RuntimeIdentifiers.Contains('android-x64'))">
<AndroidNativeLibrary Include="$(MSBuildThisFileDirectory)\..\runtimes\android-x64\native\libDevolutionsIronRdp.so">
<Link>%(Filename)%(Extension)</Link>
<Abi>x86_64</Abi>
</AndroidNativeLibrary>
</ItemGroup>
</Project>
+28
View File
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string></string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string></string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string></string>
<key>CFBundleShortVersionString</key>
<string>1.0.0.0</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>MinimumOSVersion</key>
<string>12.1</string>
</dict>
</plist>