Remove AOT wasm
This commit is contained in:
parent
881330e49e
commit
9482b65b86
|
@ -1,66 +0,0 @@
|
||||||
FROM alpine:3.7
|
|
||||||
|
|
||||||
RUN apk update \
|
|
||||||
&& apk upgrade \
|
|
||||||
&& apk add --no-cache g++ musl-dev make cmake git subversion python
|
|
||||||
|
|
||||||
RUN mkdir /mono-wasm \
|
|
||||||
&& cd /mono-wasm \
|
|
||||||
&& git clone --depth 1 https://github.com/lrz/mono-wasm.git build
|
|
||||||
|
|
||||||
# RUN cd /mono-wasm \
|
|
||||||
# && svn co --quiet http://llvm.org/svn/llvm-project/llvm/trunk llvm \
|
|
||||||
# && cd llvm/tools \
|
|
||||||
# && svn co --quiet http://llvm.org/svn/llvm-project/cfe/trunk clang \
|
|
||||||
# && svn co --quiet http://llvm.org/svn/llvm-project/lld/trunk lld
|
|
||||||
|
|
||||||
RUN cd /mono-wasm \
|
|
||||||
&& wget http://releases.llvm.org/5.0.1/llvm-5.0.1.src.tar.xz \
|
|
||||||
&& unxz llvm-5.0.1.src.tar.xz \
|
|
||||||
&& tar xf llvm-5.0.1.src.tar \
|
|
||||||
&& rm llvm-5.0.1.src.tar \
|
|
||||||
&& mv llvm-5.0.1.src llvm \
|
|
||||||
&& cd llvm/tools \
|
|
||||||
&& wget http://releases.llvm.org/5.0.1/cfe-5.0.1.src.tar.xz \
|
|
||||||
&& unxz cfe-5.0.1.src.tar.xz \
|
|
||||||
&& tar xf cfe-5.0.1.src.tar \
|
|
||||||
&& rm cfe-5.0.1.src.tar \
|
|
||||||
&& mv cfe-5.0.1.src clang \
|
|
||||||
&& wget http://releases.llvm.org/5.0.1/lld-5.0.1.src.tar.xz \
|
|
||||||
&& unxz lld-5.0.1.src.tar.xz \
|
|
||||||
&& tar xf lld-5.0.1.src.tar \
|
|
||||||
&& rm lld-5.0.1.src.tar \
|
|
||||||
&& mv lld-5.0.1.src lld
|
|
||||||
|
|
||||||
RUN mkdir /mono-wasm/llvm-build \
|
|
||||||
&& cd /mono-wasm/llvm-build \
|
|
||||||
&& cmake -G "Unix Makefiles" -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly -DCMAKE_BUILD_TYPE=Release ../llvm \
|
|
||||||
&& make -j7
|
|
||||||
|
|
||||||
RUN cd /mono-wasm \
|
|
||||||
&& git clone --depth 1 https://github.com/mono/llvm.git llvm-mono
|
|
||||||
|
|
||||||
ENV CXXFLAGS="-fpermissive"
|
|
||||||
|
|
||||||
RUN mkdir /mono-wasm/llvm-mono-build \
|
|
||||||
&& cd /mono-wasm/llvm-mono-build \
|
|
||||||
&& cmake -G "Unix Makefiles" -DCMAKE_OSX_ARCHITECTURES="i386;x86_64" -DLLVM_TARGETS_TO_BUILD=X86 ../llvm-mono \
|
|
||||||
&& cp -R ../llvm-mono/include/* include/ \
|
|
||||||
&& sed -i "s/#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)/#if 0/" /usr/include/stdio.h \
|
|
||||||
&& sed -i "s/#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)/#if 0/" /usr/include/sys/stat.h \
|
|
||||||
# && sed -i "s/namespace llvm/#undef fopen\n#undef fopen64\n#undef fseeko\n#undef fseeko64\n#undef fstat\n#undef fstat64\n#undef ftello\n#undef ftello64\n#undef lstat\n#undef lstat64\n#undef stat\n#undef stat64\n#undef tmpfile\n#undef tmpfile64\n\nnamespace llvm/" /mono-wasm/llvm-mono-build/include/llvm/Target/TargetLibraryInfo.h
|
|
||||||
&& make -j7
|
|
||||||
|
|
||||||
ENV CXXFLAGS=""
|
|
||||||
|
|
||||||
RUN cd /mono-wasm \
|
|
||||||
&& git clone --depth 1 https://github.com/lrz/mono-wasm-mono.git mono-compiler
|
|
||||||
|
|
||||||
RUN apk add --no-cache bash autoconf automake libtool linux-headers \
|
|
||||||
&& cd /mono-wasm/mono-compiler \
|
|
||||||
&& ./autogen.sh --with-cross-offsets=offsets-wasm32.h CFLAGS="-DCOMPILE_WASM32 -DMONO_CROSS_COMPILE" CXXFLAGS="-DCOMPILE_WASM32 -DMONO_CROSS_COMPILE" --disable-boehm --with-sigaltstack=no --enable-llvm --enable-llvm-runtime --with-llvm=../llvm-mono-build --disable-btls --with-runtime_preset=testing_aot_full
|
|
||||||
|
|
||||||
# RUN cd /mono-wasm/mono-compiler/eglib \
|
|
||||||
# && make -j7 \
|
|
||||||
# && cd ../mono \
|
|
||||||
# && make -j7
|
|
|
@ -1,18 +0,0 @@
|
||||||
OOUI_SRCS=$(wildcard ../Ooui/*.cs)
|
|
||||||
|
|
||||||
all: hello.exe output/index.wasm output/index.html
|
|
||||||
|
|
||||||
hello.exe: hello.cs Ooui.dll Makefile
|
|
||||||
mcs -nostdlib -noconfig -r:mono-wasm-macos/dist/lib/mscorlib.dll -r:Ooui.dll hello.cs -out:hello.exe
|
|
||||||
|
|
||||||
Ooui.dll: $(OOUI_SRCS) System.Core.cs Makefile
|
|
||||||
mcs -nostdlib -noconfig -r:mono-wasm-macos/dist/lib/mscorlib.dll -define:NO_PROCESS,NO_SERVER,NO_XML System.Core.cs $(OOUI_SRCS) -out:Ooui.dll
|
|
||||||
|
|
||||||
output/index.wasm: hello.exe Makefile
|
|
||||||
mono-wasm-macos/dist/bin/mono-wasm -i hello.exe -o output
|
|
||||||
|
|
||||||
output/index.html: index.html
|
|
||||||
cp index.html output
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -rf build output hello.exe
|
|
|
@ -1,16 +0,0 @@
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace System.ComponentModel
|
|
||||||
{
|
|
||||||
public interface INotifyPropertyChanged
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class PropertyChangedEventArgs : EventArgs
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public delegate void PropertyChangedEventHandler (object sender, PropertyChangedEventArgs e);
|
|
||||||
}
|
|
|
@ -1,77 +0,0 @@
|
||||||
using Mono.WebAssembly;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
class Hello
|
|
||||||
{
|
|
||||||
static int Factorial(int n)
|
|
||||||
{
|
|
||||||
if (n == 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return n * Factorial(n - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// This function is called from the browser by JavaScript.
|
|
||||||
// Here we calculate the factorial of the given number then use the
|
|
||||||
// Mono.WebAssembly API to retrieve the element from the DOM and set its
|
|
||||||
// innerText property to the factorial result.
|
|
||||||
static void FactorialInElement(int n, string element_id)
|
|
||||||
{
|
|
||||||
Console.WriteLine(
|
|
||||||
"Calculating factorial of {0} into DOM element {1}",
|
|
||||||
n, element_id);
|
|
||||||
|
|
||||||
int f = Factorial(n);
|
|
||||||
|
|
||||||
var elem = HtmlPage.Document.GetElementById(element_id);
|
|
||||||
elem.InnerText = f.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void PrintHtmlElements(HtmlElement elem, int level)
|
|
||||||
{
|
|
||||||
string str = "";
|
|
||||||
for (int i = 0; i < level; i++) {
|
|
||||||
str += " ";
|
|
||||||
}
|
|
||||||
|
|
||||||
str += $"<{elem.TagName}";
|
|
||||||
|
|
||||||
foreach (var name in elem.AttributeNames) {
|
|
||||||
var value = elem.GetAttribute(name);
|
|
||||||
str += $" {name}='{value}'";
|
|
||||||
}
|
|
||||||
|
|
||||||
str += ">";
|
|
||||||
|
|
||||||
Console.WriteLine(str);
|
|
||||||
|
|
||||||
var list = elem.Children;
|
|
||||||
for (int i = 0; i < list.Count; i++) {
|
|
||||||
var child = list[i];
|
|
||||||
PrintHtmlElements(child, level + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int Main(string[] args)
|
|
||||||
{
|
|
||||||
Ooui.Div odiv = new Ooui.Div ();
|
|
||||||
int f = Factorial(6);
|
|
||||||
HtmlPage.Window.Alert($"Hello world! factorial(6) -> {odiv}");
|
|
||||||
|
|
||||||
var bi = HtmlPage.BrowserInformation;
|
|
||||||
Console.WriteLine($"BrowserInformation: Name {bi.Name} BrowserVersion {bi.BrowserVersion} UserAgent {bi.UserAgent} Platform {bi.Platform} CookiesEnabled {bi.CookiesEnabled} ProductName {bi.ProductName}");
|
|
||||||
|
|
||||||
var d = HtmlPage.Document;
|
|
||||||
Console.WriteLine($"Document Location: {d.Location}");
|
|
||||||
|
|
||||||
PrintHtmlElements(d.DocumentElement, 0);
|
|
||||||
|
|
||||||
var p = d.CreateElement("p");
|
|
||||||
p.InnerText = "This text was added at runtime.";
|
|
||||||
d.Body.AppendChild(p);
|
|
||||||
|
|
||||||
if (args.Length > 0) FactorialInElement(0, ""); // this is a hack so that the linker does not remove the FactorialInElement() method
|
|
||||||
|
|
||||||
return f;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,44 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<title>WebAssembly Example</title>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<link rel="stylesheet" href="styles.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p>
|
|
||||||
<form name="factorial_form" onSubmit="return factorial_submit()">
|
|
||||||
Number: <input type="text" name="input" value="6"/>
|
|
||||||
<br/><br/>
|
|
||||||
Result: <span id="factorial_result">...</span>
|
|
||||||
<br/><br/>
|
|
||||||
<input name="Submit" type="submit" value="Calculate"/>
|
|
||||||
</form>
|
|
||||||
</p>
|
|
||||||
<script src="index.js"></script>
|
|
||||||
<script>
|
|
||||||
function factorial_submit() {
|
|
||||||
// This function is called by the form. We now call into the
|
|
||||||
// Hello.FactorialInElement() C# method, passing the input (a number)
|
|
||||||
// and the element ID which should be set with the result (here, the
|
|
||||||
// <span> element defined above.
|
|
||||||
var input = document.forms["factorial_form"]["input"].value;
|
|
||||||
var klass = MonoClass("", "Hello");
|
|
||||||
if (klass) {
|
|
||||||
var method = MonoMethod(klass, "FactorialInElement", true);
|
|
||||||
if (method) {
|
|
||||||
MonoInvoke(0, method, [parseInt(input), "factorial_result"]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener('WebAssemblyContentLoaded', function() {
|
|
||||||
// Calculate the initial form value.
|
|
||||||
factorial_submit();
|
|
||||||
}, false);
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
Loading…
Reference in New Issue