summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mrbgems/default.gembox3
-rw-r--r--mrbgems/mruby-version/mrbgem.rake4
-rw-r--r--mrbgems/mruby-version/mrblib/version.rb5
-rw-r--r--mrbgems/mruby-version/src/version.c16
-rw-r--r--mrbgems/mruby-version/src/version.h9
-rw-r--r--src/print.c8
6 files changed, 44 insertions, 1 deletions
diff --git a/mrbgems/default.gembox b/mrbgems/default.gembox
index 33ee99be0..6fe5c30f4 100644
--- a/mrbgems/default.gembox
+++ b/mrbgems/default.gembox
@@ -58,4 +58,7 @@ MRuby::GemBox.new do |conf|
# Generate mruby command
conf.gem :core => "mruby-bin-mruby"
+
+ # Use mruby verison
+ conf.gem :core => "mruby-version"
end
diff --git a/mrbgems/mruby-version/mrbgem.rake b/mrbgems/mruby-version/mrbgem.rake
new file mode 100644
index 000000000..d7934468f
--- /dev/null
+++ b/mrbgems/mruby-version/mrbgem.rake
@@ -0,0 +1,4 @@
+MRuby::Gem::Specification.new('mruby-version') do |spec|
+ spec.license = 'MIT'
+ spec.author = 'mruby developers'
+end
diff --git a/mrbgems/mruby-version/mrblib/version.rb b/mrbgems/mruby-version/mrblib/version.rb
new file mode 100644
index 000000000..d51158382
--- /dev/null
+++ b/mrbgems/mruby-version/mrblib/version.rb
@@ -0,0 +1,5 @@
+module Kernel
+ def show_version
+ "mruby " + MRUBY_VERSION + " (" + MRUBY_RELEASE_DATE + ")\n"
+ end
+end
diff --git a/mrbgems/mruby-version/src/version.c b/mrbgems/mruby-version/src/version.c
new file mode 100644
index 000000000..b3a6e8b9b
--- /dev/null
+++ b/mrbgems/mruby-version/src/version.c
@@ -0,0 +1,16 @@
+#include "mruby.h"
+#include "mruby/variable.h"
+#include "version.h"
+
+void
+mrb_mruby_version_gem_init(mrb_state* mrb)
+{
+ mrb_define_global_const(mrb, "MRUBY_VERSION", mrb_str_new_cstr(mrb, MRUBY_VERSION));
+ mrb_define_global_const(mrb, "MRUBY_RELEASE_DATE", mrb_str_new_cstr(mrb, MRUBY_RELEASE_DATE));
+}
+
+void
+mrb_mruby_version_gem_final(mrb_state* mrb)
+{
+}
+
diff --git a/mrbgems/mruby-version/src/version.h b/mrbgems/mruby-version/src/version.h
new file mode 100644
index 000000000..00bfa6500
--- /dev/null
+++ b/mrbgems/mruby-version/src/version.h
@@ -0,0 +1,9 @@
+#define MRUBY_VERSION "v1.0.0"
+#define MRUBY_PATCHLEVEL 0
+#define MRUBY_REVISION 0
+
+#define MRUBY_RELEASE_DATE "2014-01-31"
+#define MRUBY_RELEASE_YEAR 2014
+#define MRUBY_RELEASE_MONTH 1
+#define MRUBY_RELEASE_DAY 31
+
diff --git a/src/print.c b/src/print.c
index 4675d0e41..678e56d6b 100644
--- a/src/print.c
+++ b/src/print.c
@@ -6,6 +6,7 @@
#include "mruby.h"
#include "mruby/string.h"
+#include "mruby/variable.h"
static void
printstr(mrb_state *mrb, mrb_value obj)
@@ -56,7 +57,12 @@ mrb_show_version(mrb_state *mrb)
static const char version_msg[] = "mruby - Embeddable Ruby Copyright (c) 2010-2014 mruby developers\n";
mrb_value msg;
- msg = mrb_str_new(mrb, version_msg, sizeof(version_msg) - 1);
+ if (mrb_const_defined(mrb, mrb_obj_value(mrb->object_class), mrb_intern_lit(mrb, "MRUBY_VERSION"))) {
+ msg = mrb_funcall(mrb, mrb_obj_value(mrb->kernel_module), "show_version", 0);
+ }
+ else {
+ msg = mrb_str_new(mrb, version_msg, sizeof(version_msg) - 1);
+ }
printstr(mrb, msg);
}