Browse Source

Emscripten interop sample

pull/9028/head
Gillibald 4 years ago
parent
commit
0415da9d29
  1. 2
      src/Web/Avalonia.Web.Sample/Program.cs
  2. 1
      src/Web/Avalonia.Web/Avalonia.Web.targets
  3. 31
      src/Web/Avalonia.Web/Interop/Emscripten.cs
  4. 9
      src/Web/Avalonia.Web/Interop/libEmscripten.c

2
src/Web/Avalonia.Web.Sample/Program.cs

@ -6,6 +6,8 @@ internal partial class Program
{
private static void Main(string[] args)
{
Emscripten.Log(EM_LOG.ERROR, "MyError");
BuildAvaloniaApp().SetupBrowserApp("out");
}

1
src/Web/Avalonia.Web/Avalonia.Web.targets

@ -1,5 +1,6 @@
<Project>
<ItemGroup>
<NativeFileReference Include="$(MSBuildThisFileDirectory)/Interop/libEmscripten.c" />
<WasmExtraFilesToDeploy Include="$(MSBuildThisFileDirectory)/wwwroot/**/*.*" />
<NativeFileReference Include="$(HarfBuzzSharpStaticLibraryPath)\3.1.7\libHarfBuzzSharp.a" />
<NativeFileReference Include="$(SkiaSharpStaticLibraryPath)\3.1.7\libSkiaSharp.a" />

31
src/Web/Avalonia.Web/Interop/Emscripten.cs

@ -0,0 +1,31 @@
using System;
using System.Runtime.InteropServices;
namespace Avalonia.Web
{
public static partial class Emscripten
{
const string Prefix = "av_";
const string Library = "libEmscripten";
[LibraryImport(Library, EntryPoint = Prefix + "log", StringMarshalling = StringMarshalling.Utf8)]
public static partial void Log(EM_LOG flags, string format);
[LibraryImport(Library, EntryPoint = Prefix + "debugger")]
public static partial void Debugger();
}
[Flags]
public enum EM_LOG : int
{
CONSOLE = 1,
WARN = 2,
ERROR = 4,
C_STACK = 8,
JS_STACK = 16,
NO_PATHS = 64,
FUNC_PARAMS = 128,
DEBUG = 256,
INFO = 512,
}
}

9
src/Web/Avalonia.Web/Interop/libEmscripten.c

@ -0,0 +1,9 @@
#include <emscripten.h>
void av_log(int flags, const char* format) {
emscripten_log(flags, format);
}
void av_debugger() {
emscripten_debugger();
}
Loading…
Cancel
Save