Split AvaloniaNative static package
This commit is contained in:
1 parent
aa0118a4e3
commit
a700f4a124
12 files changed
+211
-36
No files matched your search
@@ -98,6 +98,11 @@ jobs:
|
|||||||
-o artifacts/nuget \
|
-o artifacts/nuget \
|
||||||
/p:PackageVersion=${{ steps.version.outputs.package_version }} \
|
/p:PackageVersion=${{ steps.version.outputs.package_version }} \
|
||||||
/p:Version=${{ steps.version.outputs.package_version }}
|
/p:Version=${{ steps.version.outputs.package_version }}
|
||||||
|
dotnet pack NuGet/AvaloniaNative/StaticLink.Avalonia.Native.csproj \
|
||||||
|
-c Release \
|
||||||
|
-o artifacts/nuget \
|
||||||
|
/p:PackageVersion=11.3.14-macavn.${{ github.run_number }} \
|
||||||
|
/p:Version=11.3.14-macavn.${{ github.run_number }}
|
||||||
|
|
||||||
- name: Upload experimental NuGet package
|
- name: Upload experimental NuGet package
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
@@ -136,10 +141,15 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
$projectDir = Join-Path $PWD "artifacts/avalonia-smoke-src"
|
$projectDir = Join-Path $PWD "artifacts/avalonia-smoke-src"
|
||||||
|
$nativePackage = Get-ChildItem -Path "artifacts/nuget" -Filter "StaticLink.Avalonia.Native.*.nupkg" | Select-Object -First 1
|
||||||
|
if (-not $nativePackage) { throw "StaticLink AvaloniaNative NuGet package was not downloaded." }
|
||||||
|
if ($nativePackage.BaseName -notmatch '^StaticLink\.Avalonia\.Native\.(.+)$') { throw "Unexpected native package name: $($nativePackage.Name)" }
|
||||||
|
$nativeVersion = $Matches[1]
|
||||||
pwsh ./scripts/create-avalonia-smoke.ps1 `
|
pwsh ./scripts/create-avalonia-smoke.ps1 `
|
||||||
-ProjectDir $projectDir `
|
-ProjectDir $projectDir `
|
||||||
-NuGetSource (Resolve-Path "artifacts/nuget") `
|
-NuGetSource (Resolve-Path "artifacts/nuget") `
|
||||||
-StaticLinkVersion "${{ needs.pack-experimental.outputs.package_version }}"
|
-StaticLinkVersion "${{ needs.pack-experimental.outputs.package_version }}" `
|
||||||
|
-StaticLinkNativeVersion $nativeVersion
|
||||||
dotnet publish (Join-Path $projectDir "AvaloniaStaticLinkSmoke.csproj") `
|
dotnet publish (Join-Path $projectDir "AvaloniaStaticLinkSmoke.csproj") `
|
||||||
-c Release `
|
-c Release `
|
||||||
-r "${{ matrix.rid }}" `
|
-r "${{ matrix.rid }}" `
|
||||||
|
|||||||
@@ -131,21 +131,12 @@ jobs:
|
|||||||
TARGET_CPU: ${{ matrix.target_cpu }}
|
TARGET_CPU: ${{ matrix.target_cpu }}
|
||||||
WORK_DIR: ${{ github.workspace }}/External/NativeStatic/.work
|
WORK_DIR: ${{ github.workspace }}/External/NativeStatic/.work
|
||||||
OUTPUT_DIR: ${{ github.workspace }}/External/NativeStatic/${{ matrix.rid }}/native
|
OUTPUT_DIR: ${{ github.workspace }}/External/NativeStatic/${{ matrix.rid }}/native
|
||||||
AVALONIA_VERSION: 11.3.14
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup .NET for Avalonia header generation
|
|
||||||
uses: actions/setup-dotnet@v4
|
|
||||||
with:
|
|
||||||
dotnet-version: "8.0.x"
|
|
||||||
|
|
||||||
- name: Install native build dependencies
|
- name: Install native build dependencies
|
||||||
run: brew install ninja
|
run: brew install ninja
|
||||||
|
|
||||||
- name: Build static AvaloniaNative
|
|
||||||
run: bash ./scripts/build-macos-avalonia-native-static.sh
|
|
||||||
|
|
||||||
- name: Build macOS static graphics libraries
|
- name: Build macOS static graphics libraries
|
||||||
run: bash ./scripts/build-macos-static-graphics.sh all
|
run: bash ./scripts/build-macos-static-graphics.sh all
|
||||||
|
|
||||||
@@ -159,12 +150,61 @@ jobs:
|
|||||||
path: External/NativeStatic/${{ matrix.rid }}/*
|
path: External/NativeStatic/${{ matrix.rid }}/*
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
|
build-macos-avalonia-native:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- rid: osx-x64
|
||||||
|
runner: macos-14
|
||||||
|
avalonia_version: 11.3.14
|
||||||
|
- rid: osx-arm64
|
||||||
|
runner: macos-latest
|
||||||
|
avalonia_version: 11.3.14
|
||||||
|
- rid: osx-x64
|
||||||
|
runner: macos-14
|
||||||
|
avalonia_version: 12.0.3
|
||||||
|
- rid: osx-arm64
|
||||||
|
runner: macos-latest
|
||||||
|
avalonia_version: 12.0.3
|
||||||
|
runs-on: ${{ matrix.runner }}
|
||||||
|
env:
|
||||||
|
RID: ${{ matrix.rid }}
|
||||||
|
WORK_DIR: ${{ github.workspace }}/External/NativeStatic/.work
|
||||||
|
OUTPUT_DIR: ${{ github.workspace }}/External/NativeStatic/${{ matrix.rid }}/native
|
||||||
|
AVALONIA_VERSION: ${{ matrix.avalonia_version }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup .NET for Avalonia header generation
|
||||||
|
uses: actions/setup-dotnet@v4
|
||||||
|
with:
|
||||||
|
dotnet-version: |
|
||||||
|
8.0.x
|
||||||
|
10.0.x
|
||||||
|
|
||||||
|
- name: Build static AvaloniaNative
|
||||||
|
run: bash ./scripts/build-macos-avalonia-native-static.sh
|
||||||
|
|
||||||
|
- name: Build macOS font preinit object
|
||||||
|
run: bash scripts/build-macos-font-preinit.sh
|
||||||
|
|
||||||
|
- name: Upload static AvaloniaNative
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: native-avalonia-${{ matrix.avalonia_version }}-${{ matrix.rid }}
|
||||||
|
path: |
|
||||||
|
External/NativeStatic/${{ matrix.rid }}/native/libAvaloniaNative.a
|
||||||
|
External/NativeStatic/${{ matrix.rid }}/native/macos_font_preinit.o
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
pack:
|
pack:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs:
|
needs:
|
||||||
- build-linux
|
- build-linux
|
||||||
- build-windows
|
- build-windows
|
||||||
- build-macos
|
- build-macos
|
||||||
|
- build-macos-avalonia-native
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
@@ -182,6 +222,13 @@ jobs:
|
|||||||
path: External/NativeStatic
|
path: External/NativeStatic
|
||||||
merge-multiple: false
|
merge-multiple: false
|
||||||
|
|
||||||
|
- name: Download static AvaloniaNative archives
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
pattern: native-avalonia-*
|
||||||
|
path: External/AvaloniaNative
|
||||||
|
merge-multiple: false
|
||||||
|
|
||||||
- name: Move static archives into RID directories
|
- name: Move static archives into RID directories
|
||||||
run: |
|
run: |
|
||||||
for rid in win-x64 win-arm64 linux-x64 linux-arm64 osx-x64 osx-arm64; do
|
for rid in win-x64 win-arm64 linux-x64 linux-arm64 osx-x64 osx-arm64; do
|
||||||
@@ -200,11 +247,6 @@ jobs:
|
|||||||
test -f External/NativeStatic/$rid/native/libGLESv2_static.a
|
test -f External/NativeStatic/$rid/native/libGLESv2_static.a
|
||||||
done
|
done
|
||||||
|
|
||||||
for rid in osx-x64 osx-arm64; do
|
|
||||||
test -f External/NativeStatic/$rid/native/libAvaloniaNative.a
|
|
||||||
test -f External/NativeStatic/$rid/native/macos_font_preinit.o
|
|
||||||
done
|
|
||||||
|
|
||||||
for rid in win-x64 win-arm64; do
|
for rid in win-x64 win-arm64; do
|
||||||
test -f External/NativeStatic/$rid/native/skia.lib
|
test -f External/NativeStatic/$rid/native/skia.lib
|
||||||
test -f External/NativeStatic/$rid/native/SkiaSharp.lib
|
test -f External/NativeStatic/$rid/native/SkiaSharp.lib
|
||||||
@@ -214,7 +256,18 @@ jobs:
|
|||||||
done
|
done
|
||||||
|
|
||||||
- name: Pack NuGet package
|
- name: Pack NuGet package
|
||||||
run: dotnet pack NuGet/StaticGraphics/StaticLink.Avalonia.csproj -c Release -o artifacts/nuget
|
run: |
|
||||||
|
dotnet pack NuGet/StaticGraphics/StaticLink.Avalonia.csproj -c Release -o artifacts/nuget
|
||||||
|
for version in 11.3.14 12.0.3; do
|
||||||
|
mkdir -p External/NativeStatic/osx-x64/native External/NativeStatic/osx-arm64/native
|
||||||
|
cp External/AvaloniaNative/native-avalonia-$version-osx-x64/* External/NativeStatic/osx-x64/native/
|
||||||
|
cp External/AvaloniaNative/native-avalonia-$version-osx-arm64/* External/NativeStatic/osx-arm64/native/
|
||||||
|
dotnet pack NuGet/AvaloniaNative/StaticLink.Avalonia.Native.csproj \
|
||||||
|
-c Release \
|
||||||
|
-o artifacts/nuget \
|
||||||
|
/p:PackageVersion=$version.1 \
|
||||||
|
/p:Version=$version.1
|
||||||
|
done
|
||||||
|
|
||||||
- name: Upload NuGet artifact
|
- name: Upload NuGet artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
@@ -260,8 +313,20 @@ jobs:
|
|||||||
runner: ubuntu-24.04-arm
|
runner: ubuntu-24.04-arm
|
||||||
- rid: osx-x64
|
- rid: osx-x64
|
||||||
runner: macos-14
|
runner: macos-14
|
||||||
|
avalonia_version: 11.3.14
|
||||||
|
native_version: 11.3.14.1
|
||||||
- rid: osx-arm64
|
- rid: osx-arm64
|
||||||
runner: macos-latest
|
runner: macos-latest
|
||||||
|
avalonia_version: 11.3.14
|
||||||
|
native_version: 11.3.14.1
|
||||||
|
- rid: osx-x64
|
||||||
|
runner: macos-14
|
||||||
|
avalonia_version: 12.0.3
|
||||||
|
native_version: 12.0.3.1
|
||||||
|
- rid: osx-arm64
|
||||||
|
runner: macos-latest
|
||||||
|
avalonia_version: 12.0.3
|
||||||
|
native_version: 12.0.3.1
|
||||||
runs-on: ${{ matrix.runner }}
|
runs-on: ${{ matrix.runner }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
@@ -293,12 +358,19 @@ jobs:
|
|||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: |
|
run: |
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
$package = Get-ChildItem -Path "artifacts/nuget" -Filter "StaticLink.Avalonia.*.nupkg" | Select-Object -First 1
|
$package = Get-ChildItem -Path "artifacts/nuget" -Filter "StaticLink.Avalonia.*.nupkg" | Where-Object { $_.Name -notlike "StaticLink.Avalonia.Native.*" } | Select-Object -First 1
|
||||||
if (-not $package) { throw "StaticLink NuGet package was not downloaded." }
|
if (-not $package) { throw "StaticLink NuGet package was not downloaded." }
|
||||||
if ($package.BaseName -notmatch '^StaticLink\.Avalonia\.(.+)$') { throw "Unexpected package name: $($package.Name)" }
|
if ($package.BaseName -notmatch '^StaticLink\.Avalonia\.(.+)$') { throw "Unexpected package name: $($package.Name)" }
|
||||||
$version = $Matches[1]
|
$version = $Matches[1]
|
||||||
|
$nativeVersion = "${{ matrix.native_version }}"
|
||||||
|
$avaloniaVersion = "${{ matrix.avalonia_version }}"
|
||||||
|
if (-not $avaloniaVersion) { $avaloniaVersion = "11.3.14" }
|
||||||
|
if ($nativeVersion) {
|
||||||
|
$nativePackage = Get-ChildItem -Path "artifacts/nuget" -Filter "StaticLink.Avalonia.Native.$nativeVersion.nupkg" | Select-Object -First 1
|
||||||
|
if (-not $nativePackage) { throw "StaticLink AvaloniaNative NuGet package $nativeVersion was not downloaded." }
|
||||||
|
}
|
||||||
$projectDir = Join-Path $PWD "artifacts/avalonia-smoke-src"
|
$projectDir = Join-Path $PWD "artifacts/avalonia-smoke-src"
|
||||||
pwsh ./scripts/create-avalonia-smoke.ps1 -ProjectDir $projectDir -NuGetSource (Resolve-Path "artifacts/nuget") -StaticLinkVersion $version
|
pwsh ./scripts/create-avalonia-smoke.ps1 -ProjectDir $projectDir -NuGetSource (Resolve-Path "artifacts/nuget") -StaticLinkVersion $version -AvaloniaVersion $avaloniaVersion -StaticLinkNativeVersion $nativeVersion
|
||||||
dotnet publish (Join-Path $projectDir "AvaloniaStaticLinkSmoke.csproj") `
|
dotnet publish (Join-Path $projectDir "AvaloniaStaticLinkSmoke.csproj") `
|
||||||
-c Release `
|
-c Release `
|
||||||
-r "${{ matrix.rid }}" `
|
-r "${{ matrix.rid }}" `
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<IsPackable>true</IsPackable>
|
||||||
|
<NoBuild>true</NoBuild>
|
||||||
|
<IncludeBuildOutput>false</IncludeBuildOutput>
|
||||||
|
<SuppressDependenciesWhenPacking>false</SuppressDependenciesWhenPacking>
|
||||||
|
<PackageId>StaticLink.Avalonia.Native</PackageId>
|
||||||
|
<Version>11.3.14.1</Version>
|
||||||
|
<Authors>greepar</Authors>
|
||||||
|
<Company>greepar</Company>
|
||||||
|
<Description>Static AvaloniaNative library for macOS Avalonia NativeAOT publishing.</Description>
|
||||||
|
<PackageTags>Avalonia;AvaloniaNative;NativeAOT;macOS;Static</PackageTags>
|
||||||
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
|
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<RepositoryUrl>https://github.com/greepar/StaticLink.Avalonia</RepositoryUrl>
|
||||||
|
<PackageProjectUrl>https://github.com/greepar/StaticLink.Avalonia</PackageProjectUrl>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="../StaticGraphics/README.md" Pack="true" PackagePath="README.md" />
|
||||||
|
<None Include="lib/net10.0/_._" Pack="true" PackagePath="lib/net10.0/_._" />
|
||||||
|
<None Include="buildTransitive/StaticLink.Avalonia.Native.props" Pack="true" PackagePath="buildTransitive/$(PackageId).props" />
|
||||||
|
<None Include="buildTransitive/StaticLink.Avalonia.Native.targets" Pack="true" PackagePath="buildTransitive/$(PackageId).targets" />
|
||||||
|
<None Include="buildTransitive/StaticLink.Avalonia.Native.MacOSFontWarmup.cs" Pack="true" PackagePath="buildTransitive/StaticLink.Avalonia.Native.MacOSFontWarmup.cs" />
|
||||||
|
<None Include="../../External/NativeStatic/osx-x64/native/libAvaloniaNative.a" Condition="Exists('../../External/NativeStatic/osx-x64/native/libAvaloniaNative.a')" Pack="true" PackagePath="static/osx-x64/native/libAvaloniaNative.a" />
|
||||||
|
<None Include="../../External/NativeStatic/osx-x64/native/macos_font_preinit.o" Condition="Exists('../../External/NativeStatic/osx-x64/native/macos_font_preinit.o')" Pack="true" PackagePath="static/osx-x64/native/macos_font_preinit.o" />
|
||||||
|
<None Include="../../External/NativeStatic/osx-arm64/native/libAvaloniaNative.a" Condition="Exists('../../External/NativeStatic/osx-arm64/native/libAvaloniaNative.a')" Pack="true" PackagePath="static/osx-arm64/native/libAvaloniaNative.a" />
|
||||||
|
<None Include="../../External/NativeStatic/osx-arm64/native/macos_font_preinit.o" Condition="Exists('../../External/NativeStatic/osx-arm64/native/macos_font_preinit.o')" Pack="true" PackagePath="static/osx-arm64/native/macos_font_preinit.o" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
+2
-2
@@ -2,7 +2,7 @@ using System;
|
|||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace StaticLink.Avalonia;
|
namespace StaticLink.Avalonia.Native;
|
||||||
|
|
||||||
internal static class MacOSFontWarmup
|
internal static class MacOSFontWarmup
|
||||||
{
|
{
|
||||||
@@ -29,7 +29,7 @@ internal static class MacOSFontWarmup
|
|||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
// Never fail application startup from the defensive macOS font-cache warmup.
|
// Defensive AppKit font-cache warmup must never fail application startup.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<StaticLinkAvaloniaNativeRoot Condition="'$(StaticLinkAvaloniaNativeRoot)' == ''">$(MSBuildThisFileDirectory)../static/</StaticLinkAvaloniaNativeRoot>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<_StaticLinkAvaloniaNativeRid Condition="'$(RuntimeIdentifier)' == 'osx-x64'">osx-x64</_StaticLinkAvaloniaNativeRid>
|
||||||
|
<_StaticLinkAvaloniaNativeRid Condition="'$(RuntimeIdentifier)' == 'osx-arm64'">osx-arm64</_StaticLinkAvaloniaNativeRid>
|
||||||
|
<_StaticLinkAvaloniaNativeRoot Condition="'$(_StaticLinkAvaloniaNativeRid)' != ''">$(StaticLinkAvaloniaNativeRoot)$(_StaticLinkAvaloniaNativeRid)/native</_StaticLinkAvaloniaNativeRoot>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup Condition="'$(PublishAot)' == 'true' and '$(_StaticLinkAvaloniaNativeRoot)' != ''">
|
||||||
|
<Compile Include="$(MSBuildThisFileDirectory)StaticLink.Avalonia.Native.MacOSFontWarmup.cs" Link="StaticLink.Avalonia.Native.MacOSFontWarmup.cs" Condition="Exists('$(MSBuildThisFileDirectory)StaticLink.Avalonia.Native.MacOSFontWarmup.cs')" />
|
||||||
|
<DirectPInvoke Include="libAvaloniaNative" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libAvaloniaNative.a')" />
|
||||||
|
<NativeLibrary Include="$(_StaticLinkAvaloniaNativeRoot)/macos_font_preinit.o" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/macos_font_preinit.o')" />
|
||||||
|
<NativeLibrary Include="$(_StaticLinkAvaloniaNativeRoot)/libAvaloniaNative.a" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libAvaloniaNative.a')" />
|
||||||
|
<NativeSystemLibrary Include="c++" />
|
||||||
|
<LinkerArg Include="-framework AppKit" />
|
||||||
|
<LinkerArg Include="-framework Carbon" />
|
||||||
|
<LinkerArg Include="-framework CoreFoundation" />
|
||||||
|
<LinkerArg Include="-framework CoreGraphics" />
|
||||||
|
<LinkerArg Include="-framework Foundation" />
|
||||||
|
<LinkerArg Include="-framework OpenGL" />
|
||||||
|
<LinkerArg Include="-framework QuartzCore" />
|
||||||
|
<LinkerArg Include="-framework UniformTypeIdentifiers" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="StaticLinkAvaloniaNativeAddMacOSDirectPInvokes"
|
||||||
|
BeforeTargets="WriteIlcRspFileForCompilation"
|
||||||
|
Condition="'$(PublishAot)' == 'true' and '$(_StaticLinkAvaloniaNativeRoot)' != ''">
|
||||||
|
<ItemGroup>
|
||||||
|
<DirectPInvoke Include="libAvaloniaNative" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libAvaloniaNative.a')" />
|
||||||
|
<DirectPInvoke Include="libAvaloniaNative.dylib" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libAvaloniaNative.a')" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="StaticLinkAvaloniaNativeCleanDynamicAssets"
|
||||||
|
AfterTargets="Publish"
|
||||||
|
Condition="'$(PublishAot)' == 'true' and '$(_StaticLinkAvaloniaNativeRoot)' != ''">
|
||||||
|
<ItemGroup>
|
||||||
|
<_StaticLinkAvaloniaNativeFilesToDelete Include="$(PublishDir)libAvaloniaNative.dylib" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Delete Files="@(_StaticLinkAvaloniaNativeFilesToDelete)" TreatErrorsAsWarnings="true" />
|
||||||
|
</Target>
|
||||||
|
</Project>
|
||||||
Whitespace-only changes.
@@ -21,6 +21,12 @@ Repository: <https://github.com/greepar/StaticLink.Avalonia>
|
|||||||
dotnet add package StaticLink.Avalonia
|
dotnet add package StaticLink.Avalonia
|
||||||
```
|
```
|
||||||
|
|
||||||
|
For fully static macOS output, also reference the AvaloniaNative package that matches your Avalonia version:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dotnet add package StaticLink.Avalonia.Native --version 11.3.14.1
|
||||||
|
```
|
||||||
|
|
||||||
## Publish
|
## Publish
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -56,6 +62,7 @@ For macOS, avoid the Metal renderer for fully static output. Use OpenGL or Softw
|
|||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
- The package is intended for Avalonia `11.3.x` NativeAOT apps.
|
- The package is intended for Avalonia `11.3.x` NativeAOT apps.
|
||||||
|
- `StaticLink.Avalonia.Native` is version-specific because `libAvaloniaNative.a` must match Avalonia's native ABI.
|
||||||
- The CI builds and smoke-publishes all six supported RIDs.
|
- The CI builds and smoke-publishes all six supported RIDs.
|
||||||
- macOS smoke tests run the published app on GitHub Actions and require it to stay alive for 15 seconds.
|
- macOS smoke tests run the published app on GitHub Actions and require it to stay alive for 15 seconds.
|
||||||
- Other native dependencies used by your app, such as SQLite or audio libraries, are outside this package's scope.
|
- Other native dependencies used by your app, such as SQLite or audio libraries, are outside this package's scope.
|
||||||
@@ -27,12 +27,11 @@
|
|||||||
<None Include="lib/net10.0/_._" Pack="true" PackagePath="lib/net10.0/_._" />
|
<None Include="lib/net10.0/_._" Pack="true" PackagePath="lib/net10.0/_._" />
|
||||||
<None Include="buildTransitive/StaticLink.Avalonia.props" Pack="true" PackagePath="buildTransitive/$(PackageId).props" />
|
<None Include="buildTransitive/StaticLink.Avalonia.props" Pack="true" PackagePath="buildTransitive/$(PackageId).props" />
|
||||||
<None Include="buildTransitive/StaticLink.Avalonia.targets" Pack="true" PackagePath="buildTransitive/$(PackageId).targets" />
|
<None Include="buildTransitive/StaticLink.Avalonia.targets" Pack="true" PackagePath="buildTransitive/$(PackageId).targets" />
|
||||||
<None Include="buildTransitive/StaticLink.Avalonia.MacOSFontWarmup.cs" Pack="true" PackagePath="buildTransitive/StaticLink.Avalonia.MacOSFontWarmup.cs" />
|
|
||||||
<None Include="../../External/NativeStatic/win-x64/native/**/*" Pack="true" PackagePath="static/win-x64/native/%(RecursiveDir)%(Filename)%(Extension)" />
|
<None Include="../../External/NativeStatic/win-x64/native/**/*" Pack="true" PackagePath="static/win-x64/native/%(RecursiveDir)%(Filename)%(Extension)" />
|
||||||
<None Include="../../External/NativeStatic/win-arm64/native/**/*" Pack="true" PackagePath="static/win-arm64/native/%(RecursiveDir)%(Filename)%(Extension)" />
|
<None Include="../../External/NativeStatic/win-arm64/native/**/*" Pack="true" PackagePath="static/win-arm64/native/%(RecursiveDir)%(Filename)%(Extension)" />
|
||||||
<None Include="../../External/NativeStatic/linux-x64/native/**/*" Pack="true" PackagePath="static/linux-x64/native/%(RecursiveDir)%(Filename)%(Extension)" />
|
<None Include="../../External/NativeStatic/linux-x64/native/**/*" Pack="true" PackagePath="static/linux-x64/native/%(RecursiveDir)%(Filename)%(Extension)" />
|
||||||
<None Include="../../External/NativeStatic/linux-arm64/native/**/*" Pack="true" PackagePath="static/linux-arm64/native/%(RecursiveDir)%(Filename)%(Extension)" />
|
<None Include="../../External/NativeStatic/linux-arm64/native/**/*" Pack="true" PackagePath="static/linux-arm64/native/%(RecursiveDir)%(Filename)%(Extension)" />
|
||||||
<None Include="../../External/NativeStatic/osx-x64/native/**/*" Pack="true" PackagePath="static/osx-x64/native/%(RecursiveDir)%(Filename)%(Extension)" />
|
<None Include="../../External/NativeStatic/osx-x64/native/**/*" Exclude="../../External/NativeStatic/osx-x64/native/libAvaloniaNative.a;../../External/NativeStatic/osx-x64/native/macos_font_preinit.o" Pack="true" PackagePath="static/osx-x64/native/%(RecursiveDir)%(Filename)%(Extension)" />
|
||||||
<None Include="../../External/NativeStatic/osx-arm64/native/**/*" Pack="true" PackagePath="static/osx-arm64/native/%(RecursiveDir)%(Filename)%(Extension)" />
|
<None Include="../../External/NativeStatic/osx-arm64/native/**/*" Exclude="../../External/NativeStatic/osx-arm64/native/libAvaloniaNative.a;../../External/NativeStatic/osx-arm64/native/macos_font_preinit.o" Pack="true" PackagePath="static/osx-arm64/native/%(RecursiveDir)%(Filename)%(Extension)" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -49,12 +49,8 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup Condition="'$(PublishAot)' == 'true' and ('$(RuntimeIdentifier)' == 'osx-x64' or '$(RuntimeIdentifier)' == 'osx-arm64') and '$(_StaticLinkAvaloniaNativeRoot)' != ''">
|
<ItemGroup Condition="'$(PublishAot)' == 'true' and ('$(RuntimeIdentifier)' == 'osx-x64' or '$(RuntimeIdentifier)' == 'osx-arm64') and '$(_StaticLinkAvaloniaNativeRoot)' != ''">
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)StaticLink.Avalonia.MacOSFontWarmup.cs" Link="StaticLink.Avalonia.MacOSFontWarmup.cs" Condition="Exists('$(MSBuildThisFileDirectory)StaticLink.Avalonia.MacOSFontWarmup.cs')" />
|
|
||||||
<DirectPInvoke Include="libAvaloniaNative" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libAvaloniaNative.a')" />
|
|
||||||
<DirectPInvoke Include="libHarfBuzzSharp" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libHarfBuzzSharp.a')" />
|
<DirectPInvoke Include="libHarfBuzzSharp" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libHarfBuzzSharp.a')" />
|
||||||
<DirectPInvoke Include="libSkiaSharp" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libSkiaSharp.a')" />
|
<DirectPInvoke Include="libSkiaSharp" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libSkiaSharp.a')" />
|
||||||
<NativeLibrary Include="$(_StaticLinkAvaloniaNativeRoot)/macos_font_preinit.o" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/macos_font_preinit.o')" />
|
|
||||||
<NativeLibrary Include="$(_StaticLinkAvaloniaNativeRoot)/libAvaloniaNative.a" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libAvaloniaNative.a')" />
|
|
||||||
<NativeLibrary Include="$(_StaticLinkAvaloniaNativeRoot)/libHarfBuzzSharp.a" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libHarfBuzzSharp.a')" />
|
<NativeLibrary Include="$(_StaticLinkAvaloniaNativeRoot)/libHarfBuzzSharp.a" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libHarfBuzzSharp.a')" />
|
||||||
<NativeLibrary Include="$(_StaticLinkAvaloniaNativeRoot)/libskia.a" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libskia.a')" />
|
<NativeLibrary Include="$(_StaticLinkAvaloniaNativeRoot)/libskia.a" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libskia.a')" />
|
||||||
<NativeLibrary Include="$(_StaticLinkAvaloniaNativeRoot)/libSkiaSharp.a" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libSkiaSharp.a')" />
|
<NativeLibrary Include="$(_StaticLinkAvaloniaNativeRoot)/libSkiaSharp.a" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libSkiaSharp.a')" />
|
||||||
@@ -96,8 +92,6 @@
|
|||||||
BeforeTargets="WriteIlcRspFileForCompilation"
|
BeforeTargets="WriteIlcRspFileForCompilation"
|
||||||
Condition="'$(PublishAot)' == 'true' and ('$(RuntimeIdentifier)' == 'osx-x64' or '$(RuntimeIdentifier)' == 'osx-arm64') and '$(_StaticLinkAvaloniaNativeRoot)' != ''">
|
Condition="'$(PublishAot)' == 'true' and ('$(RuntimeIdentifier)' == 'osx-x64' or '$(RuntimeIdentifier)' == 'osx-arm64') and '$(_StaticLinkAvaloniaNativeRoot)' != ''">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<DirectPInvoke Include="libAvaloniaNative" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libAvaloniaNative.a')" />
|
|
||||||
<DirectPInvoke Include="libAvaloniaNative.dylib" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libAvaloniaNative.a')" />
|
|
||||||
<DirectPInvoke Include="libHarfBuzzSharp" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libHarfBuzzSharp.a')" />
|
<DirectPInvoke Include="libHarfBuzzSharp" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libHarfBuzzSharp.a')" />
|
||||||
<DirectPInvoke Include="libHarfBuzzSharp.dylib" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libHarfBuzzSharp.a')" />
|
<DirectPInvoke Include="libHarfBuzzSharp.dylib" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libHarfBuzzSharp.a')" />
|
||||||
<DirectPInvoke Include="libSkiaSharp" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libSkiaSharp.a')" />
|
<DirectPInvoke Include="libSkiaSharp" Condition="Exists('$(_StaticLinkAvaloniaNativeRoot)/libSkiaSharp.a')" />
|
||||||
@@ -118,7 +112,6 @@
|
|||||||
<_StaticLinkAvaloniaFilesToDelete Include="$(PublishDir)libSkiaSharp.so" />
|
<_StaticLinkAvaloniaFilesToDelete Include="$(PublishDir)libSkiaSharp.so" />
|
||||||
<_StaticLinkAvaloniaFilesToDelete Include="$(PublishDir)libHarfBuzzSharp.dylib" />
|
<_StaticLinkAvaloniaFilesToDelete Include="$(PublishDir)libHarfBuzzSharp.dylib" />
|
||||||
<_StaticLinkAvaloniaFilesToDelete Include="$(PublishDir)libSkiaSharp.dylib" />
|
<_StaticLinkAvaloniaFilesToDelete Include="$(PublishDir)libSkiaSharp.dylib" />
|
||||||
<_StaticLinkAvaloniaFilesToDelete Include="$(PublishDir)libAvaloniaNative.dylib" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Delete Files="@(_StaticLinkAvaloniaFilesToDelete)" TreatErrorsAsWarnings="true" />
|
<Delete Files="@(_StaticLinkAvaloniaFilesToDelete)" TreatErrorsAsWarnings="true" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|||||||
@@ -21,6 +21,12 @@ Repository: <https://github.com/greepar/StaticLink.Avalonia>
|
|||||||
dotnet add package StaticLink.Avalonia
|
dotnet add package StaticLink.Avalonia
|
||||||
```
|
```
|
||||||
|
|
||||||
|
For fully static macOS output, also reference the AvaloniaNative package that matches your Avalonia version:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dotnet add package StaticLink.Avalonia.Native --version 11.3.14.1
|
||||||
|
```
|
||||||
|
|
||||||
## Publish
|
## Publish
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -56,6 +62,7 @@ For macOS, avoid the Metal renderer for fully static output. Use OpenGL or Softw
|
|||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
- The package is intended for Avalonia `11.3.x` NativeAOT apps.
|
- The package is intended for Avalonia `11.3.x` NativeAOT apps.
|
||||||
|
- `StaticLink.Avalonia.Native` is version-specific because `libAvaloniaNative.a` must match Avalonia's native ABI.
|
||||||
- The CI builds and smoke-publishes all six supported RIDs.
|
- The CI builds and smoke-publishes all six supported RIDs.
|
||||||
- macOS smoke tests run the published app on GitHub Actions and require it to stay alive for 15 seconds.
|
- macOS smoke tests run the published app on GitHub Actions and require it to stay alive for 15 seconds.
|
||||||
- Other native dependencies used by your app, such as SQLite or audio libraries, are outside this package's scope.
|
- Other native dependencies used by your app, such as SQLite or audio libraries, are outside this package's scope.
|
||||||
@@ -6,13 +6,22 @@ param(
|
|||||||
[string]$NuGetSource,
|
[string]$NuGetSource,
|
||||||
|
|
||||||
[Parameter(Mandatory = $true)]
|
[Parameter(Mandatory = $true)]
|
||||||
[string]$StaticLinkVersion
|
[string]$StaticLinkVersion,
|
||||||
|
|
||||||
|
[string]$AvaloniaVersion = "11.3.14",
|
||||||
|
|
||||||
|
[string]$StaticLinkNativeVersion = ""
|
||||||
)
|
)
|
||||||
|
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
New-Item -ItemType Directory -Path $ProjectDir -Force | Out-Null
|
New-Item -ItemType Directory -Path $ProjectDir -Force | Out-Null
|
||||||
|
|
||||||
|
$nativeReference = ""
|
||||||
|
if ($StaticLinkNativeVersion) {
|
||||||
|
$nativeReference = "`n <PackageReference Include=`"StaticLink.Avalonia.Native`" Version=`"$StaticLinkNativeVersion`" />"
|
||||||
|
}
|
||||||
|
|
||||||
@"
|
@"
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
@@ -41,10 +50,10 @@ New-Item -ItemType Directory -Path $ProjectDir -Force | Out-Null
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Avalonia" Version="11.3.14" />
|
<PackageReference Include="Avalonia" Version="$AvaloniaVersion" />
|
||||||
<PackageReference Include="Avalonia.Desktop" Version="11.3.14" />
|
<PackageReference Include="Avalonia.Desktop" Version="$AvaloniaVersion" />
|
||||||
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.3.14" />
|
<PackageReference Include="Avalonia.Themes.Fluent" Version="$AvaloniaVersion" />
|
||||||
<PackageReference Include="StaticLink.Avalonia" Version="$StaticLinkVersion" />
|
<PackageReference Include="StaticLink.Avalonia" Version="$StaticLinkVersion" />$nativeReference
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
"@ | Set-Content -Path (Join-Path $ProjectDir "AvaloniaStaticLinkSmoke.csproj") -Encoding UTF8
|
"@ | Set-Content -Path (Join-Path $ProjectDir "AvaloniaStaticLinkSmoke.csproj") -Encoding UTF8
|
||||||
@@ -137,7 +146,7 @@ public sealed partial class MainWindow : Window
|
|||||||
Title="Avalonia StaticLink Smoke">
|
Title="Avalonia StaticLink Smoke">
|
||||||
<Border Padding="24">
|
<Border Padding="24">
|
||||||
<StackPanel Spacing="8" HorizontalAlignment="Center" VerticalAlignment="Center">
|
<StackPanel Spacing="8" HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||||
<TextBlock Text="Avalonia 11.3.14" FontSize="24" FontWeight="SemiBold" HorizontalAlignment="Center" />
|
<TextBlock Text="Avalonia $AvaloniaVersion" FontSize="24" FontWeight="SemiBold" HorizontalAlignment="Center" />
|
||||||
<TextBlock Text="StaticLink NativeAOT smoke publish" HorizontalAlignment="Center" />
|
<TextBlock Text="StaticLink NativeAOT smoke publish" HorizontalAlignment="Center" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
|
|||||||
Reference in new issue
Block a user