-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHeadsetControl.NET.Native.csproj
More file actions
76 lines (59 loc) · 3.79 KB
/
Copy pathHeadsetControl.NET.Native.csproj
File metadata and controls
76 lines (59 loc) · 3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<RootNamespace>HeadsetControl.NET.Native</RootNamespace>
<AssemblyName>HeadsetControl.NET.Native</AssemblyName>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<IsAotCompatible>true</IsAotCompatible>
<IsTrimmable>true</IsTrimmable>
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
<Description>Native P/Invoke bindings for the HeadsetControl C library. Internal infrastructure for HeadsetControl.NET — application code should consume HeadsetControl.NET instead.</Description>
<PackageId>HeadsetControl.NET.Native</PackageId>
<!--
If the host-RID native library is missing at build time, invoke
build/build-native.sh automatically. Disable by setting
/p:HscBuildNativeIfMissing=false (CI does this implicitly because
the matrix build job already produces the artefacts).
-->
<HscBuildNativeIfMissing Condition="'$(HscBuildNativeIfMissing)' == ''">true</HscBuildNativeIfMissing>
</PropertyGroup>
<ItemGroup>
<InternalsVisibleTo Include="HeadsetControl.NET" />
<InternalsVisibleTo Include="HeadsetControl.NET.Tests" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" />
</ItemGroup>
<Target Name="HscPrepareNativeArtifacts"
BeforeTargets="AssignTargetPaths;_GetPackageFiles"
Condition="'$(DesignTimeBuild)' != 'true'">
<PropertyGroup>
<_HscOs Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx</_HscOs>
<_HscOs Condition="$([MSBuild]::IsOSPlatform('Linux'))">linux</_HscOs>
<_HscOs Condition="$([MSBuild]::IsOSPlatform('Windows'))">win</_HscOs>
<_HscArch Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture)' == 'X64'">x64</_HscArch>
<_HscArch Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture)' == 'Arm64'">arm64</_HscArch>
<_HscHostRid>$(_HscOs)-$(_HscArch)</_HscHostRid>
<_HscNativeName Condition="'$(_HscOs)' == 'win'">headsetcontrol.dll</_HscNativeName>
<_HscNativeName Condition="'$(_HscOs)' == 'osx'">libheadsetcontrol.dylib</_HscNativeName>
<_HscNativeName Condition="'$(_HscOs)' == 'linux'">libheadsetcontrol.so</_HscNativeName>
<_HscNativeHostPath>$(MSBuildThisFileDirectory)..\..\build\native\$(_HscHostRid)\$(_HscNativeName)</_HscNativeHostPath>
<_HscBuildScript>$(MSBuildThisFileDirectory)..\..\build\build-native.sh</_HscBuildScript>
</PropertyGroup>
<Message Importance="high"
Text="HeadsetControl: building native library for $(_HscHostRid)..."
Condition="'$(HscBuildNativeIfMissing)' == 'true' AND !Exists('$(_HscNativeHostPath)')" />
<Exec Command="bash "$(_HscBuildScript)" --rid $(_HscHostRid)"
WorkingDirectory="$(MSBuildThisFileDirectory)..\.."
Condition="'$(HscBuildNativeIfMissing)' == 'true' AND !Exists('$(_HscNativeHostPath)')" />
<ItemGroup>
<_HscNativeArtifact Include="$(MSBuildThisFileDirectory)..\..\build\native\**\*.dylib" />
<_HscNativeArtifact Include="$(MSBuildThisFileDirectory)..\..\build\native\**\*.so" />
<_HscNativeArtifact Include="$(MSBuildThisFileDirectory)..\..\build\native\**\*.dll" />
<Content Include="@(_HscNativeArtifact)"
Link="runtimes/%(RecursiveDir)native/%(Filename)%(Extension)"
CopyToOutputDirectory="PreserveNewest"
Pack="true"
PackagePath="runtimes/%(RecursiveDir)native/%(Filename)%(Extension)" />
</ItemGroup>
</Target>
</Project>