diff options
| -rw-r--r-- | doc/mrbgems/c_and_ruby_extension_example/Makefile | 1 | ||||
| -rw-r--r-- | doc/mrbgems/c_extension_example/Makefile | 1 | ||||
| -rw-r--r-- | doc/mrbgems/ruby_extension_example/Makefile | 1 | ||||
| -rw-r--r-- | mrbgems/Makefile4gem | 7 | ||||
| -rw-r--r-- | mrbgems/build_tasks.rb | 1 | ||||
| -rw-r--r-- | src/variable.c | 5 |
6 files changed, 13 insertions, 3 deletions
diff --git a/doc/mrbgems/c_and_ruby_extension_example/Makefile b/doc/mrbgems/c_and_ruby_extension_example/Makefile index ba89e4ba4..1af5e95c1 100644 --- a/doc/mrbgems/c_and_ruby_extension_example/Makefile +++ b/doc/mrbgems/c_and_ruby_extension_example/Makefile @@ -9,6 +9,7 @@ GEM_RB_FILES := $(wildcard $(MRB_DIR)/*.rb) MRUBY_CFLAGS := MRUBY_LDFLAGS := +MRUBY_LIBS := gem-all : $(GEM_OBJECTS) gem-c-and-rb-files diff --git a/doc/mrbgems/c_extension_example/Makefile b/doc/mrbgems/c_extension_example/Makefile index 556b12d55..b0afa420c 100644 --- a/doc/mrbgems/c_extension_example/Makefile +++ b/doc/mrbgems/c_extension_example/Makefile @@ -7,6 +7,7 @@ GEM_OBJECTS := $(patsubst %.c, %.o, $(GEM_C_FILES)) MRUBY_CFLAGS := MRUBY_LDFLAGS := +MRUBY_LIBS := gem-all : $(GEM_OBJECTS) gem-c-files diff --git a/doc/mrbgems/ruby_extension_example/Makefile b/doc/mrbgems/ruby_extension_example/Makefile index 903666267..cdcbce024 100644 --- a/doc/mrbgems/ruby_extension_example/Makefile +++ b/doc/mrbgems/ruby_extension_example/Makefile @@ -6,6 +6,7 @@ GEM_RB_FILES := $(wildcard $(MRB_DIR)/*.rb) MRUBY_CFLAGS := MRUBY_LDFLAGS := +MRUBY_LIBS := gem-all : gem-rb-files diff --git a/mrbgems/Makefile4gem b/mrbgems/Makefile4gem index 08cdf11b5..d9f7d3724 100644 --- a/mrbgems/Makefile4gem +++ b/mrbgems/Makefile4gem @@ -113,14 +113,14 @@ gem-test-rb-files : gem_test.ctmp gem-clean-c-and-rb-files : -$(RM) $(GEM_PACKAGE) gem_mixlib.o gem_mixlib.c gem_mrblib_header.ctmp gem_mrblib_irep.ctmp gem_mixlib_init.ctmp gem_mrblib.rbtmp - -$(RM) gem_srclib.c gem_srclib.o $(GEM_OBJECTS) gem_test.ctmp gem_test.rbtmp gem-cflags.tmp gem-ldflags.tmp + -$(RM) gem_srclib.c gem_srclib.o $(GEM_OBJECTS) gem_test.ctmp gem_test.rbtmp gem-cflags.tmp gem-ldflags.tmp gem-libs.tmp gem-clean-c-files : - -$(RM) $(GEM_PACKAGE) gem_srclib.c gem_srclib.o $(GEM_OBJECTS) gem_test.ctmp gem_test.rbtmp gem-cflags.tmp gem-ldflags.tmp + -$(RM) $(GEM_PACKAGE) gem_srclib.c gem_srclib.o $(GEM_OBJECTS) gem_test.ctmp gem_test.rbtmp gem-cflags.tmp gem-ldflags.tmp gem-libs.tmp gem-clean-rb-files : -$(RM) $(GEM_PACKAGE) gem_mrblib.o gem_mrblib.c gem_mrblib_header.ctmp gem_mrblib_init.ctmp gem_mrblib_irep.ctmp gem_mrblib.rbtmp - -$(RM) gem_test.ctmp gem_test.rbtmp gem-cflags.tmp gem-ldflags.tmp + -$(RM) gem_test.ctmp gem_test.rbtmp gem-cflags.tmp gem-ldflags.tmp gem-libs.tmp %.o : %.c @@ -134,4 +134,5 @@ clean : gem-clean gem-flags : @echo "$(MRUBY_CFLAGS) -I`pwd`/include" > gem-cflags.tmp @echo "$(MRUBY_LDFLAGS)" > gem-ldflags.tmp + @echo "$(MRUBY_LIBS)" > gem-libs.tmp diff --git a/mrbgems/build_tasks.rb b/mrbgems/build_tasks.rb index 76bff7b0e..f52a786b0 100644 --- a/mrbgems/build_tasks.rb +++ b/mrbgems/build_tasks.rb @@ -24,6 +24,7 @@ task :load_mrbgems_flags do sh "#{MAKE} gem-flags -C #{path} #{gem_make_flags}" CFLAGS << File.read("#{path}/gem-cflags.tmp").chomp LDFLAGS << File.read("#{path}/gem-ldflags.tmp").chomp + LIBS << File.read("#{path}/gem-libs.tmp").chomp end end diff --git a/src/variable.c b/src/variable.c index 7743c6309..71187af5f 100644 --- a/src/variable.c +++ b/src/variable.c @@ -676,6 +676,8 @@ mrb_mod_class_variables(mrb_state *mrb, mrb_value mod) mrb_value mrb_mod_cv_get(mrb_state *mrb, struct RClass * c, mrb_sym sym) { + struct RClass * cls = c; + while (c) { if (c->iv) { iv_tbl *t = c->iv; @@ -686,6 +688,9 @@ mrb_mod_cv_get(mrb_state *mrb, struct RClass * c, mrb_sym sym) } c = c->super; } + mrb_raisef(mrb, E_NAME_ERROR, "uninitialized class variable %s in %s", + mrb_sym2name(mrb, sym), mrb_class_name(mrb, cls)); + /* not reached */ return mrb_nil_value(); } |
