mruby1.2.0をrx63nようにmakeしてみる
今年はブログもがんばって書いていこうかなと思っています。
新年早々、最新のmrubyをビルドしてみました。
とりあえず、makeできました。
build_config.rb
build_config.rb にrx用のクロスビルド環境を追記して、
# Cross build for Renesas RX63N MRuby::CrossBuild.new('rx63n') do |conf| toolchain :rx63n # conf.cc.flags << "-m32" # conf.linker.flags << "-m32" # # conf.build_mrbtest_lib_only # #conf.gem "#{root}/mrbgems/mruby-array-ext" ##conf.gem "#{root}/mrbgems/mruby-bin-debugger ##conf.gem "#{root}/mrbgems/mruby-bin-mirb" ##conf.gem "#{root}/mrbgems/mruby-bin-mrbc" ##conf.gem "#{root}/mrbgems/mruby-bin-mruby" ##conf.gem "#{root}/mrbgems/mruby-bin-mruby-config" #conf.gem "#{root}/mrbgems/mruby-bin-strip" #conf.gem "#{root}/mrbgems/mruby-compiler" #conf.gem "#{root}/mrbgems/mruby-enumerator" #conf.gem "#{root}/mrbgems/mruby-enum-ext" #conf.gem "#{root}/mrbgems/mruby-enum-lazy" #conf.gem "#{root}/mrbgems/mruby-error" #conf.gem "#{root}/mrbgems/mruby-eval" #conf.gem "#{root}/mrbgems/mruby-exit" #conf.gem "#{root}/mrbgems/mruby-fiber" #conf.gem "#{root}/mrbgems/mruby-hash-ext" #conf.gem "#{root}/mrbgems/mruby-kernel-ext" #conf.gem "#{root}/mrbgems/mruby-math" conf.gem "#{root}/mrbgems/mruby-numeric-ext" #10.chr #conf.gem "#{root}/mrbgems/mruby-object-ext" #conf.gem "#{root}/mrbgems/mruby-objectspace" #conf.gem "#{root}/mrbgems/mruby-print" #conf.gem "#{root}/mrbgems/mruby-proc-ext" conf.gem "#{root}/mrbgems/mruby-random" #conf.gem "#{root}/mrbgems/mruby-range-ext" #conf.gem "#{root}/mrbgems/mruby-sprintf" #conf.gem "#{root}/mrbgems/mruby-string-ext" #str.split(",") #conf.gem "#{root}/mrbgems/mruby-struct" #conf.gem "#{root}/mrbgems/mruby-symbol-ext" #conf.gem "#{root}/mrbgems/mruby-test" #conf.gem "#{root}/mrbgems/mruby-time" #conf.gem "#{root}/mrbgems/mruby-toplevel-ext" # end
rx63n.rake
rx63n.rake を作って、
MRuby::Toolchain.new(:rx63n) do |conf| toolchain :gcc TOOL_PATH = "/usr/local/tkdn-20110720/rx-elf/bin" conf.cc do |cc| cc.command="#{TOOL_PATH}/rx-elf-gcc" cc.flags << "-Wall -g -O2" cc.defines << "__CYGWIN32__" cc.compile_options = "%{flags} -o %{outfile} -c %{infile}" conf.linker do |linker| linker.command="#{TOOL_PATH}/rx-elf-ld" end conf.archiver do |archiver| archiver.command = "#{TOOL_PATH}/rx-elf-ar" archiver.archive_options = 'rcs %{outfile} %{objs}' end end conf.bins = [] end
mrbconf.h
mrbconf.h を書き換えて
/* ** mrbconf.h - mruby core configuration ** ** See Copyright Notice in mruby.h */ #ifndef MRUBYCONF_H #define MRUBYCONF_H /* configuration options: */ /* add -DMRB_USE_FLOAT to use float instead of double for floating point numbers */ #define MRB_USE_FLOAT /* add -DMRB_INT16 to use 16bit integer for mrb_int; conflict with MRB_INT64 */ //#define MRB_INT16 /* add -DMRB_INT64 to use 64bit integer for mrb_int; conflict with MRB_INT16 */ //#define MRB_INT64 /* represent mrb_value in boxed double; conflict with MRB_USE_FLOAT */ //#define MRB_NAN_BOXING /* define on big endian machines; used by MRB_NAN_BOXING */ //#define MRB_ENDIAN_BIG /* represent mrb_value as a word (natural unit of data for the processor) */ //#define MRB_WORD_BOXING /* string class to handle UTF-8 encoding */ //#define MRB_UTF8_STRING /* argv max size in mrb_funcall */ #define MRB_FUNCALL_ARGC_MAX 6 /* number of object per heap page */ #define MRB_HEAP_PAGE_SIZE 24 /* use segmented list for IV table */ #define MRB_USE_IV_SEGLIST /* initial size for IV khash; ignored when MRB_USE_IV_SEGLIST is set */ #define MRB_IVHASH_INIT_SIZE 3 /* if _etext and _edata available, mruby can reduce memory used by symbols */ //#define MRB_USE_ETEXT_EDATA /* do not use __init_array_start to determine readonly data section; effective only when MRB_USE_ETEXT_EDATA is defined */ //#define MRB_NO_INIT_ARRAY_START /* turn off generational GC by default */ //#define MRB_GC_TURN_OFF_GENERATIONAL /* default size of khash table bucket */ #define KHASH_DEFAULT_SIZE 2 /* allocated memory address alignment */ //#define POOL_ALIGNMENT 4 /* page size of memory pool */ #define POOL_PAGE_SIZE 256 /* initial minimum size for string buffer */ //#define MRB_STR_BUF_MIN_SIZE 128 /* arena size */ //#define MRB_GC_ARENA_SIZE 100 /* fixed size GC arena */ //#define MRB_GC_FIXED_ARENA /* state atexit stack size */ //#define MRB_FIXED_STATE_ATEXIT_STACK_SIZE 5 /* fixed size state atexit stack */ //#define MRB_FIXED_STATE_ATEXIT_STACK /* -DMRB_DISABLE_XXXX to drop following features */ //#define MRB_DISABLE_STDIO /* use of stdio */ /* -DMRB_ENABLE_XXXX to enable following features */ //#define MRB_ENABLE_DEBUG_HOOK /* hooks for debugger */ /* end of configuration */ /* define MRB_DISABLE_XXXX from DISABLE_XXX (for compatibility) */ #ifdef DISABLE_STDIO #define MRB_DISABLE_STDIO #endif /* define MRB_ENABLE_XXXX from ENABLE_XXX (for compatibility) */ #ifdef ENABLE_DEBUG #define MRB_ENABLE_DEBUG_HOOK #endif #ifndef MRB_DISABLE_STDIO # include <stdio.h> #endif #ifndef FALSE # define FALSE 0 #endif #ifndef TRUE # define TRUE 1 #endif #endif /* MRUBYCONF_H */
make
makeしました。できたようです。あとで、githubに上げたいと思います。
================================================ Config Name: test Output Directory: build/test Binaries: mrbtest Included Gems: mruby-sprintf - standard Kernel#sprintf method mruby-print - standard print/puts/p mruby-math - standard Math module mruby-time - standard Time class mruby-struct - standard Struct class mruby-enum-ext - Enumerable module extension mruby-string-ext - String class extension mruby-numeric-ext - Numeric class extension mruby-array-ext - Array class extension mruby-hash-ext - Hash class extension mruby-range-ext - Range class extension mruby-proc-ext - Proc class extension mruby-symbol-ext - Symbol class extension mruby-random - Random class mruby-object-ext - Object class extension mruby-objectspace - ObjectSpace class mruby-fiber - Fiber class mruby-enumerator - Enumerator class mruby-enum-lazy - Enumerable::Lazy class mruby-toplevel-ext - toplevel object (main) methods extension mruby-compiler - mruby compiler library mruby-bin-mirb - mirb command - Binaries: mirb mruby-bin-mruby - mruby command - Binaries: mruby mruby-bin-strip - irep dump debug section remover command - Binaries: mruby-strip mruby-kernel-ext - Kernel module extension mruby-test - mruby test ================================================ ================================================ Config Name: rx63n Output Directory: build/rx63n Included Gems: mruby-numeric-ext - Numeric class extension mruby-random - Random class ================================================