nitc :: emscripten
Serializable::inspect
to show more useful information
nitc :: modelbuilder
more_collections :: more_collections
Highly specific, but useful, collections-related classes.serialization :: serialization_core
Abstract services to serialize Nit objects to different formatsnitc :: toolcontext
Common command-line tool infrastructure than handle options and error messagescore :: union_find
union–find algorithm using an efficient disjoint-set data structure
# Compile to JavaScript using the Emscripten SDK
module emscripten
import platform
import compiler::abstract_compiler
redef class ToolContext
redef fun platform_from_name(name)
do
if name == "emscripten" then return new EmscriptenPlatform
return super
end
end
class EmscriptenPlatform
super Platform
redef fun name do return "emscripten"
redef fun supports_libunwind do return false
redef fun supports_libgc do return false
redef fun supports_linker_script do return false
redef fun toolchain(toolcontext, compiler) do return new EnscriptenToolchain(toolcontext, compiler)
end
class EnscriptenToolchain
super MakefileToolchain
redef fun makefile_name do return "{super}.js.mk"
redef fun default_outname do return "{super}.js"
redef fun write_makefile(compile_dir, cfiles)
do
super
var emcc_make_flags = "CC=emcc CXX=em++ CFLAGS='-Wno-unused-value -Wno-switch -Qunused-arguments -s ALLOW_MEMORY_GROWTH=1"
var release = toolcontext.opt_release.value
if release then
emcc_make_flags += "' LDFLAGS='--minify 1'"
else emcc_make_flags += " -g'"
var make_flags = self.toolcontext.opt_make_flags.value or else ""
make_flags += emcc_make_flags
self.toolcontext.opt_make_flags.value = make_flags
end
end
src/platform/emscripten.nit:17,1--63,3