summaryrefslogtreecommitdiffhomepage
path: root/tasks/bin.rake
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-01-06 17:06:07 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-01-06 17:06:07 +0900
commit74c9502bd45fd70926c86ce564c2d5d1df9a6dd0 (patch)
tree4dbf22f15e482bf082712286bcf0daa5e51aa41c /tasks/bin.rake
parent1341e53961b3e99ac67d803e5ead677e976d18c4 (diff)
parent456878ba06358a77d4ab9312fdc69bf780f8fdf4 (diff)
downloadmruby-74c9502bd45fd70926c86ce564c2d5d1df9a6dd0.tar.gz
mruby-74c9502bd45fd70926c86ce564c2d5d1df9a6dd0.zip
Merge branch 'improve-source-scanning-for-presym' of https://github.com/shuujii/mruby into shuujii-improve-source-scanning-for-presym
Diffstat (limited to 'tasks/bin.rake')
-rw-r--r--tasks/bin.rake35
1 files changed, 35 insertions, 0 deletions
diff --git a/tasks/bin.rake b/tasks/bin.rake
new file mode 100644
index 000000000..afef065a1
--- /dev/null
+++ b/tasks/bin.rake
@@ -0,0 +1,35 @@
+install_task = ->(src) do
+ dst = "#{MRuby::Build.install_dir}/#{File.basename(src)}"
+ file dst => src do
+ install_D src, dst
+ end
+ dst
+end
+
+MRuby.each_target do |build|
+ if build.host? && build.mrbc_build && !build.gems["mruby-bin-mrbc"]
+ exe = build.exefile("#{build.mrbc_build.build_dir}/bin/mrbc")
+ build.products << install_task.(exe)
+ end
+
+ build.bins.each do |bin|
+ exe = build.exefile("#{build.build_dir}/bin/#{bin}")
+ build.products << (build.host? ? install_task.(exe) : exe)
+ end
+
+ linker_attrs = build.gems.map{|gem| gem.linker.run_attrs}.transpose
+ build.gems.each do |gem|
+ gem.bins.each do |bin|
+ exe = build.exefile("#{build.build_dir}/bin/#{bin}")
+ objs = Dir["#{gem.dir}/tools/#{bin}/*.{c,cpp,cxx,cc}"].map do |f|
+ build.objfile(f.pathmap("#{gem.build_dir}/tools/#{bin}/%n"))
+ end
+
+ file exe => objs.concat(build.libraries) do |t|
+ build.linker.run t.name, t.prerequisites, *linker_attrs
+ end
+
+ build.products << (build.host? ? install_task.(exe) : exe)
+ end
+ end
+end