summaryrefslogtreecommitdiffhomepage
path: root/target
diff options
context:
space:
mode:
Diffstat (limited to 'target')
-rw-r--r--target/ArduinoDue.rb90
-rw-r--r--target/IntelEdison.rb69
-rw-r--r--target/IntelGalileo.rb106
-rw-r--r--target/RX630.rb81
-rw-r--r--target/android_arm64-v8a.rb26
-rw-r--r--target/android_armeabi.rb26
-rw-r--r--target/android_armeabi_v7a_neon_hard.rb28
-rw-r--r--target/appveyor.rb46
-rw-r--r--target/bench.rb11
-rw-r--r--target/chipKITMax32.rb86
-rw-r--r--target/cross-32bit.rb13
-rw-r--r--target/dreamcast_shelf.rb108
-rw-r--r--target/host-debug.rb24
-rw-r--r--target/host.rb98
-rw-r--r--target/travis.rb40
15 files changed, 852 insertions, 0 deletions
diff --git a/target/ArduinoDue.rb b/target/ArduinoDue.rb
new file mode 100644
index 000000000..09646a700
--- /dev/null
+++ b/target/ArduinoDue.rb
@@ -0,0 +1,90 @@
+MRuby::Build.new do |conf|
+
+ # Gets set by the VS command prompts.
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
+ toolchain :visualcpp
+ else
+ toolchain :gcc
+ end
+
+ enable_debug
+
+ # include the default GEMs
+ conf.gembox 'default'
+
+end
+
+# Cross Compiling configuration for Arduino Due
+# http://arduino.cc/en/Main/ArduinoBoardDue
+#
+# Requires Arduino IDE >= 1.5
+MRuby::CrossBuild.new("ArduinoDue") do |conf|
+ toolchain :gcc
+
+ # Mac OS X, Arduino IDE <= 1.5.6
+ # ARDUINO_PATH = '/Applications/Arduino.app/Contents/Resources/Java'
+ # Mac OS X, Arduino IDE >= 1.5.7
+ # ARDUINO_PATH = '/Applications/Arduino.app/Contents/Java'
+ # GNU Linux
+ ARDUINO_PATH = '/opt/arduino'
+ # Arduino IDE <= 1.5.6
+ BIN_PATH = "#{ARDUINO_PATH}/hardware/tools/g++_arm_none_eabi/bin"
+ # Arduino IDE >= 1.5.7
+ # BIN_PATH = "#{ARDUINO_PATH}/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin"
+ SAM_PATH = "#{ARDUINO_PATH}/hardware/arduino/sam"
+ TARGET_PATH = "#{SAM_PATH}/variants/arduino_due_x"
+
+ conf.cc do |cc|
+ cc.command = "#{BIN_PATH}/arm-none-eabi-gcc"
+ cc.include_paths << ["#{SAM_PATH}/system/libsam", "#{SAM_PATH}/system/CMSIS/CMSIS/Include/",
+ "#{SAM_PATH}/system/CMSIS/Device/ATMEL/",
+ "#{SAM_PATH}/cores/arduino", "#{SAM_PATH}/libraries","#{TARGET_PATH}"]
+ cc.flags = %w(-g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500
+ -Dprintf=iprintf -mcpu=cortex-m3 -DF_CPU=84000000L -DARDUINO=156 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM
+ -D__SAM3X8E__ -mthumb -DUSB_PID=0x003e -DUSB_VID=0x2341 -DUSBCON -DUSB_MANUFACTURER="Unknown" -DUSB_PRODUCT="Arduino Due")
+ cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"]
+
+ #configuration for low memory environment
+ cc.defines << %w(MRB_HEAP_PAGE_SIZE=64)
+ cc.defines << %w(KHASH_DEFAULT_SIZE=8)
+ cc.defines << %w(MRB_STR_BUF_MIN_SIZE=20)
+ cc.defines << %w(MRB_GC_STRESS)
+ #cc.defines << %w(MRB_DISABLE_STDIO) #if you dont need stdio.
+ #cc.defines << %w(POOL_PAGE_SIZE=1000) #effective only for use with mruby-eval
+ end
+
+ conf.cxx do |cxx|
+ cxx.command = conf.cc.command.dup
+ cxx.include_paths = conf.cc.include_paths.dup
+ cxx.flags = conf.cc.flags.dup
+ cxx.flags << %w(-fno-rtti -fno-exceptions)
+ cxx.defines = conf.cc.defines.dup
+ cxx.compile_options = conf.cc.compile_options.dup
+ end
+
+ conf.archiver do |archiver|
+ archiver.command = "#{BIN_PATH}/arm-none-eabi-ar"
+ archiver.archive_options = 'rcs "%{outfile}" %{objs}'
+ end
+
+ #no executables
+ conf.bins = []
+
+ #do not build executable test
+ conf.build_mrbtest_lib_only
+
+ #disable C++ exception
+ conf.disable_cxx_exception
+
+ #gems from core
+ conf.gem :core => "mruby-print"
+ conf.gem :core => "mruby-math"
+ conf.gem :core => "mruby-enum-ext"
+
+ #light-weight regular expression
+ conf.gem :github => "masamitsu-murase/mruby-hs-regexp", :branch => "master"
+
+ #Arduino API
+ #conf.gem :github =>"kyab/mruby-arduino", :branch => "master"
+
+end
diff --git a/target/IntelEdison.rb b/target/IntelEdison.rb
new file mode 100644
index 000000000..a22f9cfd2
--- /dev/null
+++ b/target/IntelEdison.rb
@@ -0,0 +1,69 @@
+# Cross-compiling setup for Intel Edison (poky linux) platform
+# Get SDK from here: https://software.intel.com/en-us/iot/hardware/edison/downloads
+# REMEMBER to check and update the SDK root in the constant POKY_EDISON_PATH
+
+MRuby::Build.new do |conf|
+ toolchain :gcc
+ conf.gembox 'default'
+ conf.cc.defines = %w(ENABLE_READLINE)
+ conf.gembox 'default'
+
+ #lightweight regular expression
+ conf.gem :github => "pbosetti/mruby-hs-regexp", :branch => "master"
+
+end
+
+# Define cross build settings
+MRuby::CrossBuild.new('core2-32-poky-linux') do |conf|
+ toolchain :gcc
+
+ # Mac OS X
+ #
+ POKY_EDISON_PATH = '/opt/poky-edison/1.7.2'
+
+ POKY_EDISON_SYSROOT = "#{POKY_EDISON_PATH}/sysroots/core2-32-poky-linux"
+ POKY_EDISON_X86_PATH = "#{POKY_EDISON_PATH}/sysroots/i386-pokysdk-darwin"
+ POKY_EDISON_BIN_PATH = "#{POKY_EDISON_X86_PATH}/usr/bin/i586-poky-linux"
+
+
+ conf.cc do |cc|
+ cc.command = "#{POKY_EDISON_BIN_PATH}/i586-poky-linux-gcc"
+ cc.include_paths << ["#{POKY_EDISON_SYSROOT}/usr/include", "#{POKY_EDISON_X86_PATH}/usr/include"]
+ cc.flags = %w(-m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -mstackrealign -fno-omit-frame-pointer)
+ cc.flags << %w(-O2 -pipe -g -feliminate-unused-debug-types)
+ cc.flags << "--sysroot=#{POKY_EDISON_SYSROOT}"
+ cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"]
+ cc.defines = %w(ENABLE_READLINE)
+ end
+
+ conf.cxx do |cxx|
+ cxx.command = "#{POKY_EDISON_BIN_PATH}/i586-poky-linux-g++"
+ cxx.include_paths = conf.cc.include_paths.dup
+ cxx.include_paths << ["#{POKY_EDISON_SYSROOT}/usr/include/c++/4.9.1"]
+ cxx.flags = conf.cc.flags.dup
+ cxx.defines = conf.cc.defines.dup
+ cxx.compile_options = conf.cc.compile_options.dup
+ end
+
+ conf.archiver do |archiver|
+ archiver.command = "#{POKY_EDISON_BIN_PATH}/i586-poky-linux-ar"
+ archiver.archive_options = 'rcs "%{outfile}" %{objs}'
+ end
+
+ conf.linker do |linker|
+ linker.command = "#{POKY_EDISON_BIN_PATH}/i586-poky-linux-g++"
+ linker.flags = %w(-m32 -march=i586)
+ linker.flags << "--sysroot=#{POKY_EDISON_SYSROOT}"
+ linker.flags << %w(-O1)
+ linker.libraries = %w(m pthread)
+ end
+
+ #do not build executable test
+ conf.build_mrbtest_lib_only
+
+ conf.gembox 'default'
+
+ #lightweight regular expression
+ conf.gem :github => "pbosetti/mruby-hs-regexp", :branch => "master"
+
+end
diff --git a/target/IntelGalileo.rb b/target/IntelGalileo.rb
new file mode 100644
index 000000000..42f39c456
--- /dev/null
+++ b/target/IntelGalileo.rb
@@ -0,0 +1,106 @@
+MRuby::Build.new do |conf|
+
+ # Gets set by the VS command prompts.
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
+ toolchain :visualcpp
+ else
+ toolchain :gcc
+ end
+
+ enable_debug
+
+ # include the default GEMs
+ conf.gembox 'default'
+
+end
+
+
+# Cross Compiling configuration for Intel Galileo on Arduino environment
+# http://arduino.cc/en/ArduinoCertified/IntelGalileo
+#
+# Requires Arduino IDE for Intel Galileo
+MRuby::CrossBuild.new("Galileo") do |conf|
+ toolchain :gcc
+
+ # Mac OS X
+ # Assume you renamed Arduino.app to Arduino_Galileo.app
+ GALILEO_ARDUINO_PATH = '/Applications/Arduino_Galileo.app/Contents/Resources/Java'
+ # GNU Linux
+ #ARDUINO_GALILEO_PATH = '/opt/arduino'
+
+ GALILEO_BIN_PATH = "#{GALILEO_ARDUINO_PATH}/hardware/tools/x86/i386-pokysdk-darwin/usr/bin/i586-poky-linux-uclibc"
+ GALILEO_SYSROOT = "#{GALILEO_ARDUINO_PATH}/hardware/tools/x86/i586-poky-linux-uclibc"
+ GALILEO_X86_PATH = "#{GALILEO_ARDUINO_PATH}/hardware/arduino/x86"
+
+
+ conf.cc do |cc|
+ cc.command = "#{GALILEO_BIN_PATH}/i586-poky-linux-uclibc-gcc"
+ cc.include_paths << ["#{GALILEO_X86_PATH}/cores/arduino", "#{GALILEO_X86_PATH}/variants/galileo_fab_d"]
+ cc.flags = %w(-m32 -march=i586 -c -g -Os -w
+ -ffunction-sections -fdata-sections -MMD -DARDUINO=153)
+ cc.flags << "--sysroot=#{GALILEO_SYSROOT}"
+ cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"]
+ end
+
+ conf.cxx do |cxx|
+ cxx.command = "#{GALILEO_BIN_PATH}/i586-poky-linux-uclibc-g++"
+ cxx.include_paths = conf.cc.include_paths.dup
+ cxx.include_paths << "#{GALILEO_ARDUINO_PATH}/hardware/tools/x86/i586-poky-linux-uclibc/usr/include/c++"
+ cxx.include_paths << "#{GALILEO_ARDUINO_PATH}/hardware/tools/x86/i586-poky-linux-uclibc/usr/include/c++/i586-poky-linux-uclibc"
+ cxx.flags = conf.cc.flags.dup
+ cxx.defines = conf.cc.defines.dup
+ cxx.compile_options = conf.cc.compile_options.dup
+ end
+
+ conf.archiver do |archiver|
+ archiver.command = "#{GALILEO_BIN_PATH}/i586-poky-linux-uclibc-ar"
+ archiver.archive_options = 'rcs "%{outfile}" %{objs}'
+ end
+
+ conf.linker do |linker|
+ linker.command = "#{GALILEO_BIN_PATH}/i586-poky-linux-uclibc-g++"
+ linker.flags = %w(-m32 -march=i586)
+ linker.flags << "--sysroot=#{GALILEO_SYSROOT}"
+ linker.flags << %w(-Os -Wl,--gc-sections)
+ linker.libraries = %w(m pthread)
+ end
+
+ #no executables
+ conf.bins = []
+
+ #do not build executable test
+ conf.build_mrbtest_lib_only
+
+ #official mrbgems
+ conf.gem :core => "mruby-sprintf"
+ conf.gem :core => "mruby-print"
+ conf.gem :core => "mruby-math"
+ conf.gem :core => "mruby-time"
+ conf.gem :core => "mruby-struct"
+ conf.gem :core => "mruby-enum-ext"
+ conf.gem :core => "mruby-string-ext"
+ conf.gem :core => "mruby-numeric-ext"
+ conf.gem :core => "mruby-array-ext"
+ conf.gem :core => "mruby-hash-ext"
+ conf.gem :core => "mruby-range-ext"
+ conf.gem :core => "mruby-proc-ext"
+ conf.gem :core => "mruby-symbol-ext"
+ conf.gem :core => "mruby-random"
+ conf.gem :core => "mruby-object-ext"
+ conf.gem :core => "mruby-objectspace"
+ conf.gem :core => "mruby-fiber"
+ conf.gem :core => "mruby-toplevel-ext"
+
+ #lightweigh regular expression
+ conf.gem :github => "masamitsu-murase/mruby-hs-regexp", :branch => "master"
+
+ #Arduino API
+ #conf.gem :github =>"kyab/mruby-arduino", :branch => "master" do |g|
+ # g.cxx.include_paths << "#{GALILEO_X86_PATH}/libraries/Wire"
+ # g.cxx.include_paths << "#{GALILEO_X86_PATH}/libraries/Servo"
+
+ #enable unsupported Servo class
+ # g.cxx.defines << "MRUBY_ARDUINO_GALILEO_ENABLE_SERVO"
+ #end
+
+end
diff --git a/target/RX630.rb b/target/RX630.rb
new file mode 100644
index 000000000..8b1bbb42f
--- /dev/null
+++ b/target/RX630.rb
@@ -0,0 +1,81 @@
+MRuby::Build.new do |conf|
+
+ # Gets set by the VS command prompts.
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
+ toolchain :visualcpp
+ else
+ toolchain :gcc
+ end
+
+ enable_debug
+
+ # include the default GEMs
+ conf.gembox 'default'
+
+end
+
+# Cross Compiling configuration for RX630
+# http://gadget.renesas.com/
+#
+# Requires gnurx_v14.03
+MRuby::CrossBuild.new("RX630") do |conf|
+ toolchain :gcc
+
+ # Linux
+ BIN_PATH = "/usr/share/gnurx_v14.03_elf-1/bin"
+
+ conf.cc do |cc|
+ cc.command = "#{BIN_PATH}/rx-elf-gcc"
+ cc.flags = "-Wall -g -O2 -flto -mcpu=rx600 -m64bit-doubles"
+ cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"]
+
+ #configuration for low memory environment
+ cc.defines << %w(MRB_USE_FLOAT)
+ cc.defines << %w(MRB_HEAP_PAGE_SIZE=64)
+ cc.defines << %w(KHASH_DEFAULT_SIZE=8)
+ cc.defines << %w(MRB_STR_BUF_MIN_SIZE=20)
+ cc.defines << %w(MRB_GC_STRESS)
+ cc.defines << %w(MRB_DISABLE_STDIO) #if you dont need stdio.
+ #cc.defines << %w(POOL_PAGE_SIZE=1000) #effective only for use with mruby-eval
+ end
+
+ conf.cxx do |cxx|
+ cxx.command = conf.cc.command.dup
+ cxx.include_paths = conf.cc.include_paths.dup
+ cxx.flags = conf.cc.flags.dup
+ cxx.defines = conf.cc.defines.dup
+ cxx.compile_options = conf.cc.compile_options.dup
+ end
+
+ conf.linker do |linker|
+ linker.command="#{BIN_PATH}/rx-elf-ld"
+ end
+
+ conf.archiver do |archiver|
+ archiver.command = "#{BIN_PATH}/rx-elf-ar"
+ archiver.archive_options = 'rcs "%{outfile}" %{objs}'
+ end
+
+ #no executables
+ conf.bins = []
+
+ #do not build executable test
+ conf.build_mrbtest_lib_only
+
+ #disable C++ exception
+ conf.disable_cxx_exception
+
+ #gems from core
+ conf.gem :core => "mruby-sprintf"
+ conf.gem :core => "mruby-print"
+ conf.gem :core => "mruby-math"
+ conf.gem :core => "mruby-enum-ext"
+ conf.gem :core => "mruby-numeric-ext"
+
+ #light-weight regular expression
+ #conf.gem :github => "masamitsu-murase/mruby-hs-regexp", :branch => "master"
+
+ #Arduino API
+ #conf.gem :github =>"kyab/mruby-arduino", :branch => "master"
+
+end
diff --git a/target/android_arm64-v8a.rb b/target/android_arm64-v8a.rb
new file mode 100644
index 000000000..70b0f4b97
--- /dev/null
+++ b/target/android_arm64-v8a.rb
@@ -0,0 +1,26 @@
+MRuby::Build.new do |conf|
+
+ # Gets set by the VS command prompts.
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
+ toolchain :visualcpp
+ else
+ toolchain :gcc
+ end
+
+ enable_debug
+
+ # include the default GEMs
+ conf.gembox 'default'
+end
+
+# Requires Android NDK r13 or later.
+MRuby::CrossBuild.new('android-arm64-v8a') do |conf|
+ params = {
+ :arch => 'arm64-v8a',
+ :platform => 'android-24',
+ :toolchain => :clang,
+ }
+ toolchain :android, params
+
+ conf.gembox 'default'
+end
diff --git a/target/android_armeabi.rb b/target/android_armeabi.rb
new file mode 100644
index 000000000..17330242a
--- /dev/null
+++ b/target/android_armeabi.rb
@@ -0,0 +1,26 @@
+MRuby::Build.new do |conf|
+
+ # Gets set by the VS command prompts.
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
+ toolchain :visualcpp
+ else
+ toolchain :gcc
+ end
+
+ enable_debug
+
+ # include the default GEMs
+ conf.gembox 'default'
+end
+
+# Requires Android NDK r13 or later.
+MRuby::CrossBuild.new('android-armeabi') do |conf|
+ params = {
+ :arch => 'armeabi',
+ :platform => 'android-24',
+ :toolchain => :clang,
+ }
+ toolchain :android, params
+
+ conf.gembox 'default'
+end
diff --git a/target/android_armeabi_v7a_neon_hard.rb b/target/android_armeabi_v7a_neon_hard.rb
new file mode 100644
index 000000000..3788bba7f
--- /dev/null
+++ b/target/android_armeabi_v7a_neon_hard.rb
@@ -0,0 +1,28 @@
+MRuby::Build.new do |conf|
+
+ # Gets set by the VS command prompts.
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
+ toolchain :visualcpp
+ else
+ toolchain :gcc
+ end
+
+ enable_debug
+
+ # include the default GEMs
+ conf.gembox 'default'
+end
+
+# Requires Android NDK r13 or later.
+MRuby::CrossBuild.new('android-armeabi-v7a-neon-hard') do |conf|
+ params = {
+ :arch => 'armeabi-v7a',
+ :mfpu => 'neon',
+ :mfloat_abi => 'hard',
+ :platform => 'android-24',
+ :toolchain => :clang,
+ }
+ toolchain :android, params
+
+ conf.gembox 'default'
+end
diff --git a/target/appveyor.rb b/target/appveyor.rb
new file mode 100644
index 000000000..25745daa8
--- /dev/null
+++ b/target/appveyor.rb
@@ -0,0 +1,46 @@
+def setup_option(conf)
+ conf.cc.flags[0].delete("/Zi") unless ENV['CFLAGS']
+ conf.cxx.flags[0].delete("/Zi") unless ENV['CFLAGS'] || ENV['CXXFLAGS']
+ conf.linker.flags << "/DEBUG:NONE" unless ENV['LDFLAGS']
+end
+
+MRuby::Build.new('full-debug') do |conf|
+ toolchain :visualcpp
+ enable_debug
+
+ # include all core GEMs
+ conf.gembox 'full-core'
+ conf.cc.defines += %w(MRB_GC_STRESS MRB_METHOD_CACHE MRB_ENABLE_DEBUG_HOOK)
+ setup_option(conf)
+
+ conf.enable_test
+end
+
+MRuby::Build.new do |conf|
+ toolchain :visualcpp
+
+ # include all core GEMs
+ conf.gembox 'full-core'
+ conf.compilers.each do |c|
+ c.defines += %w(MRB_GC_FIXED_ARENA)
+ end
+ setup_option(conf)
+ conf.enable_bintest
+ conf.enable_test
+end
+
+MRuby::Build.new('cxx_abi') do |conf|
+ toolchain :visualcpp
+
+ conf.gembox 'full-core'
+ conf.compilers.each do |c|
+ c.defines += %w(MRB_GC_FIXED_ARENA)
+ end
+ setup_option(conf)
+ conf.enable_bintest
+ conf.enable_test
+
+ enable_cxx_abi
+
+ build_mrbc_exec
+end
diff --git a/target/bench.rb b/target/bench.rb
new file mode 100644
index 000000000..30ec56ad3
--- /dev/null
+++ b/target/bench.rb
@@ -0,0 +1,11 @@
+MRuby::Build.new('bench') do |conf|
+ # Gets set by the VS command prompts.
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
+ toolchain :visualcpp
+ else
+ toolchain :gcc
+ conf.cc.flags << '-O3'
+ end
+
+ conf.gembox 'default'
+end
diff --git a/target/chipKITMax32.rb b/target/chipKITMax32.rb
new file mode 100644
index 000000000..8617d8d10
--- /dev/null
+++ b/target/chipKITMax32.rb
@@ -0,0 +1,86 @@
+MRuby::Build.new do |conf|
+
+ # Gets set by the VS command prompts.
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
+ toolchain :visualcpp
+ else
+ toolchain :gcc
+ end
+
+ enable_debug
+
+ # include the default GEMs
+ conf.gembox 'default'
+
+end
+
+# Cross Compiling configuration for Digilent chipKIT Max32
+# http://www.digilentinc.com/Products/Detail.cfm?Prod=CHIPKIT-MAX32
+#
+# Requires MPIDE (https://github.com/chipKIT32/chipKIT32-MAX)
+#
+# This configuration is based on @kyab's version
+# http://d.hatena.ne.jp/kyab/20130201
+MRuby::CrossBuild.new("chipKITMax32") do |conf|
+ toolchain :gcc
+
+ # Mac OS X
+ # MPIDE_PATH = '/Applications/Mpide.app/Contents/Resources/Java'
+ # GNU Linux
+ MPIDE_PATH = '/opt/mpide-0023-linux-20120903'
+
+ PIC32_PATH = "#{MPIDE_PATH}/hardware/pic32"
+
+ conf.cc do |cc|
+ cc.command = "#{PIC32_PATH}/compiler/pic32-tools/bin/pic32-gcc"
+ cc.include_paths << ["#{PIC32_PATH}/cores/pic32",
+ "#{PIC32_PATH}/variants/Max32",
+ "#{PIC32_PATH}/libraries"]
+ cc.flags = %w(-O2 -mno-smart-io -w -ffunction-sections -fdata-sections -g -mdebugger -Wcast-align
+ -fno-short-double -mprocessor=32MX795F512L -DF_CPU=80000000L -DARDUINO=23 -D_BOARD_MEGA_
+ -DMPIDEVER=0x01000202 -DMPIDE=23)
+ cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"]
+
+ #configuration for low memory environment
+ cc.defines << %w(MRB_HEAP_PAGE_SIZE=64)
+ cc.defines << %w(KHASH_DEFAULT_SIZE=8)
+ cc.defines << %w(MRB_STR_BUF_MIN_SIZE=20)
+ cc.defines << %w(MRB_GC_STRESS)
+ #cc.defines << %w(MRB_DISABLE_STDIO) #if you dont need stdio.
+ #cc.defines << %w(POOL_PAGE_SIZE=1000) #effective only for use with mruby-eval
+ end
+
+ conf.cxx do |cxx|
+ cxx.command = conf.cc.command.dup
+ cxx.include_paths = conf.cc.include_paths.dup
+ cxx.flags = conf.cc.flags.dup
+ cxx.defines = conf.cc.defines.dup
+ cxx.compile_options = conf.cc.compile_options.dup
+ end
+
+ conf.archiver do |archiver|
+ archiver.command = "#{PIC32_PATH}/compiler/pic32-tools/bin/pic32-ar"
+ archiver.archive_options = 'rcs "%{outfile}" %{objs}'
+ end
+
+ #no executables
+ conf.bins = []
+
+ #do not build test executable
+ conf.build_mrbtest_lib_only
+
+ #disable C++ exception
+ conf.disable_cxx_exception
+
+ #gems from core
+ conf.gem :core => "mruby-print"
+ conf.gem :core => "mruby-math"
+ conf.gem :core => "mruby-enum-ext"
+
+ #light-weight regular expression
+ conf.gem :github => "masamitsu-murase/mruby-hs-regexp", :branch => "master"
+
+ #Arduino API
+ #conf.gem :github =>"kyab/mruby-arduino", :branch => "master"
+
+end
diff --git a/target/cross-32bit.rb b/target/cross-32bit.rb
new file mode 100644
index 000000000..310ffc833
--- /dev/null
+++ b/target/cross-32bit.rb
@@ -0,0 +1,13 @@
+# Define cross build settings
+MRuby::CrossBuild.new('32bit') do |conf|
+ toolchain :gcc
+
+ conf.cc.flags << "-m32"
+ conf.linker.flags << "-m32"
+
+ conf.build_mrbtest_lib_only
+
+ conf.gem 'examples/mrbgems/c_and_ruby_extension_example'
+
+ conf.test_runner.command = 'env'
+end
diff --git a/target/dreamcast_shelf.rb b/target/dreamcast_shelf.rb
new file mode 100644
index 000000000..85b2ff20d
--- /dev/null
+++ b/target/dreamcast_shelf.rb
@@ -0,0 +1,108 @@
+MRuby::Build.new do |conf|
+ # Gets set by the VS command prompts
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
+ toolchain :visualcpp
+ else
+ toolchain :gcc
+ end
+
+ enable_debug
+
+ # Include the default GEMs
+ conf.gembox 'default'
+end
+
+# Cross Compiling configuration for the Sega Dreamcast
+# This configuration requires KallistiOS (KOS)
+# https://dreamcast.wiki
+#
+# Tested on GNU/Linux, MinGW-w64/MSYS2, Cygwin, macOS and MinGW/MSYS (see below)
+#
+MRuby::CrossBuild.new("dreamcast") do |conf|
+ toolchain :gcc
+
+ # Support for DreamSDK (based on MinGW/MSYS)
+ # To compile mruby with DreamSDK, RubyInstaller for Windows should be installed
+ DREAMSDK_HOME = ENV["DREAMSDK_HOME"]
+ MSYS_ROOT = !(DREAMSDK_HOME.nil? || DREAMSDK_HOME.empty?) ? "#{DREAMSDK_HOME}/msys/1.0" : ""
+
+ # Setting paths
+ DREAMCAST_PATH = "#{MSYS_ROOT}/opt/toolchains/dc"
+ KOS_PATH = "#{DREAMCAST_PATH}/kos"
+ BIN_PATH = "#{DREAMCAST_PATH}/sh-elf/bin"
+
+ # C compiler
+ # Flags were extracted from KallistiOS environment files
+ conf.cc do |cc|
+ cc.command = "#{BIN_PATH}/sh-elf-gcc"
+ cc.include_paths << ["#{KOS_PATH}/include", "#{KOS_PATH}/kernel/arch/dreamcast/include", "#{KOS_PATH}/addons/include", "#{KOS_PATH}/../kos-ports/include"]
+ cc.flags << ["-O2", "-fomit-frame-pointer", "-ml", "-m4-single-only", "-ffunction-sections", "-fdata-sections", "-Wall", "-g", "-fno-builtin", "-ml", "-m4-single-only", "-Wl,-Ttext=0x8c010000", "-Wl,--gc-sections", "-T#{KOS_PATH}/utils/ldscripts/shlelf.xc", "-nodefaultlibs"]
+ cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"]
+ cc.defines << %w(_arch_dreamcast)
+ cc.defines << %w(_arch_sub_pristine)
+ end
+
+ # C++ compiler
+ conf.cxx do |cxx|
+ cxx.command = conf.cc.command.dup
+ cxx.include_paths = conf.cc.include_paths.dup
+ cxx.flags = conf.cc.flags.dup
+ cxx.flags << %w(-fno-rtti -fno-exceptions)
+ cxx.defines = conf.cc.defines.dup
+ cxx.compile_options = conf.cc.compile_options.dup
+ end
+
+ # Linker
+ # There is an issue when making the mruby library with KallistiOS:
+ # 'newlib_kill.o' and 'newlib_getpid.o' aren't found so they are explicitly
+ # specified here at least for now.
+ conf.linker do |linker|
+ linker.command="#{BIN_PATH}/sh-elf-gcc"
+ linker.flags << ["#{MSYS_ROOT}/opt/toolchains/dc/kos/kernel/build/newlib_kill.o", "#{MSYS_ROOT}/opt/toolchains/dc/kos/kernel/build/newlib_getpid.o", "-Wl,--start-group -lkallisti -lc -lgcc -Wl,--end-group"]
+ linker.library_paths << ["#{KOS_PATH}/lib/dreamcast", "#{KOS_PATH}/addons/lib/dreamcast", "#{KOS_PATH}/../kos-ports/lib"]
+ end
+
+ # Archiver
+ conf.archiver do |archiver|
+ archiver.command = "#{BIN_PATH}/sh-elf-ar"
+ archiver.archive_options = 'rcs "%{outfile}" %{objs}'
+ end
+
+ # No executables
+ conf.bins = []
+
+ # Do not build executable test
+ conf.build_mrbtest_lib_only
+
+ # Disable C++ exception
+ conf.disable_cxx_exception
+
+ # Gems from core
+ # removing mruby-io
+ conf.gem :core => "mruby-metaprog"
+ conf.gem :core => "mruby-pack"
+ conf.gem :core => "mruby-sprintf"
+ conf.gem :core => "mruby-print"
+ conf.gem :core => "mruby-math"
+ conf.gem :core => "mruby-time"
+ conf.gem :core => "mruby-struct"
+ conf.gem :core => "mruby-compar-ext"
+ conf.gem :core => "mruby-enum-ext"
+ conf.gem :core => "mruby-string-ext"
+ conf.gem :core => "mruby-numeric-ext"
+ conf.gem :core => "mruby-array-ext"
+ conf.gem :core => "mruby-hash-ext"
+ conf.gem :core => "mruby-range-ext"
+ conf.gem :core => "mruby-proc-ext"
+ conf.gem :core => "mruby-symbol-ext"
+ conf.gem :core => "mruby-random"
+ conf.gem :core => "mruby-object-ext"
+ conf.gem :core => "mruby-objectspace"
+ conf.gem :core => "mruby-fiber"
+ conf.gem :core => "mruby-enumerator"
+ conf.gem :core => "mruby-enum-lazy"
+ conf.gem :core => "mruby-toplevel-ext"
+ conf.gem :core => "mruby-kernel-ext"
+ conf.gem :core => "mruby-class-ext"
+ conf.gem :core => "mruby-compiler"
+end
diff --git a/target/host-debug.rb b/target/host-debug.rb
new file mode 100644
index 000000000..4e89d162c
--- /dev/null
+++ b/target/host-debug.rb
@@ -0,0 +1,24 @@
+MRuby::Build.new('host-debug') do |conf|
+ # load specific toolchain settings
+
+ # Gets set by the VS command prompts.
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
+ toolchain :visualcpp
+ else
+ toolchain :gcc
+ end
+
+ enable_debug
+
+ # include the default GEMs
+ conf.gembox 'full-core'
+
+ # C compiler settings
+ conf.cc.defines = %w(MRB_ENABLE_DEBUG_HOOK)
+
+ # Generate mruby debugger command (require mruby-eval)
+ conf.gem :core => "mruby-bin-debugger"
+
+ # bintest
+ # conf.enable_bintest
+end
diff --git a/target/host.rb b/target/host.rb
new file mode 100644
index 000000000..4f0286882
--- /dev/null
+++ b/target/host.rb
@@ -0,0 +1,98 @@
+MRuby::Build.new do |conf|
+ # load specific toolchain settings
+
+ # Gets set by the VS command prompts.
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
+ toolchain :visualcpp
+ else
+ toolchain :gcc
+ end
+
+ # Use mrbgems
+ # conf.gem 'examples/mrbgems/ruby_extension_example'
+ # conf.gem 'examples/mrbgems/c_extension_example' do |g|
+ # g.cc.flags << '-g' # append cflags in this gem
+ # end
+ # conf.gem 'examples/mrbgems/c_and_ruby_extension_example'
+ # conf.gem :core => 'mruby-eval'
+ # conf.gem :mgem => 'mruby-onig-regexp'
+ # conf.gem :github => 'mattn/mruby-onig-regexp'
+ # conf.gem :git => '[email protected]:mattn/mruby-onig-regexp.git', :branch => 'master', :options => '-v'
+
+ # include the GEM box
+ conf.gembox 'full-core'
+
+ # C compiler settings
+ # conf.cc do |cc|
+ # cc.command = ENV['CC'] || 'gcc'
+ # cc.flags = [ENV['CFLAGS'] || %w()]
+ # cc.include_paths = ["#{root}/include"]
+ # cc.defines = %w()
+ # cc.option_include_path = %q[-I"%s"]
+ # cc.option_define = '-D%s'
+ # cc.compile_options = %Q[%{flags} -MMD -o "%{outfile}" -c "%{infile}"]
+ # end
+
+ # mrbc settings
+ # conf.mrbc do |mrbc|
+ # mrbc.compile_options = "-g -B%{funcname} -o-" # The -g option is required for line numbers
+ # end
+
+ # Linker settings
+ # conf.linker do |linker|
+ # linker.command = ENV['LD'] || 'gcc'
+ # linker.flags = [ENV['LDFLAGS'] || []]
+ # linker.flags_before_libraries = []
+ # linker.libraries = %w()
+ # linker.flags_after_libraries = []
+ # linker.library_paths = []
+ # linker.option_library = '-l%s'
+ # linker.option_library_path = '-L%s'
+ # linker.link_options = "%{flags} -o "%{outfile}" %{objs} %{libs}"
+ # end
+
+ # Archiver settings
+ # conf.archiver do |archiver|
+ # archiver.command = ENV['AR'] || 'ar'
+ # archiver.archive_options = 'rs "%{outfile}" %{objs}'
+ # end
+
+ # Parser generator settings
+ # conf.yacc do |yacc|
+ # yacc.command = ENV['YACC'] || 'bison'
+ # yacc.compile_options = %q[-o "%{outfile}" "%{infile}"]
+ # end
+
+ # gperf settings
+ # conf.gperf do |gperf|
+ # gperf.command = 'gperf'
+ # gperf.compile_options = %q[-L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k"1,3,$" "%{infile}" > "%{outfile}"]
+ # end
+
+ # file extensions
+ # conf.exts do |exts|
+ # exts.object = '.o'
+ # exts.executable = '' # '.exe' if Windows
+ # exts.library = '.a'
+ # end
+
+ # file separetor
+ # conf.file_separator = '/'
+
+ # Turn on `enable_debug` for better debugging
+ # enable_debug
+ enable_debug
+ conf.enable_bintest
+ conf.enable_test
+end
+
+MRuby::Build.new('test') do |conf|
+ # Gets set by the VS command prompts.
+ if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
+ toolchain :visualcpp
+ else
+ toolchain :gcc
+ end
+
+ conf.gembox 'default'
+end
diff --git a/target/travis.rb b/target/travis.rb
new file mode 100644
index 000000000..f4bef0a52
--- /dev/null
+++ b/target/travis.rb
@@ -0,0 +1,40 @@
+MRuby::Build.new('full-debug') do |conf|
+ toolchain :gcc
+ enable_debug
+
+ # include all core GEMs
+ conf.gembox 'full-core'
+ conf.cc.flags += %w(-Werror=declaration-after-statement)
+ conf.cc.defines += %w(MRB_GC_STRESS MRB_METHOD_CACHE MRB_ENABLE_DEBUG_HOOK)
+
+ conf.enable_test
+end
+
+MRuby::Build.new do |conf|
+ toolchain :gcc
+
+ # include all core GEMs
+ conf.gembox 'full-core'
+ conf.cc.flags += %w(-Werror=declaration-after-statement)
+ conf.compilers.each do |c|
+ c.defines += %w(MRB_GC_FIXED_ARENA)
+ end
+ conf.enable_bintest
+ conf.enable_test
+end
+
+MRuby::Build.new('cxx_abi') do |conf|
+ toolchain :gcc
+
+ conf.gembox 'full-core'
+ conf.cc.flags += %w(-fpermissive)
+ conf.compilers.each do |c|
+ c.defines += %w(MRB_GC_FIXED_ARENA)
+ end
+ conf.enable_bintest
+ conf.enable_test
+
+ enable_cxx_abi
+
+ build_mrbc_exec
+end