Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 26 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -139,10 +139,35 @@ jobs:
variant: ${{ matrix.variant }}
target-os: macos
#
# iOS
ios:
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
include:
- architecture: arm64
variant: shared
target-os: ios
- architecture: arm64
variant: shared
target-os: iossimulator
- architecture: x64
variant: shared
target-os: iossimulator
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/build-skia
with:
use-cache: ${{ inputs.use-skia-cache }}
architecture: ${{ matrix.architecture }}
variant: ${{ matrix.variant }}
target-os: ${{ matrix.target-os }}
#
# Libraries
dotnet:
runs-on: windows-latest
needs: [windows, linux, android, macos]
needs: [windows, linux, android, macos, ios]
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
Expand Down
2 changes: 0 additions & 2 deletions build/Build.MacOs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,5 @@ void SetClangMacOs(Dictionary<string, string> gnArgs)
gnArgs["cc"] = "clang";
gnArgs["cxx"] = "'clang++'";
AppendToFlagList(gnArgs, "extra_ldflags", "'-stdlib=libc++'");

// gnArgs["ar"] = "llvm-ar";
}
}
44 changes: 35 additions & 9 deletions build/Build.Native.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,22 @@
public class TargetOperatingSystem : Enumeration
{
public static TargetOperatingSystem Windows = new()
{ Value = "windows", SkiaTargetOs = "win", RuntimeIdentifier = "win" };
{ Value = "windows", SkiaTargetOs = "win", RuntimeIdentifier = "win" };

public static TargetOperatingSystem Linux = new()
{ Value = "linux", SkiaTargetOs = "linux", RuntimeIdentifier = "linux" };
{ Value = "linux", SkiaTargetOs = "linux", RuntimeIdentifier = "linux" };

public static TargetOperatingSystem Android = new()
{ Value = "android", SkiaTargetOs = "android", RuntimeIdentifier = "android" };
{ Value = "android", SkiaTargetOs = "android", RuntimeIdentifier = "android" };

public static TargetOperatingSystem MacOs = new()
{ Value = "macos", SkiaTargetOs = "mac", RuntimeIdentifier = "macos" };
{ Value = "macos", SkiaTargetOs = "mac", RuntimeIdentifier = "macos" };

public static TargetOperatingSystem iOS = new()
{ Value = "ios", SkiaTargetOs = "ios", RuntimeIdentifier = "ios" };

public static TargetOperatingSystem iOSSimulator = new()
{ Value = "ios", SkiaTargetOs = "ios", RuntimeIdentifier = "iossimulator" };

public string SkiaTargetOs { get; private set; }
public string RuntimeIdentifier { get; private set; }
Expand All @@ -33,10 +39,26 @@ public class TargetOperatingSystem : Enumeration
[TypeConverter(typeof(TypeConverter<Architecture>))]
public class Architecture : Enumeration
{
public static Architecture X64 = new() { Value = "x64", LinuxArch = "amd64", LinuxCrossToolchain = "", LinuxCrossTargetArch = ""};
public static Architecture X86 = new() { Value = "x86", LinuxArch = "i386", LinuxCrossToolchain = "i686-linux-gnu", LinuxCrossTargetArch = "i686-linux-gnu"};
public static Architecture Arm = new() { Value = "arm", LinuxArch = "armhf", LinuxCrossToolchain = "arm-linux-gnueabihf", LinuxCrossTargetArch = "armv7a-linux-gnueabihf"};
public static Architecture Arm64 = new() { Value = "arm64", LinuxArch = "arm64", LinuxCrossToolchain = "aarch64-linux-gnu", LinuxCrossTargetArch = "aarch64-linux-gnu"};
public static Architecture X64 = new()
{ Value = "x64", LinuxArch = "amd64", LinuxCrossToolchain = "", LinuxCrossTargetArch = "" };

public static Architecture X86 = new()
{
Value = "x86", LinuxArch = "i386", LinuxCrossToolchain = "i686-linux-gnu",
LinuxCrossTargetArch = "i686-linux-gnu"
};

public static Architecture Arm = new()
{
Value = "arm", LinuxArch = "armhf", LinuxCrossToolchain = "arm-linux-gnueabihf",
LinuxCrossTargetArch = "armv7a-linux-gnueabihf"
};

public static Architecture Arm64 = new()
{
Value = "arm64", LinuxArch = "arm64", LinuxCrossToolchain = "aarch64-linux-gnu",
LinuxCrossTargetArch = "aarch64-linux-gnu"
};

public string LinuxArch { get; private set; }
public string LinuxCrossToolchain { get; private set; }
Expand Down Expand Up @@ -178,6 +200,10 @@ partial class Build
{
BuildLibAlphaSkiaMacOs();
}
else if (TargetOs == TargetOperatingSystem.iOS || TargetOs == TargetOperatingSystem.iOSSimulator)
{
BuildLibAlphaSkiaiOS();
}
});

