calog/vendor/mruby/tasks/amalgam.rake
2026-07-04 20:25:00 -05:00

34 lines
1,023 B
Ruby
Vendored

require_relative '../lib/mruby/amalgam'
MRuby.each_target do
next unless libmruby_enabled?
amalgam_dir = "#{build_dir}/amalgam"
header_file = "#{amalgam_dir}/mruby.h"
source_file = "#{amalgam_dir}/mruby.c"
# Header depends on presym generation (for presym headers)
file header_file => [:gensym] do |t|
amalgam = MRuby::Amalgam.new(self)
amalgam.generate_header(t.name)
end
# Source depends on generated files (mrblib.c, gem_init.c, etc.)
mrblib_src = "#{build_dir}/mrblib/mrblib.c"
gem_init_src = "#{build_dir}/mrbgems/gem_init.c"
source_deps = [:gensym]
source_deps << mrblib_src if File.exist?(mrblib_src) || libmruby_enabled?
file source_file => source_deps do |t|
amalgam = MRuby::Amalgam.new(self)
amalgam.generate_source(t.name)
end
desc "Generate amalgamated mruby.h and mruby.c in #{amalgam_dir}"
task :amalgam => [header_file, source_file] do
puts "Amalgamation complete:"
puts " Header: #{header_file}"
puts " Source: #{source_file}"
end
end