Skip to content

Commit 150c74e

Browse files
build: Add Target class to represent a build destination
1 parent f4741bd commit 150c74e

File tree

11 files changed

+68
-26
lines changed

11 files changed

+68
-26
lines changed

lib/ruby_wasm/build.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
require_relative "build/product"
33
require_relative "build/toolchain"
44
require_relative "build/executor"
5+
require_relative "build/target"
56

67
class RubyWasm::Build
78
# Source to build from.
@@ -79,7 +80,7 @@ def cache_key(digest)
7980
@crossruby.cache_key(digest)
8081
digest << @build_dir
8182
digest << @rubies_dir
82-
digest << @target
83+
@target.cache_key(digest)
8384
digest << @toolchain.name
8485
digest << @libyaml.name
8586
digest << @zlib.name

lib/ruby_wasm/build/product/crossruby.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ def name
221221
end
222222

223223
def cache_key(digest)
224-
digest << @params.target
224+
@params.target.cache_key(digest)
225225
digest << @params.default_exts
226226
@wasmoptflags.each { |f| digest << f }
227227
@cppflags.each { |f| digest << f }
@@ -234,11 +234,11 @@ def cache_key(digest)
234234
end
235235

236236
def build_dir
237-
File.join(@build_dir, @params.target, name)
237+
File.join(@build_dir, @params.target.to_s, name)
238238
end
239239

240240
def ext_build_dir
241-
File.join(@build_dir, @params.target, name + "-ext")
241+
File.join(@build_dir, @params.target.to_s, name + "-ext")
242242
end
243243

244244
def with_libyaml(libyaml)
@@ -279,7 +279,7 @@ def baseruby_path
279279
end
280280

281281
def configure_args(build_triple, toolchain)
282-
target = @params.target
282+
target = @params.target.triple
283283
default_exts = @params.default_exts
284284

285285
ldflags = @ldflags.dup

lib/ruby_wasm/build/product/libyaml.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def initialize(build_dir, target, toolchain)
1313
end
1414

1515
def product_build_dir
16-
File.join(@build_dir, target, "yaml-#{LIBYAML_VERSION}")
16+
File.join(@build_dir, target.to_s, "yaml-#{LIBYAML_VERSION}")
1717
end
1818

1919
def destdir

lib/ruby_wasm/build/product/openssl.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def initialize(build_dir, target, toolchain)
1313
end
1414

1515
def product_build_dir
16-
File.join(@build_dir, target, "openssl-#{OPENSSL_VERSION}")
16+
File.join(@build_dir, target.to_s, "openssl-#{OPENSSL_VERSION}")
1717
end
1818

1919
def destdir
@@ -42,7 +42,7 @@ def configure_args
4242
--libdir=lib
4343
-Wl,--allow-undefined
4444
]
45-
if @target == "wasm32-unknown-wasi"
45+
if @target.triple == "wasm32-unknown-wasi"
4646
args.concat %w[
4747
-D_WASI_EMULATED_SIGNAL
4848
-D_WASI_EMULATED_PROCESS_CLOCKS

lib/ruby_wasm/build/product/product.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ def initialize(target, toolchain)
1212
end
1313
def system_triplet_args
1414
args = []
15-
case @target
15+
case @target.triple
1616
when "wasm32-unknown-wasi"
1717
args.concat(%W[--host wasm32-wasi])
1818
when "wasm32-unknown-emscripten"
1919
args.concat(%W[--host wasm32-emscripten])
2020
else
21-
raise "unknown target: #{@target}"
21+
raise "unknown target: #{@target.triple}"
2222
end
2323
args
2424
end

lib/ruby_wasm/build/product/zlib.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def initialize(build_dir, target, toolchain)
1313
end
1414

1515
def product_build_dir
16-
File.join(@build_dir, target, "zlib-#{ZLIB_VERSION}")
16+
File.join(@build_dir, target.to_s, "zlib-#{ZLIB_VERSION}")
1717
end
1818

1919
def destdir

lib/ruby_wasm/build/target.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
module RubyWasm
2+
# A build target representation
3+
class Target
4+
attr_reader :triple
5+
6+
def initialize(triple, pic: false)
7+
@triple = triple
8+
@pic = pic
9+
end
10+
11+
def pic?
12+
@pic
13+
end
14+
15+
def to_s
16+
"#{@triple}#{@pic ? "-pic" : ""}"
17+
end
18+
19+
def cache_key(digest)
20+
digest << @triple
21+
digest << "pic" if @pic
22+
end
23+
end
24+
end

lib/ruby_wasm/packager.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def support_dynamic_linking?
7272
# Retrieves the build options used for building Ruby itself.
7373
def build_options
7474
default = {
75-
target: "wasm32-unknown-wasi",
75+
target: RubyWasm::Target.new("wasm32-unknown-wasi"),
7676
default_exts: ALL_DEFAULT_EXTS
7777
}
7878
override = @config || {}

lib/ruby_wasm/packager/core.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,14 @@ def artifact
9999
derive_build.crossruby.artifact
100100
end
101101

102+
def target
103+
RubyWasm::Target.new(@packager.full_build_options[:target], pic: true)
104+
end
105+
102106
def derive_build
103107
return @build if @build
104108
__skip__ =
105-
build ||= RubyWasm::Build.new(name, **@packager.full_build_options)
109+
build ||= RubyWasm::Build.new(name, **@packager.full_build_options, target: target)
106110
build.crossruby.user_exts = user_exts(build)
107111
# Emscripten uses --global-base=1024 by default, but it conflicts with
108112
# --stack-first and -z stack-size since global-base 1024 is smaller than

lib/ruby_wasm/rake_task.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def initialize(
1616
**options,
1717
&block
1818
)
19+
target = Target.new(target)
1920
@build =
2021
RubyWasm::Build.new(
2122
name,

0 commit comments

Comments
 (0)