public Target LibAlphaSkiaJni => _ => _
Expand All @@ -192,7 +218,7 @@ partial class Build
{
InstallDependenciesLinux();
}

if (TargetOs == TargetOperatingSystem.Windows)
{
BuildLibAlphaSkiaJniWindows();
Expand Down
43 changes: 43 additions & 0 deletions build/Build.iOS.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
using System.Collections.Generic;

partial class Build
{
void BuildLibAlphaSkiaiOS()
{
var gnArgs = new Dictionary<string, string>();

if (TargetOs == TargetOperatingSystem.iOSSimulator)
{
gnArgs["ios_use_simulator"] = "true";
}

string[] filesToCopy;
var isShared = Variant == Variant.Shared;
if (isShared)
{
filesToCopy = new[]
{
"libAlphaSkia.dylib"
};
}
else
{
filesToCopy = new[]
{
"libAlphaSkia.a",
"libskia.a"
};
}

BuildSkiaiOS("libAlphaSkia", gnArgs, filesToCopy);
}

void BuildSkiaiOS(string buildTarget, Dictionary<string, string> gnArgs,
string[] filesToCopy)
{
gnArgs["skia_use_system_freetype2"] = "false";
gnArgs["skia_use_metal"] = "true";

BuildSkia(buildTarget, gnArgs, filesToCopy);
}
}
16 changes: 16 additions & 0 deletions lib/dotnet/AlphaSkia.Native.iOS/AlphaSkia.Native.iOS.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<IsPackable>true</IsPackable>
<IncludeBuildOutput>false</IncludeBuildOutput>
<TargetFramework>netstandard2.0</TargetFramework>
<PackageReadmeFile>README.md</PackageReadmeFile>
<NoWarn>$(NoWarn);NU5128</NoWarn>
</PropertyGroup>

<ItemGroup>
<None Include="../../../dist/libAlphaSkia-ios-arm64-shared/libAlphaSkia.dylib" Pack="True" PackagePath="runtimes/ios-arm64/native" Condition=" Exists('../../../dist/libAlphaSkia-ios-arm64-shared/libAlphaSkia.dylib') " />
<None Include="../../../dist/libAlphaSkia-iossimulator-arm64-shared/libAlphaSkia.dylib" Pack="True" PackagePath="runtimes/iossimulator-arm64/native" Condition=" Exists('../../../dist/libAlphaSkia-iossimulator-arm64-shared/libAlphaSkia.dylib') " />
<None Include="../../../dist/libAlphaSkia-iossimulator-x64-shared/libAlphaSkia.dylib" Pack="True" PackagePath="runtimes/iossimulator-x64/native" Condition=" Exists('../../../dist/libAlphaSkia-iossimulator-x64-shared/libAlphaSkia.dylib') " />
<None Update="README.md" Pack="true" PackagePath="/" />
</ItemGroup>
</Project>
6 changes: 6 additions & 0 deletions lib/dotnet/AlphaSkia.Native.iOS/Marker.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace AlphaSkia.Native.iOS
{
internal class Marker
{
}
}
3 changes: 3 additions & 0 deletions lib/dotnet/AlphaSkia.Native.iOS/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# AlphaSkia iOS Runtime Dependencies

This package contains the AlphaSkia runtime dependencies for iOS
6 changes: 6 additions & 0 deletions lib/dotnet/AlphaSkia.sln
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AlphaSkia.Native.Android",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AlphaSkia.Native.MacOs", "AlphaSkia.Native.MacOs\AlphaSkia.Native.MacOs.csproj", "{6727C66F-7AD0-4E81-BDDE-E9422B0601A5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AlphaSkia.Native.iOS", "AlphaSkia.Native.iOS\AlphaSkia.Native.iOS.csproj", "{E20172D9-D9E5-495B-91CC-B21B36BA3BF4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -44,6 +46,10 @@ Global
{6727C66F-7AD0-4E81-BDDE-E9422B0601A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6727C66F-7AD0-4E81-BDDE-E9422B0601A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6727C66F-7AD0-4E81-BDDE-E9422B0601A5}.Release|Any CPU.Build.0 = Release|Any CPU
{E20172D9-D9E5-495B-91CC-B21B36BA3BF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E20172D9-D9E5-495B-91CC-B21B36BA3BF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E20172D9-D9E5-495B-91CC-B21B36BA3BF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E20172D9-D9E5-495B-91CC-B21B36BA3BF4}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{3693A53C-386E-4DBC-9B5E-9C3B7723FBE0} = {20757D78-DE4E-450B-97CC-24F926593193}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package alphaskia;
package net.alphatab.alphaskia;

public class AlphaSkiaMacOs {
public static final String[] libraries = {
Expand Down