コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

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
================================================