From 0166329028f028a36e503356b453979df3758c36 Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Mon, 28 Nov 2016 23:48:06 +0900 Subject: [PATCH] Compile mruby --- .gitignore | 1 + Makefile | 8 +++ build_config.rb | 138 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 147 insertions(+) create mode 100644 build_config.rb diff --git a/.gitignore b/.gitignore index 3ad44af..34d5138 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ xkremap +mruby/ *.o diff --git a/Makefile b/Makefile index 9fd20ea..05044d6 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,4 @@ +current_dir := $(shell pwd) LD=gcc LDFLAGS=-lX11 OBJS=src/main.o @@ -7,3 +8,10 @@ all: xkremap xkremap: $(OBJS) $(LD) $(OBJS) $(LDFLAGS) -o $@ + +mruby: + curl -L --fail --retry 3 --retry-delay 1 https://github.com/mruby/mruby/archive/1.2.0.tar.gz -s -o - | tar zxf - + mv mruby-1.2.0 $@ + +mruby/build/host/bin/mruby: mruby + cd mruby && MRUBY_CONFIG="$(current_dir)/build_config.rb" make diff --git a/build_config.rb b/build_config.rb new file mode 100644 index 0000000..6b54359 --- /dev/null +++ b/build_config.rb @@ -0,0 +1,138 @@ +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 + + enable_debug + + # 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 :github => 'masuidrive/mrbgems-example', :checksum_hash => '76518e8aecd131d047378448ac8055fa29d974a9' + # conf.gem :git => 'git@github.com:masuidrive/mrbgems-example.git', :branch => 'master', :options => '-v' + + # include the default GEMs + conf.gembox 'default' + # 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(DISABLE_GEMS) + # cc.option_include_path = '-I%s' + # cc.option_define = '-D%s' + # cc.compile_options = "%{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 = '-o %{outfile} %{infile}' + # end + + # gperf settings + # conf.gperf do |gperf| + # gperf.command = 'gperf' + # gperf.compile_options = '-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 = '/' + + # bintest + # conf.enable_bintest +end + +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 'default' + + # 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 + +MRuby::Build.new('test') do |conf| + # Gets set by the VS command prompts. + if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR'] + toolchain :visualcpp + else + toolchain :gcc + end + + enable_debug + conf.enable_bintest + conf.enable_test + + conf.gembox 'default' +end + +# 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