Add Emscripten toolchain & build_config

This commit is contained in:
esotericpig
2025-03-07 12:39:54 -10:00
parent fc16f9dd13
commit bfc9742848
4 changed files with 61 additions and 1 deletions
+12
View File
@@ -0,0 +1,12 @@
# Make sure to add these compile options:
# build/emscripten-cxx/host-bin/mruby-config --cxxflags
#
# Make sure to add these link options:
# build/emscripten-cxx/host-bin/mruby-config --ldflags --libs
MRuby::CrossBuild.new('emscripten-cxx') do |conf|
conf.toolchain :emscripten
conf.gembox 'default'
conf.enable_cxx_abi
end
+10
View File
@@ -0,0 +1,10 @@
# Make sure to add these compile options:
# build/emscripten/host-bin/mruby-config --cflags
#
# Make sure to add these link options:
# build/emscripten/host-bin/mruby-config --ldflags --libs
MRuby::CrossBuild.new('emscripten') do |conf|
conf.toolchain :emscripten
conf.gembox 'default'
end
+3 -1
View File
@@ -92,7 +92,9 @@ CXDIVc(mrb_complex a, mrb_complex b)
#else
#if defined(__cplusplus) && (defined(__APPLE__) || (defined(__clang__) && (defined(__FreeBSD__) || defined(__OpenBSD__))))
#if defined(__cplusplus) && \
(defined(__APPLE__) || defined(__EMSCRIPTEN__) || \
(defined(__clang__) && (defined(__FreeBSD__) || defined(__OpenBSD__))))
#ifdef MRB_USE_FLOAT32
typedef std::complex<float> mrb_complex;
+36
View File
@@ -0,0 +1,36 @@
MRuby::Toolchain.new(:emscripten) do |conf|
toolchain :clang
# See:
# - https://emscripten.org/docs/tools_reference/emcc.html
# - https://emscripten.org/docs/tools_reference/settings_reference.html
# - https://github.com/emscripten-core/emscripten/blob/main/src/settings.js
compile_and_link_flags = [
]
compile_flags = [
*compile_and_link_flags,
'-Wno-unused-but-set-variable',
]
link_flags = [
*compile_and_link_flags,
]
conf.cc do |cc|
cc.command = 'emcc'
cc.flags.concat(compile_flags) unless ENV['CFLAGS']
end
conf.cxx do |cxx|
cxx.command = 'em++'
cxx.flags.concat(compile_flags) unless ENV['CXXFLAGS'] || ENV['CFLAGS']
end
conf.linker do |linker|
linker.command = 'emcc'
linker.flags.concat(link_flags) unless ENV['LDFLAGS']
end
conf.archiver do |archiver|
archiver.command = 'emar'
end
end