diff options
| author | Masaki Muranaka <[email protected]> | 2013-04-07 01:06:50 +0900 |
|---|---|---|
| committer | Masaki Muranaka <[email protected]> | 2013-04-07 01:06:50 +0900 |
| commit | 6e28c0eb28811a06ca90b38d6b448d785f52b50a (patch) | |
| tree | b94c6af9efa5334ee72578579a88ab16da7f36bd | |
| parent | e885e59d4537f164b600d2fc579cc195cc8df76f (diff) | |
| download | mruby-6e28c0eb28811a06ca90b38d6b448d785f52b50a.tar.gz mruby-6e28c0eb28811a06ca90b38d6b448d785f52b50a.zip | |
Add "test runner" support for cross builds.
"test runner" means target simulator like QEmu, GDB sim, and so on. Also "test runner" might be debug agents for real targets.
If you do not setup test_runner, Rake will work same as before.
| -rw-r--r-- | build_config.rb | 3 | ||||
| -rw-r--r-- | tasks/mruby_build.rake | 15 | ||||
| -rw-r--r-- | tasks/mruby_build_commands.rake | 20 |
3 files changed, 36 insertions, 2 deletions
diff --git a/build_config.rb b/build_config.rb index 5ea4aad4f..670721ee3 100644 --- a/build_config.rb +++ b/build_config.rb @@ -114,4 +114,7 @@ end # conf.build_mrbtest_lib_only # # conf.gem 'examples/mrbgems/c_and_ruby_extension_example' +# +# conf.test_runner.command = 'env' +# # end diff --git a/tasks/mruby_build.rake b/tasks/mruby_build.rake index e24a8ac61..dcb557bfd 100644 --- a/tasks/mruby_build.rake +++ b/tasks/mruby_build.rake @@ -194,10 +194,21 @@ module MRuby end # Build class CrossBuild < Build + attr_block %w(test_runner) + + def initialize(name, &block) + @test_runner = Command::CrossTestRunner.new(self) + super + end + def run_test mrbtest = exefile("#{build_dir}/test/mrbtest") - puts "You should run #{mrbtest} on target device." - puts + if (@test_runner.command == nil) + puts "You should run #{mrbtest} on target device." + puts + else + @test_runner.run(mrbtest) + end end end # CrossBuild end # MRuby diff --git a/tasks/mruby_build_commands.rake b/tasks/mruby_build_commands.rake index b647ccf98..b968d07be 100644 --- a/tasks/mruby_build_commands.rake +++ b/tasks/mruby_build_commands.rake @@ -259,4 +259,24 @@ module MRuby end end end + + class Command::CrossTestRunner < Command + attr_accessor :runner_options + attr_accessor :verbose_flag + attr_accessor :flags + + def initialize(build) + super + @command = nil + @runner_options = '%{flags} %{infile}' + @verbose_flag = '' + @flags = [] + end + + def run(testbinfile) + puts "TEST for " + @build.name + _run runner_options, { :flags => [flags, verbose_flag].flatten.join(' '), :infile => testbinfile } + end + end + end |
