summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt12
-rw-r--r--src/gc.c4
2 files changed, 14 insertions, 2 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 000000000..390129eb9
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,12 @@
+# build the core mruby C files
+
+find_package(BISON)
+bison_target(mruby parse.y "${CMAKE_CURRENT_BINARY_DIR}/parse.c")
+
+file(GLOB MRUBY_SRC_C "*.c")
+list(APPEND MRUBY_SRC_C "${CMAKE_CURRENT_BINARY_DIR}/parse.c")
+
+add_library(mruby_object OBJECT ${MRUBY_SRC_C} ${BISON_mruby_OUTPUTS})
+add_library(mruby_static STATIC EXCLUDE_FROM_ALL $<TARGET_OBJECTS:mruby_object>)
+
+# vim: ts=2 sts=2 sw=2 et
diff --git a/src/gc.c b/src/gc.c
index fde0edfa6..0147599ba 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -299,13 +299,13 @@ gc_mark_children(mrb_state *mrb, struct RBasic *obj)
{
struct RClass *c = (struct RClass*)obj;
- mrb_gc_mark_iv(mrb, (struct RObject*)obj);
mrb_gc_mark_mt(mrb, c);
mrb_gc_mark(mrb, (struct RBasic*)c->super);
}
- break;
+ /* fall through */
case MRB_TT_OBJECT:
+ case MRB_TT_DATA:
mrb_gc_mark_iv(mrb, (struct RObject*)obj);
break;