From eb52c29b2d85e2eaac7896c70245f8da5bbaf5e2 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 19 Nov 2020 12:53:34 +0900 Subject: Test each combination of boxing, `mrb_int` size, and archtecture. Boxing: * `MRB_NO_BOXING` (`mrb_value` packed in `struct`) * `MRB_WORD_BOXING` (`mrb_value` packed in `struct`) default * `MRB_NAN_BOXING` (`mrb_value` packed in `double`) `mrb_int` size * `MRB_INT32` (`int32_t` as `mrb_int`) * `MRB_INT64` (`int64` as `mrb_int`) conflict with `MRB_NAN_BOXING' Architecture * `MRB_64BIT` (`sizeof(void*)` is 64 bits) * `MRB_32BIT` (`sizeof(void*)` is 32 bits) --- build_config/boxing.rb | 129 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 124 insertions(+), 5 deletions(-) diff --git a/build_config/boxing.rb b/build_config/boxing.rb index 242e0fe0a..75046e371 100644 --- a/build_config/boxing.rb +++ b/build_config/boxing.rb @@ -1,32 +1,151 @@ -MRuby::Build.new('no-boxing') do |conf| +MRuby::Build.new('boxing-no-m64-i64') do |conf| toolchain :gcc + conf.cc.flags << '-m64' + conf.linker.flags << '-m64' + conf.gembox 'default' conf.compilers.each do |c| - c.defines += %w(MRB_NO_BOXING) + c.defines += %w(MRB_NO_BOXING MRB_INT64) end + conf.enable_debug conf.enable_test conf.enable_bintest end -MRuby::Build.new('word_boxing') do |conf| +MRuby::Build.new('boxing-no-m64-i32') do |conf| toolchain :gcc + conf.cc.flags << '-m64' + conf.linker.flags << '-m64' + conf.gembox 'default' conf.compilers.each do |c| - c.defines += %w(MRB_WORD_BOXING) + c.defines += %w(MRB_NO_BOXING MRB_INT32) end + conf.enable_debug conf.enable_test conf.enable_bintest end -MRuby::Build.new('nan_boxing') do |conf| +MRuby::Build.new('boxing-no-m32-i64') do |conf| toolchain :gcc + conf.cc.flags << '-m32' + conf.linker.flags << '-m32' + + # Turn on `enable_debug` for better debugging + conf.gembox 'default' + conf.compilers.each do |c| + c.defines += %w(MRB_NO_BOXING MRB_INT64) + end + conf.enable_debug + conf.enable_test + conf.enable_bintest +end + +MRuby::Build.new('boxing-no-m32-i32') do |conf| + toolchain :gcc + + conf.cc.flags << '-m32' + conf.linker.flags << '-m32' + + # Turn on `enable_debug` for better debugging + conf.gembox 'default' + conf.compilers.each do |c| + c.defines += %w(MRB_NO_BOXING MRB_INT32) + end + conf.enable_debug + conf.enable_test + conf.enable_bintest +end + +MRuby::Build.new('boxing-word-m64-i64') do |conf| + toolchain :gcc + + conf.cc.flags << '-m64' + conf.linker.flags << '-m64' + + conf.gembox 'default' + conf.compilers.each do |c| + c.defines += %w(MRB_WORD_BOXING MRB_INT64) + end + conf.enable_debug + conf.enable_test + conf.enable_bintest +end + +MRuby::Build.new('boxing-word-m64-i32') do |conf| + toolchain :gcc + + conf.cc.flags << '-m64' + conf.linker.flags << '-m64' + + conf.gembox 'default' + conf.compilers.each do |c| + c.defines += %w(MRB_WORD_BOXING MRB_INT32) + end + conf.enable_debug + conf.enable_test + conf.enable_bintest +end + +MRuby::Build.new('boxing-word-m32-i64') do |conf| + toolchain :gcc + + conf.cc.flags << '-m32' + conf.linker.flags << '-m32' + + conf.gembox 'default' + conf.compilers.each do |c| + c.defines += %w(MRB_WORD_BOXING MRB_INT64) + end + conf.enable_debug + conf.enable_test + conf.enable_bintest +end + +MRuby::Build.new('boxing-word-m32-i32') do |conf| + toolchain :gcc + + conf.cc.flags << '-m32' + conf.linker.flags << '-m32' + + conf.gembox 'default' + conf.compilers.each do |c| + c.defines += %w(MRB_WORD_BOXING MRB_INT32) + end + conf.enable_debug + conf.enable_test + conf.enable_bintest +end + +MRuby::Build.new('boxing-nan-m64') do |conf| + toolchain :gcc + + conf.cc.flags << '-m64' + conf.linker.flags << '-m64' + conf.gembox 'default' conf.compilers.each do |c| c.defines += %w(MRB_NAN_BOXING) end + conf.enable_debug + conf.enable_test + conf.enable_bintest +end + +MRuby::Build.new('boxing-nan-m64') do |conf| + toolchain :gcc + + conf.cc.flags << '-m32' + conf.linker.flags << '-m32' + + conf.gembox 'default' + conf.compilers.each do |c| + c.defines += %w(MRB_NAN_BOXING MRB_INT32) + end + conf.enable_debug conf.enable_test conf.enable_bintest end -- cgit v1.2.3