From e846802d8192cc3d154c60c7bd040325771d4b9a Mon Sep 17 00:00:00 2001 From: Terence Lee Date: Mon, 26 Oct 2015 15:02:38 -0700 Subject: [PATCH 1/7] make test error messages more specific --- bintest/mruby-cli.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bintest/mruby-cli.rb b/bintest/mruby-cli.rb index c120e8d..f117506 100644 --- a/bintest/mruby-cli.rb +++ b/bintest/mruby-cli.rb @@ -29,10 +29,10 @@ Dir.chdir(app_name) do output, status = Open3.capture2("rake compile") - assert_true status.success?, "Process did not exit cleanly" + assert_true status.success?, "`rake compile` did not exit cleanly" output, status = Open3.capture2("mruby/bin/#{app_name}") - assert_true status.success?, "Process did not exit cleanly" + assert_true status.success?, "`#{app_name}` did not exit cleanly" assert_include output, "Hello World" %w(x86_64-pc-linux-gnu i686-pc-linux-gnu).each do |host| @@ -41,10 +41,10 @@ end output, status = Open3.capture2("rake test:bintest") - assert_true status.success?, "Process did not exit cleanly" + assert_true status.success?, "`rake test:bintest` did not exit cleanly" output, status = Open3.capture2("rake test:mtest") - assert_true status.success?, "Process did not exit cleanly" + assert_true status.success?, "`rake test:mtest` did not exit cleanly" assert_false output.include?("Error:"), "mtest has errors" assert_false output.include?("Failure:"), "mtest has failures" end From db9162511bea05443f115af47bdeb46366829983 Mon Sep 17 00:00:00 2001 From: Terence Lee Date: Tue, 27 Oct 2015 13:09:40 -0700 Subject: [PATCH 2/7] WIP for moving over to mruby-docopt --- Dockerfile | 2 +- build_config.rb | 122 ++++++++++++++++++++++++------------------------ mrbgem.rake | 2 +- 3 files changed, 63 insertions(+), 63 deletions(-) diff --git a/Dockerfile b/Dockerfile index e2289f8..b3775c7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1 +1 @@ -FROM hone/mruby-cli +FROM hone/mruby-cli:15.04 diff --git a/build_config.rb b/build_config.rb index 35e2ef1..df6bd5a 100644 --- a/build_config.rb +++ b/build_config.rb @@ -31,64 +31,64 @@ def gem_config(conf) gem_config(conf) end -MRuby::CrossBuild.new('x86_64-apple-darwin14') do |conf| - toolchain :clang - - [conf.cc, conf.linker].each do |cc| - cc.command = 'x86_64-apple-darwin14-clang' - end - conf.cxx.command = 'x86_64-apple-darwin14-clang++' - conf.archiver.command = 'x86_64-apple-darwin14-ar' - - conf.build_target = 'x86_64-pc-linux-gnu' - conf.host_target = 'x86_64-apple-darwin14' - - gem_config(conf) -end - -MRuby::CrossBuild.new('i386-apple-darwin14') do |conf| - toolchain :clang - - [conf.cc, conf.linker].each do |cc| - cc.command = 'i386-apple-darwin14-clang' - end - conf.cxx.command = 'i386-apple-darwin14-clang++' - conf.archiver.command = 'i386-apple-darwin14-ar' - - conf.build_target = 'i386-pc-linux-gnu' - conf.host_target = 'i386-apple-darwin14' - - gem_config(conf) -end - -MRuby::CrossBuild.new('x86_64-w64-mingw32') do |conf| - toolchain :gcc - - [conf.cc, conf.linker].each do |cc| - cc.command = 'x86_64-w64-mingw32-gcc' - end - conf.cxx.command = 'x86_64-w64-mingw32-cpp' - conf.archiver.command = 'x86_64-w64-mingw32-gcc-ar' - conf.exts.executable = ".exe" - - conf.build_target = 'x86_64-pc-linux-gnu' - conf.host_target = 'x86_64-w64-mingw32' - - gem_config(conf) -end - -MRuby::CrossBuild.new('i686-w64-mingw32') do |conf| - toolchain :gcc - - [conf.cc, conf.linker].each do |cc| - cc.command = 'i686-w64-mingw32-gcc' - end - conf.cxx.command = 'i686-w64-mingw32-cpp' - conf.archiver.command = 'i686-w64-mingw32-gcc-ar' - conf.exts.executable = ".exe" - - conf.build_target = 'i686-pc-linux-gnu' - conf.host_target = 'i686-w64-mingw32' - - gem_config(conf) -end +#MRuby::CrossBuild.new('x86_64-apple-darwin14') do |conf| +# toolchain :clang +# +# [conf.cc, conf.linker].each do |cc| +# cc.command = 'x86_64-apple-darwin14-clang' +# end +# conf.cxx.command = 'x86_64-apple-darwin14-clang++' +# conf.archiver.command = 'x86_64-apple-darwin14-ar' +# +# conf.build_target = 'x86_64-pc-linux-gnu' +# conf.host_target = 'x86_64-apple-darwin14' +# +# gem_config(conf) +#end +# +#MRuby::CrossBuild.new('i386-apple-darwin14') do |conf| +# toolchain :clang +# +# [conf.cc, conf.linker].each do |cc| +# cc.command = 'i386-apple-darwin14-clang' +# end +# conf.cxx.command = 'i386-apple-darwin14-clang++' +# conf.archiver.command = 'i386-apple-darwin14-ar' +# +# conf.build_target = 'i386-pc-linux-gnu' +# conf.host_target = 'i386-apple-darwin14' +# +# gem_config(conf) +#end +# +#MRuby::CrossBuild.new('x86_64-w64-mingw32') do |conf| +# toolchain :gcc +# +# [conf.cc, conf.linker].each do |cc| +# cc.command = 'x86_64-w64-mingw32-gcc' +# end +# conf.cxx.command = 'x86_64-w64-mingw32-cpp' +# conf.archiver.command = 'x86_64-w64-mingw32-gcc-ar' +# conf.exts.executable = ".exe" +# +# conf.build_target = 'x86_64-pc-linux-gnu' +# conf.host_target = 'x86_64-w64-mingw32' +# +# gem_config(conf) +#end +# +#MRuby::CrossBuild.new('i686-w64-mingw32') do |conf| +# toolchain :gcc +# +# [conf.cc, conf.linker].each do |cc| +# cc.command = 'i686-w64-mingw32-gcc' +# end +# conf.cxx.command = 'i686-w64-mingw32-cpp' +# conf.archiver.command = 'i686-w64-mingw32-gcc-ar' +# conf.exts.executable = ".exe" +# +# conf.build_target = 'i686-pc-linux-gnu' +# conf.host_target = 'i686-w64-mingw32' +# +# gem_config(conf) +#end diff --git a/mrbgem.rake b/mrbgem.rake index 9994eb8..fb42095 100644 --- a/mrbgem.rake +++ b/mrbgem.rake @@ -7,5 +7,5 @@ MRuby::Gem::Specification.new('mruby-cli') do |spec| spec.add_dependency 'mruby-io', :mgem => 'mruby-io' spec.add_dependency 'mruby-getopts', :mgem => 'mruby-getopts' spec.add_dependency 'mruby-dir', :mgem => 'mruby-dir' - spec.add_dependency 'mruby-mtest', :mgem => 'mruby-mtest' + spec.add_dependency 'mruby-docopt', :github => 'hone/mruby-docopt' end From 74759a73baf1bee49895c1bc4e08e4b6557daaa8 Mon Sep 17 00:00:00 2001 From: Christophe Philemotte Date: Thu, 5 Nov 2015 01:15:44 +0100 Subject: [PATCH 3/7] Fix linking/compiling issues with mruby-docopt for linux and osx --- build_config.rb | 93 +++++++++++++++++++++++++++---------------------- 1 file changed, 52 insertions(+), 41 deletions(-) diff --git a/build_config.rb b/build_config.rb index df6bd5a..54e80d9 100644 --- a/build_config.rb +++ b/build_config.rb @@ -11,6 +11,7 @@ def gem_config(conf) conf.enable_bintest conf.enable_debug conf.enable_test + conf.enable_cxx_abi gem_config(conf) end @@ -18,6 +19,7 @@ def gem_config(conf) MRuby::Build.new('x86_64-pc-linux-gnu') do |conf| toolchain :gcc + conf.enable_cxx_abi gem_config(conf) end @@ -28,67 +30,76 @@ def gem_config(conf) cc.flags << "-m32" end + conf.enable_cxx_abi gem_config(conf) end -#MRuby::CrossBuild.new('x86_64-apple-darwin14') do |conf| -# toolchain :clang -# -# [conf.cc, conf.linker].each do |cc| -# cc.command = 'x86_64-apple-darwin14-clang' -# end -# conf.cxx.command = 'x86_64-apple-darwin14-clang++' -# conf.archiver.command = 'x86_64-apple-darwin14-ar' -# -# conf.build_target = 'x86_64-pc-linux-gnu' -# conf.host_target = 'x86_64-apple-darwin14' -# -# gem_config(conf) -#end -# -#MRuby::CrossBuild.new('i386-apple-darwin14') do |conf| -# toolchain :clang -# -# [conf.cc, conf.linker].each do |cc| -# cc.command = 'i386-apple-darwin14-clang' -# end -# conf.cxx.command = 'i386-apple-darwin14-clang++' -# conf.archiver.command = 'i386-apple-darwin14-ar' -# -# conf.build_target = 'i386-pc-linux-gnu' -# conf.host_target = 'i386-apple-darwin14' -# -# gem_config(conf) -#end -# -#MRuby::CrossBuild.new('x86_64-w64-mingw32') do |conf| +MRuby::CrossBuild.new('x86_64-apple-darwin14') do |conf| + toolchain :clang + + [conf.cc, conf.linker].each do |cc| + cc.command = 'x86_64-apple-darwin14-clang' + end + conf.cxx.command = 'x86_64-apple-darwin14-clang++' + conf.cxx.flags << "-std=c++11 -stdlib=libc++" + conf.linker.flags << "-std=c++11 -stdlib=libc++" + conf.archiver.command = 'x86_64-apple-darwin14-ar' + + conf.build_target = 'x86_64-pc-linux-gnu' + conf.host_target = 'x86_64-apple-darwin14' + + conf.enable_cxx_abi + gem_config(conf) +end + +MRuby::CrossBuild.new('i386-apple-darwin14') do |conf| + toolchain :clang + + [conf.cc, conf.linker].each do |cc| + cc.command = 'i386-apple-darwin14-clang' + end + conf.cxx.command = 'i386-apple-darwin14-clang++' + conf.cxx.flags << "-std=c++11 -stdlib=libc++" + conf.linker.flags << "-std=c++11 -stdlib=libc++" + conf.archiver.command = 'i386-apple-darwin14-ar' + + conf.build_target = 'i386-pc-linux-gnu' + conf.host_target = 'i386-apple-darwin14' + + conf.enable_cxx_abi + gem_config(conf) +end + +# MRuby::CrossBuild.new('x86_64-w64-mingw32') do |conf| # toolchain :gcc -# + # [conf.cc, conf.linker].each do |cc| # cc.command = 'x86_64-w64-mingw32-gcc' # end # conf.cxx.command = 'x86_64-w64-mingw32-cpp' # conf.archiver.command = 'x86_64-w64-mingw32-gcc-ar' # conf.exts.executable = ".exe" -# + # conf.build_target = 'x86_64-pc-linux-gnu' # conf.host_target = 'x86_64-w64-mingw32' -# + +# conf.enable_cxx_abi # gem_config(conf) -#end -# -#MRuby::CrossBuild.new('i686-w64-mingw32') do |conf| +# end + +# MRuby::CrossBuild.new('i686-w64-mingw32') do |conf| # toolchain :gcc -# + # [conf.cc, conf.linker].each do |cc| # cc.command = 'i686-w64-mingw32-gcc' # end # conf.cxx.command = 'i686-w64-mingw32-cpp' # conf.archiver.command = 'i686-w64-mingw32-gcc-ar' # conf.exts.executable = ".exe" -# + # conf.build_target = 'i686-pc-linux-gnu' # conf.host_target = 'i686-w64-mingw32' -# + +# conf.enable_cxx_abi # gem_config(conf) -#end +# end From a00f779bed651c7e2efae6b352f875321b5b00d7 Mon Sep 17 00:00:00 2001 From: Christophe Philemotte Date: Thu, 5 Nov 2015 02:17:16 +0100 Subject: [PATCH 4/7] Enable win targets --- build_config.rb | 66 ++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/build_config.rb b/build_config.rb index 54e80d9..385dd9e 100644 --- a/build_config.rb +++ b/build_config.rb @@ -70,36 +70,36 @@ def gem_config(conf) gem_config(conf) end -# MRuby::CrossBuild.new('x86_64-w64-mingw32') do |conf| -# toolchain :gcc - -# [conf.cc, conf.linker].each do |cc| -# cc.command = 'x86_64-w64-mingw32-gcc' -# end -# conf.cxx.command = 'x86_64-w64-mingw32-cpp' -# conf.archiver.command = 'x86_64-w64-mingw32-gcc-ar' -# conf.exts.executable = ".exe" - -# conf.build_target = 'x86_64-pc-linux-gnu' -# conf.host_target = 'x86_64-w64-mingw32' - -# conf.enable_cxx_abi -# gem_config(conf) -# end - -# MRuby::CrossBuild.new('i686-w64-mingw32') do |conf| -# toolchain :gcc - -# [conf.cc, conf.linker].each do |cc| -# cc.command = 'i686-w64-mingw32-gcc' -# end -# conf.cxx.command = 'i686-w64-mingw32-cpp' -# conf.archiver.command = 'i686-w64-mingw32-gcc-ar' -# conf.exts.executable = ".exe" - -# conf.build_target = 'i686-pc-linux-gnu' -# conf.host_target = 'i686-w64-mingw32' - -# conf.enable_cxx_abi -# gem_config(conf) -# end +MRuby::CrossBuild.new('x86_64-w64-mingw32') do |conf| + toolchain :gcc + + [conf.cc, conf.linker].each do |cc| + cc.command = 'x86_64-w64-mingw32-gcc' + end + conf.cxx.command = 'x86_64-w64-mingw32-g++' + conf.archiver.command = 'x86_64-w64-mingw32-gcc-ar' + conf.exts.executable = ".exe" + + conf.build_target = 'x86_64-pc-linux-gnu' + conf.host_target = 'x86_64-w64-mingw32' + + conf.enable_cxx_abi + gem_config(conf) +end + +MRuby::CrossBuild.new('i686-w64-mingw32') do |conf| + toolchain :gcc + + [conf.cc, conf.linker].each do |cc| + cc.command = 'i686-w64-mingw32-gcc' + end + conf.cxx.command = 'i686-w64-mingw32-g++' + conf.archiver.command = 'i686-w64-mingw32-gcc-ar' + conf.exts.executable = ".exe" + + conf.build_target = 'i686-pc-linux-gnu' + conf.host_target = 'i686-w64-mingw32' + + conf.enable_cxx_abi + gem_config(conf) +end From a01354f49ba9e55960f87e8b29a336617fd7ae9f Mon Sep 17 00:00:00 2001 From: Christophe Philemotte Date: Wed, 2 Dec 2015 17:15:58 +0100 Subject: [PATCH 5/7] Allow to upgrade cmake to >3.1 for mruby-docopt --- Dockerfile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Dockerfile b/Dockerfile index b3775c7..5793c24 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1 +1,8 @@ FROM hone/mruby-cli:15.04 + +RUN apt-get update && \ + apt-get install -y --no-install-recommends software-properties-common && \ + add-apt-repository ppa:george-edison55/cmake-3.x && \ + apt-get update && \ + apt-get upgrade -y cmake + From a0646c2b59732bb5750586acf5670b341b4e4122 Mon Sep 17 00:00:00 2001 From: Christophe Philemotte Date: Wed, 2 Dec 2015 18:17:16 +0100 Subject: [PATCH 6/7] Replace mruby-getopts with mruby-docopt --- bintest/mruby-cli.rb | 6 ++--- mrbgem.rake | 1 - mrblib/mruby-cli/cli.rb | 34 +++++++++++++++++--------- mrblib/mruby-cli/help.rb | 8 +++---- mrblib/mruby-cli/option.rb | 24 ------------------- mrblib/mruby-cli/options.rb | 44 ---------------------------------- test/mruby-cli/test_option.rb | 29 ---------------------- test/mruby-cli/test_options.rb | 38 ----------------------------- 8 files changed, 29 insertions(+), 155 deletions(-) delete mode 100644 mrblib/mruby-cli/option.rb delete mode 100644 mrblib/mruby-cli/options.rb delete mode 100644 test/mruby-cli/test_option.rb delete mode 100644 test/mruby-cli/test_options.rb diff --git a/bintest/mruby-cli.rb b/bintest/mruby-cli.rb index f117506..266caab 100644 --- a/bintest/mruby-cli.rb +++ b/bintest/mruby-cli.rb @@ -7,7 +7,7 @@ Dir.mktmpdir do |tmp_dir| Dir.chdir(tmp_dir) do app_name = "new_cli" - output, status = Open3.capture2(BIN_PATH, "--setup", app_name) + output, status = Open3.capture2(BIN_PATH, "setup", app_name) assert_true status.success?, "Process did not exit cleanly" assert_true Dir.exist?(app_name) @@ -25,7 +25,7 @@ Dir.mktmpdir do |tmp_dir| Dir.chdir(tmp_dir) do app_name = "hello_world" - Open3.capture2(BIN_PATH, "--setup", app_name) + Open3.capture2(BIN_PATH, "setup", app_name) Dir.chdir(app_name) do output, status = Open3.capture2("rake compile") @@ -62,5 +62,5 @@ assert('help') do output, status = Open3.capture2(BIN_PATH, "--help") assert_true status.success?, "Process did not exit cleanly" - assert_include output, "mruby-cli [switches] [arguments]" + assert_include output, "Create your own cli application." end diff --git a/mrbgem.rake b/mrbgem.rake index fb42095..1df5bcd 100644 --- a/mrbgem.rake +++ b/mrbgem.rake @@ -5,7 +5,6 @@ MRuby::Gem::Specification.new('mruby-cli') do |spec| spec.bins = ['mruby-cli'] spec.add_dependency 'mruby-io', :mgem => 'mruby-io' - spec.add_dependency 'mruby-getopts', :mgem => 'mruby-getopts' spec.add_dependency 'mruby-dir', :mgem => 'mruby-dir' spec.add_dependency 'mruby-docopt', :github => 'hone/mruby-docopt' end diff --git a/mrblib/mruby-cli/cli.rb b/mrblib/mruby-cli/cli.rb index c79bc1f..f647749 100644 --- a/mrblib/mruby-cli/cli.rb +++ b/mrblib/mruby-cli/cli.rb @@ -1,30 +1,42 @@ module MRubyCLI class CLI def initialize(argv, output_io = $stdout, error_io = $stderr) - @options = setup_options - @opts = @options.parse(argv) + @usage = setup_options + @options = Docopt.parse(@usage, argv) @output_io = output_io @error_io = error_io end def run - if app_name = @options.option(:setup) - Setup.new(app_name, @output_io).run - elsif @options.option(:version) + if @options["setup"] + Setup.new(@options[""], @output_io).run + elsif @options["--version"] Version.new(@output_io).run else - Help.new(@output_io).run + Help.new(@usage, @output_io).run end end private def setup_options - options = Options.new - options.add(Option.new("setup", "s", true)) - options.add(Option.new("version", "v")) - options.add(Option.new("help", "h")) + USAGE = < + mruby-cli (-v | --version) + mruby-cli (-h | --help) + +Create your own cli application. +Setup will scafold your application. + + Arguments: + name The name of your application + + Options: + -h --Help Show this screen. + -v --version Show version. +USAGE end end end diff --git a/mrblib/mruby-cli/help.rb b/mrblib/mruby-cli/help.rb index 214dbd5..d09fbb1 100644 --- a/mrblib/mruby-cli/help.rb +++ b/mrblib/mruby-cli/help.rb @@ -1,14 +1,12 @@ module MRubyCLI class Help - def initialize(output_io) + def initialize(usage, output_io) + @usage = usage @output_io = output_io end def run - @output_io.puts "mruby-cli [switches] [arguments]" - @output_io.puts "mruby-cli -h, --help : show this message" - @output_io.puts "mruby-cli -s, --setup= : setup your app" - @output_io.puts "mruby-cli -v, --version : print mruby-cli version" + @output_io.puts @usage end end end diff --git a/mrblib/mruby-cli/option.rb b/mrblib/mruby-cli/option.rb deleted file mode 100644 index 5d549d9..0000000 --- a/mrblib/mruby-cli/option.rb +++ /dev/null @@ -1,24 +0,0 @@ -module MRubyCLI - class Option - attr_reader :short, :long, :value - - def initialize(long, short, value = false) - @short = short - @long = long - @value = value - end - - def to_long_opt - to_getopt(@long, @value) - end - - def to_short_opt - to_getopt(@short, @value) - end - - private - def to_getopt(name, value) - value ? "#{name}:" : name - end - end -end diff --git a/mrblib/mruby-cli/options.rb b/mrblib/mruby-cli/options.rb deleted file mode 100644 index 03882e4..0000000 --- a/mrblib/mruby-cli/options.rb +++ /dev/null @@ -1,44 +0,0 @@ -module MRubyCLI - class Options - attr_reader :short_opts, :long_opts - attr_writer :parsed_opts - - def initialize - @options = {} - @short_opts_array = [] - @short_opts = "" - @long_opts = [] - @parsed_opts = {} - end - - def add(option) - @options[option.long.to_sym] = option - @long_opts << option.to_long_opt - @long_opts.sort! - @short_opts_array << option.to_short_opt - @short_opts = @short_opts_array.sort!.join("") - - option - end - - def parse(args) - class << args; include Getopts; end - @parsed_opts = args.getopts(@short_opts, *@long_opts) - end - - def option(long_opt) - option = @options[long_opt] - - return nil unless option - if retn = @parsed_opts[option.long] - if option.value - return retn unless retn.empty? - else - return retn - end - end - return @parsed_opts[option.short] if @parsed_opts[option.short] - return false - end - end -end diff --git a/test/mruby-cli/test_option.rb b/test/mruby-cli/test_option.rb deleted file mode 100644 index 367cc6d..0000000 --- a/test/mruby-cli/test_option.rb +++ /dev/null @@ -1,29 +0,0 @@ -module MRubyCLI - class TestOption < MTest::Unit::TestCase - def test_to_long_opt_true - option = Option.new("setup", "s", true) - - assert_equal "setup:", option.to_long_opt - end - - def test_to_short_opt_true - option = Option.new("setup", "s", true) - - assert_equal "s:", option.to_short_opt - end - - def test_to_long_opt_false - option = Option.new("version", "v") - - assert_equal "version", option.to_long_opt - end - - def test_to_short_opt_false - option = Option.new("version", "v") - - assert_equal "v", option.to_short_opt - end - end -end - -MTest::Unit.new.run diff --git a/test/mruby-cli/test_options.rb b/test/mruby-cli/test_options.rb deleted file mode 100644 index 15a2bba..0000000 --- a/test/mruby-cli/test_options.rb +++ /dev/null @@ -1,38 +0,0 @@ -module MRubyCLI - class TestOptions < MTest::Unit::TestCase - def test_add - options = Options.new - options.add(Option.new("setup", "s", true)) - options.add(Option.new("version", "v", false)) - - assert_equal %w(setup: version), options.long_opts - assert_equal "s:v", options.short_opts - end - - def test_option - options = Options.new - options.add(Option.new("setup", "s", true)) - options.add(Option.new("version", "v", false)) - - options.parsed_opts = {"setup" => "foo"} - assert_equal "foo", options.option(:setup) - - options.parsed_opts = {"s" => "foo"} - assert_equal "foo", options.option(:setup) - - options.parsed_opts = {"version" => ""} - assert_equal "", options.option(:version) - - options.parsed_opts = {"v" => ""} - assert_equal "", options.option(:version) - - options.parsed_opts = {"v" => ""} - assert_equal false, options.option(:setup) - - options.parsed_opts = {"v" => ""} - assert_equal nil, options.option(:blah) - end - end -end - -MTest::Unit.new.run From 15e1f6d69a34981c68d7b2b2d0aaa4dcd2059a41 Mon Sep 17 00:00:00 2001 From: Christophe Philemotte Date: Fri, 26 Feb 2016 00:30:46 +0100 Subject: [PATCH 7/7] link statically libstdc++ to avoid conflict with target libstdc++ --- build_config.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/build_config.rb b/build_config.rb index 385dd9e..7a0444d 100644 --- a/build_config.rb +++ b/build_config.rb @@ -12,6 +12,7 @@ def gem_config(conf) conf.enable_debug conf.enable_test conf.enable_cxx_abi + conf.linker.flags << "-static-libstdc++" gem_config(conf) end @@ -20,6 +21,8 @@ def gem_config(conf) toolchain :gcc conf.enable_cxx_abi + conf.linker.flags << "-static-libstdc++" + gem_config(conf) end @@ -31,6 +34,8 @@ def gem_config(conf) end conf.enable_cxx_abi + conf.linker.flags << "-static-libstdc++" + gem_config(conf) end @@ -61,6 +66,8 @@ def gem_config(conf) conf.cxx.command = 'i386-apple-darwin14-clang++' conf.cxx.flags << "-std=c++11 -stdlib=libc++" conf.linker.flags << "-std=c++11 -stdlib=libc++" + conf.linker.flags << "-static-libstdc++" + conf.archiver.command = 'i386-apple-darwin14-ar' conf.build_target = 'i386-pc-linux-gnu' @@ -84,6 +91,7 @@ def gem_config(conf) conf.host_target = 'x86_64-w64-mingw32' conf.enable_cxx_abi + conf.linker.flags << "-static-libstdc++" gem_config(conf) end @@ -101,5 +109,6 @@ def gem_config(conf) conf.host_target = 'i686-w64-mingw32' conf.enable_cxx_abi + conf.linker.flags << "-static-libstdc++" gem_config(conf) end