summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore7
-rw-r--r--Makefile2
-rw-r--r--mrblib/Makefile1
-rw-r--r--src/Makefile1
-rw-r--r--src/proc.c18
-rw-r--r--tools/mrbc/Makefile1
-rw-r--r--tools/mruby/Makefile1
7 files changed, 29 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index 76fdc3066..94a9f5d79 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
*.dylib
*.inc
*.o
+*.a
*.orig
*.rej
*.sav
@@ -14,5 +15,7 @@
.svn
/.git
cscope.out
-mruby.exe
-y.tab.c
+/src/y.tab.c
+/bin
+/mrblib/mrblib.c
+/mrblib/*.*tmp
diff --git a/Makefile b/Makefile
index 76f4ef594..55988683b 100644
--- a/Makefile
+++ b/Makefile
@@ -113,8 +113,10 @@ $(OBJM) : $(MSRC)
.PHONY : clean
clean :
$(MAKE) clean -C src $(MAKE_FLAGS)
+ $(MAKE) clean -C tools/mrbc $(MAKE_FLAGS)
$(MAKE) clean -C tools/mruby $(MAKE_FLAGS)
-rm -f $(EXE) $(OBJM)
-rm -f $(OBJM:.o=.d)
+ -rm -f $(patsubst %.c,%.o,$(EXCEPT1)) $(patsubst %.c,%.d,$(EXCEPT1))
-rm -f $(IOSLIB) $(IOSSIMLIB) $(IOSDEVLIB)
@echo "make: removing targets, objects and depend files of `pwd`"
diff --git a/mrblib/Makefile b/mrblib/Makefile
index 0192ec941..8fc808cc4 100644
--- a/mrblib/Makefile
+++ b/mrblib/Makefile
@@ -59,5 +59,6 @@ $(RLIB) : $(MRBS)
.PHONY : clean
clean :
-rm -f $(MRBC) $(MLIB) $(CLIB) $(RLIB) $(DLIB)
+ -rm -f $(patsubst %.c,%.o,$(EXCEPT1)) $(patsubst %.c,%.d,$(EXCEPT1))
@echo "make: removing targets, objects and depend files of `pwd`"
diff --git a/src/Makefile b/src/Makefile
index abb6f4c4b..fb5483a72 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -86,5 +86,6 @@ clean :
$(MAKE) clean -C ../mrblib $(MAKE_FLAGS)
-rm -f $(LIB) $(OBJS) $(OBJY) $(YC)
-rm -f $(OBJS:.o=.d) $(OBJY:.o=.d)
+ -rm -f $(patsubst %.c,%.o,$(EXCEPT1)) $(patsubst %.c,%.d,$(EXCEPT1))
@echo "make: removing targets, objects and depend files of `pwd`"
diff --git a/src/proc.c b/src/proc.c
index aae9b1932..502650ff5 100644
--- a/src/proc.c
+++ b/src/proc.c
@@ -50,6 +50,22 @@ mrb_proc_new_cfunc(mrb_state *mrb, mrb_func_t func)
return p;
}
+static mrb_value
+mrb_proc_initialize(mrb_state *mrb, mrb_value self)
+{
+ mrb_value blk = mrb->stack[mrb->ci->argc+1];
+
+ if (!mrb_nil_p(blk)) {
+ *mrb_proc_ptr(self) = *mrb_proc_ptr(blk);
+ }
+ else {
+ /* Calling Proc.new without a block is not implemented yet */
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "tried to create Proc object without a block");
+ }
+
+ return self;
+}
+
int
mrb_proc_cfunc_p(struct RProc *p)
{
@@ -86,6 +102,8 @@ mrb_init_proc(mrb_state *mrb)
mrb->proc_class = mrb_define_class(mrb, "Proc", mrb->object_class);
+ mrb_define_method(mrb, mrb->proc_class, "initialize", mrb_proc_initialize, ARGS_NONE());
+
m = mrb_proc_new(mrb, call_irep);
mrb_define_method_raw(mrb, mrb->proc_class, mrb_intern(mrb, "call"), m);
mrb_define_method_raw(mrb, mrb->proc_class, mrb_intern(mrb, "[]"), m);
diff --git a/tools/mrbc/Makefile b/tools/mrbc/Makefile
index ba7764b78..7271a2fed 100644
--- a/tools/mrbc/Makefile
+++ b/tools/mrbc/Makefile
@@ -69,5 +69,6 @@ $(YC) : $(YSRC)
clean :
-rm -f $(EXE) $(OBJS) $(OBJY) $(YC)
-rm -f $(OBJS:.o=.d) $(OBJY:.o=.d)
+ -rm -f $(patsubst %.c,%.o,$(EXCEPT1)) $(patsubst %.c,%.d,$(EXCEPT1))
@echo "make: removing targets, objects and depend files of `pwd`"
diff --git a/tools/mruby/Makefile b/tools/mruby/Makefile
index dfb8b7f7c..62d7cdd3f 100644
--- a/tools/mruby/Makefile
+++ b/tools/mruby/Makefile
@@ -86,4 +86,5 @@ clean :
$(MAKE) clean -C ../../mrblib $(MAKE_FLAGS)
-rm -f $(EXE) $(OBJS) $(OBJY) $(YC) $(EXTS)
-rm -f $(OBJS:.o=.d) $(OBJY:.o=.d) $(EXTS:.o=.d)
+ -rm -f $(patsubst %.c,%.o,$(EXCEPT1)) $(patsubst %.c,%.d,$(EXCEPT1))
@echo "make: removing targets, objects and depend files of `pwd`"