1 TOP
=$(realpath
$(CURDIR
)/..
/..
)
2 -include $(TOP
)/sdks
/Make.config
3 -include $(TOP
)/mcs
/build
/config.make
4 include $(TOP
)/sdks
/versions.mk
5 include $(TOP
)/sdks
/paths.mk
9 MAKEFLAGS
+= --no-builtin-rules
10 #emcc has lots of bash'isms
13 #Use either 'release' or 'debug' dependending on what you need
16 CSC_LOCATION?
=$(STANDALONE_CSC_LOCATION
)
18 EMSCRIPTEN_SDK_DIR?
=$(TOP
)/sdks
/builds
/toolchains
/emsdk
19 EMCC
=source
$(CURDIR
)/emsdk_env.sh
&& emcc
20 EMCC_DYNAMIC
=EMCC_FORCE_STDLIBS
=1 $(EMCC
)
21 WASM_BCL_DIR
=$(TOP
)/sdks
/out
/wasm-bcl
/wasm
22 WASM_RUNTIME_DIR
=$(TOP
)/sdks
/out
/wasm-runtime-release
23 MINI_PATH
=$(TOP
)/mono
/mini
24 CSC?
= MONO_PATH
=$(TOP
)/mcs
/class
/lib
/build
$(TOP
)/sdks
/builds
/bcl
/runtime
/mono-wrapper
$(CSC_LOCATION
)
25 CSC_FLAGS
:= /debug
:portable
/noconfig
/nostdlib
/nologo
/langversion
:latest
26 API_REFS
=$(TOP
)/external
/binary-reference-assemblies
/v4.6
27 MONO_SUPPORT
=$(WASM_RUNTIME_DIR
)/include/support
28 DOTNET_BUILD?
=dotnet build
29 DOTNET_PACK?
=dotnet pack
32 $(MONO_SUPPORT
)/crc32.h \
33 $(MONO_SUPPORT
)/deflate.h \
34 $(MONO_SUPPORT
)/inffast.h \
35 $(MONO_SUPPORT
)/inffixed.h \
36 $(MONO_SUPPORT
)/inflate.h \
37 $(MONO_SUPPORT
)/inftrees.h \
38 $(MONO_SUPPORT
)/trees.h \
39 $(MONO_SUPPORT
)/zconf.h \
40 $(MONO_SUPPORT
)/zlib.h \
41 $(MONO_SUPPORT
)/zutil.h
65 BINDING_TEST_SOURCES
= \
68 MINI_TEST_SOURCES
= $(patsubst %,$(MINI_PATH
)/%,$(MINI_TEST_FILES
))
70 WASM_FRAMEWORK
=$(TOP
)/sdks
/wasm
/framework
71 WASM_FRAMEWORK_SOURCE
=$(TOP
)/sdks
/wasm
/framework
/src
72 WASM_FRAMEWORK_SOURCES
=$(WASM_FRAMEWORK_SOURCE
)/**/*
73 WASM_FRAMEWORK_DEPS
=/r
:$(WASM_FRAMEWORK
)/WebAssembly.Bindings.dll
/r
:$(WASM_FRAMEWORK
)/WebAssembly.Net.Http.dll
/r
:$(WASM_FRAMEWORK
)/WebAssembly.Net.WebSockets.dll
75 BROWSER_TEST
=$(TOP
)/sdks
/wasm
/tests
/browser
76 BROWSER_TEST_THREADS
=$(TOP
)/sdks
/wasm
/tests
/browser
77 BROWSER_TEST_SOURCES
=$(BROWSER_TEST
)/*
78 BROWSER_TEST_ASSETS
= \
79 --asset
=$(BROWSER_TEST
)/http-spec.html \
80 --asset
=$(BROWSER_TEST
)/http-spec.js \
81 --asset
=$(BROWSER_TEST
)/core-bindings-spec.html \
82 --asset
=$(BROWSER_TEST
)/core-bindings-spec.js \
83 --asset
=$(BROWSER_TEST
)/issues-spec.html \
84 --asset
=$(BROWSER_TEST
)/issues-spec.js \
85 --asset
=$(BROWSER_TEST
)/zip-spec.html \
86 --asset
=$(BROWSER_TEST
)/zip-spec.js \
87 --asset
=$(BROWSER_TEST
)/NowIsTheTime.txt \
88 --asset
=$(BROWSER_TEST
)/resources
/archive.zip \
89 --asset
=$(BROWSER_TEST
)/resources
/test.nupkg \
91 UNAME
:= $(shell uname
-s
)
95 ifeq ($(UNAME
),Darwin
)
101 node node_modules
/jsvu
/cli.js
--os
=$(JSVU_OS
) --engines
=all
105 node node_modules
/jsvu
/cli.js
--os
=$(JSVU_OS
) --engines
=all
109 toolchain
: .stamp-jsvu
111 # emsdk_env.sh calls emsdk construct_env which is a bit slow so make a copy
113 cd
$(EMSCRIPTEN_SDK_DIR
) && .
/emsdk construct_env
$(CURDIR
)/emsdk_env.sh
115 driver-dynamic.o
: driver.c corebindings.c pinvoke-tables-default.h emsdk_env.sh
116 $(EMCC
) -g
-Os
-fPIC
-s WASM
=1 -s ALLOW_MEMORY_GROWTH
=1 -s BINARYEN
=1 -s
"BINARYEN_TRAP_MODE='clamp'" -s ALIASING_FUNCTION_POINTERS
=0 -DWASM_SUPPORTS_DLOPEN
-DCORE_BINDINGS
-I
$(WASM_RUNTIME_DIR
)/include/mono-2.0 driver.c
-c
-o driver-dynamic.o
118 corebindings-dynamic.o
: corebindings.c emsdk_env.sh
119 $(EMCC
) -g
-Os
-fPIC
-s WASM
=1 -s ALLOW_MEMORY_GROWTH
=1 -s BINARYEN
=1 -s
"BINARYEN_TRAP_MODE='clamp'" -s ALIASING_FUNCTION_POINTERS
=0 -I
$(WASM_RUNTIME_DIR
)/include/mono-2.0 corebindings.c
-c
-o
$@
121 MONO_LIBS
= $(TOP
)/sdks
/out
/wasm-runtime-release
/lib
/{libmono-ee-interp.a
,libmono-native.a
,libmono-icall-table.a
,libmonosgen-2.0.a
,libmono-ilgen.a
}
123 EMCC_FLAGS
=-s WASM
=1 -s ALLOW_MEMORY_GROWTH
=1 -s BINARYEN
=1 -s ALIASING_FUNCTION_POINTERS
=0 -s NO_EXIT_RUNTIME
=1 -s
"EXTRA_EXPORTED_RUNTIME_METHODS=['ccall', 'FS_createPath', 'FS_createDataFile', 'cwrap', 'setValue', 'getValue', 'UTF8ToString', 'addFunction']" -s USE_ZLIB
=1 -s
"EXPORTED_FUNCTIONS=['_putchar']" --source-map-base http
://example.com
124 EMCC_DEBUG_FLAGS
=-g4
-Os
-s
-s ASSERTIONS
=1
125 EMCC_RELEASE_FLAGS
=-Oz
--llvm-opts
2 --llvm-lto
1
126 EMCC_THREADS_FLAGS
=-s ALLOW_MEMORY_GROWTH
=0 -s USE_PTHREADS
=1 -s TOTAL_MEMORY
=536870912 -pthread
-Wl
,--shared-memory
,--no-check-features
-s PTHREAD_POOL_SIZE
=2
135 define InterpBuildTemplate
140 builds
/$(1)/mono.js
: builds
/$(1)/driver.o builds
/$(1)/corebindings.o builds
/$(1)/zlib-helper.o library_mono.js binding_support.js dotnet_support.js
$(TOP
)/sdks
/out
/$(2)/lib
/libmonosgen-2.0.a | builds
/$(1)/ emsdk_env.sh
141 $(EMCC
) $(EMCC_FLAGS
) $(3) --js-library library_mono.js
--js-library binding_support.js
--js-library dotnet_support.js builds
/$(1)/driver.o builds
/$(1)/corebindings.o builds
/$(1)/zlib-helper.o
$(TOP
)/sdks
/out
/${2}/lib
/{libmono-ee-interp.a
,libmono-native.a
,libmono-icall-table.a
,libmonosgen-2.0.a
,libmono-ilgen.a
} -o builds
/$(1)/mono.js
143 builds
/$(1)/driver.o
: driver.c corebindings.c pinvoke-tables-default.h | builds
/$(1)/ emsdk_env.sh
144 $(EMCC
) $(EMCC_FLAGS
) -Oz
-DCORE_BINDINGS
-I
$(WASM_RUNTIME_DIR
)/include/mono-2.0 driver.c
-c
-o
$$@
146 builds
/$(1)/corebindings.o
: corebindings.c | builds
/$(1)/ emsdk_env.sh
147 $(EMCC
) $(EMCC_FLAGS
) -Oz
-I
$(WASM_RUNTIME_DIR
)/include/mono-2.0 corebindings.c
-c
-o
$$@
149 builds
/$(1)/zlib-helper.o
: zlib-helper.c | builds
/$(1)/ emsdk_env.sh
150 $(EMCC
) $(EMCC_FLAGS
) -Oz
-I
$(WASM_RUNTIME_DIR
)/include/mono-2.0
-I
$(WASM_RUNTIME_DIR
)/include/support zlib-helper.c
-c
-o
$$@
152 build-native
: builds
/$(1)/mono.js
156 $(eval
$(call InterpBuildTemplate
,debug
,wasm-runtime-release
,$(EMCC_DEBUG_FLAGS
)))
157 $(eval
$(call InterpBuildTemplate
,release
,wasm-runtime-release
,$(EMCC_RELEASE_FLAGS
)))
158 ifdef ENABLE_WASM_THREADS
159 $(eval
$(call InterpBuildTemplate
,threads-debug
,wasm-runtime-threads-release
,$(EMCC_DEBUG_FLAGS
) $(EMCC_THREADS_FLAGS
)))
160 $(eval
$(call InterpBuildTemplate
,threads-release
,wasm-runtime-threads-release
,$(EMCC_RELEASE_FLAGS
) $(EMCC_THREADS_FLAGS
)))
163 #release-dynamic/.stamp-build: driver-dynamic.o corebindings-dynamic.o library_mono.js binding_support.js dotnet_support.js $(TOP)/sdks/out/wasm-runtime-release/lib/libmonosgen-2.0.a release/.stamp-build | release-dynamic/
164 # $(EMCC_DYNAMIC) $(EMCC_FLAGS) -s MAIN_MODULE=1 -s EXPORT_ALL=1 -s DISABLE_EXCEPTION_CATCHING=0 -s RESERVED_FUNCTION_POINTERS=64 -Oz --llvm-opts 2 --llvm-lto 1 --js-library library_mono.js --js-library binding_support.js --js-library dotnet_support.js driver-dynamic.o corebindings-dynamic.o $(MONO_LIBS) -o release-dynamic/mono.js -s "EXPORTED_FUNCTIONS=['_putchar']"
168 $(MAKE
) -C ..
/builds package-wasm-runtime
171 $(MAKE
) -C ..
/builds package-wasm-cross
174 $(MAKE
) -C ..
/builds package-wasm-bcl
177 $(MAKE
) -C ..
/builds package-wasm-runtime-threads
180 $(MAKE
) -C ..
/..
/mcs
/tools
/wasm-tuner PROFILE
=wasm_tools
181 cp ..
/..
/mcs
/class
/lib
/wasm_tools
/wasm-tuner.exe
* ..
/out
/wasm-bcl
/wasm_tools
/wasm-tuner.exe
*
184 $(MAKE
) -C ..
/..
/mcs
/tools
/cil-strip PROFILE
=wasm_tools
186 mono
: runtime runtime-threads cross bcl
188 BCL_DEPS
=/r
:$(WASM_BCL_DIR
)/mscorlib.dll
/r
:$(WASM_BCL_DIR
)/System.Core.dll
/r
:$(WASM_BCL_DIR
)/System.dll
/r
:$(WASM_BCL_DIR
)/System.Net.Http.dll
/r
:$(WASM_BCL_DIR
)/Facades
/netstandard.dll
/r
:$(WASM_BCL_DIR
)/System.IO.Compression.dll
/r
:$(WASM_BCL_DIR
)/Facades
/System.Memory.dll
190 main.exe
: $(APP_SOURCES
)
191 $(CSC
) $(CSC_FLAGS
) /unsafe
-out
:$@
$(BCL_DEPS
) /r
:$(WASM_BCL_DIR
)/nunitlite.dll
$(APP_SOURCES
)
193 mini_tests.dll
: $(MINI_TEST_SOURCES
) mini-test-runner.cs
194 $(CSC
) $(CSC_FLAGS
) /unsafe
-target
:library
-out
:$@
-define:__MOBILE__
,ARCH_32
$(BCL_DEPS
) /r
:$(WASM_BCL_DIR
)/nunitlite.dll
$(MINI_TEST_SOURCES
) mini-test-runner.cs
196 binding_tests.dll
: $(WASM_FRAMEWORK
)/.stamp-framework
$(BINDING_TEST_SOURCES
)
197 $(CSC
) $(CSC_FLAGS
) /unsafe
-target
:library
-out
:$@
$(WASM_FRAMEWORK_DEPS
) $(BCL_DEPS
) /r
:$(WASM_BCL_DIR
)/Facades
/System.Memory.dll
/r
:$(WASM_BCL_DIR
)/nunitlite.dll
$(BINDING_TEST_SOURCES
)
199 $(WASM_FRAMEWORK
)/.stamp-framework
: $(WASM_FRAMEWORK_SOURCES
)
200 $(DOTNET_BUILD
) $(WASM_FRAMEWORK_SOURCE
)/WebAssembly.Framework.sln
201 cp
-f
$(WASM_FRAMEWORK
)/netstandard2.0
/* $(WASM_FRAMEWORK
)
204 Simple.Dependency.dll
: dependency.cs
$(WASM_FRAMEWORK
)/.stamp-framework
205 $(CSC
) $(CSC_FLAGS
) /target
:library
-out
:$@
$(BCL_DEPS
) dependency.cs
207 sample.dll
: Simple.Dependency.dll sample.cs
$(WASM_FRAMEWORK
)/.stamp-framework
208 $(CSC
) $(CSC_FLAGS
) /target
:library
-out
:$@
/r
:Simple.Dependency.dll
$(BCL_DEPS
) $(WASM_FRAMEWORK_DEPS
) sample.cs
210 debugger-test.dll
: debugger-test.cs debugger-test2.cs Simple.Dependency.dll
211 $(CSC
) $(CSC_FLAGS
) /target
:library
-out
:$@
/r
:$(WASM_BCL_DIR
)/mscorlib.dll
/r
:Simple.Dependency.dll debugger-test.cs debugger-test2.cs
213 OPTIONS_CS
= $(TOP
)/mcs
/class
/Mono.Options
/Mono.Options
/Options.cs
215 Mono.Cecil.dll
: $(TOP
)/mcs
/class
/lib
/wasm_tools
/Mono.Cecil.dll
218 # Should use .csproj file and msbuild
219 packager.exe
: packager.cs Mono.Cecil.dll
$(OPTIONS_CS
) | build-native
220 $(CSC
) $(CSC_FLAGS
) /out
:$@
/r
:Mono.Cecil.dll packager.cs
$(OPTIONS_CS
) /r
:$(API_REFS
)/mscorlib.dll
/r
:$(API_REFS
)/System.dll
/r
:$(API_REFS
)/System.Core.dll
222 .stamp-build-debug-sample
: packager.exe
$(WASM_FRAMEWORK
)/.stamp-framework sample.dll debug.html runtime.js
223 mono
--debug packager.exe
--copy
=always
-debug
-out
=debug_sample
--asset
=debug.html sample.dll
226 TEST_ASSEMBLIES
= $(WASM_BCL_DIR
)/nunitlite.dll
$(WASM_BCL_DIR
)/tests
/wasm_corlib_test.dll
$(WASM_BCL_DIR
)/tests
/wasm_System_test.dll
$(WASM_BCL_DIR
)/tests
/wasm_System.Core_test.dll
228 build-test-suite
: packager.exe
$(WASM_FRAMEWORK
)/.stamp-framework binding_tests.dll mini_tests.dll main.exe runtime-tests.js
229 mono packager.exe
--emscripten-sdkdir
=$(EMSCRIPTEN_SDK_DIR
) --template
=runtime-tests.js
--appdir
=bin
/test-suite
--builddir
=obj
/test-suite
--asset
=tests
/runtime
/index.html binding_tests.dll mini_tests.dll main.exe
$(TEST_ASSEMBLIES
) --linker
230 ninja
-v
-C obj
/test-suite
232 XUNIT_DIR
= $(TOP
)/external
/xunit-binaries
234 xunit-runner.exe
: xunit-runner.cs
235 csc
/out
:$@
/r
:$(XUNIT_DIR
)/xunit.abstractions.dll
/r
:$(XUNIT_DIR
)/xunit.core.dll
/r
:$(XUNIT_DIR
)/xunit.console.exe
/r
:$(WASM_BCL_DIR
)/Facades
/System.Runtime.dll
/r
:$(WASM_BCL_DIR
)/Facades
/System.Reflection.dll
/r
:$(WASM_BCL_DIR
)/Facades
/System.Collections.dll
/r
:$(XUNIT_DIR
)/xunit.execution.dotnet.dll
/r
:$(XUNIT_DIR
)/xunit.runner.utility.net452.dll xunit-runner.cs
238 # Targets for running xunit tests
239 # xunit-exclusions.rsp contains the exclusions
244 # $(1) - make target suffix
245 # $(2) - directory name
246 # $(3) - test assembly filename
247 # $(4) - command line arguments
248 define XunitTestTemplate
250 bin
/$(2)/mono.js
: packager.exe
$(WASM_FRAMEWORK
)/.stamp-framework xunit-runner.exe runtime-tests.js xunit-exclusions.rsp
251 mono packager.exe
--debugrt
--search-path
=$(XUNIT_DIR
) --search-path
=$(WASM_BCL_DIR
)/tests
--template
=runtime-tests.js
--appdir
=bin
/$(2) --builddir
=obj
/$(2) --asset
=xunit-exclusions.rsp xunit-runner.exe
$(XUNIT_DIR
)/xunit.execution.dotnet.dll
$(WASM_BCL_DIR
)/tests
/$(3) $(WASM_BCL_DIR
)/tests
/Xunit.NetCore.Extensions.dll
254 build-
$(1): bin
/$(2)/mono.js
256 run-
$(1): bin
/$(2)/mono.js
257 (cd bin
/$(2) && $$(SM
) runtime.js
--enable-gc
--run xunit-runner.exe
$(3) $(4) `cat xunit-exclusions.rsp | grep -v '#'`)
261 $(eval
$(call XunitTestTemplate
,System.Core-xunit
,System.Core-xunit
,wasm_System.Core_xunit-test.dll
))
262 $(eval
$(call XunitTestTemplate
,corlib-xunit
,corlib-xunit
,wasm_corlib_xunit-test.dll
))
264 $(BROWSER_TEST
)/.stamp-browser-test-suite
: packager.exe
$(WASM_FRAMEWORK
)/.stamp-framework
$(BROWSER_TEST_SOURCES
) clean-browser-tests build-sdk
265 $(DOTNET_BUILD
) tests
/browser
/src
-v normal
266 (cd
$(BROWSER_TEST
) && npm
install)
269 $(BROWSER_TEST_THREADS
)/.stamp-browser-test-threads-suite
: packager.exe
$(WASM_FRAMEWORK
)/.stamp-framework
$(BROWSER_TEST_SOURCES
) clean-browser-tests build-sdk
270 $(DOTNET_BUILD
) tests
/browser
/src
-v normal
-c DebugThreads
271 (cd
$(BROWSER_TEST
) && npm
install)
274 .stamp-build-debugger-test-app
: packager.exe binding_tests.dll debugger-test.dll debugger-driver.html
275 mono packager.exe
--copy
=always
-debugrt
-debug
--template
=runtime.js
--builddir
=obj
/debugger-test-suite
--appdir
=bin
/debugger-test-suite
--asset
=debugger-driver.html debugger-test.dll
276 ninja
-v
-C obj
/debugger-test-suite
279 build-aot-sample
: packager.exe hello.exe
280 mono
--debug packager.exe
--emscripten-sdkdir
=$(EMSCRIPTEN_SDK_DIR
) --mono-sdkdir
=$(TOP
)/sdks
/out
-appdir
=bin
/aot-sample
--nobinding
--builddir
=obj
/aot-sample
--aot
--template
=runtime-tests.js
--pinvoke-libs
=libfoo hello.exe
281 ninja
-v
-C obj
/aot-sample
283 zlibtest.exe
: zlibtest.cs
284 $(CSC
) $(CSC_FLAGS
) -out
:$@
$(BCL_DEPS
) zlibtest.cs
286 run-zlib-test
: build-zlib-sample
287 (cd bin
/zlib-sample
&& $(SM
) runtime.js
--run zlibtest.exe
)
289 build-zlib-sample
: packager.exe zlibtest.exe
290 mono packager.exe
--nobinding
--template
=runtime-tests.js
--out
=bin
/zlib-sample zlibtest.exe
292 build-zlib-interp-sample
: packager.exe zlibtest.exe
293 mono
--debug packager.exe
--emscripten-sdkdir
=$(EMSCRIPTEN_SDK_DIR
) --mono-sdkdir
=$(TOP
)/sdks
/out
-appdir
=bin
/interp-zlib-sample
--nobinding
--builddir
=obj
/interp-zlib-sample
--template
=runtime-tests.js zlibtest.exe
--linker
--link-icalls
--zlib
294 ninja
-v
-C obj
/interp-zlib-sample
296 run-zlib-interp-sample
: build-zlib-interp-sample
297 (cd bin
/interp-zlib-sample
&& $(SM
) runtime.js
--run zlibtest.exe
)
299 build-zlib-aot-sample
: packager.exe zlibtest.exe
300 mono
--debug packager.exe
--emscripten-sdkdir
=$(EMSCRIPTEN_SDK_DIR
) --mono-sdkdir
=$(TOP
)/sdks
/out
-appdir
=bin
/aot-zlib-sample
--nobinding
--builddir
=obj
/aot-zlib-sample
--aot
--template
=runtime-tests.js zlibtest.exe
--zlib
301 ninja
-v
-C obj
/aot-zlib-sample
303 run-zlib-aot-sample
: build-zlib-aot-sample
304 (cd bin
/aot-zlib-sample
&& $(SM
) runtime.js
--run zlibtest.exe
)
306 build-mixed-sample
: packager.exe hello.exe
307 mono
--debug packager.exe
--emscripten-sdkdir
=$(EMSCRIPTEN_SDK_DIR
) --aot-interp
--aot-assemblies
=mscorlib
--mono-sdkdir
=$(TOP
)/sdks
/out
-appdir
=bin
/mixed-sample
--nobinding
--builddir
=obj
/mixed-sample
--template
=runtime-tests.js hello.exe
308 ninja
-v
-C obj
/mixed-sample
310 run-mixed-sample
: build-mixed-sample
311 (cd bin
/mixed-sample
&& $(SM
) runtime.js
--run hello.exe
)
314 $(CSC
) $(CSC_FLAGS
) -out
:$@
$(BCL_DEPS
) hello.cs
316 run-aot-sample
: build-aot-sample
317 (cd bin
/aot-sample
&& $(SM
) runtime.js
--run hello.exe
)
319 build-interp-sample
: packager.exe hello.exe
320 mono
--debug packager.exe
--emscripten-sdkdir
=$(EMSCRIPTEN_SDK_DIR
) --mono-sdkdir
=$(TOP
)/sdks
/out
-appdir
=bin
/interp-sample
--nobinding
--builddir
=obj
/interp-sample
--template
=runtime-tests.js hello.exe
--linker
--link-icalls
321 ninja
-v
-C obj
/interp-sample
323 run-interp-sample
: build-interp-sample
324 (cd bin
/interp-sample
&& $(SM
) runtime.js
--run hello.exe
)
326 threads.exe
: threads.cs
327 $(CSC
) $(CSC_FLAGS
) -out
:$@
$(BCL_DEPS
) threads.cs
329 build-threads-sample
: packager.exe threads.exe
330 mono
--debug packager.exe
--emscripten-sdkdir
=$(EMSCRIPTEN_SDK_DIR
) --mono-sdkdir
=$(TOP
)/sdks
/out
-appdir
=bin
/threads-sample
--nobinding
--builddir
=obj
/threads-sample
--template
=runtime-tests.js
--asset
=tests
/runtime
/index.html
--threads threads.exe
331 ninja
-v
-C obj
/threads-sample
333 # (cd bin/threads-sample && $(D8) --experimental-wasm-threads --stack-trace-limit=1000 runtime.js -- --run threads.exe)
334 run-threads-sample
: build-threads-sample
335 (npm
install --prefix tests
/runtime
/ && npm start
--prefix tests
/runtime
)
337 build-aot-mini
: packager.exe mini_tests.dll main.exe runtime.js
338 mono
--debug packager.exe
--emscripten-sdkdir
=$(EMSCRIPTEN_SDK_DIR
) --mono-sdkdir
=$(TOP
)/sdks
/out
-appdir
=bin
/aot-mini
--nobinding
--builddir
=obj
/aot-mini
--aot
--template
=runtime-tests.js mini_tests.dll
339 ninja
-v
-C obj
/aot-mini
341 check-aot-mini run-aot-mini
: build-aot-mini
342 (cd bin
/aot-mini
&& $(SM
) runtime.js
--regression mini_tests.dll
)
344 get-sysnative-exports
:
345 nm ..
/out
/wasm-runtime-release
/lib
/libmono-native.a | grep SystemNative | cut
-d
' ' -f
3 | grep
-v
'^$$'
347 build-aot-bindings-sample
: packager.exe sample.dll
348 mono
--debug packager.exe
--emscripten-sdkdir
=$(EMSCRIPTEN_SDK_DIR
) --mono-sdkdir
=$(TOP
)/sdks
/out
-appdir
=bin
/aot-bindings-sample
--builddir
=obj
/aot-bindings-sample
--aot
--template
=runtime.js
--link-mode
=SdkOnly
--asset
=sample.html sample.dll
349 ninja
-v
-C obj
/aot-bindings-sample
351 build-aot-bindings-interp-sample
: packager.exe sample.dll
352 mono
--debug packager.exe
--emscripten-sdkdir
=$(EMSCRIPTEN_SDK_DIR
) --mono-sdkdir
=$(TOP
)/sdks
/out
-appdir
=bin
/aot-bindings-interp-sample
--builddir
=obj
/aot-bindings-interp-sample
--aot
--template
=runtime.js
--link-mode
=SdkOnly
--linker
--link-icalls
--asset
=sample.html sample.dll
353 ninja
-v
-C obj
/aot-bindings-interp-sample
355 aot-profile
/main.exe
: aot-profile
/main.cs
356 $(CSC
) $(CSC_FLAGS
) /unsafe
-out
:$@
$(BCL_DEPS
) $(WASM_FRAMEWORK_DEPS
) /r
:$(WASM_BCL_DIR
)/Facades
/System.Memory.dll aot-profile
/main.cs
358 build-aot-profile
: packager.exe aot-profile
/main.exe
359 mono
--debug packager.exe
--emscripten-sdkdir
=$(EMSCRIPTEN_SDK_DIR
) --mono-sdkdir
=$(TOP
)/sdks
/out
-appdir
=bin
/aot-profile
--builddir
=obj
/aot-profile
--profile
=aot
--template
=aot-profile
/runtime.js
--asset
=aot-profile
/index.html aot-profile
/main.exe
360 ninja
-C obj
/aot-profile
362 data.aotprofile
: build-aot-profile
363 node aot-profile
/gen-profile.js
$@ bin
/aot-profile
367 # $(1) - make target suffix
369 define InterpTestTemplate
370 build-interp-
$(1): packager.exe
$(WASM_FRAMEWORK
)/.stamp-framework binding_tests.dll mini_tests.dll main.exe runtime-tests.js
371 mono packager.exe
--template
=runtime-tests.js
--appdir
=bin
/interp-
$(1) --builddir
=obj
/interp-
$(1) --asset
=tests
/runtime
/index.html binding_tests.dll mini_tests.dll main.exe
$(TEST_ASSEMBLIES
) --linker
372 ninja
-v
-C obj
/interp-
$(1)
375 $(RM
) -r obj
/interp-
$(1) bin
/interp-
$(1)
378 $(eval
$(call InterpTestTemplate
,mini
))
379 $(eval
$(call InterpTestTemplate
,corlib
))
380 $(eval
$(call InterpTestTemplate
,System.Core
))
381 $(eval
$(call InterpTestTemplate
,System
))
385 # $(1) - make target suffix
386 # $(2) - test assembly filename
387 # $(3) - main.exe argument
388 # $(4) - extra args to packager
389 define AotTestTemplate
391 build-aot-
$(1): packager.exe runtime-tests.js main.exe
$$(WASM_FRAMEWORK
)/.stamp-framework
$$(WASM_FRAMEWORK
)/WebAssembly.Bindings.dll binding_tests.dll
$$(WASM_BCL_DIR
)/nunitlite.dll
$$(WASM_BCL_DIR
)/tests
/$(2)
392 mono
--debug packager.exe
--emscripten-sdkdir
=$$(EMSCRIPTEN_SDK_DIR
) --mono-sdkdir
=$$(TOP
)/sdks
/out
-appdir
=bin
/aot-
$(1) --builddir
=obj
/aot-
$(1) --aot
--template
=runtime-tests.js main.exe binding_tests.dll
$$(WASM_BCL_DIR
)/tests
/$(2) --linker
--link-icalls
$(4)
393 ninja
-v
-C obj
/aot-
$(1)
396 $(RM
) -r obj
/aot-
$(1) bin
/aot-
$(1)
398 check-aot-
$(1) run-aot-
$(1): build-aot-
$(1)
399 (cd bin
/aot-
$(1) && $$(SM
) runtime.js
--exclude StackWalks
,StaticAotNotWorking
,StaticLinkedAotNotWorking
,SRE
$(3))
403 $(eval
$(call AotTestTemplate
,corlib
,wasm_corlib_test.dll
,corlib
))
404 $(eval
$(call AotTestTemplate
,System.Core
,wasm_System.Core_test.dll
,System.Core
))
405 $(eval
$(call AotTestTemplate
,System
,wasm_System_test.dll
,System
))
407 $(eval
$(call AotTestTemplate
,mixed-corlib
,wasm_corlib_test.dll
,corlib
,--aot-interp
--aot-assemblies
=mscorlib
))
408 $(eval
$(call AotTestTemplate
,mixed-System.Core
,wasm_System.Core_test.dll
,System.Core
,--aot-interp
--aot-assemblies
=mscorlib
))
410 AOT_TEST_SUITES
=corlib System.Core
413 $(MAKE
) $(patsubst %,build-aot-
%,$(AOT_TEST_SUITES
))
415 run-aot-all
: build-aot-all
416 for suite in System.Core
; do
$(MAKE
) run-aot-
$$suite || exit
1; done
418 build-debug-sample
: .stamp-build-debug-sample
420 build-debugger-test-app
: .stamp-build-debugger-test-app
421 build-managed
: build-debug-sample build-test-suite
424 $(DOTNET_BUILD
) ProxyDriver
427 $(DOTNET_BUILD
) DebuggerTestSuite
429 build
: build-native build-managed build-debugger-test-app
432 mono ..
/..
/mcs
/class
/lib
/wasm_tools
/wasm-tuner.exe
--gen-pinvoke-table System.Native
$(WASM_BCL_DIR
)/mscorlib.dll
> pinvoke-tables-default.h
439 run-ch-
%: toolchain build-test-suite
440 (cd bin
/test-suite
&& $(CHAKRA
) runtime.js
-args
$*)
442 run-v8-
%: toolchain build-test-suite
443 (cd bin
/test-suite
&& $(D8
) --stack-trace-limit
=1000 --expose_wasm runtime.js
-- --enable-gc
$*)
445 run-jsc-
%: toolchain build-test-suite
446 (cd bin
/test-suite
&& $(JSC
) runtime.js
-- $*)
448 run-sm-
%: toolchain build-test-suite
449 (cd bin
/test-suite
&& $(SM
) runtime.js
$*)
451 run-chrome-
%: build-test-suite
452 node tests
/runtime
/run.js bin
/test-suite
$*
454 # Leaving JSC for now cuz it aborts when it encounters wasm
456 $(MAKE
) -C . run-ch-
$*
457 $(MAKE
) -C . run-v8-
$*
458 $(MAKE
) -C . run-sm-
$*
459 $(MAKE
) -C . run-jsc-
$*
461 test-debugger
: build-debugger-test-app build-dbg-testsuite
462 dotnet
test DebuggerTestSuite
464 run-browser-tests
: $(BROWSER_TEST
)/.stamp-browser-test-suite
465 (cd
$(BROWSER_TEST
) && npm
test)
467 run-browser-threads-tests
: $(BROWSER_TEST_THREADS
)/.stamp-browser-test-threads-suite
468 (cd
$(BROWSER_TEST_THREADS
) && npm
test)
470 clean: clean-browser-tests
474 $(RM
) -r .stamp-build-debug-sample
475 $(RM
) -r .stamp-build-test-suite
477 $(RM
) -r Simple.Dependency.dll
478 $(RM
) -r packager.exe
479 $(RM
) -r mini_tests.dll
481 $(RM
) -r binding-tests.dll
482 $(RM
) -r
$(WASM_FRAMEWORK
)/.stamp-framework
483 $(RM
) -r
$(WASM_FRAMEWORK
)/netstandard2.0
484 $(RM
) $(WASM_FRAMEWORK
)/WebAssembly.
*.dll
485 $(RM
) $(WASM_FRAMEWORK
)/WebAssembly.
*.pdb
486 $(RM
) $(WASM_FRAMEWORK
)/WebAssembly.
*.xml
490 package
: build build-dbg-proxy
494 mkdir tmp
/wasm-bcl
/wasm
495 mkdir tmp
/wasm-bcl
/wasm_tools
496 cp
-r
$(TOP
)/sdks
/out
/wasm-bcl
/wasm
/* tmp
/wasm-bcl
/wasm
/
497 cp
-r
$(TOP
)/sdks
/out
/wasm-bcl
/wasm_tools
/* tmp
/wasm-bcl
/wasm_tools
/
498 rm -rf tmp
/wasm-bcl
/wasm
/bare
499 rm -rf tmp
/wasm-bcl
/wasm
/secxml
500 rm -rf tmp
/wasm-bcl
/wasm
/tests
501 rm -rf tmp
/wasm-bcl
/wasm
/corlib.unsafe.dll.tmp
502 cp driver.c pinvoke-tables-default.h tmp
/
503 cp corebindings.c tmp
/
504 cp zlib-helper.c tmp
/
505 cp pinvoke-tables-default.h tmp
/
507 cp library_mono.js tmp
/
508 cp binding_support.js tmp
/
509 cp dotnet_support.js tmp
/
512 cp framework
/WebAssembly.Bindings.dll tmp
/framework
513 cp framework
/WebAssembly.Bindings.pdb tmp
/framework
514 cp framework
/WebAssembly.Bindings.xml tmp
/framework
515 cp framework
/WebAssembly.Net.Http.dll tmp
/framework
516 cp framework
/WebAssembly.Net.Http.pdb tmp
/framework
517 cp framework
/WebAssembly.Net.Http.xml tmp
/framework
518 cp framework
/WebAssembly.Net.WebSockets.dll tmp
/framework
519 cp framework
/WebAssembly.Net.WebSockets.pdb tmp
/framework
520 cp framework
/WebAssembly.Net.WebSockets.xml tmp
/framework
521 mkdir tmp
/framework
/src
522 cp
-r framework
/src tmp
/framework
523 $(RM
) -r tmp
/framework
/src
/**/bin
524 $(RM
) -r tmp
/framework
/src
/**/obj
527 cp dependency.cs tmp
/
530 cp Mono.Cecil.dll tmp
/
531 cp
$(OPTIONS_CS
) tmp
/
534 cp Mono.WebAssembly.DebuggerProxy
/bin
/Debug
/netstandard2.0
/Mono.WebAssembly.DebuggerProxy.dll tmp
/
535 cp Mono.WebAssembly.DebuggerProxy
/bin
/Debug
/netstandard2.0
/Mono.WebAssembly.DebuggerProxy.pdb tmp
/
537 cp
-r ProxyDriver
/bin
/Debug
/netcoreapp2.1
/ tmp
/dbg-proxy
/
539 cp
-r .
/docs
/ tmp
/docs
/
541 cp
-r .
/sdk
/packages tmp
/
543 cp
-r .
/sdk
/Templates tmp
/
545 cp
-r
$(ZLIB_HEADERS
) tmp
/support
546 (cd tmp
; zip
-r9 ..
/mono-wasm-
$(shell git rev-parse
--short HEAD
).zip .
)
553 /Applications
/Google\ Chrome\ Canary.app
/Contents
/MacOS
/Google\ Chrome\ Canary
--remote-debugging-port
=9222
555 check-aot
: do-aot-sample
560 $(RM
) -r sdk
/**/**/bin
561 $(RM
) -r sdk
/**/**/obj
562 $(RM
) -r sdk
/packages
563 $(RM
) -r
$(WASM_FRAMEWORK
)/.stamp-framework
565 build-sdk
: $(WASM_FRAMEWORK
)/.stamp-framework
566 $(DOTNET_BUILD
) sdk
/MonoWasmSdkCLI.sln
567 $(DOTNET_PACK
) sdk
/Templates
/Mono.WebAssembly.Templates.csproj
569 clean-browser-tests
: clean-sdk
570 $(RM
) -r
$(BROWSER_TEST
)/.stamp-browser-test-suite
571 $(RM
) -r
$(BROWSER_TEST
)/.stamp-browser-test-threads-suite
572 $(RM
) -r
$(BROWSER_TEST
)/node-modules
573 $(RM
) -r
$(BROWSER_TEST
)/publish
574 $(RM
) -r
$(BROWSER_TEST
)/source
/**/bin
$(BROWSER_TEST
)/source
/**/**/bin
$(BROWSER_TEST
)/source
/**/obj
$(BROWSER_TEST
)/source
/**/**/obj publish