Skip to content

Commit 15fff06

Browse files
expose crossruby configuration options
1 parent 5038767 commit 15fff06

File tree

4 files changed

+35
-28
lines changed

4 files changed

+35
-28
lines changed

Rakefile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,23 @@ namespace :build do
5151
BUILDS.each do |params|
5252
name = "#{params[:src]}-#{params[:target]}-#{params[:profile]}"
5353
source = BUILD_SOURCES[params[:src]].merge(name: params[:src])
54+
debug = params[:debug]
5455
options = params
5556
.merge(BUILD_PROFILES[params[:profile]])
5657
.merge(src: source)
5758
options.delete :profile
5859
options.delete :user_exts
60+
options.delete :debug
5961
RubyWasm::BuildTask.new(name, **options) do |t|
62+
if debug
63+
t.crossruby.debugflags = %w[-g]
64+
t.crossruby.wasmoptflags = %w[-O3 -g]
65+
t.crossruby.ldflags = %w[-Xlinker --stack-first -Xlinker -z -Xlinker stack-size=16777216]
66+
else
67+
t.crossruby.debugflags = %w[-g0]
68+
t.crossruby.ldflags = %w[-Xlinker -zstack-size=16777216]
69+
end
70+
6071
toolchain = t.toolchain
6172
t.crossruby.user_exts = BUILD_PROFILES[params[:profile]][:user_exts].map do |ext|
6273
srcdir = File.join(LIB_ROOT, "ext", ext)
Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
11
module RubyWasm
2-
BuildParams =
3-
Struct.new(
4-
:name,
5-
:target,
6-
:debug,
7-
:default_exts,
8-
:wasmoptflags,
9-
keyword_init: true
10-
)
2+
BuildParams = Struct.new(:name, :target, :default_exts, keyword_init: true)
113
end

lib/ruby_wasm/build_system/product/crossruby.rb

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,14 @@ def do_install_rb(crossruby)
7979

8080
class CrossRubyProduct < AutoconfProduct
8181
attr_reader :source, :toolchain, :build, :configure
82-
attr_accessor :user_exts, :wasmoptflags
82+
attr_accessor :user_exts,
83+
:wasmoptflags,
84+
:cppflags,
85+
:cflags,
86+
:ldflags,
87+
:debugflags,
88+
:xcflags,
89+
:xldflags
8390

8491
def initialize(
8592
params,
@@ -98,7 +105,13 @@ def initialize(
98105
@toolchain = toolchain
99106
@dep_tasks = []
100107
@user_exts = user_exts
101-
@wasmoptflags = nil
108+
@wasmoptflags = []
109+
@cppflags = []
110+
@cflags = []
111+
@ldflags = []
112+
@debugflags = []
113+
@xcflags = []
114+
@xldflags = []
102115
super(@params.target, @toolchain)
103116
end
104117

@@ -200,15 +213,8 @@ def configure_args(build_triple, toolchain)
200213
target = @params.target
201214
default_exts = @params.default_exts
202215

203-
ldflags =
204-
if @params.debug
205-
# use --stack-first to detect stack overflow easily
206-
%w[-Xlinker --stack-first -Xlinker -z -Xlinker stack-size=16777216]
207-
else
208-
%w[-Xlinker -zstack-size=16777216]
209-
end
210-
211-
xldflags = []
216+
ldflags = @ldflags.dup
217+
xldflags = @xldflags.dup
212218

213219
args = self.system_triplet_args + ["--build", build_triple]
214220
args << "--with-static-linked-ext"
@@ -231,20 +237,18 @@ def configure_args(build_triple, toolchain)
231237
(@user_exts || []).each { |lib| xldflags << "@#{lib.linklist(self)}" }
232238
xldflags << extinit_obj
233239

234-
xcflags = []
240+
xcflags = @xcflags.dup
235241
xcflags << "-DWASM_SETJMP_STACK_BUFFER_SIZE=24576"
236242
xcflags << "-DWASM_FIBER_STACK_BUFFER_SIZE=24576"
237243
xcflags << "-DWASM_SCAN_STACK_BUFFER_SIZE=24576"
238244

239245
args << %Q(LDFLAGS="#{ldflags.join(" ")}")
240246
args << %Q(XLDFLAGS="#{xldflags.join(" ")}")
241247
args << %Q(XCFLAGS="#{xcflags.join(" ")}")
242-
if @params.debug
243-
args << %Q(debugflags="-g")
244-
args << %Q(wasmoptflags="-O3 -g")
245-
else
246-
args << %Q(debugflags="-g0")
247-
args << %Q(wasmoptflags="#{wasmoptflags}") if @wasmoptflags
248+
args << %Q(debugflags="#{@debugflags.join(" ")}")
249+
args << %Q(cppflags="#{@cppflags.join(" ")}")
250+
unless wasmoptflags.empty?
251+
args << %Q(wasmoptflags="#{@wasmoptflags.join(" ")}")
248252
end
249253
args << "--disable-install-doc"
250254
args

lib/ruby_wasm/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module RubyWasm
22
VERSION = "0.3.0"
3-
end
3+
end

0 commit comments

Comments
 (0)