diff options
| -rw-r--r-- | LEGAL | 40 | ||||
| -rw-r--r-- | build_config.rb | 3 | ||||
| -rw-r--r-- | mrbgems/mruby-random/mrbgem.rake | 2 | ||||
| -rw-r--r-- | mrbgems/mruby-random/src/mt19937ar.c | 47 | ||||
| -rw-r--r-- | mrbgems/mruby-random/src/mt19937ar.h | 47 | ||||
| -rw-r--r-- | src/dump.c | 1 | ||||
| -rw-r--r-- | src/parse.y | 4 | ||||
| -rw-r--r-- | tasks/mrbgems.rake | 3 | ||||
| -rw-r--r-- | tasks/mruby_build.rake | 15 | ||||
| -rw-r--r-- | tasks/mruby_build_commands.rake | 20 | ||||
| -rw-r--r-- | tools/mirb/mirb.c | 12 | ||||
| -rw-r--r-- | tools/mruby/mruby.c | 8 |
12 files changed, 65 insertions, 137 deletions
@@ -4,43 +4,3 @@ LEGAL NOTICE INFORMATION All the files in this distribution are covered under the MIT license (see the file MITL) except some files mentioned below: - -mrbgems/mruby-random/src/mt19937ar.[ch] - - A C-program for MT19937, with initialization improved 2002/1/26. - Coded by Takuji Nishimura and Makoto Matsumoto. - - Before using, initialize the state by using init_genrand(seed) - or init_by_array(init_key, key_length). - - Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, - All rights reserved. - Copyright (C) 2005, Mutsuo Saito, - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The names of its contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 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/mrbgems/mruby-random/mrbgem.rake b/mrbgems/mruby-random/mrbgem.rake index 7c2b2ddd5..38e93e4b1 100644 --- a/mrbgems/mruby-random/mrbgem.rake +++ b/mrbgems/mruby-random/mrbgem.rake @@ -1,4 +1,4 @@ MRuby::Gem::Specification.new('mruby-random') do |spec| - spec.license = 'MIT, BSD New(mt19937ar)' + spec.license = 'MIT' spec.authors = 'mruby developers' end diff --git a/mrbgems/mruby-random/src/mt19937ar.c b/mrbgems/mruby-random/src/mt19937ar.c index 8e3295a82..3246909e8 100644 --- a/mrbgems/mruby-random/src/mt19937ar.c +++ b/mrbgems/mruby-random/src/mt19937ar.c @@ -1,46 +1,7 @@ -/* - A C-program for MT19937, with initialization improved 2002/1/26. - Coded by Takuji Nishimura and Makoto Matsumoto. - - Before using, initialize the state by using init_genrand(seed) - or init_by_array(init_key, key_length). - - Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, - All rights reserved. - Copyright (C) 2005, Mutsuo Saito, - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The names of its contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - Any feedback is very welcome. - http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html - email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) +/* +** mt19937ar.c - MT Random functions +** +** See Copyright Notice in mruby.h */ #include <stdio.h> diff --git a/mrbgems/mruby-random/src/mt19937ar.h b/mrbgems/mruby-random/src/mt19937ar.h index 3f36cb1ff..d59bd8748 100644 --- a/mrbgems/mruby-random/src/mt19937ar.h +++ b/mrbgems/mruby-random/src/mt19937ar.h @@ -1,46 +1,7 @@ -/* - A C-program for MT19937, with initialization improved 2002/1/26. - Coded by Takuji Nishimura and Makoto Matsumoto. - - Before using, initialize the state by using init_genrand(seed) - or init_by_array(init_key, key_length). - - Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, - All rights reserved. - Copyright (C) 2005, Mutsuo Saito - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The names of its contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - Any feedback is very welcome. - http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html - email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) +/* +** mt19937ar.h - MT Random functions +** +** See Copyright Notice in mruby.h */ #define N 624 diff --git a/src/dump.c b/src/dump.c index 4714278b0..9579dabd4 100644 --- a/src/dump.c +++ b/src/dump.c @@ -512,6 +512,7 @@ mrb_dump_irep_cfunc(mrb_state *mrb, size_t start_index, int debug_info, FILE *fp result = mrb_dump_irep(mrb, start_index, debug_info, &bin, &bin_size); if (result == MRB_DUMP_OK) { + fprintf(fp, "#include <stdint.h>\n"); // for uint8_t under at least Darwin fprintf(fp, "const uint8_t %s[] = {", initname); while (bin_idx < bin_size) { if (bin_idx % 16 == 0 ) fputs("\n", fp); diff --git a/src/parse.y b/src/parse.y index 35bc18cd5..7972e87c4 100644 --- a/src/parse.y +++ b/src/parse.y @@ -38,6 +38,10 @@ static void yywarn(parser_state *p, const char *s); static void yywarning(parser_state *p, const char *s); static void backref_error(parser_state *p, node *n); +#ifndef isascii +#define isascii(c) (((c) & ~0x7f) == 0) +#endif + #define identchar(c) (isalnum(c) || (c) == '_' || !isascii(c)) typedef unsigned int stack_type; diff --git a/tasks/mrbgems.rake b/tasks/mrbgems.rake index 1f3aa0811..c18a9a181 100644 --- a/tasks/mrbgems.rake +++ b/tasks/mrbgems.rake @@ -8,7 +8,7 @@ MRuby.each_target do # loader all gems self.libmruby << objfile("#{build_dir}/mrbgems/gem_init") - file objfile("#{build_dir}/mrbgems/gem_init") => "#{build_dir}/mrbgems/gem_init.c" + file objfile("#{build_dir}/mrbgems/gem_init") => ["#{build_dir}/mrbgems/gem_init.c", "#{build_dir}/LEGAL"] file "#{build_dir}/mrbgems/gem_init.c" => [MRUBY_CONFIG] do |t| FileUtils.mkdir_p "#{build_dir}/mrbgems" open(t.name, 'w') do |f| @@ -42,7 +42,6 @@ MRuby.each_target do end # legal documents - self.libmruby << "#{build_dir}/LEGAL" file "#{build_dir}/LEGAL" => [MRUBY_CONFIG] do |t| open(t.name, 'w+') do |f| f.puts <<LEGAL 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 diff --git a/tools/mirb/mirb.c b/tools/mirb/mirb.c index ed3b105b6..008829cfb 100644 --- a/tools/mirb/mirb.c +++ b/tools/mirb/mirb.c @@ -10,6 +10,7 @@ #include <string.h> #include <mruby.h> +#include "mruby/array.h" #include <mruby/proc.h> #include <mruby/data.h> #include <mruby/compile.h> @@ -38,11 +39,8 @@ is_code_block_open(struct mrb_parser_state *parser) { int code_block_open = FALSE; - /* check for unterminated string */ - if (parser->lex_strterm) return TRUE; - /* check for heredoc */ - if (parser->heredoc_starts_nextline) return TRUE; + if (parser->parsing_heredoc != NULL) return TRUE; if (parser->heredoc_end_now) { parser->heredoc_end_now = FALSE; return FALSE; @@ -70,6 +68,9 @@ is_code_block_open(struct mrb_parser_state *parser) return code_block_open; } + /* check for unterminated string */ + if (parser->lex_strterm) return TRUE; + switch (parser->lstate) { /* all states which need more code */ @@ -236,6 +237,7 @@ main(int argc, char **argv) fputs("Invalid mrb interpreter, exiting mirb\n", stderr); return EXIT_FAILURE; } + mrb_define_global_const(mrb, "ARGV", mrb_ary_new_capa(mrb, 0)); n = parse_args(mrb, argc, argv, &args); if (n == EXIT_FAILURE) { @@ -337,9 +339,9 @@ main(int argc, char **argv) } ruby_code[0] = '\0'; last_code_line[0] = '\0'; - mrb_parser_free(parser); mrb_gc_arena_restore(mrb, ai); } + mrb_parser_free(parser); } mrbc_context_free(mrb, cxt); mrb_close(mrb); diff --git a/tools/mruby/mruby.c b/tools/mruby/mruby.c index c52eb5e7b..f554ff4df 100644 --- a/tools/mruby/mruby.c +++ b/tools/mruby/mruby.c @@ -268,6 +268,7 @@ main(int argc, char **argv) } else { mrbc_context *c = mrbc_context_new(mrb); + mrb_sym zero_sym = mrb_intern2(mrb, "$0", 2); mrb_value v; if (args.verbose) @@ -276,13 +277,18 @@ main(int argc, char **argv) c->no_exec = 1; if (args.rfp) { - mrbc_filename(mrb, c, args.cmdline ? args.cmdline : "-"); + char *cmdline; + cmdline = args.cmdline ? args.cmdline : "-"; + mrbc_filename(mrb, c, cmdline); + mrb_gv_set(mrb, zero_sym, mrb_str_new_cstr(mrb, cmdline)); v = mrb_load_file_cxt(mrb, args.rfp, c); } else { mrbc_filename(mrb, c, "-e"); + mrb_gv_set(mrb, zero_sym, mrb_str_new(mrb, "-e", 2)); v = mrb_load_string_cxt(mrb, args.cmdline, c); } + mrbc_context_free(mrb, c); if (mrb->exc) { if (!mrb_undef_p(v)) { |
